From ef0be725b3f2dccf6a389dd916feeb28686ea6e2 Mon Sep 17 00:00:00 2001 From: itojun Date: Mon, 20 Aug 2001 03:13:45 +0000 Subject: [PATCH] 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. --- sys/netinet/if_arp.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/sys/netinet/if_arp.c b/sys/netinet/if_arp.c index 0208a08a5324..078a87009438 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++;