]> git.ipfire.org Git - thirdparty/dhcpcd.git/commitdiff
We should not affect other interfaces when handling new interface
authorRoy Marples <roy@marples.name>
Wed, 2 Sep 2009 20:10:55 +0000 (20:10 +0000)
committerRoy Marples <roy@marples.name>
Wed, 2 Sep 2009 20:10:55 +0000 (20:10 +0000)
notifications.

dhcpcd.c
net.c

index 548f0152953bd22e3eee37594a7608aca163925e..1e5a95ea90474ea12f9f5610ddf702bfde865a69 100644 (file)
--- a/dhcpcd.c
+++ b/dhcpcd.c
@@ -1187,6 +1187,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) {
@@ -1208,7 +1209,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 b00e012b6e814354f1a4449151e446e2cf8c5c72..83de3b41be6a839158b0ca0b057105f38333d70a 100644 (file)
--- a/net.c
+++ b/net.c
@@ -308,6 +308,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;