ip-neighbor: Allow to replace dynamic entry

Before this patch it was not allowed to replace
a dynamic ARP entry with a static one with the
same mac-address.

Type: fix

Signed-off-by: Vladimir Isaev <visaev@netgate.com>
Change-Id: I6cfc0e510ffdf141c61874288f11a60395182374
This commit is contained in:
Vladimir Isaev
2020-07-16 17:05:18 +03:00
committed by Matthew Smith
parent 5d27037d16
commit b2f44bd8e7
2 changed files with 123 additions and 11 deletions

View File

@@ -1247,6 +1247,116 @@ class ARPTestCase(VppTestCase):
static_arp.remove_vpp_config()
self.pg2.set_table_ip4(0)
def test_arp_static_replace_dynamic_same_mac(self):
""" ARP Static can replace Dynamic (same mac) """
self.pg2.generate_remote_hosts(1)
dyn_arp = VppNeighbor(self,
self.pg2.sw_if_index,
self.pg2.remote_hosts[0].mac,
self.pg2.remote_hosts[0].ip4)
static_arp = VppNeighbor(self,
self.pg2.sw_if_index,
self.pg2.remote_hosts[0].mac,
self.pg2.remote_hosts[0].ip4,
is_static=1)
#
# Add a dynamic ARP entry
#
dyn_arp.add_vpp_config()
#
# We should find the dynamic nbr
#
self.assertFalse(find_nbr(self,
self.pg2.sw_if_index,
self.pg2.remote_hosts[0].ip4,
is_static=1))
self.assertTrue(find_nbr(self,
self.pg2.sw_if_index,
self.pg2.remote_hosts[0].ip4,
is_static=0,
mac=self.pg2.remote_hosts[0].mac))
#
# Add a static ARP entry with the same mac
#
static_arp.add_vpp_config()
#
# We should now find the static nbr with the same mac
#
self.assertFalse(find_nbr(self,
self.pg2.sw_if_index,
self.pg2.remote_hosts[0].ip4,
is_static=0))
self.assertTrue(find_nbr(self,
self.pg2.sw_if_index,
self.pg2.remote_hosts[0].ip4,
is_static=1,
mac=self.pg2.remote_hosts[0].mac))
#
# clean-up
#
static_arp.remove_vpp_config()
def test_arp_static_replace_dynamic_diff_mac(self):
""" ARP Static can replace Dynamic (diff mac) """
self.pg2.generate_remote_hosts(2)
dyn_arp = VppNeighbor(self,
self.pg2.sw_if_index,
self.pg2.remote_hosts[0].mac,
self.pg2.remote_hosts[0].ip4)
static_arp = VppNeighbor(self,
self.pg2.sw_if_index,
self.pg2.remote_hosts[1].mac,
self.pg2.remote_hosts[0].ip4,
is_static=1)
#
# Add a dynamic ARP entry
#
dyn_arp.add_vpp_config()
#
# We should find the dynamic nbr
#
self.assertFalse(find_nbr(self,
self.pg2.sw_if_index,
self.pg2.remote_hosts[0].ip4,
is_static=1))
self.assertTrue(find_nbr(self,
self.pg2.sw_if_index,
self.pg2.remote_hosts[0].ip4,
is_static=0,
mac=self.pg2.remote_hosts[0].mac))
#
# Add a static ARP entry with a changed mac
#
static_arp.add_vpp_config()
#
# We should now find the static nbr with a changed mac
#
self.assertFalse(find_nbr(self,
self.pg2.sw_if_index,
self.pg2.remote_hosts[0].ip4,
is_static=0))
self.assertTrue(find_nbr(self,
self.pg2.sw_if_index,
self.pg2.remote_hosts[0].ip4,
is_static=1,
mac=self.pg2.remote_hosts[1].mac))
#
# clean-up
#
static_arp.remove_vpp_config()
def test_arp_incomplete(self):
""" ARP Incomplete"""
self.pg1.generate_remote_hosts(3)