IPv6 ND Router discovery control plane (VPP-1095)
[vpp.git] / test / vpp_papi_provider.py
index 8e53333..bd770ef 100644 (file)
@@ -466,6 +466,27 @@ class VppPapiProvider(object):
                          'address': address,
                          'pid': os.getpid(), })
 
+    def want_ip6_ra_events(self, enable_disable=1):
+        return self.api(self.papi.want_ip6_ra_events,
+                        {'enable_disable': enable_disable,
+                         'pid': os.getpid(), })
+
+    def ip6nd_send_router_solicitation(self, sw_if_index, irt=1, mrt=120,
+                                       mrc=0, mrd=0):
+        return self.api(self.papi.ip6nd_send_router_solicitation,
+                        {'irt': irt,
+                         'mrt': mrt,
+                         'mrc': mrc,
+                         'mrd': mrd,
+                         'sw_if_index': sw_if_index})
+
+    def ip6_nd_address_autoconfig(self, sw_if_index, enable,
+                                  install_default_routes):
+        return self.api(self.papi.ip6_nd_address_autoconfig,
+                        {'sw_if_index': sw_if_index,
+                         'enable': enable,
+                         'install_default_routes': install_default_routes})
+
     def want_macs_learn_events(self, enable_disable=1, scan_delay=0,
                                max_macs_in_event=0, learn_limit=0):
         return self.api(self.papi.want_l2_macs_events,
@@ -1119,7 +1140,6 @@ class VppPapiProvider(object):
         :param next_hop_weight:  (Default value = 1)
 
         """
-
         return self.api(
             self.papi.mpls_route_add_del,
             {'mr_label': label,
@@ -2875,25 +2895,14 @@ class VppPapiProvider(object):
                            paths,
                            is_add=1):
         """ BIER Route add/del """
-        br_paths = []
-        for p in paths:
-            br_paths.append({'next_hop': p.nh_addr,
-                             'weight': 1,
-                             'afi': 0,
-                             'preference': 0,
-                             'table_id': p.nh_table_id,
-                             'next_hop_id': p.next_hop_id,
-                             'is_udp_encap': p.is_udp_encap,
-                             'n_labels': len(p.nh_labels),
-                             'label_stack': p.nh_labels})
         return self.api(
             self.papi.bier_route_add_del,
             {'br_tbl_id': {"bt_set": bti.set_id,
                            "bt_sub_domain": bti.sub_domain_id,
                            "bt_hdr_len_id": bti.hdr_len_id},
              'br_bp': bp,
-             'br_n_paths': len(br_paths),
-             'br_paths': br_paths,
+             'br_n_paths': len(paths),
+             'br_paths': paths,
              'br_is_add': is_add})
 
     def bier_route_dump(self, bti):
@@ -2950,6 +2959,9 @@ class VppPapiProvider(object):
                                 next_hop_is_ip4=1,
                                 is_add=1):
         """ BIER Route add/del """
+        lstack = []
+        while (len(lstack) < 16):
+            lstack.append({})
         return self.api(
             self.papi.bier_disp_entry_add_del,
             {'bde_tbl_id': bdti,
@@ -2961,7 +2973,7 @@ class VppPapiProvider(object):
                             'afi': next_hop_afi,
                             'rpf_id': next_hop_rpf_id,
                             'n_labels': 0,
-                            'label_stack': [0]}],
+                            'label_stack': lstack}],
              'bde_is_add': is_add})
 
     def bier_disp_entry_dump(self, bdti):
@@ -3210,3 +3222,36 @@ class VppPapiProvider(object):
     def gbp_contract_dump(self):
         """ GBP contract Dump """
         return self.api(self.papi.gbp_contract_dump, {})
+
+    def ipip_6rd_add_tunnel(self, fib_index, ip6_prefix, ip6_prefix_len,
+                            ip4_prefix, ip4_prefix_len, ip4_src,
+                            security_check):
+        """ 6RD tunnel Add """
+        return self.api(self.papi.ipip_6rd_add_tunnel,
+                        {'fib_index': fib_index,
+                         'ip6_prefix': ip6_prefix,
+                         'ip6_prefix_len': ip6_prefix_len,
+                         'ip4_prefix': ip4_prefix,
+                         'ip4_prefix_len': ip4_prefix_len,
+                         'ip4_src': ip4_src,
+                         'security_check': security_check})
+
+    def ipip_6rd_del_tunnel(self, sw_if_index):
+        """ 6RD tunnel Delete """
+        return self.api(self.papi.ipip_6rd_del_tunnel,
+                        {'sw_if_index': sw_if_index})
+
+    def ipip_add_tunnel(self, src_address, dst_address, is_ipv6=1,
+                        instance=0xFFFFFFFF, fib_index=0):
+        """ IPIP tunnel Add/Del """
+        return self.api(self.papi.ipip_add_tunnel,
+                        {'is_ipv6': is_ipv6,
+                         'instance': instance,
+                         'src_address': src_address,
+                         'dst_address': dst_address,
+                         'fib_index': fib_index})
+
+    def ipip_del_tunnel(self, sw_if_index):
+        """ IPIP tunnel Delete """
+        return self.api(self.papi.ipip_del_tunnel,
+                        {'sw_if_index': sw_if_index})