From a2ec1932c9b76d80d3af93aa74acf945829cd582 Mon Sep 17 00:00:00 2001 From: Ghanan Gowripalan Date: Tue, 19 Jan 2021 12:06:08 -0800 Subject: [PATCH] Drop CheckLocalAddress from LinkAddressCache PiperOrigin-RevId: 352623277 --- pkg/tcpip/network/arp/arp.go | 24 +++++++++--------------- pkg/tcpip/network/ipv6/icmp_test.go | 11 +++-------- pkg/tcpip/stack/registration.go | 4 ---- 3 files changed, 12 insertions(+), 27 deletions(-) diff --git a/pkg/tcpip/network/arp/arp.go b/pkg/tcpip/network/arp/arp.go index 3259d052f..d54e7fe86 100644 --- a/pkg/tcpip/network/arp/arp.go +++ b/pkg/tcpip/network/arp/arp.go @@ -138,23 +138,17 @@ func (e *endpoint) HandlePacket(pkt *stack.PacketBuffer) { stats.RequestsReceived.Increment() localAddr := tcpip.Address(h.ProtocolAddressTarget()) + if e.protocol.stack.CheckLocalAddress(e.nic.ID(), header.IPv4ProtocolNumber, localAddr) == 0 { + stats.RequestsReceivedUnknownTargetAddress.Increment() + return // we have no useful answer, ignore the request + } + + remoteAddr := tcpip.Address(h.ProtocolAddressSender()) + remoteLinkAddr := tcpip.LinkAddress(h.HardwareAddressSender()) + if e.nud == nil { - if e.linkAddrCache.CheckLocalAddress(e.nic.ID(), header.IPv4ProtocolNumber, localAddr) == 0 { - stats.RequestsReceivedUnknownTargetAddress.Increment() - return // we have no useful answer, ignore the request - } - - addr := tcpip.Address(h.ProtocolAddressSender()) - linkAddr := tcpip.LinkAddress(h.HardwareAddressSender()) - e.linkAddrCache.AddLinkAddress(e.nic.ID(), addr, linkAddr) + e.linkAddrCache.AddLinkAddress(e.nic.ID(), remoteAddr, remoteLinkAddr) } else { - if e.protocol.stack.CheckLocalAddress(e.nic.ID(), header.IPv4ProtocolNumber, localAddr) == 0 { - stats.RequestsReceivedUnknownTargetAddress.Increment() - return // we have no useful answer, ignore the request - } - - remoteAddr := tcpip.Address(h.ProtocolAddressSender()) - remoteLinkAddr := tcpip.LinkAddress(h.HardwareAddressSender()) e.nud.HandleProbe(remoteAddr, ProtocolNumber, remoteLinkAddr, e.protocol) } diff --git a/pkg/tcpip/network/ipv6/icmp_test.go b/pkg/tcpip/network/ipv6/icmp_test.go index b1e6a70a2..a660a1cea 100644 --- a/pkg/tcpip/network/ipv6/icmp_test.go +++ b/pkg/tcpip/network/ipv6/icmp_test.go @@ -91,16 +91,11 @@ func (*stubDispatcher) DeliverTransportPacket(tcpip.TransportProtocolNumber, *st return stack.TransportPacketHandled } -type stubLinkAddressCache struct { - stack.LinkAddressCache -} +var _ stack.LinkAddressCache = (*stubLinkAddressCache)(nil) -func (*stubLinkAddressCache) CheckLocalAddress(tcpip.NICID, tcpip.NetworkProtocolNumber, tcpip.Address) tcpip.NICID { - return 0 -} +type stubLinkAddressCache struct{} -func (*stubLinkAddressCache) AddLinkAddress(tcpip.NICID, tcpip.Address, tcpip.LinkAddress) { -} +func (*stubLinkAddressCache) AddLinkAddress(tcpip.NICID, tcpip.Address, tcpip.LinkAddress) {} type stubNUDHandler struct { probeCount int diff --git a/pkg/tcpip/stack/registration.go b/pkg/tcpip/stack/registration.go index 68c113b6a..a73bc7007 100644 --- a/pkg/tcpip/stack/registration.go +++ b/pkg/tcpip/stack/registration.go @@ -829,10 +829,6 @@ type LinkAddressResolver interface { // A LinkAddressCache caches link addresses. type LinkAddressCache interface { - // CheckLocalAddress determines if the given local address exists, and if it - // does not exist. - CheckLocalAddress(nicID tcpip.NICID, protocol tcpip.NetworkProtocolNumber, addr tcpip.Address) tcpip.NICID - // AddLinkAddress adds a link address to the cache. AddLinkAddress(nicID tcpip.NICID, addr tcpip.Address, linkAddr tcpip.LinkAddress) }