summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorcinap_lenrek <cinap_lenrek@felloff.net>2018-06-12 19:36:31 +0200
committercinap_lenrek <cinap_lenrek@felloff.net>2018-06-12 19:36:31 +0200
commitb9b6fcd85fc186e3f7f9cc780272137499a9b3a1 (patch)
tree06bf64f8e82a3466618a75eb80ea71b1476631f5
parentfca2c1cb3192fa149fc5f41646959ea2bdc5806c (diff)
downloadplan9front-b9b6fcd85fc186e3f7f9cc780272137499a9b3a1.tar.xz
ip/dhcp6d: only announce all-dhcp-servers multicast address on interface with link-local address on it
-rw-r--r--sys/src/cmd/ip/dhcp6d.c11
1 files changed, 7 insertions, 4 deletions
diff --git a/sys/src/cmd/ip/dhcp6d.c b/sys/src/cmd/ip/dhcp6d.c
index a130daed6..0aaf626f8 100644
--- a/sys/src/cmd/ip/dhcp6d.c
+++ b/sys/src/cmd/ip/dhcp6d.c
@@ -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);