123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219 |
- 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]
|