1252190Srpaulo/*
2252190Srpaulo * RADIUS Dynamic Authorization Server (DAS)
3252190Srpaulo * Copyright (c) 2012, Jouni Malinen <j@w1.fi>
4252190Srpaulo *
5252190Srpaulo * This software may be distributed under the terms of the BSD license.
6252190Srpaulo * See README for more details.
7252190Srpaulo */
8252190Srpaulo
9252190Srpaulo#ifndef RADIUS_DAS_H
10252190Srpaulo#define RADIUS_DAS_H
11252190Srpaulo
12252190Srpaulostruct radius_das_data;
13252190Srpaulo
14252190Srpauloenum radius_das_res {
15252190Srpaulo	RADIUS_DAS_SUCCESS,
16252190Srpaulo	RADIUS_DAS_NAS_MISMATCH,
17252190Srpaulo	RADIUS_DAS_SESSION_NOT_FOUND
18252190Srpaulo};
19252190Srpaulo
20252190Srpaulostruct radius_das_attrs {
21252190Srpaulo	const u8 *sta_addr;
22252190Srpaulo	const u8 *user_name;
23252190Srpaulo	size_t user_name_len;
24252190Srpaulo	const u8 *acct_session_id;
25252190Srpaulo	size_t acct_session_id_len;
26252190Srpaulo	const u8 *cui;
27252190Srpaulo	size_t cui_len;
28252190Srpaulo};
29252190Srpaulo
30252190Srpaulostruct radius_das_conf {
31252190Srpaulo	int port;
32252190Srpaulo	const u8 *shared_secret;
33252190Srpaulo	size_t shared_secret_len;
34252190Srpaulo	const struct hostapd_ip_addr *client_addr;
35252190Srpaulo	unsigned int time_window;
36252190Srpaulo	int require_event_timestamp;
37252190Srpaulo	void *ctx;
38252190Srpaulo	enum radius_das_res (*disconnect)(void *ctx,
39252190Srpaulo					  struct radius_das_attrs *attr);
40252190Srpaulo};
41252190Srpaulo
42252190Srpaulostruct radius_das_data *
43252190Srpauloradius_das_init(struct radius_das_conf *conf);
44252190Srpaulo
45252190Srpaulovoid radius_das_deinit(struct radius_das_data *data);
46252190Srpaulo
47252190Srpaulo#endif /* RADIUS_DAS_H */
48