diff options
author | thompsa <thompsa@FreeBSD.org> | 2011-01-25 17:15:23 +0000 |
---|---|---|
committer | thompsa <thompsa@FreeBSD.org> | 2011-01-25 17:15:23 +0000 |
commit | bd51c8de855353878a76b7d2ea6a634d444d4844 (patch) | |
tree | cd999fbbc424e1bf642e26a8375ca1638dd45628 /sys/netinet/if_ether.c | |
parent | 71ef4a5db83165ac666bf7ecd9abb486e13457f0 (diff) | |
download | FreeBSD-src-bd51c8de855353878a76b7d2ea6a634d444d4844.zip FreeBSD-src-bd51c8de855353878a76b7d2ea6a634d444d4844.tar.gz |
When matching an incoming ARP against a bridge, ensure both interfaces belong
to the same bridge.
Submitted by: Alexander Zagrebin
Diffstat (limited to 'sys/netinet/if_ether.c')
-rw-r--r-- | sys/netinet/if_ether.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/sys/netinet/if_ether.c b/sys/netinet/if_ether.c index 39ffe0a..569047e 100644 --- a/sys/netinet/if_ether.c +++ b/sys/netinet/if_ether.c @@ -564,7 +564,7 @@ in_arpinput(struct mbuf *m) */ IN_IFADDR_RLOCK(); LIST_FOREACH(ia, INADDR_HASH(itaddr.s_addr), ia_hash) { - if (((bridged && ia->ia_ifp->if_bridge != NULL) || + if (((bridged && ia->ia_ifp->if_bridge == ifp->if_bridge) || ia->ia_ifp == ifp) && itaddr.s_addr == ia->ia_addr.sin_addr.s_addr) { ifa_ref(&ia->ia_ifa); @@ -581,7 +581,7 @@ in_arpinput(struct mbuf *m) } } LIST_FOREACH(ia, INADDR_HASH(isaddr.s_addr), ia_hash) - if (((bridged && ia->ia_ifp->if_bridge != NULL) || + if (((bridged && ia->ia_ifp->if_bridge == ifp->if_bridge) || ia->ia_ifp == ifp) && isaddr.s_addr == ia->ia_addr.sin_addr.s_addr) { ifa_ref(&ia->ia_ifa); |