summaryrefslogtreecommitdiff
path: root/sys/net/if_bridge.c
diff options
context:
space:
mode:
authorKazuya Goda <goda@cvs.openbsd.org>2015-12-01 14:49:05 +0000
committerKazuya Goda <goda@cvs.openbsd.org>2015-12-01 14:49:05 +0000
commit80c6da5e833f55eb6c028eb199d5def447f0b3b2 (patch)
tree7983dc629d14ce7938a150424b29b32fe8e494ad /sys/net/if_bridge.c
parent3cafcbf3ed90c08e0263b4a7a2e788c467c12764 (diff)
Fix bridge to forward broadcast/multicast frames from gif.
ok reyk@ mpi@ yasuoka@
Diffstat (limited to 'sys/net/if_bridge.c')
-rw-r--r--sys/net/if_bridge.c13
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;
}