diff options
author | sam <sam@FreeBSD.org> | 2005-06-05 22:35:03 +0000 |
---|---|---|
committer | sam <sam@FreeBSD.org> | 2005-06-05 22:35:03 +0000 |
commit | 21e78f430e299464b3c902bec78f8daa1f0e2e71 (patch) | |
tree | a7d225a062cd128980707f3fa918dec2d015c46b /contrib/hostapd/developer.txt | |
download | FreeBSD-src-21e78f430e299464b3c902bec78f8daa1f0e2e71.zip FreeBSD-src-21e78f430e299464b3c902bec78f8daa1f0e2e71.tar.gz |
Stripped down import of hostapd v0.3.7
Diffstat (limited to 'contrib/hostapd/developer.txt')
-rw-r--r-- | contrib/hostapd/developer.txt | 219 |
1 files changed, 219 insertions, 0 deletions
diff --git a/contrib/hostapd/developer.txt b/contrib/hostapd/developer.txt new file mode 100644 index 0000000..e1d3163 --- /dev/null +++ b/contrib/hostapd/developer.txt @@ -0,0 +1,219 @@ +Developer notes for hostapd +=========================== + +hostapd daemon setup, operations, and shutdown +---------------------------------------------- + +Files: hostapd.[ch] + +Externally called functions: + hostapd_new_assoc_sta() is called when a station associates with the AP + +Event loop functions: + handle_term() is called on SIGINT and SIGTERM to terminate hostapd process + handle_reload() is called on SIGHUP to reload configuration + handle_dump_state() is called on SIGUSR1 to dump station state data to a + text file + hostapd_rotate_wep() is called to periodically change WEP keys + + +Configuration parsing +--------------------- + +Configuration file parsing and data structure definition. + +Files: config.[ch] + +Externally called functions: + hostapd_config_read() is called to read and parse a configuration file; + allocates and returns configuration data structure + hostapd_config_free() is called to free configuration data structure + hostapd_maclist_found() is called to check whether a given address is found + in a list of MAC addresses + + +Kernel driver access +-------------------- + +Helper functions for configuring the Host AP kernel driver and +accessing data from it. + +Files: driver.[ch] + + +IEEE 802.11 frame handling (netdevice wlan#ap) +---------------------------------------------- + +Receive all incoming IEEE 802.11 frames from the kernel driver via +wlan#ap interface. + +Files: receive.c + +Externally called functions: + hostapd_init_sockets() is called to initialize sockets for receiving and + sending IEEE 802.11 frames via wlan#ap interface + +Event loop functions: + handle_read() is called for each incoming packet from wlan#ap net device + + +Station table +------------- + +Files: sta_info.[ch], ap.h + +Event loop functions: + ap_handle_timer() is called to check station activity and to remove + inactive stations + + +IEEE 802.11 management +---------------------- + +IEEE 802.11 management frame sending and processing (mainly, +authentication and association). IEEE 802.11 station functionality +(authenticate and associate with another AP as an station). + +Files: ieee802_11.[ch] + +Externally called functions: + ieee802_11_mgmt() is called for each received IEEE 802.11 management frame + (from handle_frame() in hostapd.c) + ieee802_11_mgmt_cb() is called for each received TX callback of IEEE 802.11 + management frame (from handle_tx_callback() in hostapd.c) + ieee802_11_send_deauth() is called to send deauthentication frame + ieee802_11_send_disassoc() is called to send disassociation frame + ieee802_11_parse_elems() is used to parse information elements in + IEEE 802.11 management frames + +Event loop functions: + ieee802_11_sta_authenticate() called to retry authentication (with another + AP) + ieee802_11_sta_associate() called to retry association (with another AP) + + +IEEE 802.11 authentication +-------------------------- + +Access control list for IEEE 802.11 authentication. Uses staticly +configured ACL from configuration files or an external RADIUS +server. Results from external RADIUS queries are cached to allow +faster authentication frame processing. + +Files: ieee802_11_auth.[ch] + +Externally called functions: + hostapd_acl_init() called once during hostapd startup + hostapd_acl_deinit() called once during hostapd shutdown + hostapd_acl_recv_radius() called by IEEE 802.1X code for incoming RADIUS + Authentication messages (returns 0 if message was processed) + hostapd_allowed_address() called to check whether a specified station can be + authenticated + +Event loop functions: + hostapd_acl_expire() is called to expire ACL cache entries + + +IEEE 802.1X Authenticator +------------------------- + +Files: ieee802_1x.[ch] + + +Externally called functions: + ieee802_1x_receive() is called for each incoming EAPOL frame from the + wireless interface + ieee802_1x_new_station() is called to start IEEE 802.1X authentication when + a new station completes IEEE 802.11 association + +Event loop functions: + ieee802_1x_receive_auth() called for each incoming RADIUS Authentication + message + + +EAPOL state machine +------------------- + +IEEE 802.1X state machine for EAPOL. + +Files: eapol_sm.[ch] + +Externally called functions: + eapol_sm_step() is called to advance EAPOL state machines after any change + that could affect their state + +Event loop functions: + eapol_port_timers_tick() called once per second to advance Port Timers state + machine + + +IEEE 802.11f (IAPP) +------------------- + +Files: iapp.[ch] + +Externally called functions: + iapp_new_station() is called to start accounting session when a new station + completes IEEE 802.11 association or IEEE 802.1X authentication + +Event loop functions: + iapp_receive_udp() is called for incoming IAPP frames over UDP + + +Per station accounting +---------------------- + +Send RADIUS Accounting start and stop messages to a RADIUS Accounting +server. Process incoming RADIUS Accounting messages. + +Files: accounting.[ch] + +Externally called functions: + accounting_init() called once during hostapd startup + accounting_deinit() called once during hostapd shutdown + accounting_sta_start() called when a station starts new session + accounting_sta_stop() called when a station session is terminated + +Event loop functions: + accounting_receive() called for each incoming RADIUS Accounting message + accounting_list_timer() called to retransmit accounting messages and to + remove expired entries + + +RADIUS messages +--------------- + +RADIUS message generation and parsing functions. + +Files: radius.[ch] + + +Event loop +---------- + +Event loop for registering timeout calls, signal handlers, and socket +read events. + +Files: eloop.[ch] + + +RC4 +--- + +RC4 encryption + +Files: rc4.[ch] + + +MD5 +--- + +MD5 hash and HMAC-MD5. + +Files: md5.[ch] + + +Miscellaneous helper functions +------------------------------ + +Files: common.[ch] |