+ rx = self.send_and_expect(self.pg0, p * 10, self.pg1)
+ for p in rx:
+ self.validate_4in6(p, p_reply)
+ self.vapi.ipip_6rd_del_tunnel(self.tunnel_index)
+
+ def test_6rd_ip4_to_ip6_vrf(self):
+ """ ip4 -> ip6 (decap) 6rd VRF test """
+
+ rv = self.vapi.ipip_6rd_add_tunnel(20, 10,
+ inet_pton(AF_INET6, '2002::'),
+ inet_pton(AF_INET, '0.0.0.0'),
+ self.pg2.local_ip4n, 16, 0, True)
+ self.tunnel_index = rv.sw_if_index
+ rv = self.vapi.ipip_6rd_del_tunnel(rv.sw_if_index)
+ rv = self.vapi.ipip_6rd_add_tunnel(20, 10,
+ inet_pton(AF_INET6, '2002::'),
+ inet_pton(AF_INET, '0.0.0.0'),
+ self.pg2.local_ip4n, 16, 0, True)
+ self.tunnel_index = rv.sw_if_index
+ self.vapi.sw_interface_set_table(self.tunnel_index, 1, 20)
+
+ p_ip6 = (IPv6(src="2002:AC10:0402::1", dst=self.pg3.remote_ip6) /
+ UDP(sport=1234, dport=1234))
+
+ p = (Ether(src=self.pg2.remote_mac,
+ dst=self.pg2.local_mac) /
+ IP(src=self.pg3.remote_ip4, dst=self.pg2.local_ip4) /
+ p_ip6)
+
+ p_reply = p_ip6
+
+ rx = self.send_and_expect(self.pg2, p * 10, self.pg3)