1/** 2\mainpage Developers' documentation for wpa_supplicant and hostapd 3 4The goal of this documentation and comments in the source code is to 5give enough information for other developers to understand how 6wpa_supplicant and hostapd have been implemented, how they can be 7modified, how new drivers can be supported, and how the source code 8can be ported to other operating systems. If any information is 9missing, feel free to contact Jouni Malinen <j@w1.fi> for more 10information. Contributions as patch files are also very welcome at the 11same address. Please note that this software is licensed under the 12BSD license (the one with advertisement clause removed). All 13contributions to wpa_supplicant and hostapd are expected to use 14compatible licensing terms. 15 16The source code and read-only access to the combined wpa_supplicant 17and hostapd Git repository is available from the project home page at 18http://w1.fi/wpa_supplicant/. This developers' documentation is also 19available as a PDF file from 20http://w1.fi/wpa_supplicant/wpa_supplicant-devel.pdf . 21 22 23\section _wpa_supplicant wpa_supplicant 24 25wpa_supplicant is a WPA Supplicant for Linux, BSD and Windows with 26support for WPA and WPA2 (IEEE 802.11i / RSN). Supplicant is the IEEE 27802.1X/WPA component that is used in the client stations. It 28implements key negotiation with a WPA Authenticator and it can optionally 29control roaming and IEEE 802.11 authentication/association of the wlan 30driver. 31 32The design goal for wpa_supplicant was to use hardware, driver, and 33OS independent, portable C code for all WPA functionality. The source 34code is divided into separate C files as shown on the \ref 35code_structure "code structure page". All hardware/driver specific 36functionality is in separate files that implement a \ref 37driver_wrapper "well-defined driver API". Information about porting 38to different target boards and operating systems is available on 39the \ref porting "porting page". 40 41EAPOL (IEEE 802.1X) state machines are implemented as a separate 42module that interacts with \ref eap_peer_module "EAP peer implementation". 43In addition to programs aimed at normal production use, 44wpa_supplicant source tree includes number of \ref testing_tools 45"testing and development tools" that make it easier to test the 46programs without having to setup a full test setup with wireless 47cards. These tools can also be used to implement automatic test 48suites. 49 50wpa_supplicant implements a 51\ref ctrl_iface_page "control interface" that can be used by 52external programs to control the operations of the wpa_supplicant 53daemon and to get status information and event notifications. There is 54a small C library that provides helper functions to facilitate the use of the 55control interface. This library can also be used with C++. 56 57\image html _wpa_supplicant.png "wpa_supplicant modules" 58\image latex _wpa_supplicant.eps "wpa_supplicant modules" width=15cm 59 60 61\section _hostapd hostapd 62 63hostapd includes IEEE 802.11 access point management (authentication / 64association), IEEE 802.1X/WPA/WPA2 Authenticator, EAP server, and 65RADIUS authentication server functionality. It can be build with 66various configuration option, e.g., a standalone AP management 67solution or a RADIUS authentication server with support for number of 68EAP methods. 69 70The design goal for hostapd was to use hardware, driver, and 71OS independent, portable C code for all WPA functionality. The source 72code is divided into separate C files as shown on the \ref 73code_structure "code structure page". All hardware/driver specific 74functionality is in separate files that implement a \ref 75driver_wrapper "well-defined driver API". Information about porting 76to different target boards and operating systems is available on 77the \ref porting "porting page". 78 79EAPOL (IEEE 802.1X) state machines are implemented as a separate 80module that interacts with \ref eap_server_module "EAP server implementation". 81Similarly, RADIUS authentication server is in its own separate module. 82Both IEEE 802.1X and RADIUS authentication server can use EAP server 83functionality. 84 85hostapd implements a \ref hostapd_ctrl_iface_page "control interface" 86that can be used by external programs to control the operations of the 87hostapdt daemon and to get status information and event notifications. 88There is a small C library that provides helper functions to facilitate 89the use of the control interface. This library can also be used with 90C++. 91 92\image html hostapd.png "hostapd modules" 93\image latex hostapd.eps "hostapd modules" width=15cm 94 95*/ 96