mirror of
https://github.com/Telecominfraproject/wlan-ap.git
synced 2025-10-29 09:32:34 +00:00
74 lines
2.4 KiB
Diff
74 lines
2.4 KiB
Diff
From ad5df33271d4ab97b49b9241208ab824f9dac850 Mon Sep 17 00:00:00 2001
|
|
From: John Crispin <john@phrozen.org>
|
|
Date: Tue, 14 Nov 2023 16:50:42 +0100
|
|
Subject: [PATCH 23/68] hostapd: add global_ban as a del_client option
|
|
|
|
Signed-off-by: John Crispin <john@phrozen.org>
|
|
---
|
|
.../services/hostapd/src/src/ap/ubus.c | 21 ++++++++++++++++---
|
|
1 file changed, 18 insertions(+), 3 deletions(-)
|
|
|
|
diff --git a/package/network/services/hostapd/src/src/ap/ubus.c b/package/network/services/hostapd/src/src/ap/ubus.c
|
|
index a65565bef6..114141e088 100644
|
|
--- a/package/network/services/hostapd/src/src/ap/ubus.c
|
|
+++ b/package/network/services/hostapd/src/src/ap/ubus.c
|
|
@@ -459,6 +459,7 @@ enum {
|
|
DEL_CLIENT_REASON,
|
|
DEL_CLIENT_DEAUTH,
|
|
DEL_CLIENT_BAN_TIME,
|
|
+ DEL_CLIENT_GLOBAL_BAN,
|
|
__DEL_CLIENT_MAX
|
|
};
|
|
|
|
@@ -467,6 +468,7 @@ static const struct blobmsg_policy del_policy[__DEL_CLIENT_MAX] = {
|
|
[DEL_CLIENT_REASON] = { "reason", BLOBMSG_TYPE_INT32 },
|
|
[DEL_CLIENT_DEAUTH] = { "deauth", BLOBMSG_TYPE_INT8 },
|
|
[DEL_CLIENT_BAN_TIME] = { "ban_time", BLOBMSG_TYPE_INT32 },
|
|
+ [DEL_CLIENT_GLOBAL_BAN] = { "global_ban", BLOBMSG_TYPE_INT8 },
|
|
};
|
|
|
|
static int
|
|
@@ -477,7 +479,7 @@ hostapd_bss_del_client(struct ubus_context *ctx, struct ubus_object *obj,
|
|
struct blob_attr *tb[__DEL_CLIENT_MAX];
|
|
struct hostapd_data *hapd = container_of(obj, struct hostapd_data, ubus.obj);
|
|
struct sta_info *sta;
|
|
- bool deauth = false;
|
|
+ bool deauth = false, global = false;
|
|
int reason;
|
|
u8 addr[ETH_ALEN];
|
|
|
|
@@ -495,6 +497,9 @@ hostapd_bss_del_client(struct ubus_context *ctx, struct ubus_object *obj,
|
|
if (tb[DEL_CLIENT_DEAUTH])
|
|
deauth = blobmsg_get_bool(tb[DEL_CLIENT_DEAUTH]);
|
|
|
|
+ if (tb[DEL_CLIENT_GLOBAL_BAN])
|
|
+ global = blobmsg_get_bool(tb[DEL_CLIENT_GLOBAL_BAN]);
|
|
+
|
|
sta = ap_get_sta(hapd, addr);
|
|
if (sta) {
|
|
if (deauth) {
|
|
@@ -506,8 +511,18 @@ hostapd_bss_del_client(struct ubus_context *ctx, struct ubus_object *obj,
|
|
}
|
|
}
|
|
|
|
- if (tb[DEL_CLIENT_BAN_TIME])
|
|
- hostapd_bss_ban_client(hapd, addr, blobmsg_get_u32(tb[DEL_CLIENT_BAN_TIME]));
|
|
+ if (tb[DEL_CLIENT_BAN_TIME]) {
|
|
+ int i;
|
|
+
|
|
+ for (i = 0; i < hapd->iface->num_bss; i++) {
|
|
+ struct hostapd_data *bss = hapd->iface->bss[i];
|
|
+
|
|
+ if (!global && bss != hapd)
|
|
+ continue;
|
|
+
|
|
+ hostapd_bss_ban_client(bss, addr, blobmsg_get_u32(tb[DEL_CLIENT_BAN_TIME]));
|
|
+ }
|
|
+ }
|
|
|
|
return 0;
|
|
}
|
|
--
|
|
2.34.1
|
|
|