aboutsummaryrefslogtreecommitdiffstats
path: root/hostapd/ctrl_iface.c
diff options
context:
space:
mode:
authorDmitry Shmidt <dimitrysh@google.com>2013-11-04 18:44:24 -0800
committerDmitry Shmidt <dimitrysh@google.com>2013-11-04 18:44:24 -0800
commitcce06667447b5aec83452adb0c15100ada531095 (patch)
treedb6df7284213a7942b7f3adf46afd525f4b2166f /hostapd/ctrl_iface.c
parente6c91e4c8125a2e7b31d176a52644aa9cab146f1 (diff)
downloadandroid_external_wpa_supplicant_8-cce06667447b5aec83452adb0c15100ada531095.tar.gz
android_external_wpa_supplicant_8-cce06667447b5aec83452adb0c15100ada531095.tar.bz2
android_external_wpa_supplicant_8-cce06667447b5aec83452adb0c15100ada531095.zip
Cumulative patch from commit d4f1a347ceca31fd9cf14070fd000235d5f4e9c1
d4f1a34 Allow AP mode configuration with VHT enabled on 2.4 GHz bb337dd DFS: Do not use cf1 to override freq for 20 MHz channels 0dfd2c6 Document AP mode startup functions fee947b hostapd: Use correct wpa_printf verbosity level for message 2fe210c hostapd: Fix multi-BSS configuration file parsing regression e4ba031 hostapd: Use start_ctrl_iface() from hostapd_add_iface() bf7f09b Fix AP mode QoS Map configuration to be per-BSS dc036d9 DFS: Convert hostapd_data use to hostapd_iface 2db938e hostapd: Fill in phyname automatically 5ae6449 hostapd: Add ctrl_iface STATUS command afadaff Optimize 40 MHz HT co-ex scan on AP 7d6d737 hostapd: Add AP-ENABLED/DISABLED ctrl_iface events e1c5faf hostapd: Track interface state f0793bf hostapd: Wait for channel list update after country code change ae134e1 hostapd: Add ctrl_iface events for ACS ad08e14 hostapd: Move ctrl_iface initialization to happen earlier c20cb02 hostapd: Remove hostapd_interface_init2() 4a5deb9 hostapd: Simplify interface initialization 186c905 DFS: Add control interface events for various DFS events ddf5517 hostapd: Add control interface test commands for radar detection 884f1a3 nl80211: Verify radar event attributes exist before using them 71cdf6b hostapd: Fix ENABLE failure to not remove interface 18ca733 SAE: Fix group selection 65015b2 Replace unnecessary UTF-8 characters with ASCII versions 61323e7 Convert perror/printf calls to wpa_printf 3f134b4 hostapd: Accept RELOG from global control interface b253e6f hostapd: Use wpa_printf() for hostapd_logger() to stdout c092d83 P2P: Clear pending group formation data on group removal 9100b66 P2P: Debug print reason for specific SSID for scan 2aec4f3 Allow add-BSS operation to re-use existing netdev 5592065 hostapd: Allow a single BSS to be removed from an interface 2e2fff3 hostapd: Allow a single BSS to be added to an interface a1fb569 hostapd: Make hostapd_interface_init_bss() available externally 66936c6 hostapd: Make hostapd_init() available externally 390e489 hostapd: Allow the first BSS in a multi-BSS setup to be removed 834ee56 nl80211: Make wpa_driver_nl80211_data::first_bss pointer 748c0ac nl80211: Fix monitor interface reference counting 08e55eb nl80211: Add a debug print for DEL_BEACON 33b0b33 hostapd: Fix error path in hostapd_add_iface() 770ecdf ACS: Do not get stuck while failing to do a subsequent scan 813d4ba DFS: Add support for multi-BSS 954e71d DFS: Reset cac_started properly 6a398dd DFS: Sanitize channel availability checks 32595da DFS: Fix HT40/VHT calculation 0648c3b hostapd: Add -T Linux tracing option 392e68e Set GTK rekey offload information after initial group key handshake bbc706a nl80211: Add debug prints for NL80211_CMD_SET_STATION 731ca63 Update regulatory change to all virtual interface for the phy 6f2db2f hostapd: Validate configuration parameters on RELOAD command eff0fd1 hostapd: Move generic configuration functions into src/ap 5afaa06 hostapd: Allow per-BSS (vif) configuration files ebd79f0 hostapd: Make hostapd_config::bss array of pointers a781e21 hostapd: Force PSK to be derived again on BSS reload 9f104b0 hostapd: Reuse hostapd_clear_old() for RELOAD command Change-Id: I7fbb26cbd4a2960af66a4373c0e6bbe5390a4940 Signed-off-by: Dmitry Shmidt <dimitrysh@google.com>
Diffstat (limited to 'hostapd/ctrl_iface.c')
-rw-r--r--hostapd/ctrl_iface.c75
1 files changed, 74 insertions, 1 deletions
diff --git a/hostapd/ctrl_iface.c b/hostapd/ctrl_iface.c
index 0d899925..cea96eb6 100644
--- a/hostapd/ctrl_iface.c
+++ b/hostapd/ctrl_iface.c
@@ -1,6 +1,6 @@
/*
* hostapd / UNIX domain socket -based control interface
- * Copyright (c) 2004-2012, Jouni Malinen <j@w1.fi>
+ * Copyright (c) 2004-2013, Jouni Malinen <j@w1.fi>
*
* This software may be distributed under the terms of the BSD license.
* See README for more details.
@@ -1050,6 +1050,67 @@ static int hostapd_ctrl_iface_disable(struct hostapd_iface *iface)
}
+#ifdef CONFIG_TESTING_OPTIONS
+static int hostapd_ctrl_iface_radar(struct hostapd_data *hapd, char *cmd)
+{
+ union wpa_event_data data;
+ char *pos, *param;
+ enum wpa_event_type event;
+
+ wpa_printf(MSG_DEBUG, "RADAR TEST: %s", cmd);
+
+ os_memset(&data, 0, sizeof(data));
+
+ param = os_strchr(cmd, ' ');
+ if (param == NULL)
+ return -1;
+ *param++ = '\0';
+
+ if (os_strcmp(cmd, "DETECTED") == 0)
+ event = EVENT_DFS_RADAR_DETECTED;
+ else if (os_strcmp(cmd, "CAC-FINISHED") == 0)
+ event = EVENT_DFS_CAC_FINISHED;
+ else if (os_strcmp(cmd, "CAC-ABORTED") == 0)
+ event = EVENT_DFS_CAC_ABORTED;
+ else if (os_strcmp(cmd, "NOP-FINISHED") == 0)
+ event = EVENT_DFS_NOP_FINISHED;
+ else {
+ wpa_printf(MSG_DEBUG, "Unsupported RADAR test command: %s",
+ cmd);
+ return -1;
+ }
+
+ pos = os_strstr(param, "freq=");
+ if (pos)
+ data.dfs_event.freq = atoi(pos + 5);
+
+ pos = os_strstr(param, "ht_enabled=1");
+ if (pos)
+ data.dfs_event.ht_enabled = 1;
+
+ pos = os_strstr(param, "chan_offset=");
+ if (pos)
+ data.dfs_event.chan_offset = atoi(pos + 12);
+
+ pos = os_strstr(param, "chan_width=");
+ if (pos)
+ data.dfs_event.chan_width = atoi(pos + 11);
+
+ pos = os_strstr(param, "cf1=");
+ if (pos)
+ data.dfs_event.cf1 = atoi(pos + 4);
+
+ pos = os_strstr(param, "cf2=");
+ if (pos)
+ data.dfs_event.cf2 = atoi(pos + 4);
+
+ wpa_supplicant_event(hapd, event, &data);
+
+ return 0;
+}
+#endif /* CONFIG_TESTING_OPTIONS */
+
+
static void hostapd_ctrl_iface_receive(int sock, void *eloop_ctx,
void *sock_ctx)
{
@@ -1090,6 +1151,9 @@ static void hostapd_ctrl_iface_receive(int sock, void *eloop_ctx,
} else if (os_strncmp(buf, "RELOG", 5) == 0) {
if (wpa_debug_reopen_file() < 0)
reply_len = -1;
+ } else if (os_strcmp(buf, "STATUS") == 0) {
+ reply_len = hostapd_ctrl_iface_status(hapd, reply,
+ reply_size);
} else if (os_strcmp(buf, "MIB") == 0) {
reply_len = ieee802_11_get_mib(hapd, reply, reply_size);
if (reply_len >= 0) {
@@ -1228,6 +1292,11 @@ static void hostapd_ctrl_iface_receive(int sock, void *eloop_ctx,
} else if (os_strncmp(buf, "DISABLE", 7) == 0) {
if (hostapd_ctrl_iface_disable(hapd->iface))
reply_len = -1;
+#ifdef CONFIG_TESTING_OPTIONS
+ } else if (os_strncmp(buf, "RADAR ", 6) == 0) {
+ if (hostapd_ctrl_iface_radar(hapd, buf + 6))
+ reply_len = -1;
+#endif /* CONFIG_TESTING_OPTIONS */
} else {
os_memcpy(reply, "UNKNOWN COMMAND\n", 16);
reply_len = 16;
@@ -1494,6 +1563,7 @@ static void hostapd_global_ctrl_iface_receive(int sock, void *eloop_ctx,
return;
}
buf[res] = '\0';
+ wpa_printf(MSG_DEBUG, "Global ctrl_iface command: %s", buf);
os_memcpy(reply, "OK\n", 3);
reply_len = 3;
@@ -1501,6 +1571,9 @@ static void hostapd_global_ctrl_iface_receive(int sock, void *eloop_ctx,
if (os_strcmp(buf, "PING") == 0) {
os_memcpy(reply, "PONG\n", 5);
reply_len = 5;
+ } else if (os_strncmp(buf, "RELOG", 5) == 0) {
+ if (wpa_debug_reopen_file() < 0)
+ reply_len = -1;
} else if (os_strncmp(buf, "ADD ", 4) == 0) {
if (hostapd_ctrl_iface_add(interfaces, buf + 4) < 0)
reply_len = -1;