diff options
author | Dmitry Shmidt <dimitrysh@google.com> | 2012-08-24 11:14:44 -0700 |
---|---|---|
committer | Dmitry Shmidt <dimitrysh@google.com> | 2012-08-24 11:14:44 -0700 |
commit | f48e4f901d4b39a4e03210fe0154cdb11112e22e (patch) | |
tree | c0e2f01e5ae4d0104523c4919a05c9fa50300605 | |
parent | 5d03c02c2828db5e40f92774dc78903d69677b20 (diff) | |
download | external_wpa_supplicant_8-f48e4f901d4b39a4e03210fe0154cdb11112e22e.zip external_wpa_supplicant_8-f48e4f901d4b39a4e03210fe0154cdb11112e22e.tar.gz external_wpa_supplicant_8-f48e4f901d4b39a4e03210fe0154cdb11112e22e.tar.bz2 |
wpa_supplicant: Add bss_flush command to invalidate scan results
Change-Id: I1a6ebc4fe53e16909ac44e2d04a6b651993dae91
Signed-off-by: Dmitry Shmidt <dimitrysh@google.com>
-rw-r--r-- | wpa_supplicant/ctrl_iface.c | 16 | ||||
-rw-r--r-- | wpa_supplicant/wpa_cli.c | 20 |
2 files changed, 36 insertions, 0 deletions
diff --git a/wpa_supplicant/ctrl_iface.c b/wpa_supplicant/ctrl_iface.c index c703002..041685a 100644 --- a/wpa_supplicant/ctrl_iface.c +++ b/wpa_supplicant/ctrl_iface.c @@ -2904,6 +2904,19 @@ static int wpa_supplicant_ctrl_iface_bss_expire_count( } +static int wpa_supplicant_ctrl_iface_bss_flush( + struct wpa_supplicant *wpa_s, char *cmd) +{ + int flush_age = atoi(cmd); + + if (flush_age == 0) + wpa_bss_flush(wpa_s); + else + wpa_bss_flush_by_age(wpa_s, flush_age); + return 0; +} + + static void wpa_supplicant_ctrl_iface_drop_sa(struct wpa_supplicant *wpa_s) { wpa_printf(MSG_DEBUG, "Dropping SA without deauthentication"); @@ -4611,6 +4624,9 @@ char * wpa_supplicant_ctrl_iface_process(struct wpa_supplicant *wpa_s, if (wpa_supplicant_ctrl_iface_bss_expire_count(wpa_s, buf + 17)) reply_len = -1; + } else if (os_strncmp(buf, "BSS_FLUSH ", 10) == 0) { + if (wpa_supplicant_ctrl_iface_bss_flush(wpa_s, buf + 10)) + reply_len = -1; #ifdef CONFIG_TDLS } else if (os_strncmp(buf, "TDLS_DISCOVER ", 14) == 0) { if (wpa_supplicant_ctrl_iface_tdls_discover(wpa_s, buf + 14)) diff --git a/wpa_supplicant/wpa_cli.c b/wpa_supplicant/wpa_cli.c index a8e8488..bed13dd 100644 --- a/wpa_supplicant/wpa_cli.c +++ b/wpa_supplicant/wpa_cli.c @@ -714,6 +714,23 @@ static int wpa_cli_cmd_bss_expire_count(struct wpa_ctrl *ctrl, int argc, } +static int wpa_cli_cmd_bss_flush(struct wpa_ctrl *ctrl, int argc, char *argv[]) +{ + char cmd[256]; + int res; + + if (argc < 1) + res = os_snprintf(cmd, sizeof(cmd), "BSS_FLUSH 0"); + else + res = os_snprintf(cmd, sizeof(cmd), "BSS_FLUSH %s", argv[0]); + if (res < 0 || (size_t) res >= sizeof(cmd) - 1) { + printf("Too long BSS_FLUSH command.\n"); + return -1; + } + return wpa_ctrl_command(ctrl, cmd); +} + + static int wpa_cli_cmd_stkstart(struct wpa_ctrl *ctrl, int argc, char *argv[]) { @@ -3179,6 +3196,9 @@ static struct wpa_cli_cmd wpa_cli_commands[] = { { "bss_expire_count", wpa_cli_cmd_bss_expire_count, cli_cmd_flag_none, "<value> = set BSS expiration scan count parameter" }, + { "bss_flush", wpa_cli_cmd_bss_flush, + cli_cmd_flag_none, + "<value> = set BSS flush age (0 by default)" }, { "stkstart", wpa_cli_cmd_stkstart, cli_cmd_flag_none, "<addr> = request STK negotiation with <addr>" }, |