]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/commit
One-liner: add a call to the underlying device driver's SIOCDELMULTI
authorBill Paul <wpaul@FreeBSD.org>
Wed, 12 Aug 1998 22:51:59 +0000 (22:51 +0000)
committerBill Paul <wpaul@FreeBSD.org>
Wed, 12 Aug 1998 22:51:59 +0000 (22:51 +0000)
commitc7323482f49998589b6b5e29d16bd41744cfbfab
treecdb2d5107935ca3c0c8524bdd33dcf9361ca2484
parentf01beb610a1bb098183cf2f9837eed78fb33c386
One-liner: add a call to the underlying device driver's SIOCDELMULTI
ioctl() routine at the end of if_delmulti() so that interfaces with
hardware multicast filtering can update their filters in a timely
manner.

If the interface doesn't support hardware multicast filtering, then
reception of multicast frames is done using 'promiscious mode' or
'capture all multicast frames' mode and software filtering in the
kernel. In this case, it doesn't matter if if_delmulti() ever does
an SCIODELMULTI on the interface or not: if MULTICAST support is
enabled, then we join the 'all hosts' group when the interface is
configured, and remain in it until the interface is brought down.
Without hardware filtering, joining one group means joining all
groups, so it makes no difference if we call the SIOCDELMULTI
routine.

If the interface does support hardware multicast filtering, then
by not reprogramming the hardware filter in if_delmulti(), we have
to wait until somebody calls if_setmulti(), during which time the
interface is receiving frames for multicast groups in which we are
no longer interested.
sys/net/if.c