l2: add per bridge domain learn limit

Type: feature

Signed-off-by: Jerome Tollet <jtollet@cisco.com>
Change-Id: I57ed6699050445d9c9aec98eff3aab56735aca54
Signed-off-by: Jerome Tollet <jtollet@cisco.com>
This commit is contained in:
Jerome Tollet
2020-12-18 09:44:24 +01:00
committed by John Lo
parent 1b576e0aa0
commit 5f93e3b7f8
8 changed files with 337 additions and 66 deletions
+47 -6
View File
@@ -17,7 +17,7 @@ class TestL2LearnLimit(VppTestCase):
@classmethod
def setUpClass(self):
super(TestL2LearnLimit, self).setUpClass()
self.create_pg_interfaces(range(2))
self.create_pg_interfaces(range(3))
@classmethod
def tearDownClass(cls):
@@ -94,6 +94,39 @@ class TestL2LearnLimit(VppTestCase):
# check that bd2 was not able to learn
self.assertEqual(len(lfs2), 0)
def test_l2bd_learnlimit03(self):
""" L2BD test with bridge domain limit
"""
self.vapi.bridge_domain_set_default_learn_limit(4)
self.vapi.bridge_domain_add_del(bd_id=3)
self.vapi.sw_interface_set_l2_bridge(
self.pg_interfaces[2].sw_if_index, bd_id=3)
self.vapi.bridge_domain_set_learn_limit(2, 5)
hosts = self.create_hosts(self.pg_interfaces[1], 20, 2)
fhosts = self.create_hosts(self.pg_interfaces[2], 20, 3)
# inject 20 mac addresses on bd2
self.learn_hosts(self.pg_interfaces[1], 2, hosts)
# inject 20 macs address on bd3
self.learn_hosts(self.pg_interfaces[2], 3, fhosts)
lfs1 = self.vapi.l2_fib_table_dump(2)
lfs2 = self.vapi.l2_fib_table_dump(3)
# check that only 5 macs are learned.
self.assertEqual(len(lfs1), 5)
# check that only 4 macs are learned.
self.assertEqual(len(lfs2), 4)
self.vapi.sw_interface_set_l2_bridge(
rx_sw_if_index=self.pg_interfaces[2].sw_if_index,
bd_id=3, enable=0)
self.vapi.bridge_domain_add_del(is_add=0, bd_id=3)
def setUp(self):
super(TestL2LearnLimit, self).setUp()
@@ -106,13 +139,21 @@ class TestL2LearnLimit(VppTestCase):
self.pg_interfaces[1].sw_if_index, bd_id=2)
def tearDown(self):
for i in self.pg_interfaces[:2]:
self.vapi.sw_interface_set_l2_bridge(rx_sw_if_index=i.sw_if_index,
bd_id=1, enable=0)
super(TestL2LearnLimit, self).tearDown()
self.vapi.sw_interface_set_l2_bridge(
rx_sw_if_index=self.pg_interfaces[0].sw_if_index,
bd_id=1, enable=0)
self.vapi.sw_interface_set_l2_bridge(
rx_sw_if_index=self.pg_interfaces[1].sw_if_index,
bd_id=2, enable=0)
self.vapi.bridge_domain_add_del(bd_id=1, is_add=0)
self.vapi.bridge_domain_add_del(bd_id=2, is_add=0)
super(TestL2LearnLimit, self).tearDown()
i = 0
while (len(self.vapi.l2_fib_table_dump(bd_id=0xffffffff)) != 0):
time.sleep(1)
i = i + 1
if i == 30:
self.assertTrue(False)
if __name__ == '__main__':