hostapd: Fix deinit on initialization failure
[hostap-gosc2009.git] / doc / mainpage.doxygen
blob690b7d6838b00f57fa5d11fc614ba9f2a8222adb
1 /**
2 \mainpage Developers' documentation for wpa_supplicant and hostapd
4 The goal of this documentation and comments in the source code is to
5 give enough information for other developers to understand how
6 %wpa_supplicant and hostapd have been implemented, how they can be
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
11 same address. Please note that this software is licensed under dual
12 license, GPLv2 or BSD at user's choice. All contributions to
13 %wpa_supplicant and hostapd are expected to use compatible licensing
14 terms.
16 The source code and read-only access to the combined %wpa_supplicant
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 .
23 \section wpa_supplicant wpa_supplicant
25 %wpa_supplicant is a WPA Supplicant for Linux, BSD and Windows with
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.
32 The design goal for %wpa_supplicant was to use hardware, driver, and
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".
41 EAPOL (IEEE 802.1X) state machines are implemented as a separate
42 module that interacts with \ref eap_peer_module "EAP peer implementation".
43 In addition to programs aimed at normal production use,
44 %wpa_supplicant source tree includes number of \ref testing_tools
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.
50 %wpa_supplicant implements a
51 \ref ctrl_iface_page "control interface" that can be used by
52 external programs to control the operations of the %wpa_supplicant
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++.
57 \image html wpa_supplicant.png "wpa_supplicant modules"
58 \image latex wpa_supplicant.eps "wpa_supplicant modules" width=15cm
61 \section hostapd hostapd
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.
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".
79 EAPOL (IEEE 802.1X) state machines are implemented as a separate
80 module that interacts with \ref eap_server_module "EAP server implementation".
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.
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++.
92 \image html hostapd.png "hostapd modules"
93 \image latex hostapd.eps "hostapd modules" width=15cm