+ 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, inet_pton(AF_INET6, '2002::'), 16,
+ 10, inet_pton(AF_INET, '0.0.0.0'), 0,
+ self.pg2.local_ip4n, 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, inet_pton(AF_INET6, '2002::'), 16,
+ 10, inet_pton(AF_INET, '0.0.0.0'), 0,
+ self.pg2.local_ip4n, 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)
+ for p in rx:
+ self.validate_4in6(p, p_reply)
+ self.vapi.sw_interface_set_table(self.tunnel_index, 1, 0)
+ self.vapi.ipip_6rd_del_tunnel(self.tunnel_index)