On Sun 12 Dec 2021 at 18:24:13 +0000, Mark Pizzolato - Info Comm wrote: > How does NetBSD generally handle multi-cast? What interfaces exist to > NIC drivers to express the desire to receive all or particular multi-cast > packets? I think a good example to look at would be the "qe" driver, i.e. for DELQA-normal: https://github.com/NetBSD/src/blob/trunk/sys/dev/qbus/if_qe.c Starting at line 641 is the ioctl function, which handles the SIOCADDMULTI and SIOCDELMULTI requests. I don't think there is something similar to request receiving broadcasts; afaik they are always assumed to be enabled. If any multicast address is added or deleted, a new init packet is sent. From line 790, the init packet is set up. It looks like it sets every filter entry to the broadcast addr; leaves slot #0 alone, and then overwrites slot #1 with its own address (j seems to be the slot number). Then from slot #3 on it fills in multicast addresses, and if there are too many it falls back to "all multicast" mode (which is actually implemented as promiscuous mode; Maybe the driver writer didn't see EK-DELQA-UG-002.pdf where page 3-31 mentions the C<00> All Multicast address filter) It looks like the DELQA-normal init packet sets too many bytes to 0xFF and doesn't heed "reserved bytes should be set to zero"; slot #0 looks like being part of the reserved bytes apart from the "MOP flag"; page 3-33. > - Mark -Olaf. -- ___ "Buying carbon credits is a bit like a serial killer paying someone else to \X/ have kids to make his activity cost neutral." -The BOFH falu.nl@rhialto
Attachment:
signature.asc
Description: PGP signature