Add Vxlan-Gpe over IPv6
[vpp.git] / vpp / api / vpe.api
index f255fda..9c90c33 100644 (file)
@@ -67,6 +67,7 @@ define want_interface_events_reply {
     @param vtr_tag2
 */
 manual_java define sw_interface_details {
+    u32 context;
     u32 sw_if_index;
 
     /* index of sup interface (e.g. hw interface).
@@ -1144,6 +1145,7 @@ define l2_patch_add_del_reply {
     @param client_index - opaque cookie to identify the sender
     @param context - sender context, to match reply w/ request
     @param is_add - add the tunnel if non-zero, else delete it
+    @param name[] - tunnel name (len. 64)
     @param src_address[] -
     @param dst_address[] -
     @param dst_mask_width -
@@ -1153,11 +1155,13 @@ define l2_patch_add_del_reply {
     @param n_segments -
     @param n_tags -
     @param segs_and_tags[] -
+    @param policy_name[] - name of policy to associate this tunnel to (len. 64)
 */
 define sr_tunnel_add_del {
     u32 client_index;
     u32 context;
     u8 is_add;
+    u8 name[64];
     u8 src_address[16];
     u8 dst_address[16];
     u8 dst_mask_width;
@@ -1167,6 +1171,7 @@ define sr_tunnel_add_del {
     u8 n_segments;
     u8 n_tags;
     u8 segs_and_tags[0];
+    u8 policy_name[64];
 };
 
 /** \brief IPv6 segment routing tunnel add / del response
@@ -1178,6 +1183,54 @@ define sr_tunnel_add_del_reply {
     i32 retval;
 };
 
+/** \brief IPv6 segment routing policy add / del request
+    @param client_index - opaque cookie to identify the sender
+    @param context - sender context, to match reply w/ request
+    @param is_add - add the tunnel if non-zero, else delete it
+    @param name[] - policy name (len. 64)
+    @param tunnel_names[] -
+*/
+define sr_policy_add_del {
+    u32 client_index;
+    u32 context;
+    u8 is_add;
+    u8 name[64];
+    u8 tunnel_names[0];
+};
+
+/** \brief IPv6 segment routing policy add / del response
+    @param context - sender context, to match reply w/ request
+    @param retval - return value for request
+*/
+define sr_policy_add_del_reply {
+    u32 context;
+    i32 retval;
+};
+
+/** \brief IPv6 segment routing multicast map to policy add / del request
+    @param client_index - opaque cookie to identify the sender
+    @param context - sender context, to match reply w/ request
+    @param is_add - add the tunnel if non-zero, else delete it
+    @param multicast_address[] - IP6 multicast address
+    @param policy_name[] = policy name (len.64)
+*/
+define sr_multicast_map_add_del {
+    u32 client_index;
+    u32 context;
+    u8 is_add;
+    u8 multicast_address[16];
+    u8 policy_name[64];
+};
+
+/** \brief IPv6 segment routing multicast map to policy add / del response
+    @param context - sender context, to match reply w/ request
+    @param retval - return value for request
+*/
+define sr_multicast_map_add_del_reply {
+    u32 context;
+    i32 retval;
+};
+
 /** \brief Interface set vpath request
     @param client_index - opaque cookie to identify the sender
     @param context - sender context, to match reply w/ request
@@ -1683,6 +1736,7 @@ define l2tpv3_set_tunnel_cookies_reply {
 };
 
 manual_java define sw_if_l2tpv3_tunnel_details {
+    u32 context;
     u32 sw_if_index;
     u8 interface_name[64];
     u8 client_address [16];
@@ -1767,8 +1821,9 @@ define vxlan_add_del_tunnel {
     u32 client_index;
     u32 context;
     u8 is_add;
-    u32 src_address;
-    u32 dst_address;
+    u8 is_ipv6;
+    u8 src_address[16];
+    u8 dst_address[16];
     u32 encap_vrf_id;
     u32 decap_next_index;
     u32 vni;
@@ -1789,11 +1844,41 @@ manual_java define vxlan_tunnel_dump {
 manual_java define vxlan_tunnel_details {
     u32 context;
     u32 sw_if_index;
-    u32 src_address;
-    u32 dst_address;
+    u8 src_address[16];
+    u8 dst_address[16];
     u32 encap_vrf_id;
     u32 decap_next_index;
     u32 vni;
+    u8 is_ipv6;
+};
+
+define gre_add_del_tunnel {
+    u32 client_index;
+    u32 context;
+    u8 is_add;
+    u32 src_address;
+    u32 dst_address;
+    u32 outer_table_id;
+};
+
+define gre_add_del_tunnel_reply {
+    u32 context;
+    i32 retval;
+    u32 sw_if_index;
+};
+
+manual_java define gre_tunnel_dump {
+    u32 client_index;
+    u32 context;
+    u32 sw_if_index;
+};
+
+manual_java define gre_tunnel_details {
+    u32 context;
+    u32 sw_if_index;
+    u32 src_address;
+    u32 dst_address;
+    u32 outer_table_id;
 };
   
 /** \brief L2 interface vlan tag rewrite configure request
@@ -1945,35 +2030,6 @@ manual_java define show_version_reply {
    u8 build_directory[256];
 };
 
-define nsh_gre_add_del_tunnel {
-    u32 client_index;
-    u32 context;
-    u32 src;
-    u32 dst;
-    u32 encap_vrf_id;
-    u32 decap_vrf_id;
-    u32 decap_next_index;
-    u8 tlv_len_in_words;
-    u8 is_add;
-    u8 ver_o_c;
-    u8 length;
-    u8 md_type;
-    u8 next_protocol;
-    /* in network byte order */
-    u32 spi_si;
-    u32 c1;
-    u32 c2;
-    u32 c3;
-    u32 c4;
-    u32 tlvs[0];
-};
-
-define nsh_gre_add_del_tunnel_reply {
-    u32 context;
-    i32 retval;
-    u32 sw_if_index;
-};
-
 /** \brief Vhost-user interface details structure (fix this)
     @param sw_if_index - index of the interface
     @param interface_name - name of interface
@@ -1984,6 +2040,7 @@ define nsh_gre_add_del_tunnel_reply {
     @param num_regions - number of used memory regions
 */
 manual_java define sw_interface_vhost_user_details {
+    u32 context;
     u32 sw_if_index;
     u8 interface_name[64];
     u32 virtio_net_hdr_sz;
@@ -2034,6 +2091,7 @@ define ip_dump {
     @param bvi_mac - the mac address is a bridge virtual interface
 */
 manual_java define l2_fib_table_entry {
+    u32 context;
     u32 bd_id;
     u64 mac;
     u32 sw_if_index;
@@ -2052,58 +2110,25 @@ manual_java define l2_fib_table_dump {
     u32 bd_id;
 };
 
-define nsh_vxlan_gpe_add_del_tunnel {
+define vxlan_gpe_add_del_tunnel {
     u32 client_index;
     u32 context;
-    u32 src;
-    u32 dst;
+    u8 is_ipv6;
+    u8 local[16];
+    u8 remote[16];
     u32 encap_vrf_id;
     u32 decap_vrf_id;
-    u32 decap_next_index;
+    u8 protocol;
     u32 vni;
-    u8 tlv_len_in_words;
     u8 is_add;
-    u8 ver_o_c;
-    u8 length;
-    u8 md_type;
-    u8 next_protocol;
-    /* in network byte order */
-    u32 spi_si;
-    u32 c1;
-    u32 c2;
-    u32 c3;
-    u32 c4;
-    u32 tlvs[0];
 };
 
-define nsh_vxlan_gpe_add_del_tunnel_reply {
+define vxlan_gpe_add_del_tunnel_reply {
     u32 context;
     i32 retval;
     u32 sw_if_index;
 };
 
-define lisp_gpe_add_del_tunnel {
-    u32 client_index;
-    u32 context;
-    u32 src;
-    u32 dst;
-    u32 encap_vrf_id;
-    u32 decap_vrf_id;
-    u32 decap_next_index;
-    u8 is_add;
-    u8 flags;
-    u8 ver_res;
-    u8 res;
-    u8 next_protocol;
-    /* in network byte order */
-    u32 iid;
-};
-
-define lisp_gpe_add_del_tunnel_reply {
-    u32 context;
-    i32 retval;
-    u32 sw_if_index;
-};
 
 /** \brief add or delete locator_set
     @param client_index - opaque cookie to identify the sender
@@ -2239,6 +2264,46 @@ define lisp_add_del_map_resolver_reply {
     i32 retval;
 };
 
+/** \brief enable or disable lisp-gpe protocol
+    @param client_index - opaque cookie to identify the sender
+    @param context - sender context, to match reply w/ request
+    @param is_en - enable protocol if non-zero, else disable
+*/
+define lisp_gpe_enable_disable {
+    u32 client_index;
+    u32 context;
+    u8  is_en;
+};
+
+/** \brief Reply for gpe enable/disable
+    @param context - returned sender context, to match reply w/ request
+    @param retval - return code
+*/
+define lisp_gpe_enable_disable_reply {
+    u32 context;
+    i32 retval;
+};
+
+/** \brief enable or disable LISP feature
+    @param client_index - opaque cookie to identify the sender
+    @param context - sender context, to match reply w/ request
+    @param is_en - enable protocol if non-zero, else disable
+*/
+define lisp_enable_disable {
+    u32 client_index;
+    u32 context;
+    u8  is_en;
+};
+
+/** \brief Reply for gpe enable/disable
+    @param context - returned sender context, to match reply w/ request
+    @param retval - return code
+*/
+define lisp_enable_disable_reply {
+    u32 context;
+    i32 retval;
+};
+
 /** \brief add or delete gpe_iface
     @param client_index - opaque cookie to identify the sender
     @param context - sender context, to match reply w/ request
@@ -2248,6 +2313,8 @@ define lisp_gpe_add_del_iface {
     u32 client_index;
     u32 context;
     u8  is_add;
+    u32 table_id;
+    u32 vni;
 };
 
 /** \brief Reply for gpe_iface add/del
@@ -2259,6 +2326,65 @@ define lisp_gpe_add_del_iface_reply {
     i32 retval;
 };
 
+/** \brief configure or disable LISP PITR node
+    @param client_index - opaque cookie to identify the sender
+    @param context - sender context, to match reply w/ request
+    @param ls_name - locator set name
+    @param is_add - add locator set if non-zero, else disable pitr
+*/
+define lisp_pitr_set_locator_set {
+    u32 client_index;
+    u32 context;
+    u8 is_add;
+    u8 ls_name[64];
+};
+
+/** \brief Reply for lisp_pitr_set_locator_set
+    @param context - returned sender context, to match reply w/ request
+    @param retval - return code
+*/
+define lisp_pitr_set_locator_set_reply {
+    u32 context;
+    i32 retval;
+};
+
+/** \brief add or delete remote static mapping
+    @param client_index - opaque cookie to identify the sender
+    @param context - sender context, to match reply w/ request
+    @param is_add - add address if non-zero, else delete
+    @param vni - virtual network instance
+    @param action - negative map-reply action
+    @param eid_is_ip4 - ipv4/6 of source and destination EIDs
+    @param deid - destination EID
+    @param seid - source EID
+    @param rloc_num - number of remote locators
+    @param rlocs - remote locator data
+*/
+define lisp_add_del_remote_mapping {
+    u32 client_index;
+    u32 context;
+    u8  is_add;
+    u32 vni;
+    u8 action;
+    u8 eid_is_ip4;
+    u8 deid[16];
+    u8 seid[16];
+    u8 deid_len;
+    u8 seid_len;
+    u32 rloc_num;
+    u8 rlocs[0];
+};
+
+/** \brief Reply for lisp_add_del_remote_mapping
+    @param context - returned sender context, to match reply w/ request
+    @param retval - return code
+*/
+
+define lisp_add_del_remote_mapping_reply {
+    u32 context;
+    i32 retval;
+};
+
 /** \brief LISP locator_set status
     @param locator_set_name - name of the locator_set
     @param sw_if_index - sw_if_index of the locator
@@ -2267,8 +2393,12 @@ define lisp_gpe_add_del_iface_reply {
  */
 manual_java define lisp_locator_set_details {
     u32 context;
+    u8  local;
     u8  locator_set_name[64];
     u32 sw_if_index;
+    u8  is_ipv6;
+    u8  ip_address[16];
+    u8  prefix_len;
     u8  priority;
     u8  weight;
 };
@@ -2351,6 +2481,25 @@ define lisp_map_resolver_dump {
     u32 context;
 };
 
+/** \brief Status of lisp-gpe protocol, enable or disable
+    @param context - sender context, to match reply w/ request
+    @param is_en - enable protocol if non-zero, else disable
+*/
+manual_java define lisp_enable_disable_status_details {
+    u32 context;
+    u8 feature_status;
+    u8 gpe_status;
+};
+
+/** \brief Request for lisp-gpe protocol status
+    @param client_index - opaque cookie to identify the sender
+    @param context - sender context, to match reply w/ request
+*/
+define lisp_enable_disable_status_dump {
+    u32 client_index;
+    u32 context;
+};
+
 /* Gross kludge, DGMS */
 define interface_name_renumber {
     u32 client_index;
@@ -3015,6 +3164,7 @@ define map_domain_dump {
 };
 
 manual_java define map_domain_details {
+  u32 context;
   u32 domain_index;
   u8 ip6_prefix[16];
   u8 ip4_prefix[4];
@@ -3037,6 +3187,7 @@ define map_rule_dump {
 };
 
 manual_java define map_rule_details {
+  u32 context;
   u8 ip6_dst[16];
   u16 psid;
 };
@@ -3249,3 +3400,194 @@ define trace_profile_del_reply {
     u32 context;
     i32 retval;
 };
+
+/** \brief Create host-interface
+    @param client_index - opaque cookie to identify the sender
+    @param context - sender context, to match reply w/ request
+    @param host_if_name - interface name
+    @param hw_addr - interface MAC
+    @param use_random_hw_addr - use random generated MAC
+*/
+define af_packet_create {
+    u32 client_index;
+    u32 context;
+
+    u8 host_if_name[64];
+    u8 hw_addr[6];
+    u8 use_random_hw_addr;
+};
+
+/** \brief Create host-interface response
+    @param context - sender context, to match reply w/ request
+    @param retval - return value for request
+*/
+define af_packet_create_reply {
+    u32 context;
+    i32 retval;
+};
+
+/** \brief Delete host-interface
+    @param client_index - opaque cookie to identify the sender
+    @param context - sender context, to match reply w/ request
+    @param host_if_name - interface name
+*/
+define af_packet_delete {
+    u32 client_index;
+    u32 context;
+
+    u8 host_if_name[64];
+};
+
+/** \brief Delete host-interface response
+    @param context - sender context, to match reply w/ request
+    @param retval - return value for request
+*/
+define af_packet_delete_reply {
+    u32 context;
+    i32 retval;
+};
+
+/** \brief Add/del policer
+    @param client_index - opaque cookie to identify the sender
+    @param context - sender context, to match reply w/ request
+    @param is_add - add policer if non-zero, else delete
+    @param name - policer name
+    @param cir - CIR
+    @param eir - EIR
+    @param cb - Committed Burst
+    @param eb - Excess or Peak Burst
+    @param rate_type - rate type
+    @param round_type - rounding type
+    @param type - policer algorithm
+*/
+define policer_add_del {
+    u32 client_index;
+    u32 context;
+
+    u8 is_add;
+    u8 name[64];
+    u32 cir;
+    u32 eir;
+    u64 cb;
+    u64 eb;
+    u8 rate_type;
+    u8 round_type;
+    u8 type;
+};
+
+/** \brief Add/del policer response
+    @param context - sender context, to match reply w/ request
+    @param retval - return value for request
+*/
+define policer_add_del_reply {
+    u32 context;
+    i32 retval;
+};
+
+/** \brief Get list of policers
+    @param client_index - opaque cookie to identify the sender
+    @param context - sender context, to match reply w/ request
+    @param match_name_valid - if 0 request all policers otherwise use match_name
+    @param match_name - policer name
+*/
+define policer_dump {
+    u32 client_index;
+    u32 context;
+
+    u8 match_name_valid;
+    u8 match_name[64];
+};
+
+/** \brief Policer operational state response.
+    @param context - sender context, to match reply w/ request
+    @param name - policer name
+    @param cir - CIR
+    @param eir - EIR
+    @param cb - Committed Burst
+    @param eb - Excess or Peak Burst
+    @param rate_type - rate type
+    @param round_type - rounding type
+    @param type - policer algorithm
+    @param single_rate - 1 = single rate policer, 0 = two rate policer
+    @param color_aware - for hierarchical policing
+    @param scale - power-of-2 shift amount for lower rates
+    @param cir_tokens_per_period - number of tokens for each period
+    @param pir_tokens_per_period - number of tokens for each period for 2-rate policer
+    @param current_limit - current limit
+    @param current_bucket - current bucket
+    @param extended_limit - extended limit
+    @param extended_bucket - extended bucket
+    @param last_update_time - last update time
+*/
+manual_java define policer_details {
+    u32 context;
+
+    u8 name[64];
+    u32 cir;
+    u32 eir;
+    u64 cb;
+    u64 eb;
+    u8 rate_type;
+    u8 round_type;
+    u8 type;
+    u8 single_rate;
+    u8 color_aware;
+    u32 scale;
+    u32 cir_tokens_per_period;
+    u32 pir_tokens_per_period;
+    u32 current_limit;
+    u32 current_bucket;
+    u32 extended_limit;
+    u32 extended_bucket;
+    u64 last_update_time;
+};
+
+/** \brief Create netmap
+    @param client_index - opaque cookie to identify the sender
+    @param context - sender context, to match reply w/ request
+    @param netmap_if_name - interface name
+    @param hw_addr - interface MAC
+    @param use_random_hw_addr - use random generated MAC
+    @param is_pipe - is pipe
+    @param is_master - 0=slave, 1=master
+*/
+define netmap_create {
+    u32 client_index;
+    u32 context;
+
+    u8 netmap_if_name[64];
+    u8 hw_addr[6];
+    u8 use_random_hw_addr;
+    u8 is_pipe;
+    u8 is_master;
+};
+
+/** \brief Create netmap response
+    @param context - sender context, to match reply w/ request
+    @param retval - return value for request
+*/
+define netmap_create_reply {
+    u32 context;
+    i32 retval;
+};
+
+/** \brief Delete netmap
+    @param client_index - opaque cookie to identify the sender
+    @param context - sender context, to match reply w/ request
+    @param netmap_if_name - interface name
+*/
+define netmap_delete {
+    u32 client_index;
+    u32 context;
+
+    u8 netmap_if_name[64];
+};
+
+/** \brief Delete netmap response
+    @param context - sender context, to match reply w/ request
+    @param retval - return value for request
+*/
+define netmap_delete_reply {
+    u32 context;
+    i32 retval;
+};