[openwrt/openwrt] hostapd: ubus: make (B)SSID optional for neighbor report
LEDE Commits
lede-commits at lists.infradead.org
Tue Sep 22 11:41:42 EDT 2020
blocktrron pushed a commit to openwrt/openwrt.git, branch master:
https://git.openwrt.org/c5eea362f30370444ff7aea3e8ce7b60b2e4ce50
commit c5eea362f30370444ff7aea3e8ce7b60b2e4ce50
Author: David Bauer <mail at david-bauer.net>
AuthorDate: Sun Sep 20 23:49:35 2020 +0200
hostapd: ubus: make (B)SSID optional for neighbor report
Make the BSSID and SSID fields optional when configuring a neighbor
report into hostapd.
Both options can now be an empty string. For the BSSID, the first 6 byte
are copied from the neighbor report. For the SSID, the SSID for the
affected hostapd BSS is used.
Signed-off-by: David Bauer <mail at david-bauer.net>
---
package/network/services/hostapd/Makefile | 2 +-
package/network/services/hostapd/src/src/ap/ubus.c | 33 ++++++++++++++++------
2 files changed, 25 insertions(+), 10 deletions(-)
diff --git a/package/network/services/hostapd/Makefile b/package/network/services/hostapd/Makefile
index 372539bd06..6966ebdb89 100644
--- a/package/network/services/hostapd/Makefile
+++ b/package/network/services/hostapd/Makefile
@@ -7,7 +7,7 @@
include $(TOPDIR)/rules.mk
PKG_NAME:=hostapd
-PKG_RELEASE:=10
+PKG_RELEASE:=11
PKG_SOURCE_URL:=http://w1.fi/hostap.git
PKG_SOURCE_PROTO:=git
diff --git a/package/network/services/hostapd/src/src/ap/ubus.c b/package/network/services/hostapd/src/src/ap/ubus.c
index 9e407538f7..d816f2c030 100644
--- a/package/network/services/hostapd/src/src/ap/ubus.c
+++ b/package/network/services/hostapd/src/src/ap/ubus.c
@@ -863,25 +863,40 @@ hostapd_rrm_nr_set(struct ubus_context *ctx, struct ubus_object *obj,
struct wpa_ssid_value ssid;
struct wpabuf *data;
u8 bssid[ETH_ALEN];
- char *s;
+ char *s, *nr_s;
blobmsg_parse_array(nr_e_policy, ARRAY_SIZE(nr_e_policy), tb, blobmsg_data(cur), blobmsg_data_len(cur));
if (!tb[0] || !tb[1] || !tb[2])
goto invalid;
+ /* Neighbor Report binary */
+ nr_s = blobmsg_get_string(tb[2]);
+ data = wpabuf_parse_bin(nr_s);
+ if (!data)
+ goto invalid;
+
+ /* BSSID */
s = blobmsg_get_string(tb[0]);
- if (hwaddr_aton(s, bssid))
+ if (strlen(s) == 0) {
+ /* Copy BSSID from neighbor report */
+ if (hwaddr_compact_aton(nr_s, bssid))
+ goto invalid;
+ } else if (hwaddr_aton(s, bssid)) {
goto invalid;
+ }
+ /* SSID */
s = blobmsg_get_string(tb[1]);
- ssid.ssid_len = strlen(s);
- if (ssid.ssid_len > sizeof(ssid.ssid))
- goto invalid;
+ if (strlen(s) == 0) {
+ /* Copy SSID from hostapd BSS conf */
+ memcpy(&ssid, &hapd->conf->ssid, sizeof(ssid));
+ } else {
+ ssid.ssid_len = strlen(s);
+ if (ssid.ssid_len > sizeof(ssid.ssid))
+ goto invalid;
- memcpy(&ssid, s, ssid.ssid_len);
- data = wpabuf_parse_bin(blobmsg_get_string(tb[2]));
- if (!data)
- goto invalid;
+ memcpy(&ssid, s, ssid.ssid_len);
+ }
hostapd_neighbor_set(hapd, bssid, &ssid, data, NULL, NULL, 0);
wpabuf_free(data);
More information about the lede-commits
mailing list