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