I am trying to listen to multicast DNS packets
but when I try to configure the IP interface it fails,
what am I missing?
I do this (multicast with promiscuous)
snprint(addr, sizeof(addr), "%s/udp!*!*", Netdir);
if((cfd = announce(addr, dir)) < 0)
sysfatal("%s cannot announce, %r\n", addr);
if(fprint(cfd, "addmulti 224.0.0.251") < 0)
sysfatal("add multicast addr 224.0.0.251 failed, %r");
and it dies with 'addmulti for a non multicast address'
which is caused by this failing:
/sys/src/9/ip/ipifc.c
int
ipismulticast(uchar *ip)
{
if(isv4(ip)){
if(ip[IPv4off] >= 0xe0 && ip[IPv4off] < 0xf0)
return V4;
}
else if(ip[0] == 0xff)
return V6;
return 0;
}
But 0xe0 is 224 so it should not fail.
I'am very confused.
-Steve