1*c1d255d3SCy Schubert /*
2*c1d255d3SCy Schubert * Driver interface for RADIUS server or WPS ER only (no driver)
3*c1d255d3SCy Schubert * Copyright (c) 2008, Atheros Communications
4*c1d255d3SCy Schubert *
5*c1d255d3SCy Schubert * This software may be distributed under the terms of the BSD license.
6*c1d255d3SCy Schubert * See README for more details.
7*c1d255d3SCy Schubert */
8*c1d255d3SCy Schubert
9*c1d255d3SCy Schubert #include "includes.h"
10*c1d255d3SCy Schubert
11*c1d255d3SCy Schubert #include "common.h"
12*c1d255d3SCy Schubert #include "driver.h"
13*c1d255d3SCy Schubert
14*c1d255d3SCy Schubert
15*c1d255d3SCy Schubert struct none_driver_data {
16*c1d255d3SCy Schubert struct hostapd_data *hapd;
17*c1d255d3SCy Schubert void *ctx;
18*c1d255d3SCy Schubert };
19*c1d255d3SCy Schubert
20*c1d255d3SCy Schubert
none_driver_hapd_init(struct hostapd_data * hapd,struct wpa_init_params * params)21*c1d255d3SCy Schubert static void * none_driver_hapd_init(struct hostapd_data *hapd,
22*c1d255d3SCy Schubert struct wpa_init_params *params)
23*c1d255d3SCy Schubert {
24*c1d255d3SCy Schubert struct none_driver_data *drv;
25*c1d255d3SCy Schubert
26*c1d255d3SCy Schubert drv = os_zalloc(sizeof(struct none_driver_data));
27*c1d255d3SCy Schubert if (drv == NULL) {
28*c1d255d3SCy Schubert wpa_printf(MSG_ERROR, "Could not allocate memory for none "
29*c1d255d3SCy Schubert "driver data");
30*c1d255d3SCy Schubert return NULL;
31*c1d255d3SCy Schubert }
32*c1d255d3SCy Schubert drv->hapd = hapd;
33*c1d255d3SCy Schubert
34*c1d255d3SCy Schubert return drv;
35*c1d255d3SCy Schubert }
36*c1d255d3SCy Schubert
37*c1d255d3SCy Schubert
none_driver_hapd_deinit(void * priv)38*c1d255d3SCy Schubert static void none_driver_hapd_deinit(void *priv)
39*c1d255d3SCy Schubert {
40*c1d255d3SCy Schubert struct none_driver_data *drv = priv;
41*c1d255d3SCy Schubert
42*c1d255d3SCy Schubert os_free(drv);
43*c1d255d3SCy Schubert }
44*c1d255d3SCy Schubert
45*c1d255d3SCy Schubert
none_driver_init(void * ctx,const char * ifname)46*c1d255d3SCy Schubert static void * none_driver_init(void *ctx, const char *ifname)
47*c1d255d3SCy Schubert {
48*c1d255d3SCy Schubert struct none_driver_data *drv;
49*c1d255d3SCy Schubert
50*c1d255d3SCy Schubert drv = os_zalloc(sizeof(struct none_driver_data));
51*c1d255d3SCy Schubert if (drv == NULL) {
52*c1d255d3SCy Schubert wpa_printf(MSG_ERROR, "Could not allocate memory for none "
53*c1d255d3SCy Schubert "driver data");
54*c1d255d3SCy Schubert return NULL;
55*c1d255d3SCy Schubert }
56*c1d255d3SCy Schubert drv->ctx = ctx;
57*c1d255d3SCy Schubert
58*c1d255d3SCy Schubert return drv;
59*c1d255d3SCy Schubert }
60*c1d255d3SCy Schubert
61*c1d255d3SCy Schubert
none_driver_deinit(void * priv)62*c1d255d3SCy Schubert static void none_driver_deinit(void *priv)
63*c1d255d3SCy Schubert {
64*c1d255d3SCy Schubert struct none_driver_data *drv = priv;
65*c1d255d3SCy Schubert
66*c1d255d3SCy Schubert os_free(drv);
67*c1d255d3SCy Schubert }
68*c1d255d3SCy Schubert
69*c1d255d3SCy Schubert
70*c1d255d3SCy Schubert const struct wpa_driver_ops wpa_driver_none_ops = {
71*c1d255d3SCy Schubert .name = "none",
72*c1d255d3SCy Schubert .desc = "no driver (RADIUS server/WPS ER)",
73*c1d255d3SCy Schubert .hapd_init = none_driver_hapd_init,
74*c1d255d3SCy Schubert .hapd_deinit = none_driver_hapd_deinit,
75*c1d255d3SCy Schubert .init = none_driver_init,
76*c1d255d3SCy Schubert .deinit = none_driver_deinit,
77*c1d255d3SCy Schubert };
78