From de31fb052c896d016e00b7bb36fa6dc7bac52f56 Mon Sep 17 00:00:00 2001 From: Michael Braun Date: Fri, 10 Apr 2015 14:49:49 +0200 Subject: [PATCH] vlan: Ignore multiple NEWLINK messages 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 --- src/ap/ap_config.h | 1 + src/ap/vlan_init.c | 3 ++- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/src/ap/ap_config.h b/src/ap/ap_config.h index b9d68321c..00d52408a 100644 --- a/src/ap/ap_config.h +++ b/src/ap/ap_config.h @@ -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 diff --git a/src/ap/vlan_init.c b/src/ap/vlan_init.c index 2499bf3ad..94ff9e46f 100644 --- a/src/ap/vlan_init.c +++ b/src/ap/vlan_init.c @@ -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",