summaryrefslogtreecommitdiffstats
path: root/contrib/wpa_supplicant/radius_client.h
diff options
context:
space:
mode:
authorsam <sam@FreeBSD.org>2006-03-07 05:26:33 +0000
committersam <sam@FreeBSD.org>2006-03-07 05:26:33 +0000
commit840099f34d8de1ca769f02fae379c4d8e5d6688a (patch)
tree0c0ff34569d807e7bceb062a6210ce68490a8764 /contrib/wpa_supplicant/radius_client.h
parent34dbcde8dfa5b3d152d250b6d69965e001238e49 (diff)
downloadFreeBSD-src-840099f34d8de1ca769f02fae379c4d8e5d6688a.zip
FreeBSD-src-840099f34d8de1ca769f02fae379c4d8e5d6688a.tar.gz
Import of WPA supplicant 0.4.8
Diffstat (limited to 'contrib/wpa_supplicant/radius_client.h')
-rw-r--r--contrib/wpa_supplicant/radius_client.h118
1 files changed, 62 insertions, 56 deletions
diff --git a/contrib/wpa_supplicant/radius_client.h b/contrib/wpa_supplicant/radius_client.h
index 993f8d0..d21ca83 100644
--- a/contrib/wpa_supplicant/radius_client.h
+++ b/contrib/wpa_supplicant/radius_client.h
@@ -1,81 +1,87 @@
#ifndef RADIUS_CLIENT_H
#define RADIUS_CLIENT_H
-typedef enum {
- RADIUS_AUTH,
- RADIUS_ACCT,
- RADIUS_ACCT_INTERIM /* used only with radius_client_send(); just like
- * RADIUS_ACCT, but removes any pending interim
- * RADIUS Accounting packages for the same STA
- * before sending the new interim update */
-} RadiusType;
+#include "config_types.h"
-/* RADIUS message retransmit list */
-struct radius_msg_list {
- u8 addr[ETH_ALEN]; /* STA/client address; used to find RADIUS messages
- * for the same STA. */
- struct radius_msg *msg;
- RadiusType msg_type;
- time_t first_try;
- time_t next_try;
- int attempts;
- int next_wait;
+struct radius_msg;
+struct hostapd_radius_server {
+ /* MIB prefix for shared variables:
+ * @ = radiusAuth or radiusAcc depending on the type of the server */
+ struct hostapd_ip_addr addr; /* @ServerAddress */
+ int port; /* @ClientServerPortNumber */
u8 *shared_secret;
size_t shared_secret_len;
- /* TODO: server config with failover to backup server(s) */
-
- struct radius_msg_list *next;
+ /* Dynamic (not from configuration file) MIB data */
+ int index; /* @ServerIndex */
+ int round_trip_time; /* @ClientRoundTripTime; in hundredths of a
+ * second */
+ u32 requests; /* @Client{Access,}Requests */
+ u32 retransmissions; /* @Client{Access,}Retransmissions */
+ u32 access_accepts; /* radiusAuthClientAccessAccepts */
+ u32 access_rejects; /* radiusAuthClientAccessRejects */
+ u32 access_challenges; /* radiusAuthClientAccessChallenges */
+ u32 responses; /* radiusAccClientResponses */
+ u32 malformed_responses; /* @ClientMalformed{Access,}Responses */
+ u32 bad_authenticators; /* @ClientBadAuthenticators */
+ u32 timeouts; /* @ClientTimeouts */
+ u32 unknown_types; /* @ClientUnknownTypes */
+ u32 packets_dropped; /* @ClientPacketsDropped */
+ /* @ClientPendingRequests: length of hapd->radius->msgs for matching
+ * msg_type */
};
+struct hostapd_radius_servers {
+ /* RADIUS Authentication and Accounting servers in priority order */
+ struct hostapd_radius_server *auth_servers, *auth_server;
+ int num_auth_servers;
+ struct hostapd_radius_server *acct_servers, *acct_server;
+ int num_acct_servers;
-typedef enum {
- RADIUS_RX_PROCESSED,
- RADIUS_RX_QUEUED,
- RADIUS_RX_UNKNOWN
-} RadiusRxResult;
+ int retry_primary_interval;
+ int acct_interim_interval;
-struct radius_rx_handler {
- RadiusRxResult (*handler)(struct wpa_supplicant *wpa_s,
- struct radius_msg *msg,
- struct radius_msg *req,
- u8 *shared_secret, size_t shared_secret_len,
- void *data);
- void *data;
+ int msg_dumps;
};
-struct radius_client_data {
- int auth_serv_sock; /* socket for authentication RADIUS messages */
- int acct_serv_sock; /* socket for accounting RADIUS messages */
-
- struct radius_rx_handler *auth_handlers;
- size_t num_auth_handlers;
- struct radius_rx_handler *acct_handlers;
- size_t num_acct_handlers;
- struct radius_msg_list *msgs;
- size_t num_msgs;
+typedef enum {
+ RADIUS_AUTH,
+ RADIUS_ACCT,
+ RADIUS_ACCT_INTERIM /* used only with radius_client_send(); just like
+ * RADIUS_ACCT, but removes any pending interim
+ * RADIUS Accounting packages for the same STA
+ * before sending the new interim update */
+} RadiusType;
- u8 next_radius_identifier;
- u32 acct_session_id_hi;
- u32 acct_session_id_lo;
-};
+typedef enum {
+ RADIUS_RX_PROCESSED,
+ RADIUS_RX_QUEUED,
+ RADIUS_RX_UNKNOWN,
+ RADIUS_RX_INVALID_AUTHENTICATOR
+} RadiusRxResult;
+struct radius_client_data;
-int radius_client_register(struct wpa_supplicant *wpa_s, RadiusType msg_type,
+int radius_client_register(struct radius_client_data *radius,
+ RadiusType msg_type,
RadiusRxResult (*handler)
- (struct wpa_supplicant *wpa_s,
- struct radius_msg *msg, struct radius_msg *req,
+ (struct radius_msg *msg, struct radius_msg *req,
u8 *shared_secret, size_t shared_secret_len,
void *data),
void *data);
-int radius_client_send(struct wpa_supplicant *wpa_s, struct radius_msg *msg,
+int radius_client_send(struct radius_client_data *radius,
+ struct radius_msg *msg,
RadiusType msg_type, u8 *addr);
-u8 radius_client_get_id(struct wpa_supplicant *wpa_s);
-
-void radius_client_flush(struct wpa_supplicant *wpa_s);
-int radius_client_init(struct wpa_supplicant *wpa_s);
-void radius_client_deinit(struct wpa_supplicant *wpa_s);
+u8 radius_client_get_id(struct radius_client_data *radius);
+
+void radius_client_flush(struct radius_client_data *radius);
+struct radius_client_data *
+radius_client_init(void *ctx, struct hostapd_radius_servers *conf);
+void radius_client_deinit(struct radius_client_data *radius);
+void radius_client_flush_auth(struct radius_client_data *radius, u8 *addr);
+int radius_client_get_mib(struct radius_client_data *radius, char *buf,
+ size_t buflen);
#endif /* RADIUS_CLIENT_H */
OpenPOWER on IntegriCloud