diff options
author | 2015-12-01 14:49:04 +0000 | |
---|---|---|
committer | 2015-12-01 14:49:04 +0000 | |
commit | 8a1ddffa36933c310b719644fe924c460a5974e9 (patch) | |
tree | 609c84a4509942f79140ba3f72bea16a8cb1da38 | |
parent | myx doesnt use atomic.h anymore. (diff) | |
download | wireguard-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.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; } |