xref: /dragonfly/contrib/wpa_supplicant/src/radius/radius_das.h (revision 3a84a4273475ed07d0ab1c2dfeffdfedef35d9cd)
1 /*
2  * RADIUS Dynamic Authorization Server (DAS)
3  * Copyright (c) 2012, Jouni Malinen <j@w1.fi>
4  *
5  * This software may be distributed under the terms of the BSD license.
6  * See README for more details.
7  */
8 
9 #ifndef RADIUS_DAS_H
10 #define RADIUS_DAS_H
11 
12 struct radius_das_data;
13 
14 enum radius_das_res {
15           RADIUS_DAS_SUCCESS,
16           RADIUS_DAS_NAS_MISMATCH,
17           RADIUS_DAS_SESSION_NOT_FOUND,
18           RADIUS_DAS_MULTI_SESSION_MATCH,
19           RADIUS_DAS_COA_FAILED,
20 };
21 
22 struct radius_das_attrs {
23           /* NAS identification attributes */
24           const u8 *nas_ip_addr;
25           const u8 *nas_identifier;
26           size_t nas_identifier_len;
27           const u8 *nas_ipv6_addr;
28 
29           /* Session identification attributes */
30           const u8 *sta_addr;
31           const u8 *user_name;
32           size_t user_name_len;
33           const u8 *acct_session_id;
34           size_t acct_session_id_len;
35           const u8 *acct_multi_session_id;
36           size_t acct_multi_session_id_len;
37           const u8 *cui;
38           size_t cui_len;
39 
40           /* Authorization changes */
41           const u8 *hs20_t_c_filtering;
42 };
43 
44 struct radius_das_conf {
45           int port;
46           const u8 *shared_secret;
47           size_t shared_secret_len;
48           const struct hostapd_ip_addr *client_addr;
49           unsigned int time_window;
50           int require_event_timestamp;
51           int require_message_authenticator;
52           void *ctx;
53           enum radius_das_res (*disconnect)(void *ctx,
54                                                     struct radius_das_attrs *attr);
55           enum radius_das_res (*coa)(void *ctx, struct radius_das_attrs *attr);
56 };
57 
58 struct radius_das_data *
59 radius_das_init(struct radius_das_conf *conf);
60 
61 void radius_das_deinit(struct radius_das_data *data);
62 
63 #endif /* RADIUS_DAS_H */
64