+ rx = self.send_and_assert_no_replies(self.pg0, p * 10)
+ self.vapi.ipip_6rd_del_tunnel(self.tunnel_index)
+
+ def test_6rd_ip6_to_ip4_vrf(self):
+ """ ip6 -> ip4 (encap) 6rd VRF test """
+ p_ether = Ether(src=self.pg2.remote_mac, dst=self.pg2.local_mac)
+ p_ip6 = IPv6(src="1::1", dst="2002:AC10:0402::1", nh='UDP')
+
+ rv = self.vapi.ipip_6rd_add_tunnel(ip6_table_id=20, ip4_table_id=10,
+ ip6_prefix='2002::/16',
+ ip4_prefix='0.0.0.0/0',
+ ip4_src=self.pg2.local_ip4,
+ security_check=True)
+ self.tunnel_index = rv.sw_if_index
+
+ self.vapi.cli("show ip6 fib")
+ p_payload = UDP(sport=1234, dport=1234)
+ p = (p_ether / p_ip6 / p_payload)
+
+ p_reply = (IP(src=self.pg2.local_ip4, dst=self.pg3.remote_ip4,
+ proto='ipv6') / p_ip6)
+
+ rx = self.send_and_expect(self.pg2, p * 10, self.pg3)
+ for p in rx:
+ self.validate_6in4(p, p_reply)
+
+ # MTU tests (default is 1480)
+ plen = 1481 - 40 - 8
+ p_ip6 = IPv6(src="1::1", dst="2002:AC10:0402::1")
+ p_payload = UDP(sport=1234, dport=1234) / Raw(self.payload(plen))
+ p = (p_ether / p_ip6 / p_payload)
+
+ p_reply = (IP(src=self.pg2.local_ip4, dst=self.pg3.remote_ip4,
+ proto='ipv6') / p_ip6)
+
+ rx = self.send_and_assert_no_replies(self.pg0, p * 10)
+ self.vapi.ipip_6rd_del_tunnel(self.tunnel_index)