hostapd
radius_client.h
1 /*
2  * RADIUS client
3  * Copyright (c) 2002-2009, Jouni Malinen <j@w1.fi>
4  *
5  * This software may be distributed under the terms of the BSD license.
6  * See README for more details.
7  */
8 
9 #ifndef RADIUS_CLIENT_H
10 #define RADIUS_CLIENT_H
11 
12 #include "ip_addr.h"
13 
14 struct radius_msg;
15 
32 
36  int port;
37 
42 
47 
48  /* Dynamic (not from configuration file) MIB data */
49 
53  int index;
54 
60 
64  u32 requests;
65 
70 
75 
80 
85 
89  u32 responses;
90 
95 
100 
104  u32 timeouts;
105 
110 
115 };
116 
125 
130 
135 
140 
145 
150 
162 
167 
171  struct hostapd_ip_addr client_addr;
172 
177 };
178 
179 
183 typedef enum {
187  RADIUS_AUTH,
188 
192  RADIUS_ACCT,
193 
201  RADIUS_ACCT_INTERIM
202 } RadiusType;
203 
207 typedef enum {
213  RADIUS_RX_PROCESSED,
214 
222  RADIUS_RX_QUEUED,
223 
227  RADIUS_RX_UNKNOWN,
228 
232  RADIUS_RX_INVALID_AUTHENTICATOR
233 } RadiusRxResult;
234 
235 struct radius_client_data;
236 
237 int radius_client_register(struct radius_client_data *radius,
238  RadiusType msg_type,
239  RadiusRxResult (*handler)
240  (struct radius_msg *msg, struct radius_msg *req,
241  const u8 *shared_secret, size_t shared_secret_len,
242  void *data),
243  void *data);
244 void radius_client_set_interim_error_cb(struct radius_client_data *radius,
245  void (*cb)(const u8 *addr, void *ctx),
246  void *ctx);
247 int radius_client_send(struct radius_client_data *radius,
248  struct radius_msg *msg,
249  RadiusType msg_type, const u8 *addr);
250 u8 radius_client_get_id(struct radius_client_data *radius);
251 void radius_client_flush(struct radius_client_data *radius, int only_auth);
252 struct radius_client_data *
253 radius_client_init(void *ctx, struct hostapd_radius_servers *conf);
254 void radius_client_deinit(struct radius_client_data *radius);
255 void radius_client_flush_auth(struct radius_client_data *radius,
256  const u8 *addr);
257 int radius_client_get_mib(struct radius_client_data *radius, char *buf,
258  size_t buflen);
259 void radius_client_reconfig(struct radius_client_data *radius,
260  struct hostapd_radius_servers *conf);
261 
262 #endif /* RADIUS_CLIENT_H */
struct radius_msg - RADIUS message structure for new and parsed messages
Definition: radius.c:21
u32 packets_dropped
packets_dropped - radiusAuthClientPacketsDropped or radiusAccClientPacketsDropped ...
Definition: radius_client.h:114
struct hostapd_radius_servers - RADIUS servers for RADIUS client
Definition: radius_client.h:120
int num_auth_servers
num_auth_servers - Number of auth_servers entries
Definition: radius_client.h:129
void * ctx
ctx - Context pointer for hostapd_logger() callbacks
Definition: radius_client.c:158
Definition: ip_addr.h:12
u8 * shared_secret
shared_secret - Shared secret for authenticating RADIUS messages
Definition: radius_client.h:41
struct hostapd_ip_addr addr
addr - radiusAuthServerAddress or radiusAccServerAddress
Definition: radius_client.h:31
u32 bad_authenticators
bad_authenticators - radiusAuthClientBadAuthenticators or radiusAccClientBadAuthenticators ...
Definition: radius_client.h:99
u32 responses
responses - radiusAccClientResponses
Definition: radius_client.h:89
int round_trip_time
round_trip_time - radiusAuthClientRoundTripTime or radiusAccClientRoundTripTime Round-trip time in hu...
Definition: radius_client.h:59
u32 retransmissions
retransmissions - radiusAuthClientAccessRetransmissions or radiusAccClientRetransmissions ...
Definition: radius_client.h:69
u32 access_accepts
access_accepts - radiusAuthClientAccessAccepts
Definition: radius_client.h:74
u32 unknown_types
unknown_types - radiusAuthClientUnknownTypes or radiusAccClientUnknownTypes
Definition: radius_client.h:109
u32 timeouts
timeouts - radiusAuthClientTimeouts or radiusAccClientTimeouts
Definition: radius_client.h:104
int num_acct_servers
num_acct_servers - Number of acct_servers entries
Definition: radius_client.h:144
int force_client_addr
force_client_addr - Whether to force client (local) address
Definition: radius_client.h:176
struct hostapd_radius_server - RADIUS server information for RADIUS client
Definition: radius_client.h:27
int msg_dumps
msg_dumps - Whether RADIUS message details are shown in stdout
Definition: radius_client.h:166
size_t shared_secret_len
shared_secret_len - Length of shared_secret in octets
Definition: radius_client.h:46
int index
index - radiusAuthServerIndex or radiusAccServerIndex
Definition: radius_client.h:53
struct hostapd_radius_server * acct_servers
acct_servers - RADIUS Accounting servers in priority order
Definition: radius_client.h:139
u32 access_challenges
access_challenges - radiusAuthClientAccessChallenges
Definition: radius_client.h:84
struct hostapd_radius_server * auth_server
auth_server - The current Authentication server
Definition: radius_client.h:134
struct hostapd_radius_server * acct_server
acct_server - The current Accounting server
Definition: radius_client.h:149
int retry_primary_interval
retry_primary_interval - Retry interval for trying primary server
Definition: radius_client.h:161
int port
port - radiusAuthClientServerPortNumber or radiusAccClientServerPortNumber
Definition: radius_client.h:36
struct radius_client_data - Internal RADIUS client data
Definition: radius_client.c:154
struct hostapd_radius_server * auth_servers
auth_servers - RADIUS Authentication servers in priority order
Definition: radius_client.h:124
u32 access_rejects
access_rejects - radiusAuthClientAccessRejects
Definition: radius_client.h:79
u32 requests
requests - radiusAuthClientAccessRequests or radiusAccClientRequests
Definition: radius_client.h:64
u32 malformed_responses
malformed_responses - radiusAuthClientMalformedAccessResponses or radiusAccClientMalformedResponses ...
Definition: radius_client.h:94
struct hostapd_radius_servers * conf
conf - RADIUS client configuration (list of RADIUS servers to use)
Definition: radius_client.c:163