diff options
author | Kazuya Goda <goda@cvs.openbsd.org> | 2015-12-01 14:49:05 +0000 |
---|---|---|
committer | Kazuya Goda <goda@cvs.openbsd.org> | 2015-12-01 14:49:05 +0000 |
commit | 80c6da5e833f55eb6c028eb199d5def447f0b3b2 (patch) | |
tree | 7983dc629d14ce7938a150424b29b32fe8e494ad /sys | |
parent | 3cafcbf3ed90c08e0263b4a7a2e788c467c12764 (diff) |
Fix bridge to forward broadcast/multicast frames from gif.
ok reyk@ mpi@ yasuoka@
Diffstat (limited to 'sys')
-rw-r--r-- | sys/net/if_bridge.c | 13 |
1 files changed, 8 insertions, 5 deletions
diff --git a/sys/net/if_bridge.c b/sys/net/if_bridge.c index 744d26ecfb9..dabac1e97aa 100644 --- a/sys/net/if_bridge.c +++ b/sys/net/if_bridge.c @@ -1,4 +1,4 @@ -/* $OpenBSD: if_bridge.c,v 1.270 2015/11/07 12:42:19 mpi Exp $ */ +/* $OpenBSD: if_bridge.c,v 1.271 2015/12/01 14:49:04 goda Exp $ */ /* * Copyright (c) 1999, 2000 Jason L. Wright (jason@thought.net) @@ -1337,18 +1337,21 @@ bridge_process(struct ifnet *ifp, struct mbuf *m) if (mc == NULL) goto reenqueue; - bridge_ifinput(ifp, mc); #if NGIF > 0 if (ifp->if_type == IFT_GIF) { TAILQ_FOREACH(ifl, &sc->sc_iflist, next) { if (ifl->ifp->if_type != IFT_ETHER) continue; - bridge_ifinput(ifl->ifp, m); - return; + bridge_ifinput(ifl->ifp, mc); + break; } - } + if (!ifl) + m_freem(mc); + } else #endif /* NGIF */ + bridge_ifinput(ifp, mc); + bridgeintr_frame(sc, ifp, m); return; } |