| --- a/src/ap/ap_config.h |
| +++ b/src/ap/ap_config.h |
| @@ -121,6 +121,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 |
| @@ -475,6 +475,9 @@ void vlan_newlink(const char *ifname, st |
| if (!vlan) |
| return; |
| |
| + if (hapd->conf->ssid.vlan_no_bridge) |
| + goto out; |
| + |
| vlan->configured = 1; |
| |
| notempty = vlan->vlan_desc.notempty; |
| @@ -506,6 +509,7 @@ void vlan_newlink(const char *ifname, st |
| ifname, br_name, tagged[i], hapd); |
| } |
| |
| +out: |
| ifconfig_up(ifname); |
| } |
| |
| --- a/hostapd/config_file.c |
| +++ b/hostapd/config_file.c |
| @@ -3351,6 +3351,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) { |