18d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt/* 28d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt * RADIUS client 38d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt * Copyright (c) 2002-2009, Jouni Malinen <j@w1.fi> 48d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt * 5c5ec7f57ead87efa365800228aa0b09a12d9e6c4Dmitry Shmidt * This software may be distributed under the terms of the BSD license. 6c5ec7f57ead87efa365800228aa0b09a12d9e6c4Dmitry Shmidt * See README for more details. 78d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt */ 88d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 98d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#ifndef RADIUS_CLIENT_H 108d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#define RADIUS_CLIENT_H 118d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 128d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#include "ip_addr.h" 138d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 148d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtstruct radius_msg; 158d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 168d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt/** 178d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt * struct hostapd_radius_server - RADIUS server information for RADIUS client 188d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt * 198d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt * This structure contains information about a RADIUS server. The values are 208d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt * mainly for MIB information. The MIB variable prefix (radiusAuth or 218d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt * radiusAcc) depends on whether this is an authentication or accounting 228d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt * server. 238d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt * 248d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt * radiusAuthClientPendingRequests (or radiusAccClientPendingRequests) is the 258d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt * number struct radius_client_data::msgs for matching msg_type. 268d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt */ 278d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtstruct hostapd_radius_server { 288d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt /** 298d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt * addr - radiusAuthServerAddress or radiusAccServerAddress 308d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt */ 318d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt struct hostapd_ip_addr addr; 328d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 338d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt /** 348d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt * port - radiusAuthClientServerPortNumber or radiusAccClientServerPortNumber 358d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt */ 368d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt int port; 378d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 388d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt /** 398d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt * shared_secret - Shared secret for authenticating RADIUS messages 408d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt */ 418d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt u8 *shared_secret; 428d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 438d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt /** 448d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt * shared_secret_len - Length of shared_secret in octets 458d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt */ 468d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt size_t shared_secret_len; 478d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 488d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt /* Dynamic (not from configuration file) MIB data */ 498d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 508d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt /** 518d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt * index - radiusAuthServerIndex or radiusAccServerIndex 528d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt */ 538d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt int index; 548d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 558d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt /** 568d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt * round_trip_time - radiusAuthClientRoundTripTime or radiusAccClientRoundTripTime 578d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt * Round-trip time in hundredths of a second. 588d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt */ 598d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt int round_trip_time; 608d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 618d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt /** 628d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt * requests - radiusAuthClientAccessRequests or radiusAccClientRequests 638d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt */ 648d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt u32 requests; 658d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 668d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt /** 678d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt * retransmissions - radiusAuthClientAccessRetransmissions or radiusAccClientRetransmissions 688d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt */ 698d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt u32 retransmissions; 708d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 718d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt /** 728d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt * access_accepts - radiusAuthClientAccessAccepts 738d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt */ 748d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt u32 access_accepts; 758d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 768d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt /** 778d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt * access_rejects - radiusAuthClientAccessRejects 788d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt */ 798d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt u32 access_rejects; 808d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 818d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt /** 828d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt * access_challenges - radiusAuthClientAccessChallenges 838d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt */ 848d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt u32 access_challenges; 858d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 868d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt /** 878d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt * responses - radiusAccClientResponses 888d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt */ 898d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt u32 responses; 908d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 918d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt /** 928d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt * malformed_responses - radiusAuthClientMalformedAccessResponses or radiusAccClientMalformedResponses 938d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt */ 948d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt u32 malformed_responses; 958d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 968d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt /** 978d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt * bad_authenticators - radiusAuthClientBadAuthenticators or radiusAccClientBadAuthenticators 988d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt */ 998d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt u32 bad_authenticators; 1008d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 1018d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt /** 1028d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt * timeouts - radiusAuthClientTimeouts or radiusAccClientTimeouts 1038d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt */ 1048d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt u32 timeouts; 1058d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 1068d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt /** 1078d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt * unknown_types - radiusAuthClientUnknownTypes or radiusAccClientUnknownTypes 1088d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt */ 1098d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt u32 unknown_types; 1108d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 1118d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt /** 1128d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt * packets_dropped - radiusAuthClientPacketsDropped or radiusAccClientPacketsDropped 1138d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt */ 1148d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt u32 packets_dropped; 1158d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt}; 1168d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 1178d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt/** 1188d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt * struct hostapd_radius_servers - RADIUS servers for RADIUS client 1198d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt */ 1208d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtstruct hostapd_radius_servers { 1218d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt /** 1228d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt * auth_servers - RADIUS Authentication servers in priority order 1238d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt */ 1248d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt struct hostapd_radius_server *auth_servers; 1258d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 1268d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt /** 1278d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt * num_auth_servers - Number of auth_servers entries 1288d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt */ 1298d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt int num_auth_servers; 1308d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 1318d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt /** 1328d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt * auth_server - The current Authentication server 1338d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt */ 1348d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt struct hostapd_radius_server *auth_server; 1358d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 1368d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt /** 1378d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt * acct_servers - RADIUS Accounting servers in priority order 1388d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt */ 1398d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt struct hostapd_radius_server *acct_servers; 1408d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 1418d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt /** 1428d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt * num_acct_servers - Number of acct_servers entries 1438d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt */ 1448d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt int num_acct_servers; 1458d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 1468d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt /** 1478d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt * acct_server - The current Accounting server 1488d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt */ 1498d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt struct hostapd_radius_server *acct_server; 1508d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 1518d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt /** 1528d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt * retry_primary_interval - Retry interval for trying primary server 1538d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt * 1548d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt * This specifies a retry interval in sexconds for trying to return to 1558d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt * the primary RADIUS server. RADIUS client code will automatically try 1568d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt * to use the next server when the current server is not replying to 1578d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt * requests. If this interval is set (non-zero), the primary server 1588d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt * will be retried after the specified number of seconds has passed 1598d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt * even if the current used secondary server is still working. 1608d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt */ 1618d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt int retry_primary_interval; 1628d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 1638d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt /** 1648d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt * msg_dumps - Whether RADIUS message details are shown in stdout 1658d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt */ 1668d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt int msg_dumps; 1678d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 1688d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt /** 1698d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt * client_addr - Client (local) address to use if force_client_addr 1708d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt */ 1718d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt struct hostapd_ip_addr client_addr; 1728d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 1738d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt /** 1748d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt * force_client_addr - Whether to force client (local) address 1758d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt */ 1768d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt int force_client_addr; 1778d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt}; 1788d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 1798d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 1808d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt/** 1818d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt * RadiusType - RADIUS server type for RADIUS client 1828d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt */ 1838d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidttypedef enum { 1848d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt /** 1858d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt * RADIUS authentication 1868d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt */ 1878d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt RADIUS_AUTH, 1888d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 1898d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt /** 1908d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt * RADIUS_ACCT - RADIUS accounting 1918d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt */ 1928d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt RADIUS_ACCT, 1938d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 1948d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt /** 1958d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt * RADIUS_ACCT_INTERIM - RADIUS interim accounting message 1968d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt * 1978d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt * Used only with radius_client_send(). This behaves just like 1988d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt * RADIUS_ACCT, but removes any pending interim RADIUS Accounting 1998d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt * messages for the same STA before sending the new interim update. 2008d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt */ 2018d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt RADIUS_ACCT_INTERIM 2028d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt} RadiusType; 2038d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 2048d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt/** 2058d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt * RadiusRxResult - RADIUS client RX handler result 2068d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt */ 2078d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidttypedef enum { 2088d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt /** 2098d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt * RADIUS_RX_PROCESSED - Message processed 2108d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt * 2118d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt * This stops handler calls and frees the message. 2128d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt */ 2138d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt RADIUS_RX_PROCESSED, 2148d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 2158d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt /** 2168d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt * RADIUS_RX_QUEUED - Message has been queued 2178d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt * 2188d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt * This stops handler calls, but does not free the message; the handler 2198d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt * that returned this is responsible for eventually freeing the 2208d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt * message. 2218d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt */ 2228d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt RADIUS_RX_QUEUED, 2238d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 2248d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt /** 2258d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt * RADIUS_RX_UNKNOWN - Message is not for this handler 2268d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt */ 2278d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt RADIUS_RX_UNKNOWN, 2288d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 2298d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt /** 2308d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt * RADIUS_RX_INVALID_AUTHENTICATOR - Message has invalid Authenticator 2318d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt */ 2328d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt RADIUS_RX_INVALID_AUTHENTICATOR 2338d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt} RadiusRxResult; 2348d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 2358d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtstruct radius_client_data; 2368d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 2378d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtint radius_client_register(struct radius_client_data *radius, 2388d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt RadiusType msg_type, 2398d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt RadiusRxResult (*handler) 2408d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt (struct radius_msg *msg, struct radius_msg *req, 2418d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt const u8 *shared_secret, size_t shared_secret_len, 2428d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt void *data), 2438d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt void *data); 2448d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtint radius_client_send(struct radius_client_data *radius, 2458d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt struct radius_msg *msg, 2468d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt RadiusType msg_type, const u8 *addr); 2478d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtu8 radius_client_get_id(struct radius_client_data *radius); 2488d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtvoid radius_client_flush(struct radius_client_data *radius, int only_auth); 2498d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtstruct radius_client_data * 2508d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtradius_client_init(void *ctx, struct hostapd_radius_servers *conf); 2518d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtvoid radius_client_deinit(struct radius_client_data *radius); 2528d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtvoid radius_client_flush_auth(struct radius_client_data *radius, 2538d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt const u8 *addr); 2548d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtint radius_client_get_mib(struct radius_client_data *radius, char *buf, 2558d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt size_t buflen); 2568d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtvoid radius_client_reconfig(struct radius_client_data *radius, 2578d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt struct hostapd_radius_servers *conf); 2588d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 2598d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#endif /* RADIUS_CLIENT_H */ 260