diff options
author | luigi <luigi@FreeBSD.org> | 1999-03-01 16:54:28 +0000 |
---|---|---|
committer | luigi <luigi@FreeBSD.org> | 1999-03-01 16:54:28 +0000 |
commit | f9bc5c6a2601bc0a3008def148bc30191850b7a1 (patch) | |
tree | 7dd28971cf2f5c3257ca926b43f7ac7f00fe4f73 /sys | |
parent | edb6a1c40f33a43e58e34d8a3f626dfef2b8f03c (diff) | |
download | FreeBSD-src-f9bc5c6a2601bc0a3008def148bc30191850b7a1.zip FreeBSD-src-f9bc5c6a2601bc0a3008def148bc30191850b7a1.tar.gz |
Fix handling of IFF_ALLMULTI. The code did not call
tulip_addr_filter() on SIOCSIFFLAGS, and was nuking the IFF_ALLMULTI
on entering tulip_addr_filter(). As a result it was impossible to run
a multicast router on a machine with a "de" interface.
Diffstat (limited to 'sys')
-rw-r--r-- | sys/dev/de/if_de.c | 6 | ||||
-rw-r--r-- | sys/pci/if_de.c | 6 |
2 files changed, 8 insertions, 4 deletions
diff --git a/sys/dev/de/if_de.c b/sys/dev/de/if_de.c index 49ae4a2..f3f0a2b 100644 --- a/sys/dev/de/if_de.c +++ b/sys/dev/de/if_de.c @@ -1,5 +1,5 @@ /* $NetBSD: if_de.c,v 1.80 1998/09/25 18:06:53 matt Exp $ */ -/* $Id: if_de.c,v 1.97 1999/01/29 08:29:05 bde Exp $ */ +/* $Id: if_de.c,v 1.98 1999/01/29 11:31:45 bde Exp $ */ /*- * Copyright (c) 1994-1997 Matt Thomas (matt@3am-software.com) @@ -3085,7 +3085,8 @@ tulip_addr_filter( sc->tulip_cmdmode &= ~TULIP_CMD_RXRUN; sc->tulip_intrmask &= ~TULIP_STS_RXSTOPPED; #if defined(IFF_ALLMULTI) - sc->tulip_if.if_flags &= ~IFF_ALLMULTI; + if (sc->tulip_if.if_flags & IFF_ALLMULTI) + sc->tulip_flags |= TULIP_ALLMULTI ; #endif #if defined(__FreeBSD__) && __FreeBSD_version >= 300000 @@ -4754,6 +4755,7 @@ tulip_ifioctl( printf(TULIP_PRINTF_FMT ": ignored invalid media request\n", TULIP_PRINTF_ARGS); } #endif + tulip_addr_filter(sc); /* reinit multicast filter */ tulip_init(sc); break; } diff --git a/sys/pci/if_de.c b/sys/pci/if_de.c index 49ae4a2..f3f0a2b 100644 --- a/sys/pci/if_de.c +++ b/sys/pci/if_de.c @@ -1,5 +1,5 @@ /* $NetBSD: if_de.c,v 1.80 1998/09/25 18:06:53 matt Exp $ */ -/* $Id: if_de.c,v 1.97 1999/01/29 08:29:05 bde Exp $ */ +/* $Id: if_de.c,v 1.98 1999/01/29 11:31:45 bde Exp $ */ /*- * Copyright (c) 1994-1997 Matt Thomas (matt@3am-software.com) @@ -3085,7 +3085,8 @@ tulip_addr_filter( sc->tulip_cmdmode &= ~TULIP_CMD_RXRUN; sc->tulip_intrmask &= ~TULIP_STS_RXSTOPPED; #if defined(IFF_ALLMULTI) - sc->tulip_if.if_flags &= ~IFF_ALLMULTI; + if (sc->tulip_if.if_flags & IFF_ALLMULTI) + sc->tulip_flags |= TULIP_ALLMULTI ; #endif #if defined(__FreeBSD__) && __FreeBSD_version >= 300000 @@ -4754,6 +4755,7 @@ tulip_ifioctl( printf(TULIP_PRINTF_FMT ": ignored invalid media request\n", TULIP_PRINTF_ARGS); } #endif + tulip_addr_filter(sc); /* reinit multicast filter */ tulip_init(sc); break; } |