mirror of
https://github.com/vanhoefm/fragattacks.git
synced 2024-12-01 11:48:23 -05:00
5eb513c3ba
The way autolink support is implementing in Doxygen is a bit inconvenient with wpa_supplicant being recognized as something that would always be linked to struct wpa_supplicant. In addition, number of links were not really noticed automatically. To get this working more robustly and without having to use the %wpa_supplicant workaround (which had its own issues, e.g., with titles), disable autolinking and use explicit \ref commands instead. This is also updating some of the obsolete notes to point to correct file names, etc. changes in the source code tree. Signed-off-by: Jouni Malinen <j@w1.fi>
67 lines
3.1 KiB
Plaintext
67 lines
3.1 KiB
Plaintext
/**
|
|
\page hostapd_ctrl_iface_page hostapd control interface
|
|
|
|
hostapd implements a control interface that can be used by
|
|
external programs to control the operations of the hostapd
|
|
daemon and to get status information and event notifications. There is
|
|
a small C library, in a form of a single C file, \ref wpa_ctrl.c, that
|
|
provides helper functions to facilitate the use of the control
|
|
interface. External programs can link this file into them and then use
|
|
the library functions documented in \ref wpa_ctrl.h to interact with
|
|
wpa_supplicant. This library can also be used with C++. \ref hostapd_cli.c
|
|
is an example program using this library.
|
|
|
|
There are multiple mechanisms for inter-process communication. For
|
|
example, Linux version of hostapd is using UNIX domain sockets for the
|
|
control interface. The use of the functions defined in \ref wpa_ctrl.h can
|
|
be used to hide the details of the used IPC from external programs.
|
|
|
|
|
|
\section using_ctrl_iface Using the control interface
|
|
|
|
External programs, e.g., a GUI or a configuration utility, that need to
|
|
communicate with hostapd should link in \ref wpa_ctrl.c. This
|
|
allows them to use helper functions to open connection to the control
|
|
interface with \ref wpa_ctrl_open() and to send commands with
|
|
\ref wpa_ctrl_request().
|
|
|
|
hostapd uses the control interface for two types of communication:
|
|
commands and unsolicited event messages. Commands are a pair of
|
|
messages, a request from the external program and a response from
|
|
hostapd. These can be executed using \ref wpa_ctrl_request().
|
|
Unsolicited event messages are sent by hostapd to the control
|
|
interface connection without specific request from the external program
|
|
for receiving each message. However, the external program needs to
|
|
attach to the control interface with \ref wpa_ctrl_attach() to receive these
|
|
unsolicited messages.
|
|
|
|
If the control interface connection is used both for commands and
|
|
unsolicited event messages, there is potential for receiving an
|
|
unsolicited message between the command request and response.
|
|
\ref wpa_ctrl_request() caller will need to supply a callback, msg_cb,
|
|
for processing these messages. Often it is easier to open two
|
|
control interface connections by calling \ref wpa_ctrl_open() twice and
|
|
then use one of the connections for commands and the other one for
|
|
unsolicited messages. This way command request/response pairs will
|
|
not be broken by unsolicited messages. \ref wpa_cli.c is an example of how
|
|
to use only one connection for both purposes and wpa_gui demonstrates
|
|
how to use two separate connections.
|
|
|
|
Once the control interface connection is not needed anymore, it should
|
|
be closed by calling \ref wpa_ctrl_close(). If the connection was used for
|
|
unsolicited event messages, it should be first detached by calling
|
|
\ref wpa_ctrl_detach().
|
|
|
|
|
|
\section ctrl_iface_cmds Control interface commands
|
|
|
|
Following commands can be used with \ref wpa_ctrl_request():
|
|
|
|
\subsection ctrl_iface_PING PING
|
|
|
|
This command can be used to test whether hostapd is replying
|
|
to the control interface commands. The expected reply is \c PONG if the
|
|
connection is open and hostapd is processing commands.
|
|
|
|
*/
|