blob: 233d662f631b09fcb46800d3bf3d2433f2e32d13 [file] [log] [blame]
/*
* RADIUS Dynamic Authorization Server (DAS)
* Copyright (c) 2012, Jouni Malinen <j@w1.fi>
*
* This software may be distributed under the terms of the BSD license.
* See README for more details.
*/
#ifndef RADIUS_DAS_H
#define RADIUS_DAS_H
struct radius_das_data;
enum radius_das_res {
RADIUS_DAS_SUCCESS,
RADIUS_DAS_NAS_MISMATCH,
RADIUS_DAS_SESSION_NOT_FOUND,
RADIUS_DAS_MULTI_SESSION_MATCH,
RADIUS_DAS_COA_FAILED,
};
struct radius_das_attrs {
/* NAS identification attributes */
const u8 *nas_ip_addr;
const u8 *nas_identifier;
size_t nas_identifier_len;
const u8 *nas_ipv6_addr;
/* Session identification attributes */
const u8 *sta_addr;
const u8 *user_name;
size_t user_name_len;
const u8 *acct_session_id;
size_t acct_session_id_len;
const u8 *acct_multi_session_id;
size_t acct_multi_session_id_len;
const u8 *cui;
size_t cui_len;
/* Authorization changes */
const u8 *hs20_t_c_filtering;
};
struct radius_das_conf {
int port;
const u8 *shared_secret;
size_t shared_secret_len;
const struct hostapd_ip_addr *client_addr;
unsigned int time_window;
int require_event_timestamp;
int require_message_authenticator;
void *ctx;
enum radius_das_res (*disconnect)(void *ctx,
struct radius_das_attrs *attr);
enum radius_das_res (*coa)(void *ctx, struct radius_das_attrs *attr);
};
struct radius_das_data *
radius_das_init(struct radius_das_conf *conf);
void radius_das_deinit(struct radius_das_data *data);
#endif /* RADIUS_DAS_H */