summaryrefslogtreecommitdiff
path: root/sys
diff options
context:
space:
mode:
authorJason Wright <jason@cvs.openbsd.org>2003-01-03 15:57:57 +0000
committerJason Wright <jason@cvs.openbsd.org>2003-01-03 15:57:57 +0000
commit8cfbd8464c210004c58d41682e472d2901b4e176 (patch)
tree43add194f2745f44c1288be31051e352da13a3f2 /sys
parentfb04e29e99753276be2c50618933849bc5270599 (diff)
Fix the unicast case call to bridge_rtupdate(), check that the -source-
interface is LEARNING not the destination.
Diffstat (limited to 'sys')
-rw-r--r--sys/net/if_bridge.c7
1 files changed, 4 insertions, 3 deletions
diff --git a/sys/net/if_bridge.c b/sys/net/if_bridge.c
index d1b51cbafbf..d0284c4857f 100644
--- a/sys/net/if_bridge.c
+++ b/sys/net/if_bridge.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: if_bridge.c,v 1.106 2002/12/09 22:32:01 jason Exp $ */
+/* $OpenBSD: if_bridge.c,v 1.107 2003/01/03 15:57:56 jason Exp $ */
/*
* Copyright (c) 1999, 2000 Jason L. Wright (jason@thought.net)
@@ -1237,7 +1237,7 @@ bridge_input(ifp, eh, m)
{
struct bridge_softc *sc;
int s;
- struct bridge_iflist *ifl;
+ struct bridge_iflist *ifl, *srcifl;
struct arpcom *ac;
struct mbuf *mc;
@@ -1333,12 +1333,13 @@ bridge_input(ifp, eh, m)
/*
* Unicast, make sure it's not for us.
*/
+ srcifl = ifl;
LIST_FOREACH(ifl, &sc->sc_iflist, next) {
if (ifl->ifp->if_type != IFT_ETHER)
continue;
ac = (struct arpcom *)ifl->ifp;
if (bcmp(ac->ac_enaddr, eh->ether_dhost, ETHER_ADDR_LEN) == 0) {
- if (ifl->bif_flags & IFBIF_LEARNING)
+ if (srcifl->bif_flags & IFBIF_LEARNING)
bridge_rtupdate(sc,
(struct ether_addr *)&eh->ether_shost,
ifp, 0, IFBAF_DYNAMIC);