[openwrt/openwrt] hostapd: add patch for disabling automatic bridging of vlan interfaces

LEDE Commits lede-commits at lists.infradead.org
Tue Nov 23 09:44:24 PST 2021


nbd pushed a commit to openwrt/openwrt.git, branch openwrt-21.02:
https://git.openwrt.org/62fa301cce9ede47e4e03433a0770e32bfb42a9d

commit 62fa301cce9ede47e4e03433a0770e32bfb42a9d
Author: Felix Fietkau <nbd at nbd.name>
AuthorDate: Tue May 18 12:50:17 2021 +0200

    hostapd: add patch for disabling automatic bridging of vlan interfaces
    
    netifd is responsible for handling that, except if the vlan bridge
    was provided by the config
    
    Signed-off-by: Felix Fietkau <nbd at nbd.name>
    (cherry-picked from commit cf45caeff16256f9db777e0e652ec3a38cd476a4)
---
 package/network/services/hostapd/files/hostapd.sh  | 10 +++++--
 .../hostapd/patches/710-vlan_no_bridge.patch       | 33 ++++++++++++++++++++++
 2 files changed, 40 insertions(+), 3 deletions(-)

diff --git a/package/network/services/hostapd/files/hostapd.sh b/package/network/services/hostapd/files/hostapd.sh
index aa72e09eba..ce44065093 100644
--- a/package/network/services/hostapd/files/hostapd.sh
+++ b/package/network/services/hostapd/files/hostapd.sh
@@ -269,7 +269,7 @@ hostapd_common_add_bss_config() {
 	config_add_array domain_match domain_match2 domain_suffix_match domain_suffix_match2
 	config_add_string ieee80211w_mgmt_cipher
 
-	config_add_int dynamic_vlan vlan_naming
+	config_add_int dynamic_vlan vlan_naming vlan_no_bridge
 	config_add_string vlan_tagged_interface vlan_bridge
 	config_add_string vlan_file
 
@@ -863,13 +863,17 @@ hostapd_set_bss_options() {
 	}
 
 	[ -n "$vlan_possible" -a -n "$dynamic_vlan" ] && {
-		json_get_vars vlan_naming vlan_tagged_interface vlan_bridge vlan_file
+		json_get_vars vlan_naming vlan_tagged_interface vlan_bridge vlan_file vlan_no_bridge
 		set_default vlan_naming 1
 		[ -z "$vlan_file" ] && set_default vlan_file /var/run/hostapd-$ifname.vlan
 		append bss_conf "dynamic_vlan=$dynamic_vlan" "$N"
 		append bss_conf "vlan_naming=$vlan_naming" "$N"
-		[ -n "$vlan_bridge" ] && \
+		if [ -n "$vlan_bridge" ]; then
 			append bss_conf "vlan_bridge=$vlan_bridge" "$N"
+		else
+			set_default vlan_no_bridge 1
+		fi
+		append bss_conf "vlan_no_bridge=$vlan_no_bridge" "$N"
 		[ -n "$vlan_tagged_interface" ] && \
 			append bss_conf "vlan_tagged_interface=$vlan_tagged_interface" "$N"
 		[ -n "$vlan_file" ] && {
diff --git a/package/network/services/hostapd/patches/710-vlan_no_bridge.patch b/package/network/services/hostapd/patches/710-vlan_no_bridge.patch
new file mode 100644
index 0000000000..7de4e2c1d4
--- /dev/null
+++ b/package/network/services/hostapd/patches/710-vlan_no_bridge.patch
@@ -0,0 +1,33 @@
+--- a/src/ap/ap_config.h
++++ b/src/ap/ap_config.h
+@@ -115,6 +115,7 @@ struct hostapd_ssid {
+ #define DYNAMIC_VLAN_OPTIONAL 1
+ #define DYNAMIC_VLAN_REQUIRED 2
+ 	int dynamic_vlan;
++	int vlan_no_bridge;
+ #define DYNAMIC_VLAN_NAMING_WITHOUT_DEVICE 0
+ #define DYNAMIC_VLAN_NAMING_WITH_DEVICE 1
+ #define DYNAMIC_VLAN_NAMING_END 2
+--- a/src/ap/vlan_full.c
++++ b/src/ap/vlan_full.c
+@@ -466,6 +466,9 @@ void vlan_newlink(const char *ifname, st
+ 
+ 	wpa_printf(MSG_DEBUG, "VLAN: vlan_newlink(%s)", ifname);
+ 
++	if (hapd->conf->ssid.vlan_no_bridge)
++		return;
++
+ 	for (vlan = hapd->conf->vlan; vlan; vlan = vlan->next) {
+ 		if (vlan->configured ||
+ 		    os_strcmp(ifname, vlan->ifname) != 0)
+--- a/hostapd/config_file.c
++++ b/hostapd/config_file.c
+@@ -3400,6 +3400,8 @@ static int hostapd_config_fill(struct ho
+ #ifndef CONFIG_NO_VLAN
+ 	} else if (os_strcmp(buf, "dynamic_vlan") == 0) {
+ 		bss->ssid.dynamic_vlan = atoi(pos);
++	} else if (os_strcmp(buf, "vlan_no_bridge") == 0) {
++		bss->ssid.vlan_no_bridge = atoi(pos);
+ 	} else if (os_strcmp(buf, "per_sta_vif") == 0) {
+ 		bss->ssid.per_sta_vif = atoi(pos);
+ 	} else if (os_strcmp(buf, "vlan_file") == 0) {



More information about the lede-commits mailing list