The goal of this documentation and comments in the source code is to give enough information for other developers to understand how hostapd has been implemented, how it can be modified, how new drivers can be supported, and how hostapd can be ported to other operating systems. If any information is missing, feel free to contact Jouni Malinen <[email protected]> for more information. Contributions as patch files are also very welcome at the same address. Please note that hostapd is licensed under dual license, GPLv2 or BSD at user's choice. All contributions to hostapd are expected to use compatible licensing terms.
The source code and read-only access to hostapd CVS repository is available from the project home page at http://hostap.epitest.fi/hostapd/. This developers' documentation is also available as a PDF file from http://hostap.epitest.fi/hostapd/hostapd-devel.pdf .
The design goal for hostapd was to use hardware, driver, and OS independent, portable C code for all WPA functionality. The source code is divided into separate C files as shown on the code structure page. All hardware/driver specific functionality is in separate files that implement a well-defined driver API. Information about porting to different target boards and operating systems is available on the porting page.
EAPOL (IEEE 802.1X) state machines are implemented as a separate module that interacts with EAP server implementation. Similarly, RADIUS authentication server is in its own separate module. Both IEEE 802.1X and RADIUS authentication server can use EAP server functionality.
hostapd implements a control interface that can be used by external programs to control the operations of the hostapdt daemon and to get status information and event notifications. There is a small C library that provides helper functions to facilitate the use of the control interface. This library can also be used with C++.