ip/dhcp6d: only announce all-dhcp-servers multicast address on interface with link-local address on it
This commit is contained in:
parent
fca2c1cb31
commit
b9b6fcd85f
1 changed files with 7 additions and 4 deletions
|
@ -134,6 +134,7 @@ openlisten(char *net)
|
||||||
int fd, cfd;
|
int fd, cfd;
|
||||||
char data[128], devdir[40];
|
char data[128], devdir[40];
|
||||||
Ipifc *ifc;
|
Ipifc *ifc;
|
||||||
|
Iplifc *lifc;
|
||||||
|
|
||||||
sprint(data, "%s/udp!*!dhcp6s", net);
|
sprint(data, "%s/udp!*!dhcp6s", net);
|
||||||
cfd = announce(data, devdir);
|
cfd = announce(data, devdir);
|
||||||
|
@ -144,12 +145,14 @@ openlisten(char *net)
|
||||||
|
|
||||||
ipifcs = readipifc(net, ipifcs, -1);
|
ipifcs = readipifc(net, ipifcs, -1);
|
||||||
for(ifc = ipifcs; ifc != nil; ifc = ifc->next){
|
for(ifc = ipifcs; ifc != nil; ifc = ifc->next){
|
||||||
if(ifc->lifc == nil)
|
|
||||||
continue;
|
|
||||||
if(strcmp(ifc->dev, "/dev/null") == 0)
|
if(strcmp(ifc->dev, "/dev/null") == 0)
|
||||||
continue;
|
continue;
|
||||||
if(fprint(cfd, "addmulti %I ff02::1:2", ifc->lifc->ip) < 0)
|
for(lifc = ifc->lifc; lifc != nil; lifc = lifc->next){
|
||||||
fprint(2, "can't add interface %s: %r", ifc->dev);
|
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);
|
sprint(data, "%s/data", devdir);
|
||||||
|
|
Loading…
Reference in a new issue