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

Reply via email to