|
wpa_supplicant / hostapd 2.0
|
00001 00010 #ifndef RADIUS_CLIENT_H 00011 #define RADIUS_CLIENT_H 00012 00013 #include "ip_addr.h" 00014 00015 struct radius_msg; 00016 00029 struct hostapd_radius_server { 00034 struct hostapd_ip_addr addr; 00035 00040 int port; 00041 00046 u8 *shared_secret; 00047 00052 size_t shared_secret_len; 00053 00054 /* Dynamic (not from configuration file) MIB data */ 00055 00060 int index; 00061 00067 int round_trip_time; 00068 00073 u32 requests; 00074 00079 u32 retransmissions; 00080 00085 u32 access_accepts; 00086 00091 u32 access_rejects; 00092 00097 u32 access_challenges; 00098 00103 u32 responses; 00104 00109 u32 malformed_responses; 00110 00115 u32 bad_authenticators; 00116 00121 u32 timeouts; 00122 00127 u32 unknown_types; 00128 00133 u32 packets_dropped; 00134 }; 00135 00140 struct hostapd_radius_servers { 00145 struct hostapd_radius_server *auth_servers; 00146 00151 int num_auth_servers; 00152 00157 struct hostapd_radius_server *auth_server; 00158 00163 struct hostapd_radius_server *acct_servers; 00164 00169 int num_acct_servers; 00170 00175 struct hostapd_radius_server *acct_server; 00176 00188 int retry_primary_interval; 00189 00194 int msg_dumps; 00195 00200 struct hostapd_ip_addr client_addr; 00201 00206 int force_client_addr; 00207 }; 00208 00209 00214 typedef enum { 00218 RADIUS_AUTH, 00219 00224 RADIUS_ACCT, 00225 00234 RADIUS_ACCT_INTERIM 00235 } RadiusType; 00236 00241 typedef enum { 00248 RADIUS_RX_PROCESSED, 00249 00258 RADIUS_RX_QUEUED, 00259 00264 RADIUS_RX_UNKNOWN, 00265 00270 RADIUS_RX_INVALID_AUTHENTICATOR 00271 } RadiusRxResult; 00272 00273 struct radius_client_data; 00274 00275 int radius_client_register(struct radius_client_data *radius, 00276 RadiusType msg_type, 00277 RadiusRxResult (*handler) 00278 (struct radius_msg *msg, struct radius_msg *req, 00279 const u8 *shared_secret, size_t shared_secret_len, 00280 void *data), 00281 void *data); 00282 int radius_client_send(struct radius_client_data *radius, 00283 struct radius_msg *msg, 00284 RadiusType msg_type, const u8 *addr); 00285 u8 radius_client_get_id(struct radius_client_data *radius); 00286 void radius_client_flush(struct radius_client_data *radius, int only_auth); 00287 struct radius_client_data * 00288 radius_client_init(void *ctx, struct hostapd_radius_servers *conf); 00289 void radius_client_deinit(struct radius_client_data *radius); 00290 void radius_client_flush_auth(struct radius_client_data *radius, 00291 const u8 *addr); 00292 int radius_client_get_mib(struct radius_client_data *radius, char *buf, 00293 size_t buflen); 00294 void radius_client_reconfig(struct radius_client_data *radius, 00295 struct hostapd_radius_servers *conf); 00296 00297 #endif /* RADIUS_CLIENT_H */ 00298
1.7.3