X-Git-Url: https://gerrit.fd.io/r/gitweb?a=blobdiff_plain;f=test%2Ftest_gbp.py;h=718bbb4d4c96760724aa5d518db05c7b02dbaa48;hb=1c17e2ecac42e001ce905418463edcb26fe58b01;hp=f49ba4c49e114bc61ca6bdf4ee207c6e88caa8d0;hpb=774356ad5a5660cad99b6d88e0d84f657a636a55;p=vpp.git diff --git a/test/test_gbp.py b/test/test_gbp.py index f49ba4c49e1..718bbb4d4c9 100644 --- a/test/test_gbp.py +++ b/test/test_gbp.py @@ -2,7 +2,8 @@ import unittest -from framework import VppTestCase, VppTestRunner +from framework import VppTestCase, VppTestRunner, is_skip_aarch64_set, \ + is_platform_aarch64 from vpp_object import VppObject from vpp_neighbor import VppNeighbor from vpp_ip_route import VppIpRoute, VppRoutePath, VppIpTable, \ @@ -13,9 +14,8 @@ from vpp_vxlan_gbp_tunnel import * from vpp_sub_interface import VppDot1QSubint from vpp_ip import * -from vpp_mac import * from vpp_papi_provider import L2_PORT_TYPE -from vpp_papi import VppEnum +from vpp_papi import VppEnum, MACAddress from scapy.packet import Raw from scapy.layers.l2 import Ether, ARP, Dot1Q @@ -24,10 +24,10 @@ from scapy.layers.inet6 import IPv6, ICMPv6ND_NS, ICMPv6NDOptSrcLLAddr, \ ICMPv6ND_NA from scapy.utils6 import in6_getnsma, in6_getnsmac from scapy.layers.vxlan import VXLAN +from scapy.data import ETH_P_IP, ETH_P_IPV6 from socket import AF_INET, AF_INET6 from scapy.utils import inet_pton, inet_ntop -from util import mactobinary from vpp_papi_provider import L2_VTR_OP @@ -35,7 +35,7 @@ def find_gbp_endpoint(test, sw_if_index=None, ip=None, mac=None): if ip: vip = VppIpAddress(ip) if mac: - vmac = VppMacAddress(mac) + vmac = MACAddress(mac) eps = test.vapi.gbp_endpoint_dump() @@ -48,7 +48,7 @@ def find_gbp_endpoint(test, sw_if_index=None, ip=None, mac=None): if vip == eip: return True if mac: - if vmac == ep.endpoint.mac: + if vmac.packed == ep.endpoint.mac: return True return False @@ -66,13 +66,9 @@ class VppGbpEndpoint(VppObject): GBP Endpoint """ - @property - def bin_mac(self): - return self.vmac.bytes - @property def mac(self): - return self.vmac.address + return str(self.vmac) @property def mac(self): @@ -118,9 +114,9 @@ class VppGbpEndpoint(VppObject): self._fip6 = VppIpAddress(fip6) if mac: - self.vmac = VppMacAddress(self.itf.remote_mac) + self.vmac = MACAddress(self.itf.remote_mac) else: - self.vmac = VppMacAddress("00:00:00:00:00:00") + self.vmac = MACAddress("00:00:00:00:00:00") self.flags = flags self.tun_src = VppIpAddress(tun_src) @@ -130,7 +126,7 @@ class VppGbpEndpoint(VppObject): res = self._test.vapi.gbp_endpoint_add( self.itf.sw_if_index, [self.ip4.encode(), self.ip6.encode()], - self.vmac.encode(), + self.vmac.packed, self.epg.epg, self.flags, self.tun_src.encode(), @@ -414,7 +410,7 @@ class VppGbpContractNextHop(): def encode(self): return {'ip': self.ip.encode(), - 'mac': self.mac.encode(), + 'mac': self.mac.packed, 'bd_id': self.bd.bd.bd_id, 'rd_id': self.rd.rd_id} @@ -443,12 +439,14 @@ class VppGbpContract(VppObject): GBP Contract """ - def __init__(self, test, src_epg, dst_epg, acl_index, rules=[]): + def __init__(self, test, src_epg, dst_epg, acl_index, + rules, allowed_ethertypes): self._test = test self.acl_index = acl_index self.src_epg = src_epg self.dst_epg = dst_epg self.rules = rules + self.allowed_ethertypes = allowed_ethertypes def add_vpp_config(self): rules = [] @@ -459,7 +457,8 @@ class VppGbpContract(VppObject): self.src_epg, self.dst_epg, self.acl_index, - rules) + rules, + self.allowed_ethertypes) self._test.registry.register(self, self._test.logger) def remove_vpp_config(self): @@ -468,7 +467,7 @@ class VppGbpContract(VppObject): self.src_epg, self.dst_epg, self.acl_index, - []) + [], []) def __str__(self): return self.object_id() @@ -584,7 +583,7 @@ class TestGBP(VppTestCase): self.create_pg_interfaces(range(9)) self.create_loopback_interfaces(8) - self.router_mac = VppMacAddress("00:11:22:33:44:55") + self.router_mac = MACAddress("00:11:22:33:44:55") for i in self.pg_interfaces: i.admin_up() @@ -671,7 +670,7 @@ class TestGBP(VppTestCase): rx = self.send_and_expect(src, tx, dst) for r in rx: - self.assertEqual(r[Ether].src, self.router_mac.address) + self.assertEqual(r[Ether].src, str(self.router_mac)) self.assertEqual(r[Ether].dst, dst.remote_mac) self.assertEqual(r[IP].dst, dst_ip) self.assertEqual(r[IP].src, src_ip) @@ -681,7 +680,7 @@ class TestGBP(VppTestCase): rx = self.send_and_expect(src, tx, dst) for r in rx: - self.assertEqual(r[Ether].src, self.router_mac.address) + self.assertEqual(r[Ether].src, str(self.router_mac)) self.assertEqual(r[Ether].dst, dst.remote_mac) self.assertEqual(r[IPv6].dst, dst_ip) self.assertEqual(r[IPv6].src, src_ip) @@ -797,7 +796,7 @@ class TestGBP(VppTestCase): VppIpInterfaceBind(self, epg.bvi, epg.rd.t6).add_vpp_config() self.vapi.sw_interface_set_mac_address( epg.bvi.sw_if_index, - self.router_mac.bytes) + self.router_mac.packed) # The BVIs are NAT inside interfaces self.vapi.nat44_interface_add_del_feature(epg.bvi.sw_if_index, @@ -818,10 +817,10 @@ class TestGBP(VppTestCase): # add the BD ARP termination entry for BVI IP epg.bd_arp_ip4 = VppBridgeDomainArpEntry(self, epg.bd.bd, - self.router_mac.address, + str(self.router_mac), epg.bvi_ip4) epg.bd_arp_ip6 = VppBridgeDomainArpEntry(self, epg.bd.bd, - self.router_mac.address, + str(self.router_mac), epg.bvi_ip6) epg.bd_arp_ip4.add_vpp_config() epg.bd_arp_ip6.add_vpp_config() @@ -977,13 +976,13 @@ class TestGBP(VppTestCase): # packets to non-local L3 destinations dropped # pkt_intra_epg_220_ip4 = (Ether(src=self.pg0.remote_mac, - dst=self.router_mac.address) / + dst=str(self.router_mac)) / IP(src=eps[0].ip4.address, dst="10.0.0.99") / UDP(sport=1234, dport=1234) / Raw('\xa5' * 100)) pkt_inter_epg_222_ip4 = (Ether(src=self.pg0.remote_mac, - dst=self.router_mac.address) / + dst=str(self.router_mac)) / IP(src=eps[0].ip4.address, dst="10.0.1.99") / UDP(sport=1234, dport=1234) / @@ -992,7 +991,7 @@ class TestGBP(VppTestCase): self.send_and_assert_no_replies(self.pg0, pkt_intra_epg_220_ip4 * 65) pkt_inter_epg_222_ip6 = (Ether(src=self.pg0.remote_mac, - dst=self.router_mac.address) / + dst=str(self.router_mac)) / IPv6(src=eps[0].ip6.address, dst="2001:10::99") / UDP(sport=1234, dport=1234) / @@ -1120,7 +1119,7 @@ class TestGBP(VppTestCase): UDP(sport=1234, dport=1234) / Raw('\xa5' * 100)) pkt_inter_epg_220_to_222 = (Ether(src=self.pg0.remote_mac, - dst=self.router_mac.address) / + dst=str(self.router_mac)) / IP(src=eps[0].ip4.address, dst=eps[3].ip4.address) / UDP(sport=1234, dport=1234) / @@ -1145,7 +1144,8 @@ class TestGBP(VppTestCase): []), VppGbpContractRule( VppEnum.vl_api_gbp_rule_action_t.GBP_API_RULE_PERMIT, - [])]) + [])], + [ETH_P_IP, ETH_P_IPV6]) c1.add_vpp_config() self.send_and_expect_bridged(eps[0].itf, @@ -1164,8 +1164,8 @@ class TestGBP(VppTestCase): []), VppGbpContractRule( VppEnum.vl_api_gbp_rule_action_t.GBP_API_RULE_PERMIT, - [])]) - + [])], + [ETH_P_IP, ETH_P_IPV6]) c2.add_vpp_config() self.send_and_expect_bridged(eps[0].itf, @@ -1175,6 +1175,15 @@ class TestGBP(VppTestCase): pkt_inter_epg_221_to_220 * 65, eps[0].itf) + # + # the contract does not allow non-IP + # + pkt_non_ip_inter_epg_220_to_221 = (Ether(src=self.pg0.remote_mac, + dst=self.pg2.remote_mac) / + ARP()) + self.send_and_assert_no_replies(eps[0].itf, + pkt_non_ip_inter_epg_220_to_221 * 17) + # # check that inter group is still disabled for the groups # not in the contract. @@ -1192,8 +1201,8 @@ class TestGBP(VppTestCase): []), VppGbpContractRule( VppEnum.vl_api_gbp_rule_action_t.GBP_API_RULE_PERMIT, - [])]) - + [])], + [ETH_P_IP, ETH_P_IPV6]) c3.add_vpp_config() self.logger.info(self.vapi.cli("sh gbp contract")) @@ -1201,7 +1210,7 @@ class TestGBP(VppTestCase): self.send_and_expect_routed(eps[0].itf, pkt_inter_epg_220_to_222 * 65, eps[3].itf, - self.router_mac.address) + str(self.router_mac)) # # remove both contracts, traffic stops in both directions @@ -1272,7 +1281,7 @@ class TestGBP(VppTestCase): # From an EP to an outside addess: IN2OUT # pkt_inter_epg_220_to_global = (Ether(src=self.pg0.remote_mac, - dst=self.router_mac.address) / + dst=str(self.router_mac)) / IP(src=eps[0].ip4.address, dst="1.1.1.1") / UDP(sport=1234, dport=1234) / @@ -1297,8 +1306,8 @@ class TestGBP(VppTestCase): []), VppGbpContractRule( VppEnum.vl_api_gbp_rule_action_t.GBP_API_RULE_PERMIT, - [])]) - + [])], + [ETH_P_IP, ETH_P_IPV6]) c4.add_vpp_config() self.send_and_expect_natted(eps[0].itf, @@ -1307,7 +1316,7 @@ class TestGBP(VppTestCase): eps[0].fip4.address) pkt_inter_epg_220_to_global = (Ether(src=self.pg0.remote_mac, - dst=self.router_mac.address) / + dst=str(self.router_mac)) / IPv6(src=eps[0].ip6.address, dst="6001::1") / UDP(sport=1234, dport=1234) / @@ -1321,7 +1330,7 @@ class TestGBP(VppTestCase): # # From a global address to an EP: OUT2IN # - pkt_inter_epg_220_from_global = (Ether(src=self.router_mac.address, + pkt_inter_epg_220_from_global = (Ether(src=str(self.router_mac), dst=self.pg0.remote_mac) / IP(dst=eps[0].fip4.address, src="1.1.1.1") / @@ -1338,8 +1347,8 @@ class TestGBP(VppTestCase): []), VppGbpContractRule( VppEnum.vl_api_gbp_rule_action_t.GBP_API_RULE_PERMIT, - [])]) - + [])], + [ETH_P_IP, ETH_P_IPV6]) c5.add_vpp_config() self.send_and_expect_unnatted(self.pg7, @@ -1347,7 +1356,7 @@ class TestGBP(VppTestCase): eps[0].itf, eps[0].ip4.address) - pkt_inter_epg_220_from_global = (Ether(src=self.router_mac.address, + pkt_inter_epg_220_from_global = (Ether(src=str(self.router_mac), dst=self.pg0.remote_mac) / IPv6(dst=eps[0].fip6.address, src="6001::1") / @@ -1364,7 +1373,7 @@ class TestGBP(VppTestCase): # IN2OUT2IN # pkt_intra_epg_220_global = (Ether(src=self.pg0.remote_mac, - dst=self.router_mac.address) / + dst=str(self.router_mac)) / IP(src=eps[0].ip4.address, dst=eps[1].fip4.address) / UDP(sport=1234, dport=1234) / @@ -1377,7 +1386,7 @@ class TestGBP(VppTestCase): eps[1].ip4.address) pkt_intra_epg_220_global = (Ether(src=self.pg0.remote_mac, - dst=self.router_mac.address) / + dst=str(self.router_mac)) / IPv6(src=eps[0].ip6.address, dst=eps[1].fip6.address) / UDP(sport=1234, dport=1234) / @@ -1449,7 +1458,7 @@ class TestGBP(VppTestCase): # lower the inactive threshold so these tests pass in a # reasonable amount of time # - self.vapi.gbp_endpoint_learn_set_inactive_threshold(1) + self.vapi.gbp_endpoint_learn_set_inactive_threshold(2) # # IP tables @@ -1744,8 +1753,8 @@ class TestGBP(VppTestCase): []), VppGbpContractRule( VppEnum.vl_api_gbp_rule_action_t.GBP_API_RULE_PERMIT, - [])]) - + [])], + [ETH_P_IP, ETH_P_IPV6]) c1.add_vpp_config() for l in learnt: @@ -1827,6 +1836,8 @@ class TestGBP(VppTestCase): self.logger.info(self.vapi.cli("sh int")) self.logger.info(self.vapi.cli("sh gbp vxlan")) + @unittest.skipIf(is_skip_aarch64_set and is_platform_aarch64, + "test doesn't work on aarch64") def test_gbp_learn_vlan_l2(self): """ GBP L2 Endpoint w/ VLANs""" @@ -1842,7 +1853,7 @@ class TestGBP(VppTestCase): # lower the inactive threshold so these tests pass in a # reasonable amount of time # - self.vapi.gbp_endpoint_learn_set_inactive_threshold(1) + self.vapi.gbp_endpoint_learn_set_inactive_threshold(2) # # IP tables @@ -1995,6 +2006,8 @@ class TestGBP(VppTestCase): self.pg2.unconfig_ip4() self.pg3.unconfig_ip4() + @unittest.skipIf(is_skip_aarch64_set and is_platform_aarch64, + "test doesn't work on aarch64") def test_gbp_learn_l3(self): """ GBP L3 Endpoint Learning """ @@ -2015,7 +2028,7 @@ class TestGBP(VppTestCase): # lower the inactive threshold so these tests pass in a # reasonable amount of time # - self.vapi.gbp_endpoint_learn_set_inactive_threshold(1) + self.vapi.gbp_endpoint_learn_set_inactive_threshold(2) # # IP tables @@ -2035,7 +2048,7 @@ class TestGBP(VppTestCase): rd1 = VppGbpRouteDomain(self, 2, t4, t6, tun_ip4_uu, tun_ip6_uu) rd1.add_vpp_config() - self.loop0.set_mac(self.router_mac.address) + self.loop0.set_mac(self.router_mac) # # Bind the BVI to the RD @@ -2385,30 +2398,29 @@ class TestGBP(VppTestCase): rep_88.remove_vpp_config() rep_2.remove_vpp_config() - self.logger.info(self.vapi.cli("show gbp endpoint")) - - self.assertFalse(find_gbp_endpoint(self, ip=rep_88.ip4.address)) + self.assertTrue(find_gbp_endpoint(self, ip=rep_2.ip4.address)) p = (Ether(src=ep.mac, dst=self.loop0.local_mac) / - IP(src=ep.ip4.address, dst=rep_88.ip4.address) / + IP(src=ep.ip4.address, dst=rep_2.ip4.address) / UDP(sport=1234, dport=1234) / Raw('\xa5' * 100)) - rxs = self.send_and_expect(self.pg0, [p], self.pg4) + rxs = self.send_and_expect(self.pg0, [p], self.pg2) - self.assertTrue(find_gbp_endpoint(self, ip=rep_2.ip4.address)) + self.assertFalse(find_gbp_endpoint(self, ip=rep_88.ip4.address)) p = (Ether(src=ep.mac, dst=self.loop0.local_mac) / - IP(src=ep.ip4.address, dst=rep_2.ip4.address) / + IP(src=ep.ip4.address, dst=rep_88.ip4.address) / UDP(sport=1234, dport=1234) / Raw('\xa5' * 100)) - rxs = self.send_and_expect(self.pg0, [p], self.pg2) + rxs = self.send_and_expect(self.pg0, [p], self.pg4) # # to appease the testcase we cannot have the registered EP stll # present (because it's DP learnt) when the TC ends so wait until # it is removed # - self.sleep(2) + self.wait_for_ep_timeout(ip=rep_88.ip4.address) + self.wait_for_ep_timeout(ip=rep_2.ip4.address) # # shutdown with learnt endpoint present @@ -2459,7 +2471,7 @@ class TestGBP(VppTestCase): # lower the inactive threshold so these tests pass in a # reasonable amount of time # - self.vapi.gbp_endpoint_learn_set_inactive_threshold(1) + self.vapi.gbp_endpoint_learn_set_inactive_threshold(2) # # IP tables @@ -2472,7 +2484,7 @@ class TestGBP(VppTestCase): rd1 = VppGbpRouteDomain(self, 2, t4, t6) rd1.add_vpp_config() - self.loop0.set_mac(self.router_mac.address) + self.loop0.set_mac(self.router_mac) # # Bind the BVI to the RD @@ -2656,7 +2668,8 @@ class TestGBP(VppTestCase): [VppGbpContractNextHop(sep3.vmac, sep3.epg.bd, sep3.ip6, sep3.epg.rd), VppGbpContractNextHop(sep4.vmac, sep4.epg.bd, - sep4.ip6, sep4.epg.rd)])]) + sep4.ip6, sep4.epg.rd)])], + [ETH_P_IP, ETH_P_IPV6]) c1.add_vpp_config() c2 = VppGbpContract( @@ -2674,7 +2687,8 @@ class TestGBP(VppTestCase): [VppGbpContractNextHop(sep3.vmac, sep3.epg.bd, sep3.ip6, sep3.epg.rd), VppGbpContractNextHop(sep4.vmac, sep4.epg.bd, - sep4.ip6, sep4.epg.rd)])]) + sep4.ip6, sep4.epg.rd)])], + [ETH_P_IP, ETH_P_IPV6]) c2.add_vpp_config() # @@ -2786,7 +2800,8 @@ class TestGBP(VppTestCase): [VppGbpContractNextHop(sep3.vmac, sep3.epg.bd, sep3.ip6, sep3.epg.rd), VppGbpContractNextHop(sep4.vmac, sep4.epg.bd, - sep4.ip6, sep4.epg.rd)])]) + sep4.ip6, sep4.epg.rd)])], + [ETH_P_IP, ETH_P_IPV6]) c1.add_vpp_config() c2 = VppGbpContract( @@ -2804,7 +2819,8 @@ class TestGBP(VppTestCase): [VppGbpContractNextHop(sep3.vmac, sep3.epg.bd, sep3.ip6, sep3.epg.rd), VppGbpContractNextHop(sep4.vmac, sep4.epg.bd, - sep4.ip6, sep4.epg.rd)])]) + sep4.ip6, sep4.epg.rd)])], + [ETH_P_IP, ETH_P_IPV6]) c2.add_vpp_config() # @@ -2836,39 +2852,40 @@ class TestGBP(VppTestCase): # an L3 switch packet between local EPs in different EPGs # different dest ports on each so the are LB hashed differently # - p4 = [(Ether(src=ep1.mac, dst=self.router_mac.address) / + p4 = [(Ether(src=ep1.mac, dst=str(self.router_mac)) / IP(src=ep1.ip4.address, dst=ep2.ip4.address) / UDP(sport=1234, dport=1234) / Raw('\xa5' * 100)), - (Ether(src=ep2.mac, dst=self.router_mac.address) / + (Ether(src=ep2.mac, dst=str(self.router_mac)) / IP(src=ep2.ip4.address, dst=ep1.ip4.address) / UDP(sport=1234, dport=1234) / Raw('\xa5' * 100))] - p6 = [(Ether(src=ep1.mac, dst=self.router_mac.address) / + p6 = [(Ether(src=ep1.mac, dst=str(self.router_mac)) / IPv6(src=ep1.ip6.address, dst=ep2.ip6.address) / UDP(sport=1234, dport=1234) / Raw('\xa5' * 100)), - (Ether(src=ep2.mac, dst=self.router_mac.address) / + (Ether(src=ep2.mac, dst=str(self.router_mac)) / IPv6(src=ep2.ip6.address, dst=ep1.ip6.address) / UDP(sport=1234, dport=1234) / Raw('\xa5' * 100))] c3 = VppGbpContract( - self, 220, 221, acl_index, - [VppGbpContractRule( + self, 220, 221, acl_index, + [VppGbpContractRule( + VppEnum.vl_api_gbp_rule_action_t.GBP_API_RULE_REDIRECT, + VppEnum.vl_api_gbp_hash_mode_t.GBP_API_HASH_MODE_SYMMETRIC, + [VppGbpContractNextHop(sep1.vmac, sep1.epg.bd, + sep1.ip4, sep1.epg.rd), + VppGbpContractNextHop(sep2.vmac, sep2.epg.bd, + sep2.ip4, sep2.epg.rd)]), + VppGbpContractRule( VppEnum.vl_api_gbp_rule_action_t.GBP_API_RULE_REDIRECT, VppEnum.vl_api_gbp_hash_mode_t.GBP_API_HASH_MODE_SYMMETRIC, - [VppGbpContractNextHop(sep1.vmac, sep1.epg.bd, - sep1.ip4, sep1.epg.rd), - VppGbpContractNextHop(sep2.vmac, sep2.epg.bd, - sep2.ip4, sep2.epg.rd)]), - VppGbpContractRule( - VppEnum.vl_api_gbp_rule_action_t.GBP_API_RULE_REDIRECT, - VppEnum.vl_api_gbp_hash_mode_t.GBP_API_HASH_MODE_SYMMETRIC, - [VppGbpContractNextHop(sep3.vmac, sep3.epg.bd, - sep3.ip6, sep3.epg.rd), - VppGbpContractNextHop(sep4.vmac, sep4.epg.bd, - sep4.ip6, sep4.epg.rd)])]) + [VppGbpContractNextHop(sep3.vmac, sep3.epg.bd, + sep3.ip6, sep3.epg.rd), + VppGbpContractNextHop(sep4.vmac, sep4.epg.bd, + sep4.ip6, sep4.epg.rd)])], + [ETH_P_IP, ETH_P_IPV6]) c3.add_vpp_config() rxs = self.send_and_expect(self.pg0, p4[0] * 17, sep1.itf) @@ -2894,7 +2911,8 @@ class TestGBP(VppTestCase): []), VppGbpContractRule( VppEnum.vl_api_gbp_rule_action_t.GBP_API_RULE_PERMIT, - [])]) + [])], + [ETH_P_IP, ETH_P_IPV6]) c4.add_vpp_config() p = (Ether(src=self.pg7.remote_mac, @@ -2903,7 +2921,7 @@ class TestGBP(VppTestCase): dst=self.pg7.local_ip4) / UDP(sport=1234, dport=48879) / VXLAN(vni=444, gpid=221, flags=0x88) / - Ether(src="00:22:22:22:22:33", dst=self.router_mac.address) / + Ether(src="00:22:22:22:22:33", dst=str(self.router_mac)) / IP(src="10.0.0.88", dst=ep1.ip4.address) / UDP(sport=1234, dport=1234) / Raw('\xa5' * 100)) @@ -2921,7 +2939,7 @@ class TestGBP(VppTestCase): dst=self.pg7.local_ip4) / UDP(sport=1234, dport=48879) / VXLAN(vni=444, gpid=221, flags=0x88) / - Ether(src="00:22:22:22:22:33", dst=self.router_mac.address) / + Ether(src="00:22:22:22:22:33", dst=str(self.router_mac)) / IPv6(src="2001:10::88", dst=ep1.ip6.address) / UDP(sport=1234, dport=1234) / Raw('\xa5' * 100)) @@ -2936,11 +2954,11 @@ class TestGBP(VppTestCase): # # L3 switch from local to remote EP # - p4 = [(Ether(src=ep1.mac, dst=self.router_mac.address) / + p4 = [(Ether(src=ep1.mac, dst=str(self.router_mac)) / IP(src=ep1.ip4.address, dst="10.0.0.88") / UDP(sport=1234, dport=1234) / Raw('\xa5' * 100))] - p6 = [(Ether(src=ep1.mac, dst=self.router_mac.address) / + p6 = [(Ether(src=ep1.mac, dst=str(self.router_mac)) / IPv6(src=ep1.ip6.address, dst="2001:10::88") / UDP(sport=1234, dport=1234) / Raw('\xa5' * 100))] @@ -2979,7 +2997,8 @@ class TestGBP(VppTestCase): [VppGbpContractNextHop(sep3.vmac, sep3.epg.bd, sep3.ip6, sep3.epg.rd), VppGbpContractNextHop(sep4.vmac, sep4.epg.bd, - sep4.ip6, sep4.epg.rd)])]) + sep4.ip6, sep4.epg.rd)])], + [ETH_P_IP, ETH_P_IPV6]) c5.add_vpp_config() rxs = self.send_and_expect(self.pg0, p4[0] * 17, sep1.itf) @@ -3023,7 +3042,7 @@ class TestGBP(VppTestCase): rd1 = VppGbpRouteDomain(self, 2, t4, t6) rd1.add_vpp_config() - self.loop0.set_mac(self.router_mac.address) + self.loop0.set_mac(self.router_mac) # # Bind the BVI to the RD @@ -3100,12 +3119,12 @@ class TestGBP(VppTestCase): # packets destined to unkown addresses in the BVI's subnet # are ARP'd for # - p4 = (Ether(src=self.pg0.remote_mac, dst=self.router_mac.address) / + p4 = (Ether(src=self.pg0.remote_mac, dst=str(self.router_mac)) / Dot1Q(vlan=100) / IP(src="10.0.0.1", dst="10.0.0.88") / UDP(sport=1234, dport=1234) / Raw('\xa5' * 100)) - p6 = (Ether(src=self.pg0.remote_mac, dst=self.router_mac.address) / + p6 = (Ether(src=self.pg0.remote_mac, dst=str(self.router_mac)) / Dot1Q(vlan=100) / IPv6(src="2001:10::1", dst="2001:10::88") / UDP(sport=1234, dport=1234) / @@ -3161,7 +3180,7 @@ class TestGBP(VppTestCase): dst=self.pg7.local_ip4) / UDP(sport=1234, dport=48879) / VXLAN(vni=444, gpid=220, flags=0x88) / - Ether(src=self.pg0.remote_mac, dst=self.router_mac.address) / + Ether(src=self.pg0.remote_mac, dst=str(self.router_mac)) / IP(src="10.0.0.101", dst="10.0.0.1") / UDP(sport=1234, dport=1234) / Raw('\xa5' * 100)) @@ -3189,7 +3208,7 @@ class TestGBP(VppTestCase): dst=self.pg7.local_ip4) / UDP(sport=1234, dport=48879) / VXLAN(vni=444, gpid=220, flags=0x88) / - Ether(src=self.pg0.remote_mac, dst=self.router_mac.address) / + Ether(src=self.pg0.remote_mac, dst=str(self.router_mac)) / IP(src="10.0.0.101", dst="10.220.0.1") / UDP(sport=1234, dport=1234) / Raw('\xa5' * 100)) @@ -3217,7 +3236,7 @@ class TestGBP(VppTestCase): dst=self.pg7.local_ip4) / UDP(sport=1234, dport=48879) / VXLAN(vni=444, gpid=220, flags=0x88) / - Ether(src=self.pg0.remote_mac, dst=self.router_mac.address) / + Ether(src=self.pg0.remote_mac, dst=str(self.router_mac)) / IP(src="10.0.0.101", dst="10.200.0.1") / UDP(sport=1234, dport=1234) / Raw('\xa5' * 100)) @@ -3230,7 +3249,7 @@ class TestGBP(VppTestCase): # # from the the subnet in EPG 220 beyond the external to remote # - p4 = (Ether(src=self.pg0.remote_mac, dst=self.router_mac.address) / + p4 = (Ether(src=self.pg0.remote_mac, dst=str(self.router_mac)) / Dot1Q(vlan=100) / IP(src="10.220.0.1", dst=rep.ip4.address) / UDP(sport=1234, dport=1234) / @@ -3253,7 +3272,7 @@ class TestGBP(VppTestCase): # from the the subnet in EPG 200 beyond the external to remote # dropped due to no contract # - p4 = (Ether(src=self.pg0.remote_mac, dst=self.router_mac.address) / + p4 = (Ether(src=self.pg0.remote_mac, dst=str(self.router_mac)) / Dot1Q(vlan=100) / IP(src="10.200.0.1", dst=rep.ip4.address) / UDP(sport=1234, dport=1234) / @@ -3275,7 +3294,8 @@ class TestGBP(VppTestCase): []), VppGbpContractRule( VppEnum.vl_api_gbp_rule_action_t.GBP_API_RULE_PERMIT, - [])]) + [])], + [ETH_P_IP, ETH_P_IPV6]) c1.add_vpp_config() rxs = self.send_and_expect(self.pg0, p4 * 1, self.pg7)