mirror of
				https://github.com/Telecominfraproject/wlan-ap.git
				synced 2025-10-30 01:52:51 +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
 | |
| 
 | 
