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