from socket import AF_INET6
from framework import VppTestCase, VppTestRunner
-from vpp_ip_route import VppIpRoute, VppRoutePath, DpoProto
+from vpp_ip_route import VppIpRoute, VppRoutePath, DpoProto, VppIpTable
from vpp_srv6 import SRv6LocalSIDBehaviors, VppSRv6LocalSID, VppSRv6Policy, \
SRv6PolicyType, VppSRv6Steering, SRv6PolicySteeringTypes
self.logger.debug("Tear down interface %s" % (i.name))
i.admin_down()
i.unconfig()
+ i.set_table_ip4(0)
+ i.set_table_ip6(0)
@unittest.skipUnless(0, "PC to fix")
def test_SRv6_T_Encaps(self):
# configure SRv6 localSID End without PSP behavior
localsid = VppSRv6LocalSID(
- self, localsid_addr='A3::0',
+ self, localsid={'addr': 'A3::0'},
behavior=SRv6LocalSIDBehaviors.SR_BEHAVIOR_END,
- nh_addr='::',
+ nh_addr4='0.0.0.0',
+ nh_addr6='::',
end_psp=0,
sw_if_index=0,
vlan_index=0,
# configure SRv6 localSID End with PSP behavior
localsid = VppSRv6LocalSID(
- self, localsid_addr='A3::0',
+ self, localsid={'addr': 'A3::0'},
behavior=SRv6LocalSIDBehaviors.SR_BEHAVIOR_END,
- nh_addr='::',
+ nh_addr4='0.0.0.0',
+ nh_addr6='::',
end_psp=1,
sw_if_index=0,
vlan_index=0,
# configure SRv6 localSID End.X without PSP behavior
# End.X points to interface pg1
localsid = VppSRv6LocalSID(
- self, localsid_addr='A3::C4',
+ self, localsid={'addr': 'A3::C4'},
behavior=SRv6LocalSIDBehaviors.SR_BEHAVIOR_X,
- nh_addr=self.pg1.remote_ip6,
+ nh_addr4='0.0.0.0',
+ nh_addr6=self.pg1.remote_ip6,
end_psp=0,
sw_if_index=self.pg1.sw_if_index,
vlan_index=0,
# configure SRv6 localSID End with PSP behavior
localsid = VppSRv6LocalSID(
- self, localsid_addr='A3::C4',
+ self, localsid={'addr': 'A3::C4'},
behavior=SRv6LocalSIDBehaviors.SR_BEHAVIOR_X,
- nh_addr=self.pg1.remote_ip6,
+ nh_addr4='0.0.0.0',
+ nh_addr6=self.pg1.remote_ip6,
end_psp=1,
sw_if_index=self.pg1.sw_if_index,
vlan_index=0,
# configure SRv6 localSID End.DX6 behavior
localsid = VppSRv6LocalSID(
- self, localsid_addr='a3::c4',
+ self, localsid={'addr': 'A3::C4'},
behavior=SRv6LocalSIDBehaviors.SR_BEHAVIOR_DX6,
- nh_addr=self.pg1.remote_ip6,
+ nh_addr4='0.0.0.0',
+ nh_addr6=self.pg1.remote_ip6,
end_psp=0,
sw_if_index=self.pg1.sw_if_index,
vlan_index=0,
# source interface in global FIB (0)
# destination interfaces in global and vrf
vrf_1 = 1
+ ipt = VppIpTable(self, vrf_1, is_ip6=True)
+ ipt.add_vpp_config()
self.setup_interfaces(ipv6=[True, True, True],
ipv6_table_id=[0, 0, vrf_1])
# fib_table: where the localsid is installed
# sw_if_index: in T-variants of localsid this is the vrf table_id
localsid = VppSRv6LocalSID(
- self, localsid_addr='a3::c4',
+ self, localsid={'addr': 'A3::C4'},
behavior=SRv6LocalSIDBehaviors.SR_BEHAVIOR_DT6,
- nh_addr='::',
+ nh_addr4='0.0.0.0',
+ nh_addr6='::',
end_psp=0,
sw_if_index=vrf_1,
vlan_index=0,
# configure SRv6 localSID End.DX4 behavior
localsid = VppSRv6LocalSID(
- self, localsid_addr='a3::c4',
+ self, localsid={'addr': 'A3::C4'},
behavior=SRv6LocalSIDBehaviors.SR_BEHAVIOR_DX4,
- nh_addr=self.pg1.remote_ip4,
+ nh_addr4=self.pg1.remote_ip4,
+ nh_addr6='::',
end_psp=0,
sw_if_index=self.pg1.sw_if_index,
vlan_index=0,
# source interface in global FIB (0)
# destination interfaces in global and vrf
vrf_1 = 1
+ ipt = VppIpTable(self, vrf_1)
+ ipt.add_vpp_config()
self.setup_interfaces(ipv6=[True, False, False],
ipv4=[False, True, True],
ipv6_table_id=[0, 0, 0],
# fib_table: where the localsid is installed
# sw_if_index: in T-variants of localsid: vrf table_id
localsid = VppSRv6LocalSID(
- self, localsid_addr='a3::c4',
+ self, localsid={'addr': 'A3::C4'},
behavior=SRv6LocalSIDBehaviors.SR_BEHAVIOR_DT4,
- nh_addr='::',
+ nh_addr4='0.0.0.0',
+ nh_addr6='::',
end_psp=0,
sw_if_index=vrf_1,
vlan_index=0,
# configure SRv6 localSID End.DX2 behavior
localsid = VppSRv6LocalSID(
- self, localsid_addr='a3::c4',
+ self, localsid={'addr': 'A3::C4'},
behavior=SRv6LocalSIDBehaviors.SR_BEHAVIOR_DX2,
- nh_addr='::',
+ nh_addr4='0.0.0.0',
+ nh_addr6='::',
end_psp=0,
sw_if_index=self.pg1.sw_if_index,
vlan_index=0,
# add classify table
# mask on dst ip address prefix a7::/8
- mask = '{:0<16}'.format('ff')
+ mask = '{!s:0<16}'.format('ff')
r = self.vapi.classify_add_del_table(
1,
binascii.unhexlify(mask),
match_n_vectors=(len(mask) - 1) // 32 + 1,
current_data_flag=1,
skip_n_vectors=2) # data offset
- self.assertIsNotNone(r, msg='No response msg for add_del_table')
+ self.assertIsNotNone(r, 'No response msg for add_del_table')
table_index = r.new_table_index
# add the source routign node as a ip6 inacl netxt node
'sr-pl-rewrite-insert')
inacl_next_node_index = r.node_index
- match = '{:0<16}'.format('a7')
+ match = '{!s:0<16}'.format('a7')
r = self.vapi.classify_add_del_session(
1,
table_index,
hit_next_index=inacl_next_node_index,
action=3,
metadata=0) # sr policy index
- self.assertIsNotNone(r, msg='No response msg for add_del_session')
+ self.assertIsNotNone(r, 'No response msg for add_del_session')
# log the classify table used in the steering policy
self.logger.info(self.vapi.cli("show classify table"))
sw_if_index=self.pg3.sw_if_index,
ip6_table_index=table_index)
self.assertIsNotNone(r,
- msg='No response msg for input_acl_set_interface')
+ 'No response msg for input_acl_set_interface')
# log the ip6 inacl
self.logger.info(self.vapi.cli("show inacl type ip6"))
sw_if_index=self.pg3.sw_if_index,
ip6_table_index=table_index)
self.assertIsNotNone(r,
- msg='No response msg for input_acl_set_interface')
+ 'No response msg for input_acl_set_interface')
# log the ip6 inacl after cleaning
self.logger.info(self.vapi.cli("show inacl type ip6"))
0,
table_index,
binascii.unhexlify(match))
- self.assertIsNotNone(r, msg='No response msg for add_del_session')
+ self.assertIsNotNone(r, 'No response msg for add_del_session')
r = self.vapi.classify_add_del_table(
0,
binascii.unhexlify(mask),
table_index=table_index)
- self.assertIsNotNone(r, msg='No response msg for add_del_table')
+ self.assertIsNotNone(r, 'No response msg for add_del_table')
self.logger.info(self.vapi.cli("show classify table"))
# but packet[Raw] gives the complete payload
# (incl L2 header) for the T.Encaps L2 case
try:
- payload_info = self.payload_to_info(str(packet[Raw]))
+ payload_info = self.payload_to_info(packet[Raw])
except:
# remote L2 header from packet[Raw]:
compare_func(txed_packet, packet)
except:
- print packet.command()
self.logger.error(ppp("Unexpected or invalid packet:", packet))
raise