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