diff options
author | Jason Wright <jason@cvs.openbsd.org> | 2003-01-03 15:57:57 +0000 |
---|---|---|
committer | Jason Wright <jason@cvs.openbsd.org> | 2003-01-03 15:57:57 +0000 |
commit | 8cfbd8464c210004c58d41682e472d2901b4e176 (patch) | |
tree | 43add194f2745f44c1288be31051e352da13a3f2 /sys | |
parent | fb04e29e99753276be2c50618933849bc5270599 (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.c | 7 |
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); |