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