From 371205dd0c1bd9ed40b815827ff9e2ccab484d19 Mon Sep 17 00:00:00 2001 From: Michael Braun Date: Fri, 10 Apr 2015 14:49:48 +0200 Subject: [PATCH] vlan: Ignore DELLINK on interfaces that exists When hitting > Failed to create interface wlan3.1: -23 (Too many open files in system) > Try to remove and re-create wlan3.1 hostapd deletes the AP_VLAN interface and then recreates it. Thus the kernel assigns the same ifidx to the new interfaces and sends DELLINK and NEWLINK mesages. As the DELLINK messages are processed after the struct hostapd_vlan is added, hostapd deletes the struct hostapd_vlan entry, deconfigures the AP_VLAN interface and leaves vlan_newlink nothing to find afterwards. So this patch makes DELLINK messages to be ignored when the interface exists. Signed-off-by: Michael Braun --- src/ap/vlan_init.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/ap/vlan_init.c b/src/ap/vlan_init.c index dc6501997..2499bf3ad 100644 --- a/src/ap/vlan_init.c +++ b/src/ap/vlan_init.c @@ -651,6 +651,11 @@ vlan_read_ifnames(struct nlmsghdr *h, size_t len, int del, if (!ifname[0]) return; + if (del && if_nametoindex(ifname)) { + /* interface still exists, race condition -> + * iface has just been recreated */ + return; + } wpa_printf(MSG_DEBUG, "VLAN: RTM_%sLINK: ifi_index=%d ifname=%s ifi_family=%d ifi_flags=0x%x (%s%s%s%s)",