diff options
author | thompsa <thompsa@FreeBSD.org> | 2006-11-04 10:40:59 +0000 |
---|---|---|
committer | thompsa <thompsa@FreeBSD.org> | 2006-11-04 10:40:59 +0000 |
commit | 7d77b4e35faa299425c10e8671a8b46bb9cf26ae (patch) | |
tree | 180fd0dd144675bce9a43998f09113f85f7c40e7 /sys/net/if_bridge.c | |
parent | 58ee199a419988c031c7713e8038e30543ee113f (diff) | |
download | FreeBSD-src-7d77b4e35faa299425c10e8671a8b46bb9cf26ae.zip FreeBSD-src-7d77b4e35faa299425c10e8671a8b46bb9cf26ae.tar.gz |
When the packet is for the bridge then note which interface to send the reply
to, previously it was always broadcast to all interfaces (a bug). This is
useful when the bridge is the default gateway and vlans are used to isolate
each client, the reply is now kept private to the vlan which the client
resides.
Reported by: Jon Otterholm
Tested by: Jon Otterholm
MFC after: 3 days
Diffstat (limited to 'sys/net/if_bridge.c')
-rw-r--r-- | sys/net/if_bridge.c | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/sys/net/if_bridge.c b/sys/net/if_bridge.c index 5314b6f..da77d97 100644 --- a/sys/net/if_bridge.c +++ b/sys/net/if_bridge.c @@ -2054,6 +2054,11 @@ bridge_input(struct ifnet *ifp, struct mbuf *m) * local processing. */ + /* Note where to send the reply to */ + if (bif->bif_flags & IFBIF_LEARNING) + (void) bridge_rtupdate(sc, + eh->ether_shost, ifp, 0, IFBAF_DYNAMIC); + /* Mark the packet as arriving on the bridge interface */ m->m_pkthdr.rcvif = bifp; BPF_MTAP(bifp, m); |