From: Roy Marples Date: Tue, 1 Sep 2009 07:45:11 +0000 (+0000) Subject: We should not affect other interfaces when handling new interface X-Git-Tag: v5.1.0~4 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=6b8f0f11ba0bc8df79b10a6aeb8b1b434a9b8f21;p=thirdparty%2Fdhcpcd.git We should not affect other interfaces when handling new interface notifications. --- diff --git a/dhcpcd.c b/dhcpcd.c index 2cbb6320..7054687a 100644 --- a/dhcpcd.c +++ b/dhcpcd.c @@ -1188,6 +1188,7 @@ void handle_interface(int action, const char *ifname) { struct interface *ifs, *ifp, *ifn, *ifl = NULL; + const char * const argv[] = { ifname }; int i; if (action == -1) { @@ -1209,7 +1210,7 @@ handle_interface(int action, const char *ifname) return; } - ifs = discover_interfaces(0, NULL); + ifs = discover_interfaces(-1, UNCONST(argv)); for (ifp = ifs; ifp; ifp = ifp->next) { if (strcmp(ifp->name, ifname) != 0) continue; diff --git a/net.c b/net.c index 1ff798c9..b9b75681 100644 --- a/net.c +++ b/net.c @@ -307,6 +307,11 @@ discover_interfaces(int argc, char * const *argv) continue; p = argv[i]; } else { + /* -1 means we're discovering against a specific + * interface, but we still need the below rules + * to apply. */ + if (argc == -1 && strcmp(argv[0], ifa->ifa_name) != 0) + continue; for (i = 0; i < ifdc; i++) if (!fnmatch(ifdv[i], ifa->ifa_name, 0)) break;