Skip to content

Commit

Permalink
hostapd: add patch for disabling automatic bridging of vlan interfaces
Browse files Browse the repository at this point in the history
netifd is responsible for handling that, except if the vlan bridge
was provided by the config

Signed-off-by: Felix Fietkau <nbd@nbd.name>
  • Loading branch information
nbd168 committed May 18, 2021
1 parent 2d89d7c commit cf45cae
Show file tree
Hide file tree
Showing 2 changed files with 40 additions and 3 deletions.
10 changes: 7 additions & 3 deletions package/network/services/hostapd/files/hostapd.sh
Expand Up @@ -266,7 +266,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

Expand Down Expand Up @@ -856,13 +856,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" ] && {
Expand Down
33 changes: 33 additions & 0 deletions 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) {

0 comments on commit cf45cae

Please sign in to comment.