wpa_supplicant / hostapd 2.0

radius_client.h

Go to the documentation of this file.
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 
 All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Defines