~ubuntu-branches/ubuntu/lucid/wpasupplicant/lucid-updates

« back to all changes in this revision

Viewing changes to wpa_ctrl.h

  • Committer: Bazaar Package Importer
  • Author(s): Reinhard Tartler
  • Date: 2008-12-02 20:52:16 UTC
  • mfrom: (2.1.30 intrepid)
  • Revision ID: james.westby@ubuntu.com-20081202205216-72fqozu84sdt89a8
Tags: 0.6.4-3
Bugfix: "Missing -d in testing for a directory in init script". 
Thanks to Braun Gábor <braung@renyi.hu> for reporting and the patch.
(Closes: #506328)

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
/*
2
 
 * wpa_supplicant/hostapd control interface library
3
 
 * Copyright (c) 2004-2006, Jouni Malinen <jkmaline@cc.hut.fi>
4
 
 *
5
 
 * This program is free software; you can redistribute it and/or modify
6
 
 * it under the terms of the GNU General Public License version 2 as
7
 
 * published by the Free Software Foundation.
8
 
 *
9
 
 * Alternatively, this software may be distributed under the terms of BSD
10
 
 * license.
11
 
 *
12
 
 * See README and COPYING for more details.
13
 
 */
14
 
 
15
 
#ifndef WPA_CTRL_H
16
 
#define WPA_CTRL_H
17
 
 
18
 
#ifdef  __cplusplus
19
 
extern "C" {
20
 
#endif
21
 
 
22
 
/* wpa_supplicant control interface - fixed message prefixes */
23
 
 
24
 
/** Interactive request for identity/password/pin */
25
 
#define WPA_CTRL_REQ "CTRL-REQ-"
26
 
 
27
 
/** Response to identity/password/pin request */
28
 
#define WPA_CTRL_RSP "CTRL-RSP-"
29
 
 
30
 
/* Event messages with fixed prefix */
31
 
/** Authentication completed successfully and data connection enabled */
32
 
#define WPA_EVENT_CONNECTED "CTRL-EVENT-CONNECTED "
33
 
/** Disconnected, data connection is not available */
34
 
#define WPA_EVENT_DISCONNECTED "CTRL-EVENT-DISCONNECTED "
35
 
/** wpa_supplicant is exiting */
36
 
#define WPA_EVENT_TERMINATING "CTRL-EVENT-TERMINATING "
37
 
/** Password change was completed successfully */
38
 
#define WPA_EVENT_PASSWORD_CHANGED "CTRL-EVENT-PASSWORD-CHANGED "
39
 
/** EAP-Request/Notification received */
40
 
#define WPA_EVENT_EAP_NOTIFICATION "CTRL-EVENT-EAP-NOTIFICATION "
41
 
/** EAP authentication started (EAP-Request/Identity received) */
42
 
#define WPA_EVENT_EAP_STARTED "CTRL-EVENT-EAP-STARTED "
43
 
/** EAP method selected */
44
 
#define WPA_EVENT_EAP_METHOD "CTRL-EVENT-EAP-METHOD "
45
 
/** EAP authentication completed successfully */
46
 
#define WPA_EVENT_EAP_SUCCESS "CTRL-EVENT-EAP-SUCCESS "
47
 
/** EAP authentication failed (EAP-Failure received) */
48
 
#define WPA_EVENT_EAP_FAILURE "CTRL-EVENT-EAP-FAILURE "
49
 
 
50
 
 
51
 
/* wpa_supplicant/hostapd control interface access */
52
 
 
53
 
/**
54
 
 * wpa_ctrl_open - Open a control interface to wpa_supplicant/hostapd
55
 
 * @ctrl_path: Path for UNIX domain sockets; ignored if UDP sockets are used.
56
 
 * Returns: Pointer to abstract control interface data or %NULL on failure
57
 
 *
58
 
 * This function is used to open a control interface to wpa_supplicant/hostapd.
59
 
 * ctrl_path is usually /var/run/wpa_supplicant or /var/run/hostapd. This path
60
 
 * is configured in wpa_supplicant/hostapd and other programs using the control
61
 
 * interface need to use matching path configuration.
62
 
 */
63
 
struct wpa_ctrl * wpa_ctrl_open(const char *ctrl_path);
64
 
 
65
 
 
66
 
/**
67
 
 * wpa_ctrl_close - Close a control interface to wpa_supplicant/hostapd
68
 
 * @ctrl: Control interface data from wpa_ctrl_open()
69
 
 *
70
 
 * This function is used to close a control interface.
71
 
 */
72
 
void wpa_ctrl_close(struct wpa_ctrl *ctrl);
73
 
 
74
 
 
75
 
/**
76
 
 * wpa_ctrl_request - Send a command to wpa_supplicant/hostapd
77
 
 * @ctrl: Control interface data from wpa_ctrl_open()
78
 
 * @cmd: Command; usually, ASCII text, e.g., "PING"
79
 
 * @cmd_len: Length of the cmd in bytes
80
 
 * @reply: Buffer for the response
81
 
 * @reply_len: Reply buffer length
82
 
 * @msg_cb: Callback function for unsolicited messages or %NULL if not used
83
 
 * Returns: 0 on success, -1 on error (send or receive failed), -2 on timeout
84
 
 *
85
 
 * This function is used to send commands to wpa_supplicant/hostapd. Received
86
 
 * response will be written to reply and reply_len is set to the actual length
87
 
 * of the reply. This function will block for up to two seconds while waiting
88
 
 * for the reply. If unsolicited messages are received, the blocking time may
89
 
 * be longer.
90
 
 *
91
 
 * msg_cb can be used to register a callback function that will be called for
92
 
 * unsolicited messages received while waiting for the command response. These
93
 
 * messages may be received if wpa_ctrl_request() is called at the same time as
94
 
 * wpa_supplicant/hostapd is sending such a message. This can happen only if
95
 
 * the program has used wpa_ctrl_attach() to register itself as a monitor for
96
 
 * event messages. Alternatively to msg_cb, programs can register two control
97
 
 * interface connections and use one of them for commands and the other one for
98
 
 * receiving event messages, in other words, call wpa_ctrl_attach() only for
99
 
 * the control interface connection that will be used for event messages.
100
 
 */
101
 
int wpa_ctrl_request(struct wpa_ctrl *ctrl, const char *cmd, size_t cmd_len,
102
 
                     char *reply, size_t *reply_len,
103
 
                     void (*msg_cb)(char *msg, size_t len));
104
 
 
105
 
 
106
 
/**
107
 
 * wpa_ctrl_attach - Register as an event monitor for the control interface
108
 
 * @ctrl: Control interface data from wpa_ctrl_open()
109
 
 * Returns: 0 on success, -1 on failure, -2 on timeout
110
 
 *
111
 
 * This function registers the control interface connection as a monitor for
112
 
 * wpa_supplicant/hostapd events. After a success wpa_ctrl_attach() call, the
113
 
 * control interface connection starts receiving event messages that can be
114
 
 * read with wpa_ctrl_recv().
115
 
 */
116
 
int wpa_ctrl_attach(struct wpa_ctrl *ctrl);
117
 
 
118
 
 
119
 
/**
120
 
 * wpa_ctrl_detach - Unregister event monitor from the control interface
121
 
 * @ctrl: Control interface data from wpa_ctrl_open()
122
 
 * Returns: 0 on success, -1 on failure, -2 on timeout
123
 
 *
124
 
 * This function unregisters the control interface connection as a monitor for
125
 
 * wpa_supplicant/hostapd events, i.e., cancels the registration done with
126
 
 * wpa_ctrl_attach().
127
 
 */
128
 
int wpa_ctrl_detach(struct wpa_ctrl *ctrl);
129
 
 
130
 
 
131
 
/**
132
 
 * wpa_ctrl_recv - Receive a pending control interface message
133
 
 * @ctrl: Control interface data from wpa_ctrl_open()
134
 
 * @reply: Buffer for the message data
135
 
 * @reply_len: Length of the reply buffer
136
 
 * Returns: 0 on success, -1 on failure
137
 
 *
138
 
 * This function will receive a pending control interface message. This
139
 
 * function will block if no messages are available. The received response will
140
 
 * be written to reply and reply_len is set to the actual length of the reply.
141
 
 * wpa_ctrl_recv() is only used for event messages, i.e., wpa_ctrl_attach()
142
 
 * must have been used to register the control interface as an event monitor.
143
 
 */
144
 
int wpa_ctrl_recv(struct wpa_ctrl *ctrl, char *reply, size_t *reply_len);
145
 
 
146
 
 
147
 
/**
148
 
 * wpa_ctrl_pending - Check whether there are pending event messages
149
 
 * @ctrl: Control interface data from wpa_ctrl_open()
150
 
 * Returns: 1 if there are pending messages, 0 if no, or -1 on error
151
 
 *
152
 
 * This function will check whether there are any pending control interface
153
 
 * message available to be received with wpa_ctrl_recv(). wpa_ctrl_pending() is
154
 
 * only used for event messages, i.e., wpa_ctrl_attach() must have been used to
155
 
 * register the control interface as an event monitor.
156
 
 */
157
 
int wpa_ctrl_pending(struct wpa_ctrl *ctrl);
158
 
 
159
 
 
160
 
/**
161
 
 * wpa_ctrl_get_fd - Get file descriptor used by the control interface
162
 
 * @ctrl: Control interface data from wpa_ctrl_open()
163
 
 * Returns: File descriptor used for the connection
164
 
 *
165
 
 * This function can be used to get the file descriptor that is used for the
166
 
 * control interface connection. The returned value can be used, e.g., with
167
 
 * select() while waiting for multiple events.
168
 
 *
169
 
 * The returned file descriptor must not be used directly for sending or
170
 
 * receiving packets; instead, the library functions wpa_ctrl_request() and
171
 
 * wpa_ctrl_recv() must be used for this.
172
 
 */
173
 
int wpa_ctrl_get_fd(struct wpa_ctrl *ctrl);
174
 
 
175
 
#ifdef CONFIG_CTRL_IFACE_UDP
176
 
#define WPA_CTRL_IFACE_PORT 9877
177
 
#define WPA_GLOBAL_CTRL_IFACE_PORT 9878
178
 
#endif /* CONFIG_CTRL_IFACE_UDP */
179
 
 
180
 
 
181
 
#ifdef  __cplusplus
182
 
}
183
 
#endif
184
 
 
185
 
#endif /* WPA_CTRL_H */