radius_client.h

Go to the documentation of this file.
00001 
00016 #ifndef RADIUS_CLIENT_H
00017 #define RADIUS_CLIENT_H
00018 
00019 #include "ip_addr.h"
00020 
00021 struct radius_msg;
00022 
00035 struct hostapd_radius_server {
00040         struct hostapd_ip_addr addr;
00041 
00046         int port;
00047 
00052         u8 *shared_secret;
00053 
00058         size_t shared_secret_len;
00059 
00060         /* Dynamic (not from configuration file) MIB data */
00061 
00066         int index;
00067 
00073         int round_trip_time;
00074 
00079         u32 requests;
00080 
00085         u32 retransmissions;
00086 
00091         u32 access_accepts;
00092 
00097         u32 access_rejects;
00098 
00103         u32 access_challenges;
00104 
00109         u32 responses;
00110 
00115         u32 malformed_responses;
00116 
00121         u32 bad_authenticators;
00122 
00127         u32 timeouts;
00128 
00133         u32 unknown_types;
00134 
00139         u32 packets_dropped;
00140 };
00141 
00146 struct hostapd_radius_servers {
00151         struct hostapd_radius_server *auth_servers;
00152 
00157         int num_auth_servers;
00158 
00163         struct hostapd_radius_server *auth_server;
00164 
00169         struct hostapd_radius_server *acct_servers;
00170 
00175         int num_acct_servers;
00176 
00181         struct hostapd_radius_server *acct_server;
00182 
00194         int retry_primary_interval;
00195 
00200         int msg_dumps;
00201 
00206         struct hostapd_ip_addr client_addr;
00207 
00212         int force_client_addr;
00213 };
00214 
00215 
00220 typedef enum {
00224         RADIUS_AUTH,
00225 
00230         RADIUS_ACCT,
00231 
00240         RADIUS_ACCT_INTERIM
00241 } RadiusType;
00242 
00247 typedef enum {
00248         RADIUS_RX_PROCESSED,
00249         RADIUS_RX_QUEUED,
00250         RADIUS_RX_UNKNOWN,
00251         RADIUS_RX_INVALID_AUTHENTICATOR
00252 } RadiusRxResult;
00253 
00254 struct radius_client_data;
00255 
00256 int radius_client_register(struct radius_client_data *radius,
00257                            RadiusType msg_type,
00258                            RadiusRxResult (*handler)
00259                            (struct radius_msg *msg, struct radius_msg *req,
00260                             const u8 *shared_secret, size_t shared_secret_len,
00261                             void *data),
00262                            void *data);
00263 int radius_client_send(struct radius_client_data *radius,
00264                        struct radius_msg *msg,
00265                        RadiusType msg_type, const u8 *addr);
00266 u8 radius_client_get_id(struct radius_client_data *radius);
00267 
00268 #ifdef CONFIG_NO_RADIUS
00269 static inline void radius_client_flush(struct radius_client_data *radius,
00270                                        int only_auth)
00271 {
00272 }
00273 
00274 static inline struct radius_client_data *
00275 radius_client_init(void *ctx, struct hostapd_radius_servers *conf)
00276 {
00277         return (void *) -1;
00278 }
00279 
00280 static inline void radius_client_deinit(struct radius_client_data *radius)
00281 {
00282 }
00283 
00284 static inline void radius_client_flush_auth(struct radius_client_data *radius,
00285                                             const u8 *addr)
00286 {
00287 }
00288 
00289 static inline int radius_client_get_mib(struct radius_client_data *radius,
00290                                         char *buf, size_t buflen)
00291 {
00292         return 0;
00293 }
00294 #else /* CONFIG_NO_RADIUS */
00295 void radius_client_flush(struct radius_client_data *radius, int only_auth);
00296 struct radius_client_data *
00297 radius_client_init(void *ctx, struct hostapd_radius_servers *conf);
00298 void radius_client_deinit(struct radius_client_data *radius);
00299 void radius_client_flush_auth(struct radius_client_data *radius,
00300                               const u8 *addr);
00301 int radius_client_get_mib(struct radius_client_data *radius, char *buf,
00302                           size_t buflen);
00303 #endif /* CONFIG_NO_RADIUS */
00304 
00305 #endif /* RADIUS_CLIENT_H */
00306 
 All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Defines

Generated on Sat Nov 28 23:07:48 2009 for wpa_supplicant/hostapd by  doxygen 1.6.1