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