summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorgoda <goda@openbsd.org>2015-12-01 14:49:04 +0000
committergoda <goda@openbsd.org>2015-12-01 14:49:04 +0000
commit8a1ddffa36933c310b719644fe924c460a5974e9 (patch)
tree609c84a4509942f79140ba3f72bea16a8cb1da38
parentmyx doesnt use atomic.h anymore. (diff)
downloadwireguard-openbsd-8a1ddffa36933c310b719644fe924c460a5974e9.tar.xz
wireguard-openbsd-8a1ddffa36933c310b719644fe924c460a5974e9.zip
Fix bridge to forward broadcast/multicast frames from gif.
ok reyk@ mpi@ yasuoka@
-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;
}