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