diff options
| author | itojun <itojun@NetBSD.org> | 2001-08-20 03:13:45 +0000 |
|---|---|---|
| committer | itojun <itojun@NetBSD.org> | 2001-08-20 03:13:45 +0000 |
| commit | ef0be725b3f2dccf6a389dd916feeb28686ea6e2 (patch) | |
| tree | f248a234bd02439b6c7bad4c48af91fca627b5d9 /sys | |
| parent | cba884a1784dc434f3b6f4beb17855729200e050 (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.c | 8 |
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++; |
