From 70755e65872eeaea3ac80e4f69597984f295f1fa Mon Sep 17 00:00:00 2001 From: Ben Greear Date: Mon, 18 Mar 2019 13:46:34 -0700 Subject: [PATCH] Allow removing neighbor DB entries by BSSID alone Let users delete a neighbor by BSSID alone if they prefer. The underlying code already properly handled a NULL SSID, so just relax the control interface command calling restrictions. Signed-off-by: Ben Greear --- hostapd/ctrl_iface.c | 14 +++++++++----- hostapd/hostapd_cli.c | 18 ++---------------- 2 files changed, 11 insertions(+), 21 deletions(-) diff --git a/hostapd/ctrl_iface.c b/hostapd/ctrl_iface.c index 8692284d1..1972d3844 100644 --- a/hostapd/ctrl_iface.c +++ b/hostapd/ctrl_iface.c @@ -2813,6 +2813,7 @@ static int hostapd_ctrl_iface_remove_neighbor(struct hostapd_data *hapd, char *buf) { struct wpa_ssid_value ssid; + struct wpa_ssid_value *ssidp = NULL; u8 bssid[ETH_ALEN]; char *tmp; @@ -2822,13 +2823,16 @@ static int hostapd_ctrl_iface_remove_neighbor(struct hostapd_data *hapd, } tmp = os_strstr(buf, "ssid="); - if (!tmp || ssid_parse(tmp + 5, &ssid)) { - wpa_printf(MSG_ERROR, - "CTRL: REMOVE_NEIGHBORr: Bad or missing SSID"); - return -1; + if (tmp) { + ssidp = &ssid; + if (ssid_parse(tmp + 5, &ssid)) { + wpa_printf(MSG_ERROR, + "CTRL: REMOVE_NEIGHBOR: Bad SSID"); + return -1; + } } - return hostapd_neighbor_remove(hapd, bssid, &ssid); + return hostapd_neighbor_remove(hapd, bssid, ssidp); } diff --git a/hostapd/hostapd_cli.c b/hostapd/hostapd_cli.c index 6819a24bf..24d8778a1 100644 --- a/hostapd/hostapd_cli.c +++ b/hostapd/hostapd_cli.c @@ -1315,21 +1315,7 @@ static int hostapd_cli_cmd_set_neighbor(struct wpa_ctrl *ctrl, int argc, static int hostapd_cli_cmd_remove_neighbor(struct wpa_ctrl *ctrl, int argc, char *argv[]) { - char cmd[400]; - int res; - - if (argc != 2) { - printf("Invalid remove_neighbor command: needs 2 arguments\n"); - return -1; - } - - res = os_snprintf(cmd, sizeof(cmd), "REMOVE_NEIGHBOR %s %s", - argv[0], argv[1]); - if (os_snprintf_error(sizeof(cmd), res)) { - printf("Too long REMOVE_NEIGHBOR command.\n"); - return -1; - } - return wpa_ctrl_command(ctrl, cmd); + return hostapd_cli_cmd(ctrl, "REMOVE_NEIGHBOR", 1, argc, argv); } @@ -1637,7 +1623,7 @@ static const struct hostapd_cli_cmd hostapd_cli_commands[] = { " [lci=] [civic=] [stat]\n" " = add AP to neighbor database" }, { "remove_neighbor", hostapd_cli_cmd_remove_neighbor, NULL, - " = remove AP from neighbor database" }, + " [ssid=] = remove AP from neighbor database" }, { "req_lci", hostapd_cli_cmd_req_lci, hostapd_complete_stations, " = send LCI request to a station"}, { "req_range", hostapd_cli_cmd_req_range, NULL,