Complete Doxygen documentation for RADIUS client

No more warnings from Doxygen about missing documentation from
radius_client.[ch].
This commit is contained in:
Jouni Malinen 2009-11-29 11:48:28 +02:00
parent 42158e247d
commit 15ef92d3cc
2 changed files with 115 additions and 12 deletions

View file

@ -62,14 +62,21 @@
* This data structure is used internally inside the RADIUS client module to * This data structure is used internally inside the RADIUS client module to
* store registered RX handlers. These handlers are registered by calls to * store registered RX handlers. These handlers are registered by calls to
* radius_client_register() and unregistered when the RADIUS client is * radius_client_register() and unregistered when the RADIUS client is
* deinitizlized with a call to radius_client_deinit(). * deinitialized with a call to radius_client_deinit().
*/ */
struct radius_rx_handler { struct radius_rx_handler {
/**
* handler - Received RADIUS message handler
*/
RadiusRxResult (*handler)(struct radius_msg *msg, RadiusRxResult (*handler)(struct radius_msg *msg,
struct radius_msg *req, struct radius_msg *req,
const u8 *shared_secret, const u8 *shared_secret,
size_t shared_secret_len, size_t shared_secret_len,
void *data); void *data);
/**
* data - Context data for the handler
*/
void *data; void *data;
}; };
@ -81,21 +88,63 @@ struct radius_rx_handler {
* store pending RADIUS requests that may still need to be retransmitted. * store pending RADIUS requests that may still need to be retransmitted.
*/ */
struct radius_msg_list { struct radius_msg_list {
u8 addr[ETH_ALEN]; /* STA/client address; used to find RADIUS messages /**
* for the same STA. */ * addr - STA/client address
*
* This is used to find RADIUS messages for the same STA.
*/
u8 addr[ETH_ALEN];
/**
* msg - RADIUS message
*/
struct radius_msg *msg; struct radius_msg *msg;
/**
* msg_type - Message type
*/
RadiusType msg_type; RadiusType msg_type;
/**
* first_try - Time of the first transmission attempt
*/
os_time_t first_try; os_time_t first_try;
/**
* next_try - Time for the next transmission attempt
*/
os_time_t next_try; os_time_t next_try;
/**
* attempts - Number of transmission attempts
*/
int attempts; int attempts;
/**
* next_wait - Next retransmission wait time in seconds
*/
int next_wait; int next_wait;
/**
* last_attempt - Time of the last transmission attempt
*/
struct os_time last_attempt; struct os_time last_attempt;
u8 *shared_secret; /**
* shared_secret - Shared secret with the target RADIUS server
*/
const u8 *shared_secret;
/**
* shared_secret_len - shared_secret length in octets
*/
size_t shared_secret_len; size_t shared_secret_len;
/* TODO: server config with failover to backup server(s) */ /* TODO: server config with failover to backup server(s) */
/**
* next - Next message in the list
*/
struct radius_msg_list *next; struct radius_msg_list *next;
}; };
@ -120,36 +169,68 @@ struct radius_client_data {
struct hostapd_radius_servers *conf; struct hostapd_radius_servers *conf;
/** /**
* auth_serv_sock - Socket for authentication RADIUS messages * auth_serv_sock - IPv4 socket for RADIUS authentication messages
*/ */
int auth_serv_sock; int auth_serv_sock;
/** /**
* acct_serv_sock - Socket for accounting RADIUS messages * acct_serv_sock - IPv4 socket for RADIUS accounting messages
*/ */
int acct_serv_sock; int acct_serv_sock;
/**
* auth_serv_sock6 - IPv6 socket for RADIUS authentication messages
*/
int auth_serv_sock6; int auth_serv_sock6;
/**
* acct_serv_sock6 - IPv6 socket for RADIUS accounting messages
*/
int acct_serv_sock6; int acct_serv_sock6;
/** /**
* auth_sock - Current used socket for RADIUS authentication server * auth_sock - Currently used socket for RADIUS authentication server
*/ */
int auth_sock; int auth_sock;
/** /**
* acct_sock - Current used socket for RADIUS accounting server * acct_sock - Currently used socket for RADIUS accounting server
*/ */
int acct_sock; int acct_sock;
/**
* auth_handlers - Authentication message handlers
*/
struct radius_rx_handler *auth_handlers; struct radius_rx_handler *auth_handlers;
/**
* num_auth_handlers - Number of handlers in auth_handlers
*/
size_t num_auth_handlers; size_t num_auth_handlers;
/**
* acct_handlers - Accounting message handlers
*/
struct radius_rx_handler *acct_handlers; struct radius_rx_handler *acct_handlers;
/**
* num_acct_handlers - Number of handlers in acct_handlers
*/
size_t num_acct_handlers; size_t num_acct_handlers;
/**
* msgs - Pending outgoing RADIUS messages
*/
struct radius_msg_list *msgs; struct radius_msg_list *msgs;
/**
* num_msgs - Number of pending messages in the msgs list
*/
size_t num_msgs; size_t num_msgs;
/**
* next_radius_identifier - Next RADIUS message identifier to use
*/
u8 next_radius_identifier; u8 next_radius_identifier;
}; };
@ -435,7 +516,8 @@ static void radius_client_update_timeout(struct radius_client_data *radius)
static void radius_client_list_add(struct radius_client_data *radius, static void radius_client_list_add(struct radius_client_data *radius,
struct radius_msg *msg, struct radius_msg *msg,
RadiusType msg_type, u8 *shared_secret, RadiusType msg_type,
const u8 *shared_secret,
size_t shared_secret_len, const u8 *addr) size_t shared_secret_len, const u8 *addr)
{ {
struct radius_msg_list *entry, *prev; struct radius_msg_list *entry, *prev;
@ -548,7 +630,7 @@ int radius_client_send(struct radius_client_data *radius,
const u8 *addr) const u8 *addr)
{ {
struct hostapd_radius_servers *conf = radius->conf; struct hostapd_radius_servers *conf = radius->conf;
u8 *shared_secret; const u8 *shared_secret;
size_t shared_secret_len; size_t shared_secret_len;
char *name; char *name;
int s, res; int s, res;
@ -833,7 +915,7 @@ void radius_client_flush(struct radius_client_data *radius, int only_auth)
static void radius_client_update_acct_msgs(struct radius_client_data *radius, static void radius_client_update_acct_msgs(struct radius_client_data *radius,
u8 *shared_secret, const u8 *shared_secret,
size_t shared_secret_len) size_t shared_secret_len)
{ {
struct radius_msg_list *entry; struct radius_msg_list *entry;

View file

@ -28,7 +28,7 @@ struct radius_msg;
* server. * server.
* *
* radiusAuthClientPendingRequests (or radiusAccClientPendingRequests) is the * radiusAuthClientPendingRequests (or radiusAccClientPendingRequests) is the
* length of hapd->radius->msgs for matching msg_type. * number struct radius_client_data::msgs for matching msg_type.
*/ */
struct hostapd_radius_server { struct hostapd_radius_server {
/** /**
@ -211,9 +211,30 @@ typedef enum {
* RadiusRxResult - RADIUS client RX handler result * RadiusRxResult - RADIUS client RX handler result
*/ */
typedef enum { typedef enum {
/**
* RADIUS_RX_PROCESSED - Message processed
*
* This stops handler calls and frees the message.
*/
RADIUS_RX_PROCESSED, RADIUS_RX_PROCESSED,
/**
* RADIUS_RX_QUEUED - Message has been queued
*
* This stops handler calls, but does not free the message; the handler
* that returned this is responsible for eventually freeing the
* message.
*/
RADIUS_RX_QUEUED, RADIUS_RX_QUEUED,
/**
* RADIUS_RX_UNKNOWN - Message is not for this handler
*/
RADIUS_RX_UNKNOWN, RADIUS_RX_UNKNOWN,
/**
* RADIUS_RX_INVALID_AUTHENTICATOR - Message has invalid Authenticator
*/
RADIUS_RX_INVALID_AUTHENTICATOR RADIUS_RX_INVALID_AUTHENTICATOR
} RadiusRxResult; } RadiusRxResult;