summaryrefslogtreecommitdiffstats
path: root/test/test_ip_mcast.py
diff options
context:
space:
mode:
authorKlement Sekera <klement.sekera@gmail.com>2022-04-26 19:02:15 +0200
committerOle Tr�an <otroan@employees.org>2022-05-10 18:52:08 +0000
commitd9b0c6fbf7aa5bd9af84264105b39c82028a4a29 (patch)
tree4f786cfd8ebc2443cb11e11b74c8657204068898 /test/test_ip_mcast.py
parentf90348bcb4afd0af2611cefc43b17ef3042b511c (diff)
tests: replace pycodestyle with black
Drop pycodestyle for code style checking in favor of black. Black is much faster, stable PEP8 compliant code style checker offering also automatic formatting. It aims to be very stable and produce smallest diffs. It's used by many small and big projects. Running checkstyle with black takes a few seconds with a terse output. Thus, test-checkstyle-diff is no longer necessary. Expand scope of checkstyle to all python files in the repo, replacing test-checkstyle with checkstyle-python. Also, fixstyle-python is now available for automatic style formatting. Note: python virtualenv has been consolidated in test/Makefile, test/requirements*.txt which will eventually be moved to a central location. This is required to simply the automated generation of docker executor images in the CI. Type: improvement Change-Id: I022a326603485f58585e879ac0f697fceefbc9c8 Signed-off-by: Klement Sekera <klement.sekera@gmail.com> Signed-off-by: Dave Wallace <dwallacelf@gmail.com>
Diffstat (limited to 'test/test_ip_mcast.py')
-rw-r--r--test/test_ip_mcast.py669
1 files changed, 395 insertions, 274 deletions
diff --git a/test/test_ip_mcast.py b/test/test_ip_mcast.py
index 50ac01b8844..c3ac16c6d85 100644
--- a/test/test_ip_mcast.py
+++ b/test/test_ip_mcast.py
@@ -5,8 +5,14 @@ import unittest
from framework import tag_fixme_vpp_workers
from framework import VppTestCase, VppTestRunner
from vpp_ip import DpoProto
-from vpp_ip_route import VppIpMRoute, VppMRoutePath, VppMFibSignal, \
- VppIpTable, FibPathProto, FibPathType
+from vpp_ip_route import (
+ VppIpMRoute,
+ VppMRoutePath,
+ VppMFibSignal,
+ VppIpTable,
+ FibPathProto,
+ FibPathType,
+)
from vpp_gre_interface import VppGreInterface
from vpp_papi import VppEnum
@@ -26,7 +32,7 @@ N_PKTS_IN_STREAM = 91
class TestMFIB(VppTestCase):
- """ MFIB Test Case """
+ """MFIB Test Case"""
@classmethod
def setUpClass(cls):
@@ -40,7 +46,7 @@ class TestMFIB(VppTestCase):
super(TestMFIB, self).setUp()
def test_mfib(self):
- """ MFIB Unit Tests """
+ """MFIB Unit Tests"""
error = self.vapi.cli("test mfib")
if error:
@@ -50,7 +56,7 @@ class TestMFIB(VppTestCase):
@tag_fixme_vpp_workers
class TestIPMcast(VppTestCase):
- """ IP Multicast Test Case """
+ """IP Multicast Test Case"""
@classmethod
def setUpClass(cls):
@@ -98,12 +104,14 @@ class TestIPMcast(VppTestCase):
def create_stream_ip4(self, src_if, src_ip, dst_ip, payload_size=0):
pkts = []
# default to small packet sizes
- p = (Ether(dst=getmacbyip(dst_ip), src=src_if.remote_mac) /
- IP(src=src_ip, dst=dst_ip) /
- UDP(sport=1234, dport=1234))
+ p = (
+ Ether(dst=getmacbyip(dst_ip), src=src_if.remote_mac)
+ / IP(src=src_ip, dst=dst_ip)
+ / UDP(sport=1234, dport=1234)
+ )
if not payload_size:
payload_size = 64 - len(p)
- p = p / Raw(b'\xa5' * payload_size)
+ p = p / Raw(b"\xa5" * payload_size)
for i in range(0, N_PKTS_IN_STREAM):
pkts.append(p)
@@ -114,10 +122,12 @@ class TestIPMcast(VppTestCase):
for i in range(0, N_PKTS_IN_STREAM):
info = self.create_packet_info(src_if, src_if)
payload = self.info_to_payload(info)
- p = (Ether(dst=getmacbyip6(dst_ip), src=src_if.remote_mac) /
- IPv6(src=src_ip, dst=dst_ip) /
- UDP(sport=1234, dport=1234) /
- Raw(payload))
+ p = (
+ Ether(dst=getmacbyip6(dst_ip), src=src_if.remote_mac)
+ / IPv6(src=src_ip, dst=dst_ip)
+ / UDP(sport=1234, dport=1234)
+ / Raw(payload)
+ )
info.data = p.copy()
pkts.append(p)
return pkts
@@ -126,7 +136,7 @@ class TestIPMcast(VppTestCase):
if not len(capture) == len(sent):
# filter out any IPv6 RAs from the capture
for p in capture:
- if (p.haslayer(IPv6)):
+ if p.haslayer(IPv6):
capture.remove(p)
return capture
@@ -186,7 +196,7 @@ class TestIPMcast(VppTestCase):
self.assertEqual(rx_ip.hlim + 1, tx_ip.hlim)
def test_ip_mcast(self):
- """ IP Multicast Replication """
+ """IP Multicast Replication"""
MRouteItfFlags = VppEnum.vl_api_mfib_itf_flags_t
MRouteEntryFlags = VppEnum.vl_api_mfib_entry_flags_t
@@ -210,9 +220,11 @@ class TestIPMcast(VppTestCase):
self.pg_start()
self.pg0.assert_nothing_captured(
- remark="IP multicast packets forwarded on default route")
+ remark="IP multicast packets forwarded on default route"
+ )
count = self.statistics.get_err_counter(
- "/err/ip4-input/Multicast RPF check failed")
+ "/err/ip4-input/Multicast RPF check failed"
+ )
self.assertEqual(count, len(tx))
#
@@ -224,24 +236,36 @@ class TestIPMcast(VppTestCase):
route_232_1_1_1 = VppIpMRoute(
self,
"0.0.0.0",
- "232.1.1.1", 32,
+ "232.1.1.1",
+ 32,
MRouteEntryFlags.MFIB_API_ENTRY_FLAG_NONE,
- [VppMRoutePath(self.pg0.sw_if_index,
- MRouteItfFlags.MFIB_API_ITF_FLAG_ACCEPT),
- VppMRoutePath(self.pg1.sw_if_index,
- MRouteItfFlags.MFIB_API_ITF_FLAG_FORWARD),
- VppMRoutePath(self.pg2.sw_if_index,
- MRouteItfFlags.MFIB_API_ITF_FLAG_FORWARD),
- VppMRoutePath(self.pg3.sw_if_index,
- MRouteItfFlags.MFIB_API_ITF_FLAG_FORWARD),
- VppMRoutePath(self.pg4.sw_if_index,
- MRouteItfFlags.MFIB_API_ITF_FLAG_FORWARD),
- VppMRoutePath(self.pg5.sw_if_index,
- MRouteItfFlags.MFIB_API_ITF_FLAG_FORWARD),
- VppMRoutePath(self.pg6.sw_if_index,
- MRouteItfFlags.MFIB_API_ITF_FLAG_FORWARD),
- VppMRoutePath(self.pg7.sw_if_index,
- MRouteItfFlags.MFIB_API_ITF_FLAG_FORWARD)])
+ [
+ VppMRoutePath(
+ self.pg0.sw_if_index, MRouteItfFlags.MFIB_API_ITF_FLAG_ACCEPT
+ ),
+ VppMRoutePath(
+ self.pg1.sw_if_index, MRouteItfFlags.MFIB_API_ITF_FLAG_FORWARD
+ ),
+ VppMRoutePath(
+ self.pg2.sw_if_index, MRouteItfFlags.MFIB_API_ITF_FLAG_FORWARD
+ ),
+ VppMRoutePath(
+ self.pg3.sw_if_index, MRouteItfFlags.MFIB_API_ITF_FLAG_FORWARD
+ ),
+ VppMRoutePath(
+ self.pg4.sw_if_index, MRouteItfFlags.MFIB_API_ITF_FLAG_FORWARD
+ ),
+ VppMRoutePath(
+ self.pg5.sw_if_index, MRouteItfFlags.MFIB_API_ITF_FLAG_FORWARD
+ ),
+ VppMRoutePath(
+ self.pg6.sw_if_index, MRouteItfFlags.MFIB_API_ITF_FLAG_FORWARD
+ ),
+ VppMRoutePath(
+ self.pg7.sw_if_index, MRouteItfFlags.MFIB_API_ITF_FLAG_FORWARD
+ ),
+ ],
+ )
route_232_1_1_1.add_vpp_config()
#
@@ -251,14 +275,21 @@ class TestIPMcast(VppTestCase):
route_1_1_1_1_232_1_1_1 = VppIpMRoute(
self,
"1.1.1.1",
- "232.1.1.1", 27, # any grp-len is ok when src is set
+ "232.1.1.1",
+ 27, # any grp-len is ok when src is set
MRouteEntryFlags.MFIB_API_ENTRY_FLAG_NONE,
- [VppMRoutePath(self.pg0.sw_if_index,
- MRouteItfFlags.MFIB_API_ITF_FLAG_ACCEPT),
- VppMRoutePath(self.pg1.sw_if_index,
- MRouteItfFlags.MFIB_API_ITF_FLAG_FORWARD),
- VppMRoutePath(self.pg2.sw_if_index,
- MRouteItfFlags.MFIB_API_ITF_FLAG_FORWARD)])
+ [
+ VppMRoutePath(
+ self.pg0.sw_if_index, MRouteItfFlags.MFIB_API_ITF_FLAG_ACCEPT
+ ),
+ VppMRoutePath(
+ self.pg1.sw_if_index, MRouteItfFlags.MFIB_API_ITF_FLAG_FORWARD
+ ),
+ VppMRoutePath(
+ self.pg2.sw_if_index, MRouteItfFlags.MFIB_API_ITF_FLAG_FORWARD
+ ),
+ ],
+ )
route_1_1_1_1_232_1_1_1.add_vpp_config()
#
@@ -269,16 +300,25 @@ class TestIPMcast(VppTestCase):
route_1_1_1_1_232_1_1_2 = VppIpMRoute(
self,
"1.1.1.1",
- "232.1.1.2", 64,
+ "232.1.1.2",
+ 64,
MRouteEntryFlags.MFIB_API_ENTRY_FLAG_NONE,
- [VppMRoutePath(self.pg0.sw_if_index,
- MRouteItfFlags.MFIB_API_ITF_FLAG_ACCEPT),
- VppMRoutePath(self.pg1.sw_if_index,
- MRouteItfFlags.MFIB_API_ITF_FLAG_FORWARD,
- nh=self.pg1.remote_ip4),
- VppMRoutePath(self.pg2.sw_if_index,
- MRouteItfFlags.MFIB_API_ITF_FLAG_FORWARD,
- nh=self.pg2.remote_ip4)])
+ [
+ VppMRoutePath(
+ self.pg0.sw_if_index, MRouteItfFlags.MFIB_API_ITF_FLAG_ACCEPT
+ ),
+ VppMRoutePath(
+ self.pg1.sw_if_index,
+ MRouteItfFlags.MFIB_API_ITF_FLAG_FORWARD,
+ nh=self.pg1.remote_ip4,
+ ),
+ VppMRoutePath(
+ self.pg2.sw_if_index,
+ MRouteItfFlags.MFIB_API_ITF_FLAG_FORWARD,
+ nh=self.pg2.remote_ip4,
+ ),
+ ],
+ )
route_1_1_1_1_232_1_1_2.add_vpp_config()
#
@@ -288,12 +328,18 @@ class TestIPMcast(VppTestCase):
route_232 = VppIpMRoute(
self,
"0.0.0.0",
- "232.0.0.0", 8,
+ "232.0.0.0",
+ 8,
MRouteEntryFlags.MFIB_API_ENTRY_FLAG_NONE,
- [VppMRoutePath(self.pg0.sw_if_index,
- MRouteItfFlags.MFIB_API_ITF_FLAG_ACCEPT),
- VppMRoutePath(self.pg1.sw_if_index,
- MRouteItfFlags.MFIB_API_ITF_FLAG_FORWARD)])
+ [
+ VppMRoutePath(
+ self.pg0.sw_if_index, MRouteItfFlags.MFIB_API_ITF_FLAG_ACCEPT
+ ),
+ VppMRoutePath(
+ self.pg1.sw_if_index, MRouteItfFlags.MFIB_API_ITF_FLAG_FORWARD
+ ),
+ ],
+ )
route_232.add_vpp_config()
#
@@ -307,26 +353,22 @@ class TestIPMcast(VppTestCase):
self.pg_enable_capture(self.pg_interfaces)
self.pg_start()
- self.assertEqual(route_1_1_1_1_232_1_1_1.get_stats()['packets'],
- len(tx))
+ self.assertEqual(route_1_1_1_1_232_1_1_1.get_stats()["packets"], len(tx))
# We expect replications on Pg1->7
self.verify_capture_ip4(self.pg1, tx)
self.verify_capture_ip4(self.pg2, tx)
# no replications on Pg0
- self.pg0.assert_nothing_captured(
- remark="IP multicast packets forwarded on PG0")
- self.pg3.assert_nothing_captured(
- remark="IP multicast packets forwarded on PG3")
+ self.pg0.assert_nothing_captured(remark="IP multicast packets forwarded on PG0")
+ self.pg3.assert_nothing_captured(remark="IP multicast packets forwarded on PG3")
#
# a stream that matches the route for (1.1.1.1,232.1.1.1)
# large packets
#
self.vapi.cli("clear trace")
- tx = self.create_stream_ip4(self.pg0, "1.1.1.1", "232.1.1.1",
- payload_size=1024)
+ tx = self.create_stream_ip4(self.pg0, "1.1.1.1", "232.1.1.1", payload_size=1024)
self.pg0.add_stream(tx)
self.pg_enable_capture(self.pg_interfaces)
@@ -336,14 +378,11 @@ class TestIPMcast(VppTestCase):
self.verify_capture_ip4(self.pg1, tx)
self.verify_capture_ip4(self.pg2, tx)
- self.assertEqual(route_1_1_1_1_232_1_1_1.get_stats()['packets'],
- 2*len(tx))
+ self.assertEqual(route_1_1_1_1_232_1_1_1.get_stats()["packets"], 2 * len(tx))
# no replications on Pg0
- self.pg0.assert_nothing_captured(
- remark="IP multicast packets forwarded on PG0")
- self.pg3.assert_nothing_captured(
- remark="IP multicast packets forwarded on PG3")
+ self.pg0.assert_nothing_captured(remark="IP multicast packets forwarded on PG0")
+ self.pg3.assert_nothing_captured(remark="IP multicast packets forwarded on PG3")
#
# a stream to the unicast next-hops
@@ -360,10 +399,8 @@ class TestIPMcast(VppTestCase):
self.verify_capture_ip4(self.pg2, tx, dst_mac=self.pg2.remote_mac)
# no replications on Pg0 nor pg3
- self.pg0.assert_nothing_captured(
- remark="IP multicast packets forwarded on PG0")
- self.pg3.assert_nothing_captured(
- remark="IP multicast packets forwarded on PG3")
+ self.pg0.assert_nothing_captured(remark="IP multicast packets forwarded on PG0")
+ self.pg3.assert_nothing_captured(remark="IP multicast packets forwarded on PG3")
#
# a stream that matches the route for (*,232.0.0.0/8)
@@ -379,15 +416,12 @@ class TestIPMcast(VppTestCase):
# We expect replications on Pg1 only
self.verify_capture_ip4(self.pg1, tx)
- self.assertEqual(route_232.get_stats()['packets'], len(tx))
+ self.assertEqual(route_232.get_stats()["packets"], len(tx))
# no replications on Pg0, Pg2 not Pg3
- self.pg0.assert_nothing_captured(
- remark="IP multicast packets forwarded on PG0")
- self.pg2.assert_nothing_captured(
- remark="IP multicast packets forwarded on PG2")
- self.pg3.assert_nothing_captured(
- remark="IP multicast packets forwarded on PG3")
+ self.pg0.assert_nothing_captured(remark="IP multicast packets forwarded on PG0")
+ self.pg2.assert_nothing_captured(remark="IP multicast packets forwarded on PG2")
+ self.pg3.assert_nothing_captured(remark="IP multicast packets forwarded on PG3")
#
# a stream that matches the route for (*,232.1.1.1)
@@ -409,8 +443,7 @@ class TestIPMcast(VppTestCase):
self.verify_capture_ip4(self.pg7, tx)
# no replications on Pg0
- self.pg0.assert_nothing_captured(
- remark="IP multicast packets forwarded on PG0")
+ self.pg0.assert_nothing_captured(remark="IP multicast packets forwarded on PG0")
self.vapi.cli("packet mac-filter pg0 off")
self.vapi.cli("packet mac-filter pg1 off")
@@ -421,7 +454,7 @@ class TestIPMcast(VppTestCase):
self.vapi.cli("packet mac-filter pg7 off")
def test_ip6_mcast(self):
- """ IPv6 Multicast Replication """
+ """IPv6 Multicast Replication"""
MRouteItfFlags = VppEnum.vl_api_mfib_itf_flags_t
MRouteEntryFlags = VppEnum.vl_api_mfib_entry_flags_t
@@ -444,7 +477,8 @@ class TestIPMcast(VppTestCase):
self.pg_start()
self.pg0.assert_nothing_captured(
- remark="IPv6 multicast packets forwarded on default route")
+ remark="IPv6 multicast packets forwarded on default route"
+ )
#
# A (*,G).
@@ -453,20 +487,32 @@ class TestIPMcast(VppTestCase):
route_ff01_1 = VppIpMRoute(
self,
"::",
- "ff01::1", 128,
+ "ff01::1",
+ 128,
MRouteEntryFlags.MFIB_API_ENTRY_FLAG_NONE,
- [VppMRoutePath(self.pg0.sw_if_index,
- MRouteItfFlags.MFIB_API_ITF_FLAG_ACCEPT,
- proto=FibPathProto.FIB_PATH_NH_PROTO_IP6),
- VppMRoutePath(self.pg1.sw_if_index,
- MRouteItfFlags.MFIB_API_ITF_FLAG_FORWARD,
- proto=FibPathProto.FIB_PATH_NH_PROTO_IP6),
- VppMRoutePath(self.pg2.sw_if_index,
- MRouteItfFlags.MFIB_API_ITF_FLAG_FORWARD,
- proto=FibPathProto.FIB_PATH_NH_PROTO_IP6),
- VppMRoutePath(self.pg3.sw_if_index,
- MRouteItfFlags.MFIB_API_ITF_FLAG_FORWARD,
- proto=FibPathProto.FIB_PATH_NH_PROTO_IP6)])
+ [
+ VppMRoutePath(
+ self.pg0.sw_if_index,
+ MRouteItfFlags.MFIB_API_ITF_FLAG_ACCEPT,
+ proto=FibPathProto.FIB_PATH_NH_PROTO_IP6,
+ ),
+ VppMRoutePath(
+ self.pg1.sw_if_index,
+ MRouteItfFlags.MFIB_API_ITF_FLAG_FORWARD,
+ proto=FibPathProto.FIB_PATH_NH_PROTO_IP6,
+ ),
+ VppMRoutePath(
+ self.pg2.sw_if_index,
+ MRouteItfFlags.MFIB_API_ITF_FLAG_FORWARD,
+ proto=FibPathProto.FIB_PATH_NH_PROTO_IP6,
+ ),
+ VppMRoutePath(
+ self.pg3.sw_if_index,
+ MRouteItfFlags.MFIB_API_ITF_FLAG_FORWARD,
+ proto=FibPathProto.FIB_PATH_NH_PROTO_IP6,
+ ),
+ ],
+ )
route_ff01_1.add_vpp_config()
#
@@ -476,17 +522,27 @@ class TestIPMcast(VppTestCase):
route_2001_ff01_1 = VppIpMRoute(
self,
"2001::1",
- "ff01::1", 0, # any grp-len is ok when src is set
+ "ff01::1",
+ 0, # any grp-len is ok when src is set
MRouteEntryFlags.MFIB_API_ENTRY_FLAG_NONE,
- [VppMRoutePath(self.pg0.sw_if_index,
- MRouteItfFlags.MFIB_API_ITF_FLAG_ACCEPT,
- proto=FibPathProto.FIB_PATH_NH_PROTO_IP6),
- VppMRoutePath(self.pg1.sw_if_index,
- MRouteItfFlags.MFIB_API_ITF_FLAG_FORWARD,
- proto=FibPathProto.FIB_PATH_NH_PROTO_IP6),
- VppMRoutePath(self.pg2.sw_if_index,
- MRouteItfFlags.MFIB_API_ITF_FLAG_FORWARD,
- proto=FibPathProto.FIB_PATH_NH_PROTO_IP6)])
+ [
+ VppMRoutePath(
+ self.pg0.sw_if_index,
+ MRouteItfFlags.MFIB_API_ITF_FLAG_ACCEPT,
+ proto=FibPathProto.FIB_PATH_NH_PROTO_IP6,
+ ),
+ VppMRoutePath(
+ self.pg1.sw_if_index,
+ MRouteItfFlags.MFIB_API_ITF_FLAG_FORWARD,
+ proto=FibPathProto.FIB_PATH_NH_PROTO_IP6,
+ ),
+ VppMRoutePath(
+ self.pg2.sw_if_index,
+ MRouteItfFlags.MFIB_API_ITF_FLAG_FORWARD,
+ proto=FibPathProto.FIB_PATH_NH_PROTO_IP6,
+ ),
+ ],
+ )
route_2001_ff01_1.add_vpp_config()
#
@@ -496,14 +552,22 @@ class TestIPMcast(VppTestCase):
route_ff01 = VppIpMRoute(
self,
"::",
- "ff01::", 16,
+ "ff01::",
+ 16,
MRouteEntryFlags.MFIB_API_ENTRY_FLAG_NONE,
- [VppMRoutePath(self.pg0.sw_if_index,
- MRouteItfFlags.MFIB_API_ITF_FLAG_ACCEPT,
- proto=FibPathProto.FIB_PATH_NH_PROTO_IP6),
- VppMRoutePath(self.pg1.sw_if_index,
- MRouteItfFlags.MFIB_API_ITF_FLAG_FORWARD,
- proto=FibPathProto.FIB_PATH_NH_PROTO_IP6)])
+ [
+ VppMRoutePath(
+ self.pg0.sw_if_index,
+ MRouteItfFlags.MFIB_API_ITF_FLAG_ACCEPT,
+ proto=FibPathProto.FIB_PATH_NH_PROTO_IP6,
+ ),
+ VppMRoutePath(
+ self.pg1.sw_if_index,
+ MRouteItfFlags.MFIB_API_ITF_FLAG_FORWARD,
+ proto=FibPathProto.FIB_PATH_NH_PROTO_IP6,
+ ),
+ ],
+ )
route_ff01.add_vpp_config()
#
@@ -514,7 +578,8 @@ class TestIPMcast(VppTestCase):
tx = self.create_stream_ip6(self.pg1, "2002::1", "ff01:2::255")
self.send_and_assert_no_replies(self.pg1, tx, "RPF miss")
count = self.statistics.get_err_counter(
- "/err/ip6-input/Multicast RPF check failed")
+ "/err/ip6-input/Multicast RPF check failed"
+ )
self.assertEqual(count, 2 * len(tx))
#
@@ -532,12 +597,9 @@ class TestIPMcast(VppTestCase):
self.verify_capture_ip6(self.pg1, tx)
# no replications on Pg0, Pg3
- self.pg0.assert_nothing_captured(
- remark="IP multicast packets forwarded on PG0")
- self.pg2.assert_nothing_captured(
- remark="IP multicast packets forwarded on PG2")
- self.pg3.assert_nothing_captured(
- remark="IP multicast packets forwarded on PG3")
+ self.pg0.assert_nothing_captured(remark="IP multicast packets forwarded on PG0")
+ self.pg2.assert_nothing_captured(remark="IP multicast packets forwarded on PG2")
+ self.pg3.assert_nothing_captured(remark="IP multicast packets forwarded on PG3")
#
# Bounce the interface and it should still work
@@ -547,7 +609,8 @@ class TestIPMcast(VppTestCase):
self.pg_enable_capture(self.pg_interfaces)
self.pg_start()
self.pg1.assert_nothing_captured(
- remark="IP multicast packets forwarded on down PG1")
+ remark="IP multicast packets forwarded on down PG1"
+ )
self.pg1.admin_up()
self.pg0.add_stream(tx)
@@ -572,7 +635,8 @@ class TestIPMcast(VppTestCase):
# no replications on Pg0
self.pg0.assert_nothing_captured(
- remark="IPv6 multicast packets forwarded on PG0")
+ remark="IPv6 multicast packets forwarded on PG0"
+ )
#
# a stream that matches the route for (2001::1, ff00::1)
@@ -589,10 +653,8 @@ class TestIPMcast(VppTestCase):
self.verify_capture_ip6(self.pg2, tx)
# no replications on Pg0, Pg3
- self.pg0.assert_nothing_captured(
- remark="IP multicast packets forwarded on PG0")
- self.pg3.assert_nothing_captured(
- remark="IP multicast packets forwarded on PG3")
+ self.pg0.assert_nothing_captured(remark="IP multicast packets forwarded on PG0")
+ self.pg3.assert_nothing_captured(remark="IP multicast packets forwarded on PG3")
self.vapi.cli("packet mac-filter pg0 off")
self.vapi.cli("packet mac-filter pg1 off")
@@ -604,9 +666,7 @@ class TestIPMcast(VppTestCase):
def _mcast_connected_send_stream(self, dst_ip):
self.vapi.cli("clear trace")
- tx = self.create_stream_ip4(self.pg0,
- self.pg0.remote_ip4,
- dst_ip)
+ tx = self.create_stream_ip4(self.pg0, self.pg0.remote_ip4, dst_ip)
self.pg0.add_stream(tx)
self.pg_enable_capture(self.pg_interfaces)
@@ -618,7 +678,7 @@ class TestIPMcast(VppTestCase):
return tx
def test_ip_mcast_connected(self):
- """ IP Multicast Connected Source check """
+ """IP Multicast Connected Source check"""
MRouteItfFlags = VppEnum.vl_api_mfib_itf_flags_t
MRouteEntryFlags = VppEnum.vl_api_mfib_entry_flags_t
@@ -630,16 +690,23 @@ class TestIPMcast(VppTestCase):
route_232_1_1_1 = VppIpMRoute(
self,
"0.0.0.0",
- "232.1.1.1", 32,
+ "232.1.1.1",
+ 32,
MRouteEntryFlags.MFIB_API_ENTRY_FLAG_NONE,
- [VppMRoutePath(self.pg0.sw_if_index,
- MRouteItfFlags.MFIB_API_ITF_FLAG_ACCEPT),
- VppMRoutePath(self.pg1.sw_if_index,
- MRouteItfFlags.MFIB_API_ITF_FLAG_FORWARD)])
+ [
+ VppMRoutePath(
+ self.pg0.sw_if_index, MRouteItfFlags.MFIB_API_ITF_FLAG_ACCEPT
+ ),
+ VppMRoutePath(
+ self.pg1.sw_if_index, MRouteItfFlags.MFIB_API_ITF_FLAG_FORWARD
+ ),
+ ],
+ )
route_232_1_1_1.add_vpp_config()
route_232_1_1_1.update_entry_flags(
- MRouteEntryFlags.MFIB_API_ENTRY_FLAG_CONNECTED)
+ MRouteEntryFlags.MFIB_API_ENTRY_FLAG_CONNECTED
+ )
#
# Now the (*,G) is present, send from connected source
@@ -649,10 +716,9 @@ class TestIPMcast(VppTestCase):
#
# Constrct a representation of the signal we expect on pg0
#
- signal_232_1_1_1_itf_0 = VppMFibSignal(self,
- route_232_1_1_1,
- self.pg0.sw_if_index,
- tx[0])
+ signal_232_1_1_1_itf_0 = VppMFibSignal(
+ self, route_232_1_1_1, self.pg0.sw_if_index, tx[0]
+ )
#
# read the only expected signal
@@ -680,24 +746,30 @@ class TestIPMcast(VppTestCase):
route_232_1_1_2 = VppIpMRoute(
self,
"0.0.0.0",
- "232.1.1.2", 32,
+ "232.1.1.2",
+ 32,
MRouteEntryFlags.MFIB_API_ENTRY_FLAG_NONE,
- [VppMRoutePath(self.pg0.sw_if_index,
- MRouteItfFlags.MFIB_API_ITF_FLAG_ACCEPT),
- VppMRoutePath(self.pg1.sw_if_index,
- MRouteItfFlags.MFIB_API_ITF_FLAG_FORWARD)])
+ [
+ VppMRoutePath(
+ self.pg0.sw_if_index, MRouteItfFlags.MFIB_API_ITF_FLAG_ACCEPT
+ ),
+ VppMRoutePath(
+ self.pg1.sw_if_index, MRouteItfFlags.MFIB_API_ITF_FLAG_FORWARD
+ ),
+ ],
+ )
route_232_1_1_2.add_vpp_config()
route_232_1_1_2.update_entry_flags(
- MRouteEntryFlags.MFIB_API_ENTRY_FLAG_CONNECTED)
+ MRouteEntryFlags.MFIB_API_ENTRY_FLAG_CONNECTED
+ )
#
# Send traffic to both entries. One read should net us two signals
#
- signal_232_1_1_2_itf_0 = VppMFibSignal(self,
- route_232_1_1_2,
- self.pg0.sw_if_index,
- tx[0])
+ signal_232_1_1_2_itf_0 = VppMFibSignal(
+ self, route_232_1_1_2, self.pg0.sw_if_index, tx[0]
+ )
tx = self._mcast_connected_send_stream("232.1.1.1")
tx2 = self._mcast_connected_send_stream("232.1.1.2")
@@ -711,13 +783,11 @@ class TestIPMcast(VppTestCase):
signal_232_1_1_1_itf_0.compare(signals[1])
signal_232_1_1_2_itf_0.compare(signals[0])
- route_232_1_1_1.update_entry_flags(
- MRouteEntryFlags.MFIB_API_ENTRY_FLAG_NONE)
- route_232_1_1_2.update_entry_flags(
- MRouteEntryFlags.MFIB_API_ENTRY_FLAG_NONE)
+ route_232_1_1_1.update_entry_flags(MRouteEntryFlags.MFIB_API_ENTRY_FLAG_NONE)
+ route_232_1_1_2.update_entry_flags(MRouteEntryFlags.MFIB_API_ENTRY_FLAG_NONE)
def test_ip_mcast_signal(self):
- """ IP Multicast Signal """
+ """IP Multicast Signal"""
MRouteItfFlags = VppEnum.vl_api_mfib_itf_flags_t
MRouteEntryFlags = VppEnum.vl_api_mfib_entry_flags_t
@@ -729,17 +799,22 @@ class TestIPMcast(VppTestCase):
route_232_1_1_1 = VppIpMRoute(
self,
"0.0.0.0",
- "232.1.1.1", 32,
+ "232.1.1.1",
+ 32,
MRouteEntryFlags.MFIB_API_ENTRY_FLAG_NONE,
- [VppMRoutePath(self.pg0.sw_if_index,
- MRouteItfFlags.MFIB_API_ITF_FLAG_ACCEPT),
- VppMRoutePath(self.pg1.sw_if_index,
- MRouteItfFlags.MFIB_API_ITF_FLAG_FORWARD)])
+ [
+ VppMRoutePath(
+ self.pg0.sw_if_index, MRouteItfFlags.MFIB_API_ITF_FLAG_ACCEPT
+ ),
+ VppMRoutePath(
+ self.pg1.sw_if_index, MRouteItfFlags.MFIB_API_ITF_FLAG_FORWARD
+ ),
+ ],
+ )
route_232_1_1_1.add_vpp_config()
- route_232_1_1_1.update_entry_flags(
- MRouteEntryFlags.MFIB_API_ENTRY_FLAG_SIGNAL)
+ route_232_1_1_1.update_entry_flags(MRouteEntryFlags.MFIB_API_ENTRY_FLAG_SIGNAL)
#
# Now the (*,G) is present, send from connected source
@@ -749,10 +824,9 @@ class TestIPMcast(VppTestCase):
#
# Constrct a representation of the signal we expect on pg0
#
- signal_232_1_1_1_itf_0 = VppMFibSignal(self,
- route_232_1_1_1,
- self.pg0.sw_if_index,
- tx[0])
+ signal_232_1_1_1_itf_0 = VppMFibSignal(
+ self, route_232_1_1_1, self.pg0.sw_if_index, tx[0]
+ )
#
# read the only expected signal
@@ -779,8 +853,11 @@ class TestIPMcast(VppTestCase):
#
route_232_1_1_1.update_path_flags(
self.pg0.sw_if_index,
- (MRouteItfFlags.MFIB_API_ITF_FLAG_ACCEPT |
- MRouteItfFlags.MFIB_API_ITF_FLAG_NEGATE_SIGNAL))
+ (
+ MRouteItfFlags.MFIB_API_ITF_FLAG_ACCEPT
+ | MRouteItfFlags.MFIB_API_ITF_FLAG_NEGATE_SIGNAL
+ ),
+ )
self.vapi.cli("clear trace")
tx = self._mcast_connected_send_stream("232.1.1.1")
@@ -792,8 +869,7 @@ class TestIPMcast(VppTestCase):
# Clear the SIGNAL flag on the entry and the signals should
# come back since the interface is still NEGATE-SIGNAL
#
- route_232_1_1_1.update_entry_flags(
- MRouteEntryFlags.MFIB_API_ENTRY_FLAG_NONE)
+ route_232_1_1_1.update_entry_flags(MRouteEntryFlags.MFIB_API_ENTRY_FLAG_NONE)
tx = self._mcast_connected_send_stream("232.1.1.1")
@@ -806,15 +882,15 @@ class TestIPMcast(VppTestCase):
# signals should stop
#
route_232_1_1_1.update_path_flags(
- self.pg0.sw_if_index,
- MRouteItfFlags.MFIB_API_ITF_FLAG_ACCEPT)
+ self.pg0.sw_if_index, MRouteItfFlags.MFIB_API_ITF_FLAG_ACCEPT
+ )
tx = self._mcast_connected_send_stream("232.1.1.1")
signals = self.vapi.mfib_signal_dump()
self.assertEqual(0, len(signals))
def test_ip_mcast_vrf(self):
- """ IP Multicast Replication in non-default table"""
+ """IP Multicast Replication in non-default table"""
MRouteItfFlags = VppEnum.vl_api_mfib_itf_flags_t
MRouteEntryFlags = VppEnum.vl_api_mfib_entry_flags_t
@@ -826,15 +902,22 @@ class TestIPMcast(VppTestCase):
route_1_1_1_1_232_1_1_1 = VppIpMRoute(
self,
"1.1.1.1",
- "232.1.1.1", 64,
+ "232.1.1.1",
+ 64,
MRouteEntryFlags.MFIB_API_ENTRY_FLAG_NONE,
- [VppMRoutePath(self.pg8.sw_if_index,
- MRouteItfFlags.MFIB_API_ITF_FLAG_ACCEPT),
- VppMRoutePath(self.pg1.sw_if_index,
- MRouteItfFlags.MFIB_API_ITF_FLAG_FORWARD),
- VppMRoutePath(self.pg2.sw_if_index,
- MRouteItfFlags.MFIB_API_ITF_FLAG_FORWARD)],
- table_id=10)
+ [
+ VppMRoutePath(
+ self.pg8.sw_if_index, MRouteItfFlags.MFIB_API_ITF_FLAG_ACCEPT
+ ),
+ VppMRoutePath(
+ self.pg1.sw_if_index, MRouteItfFlags.MFIB_API_ITF_FLAG_FORWARD
+ ),
+ VppMRoutePath(
+ self.pg2.sw_if_index, MRouteItfFlags.MFIB_API_ITF_FLAG_FORWARD
+ ),
+ ],
+ table_id=10,
+ )
route_1_1_1_1_232_1_1_1.add_vpp_config()
#
@@ -858,14 +941,21 @@ class TestIPMcast(VppTestCase):
route_0_0_0_0_224_0_0_5 = VppIpMRoute(
self,
"0.0.0.0",
- "224.0.0.5", 32,
+ "224.0.0.5",
+ 32,
MRouteEntryFlags.MFIB_API_ENTRY_FLAG_NONE,
- [VppMRoutePath(self.pg8.sw_if_index,
- MRouteItfFlags.MFIB_API_ITF_FLAG_ACCEPT),
- VppMRoutePath(0xffffffff,
- MRouteItfFlags.MFIB_API_ITF_FLAG_FORWARD,
- type=FibPathType.FIB_PATH_TYPE_LOCAL)],
- table_id=10)
+ [
+ VppMRoutePath(
+ self.pg8.sw_if_index, MRouteItfFlags.MFIB_API_ITF_FLAG_ACCEPT
+ ),
+ VppMRoutePath(
+ 0xFFFFFFFF,
+ MRouteItfFlags.MFIB_API_ITF_FLAG_FORWARD,
+ type=FibPathType.FIB_PATH_TYPE_LOCAL,
+ ),
+ ],
+ table_id=10,
+ )
route_0_0_0_0_224_0_0_5.add_vpp_config()
#
@@ -879,34 +969,33 @@ class TestIPMcast(VppTestCase):
# send a ping to mcast address from peer on pg8
# expect a response
#
- icmp_id = 0xb
+ icmp_id = 0xB
icmp_seq = 5
- icmp_load = b'\x0a' * 18
- tx = (Ether(dst=getmacbyip("224.0.0.5"), src=self.pg8.remote_mac) /
- IP(src=self.pg8.remote_ip4, dst="224.0.0.5") /
- ICMP(id=icmp_id, seq=icmp_seq) /
- Raw(load=icmp_load)) * 2
+ icmp_load = b"\x0a" * 18
+ tx = (
+ Ether(dst=getmacbyip("224.0.0.5"), src=self.pg8.remote_mac)
+ / IP(src=self.pg8.remote_ip4, dst="224.0.0.5")
+ / ICMP(id=icmp_id, seq=icmp_seq)
+ / Raw(load=icmp_load)
+ ) * 2
self.send_and_expect(self.pg8, tx, self.pg8)
def test_ip_mcast_gre(self):
- """ IP Multicast Replication over GRE"""
+ """IP Multicast Replication over GRE"""
MRouteItfFlags = VppEnum.vl_api_mfib_itf_flags_t
MRouteEntryFlags = VppEnum.vl_api_mfib_entry_flags_t
gre_if_1 = VppGreInterface(
- self,
- self.pg1.local_ip4,
- self.pg1.remote_ip4).add_vpp_config()
+ self, self.pg1.local_ip4, self.pg1.remote_ip4
+ ).add_vpp_config()
gre_if_2 = VppGreInterface(
- self,
- self.pg2.local_ip4,
- self.pg2.remote_ip4).add_vpp_config()
+ self, self.pg2.local_ip4, self.pg2.remote_ip4
+ ).add_vpp_config()
gre_if_3 = VppGreInterface(
- self,
- self.pg3.local_ip4,
- self.pg3.remote_ip4).add_vpp_config()
+ self, self.pg3.local_ip4, self.pg3.remote_ip4
+ ).add_vpp_config()
gre_if_1.admin_up()
gre_if_1.config_ip4()
@@ -922,28 +1011,35 @@ class TestIPMcast(VppTestCase):
route_1_1_1_1_232_1_1_1 = VppIpMRoute(
self,
"1.1.1.1",
- "232.2.2.2", 64,
+ "232.2.2.2",
+ 64,
MRouteEntryFlags.MFIB_API_ENTRY_FLAG_NONE,
- [VppMRoutePath(gre_if_1.sw_if_index,
- MRouteItfFlags.MFIB_API_ITF_FLAG_ACCEPT),
- VppMRoutePath(gre_if_2.sw_if_index,
- MRouteItfFlags.MFIB_API_ITF_FLAG_FORWARD),
- VppMRoutePath(gre_if_3.sw_if_index,
- MRouteItfFlags.MFIB_API_ITF_FLAG_FORWARD)])
+ [
+ VppMRoutePath(
+ gre_if_1.sw_if_index, MRouteItfFlags.MFIB_API_ITF_FLAG_ACCEPT
+ ),
+ VppMRoutePath(
+ gre_if_2.sw_if_index, MRouteItfFlags.MFIB_API_ITF_FLAG_FORWARD
+ ),
+ VppMRoutePath(
+ gre_if_3.sw_if_index, MRouteItfFlags.MFIB_API_ITF_FLAG_FORWARD
+ ),
+ ],
+ )
route_1_1_1_1_232_1_1_1.add_vpp_config()
#
# a stream that matches the route for (1.1.1.1,232.2.2.2)
# small packets
#
- tx = (Ether(dst=self.pg1.local_mac,
- src=self.pg1.remote_mac) /
- IP(src=self.pg1.remote_ip4,
- dst=self.pg1.local_ip4) /
- GRE() /
- IP(src="1.1.1.1", dst="232.2.2.2") /
- UDP(sport=1234, dport=1234) /
- Raw(b'\a5' * 64)) * 63
+ tx = (
+ Ether(dst=self.pg1.local_mac, src=self.pg1.remote_mac)
+ / IP(src=self.pg1.remote_ip4, dst=self.pg1.local_ip4)
+ / GRE()
+ / IP(src="1.1.1.1", dst="232.2.2.2")
+ / UDP(sport=1234, dport=1234)
+ / Raw(b"\a5" * 64)
+ ) * 63
self.vapi.cli("clear trace")
self.pg1.add_stream(tx)
@@ -966,23 +1062,20 @@ class TestIPMcast(VppTestCase):
self.assert_packet_checksums_valid(rx)
def test_ip6_mcast_gre(self):
- """ IP6 Multicast Replication over GRE"""
+ """IP6 Multicast Replication over GRE"""
MRouteItfFlags = VppEnum.vl_api_mfib_itf_flags_t
MRouteEntryFlags = VppEnum.vl_api_mfib_entry_flags_t
gre_if_1 = VppGreInterface(
- self,
- self.pg1.local_ip4,
- self.pg1.remote_ip4).add_vpp_config()
+ self, self.pg1.local_ip4, self.pg1.remote_ip4
+ ).add_vpp_config()
gre_if_2 = VppGreInterface(
- self,
- self.pg2.local_ip4,
- self.pg2.remote_ip4).add_vpp_config()
+ self, self.pg2.local_ip4, self.pg2.remote_ip4
+ ).add_vpp_config()
gre_if_3 = VppGreInterface(
- self,
- self.pg3.local_ip4,
- self.pg3.remote_ip4).add_vpp_config()
+ self, self.pg3.local_ip4, self.pg3.remote_ip4
+ ).add_vpp_config()
gre_if_1.admin_up()
gre_if_1.config_ip6()
@@ -998,28 +1091,35 @@ class TestIPMcast(VppTestCase):
route_1_1_FF_1 = VppIpMRoute(
self,
"1::1",
- "FF00::1", 256,
+ "FF00::1",
+ 256,
MRouteEntryFlags.MFIB_API_ENTRY_FLAG_NONE,
- [VppMRoutePath(gre_if_1.sw_if_index,
- MRouteItfFlags.MFIB_API_ITF_FLAG_ACCEPT),
- VppMRoutePath(gre_if_2.sw_if_index,
- MRouteItfFlags.MFIB_API_ITF_FLAG_FORWARD),
- VppMRoutePath(gre_if_3.sw_if_index,
- MRouteItfFlags.MFIB_API_ITF_FLAG_FORWARD)])
+ [
+ VppMRoutePath(
+ gre_if_1.sw_if_index, MRouteItfFlags.MFIB_API_ITF_FLAG_ACCEPT
+ ),
+ VppMRoutePath(
+ gre_if_2.sw_if_index, MRouteItfFlags.MFIB_API_ITF_FLAG_FORWARD
+ ),
+ VppMRoutePath(
+ gre_if_3.sw_if_index, MRouteItfFlags.MFIB_API_ITF_FLAG_FORWARD
+ ),
+ ],
+ )
route_1_1_FF_1.add_vpp_config()
#
# a stream that matches the route for (1::1, FF::1)
# small packets
#
- tx = (Ether(dst=self.pg1.local_mac,
- src=self.pg1.remote_mac) /
- IP(src=self.pg1.remote_ip4,
- dst=self.pg1.local_ip4) /
- GRE() /
- IPv6(src="1::1", dst="FF00::1") /
- UDP(sport=1234, dport=1234) /
- Raw(b'\a5' * 64)) * 63
+ tx = (
+ Ether(dst=self.pg1.local_mac, src=self.pg1.remote_mac)
+ / IP(src=self.pg1.remote_ip4, dst=self.pg1.local_ip4)
+ / GRE()
+ / IPv6(src="1::1", dst="FF00::1")
+ / UDP(sport=1234, dport=1234)
+ / Raw(b"\a5" * 64)
+ ) * 63
self.vapi.cli("clear trace")
self.pg1.add_stream(tx)
@@ -1042,7 +1142,7 @@ class TestIPMcast(VppTestCase):
self.assert_packet_checksums_valid(rx)
def test_ip6_mcast_vrf(self):
- """ IPv6 Multicast Replication in non-default table"""
+ """IPv6 Multicast Replication in non-default table"""
MRouteItfFlags = VppEnum.vl_api_mfib_itf_flags_t
MRouteEntryFlags = VppEnum.vl_api_mfib_entry_flags_t
@@ -1054,18 +1154,28 @@ class TestIPMcast(VppTestCase):
route_2001_ff01_1 = VppIpMRoute(
self,
"2001::1",
- "ff01::1", 256,
+ "ff01::1",
+ 256,
MRouteEntryFlags.MFIB_API_ENTRY_FLAG_NONE,
- [VppMRoutePath(self.pg8.sw_if_index,
- MRouteItfFlags.MFIB_API_ITF_FLAG_ACCEPT,
- proto=FibPathProto.FIB_PATH_NH_PROTO_IP6),
- VppMRoutePath(self.pg1.sw_if_index,
- MRouteItfFlags.MFIB_API_ITF_FLAG_FORWARD,
- proto=FibPathProto.FIB_PATH_NH_PROTO_IP6),
- VppMRoutePath(self.pg2.sw_if_index,
- MRouteItfFlags.MFIB_API_ITF_FLAG_FORWARD,
- proto=FibPathProto.FIB_PATH_NH_PROTO_IP6)],
- table_id=10)
+ [
+ VppMRoutePath(
+ self.pg8.sw_if_index,
+ MRouteItfFlags.MFIB_API_ITF_FLAG_ACCEPT,
+ proto=FibPathProto.FIB_PATH_NH_PROTO_IP6,
+ ),
+ VppMRoutePath(
+ self.pg1.sw_if_index,
+ MRouteItfFlags.MFIB_API_ITF_FLAG_FORWARD,
+ proto=FibPathProto.FIB_PATH_NH_PROTO_IP6,
+ ),
+ VppMRoutePath(
+ self.pg2.sw_if_index,
+ MRouteItfFlags.MFIB_API_ITF_FLAG_FORWARD,
+ proto=FibPathProto.FIB_PATH_NH_PROTO_IP6,
+ ),
+ ],
+ table_id=10,
+ )
route_2001_ff01_1.add_vpp_config()
#
@@ -1083,7 +1193,7 @@ class TestIPMcast(VppTestCase):
self.verify_capture_ip6(self.pg2, tx)
def test_bidir(self):
- """ IP Multicast Bi-directional """
+ """IP Multicast Bi-directional"""
MRouteItfFlags = VppEnum.vl_api_mfib_itf_flags_t
MRouteEntryFlags = VppEnum.vl_api_mfib_entry_flags_t
@@ -1094,20 +1204,32 @@ class TestIPMcast(VppTestCase):
route_232_1_1_1 = VppIpMRoute(
self,
"0.0.0.0",
- "232.1.1.1", 32,
+ "232.1.1.1",
+ 32,
MRouteEntryFlags.MFIB_API_ENTRY_FLAG_NONE,
- [VppMRoutePath(self.pg0.sw_if_index,
- MRouteItfFlags.MFIB_API_ITF_FLAG_ACCEPT |
- MRouteItfFlags.MFIB_API_ITF_FLAG_FORWARD),
- VppMRoutePath(self.pg1.sw_if_index,
- MRouteItfFlags.MFIB_API_ITF_FLAG_ACCEPT |
- MRouteItfFlags.MFIB_API_ITF_FLAG_FORWARD),
- VppMRoutePath(self.pg2.sw_if_index,
- MRouteItfFlags.MFIB_API_ITF_FLAG_ACCEPT |
- MRouteItfFlags.MFIB_API_ITF_FLAG_FORWARD),
- VppMRoutePath(self.pg3.sw_if_index,
- MRouteItfFlags.MFIB_API_ITF_FLAG_ACCEPT |
- MRouteItfFlags.MFIB_API_ITF_FLAG_FORWARD)])
+ [
+ VppMRoutePath(
+ self.pg0.sw_if_index,
+ MRouteItfFlags.MFIB_API_ITF_FLAG_ACCEPT
+ | MRouteItfFlags.MFIB_API_ITF_FLAG_FORWARD,
+ ),
+ VppMRoutePath(
+ self.pg1.sw_if_index,
+ MRouteItfFlags.MFIB_API_ITF_FLAG_ACCEPT
+ | MRouteItfFlags.MFIB_API_ITF_FLAG_FORWARD,
+ ),
+ VppMRoutePath(
+ self.pg2.sw_if_index,
+ MRouteItfFlags.MFIB_API_ITF_FLAG_ACCEPT
+ | MRouteItfFlags.MFIB_API_ITF_FLAG_FORWARD,
+ ),
+ VppMRoutePath(
+ self.pg3.sw_if_index,
+ MRouteItfFlags.MFIB_API_ITF_FLAG_ACCEPT
+ | MRouteItfFlags.MFIB_API_ITF_FLAG_FORWARD,
+ ),
+ ],
+ )
route_232_1_1_1.add_vpp_config()
tx = self.create_stream_ip4(self.pg0, "1.1.1.1", "232.1.1.1")
@@ -1120,9 +1242,8 @@ class TestIPMcast(VppTestCase):
self.verify_capture_ip4(self.pg1, tx)
self.verify_capture_ip4(self.pg2, tx)
self.verify_capture_ip4(self.pg3, tx)
- self.pg0.assert_nothing_captured(
- remark="IP multicast packets forwarded on PG0")
+ self.pg0.assert_nothing_captured(remark="IP multicast packets forwarded on PG0")
-if __name__ == '__main__':
+if __name__ == "__main__":
unittest.main(testRunner=VppTestRunner)