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