FIB table add/delete API
part 2; - this adds the code to create an IP and MPLS table via the API. - but the enforcement that the table must be created before it is used is still missing, this is so that CSIT can pass. Change-Id: Id124d884ade6cb7da947225200e3bb193454c555 Signed-off-by: Neale Ranns <nranns@cisco.com>
This commit is contained in:

committed by
Damjan Marion

parent
a7191840be
commit
1500254bee
@ -5,7 +5,7 @@ import unittest
|
||||
from framework import VppTestCase, VppTestRunner
|
||||
from vpp_sub_interface import VppSubInterface, VppDot1QSubint, VppDot1ADSubint
|
||||
from vpp_ip_route import VppIpMRoute, VppMRoutePath, VppMFibSignal, \
|
||||
MRouteItfFlags, MRouteEntryFlags
|
||||
MRouteItfFlags, MRouteEntryFlags, VppIpTable
|
||||
|
||||
from scapy.packet import Raw
|
||||
from scapy.layers.l2 import Ether
|
||||
@ -44,16 +44,37 @@ class TestIPMcast(VppTestCase):
|
||||
super(TestIPMcast, self).setUp()
|
||||
|
||||
# create 8 pg interfaces
|
||||
self.create_pg_interfaces(range(8))
|
||||
self.create_pg_interfaces(range(9))
|
||||
|
||||
# setup interfaces
|
||||
for i in self.pg_interfaces:
|
||||
for i in self.pg_interfaces[:8]:
|
||||
i.admin_up()
|
||||
i.config_ip4()
|
||||
i.config_ip6()
|
||||
i.resolve_arp()
|
||||
i.resolve_ndp()
|
||||
|
||||
# one more in a vrf
|
||||
tbl4 = VppIpTable(self, 10)
|
||||
tbl4.add_vpp_config()
|
||||
self.pg8.set_table_ip4(10)
|
||||
self.pg8.config_ip4()
|
||||
|
||||
tbl6 = VppIpTable(self, 10, is_ip6=1)
|
||||
tbl6.add_vpp_config()
|
||||
self.pg8.set_table_ip6(10)
|
||||
self.pg8.config_ip6()
|
||||
|
||||
def tearDown(self):
|
||||
for i in self.pg_interfaces:
|
||||
i.unconfig_ip4()
|
||||
i.unconfig_ip6()
|
||||
i.admin_down()
|
||||
|
||||
self.pg8.set_table_ip4(0)
|
||||
self.pg8.set_table_ip6(0)
|
||||
super(TestIPMcast, self).tearDown()
|
||||
|
||||
def create_stream_ip4(self, src_if, src_ip, dst_ip, payload_size=0):
|
||||
pkts = []
|
||||
# default to small packet sizes
|
||||
@ -663,6 +684,77 @@ class TestIPMcast(VppTestCase):
|
||||
#
|
||||
route_232_1_1_1.remove_vpp_config()
|
||||
|
||||
def test_ip_mcast_vrf(self):
|
||||
""" IP Multicast Replication in non-default table"""
|
||||
|
||||
#
|
||||
# An (S,G).
|
||||
# one accepting interface, pg0, 2 forwarding interfaces
|
||||
#
|
||||
route_1_1_1_1_232_1_1_1 = VppIpMRoute(
|
||||
self,
|
||||
"1.1.1.1",
|
||||
"232.1.1.1", 64,
|
||||
MRouteEntryFlags.MFIB_ENTRY_FLAG_NONE,
|
||||
[VppMRoutePath(self.pg8.sw_if_index,
|
||||
MRouteItfFlags.MFIB_ITF_FLAG_ACCEPT),
|
||||
VppMRoutePath(self.pg1.sw_if_index,
|
||||
MRouteItfFlags.MFIB_ITF_FLAG_FORWARD),
|
||||
VppMRoutePath(self.pg2.sw_if_index,
|
||||
MRouteItfFlags.MFIB_ITF_FLAG_FORWARD)],
|
||||
table_id=10)
|
||||
route_1_1_1_1_232_1_1_1.add_vpp_config()
|
||||
|
||||
#
|
||||
# a stream that matches the route for (1.1.1.1,232.1.1.1)
|
||||
# small packets
|
||||
#
|
||||
self.vapi.cli("clear trace")
|
||||
tx = self.create_stream_ip4(self.pg8, "1.1.1.1", "232.1.1.1")
|
||||
self.pg8.add_stream(tx)
|
||||
|
||||
self.pg_enable_capture(self.pg_interfaces)
|
||||
self.pg_start()
|
||||
|
||||
# We expect replications on Pg1 & 2
|
||||
self.verify_capture_ip4(self.pg1, tx)
|
||||
self.verify_capture_ip4(self.pg2, tx)
|
||||
|
||||
def test_ip6_mcast_vrf(self):
|
||||
""" IPv6 Multicast Replication in non-default table"""
|
||||
|
||||
#
|
||||
# An (S,G).
|
||||
# one accepting interface, pg0, 2 forwarding interfaces
|
||||
#
|
||||
route_2001_ff01_1 = VppIpMRoute(
|
||||
self,
|
||||
"2001::1",
|
||||
"ff01::1", 256,
|
||||
MRouteEntryFlags.MFIB_ENTRY_FLAG_NONE,
|
||||
[VppMRoutePath(self.pg8.sw_if_index,
|
||||
MRouteItfFlags.MFIB_ITF_FLAG_ACCEPT),
|
||||
VppMRoutePath(self.pg1.sw_if_index,
|
||||
MRouteItfFlags.MFIB_ITF_FLAG_FORWARD),
|
||||
VppMRoutePath(self.pg2.sw_if_index,
|
||||
MRouteItfFlags.MFIB_ITF_FLAG_FORWARD)],
|
||||
table_id=10,
|
||||
is_ip6=1)
|
||||
route_2001_ff01_1.add_vpp_config()
|
||||
|
||||
#
|
||||
# a stream that matches the route for (2001::1, ff00::1)
|
||||
#
|
||||
self.vapi.cli("clear trace")
|
||||
tx = self.create_stream_ip6(self.pg8, "2001::1", "ff01::1")
|
||||
self.pg8.add_stream(tx)
|
||||
|
||||
self.pg_enable_capture(self.pg_interfaces)
|
||||
self.pg_start()
|
||||
|
||||
# We expect replications on Pg1, 2,
|
||||
self.verify_capture_ip6(self.pg1, tx)
|
||||
self.verify_capture_ip6(self.pg2, tx)
|
||||
|
||||
if __name__ == '__main__':
|
||||
unittest.main(testRunner=VppTestRunner)
|
||||
|
Reference in New Issue
Block a user