summaryrefslogtreecommitdiff
path: root/sys
diff options
context:
space:
mode:
authoritojun <itojun@NetBSD.org>2001-08-20 03:13:45 +0000
committeritojun <itojun@NetBSD.org>2001-08-20 03:13:45 +0000
commitef0be725b3f2dccf6a389dd916feeb28686ea6e2 (patch)
treef248a234bd02439b6c7bad4c48af91fca627b5d9 /sys
parentcba884a1784dc434f3b6f4beb17855729200e050 (diff)
if I'm bridging and got a packet to interface address on if A from if B,
advertise MAC address for if A with ARP reply.
Diffstat (limited to 'sys')
-rw-r--r--sys/netinet/if_arp.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/sys/netinet/if_arp.c b/sys/netinet/if_arp.c
index 0208a08a532..078a8700943 100644
--- a/sys/netinet/if_arp.c
+++ b/sys/netinet/if_arp.c
@@ -1,4 +1,4 @@
-/* $NetBSD: if_arp.c,v 1.77 2001/08/17 21:47:57 thorpej Exp $ */
+/* $NetBSD: if_arp.c,v 1.78 2001/08/20 03:13:45 itojun Exp $ */
/*-
* Copyright (c) 1998, 2000 The NetBSD Foundation, Inc.
@@ -823,8 +823,10 @@ in_arpinput(m)
}
#if NBRIDGE > 0
- if (ia == NULL)
+ if (ia == NULL && bridge_ia != NULL) {
ia = bridge_ia;
+ ifp = bridge_ia->ia_ifp;
+ }
#endif
if (ia == NULL) {
@@ -843,12 +845,14 @@ in_arpinput(m)
myaddr = ia->ia_addr.sin_addr;
+ /* XXX checks for bridge case? */
if (!bcmp((caddr_t)ar_sha(ah), LLADDR(ifp->if_sadl),
ifp->if_data.ifi_addrlen)) {
arpstat.as_rcvlocalsha++;
goto out; /* it's from me, ignore it. */
}
+ /* XXX checks for bridge case? */
if (!bcmp((caddr_t)ar_sha(ah), (caddr_t)ifp->if_broadcastaddr,
ifp->if_data.ifi_addrlen)) {
arpstat.as_rcvbcastsha++;