1526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt/*
2526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt * hostapd / RADIUS authentication server
3526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt * Copyright (c) 2005-2007, Jouni Malinen <j@w1.fi>
4526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt *
5526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt * This program is free software; you can redistribute it and/or modify
6526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt * it under the terms of the GNU General Public License version 2 as
7526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt * published by the Free Software Foundation.
8526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt *
9526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt * Alternatively, this software may be distributed under the terms of BSD
10526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt * license.
11526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt *
12526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt * See README and COPYING for more details.
13526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt */
14526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt
15526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt#ifndef RADIUS_SERVER_H
16526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt#define RADIUS_SERVER_H
17526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt
18526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidtstruct radius_server_data;
19526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidtstruct eap_user;
20526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt
21526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidtstruct radius_server_conf {
22526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt	int auth_port;
23526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt	char *client_file;
24526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt	void *conf_ctx;
25526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt	void *eap_sim_db_priv;
26526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt	void *ssl_ctx;
27526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt	u8 *pac_opaque_encr_key;
28526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt	u8 *eap_fast_a_id;
29526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt	size_t eap_fast_a_id_len;
30526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt	char *eap_fast_a_id_info;
31526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt	int eap_fast_prov;
32526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt	int pac_key_lifetime;
33526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt	int pac_key_refresh_time;
34526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt	int eap_sim_aka_result_ind;
35526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt	int tnc;
36526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt	struct wps_context *wps;
37526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt	int ipv6;
38526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt	int (*get_eap_user)(void *ctx, const u8 *identity, size_t identity_len,
39526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt			    int phase2, struct eap_user *user);
40526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt	const char *eap_req_id_text;
41526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt	size_t eap_req_id_text_len;
42526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt};
43526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt
44526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt
45526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt#ifdef RADIUS_SERVER
46526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt
47526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidtstruct radius_server_data *
48526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidtradius_server_init(struct radius_server_conf *conf);
49526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt
50526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidtvoid radius_server_deinit(struct radius_server_data *data);
51526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt
52526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidtint radius_server_get_mib(struct radius_server_data *data, char *buf,
53526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt			  size_t buflen);
54526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt
55526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidtvoid radius_server_eap_pending_cb(struct radius_server_data *data, void *ctx);
56526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt
57526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt#else /* RADIUS_SERVER */
58526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt
59526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidtstatic inline struct radius_server_data *
60526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidtradius_server_init(struct radius_server_conf *conf)
61526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt{
62526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt	return NULL;
63526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt}
64526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt
65526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidtstatic inline void radius_server_deinit(struct radius_server_data *data)
66526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt{
67526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt}
68526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt
69526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidtstatic inline int radius_server_get_mib(struct radius_server_data *data,
70526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt					char *buf, size_t buflen)
71526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt{
72526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt	return 0;
73526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt}
74526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt
75526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidtstatic inline void
76526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidtradius_server_eap_pending_cb(struct radius_server_data *data, void *ctx)
77526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt{
78526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt}
79526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt
80526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt#endif /* RADIUS_SERVER */
81526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt
82526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt#endif /* RADIUS_SERVER_H */
83