104949598a23f501be6eec21697465fd46a28840aDmitry Shmidt/* 204949598a23f501be6eec21697465fd46a28840aDmitry Shmidt * RADIUS Dynamic Authorization Server (DAS) 304949598a23f501be6eec21697465fd46a28840aDmitry Shmidt * Copyright (c) 2012, Jouni Malinen <j@w1.fi> 404949598a23f501be6eec21697465fd46a28840aDmitry Shmidt * 504949598a23f501be6eec21697465fd46a28840aDmitry Shmidt * This software may be distributed under the terms of the BSD license. 604949598a23f501be6eec21697465fd46a28840aDmitry Shmidt * See README for more details. 704949598a23f501be6eec21697465fd46a28840aDmitry Shmidt */ 804949598a23f501be6eec21697465fd46a28840aDmitry Shmidt 904949598a23f501be6eec21697465fd46a28840aDmitry Shmidt#ifndef RADIUS_DAS_H 1004949598a23f501be6eec21697465fd46a28840aDmitry Shmidt#define RADIUS_DAS_H 1104949598a23f501be6eec21697465fd46a28840aDmitry Shmidt 1204949598a23f501be6eec21697465fd46a28840aDmitry Shmidtstruct radius_das_data; 1304949598a23f501be6eec21697465fd46a28840aDmitry Shmidt 1404949598a23f501be6eec21697465fd46a28840aDmitry Shmidtenum radius_das_res { 1504949598a23f501be6eec21697465fd46a28840aDmitry Shmidt RADIUS_DAS_SUCCESS, 1604949598a23f501be6eec21697465fd46a28840aDmitry Shmidt RADIUS_DAS_NAS_MISMATCH, 17432d603c922e970f55866c63212d29c997438977Dmitry Shmidt RADIUS_DAS_SESSION_NOT_FOUND, 18432d603c922e970f55866c63212d29c997438977Dmitry Shmidt RADIUS_DAS_MULTI_SESSION_MATCH, 1904949598a23f501be6eec21697465fd46a28840aDmitry Shmidt}; 2004949598a23f501be6eec21697465fd46a28840aDmitry Shmidt 2104949598a23f501be6eec21697465fd46a28840aDmitry Shmidtstruct radius_das_attrs { 2213ca8d8ea51a1aa5e24c6c956473a11b0c7daed4Dmitry Shmidt /* NAS identification attributes */ 2313ca8d8ea51a1aa5e24c6c956473a11b0c7daed4Dmitry Shmidt const u8 *nas_ip_addr; 2413ca8d8ea51a1aa5e24c6c956473a11b0c7daed4Dmitry Shmidt const u8 *nas_identifier; 2513ca8d8ea51a1aa5e24c6c956473a11b0c7daed4Dmitry Shmidt size_t nas_identifier_len; 2613ca8d8ea51a1aa5e24c6c956473a11b0c7daed4Dmitry Shmidt const u8 *nas_ipv6_addr; 2713ca8d8ea51a1aa5e24c6c956473a11b0c7daed4Dmitry Shmidt 2813ca8d8ea51a1aa5e24c6c956473a11b0c7daed4Dmitry Shmidt /* Session identification attributes */ 2904949598a23f501be6eec21697465fd46a28840aDmitry Shmidt const u8 *sta_addr; 3004949598a23f501be6eec21697465fd46a28840aDmitry Shmidt const u8 *user_name; 3104949598a23f501be6eec21697465fd46a28840aDmitry Shmidt size_t user_name_len; 3204949598a23f501be6eec21697465fd46a28840aDmitry Shmidt const u8 *acct_session_id; 3304949598a23f501be6eec21697465fd46a28840aDmitry Shmidt size_t acct_session_id_len; 34432d603c922e970f55866c63212d29c997438977Dmitry Shmidt const u8 *acct_multi_session_id; 35432d603c922e970f55866c63212d29c997438977Dmitry Shmidt size_t acct_multi_session_id_len; 3604949598a23f501be6eec21697465fd46a28840aDmitry Shmidt const u8 *cui; 3704949598a23f501be6eec21697465fd46a28840aDmitry Shmidt size_t cui_len; 3804949598a23f501be6eec21697465fd46a28840aDmitry Shmidt}; 3904949598a23f501be6eec21697465fd46a28840aDmitry Shmidt 4004949598a23f501be6eec21697465fd46a28840aDmitry Shmidtstruct radius_das_conf { 4104949598a23f501be6eec21697465fd46a28840aDmitry Shmidt int port; 4204949598a23f501be6eec21697465fd46a28840aDmitry Shmidt const u8 *shared_secret; 4304949598a23f501be6eec21697465fd46a28840aDmitry Shmidt size_t shared_secret_len; 4404949598a23f501be6eec21697465fd46a28840aDmitry Shmidt const struct hostapd_ip_addr *client_addr; 4504949598a23f501be6eec21697465fd46a28840aDmitry Shmidt unsigned int time_window; 4604949598a23f501be6eec21697465fd46a28840aDmitry Shmidt int require_event_timestamp; 4704949598a23f501be6eec21697465fd46a28840aDmitry Shmidt void *ctx; 4804949598a23f501be6eec21697465fd46a28840aDmitry Shmidt enum radius_das_res (*disconnect)(void *ctx, 4904949598a23f501be6eec21697465fd46a28840aDmitry Shmidt struct radius_das_attrs *attr); 5004949598a23f501be6eec21697465fd46a28840aDmitry Shmidt}; 5104949598a23f501be6eec21697465fd46a28840aDmitry Shmidt 5204949598a23f501be6eec21697465fd46a28840aDmitry Shmidtstruct radius_das_data * 5304949598a23f501be6eec21697465fd46a28840aDmitry Shmidtradius_das_init(struct radius_das_conf *conf); 5404949598a23f501be6eec21697465fd46a28840aDmitry Shmidt 5504949598a23f501be6eec21697465fd46a28840aDmitry Shmidtvoid radius_das_deinit(struct radius_das_data *data); 5604949598a23f501be6eec21697465fd46a28840aDmitry Shmidt 5704949598a23f501be6eec21697465fd46a28840aDmitry Shmidt#endif /* RADIUS_DAS_H */ 58