Multicast leave does not clear hash table entry

We are using multicast streams, IGMP V2, with fast IP. The Fusion stack is supposed to support this. The fast IP receive works in unicast. The multicast join (socket option IP_ADD_MEMBERSHIP) works fine. We discovered that after a multicast leave (socket option IP_DROP_MEMBERSHIP) the Fusion stack sends an IGMP leave message but it does not clear the hash table bit. After switching between a few different multicast streams the receiver overflows from all the unfiltered streams. We found a function set_hash_bit() in narmenet.c but no corresponding clear_hash_bit(). Is this a known problem? The only workaround we see is keeping track of our own multicast subscriptions and completely recomputing the hash table each time something changes. It seems the stack builders forgot this… Another problem is that the Fusion stack should always respond to a multicast query with a membership report. It does so about 50% of the times, very random. Also, some join and leave reports seem missing. Regards, Arie de Muynck

Well, at least one bug was found. There IS an algorithm present just as we needed, but in narmenet.c, function eth_ioctl() there is a superfluous line “if( ndp->nd_mcast_addr_count == 0)”. Since group is always joined by the stack at poweron this value is minimum 1 and the hash table was never recomputed. Just remove this line and it works. The random delivery of reports is still a problem, but we can circumvent that. Regards, Arie de Muynck