summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRany Hany2025-05-01 17:06:20 +0000
committerRobert Marko2025-12-08 16:26:07 +0000
commit7f05a9af9aebdc106a226cc41d20abfb53934a35 (patch)
tree6ad28dfd3367a75d87dadaf501f2d0675eff9729
parent5d7107ef637b0249ba1d4fee1e15e81e7f95332c (diff)
downloadopenwrt-7f05a9af9aebdc106a226cc41d20abfb53934a35.tar.gz
hostapd: allow ubus ban client address to be a broadcast address
This will allow del_client with ban_time on a broadcast address to also ban all clients temporarily. Signed-off-by: Rany Hany <rany_hany@riseup.net> Link: https://github.com/openwrt/openwrt/pull/18670 Signed-off-by: Robert Marko <robimarko@gmail.com>
-rw-r--r--package/network/services/hostapd/src/src/ap/ubus.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/package/network/services/hostapd/src/src/ap/ubus.c b/package/network/services/hostapd/src/src/ap/ubus.c
index 6c23078a69..c1d68c34ff 100644
--- a/package/network/services/hostapd/src/src/ap/ubus.c
+++ b/package/network/services/hostapd/src/src/ap/ubus.c
@@ -1849,6 +1849,7 @@ ubus_event_cb(struct ubus_notify_request *req, int idx, int ret)
int hostapd_ubus_handle_event(struct hostapd_data *hapd, struct hostapd_ubus_request *req)
{
struct ubus_banned_client *ban;
+ const u8 bcast[ETH_ALEN] = { 0xff, 0xff, 0xff, 0xff, 0xff, 0xff };
const char *types[HOSTAPD_UBUS_TYPE_MAX] = {
[HOSTAPD_UBUS_PROBE_REQ] = "probe",
[HOSTAPD_UBUS_AUTH_REQ] = "auth",
@@ -1867,6 +1868,10 @@ int hostapd_ubus_handle_event(struct hostapd_data *hapd, struct hostapd_ubus_req
if (ban)
return WLAN_STATUS_AP_UNABLE_TO_HANDLE_NEW_STA;
+ ban = avl_find_element(&hapd->ubus.banned, bcast, ban, avl);
+ if (ban)
+ return WLAN_STATUS_AP_UNABLE_TO_HANDLE_NEW_STA;
+
if (!hapd->ubus.obj.has_subscribers)
return WLAN_STATUS_SUCCESS;