|
@@ -1,219 +0,0 @@
|
|
-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]
|
|
|