]> git.lizzy.rs Git - plan9front.git/blobdiff - sys/src/cmd/ip/dhcp6d.c
ip/dhcp6d: only announce all-dhcp-servers multicast address on interface with link...
[plan9front.git] / sys / src / cmd / ip / dhcp6d.c
index a130daed6fb9cfa61e5b6ca8b435d7411414d235..0aaf626f805c4b8a2a78197e062ba4ffbd7122e0 100644 (file)
@@ -134,6 +134,7 @@ openlisten(char *net)
        int fd, cfd;
        char data[128], devdir[40];
        Ipifc *ifc;
+       Iplifc *lifc;
 
        sprint(data, "%s/udp!*!dhcp6s", net);
        cfd = announce(data, devdir);
@@ -144,12 +145,14 @@ openlisten(char *net)
 
        ipifcs = readipifc(net, ipifcs, -1);
        for(ifc = ipifcs; ifc != nil; ifc = ifc->next){
-               if(ifc->lifc == nil)
-                       continue;
                if(strcmp(ifc->dev, "/dev/null") == 0)
                        continue;
-               if(fprint(cfd, "addmulti %I ff02::1:2", ifc->lifc->ip) < 0)
-                       fprint(2, "can't add interface %s: %r", ifc->dev);
+               for(lifc = ifc->lifc; lifc != nil; lifc = lifc->next){
+                       if(ISIPV6LINKLOCAL(lifc->ip))
+                               continue;
+                       if(fprint(cfd, "addmulti %I ff02::1:2", lifc->ip) < 0)
+                               fprint(2, "addmulti: %I: %r\n", lifc->ip);
+               }
        }
 
        sprint(data, "%s/data", devdir);