]> git.ipfire.org Git - thirdparty/hostap.git/commitdiff
vlan: Ignore multiple NEWLINK messages
authorMichael Braun <michael-dev@fami-braun.de>
Fri, 10 Apr 2015 12:49:49 +0000 (14:49 +0200)
committerJouni Malinen <j@w1.fi>
Mon, 13 Apr 2015 12:34:33 +0000 (15:34 +0300)
hostapd receives NEWLINK messages multiple times and thus does
configuration of the the vlan interface multiple times.

This is not required and leads to the following during cleanup in
test pmksa_cache_preauth_vlan_used:
 1. run-test.py does: brctl delif brvlan1 wlan3.1
 2. hostapd processes NEWLINK and does: brctl addif brvlan1 wlan3.1
 3. run-test.py does: brctl delbr brvlan1
    -> fails as wlan3.1 is still in the bridge

This patch fixes this by ignoring repeated NEWLINK messages.

Signed-off-by: Michael Braun <michael-dev@fami-braun.de>
src/ap/ap_config.h
src/ap/vlan_init.c

index b9d68321c4b35b2584e7f29b238546f358f005ff..00d52408a3444c4087bf3a570e95c7f0a41aeb9c 100644 (file)
@@ -114,6 +114,7 @@ struct hostapd_vlan {
        struct hostapd_vlan *next;
        int vlan_id; /* VLAN ID or -1 (VLAN_ID_WILDCARD) for wildcard entry */
        char ifname[IFNAMSIZ + 1];
+       int configured;
        int dynamic_vlan;
 #ifdef CONFIG_FULL_DYNAMIC_VLAN
 
index 2499bf3ad50efc048dd9a953da4715dd29abc732..94ff9e46ff4c4f17a6aa7ea34437600c3c9ca914 100644 (file)
@@ -485,7 +485,8 @@ static void vlan_newlink(char *ifname, struct hostapd_data *hapd)
        wpa_printf(MSG_DEBUG, "VLAN: vlan_newlink(%s)", ifname);
 
        while (vlan) {
-               if (os_strcmp(ifname, vlan->ifname) == 0) {
+               if (os_strcmp(ifname, vlan->ifname) == 0 && !vlan->configured) {
+                       vlan->configured = 1;
 
                        if (hapd->conf->vlan_bridge[0]) {
                                os_snprintf(br_name, sizeof(br_name), "%s%d",