diff options
author | Felix Fietkau <nbd@nbd.name> | 2021-05-18 12:50:17 +0200 |
---|---|---|
committer | Felix Fietkau <nbd@nbd.name> | 2021-11-23 18:30:04 +0100 |
commit | 62fa301cce9ede47e4e03433a0770e32bfb42a9d (patch) | |
tree | a8cf6496f8493b35c3a20af25569d01755ca0440 | |
parent | 2982f1ec0a27a670665c9fe9a6030d06da696fc8 (diff) | |
download | upstream-62fa301cce9ede47e4e03433a0770e32bfb42a9d.tar.gz upstream-62fa301cce9ede47e4e03433a0770e32bfb42a9d.tar.bz2 upstream-62fa301cce9ede47e4e03433a0770e32bfb42a9d.zip |
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@nbd.name>
(cherry-picked from commit cf45caeff16256f9db777e0e652ec3a38cd476a4)
-rw-r--r-- | package/network/services/hostapd/files/hostapd.sh | 10 | ||||
-rw-r--r-- | package/network/services/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) { |