X-Git-Url: https://gerrit.fd.io/r/gitweb?a=blobdiff_plain;f=vpp%2Fvpp-api%2Fvpe.api;h=e69979c64fa109f0ebdc41d10c8f50cdaa50743f;hb=f6e3dc4778ef910d4ae6114783bd8f50887e6d0d;hp=78a87f36113c22da4add098ce22c17002b3601c7;hpb=914f91b837564416b3a8b15566c627aae6d567d2;p=vpp.git diff --git a/vpp/vpp-api/vpe.api b/vpp/vpp-api/vpe.api index 78a87f36113..e69979c64fa 100644 --- a/vpp/vpp-api/vpe.api +++ b/vpp/vpp-api/vpe.api @@ -1,6 +1,6 @@ /* Hey Emacs use -*- mode: C -*- */ /* - * Copyright (c) 2015 Cisco and/or its affiliates. + * Copyright (c) 2015-2016 Cisco and/or its affiliates. * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at: @@ -27,20 +27,22 @@ @param enable_disable - 1 => register for events, 0 => cancel registration @param pid - sender's pid */ -define want_interface_events { - u32 client_index; - u32 context; - u32 enable_disable; - u32 pid; +define want_interface_events +{ + u32 client_index; + u32 context; + u32 enable_disable; + u32 pid; }; /** \brief Reply for interface events registration @param context - returned sender context, to match reply w/ request @param retval - return code */ -define want_interface_events_reply { - u32 context; - i32 retval; +define want_interface_events_reply +{ + u32 context; + i32 retval; }; /** \brief Interface details structure (fix this) @@ -66,54 +68,55 @@ define want_interface_events_reply { @param vtr_tag1 @param vtr_tag2 */ -manual_java define sw_interface_details { - u32 context; - u32 sw_if_index; +define sw_interface_details +{ + u32 context; + u32 sw_if_index; - /* index of sup interface (e.g. hw interface). - equal to sw_if_index for super hw interface. */ - u32 sup_sw_if_index; + /* index of sup interface (e.g. hw interface). + equal to sw_if_index for super hw interface. */ + u32 sup_sw_if_index; - /* Layer 2 address, if applicable */ - u32 l2_address_length; - u8 l2_address[8]; - - /* Interface name */ - u8 interface_name[64]; + /* Layer 2 address, if applicable */ + u32 l2_address_length; + u8 l2_address[8]; - /* 1 = up, 0 = down */ - u8 admin_up_down; - u8 link_up_down; + /* Interface name */ + u8 interface_name[64]; - /* 1 = half duplex, 2 = full duplex */ - u8 link_duplex; + /* 1 = up, 0 = down */ + u8 admin_up_down; + u8 link_up_down; - /* 1 = 10M, 2 = 100M, 4 = 1G, 8 = 10G, 16 = 40G, 32 = 100G */ - u8 link_speed; - - /* MTU */ - u16 link_mtu; + /* 1 = half duplex, 2 = full duplex */ + u8 link_duplex; + + /* 1 = 10M, 2 = 100M, 4 = 1G, 8 = 10G, 16 = 40G, 32 = 100G */ + u8 link_speed; - /* Subinterface ID. A number 0-N to uniquely identify this subinterface under the super interface*/ - u32 sub_id; + /* MTU */ + u16 link_mtu; - /* 0 = dot1q, 1=dot1ad */ - u8 sub_dot1ad; + /* Subinterface ID. A number 0-N to uniquely identify this subinterface under the super interface */ + u32 sub_id; - /* Number of tags 0-2 */ - u8 sub_number_of_tags; - u16 sub_outer_vlan_id; - u16 sub_inner_vlan_id; - u8 sub_exact_match; - u8 sub_default; - u8 sub_outer_vlan_id_any; - u8 sub_inner_vlan_id_any; + /* 0 = dot1q, 1=dot1ad */ + u8 sub_dot1ad; - /* vlan tag rewrite state */ - u32 vtr_op; - u32 vtr_push_dot1q; // ethertype of first pushed tag is dot1q/dot1ad - u32 vtr_tag1; // first pushed tag - u32 vtr_tag2; // second pushed tag + /* Number of tags 0-2 */ + u8 sub_number_of_tags; + u16 sub_outer_vlan_id; + u16 sub_inner_vlan_id; + u8 sub_exact_match; + u8 sub_default; + u8 sub_outer_vlan_id_any; + u8 sub_inner_vlan_id_any; + + /* vlan tag rewrite state */ + u32 vtr_op; + u32 vtr_push_dot1q; // ethertype of first pushed tag is dot1q/dot1ad + u32 vtr_tag1; // first pushed tag + u32 vtr_tag2; // second pushed tag }; /** \brief Set flags on the interface @@ -124,31 +127,34 @@ manual_java define sw_interface_details { @param link_up_down - Oper state sent on change event, not used in config. @param deleted - interface was deleted */ -define sw_interface_set_flags { - u32 client_index; - u32 context; - u32 sw_if_index; - /* 1 = up, 0 = down */ - u8 admin_up_down; - u8 link_up_down; - u8 deleted; +define sw_interface_set_flags +{ + u32 client_index; + u32 context; + u32 sw_if_index; + /* 1 = up, 0 = down */ + u8 admin_up_down; + u8 link_up_down; + u8 deleted; }; /** \brief Reply to sw_interface_set_flags @param context - sender context which was passed in the request @param retval - return code of the set flags request */ -define sw_interface_set_flags_reply { - u32 context; - i32 retval; +define sw_interface_set_flags_reply +{ + u32 context; + i32 retval; }; /* works */ -manual_java define sw_interface_dump { - u32 client_index; - u32 context; - u8 name_filter_valid; - u8 name_filter[49]; +define sw_interface_dump +{ + u32 client_index; + u32 context; + u8 name_filter_valid; + u8 name_filter[49]; }; /** \brief Set or delete one or all ip addresses on a specified interface @@ -161,24 +167,26 @@ manual_java define sw_interface_dump { @param address_length - address length in bytes, 4 for ip4, 16 for ip6 @param address - array of address bytes */ -define sw_interface_add_del_address { - u32 client_index; - u32 context; - u32 sw_if_index; - u8 is_add; - u8 is_ipv6; - u8 del_all; - u8 address_length; - u8 address[16]; +define sw_interface_add_del_address +{ + u32 client_index; + u32 context; + u32 sw_if_index; + u8 is_add; + u8 is_ipv6; + u8 del_all; + u8 address_length; + u8 address[16]; }; /** \brief Reply for interface events registration @param context - returned sender context, to match reply w/ request @param retval - return code */ -define sw_interface_add_del_address_reply { - u32 context; - i32 retval; +define sw_interface_add_del_address_reply +{ + u32 context; + i32 retval; }; /** \brief Associate the specified interface with a fib table @@ -188,21 +196,47 @@ define sw_interface_add_del_address_reply { @param is_ipv6 - if non-zero ipv6, else ipv4 @param vrf_id - fib table/vrd id to associate the interface with */ -define sw_interface_set_table { - u32 client_index; - u32 context; - u32 sw_if_index; - u8 is_ipv6; - u32 vrf_id; +define sw_interface_set_table +{ + u32 client_index; + u32 context; + u32 sw_if_index; + u8 is_ipv6; + u32 vrf_id; }; /** \brief Reply for interface events registration @param context - returned sender context, to match reply w/ request @param retval - return code */ -define sw_interface_set_table_reply { - u32 context; - i32 retval; +define sw_interface_set_table_reply +{ + u32 context; + i32 retval; +}; + +/** \brief Enable or Disable MPLS on and interface + @param client_index - opaque cookie to identify the sender + @param context - sender context, to match reply w/ request + @param sw_if_index - index of the interface + @param enable - if non-zero enable, else disable +*/ +define sw_interface_set_mpls_enable +{ + u32 client_index; + u32 context; + u32 sw_if_index; + u8 enable; +}; + +/** \brief Reply for MPLS state on an interface + @param context - returned sender context, to match reply w/ request + @param retval - return code +*/ +define sw_interface_set_mpls_enable_reply +{ + u32 context; + i32 retval; }; /** \brief Initialize a new tap interface with the given paramters @@ -212,14 +246,15 @@ define sw_interface_set_table_reply { @param tap_name - name to associate with the new interface @param mac_address - mac addr to assign to the interface if use_radom not set */ -define tap_connect { - u32 client_index; - u32 context; - u8 use_random_mac; - u8 tap_name [64]; - u8 mac_address[6]; - u8 renumber; - u32 custom_dev_instance; +define tap_connect +{ + u32 client_index; + u32 context; + u8 use_random_mac; + u8 tap_name[64]; + u8 mac_address[6]; + u8 renumber; + u32 custom_dev_instance; }; /** \brief Reply for tap connect request @@ -227,10 +262,11 @@ define tap_connect { @param retval - return code @param sw_if_index - software index allocated for the new tap interface */ -define tap_connect_reply { - u32 context; - i32 retval; - u32 sw_if_index; +define tap_connect_reply +{ + u32 context; + i32 retval; + u32 sw_if_index; }; /** \brief Modify a tap interface with the given paramters @@ -241,15 +277,16 @@ define tap_connect_reply { @param tap_name - name to associate with the new interface @param mac_address - mac addr to assign to the interface if use_radom not set */ -define tap_modify { - u32 client_index; - u32 context; - u32 sw_if_index; - u8 use_random_mac; - u8 tap_name [64]; - u8 mac_address[6]; - u8 renumber; - u32 custom_dev_instance; +define tap_modify +{ + u32 client_index; + u32 context; + u32 sw_if_index; + u8 use_random_mac; + u8 tap_name[64]; + u8 mac_address[6]; + u8 renumber; + u32 custom_dev_instance; }; /** \brief Reply for tap modify request @@ -257,10 +294,11 @@ define tap_modify { @param retval - return code @param sw_if_index - software index if the modified tap interface */ -define tap_modify_reply { - u32 context; - i32 retval; - u32 sw_if_index; +define tap_modify_reply +{ + u32 context; + i32 retval; + u32 sw_if_index; }; /** \brief Delete tap interface @@ -268,35 +306,39 @@ define tap_modify_reply { @param context - sender context, to match reply w/ request @param sw_if_index - interface index of existing tap interface */ -define tap_delete { - u32 client_index; - u32 context; - u32 sw_if_index; +define tap_delete +{ + u32 client_index; + u32 context; + u32 sw_if_index; }; /** \brief Reply for tap delete request @param context - returned sender context, to match reply w/ request @param retval - return code */ -define tap_delete_reply { - u32 context; - i32 retval; +define tap_delete_reply +{ + u32 context; + i32 retval; }; /** \brief Dump tap interfaces request */ -define sw_interface_tap_dump { - u32 client_index; - u32 context; +define sw_interface_tap_dump +{ + u32 client_index; + u32 context; }; /** \brief Reply for tap dump request @param sw_if_index - software index of tap interface @param dev_name - Linux tap device name */ -manual_java define sw_interface_tap_details { - u32 context; - u32 sw_if_index; - u8 dev_name[64]; +define sw_interface_tap_details +{ + u32 context; + u32 sw_if_index; + u8 dev_name[64]; }; /** \brief Create a new subinterface with the given vlan id @@ -305,11 +347,12 @@ manual_java define sw_interface_tap_details { @param sw_if_index - software index of the new vlan's parent interface @param vlan_id - vlan tag of the new interface */ -define create_vlan_subif { - u32 client_index; - u32 context; - u32 sw_if_index; - u32 vlan_id; +define create_vlan_subif +{ + u32 client_index; + u32 context; + u32 sw_if_index; + u32 vlan_id; }; /** \brief Reply for the vlan subinterface create request @@ -317,10 +360,203 @@ define create_vlan_subif { @param retval - return code @param sw_if_index - software index allocated for the new subinterface */ -define create_vlan_subif_reply { - u32 context; - i32 retval; - u32 sw_if_index; +define create_vlan_subif_reply +{ + u32 context; + i32 retval; + u32 sw_if_index; +}; + +/** \brief MPLS Route Add / del route + @param client_index - opaque cookie to identify the sender + @param context - sender context, to match reply w/ request + @param mr_label - The MPLS label value + @param mr_eos - The End of stack bit + @param mr_table_id - The MPLS table-id the route is added in + @param mr_classify_table_index - If this is a classify route, + this is the classify table index + @param mr_create_table_if_needed - If the MPLS or IP tables do not exist, + create them + @param mr_is_add - Is this a route add or delete + @param mr_is_classify - Is this route result a classify + @param mr_is_multipath - Is this route update a multipath - i.e. is this + a path addition to an existing route + @param mr_is_resolve_host - Recurse resolution constraint via a host prefix + @param mr_is_resolve_attached - Recurse resolution constraint via attached prefix + @param mr_next_hop_proto_is_ip4 - The next-hop is IPV4 + @param mr_next_hop_weight - The weight, for UCMP + @param mr_next_hop[16] - the nextop address + @param mr_next_hop_sw_if_index - the next-hop SW interface + @param mr_next_hop_table_id - the next-hop table-id (if appropriate) + @param mr_next_hop_out_label - the next-hop output label +*/ +define mpls_route_add_del +{ + u32 client_index; + u32 context; + u32 mr_label; + u8 mr_eos; + u32 mr_table_id; + u32 mr_classify_table_index; + u8 mr_create_table_if_needed; + u8 mr_is_add; + u8 mr_is_classify; + u8 mr_is_multipath; + u8 mr_is_resolve_host; + u8 mr_is_resolve_attached; + u8 mr_next_hop_proto_is_ip4; + u8 mr_next_hop_weight; + u8 mr_next_hop[16]; + u32 mr_next_hop_sw_if_index; + u32 mr_next_hop_table_id; + u32 mr_next_hop_out_label; +}; + +/** \brief Reply for MPLS route add / del request + @param context - returned sender context, to match reply w/ request + @param retval - return code +*/ +define mpls_route_add_del_reply +{ + u32 context; + i32 retval; +}; + +/** \brief Dump MPLS fib table + @param client_index - opaque cookie to identify the sender +*/ +define mpls_fib_dump +{ + u32 client_index; + u32 context; +}; + +/** \brief FIB path + @param sw_if_index - index of the interface + @param weight - The weight, for UCMP + @param is_local - local if non-zero, else remote + @param is_drop - Drop the packet + @param is_unreach - Drop the packet and rate limit send ICMP unreachable + @param is_prohibit - Drop the packet and rate limit send ICMP prohibited + @param afi - the afi of the next hop, IP46_TYPE_IP4=1, IP46_TYPE_IP6=2 + @param next_hop[16] - the next hop address +*/ +typeonly manual_print manual_endian define fib_path +{ + u32 sw_if_index; + u32 weight; + u8 is_local; + u8 is_drop; + u8 is_unreach; + u8 is_prohibit; + u8 afi; + u8 next_hop[16]; +}; + +/** \brief mpls FIB table response + @param table_id - MPLS fib table id + @param s_bit - End-of-stack bit + @param label - MPLS label value + @param count - the number of fib_path in path + @param path - array of of fib_path structures +*/ +manual_endian manual_print define mpls_fib_details +{ + u32 context; + u32 table_id; + u8 eos_bit; + u32 label; + u32 count; + vl_api_fib_path_t path[count]; +}; + +/** \brief Dump IP6 fib table + @param client_index - opaque cookie to identify the sender +*/ +define ip6_fib_dump +{ + u32 client_index; + u32 context; +}; + +/** \brief IP6 FIB table response + @param table_id - IP6 fib table id + @address_length - mask length + @address - ip6 prefix + @param count - the number of fib_path in path + @param path - array of of fib_path structures +*/ +manual_endian manual_print define ip6_fib_details +{ + u32 context; + u32 table_id; + u8 address_length; + u8 address[16]; + u32 count; + vl_api_fib_path_t path[count]; +}; + +/** \brief Dump IP fib table + @param client_index - opaque cookie to identify the sender +*/ +define ip_fib_dump +{ + u32 client_index; + u32 context; +}; + +/** \brief IP FIB table response + @param table_id - IP fib table id + @address_length - mask length + @address - ip4 prefix + @param count - the number of fib_path in path + @param path - array of of fib_path structures +*/ +manual_endian manual_print define ip_fib_details +{ + u32 context; + u32 table_id; + u8 address_length; + u8 address[4]; + u32 count; + vl_api_fib_path_t path[count]; +}; + +/** \brief Bind/Unbind an MPLS local label to an IP prefix. i.e. create + a per-prefix label entry. + @param client_index - opaque cookie to identify the sender + @param context - sender context, to match reply w/ request + @param mb_mpls_table_id - The MPLS table-id the MPLS entry will be added in + @param mb_label - The MPLS label value to bind + @param mb_ip_table_id - The IP table-id of the IP prefix to bind to. + @param mb_create_table_if_needed - Create either/both tables if required. + @param mb_is_bind - Bind or unbind + @param mb_is_ip4 - The prefix to bind to is IPv4 + @param mb_address_length - Length of IP prefix + @param mb_address[16] - IP prefix/ +*/ +define mpls_ip_bind_unbind +{ + u32 client_index; + u32 context; + u32 mb_mpls_table_id; + u32 mb_label; + u32 mb_ip_table_id; + u8 mb_create_table_if_needed; + u8 mb_is_bind; + u8 mb_is_ip4; + u8 mb_address_length; + u8 mb_address[16]; +}; + +/** \brief Reply for MPLS IP bind/unbind request + @param context - returned sender context, to match reply w/ request + @param retval - return code +*/ +define mpls_ip_bind_unbind_reply +{ + u32 context; + i32 retval; }; /** \brief Add / del route request @@ -334,7 +570,9 @@ define create_vlan_subif_reply { @param create_vrf_if_needed - @param resolve_if_needed - @param is_add - 1 if adding the route, 0 if deleting - @param is_drop - + @param is_drop - Drop the packet + @param is_unreach - Drop the packet and rate limit send ICMP unreachable + @param is_prohibit - Drop the packet and rate limit send ICMP prohibited @param is_ipv6 - 0 if an ip4 route, else ip6 @param is_local - @param is_classify - @@ -345,73 +583,44 @@ define create_vlan_subif_reply { @param dst_address[16] - @param next_hop_address[16] - */ -define ip_add_del_route { - u32 client_index; - u32 context; - u32 next_hop_sw_if_index; - u32 vrf_id; - u32 lookup_in_vrf; - u32 resolve_attempts; - u32 classify_table_index; - u8 create_vrf_if_needed; - u8 resolve_if_needed; - u8 is_add; - u8 is_drop; - u8 is_ipv6; - u8 is_local; - u8 is_classify; - /* Is last/not-last message in group of multiple add/del messages. */ - u8 is_multipath; - u8 not_last; - u8 next_hop_weight; - u8 dst_address_length; - u8 dst_address[16]; - u8 next_hop_address[16]; +define ip_add_del_route +{ + u32 client_index; + u32 context; + u32 next_hop_sw_if_index; + u32 table_id; + u32 resolve_attempts; + u32 classify_table_index; + u32 next_hop_out_label; + u32 next_hop_table_id; + u8 create_vrf_if_needed; + u8 resolve_if_needed; + u8 is_add; + u8 is_drop; + u8 is_unreach; + u8 is_prohibit; + u8 is_ipv6; + u8 is_local; + u8 is_classify; + u8 is_multipath; + u8 is_resolve_host; + u8 is_resolve_attached; + /* Is last/not-last message in group of multiple add/del messages. */ + u8 not_last; + u8 next_hop_weight; + u8 dst_address_length; + u8 dst_address[16]; + u8 next_hop_address[16]; }; /** \brief Reply for add / del route request @param context - returned sender context, to match reply w/ request @param retval - return code */ -define ip_add_del_route_reply { - u32 context; - i32 retval; -}; - -/* works */ -/** \brief Add / del gre tunnel request - @param client_index - opaque cookie to identify the sender - @param context - sender context, to match reply w/ request - @param sw_if_index - software index of the new vlan's parent interface - @param inner_vrf_id - - @param outer_vrf_id - - @param is_add - 1 if adding the tunnel, 0 if deleting - @param src_address[4] - tunnel source address - @param dst_address[4] - tunnel destination address - @param intf_address - - @param intf_address_length - -*/ -define mpls_gre_add_del_tunnel { - u32 client_index; - u32 context; - u32 inner_vrf_id; - u32 outer_vrf_id; - u8 is_add; - u8 l2_only; - u8 src_address[4]; - u8 dst_address[4]; - u8 intfc_address[4]; - u8 intfc_address_length; -}; - -/** \brief Reply for add / del tunnel request - @param context - returned sender context, to match reply w/ request - @param retval - return code -*/ -define mpls_gre_add_del_tunnel_reply { - u32 context; - i32 retval; - u32 tunnel_sw_if_index; +define ip_add_del_route_reply +{ + u32 context; + i32 retval; }; /** \brief Add / del MPLS encapsulation request @@ -423,54 +632,26 @@ define mpls_gre_add_del_tunnel_reply { @param nlabels - number of labels @param labels - array of labels */ -define mpls_add_del_encap { - u32 client_index; - u32 context; - u32 vrf_id; - u8 dst_address[4]; - /* 1 = add, 0 = delete */ - u8 is_add; - u8 nlabels; - u32 labels[0]; -}; - -/** \brief Reply for add / del encapsulation request - @param context - returned sender context, to match reply w/ request - @param retval - return code -*/ -define mpls_add_del_encap_reply { - u32 context; - i32 retval; +define mpls_add_del_encap +{ + u32 client_index; + u32 context; + u32 vrf_id; + u8 dst_address[4]; + /* 1 = add, 0 = delete */ + u8 is_add; + u8 nlabels; + u32 labels[0]; }; -/** \brief Add / del MPLS decapsulation request - @param client_index - opaque cookie to identify the sender - @param context - sender context, to match reply w/ request - @param rx_vrf_id - receive vrf - @param tx_vrf_id - transmit vrf - @param label - - @param next_index - - @param s_bit - - @param is_add - 1 if adding the encap, 0 if deleting -*/ -define mpls_add_del_decap { - u32 client_index; - u32 context; - u32 rx_vrf_id; - u32 tx_vrf_id; - u32 label; - u32 next_index; - u8 s_bit; - u8 is_add; -}; - -/** \brief Reply for MPLS decap add / del request +/** \brief Reply for add / del encapsulation request @param context - returned sender context, to match reply w/ request @param retval - return code */ -define mpls_add_del_decap_reply { - u32 context; - i32 retval; +define mpls_add_del_encap_reply +{ + u32 context; + i32 retval; }; /** \brief Proxy ARP add / del request @@ -481,22 +662,24 @@ define mpls_add_del_decap_reply { @param low_address[4] - Low address of the Proxy ARP range @param hi_address[4] - High address of the Proxy ARP range */ -define proxy_arp_add_del { - u32 client_index; - u32 context; - u32 vrf_id; - u8 is_add; - u8 low_address[4]; - u8 hi_address[4]; +define proxy_arp_add_del +{ + u32 client_index; + u32 context; + u32 vrf_id; + u8 is_add; + u8 low_address[4]; + u8 hi_address[4]; }; /** \brief Reply for proxy arp add / del request @param context - returned sender context, to match reply w/ request @param retval - return code */ -define proxy_arp_add_del_reply { - u32 context; - i32 retval; +define proxy_arp_add_del_reply +{ + u32 context; + i32 retval; }; /** \brief Proxy ARP add / del request @@ -505,21 +688,23 @@ define proxy_arp_add_del_reply { @param sw_if_index - Which interface to enable / disable Proxy Arp on @param enable_disable - 1 to enable Proxy ARP on interface, 0 to disable */ -define proxy_arp_intfc_enable_disable { - u32 client_index; - u32 context; - u32 sw_if_index; - /* 1 = on, 0 = off */ - u8 enable_disable; +define proxy_arp_intfc_enable_disable +{ + u32 client_index; + u32 context; + u32 sw_if_index; + /* 1 = on, 0 = off */ + u8 enable_disable; }; /** \brief Reply for Proxy ARP interface enable / disable request @param context - returned sender context, to match reply w/ request @param retval - return code */ -define proxy_arp_intfc_enable_disable_reply { - u32 context; - i32 retval; +define proxy_arp_intfc_enable_disable_reply +{ + u32 context; + i32 retval; }; /** \brief IP neighbor add / del request @@ -533,26 +718,28 @@ define proxy_arp_intfc_enable_disable_reply { @param mac_address - l2 address of the neighbor @param dst_address - ip4 or ip6 address of the neighbor */ -define ip_neighbor_add_del { - u32 client_index; - u32 context; - u32 vrf_id; /* only makes sense for ip4 */ - u32 sw_if_index; - /* 1 = add, 0 = delete */ - u8 is_add; - u8 is_ipv6; - u8 is_static; - u8 mac_address[6]; - u8 dst_address[16]; +define ip_neighbor_add_del +{ + u32 client_index; + u32 context; + u32 vrf_id; /* only makes sense for ip4 */ + u32 sw_if_index; + /* 1 = add, 0 = delete */ + u8 is_add; + u8 is_ipv6; + u8 is_static; + u8 mac_address[6]; + u8 dst_address[16]; }; /** \brief Reply for IP Neighbor add / delete request @param context - returned sender context, to match reply w/ request @param retval - return code */ -define ip_neighbor_add_del_reply { - u32 context; - i32 retval; +define ip_neighbor_add_del_reply +{ + u32 context; + i32 retval; }; /** \brief Reset VRF (remove all routes etc) request @@ -561,20 +748,22 @@ define ip_neighbor_add_del_reply { @param is_ipv6 - 1 for IPv6 neighbor, 0 for IPv4 @param vrf_id - ID of th FIB table / VRF to reset */ -define reset_vrf { - u32 client_index; - u32 context; - u8 is_ipv6; - u32 vrf_id; -}; - +define reset_vrf +{ + u32 client_index; + u32 context; + u8 is_ipv6; + u32 vrf_id; +}; + /** \brief Reply for Reset VRF request @param context - returned sender context, to match reply w/ request @param retval - return code */ -define reset_vrf_reply { - u32 context; - i32 retval; +define reset_vrf_reply +{ + u32 context; + i32 retval; }; /** \brief Is Address Reachable request - DISABLED @@ -585,14 +774,15 @@ define reset_vrf_reply { @param is_error - address not found or does not match intf @param address[] - Address in question */ -define is_address_reachable { - u32 client_index; /* (api_main_t *) am->my_client_index */ - u32 context; - u32 next_hop_sw_if_index; - u8 is_known; /* on reply, this is the answer */ - u8 is_ipv6; - u8 is_error; /* address not found or does not match intf */ - u8 address[16]; +define is_address_reachable +{ + u32 client_index; /* (api_main_t *) am->my_client_index */ + u32 context; + u32 next_hop_sw_if_index; + u8 is_known; /* on reply, this is the answer */ + u8 is_ipv6; + u8 is_error; /* address not found or does not match intf */ + u8 address[16]; }; /** \brief Want Stats, register for stats updates @@ -601,20 +791,22 @@ define is_address_reachable { @param enable_disable - 1 = enable stats, 0 = disable @param pid - pid of process requesting stats updates */ -define want_stats { - u32 client_index; - u32 context; - u32 enable_disable; - u32 pid; +define want_stats +{ + u32 client_index; + u32 context; + u32 enable_disable; + u32 pid; }; /** \brief Reply for Want Stats request @param context - returned sender context, to match reply w/ request @param retval - return code */ -manual_java define want_stats_reply { - u32 context; - i32 retval; +define want_stats_reply +{ + u32 context; + i32 retval; }; /** \brief Want stats counters structure @@ -624,48 +816,54 @@ manual_java define want_stats_reply { @param count - number of interfaces this stats block includes counters for @param data - contiguous block of vlib_counter_t structures */ -manual_java define vnet_interface_counters { - /* enums - plural - in vnet/interface.h */ - u8 vnet_counter_type; - u8 is_combined; - u32 first_sw_if_index; - u32 count; - u8 data[0]; +define vnet_interface_counters +{ + /* enums - plural - in vnet/interface.h */ + u8 vnet_counter_type; + u8 is_combined; + u32 first_sw_if_index; + u32 count; + u8 data[count]; }; -typeonly manual_print manual_endian define ip4_fib_counter { - u32 address; - u8 address_length; - u64 packets; - u64 bytes; +typeonly manual_print manual_endian define ip4_fib_counter +{ + u32 address; + u8 address_length; + u64 packets; + u64 bytes; }; -manual_java manual_print manual_endian define vnet_ip4_fib_counters { - u32 vrf_id; - u32 count; - vl_api_ip4_fib_counter_t c[count]; +manual_print manual_endian define vnet_ip4_fib_counters +{ + u32 vrf_id; + u32 count; + vl_api_ip4_fib_counter_t c[count]; }; -typeonly manual_print manual_endian define ip6_fib_counter { - u64 address[2]; - u8 address_length; - u64 packets; - u64 bytes; +typeonly manual_print manual_endian define ip6_fib_counter +{ + u64 address[2]; + u8 address_length; + u64 packets; + u64 bytes; }; -manual_java manual_print manual_endian define vnet_ip6_fib_counters { - u32 vrf_id; - u32 count; - vl_api_ip6_fib_counter_t c[count]; +manual_print manual_endian define vnet_ip6_fib_counters +{ + u32 vrf_id; + u32 count; + vl_api_ip6_fib_counter_t c[count]; }; /** \brief Request for a single block of summary stats @param client_index - opaque cookie to identify the sender @param context - sender context, to match reply w/ request */ -define vnet_get_summary_stats { - u32 client_index; - u32 context; +define vnet_get_summary_stats +{ + u32 client_index; + u32 context; }; /** \brief Reply for vnet_get_summary_stats request @@ -675,21 +873,23 @@ define vnet_get_summary_stats { @param total_bytes - @param vector_rate - */ -define vnet_summary_stats_reply { - u32 context; - i32 retval; - u64 total_pkts[2]; - u64 total_bytes[2]; - f64 vector_rate; +define vnet_summary_stats_reply +{ + u32 context; + i32 retval; + u64 total_pkts[2]; + u64 total_bytes[2]; + f64 vector_rate; }; /** \brief OAM event structure @param dst_address[] - @param state */ -manual_java define oam_event { - u8 dst_address[4]; - u8 state; +define oam_event +{ + u8 dst_address[4]; + u8 state; }; /** \brief Want OAM events request @@ -698,20 +898,22 @@ manual_java define oam_event { @param enable_disable- enable if non-zero, else disable @param pid - pid of the requesting process */ -define want_oam_events { - u32 client_index; - u32 context; - u32 enable_disable; - u32 pid; +define want_oam_events +{ + u32 client_index; + u32 context; + u32 enable_disable; + u32 pid; }; /** \brief Want OAM events response @param context - sender context, to match reply w/ request @param retval - return code for the want oam stats request */ -define want_oam_events_reply { - u32 context; - i32 retval; +define want_oam_events_reply +{ + u32 context; + i32 retval; }; /** \brief OAM add / del target request @@ -722,22 +924,24 @@ define want_oam_events_reply { @param dst_address[] - destination address of the target @param is_add - add target if non-zero, else delete */ -define oam_add_del { - u32 client_index; - u32 context; - u32 vrf_id; - u8 src_address[4]; - u8 dst_address[4]; - u8 is_add; +define oam_add_del +{ + u32 client_index; + u32 context; + u32 vrf_id; + u8 src_address[4]; + u8 dst_address[4]; + u8 is_add; }; /** \brief OAM add / del target response @param context - sender context, to match reply w/ request @param retval - return code of the request */ -define oam_add_del_reply { - u32 context; - i32 retval; +define oam_add_del_reply +{ + u32 context; + i32 retval; }; /** \brief Reset fib table request @@ -746,20 +950,22 @@ define oam_add_del_reply { @param vrf_id - vrf/table id of the fib table to reset @param is_ipv6 - an ipv6 fib to reset if non-zero, else ipv4 */ -define reset_fib { - u32 client_index; - u32 context; - u32 vrf_id; - u8 is_ipv6; +define reset_fib +{ + u32 client_index; + u32 context; + u32 vrf_id; + u8 is_ipv6; }; /** \brief Reset fib response @param context - sender context, to match reply w/ request @param retval - return code for the reset bfib request */ -define reset_fib_reply { - u32 context; - i32 retval; +define reset_fib_reply +{ + u32 context; + i32 retval; }; /** \brief DHCP Proxy config add / del request @@ -772,24 +978,26 @@ define reset_fib_reply { @param dhcp_server[] - server address @param dhcp_src_address[] - */ -define dhcp_proxy_config { - u32 client_index; - u32 context; - u32 vrf_id; - u8 is_ipv6; - u8 is_add; - u8 insert_circuit_id; - u8 dhcp_server[16]; - u8 dhcp_src_address[16]; +define dhcp_proxy_config +{ + u32 client_index; + u32 context; + u32 vrf_id; + u8 is_ipv6; + u8 is_add; + u8 insert_circuit_id; + u8 dhcp_server[16]; + u8 dhcp_src_address[16]; }; /** \brief DHCP Proxy config response @param context - sender context, to match reply w/ request @param retval - return code for the request */ -define dhcp_proxy_config_reply { - u32 context; - i32 retval; +define dhcp_proxy_config_reply +{ + u32 context; + i32 retval; }; /** \brief DHCP Proxy set / unset vss request @@ -801,23 +1009,25 @@ define dhcp_proxy_config_reply { @param is_ipv6 - ip6 if non-zero, else ip4 @param is_add - set vss if non-zero, else delete */ -define dhcp_proxy_set_vss { - u32 client_index; - u32 context; - u32 tbl_id; - u32 oui; - u32 fib_id; - u8 is_ipv6; - u8 is_add; +define dhcp_proxy_set_vss +{ + u32 client_index; + u32 context; + u32 tbl_id; + u32 oui; + u32 fib_id; + u8 is_ipv6; + u8 is_add; }; /** \brief DHCP proxy set / unset vss response @param context - sender context, to match reply w/ request @param retval - return code for the request */ -define dhcp_proxy_set_vss_reply { - u32 context; - i32 retval; +define dhcp_proxy_set_vss_reply +{ + u32 context; + i32 retval; }; /** \brief Set the ip flow hash config for a fib request @@ -832,26 +1042,28 @@ define dhcp_proxy_set_vss_reply { @param proto -if non-zero include proto in flow hash @param reverse - if non-zero include reverse in flow hash */ -define set_ip_flow_hash { - u32 client_index; - u32 context; - u32 vrf_id; - u8 is_ipv6; - u8 src; - u8 dst; - u8 sport; - u8 dport; - u8 proto; - u8 reverse; +define set_ip_flow_hash +{ + u32 client_index; + u32 context; + u32 vrf_id; + u8 is_ipv6; + u8 src; + u8 dst; + u8 sport; + u8 dport; + u8 proto; + u8 reverse; }; /** \brief Set the ip flow hash config for a fib response @param context - sender context, to match reply w/ request @param retval - return code for the request */ -define set_ip_flow_hash_reply { - u32 context; - i32 retval; +define set_ip_flow_hash_reply +{ + u32 context; + i32 retval; }; /** \brief IPv6 router advertisement config request @@ -871,32 +1083,34 @@ define set_ip_flow_hash_reply { @param initial_count - @param initial_interval - */ -define sw_interface_ip6nd_ra_config { - u32 client_index; - u32 context; - u32 sw_if_index; - u8 suppress; - u8 managed; - u8 other; - u8 ll_option; - u8 send_unicast; - u8 cease; - u8 is_no; - u8 default_router; - u32 max_interval; - u32 min_interval; - u32 lifetime; - u32 initial_count; - u32 initial_interval; +define sw_interface_ip6nd_ra_config +{ + u32 client_index; + u32 context; + u32 sw_if_index; + u8 suppress; + u8 managed; + u8 other; + u8 ll_option; + u8 send_unicast; + u8 cease; + u8 is_no; + u8 default_router; + u32 max_interval; + u32 min_interval; + u32 lifetime; + u32 initial_count; + u32 initial_interval; }; /** \brief IPv6 router advertisement config response @param context - sender context, to match reply w/ request @param retval - return code for the request */ -define sw_interface_ip6nd_ra_config_reply { - u32 context; - i32 retval; +define sw_interface_ip6nd_ra_config_reply +{ + u32 context; + i32 retval; }; /** \brief IPv6 router advertisement prefix config request @@ -914,29 +1128,31 @@ define sw_interface_ip6nd_ra_config_reply { @param val_lifetime - @param pref_lifetime - */ -define sw_interface_ip6nd_ra_prefix { - u32 client_index; - u32 context; - u32 sw_if_index; - u8 address[16]; - u8 address_length; - u8 use_default; - u8 no_advertise; - u8 off_link; - u8 no_autoconfig; - u8 no_onlink; - u8 is_no; - u32 val_lifetime; - u32 pref_lifetime; +define sw_interface_ip6nd_ra_prefix +{ + u32 client_index; + u32 context; + u32 sw_if_index; + u8 address[16]; + u8 address_length; + u8 use_default; + u8 no_advertise; + u8 off_link; + u8 no_autoconfig; + u8 no_onlink; + u8 is_no; + u32 val_lifetime; + u32 pref_lifetime; }; /** \brief IPv6 router advertisement prefix config response @param context - sender context, to match reply w/ request @param retval - return code for the request */ -define sw_interface_ip6nd_ra_prefix_reply { - u32 context; - i32 retval; +define sw_interface_ip6nd_ra_prefix_reply +{ + u32 context; + i32 retval; }; /** \brief IPv6 interface enable / disable request @@ -945,20 +1161,22 @@ define sw_interface_ip6nd_ra_prefix_reply { @param sw_if_index - interface used to reach neighbor @param enable - if non-zero enable ip6 on interface, else disable */ -define sw_interface_ip6_enable_disable { - u32 client_index; - u32 context; - u32 sw_if_index; - u8 enable; /* set to true if enable*/ +define sw_interface_ip6_enable_disable +{ + u32 client_index; + u32 context; + u32 sw_if_index; + u8 enable; /* set to true if enable */ }; /** \brief IPv6 interface enable / disable response @param context - sender context, to match reply w/ request @param retval - return code for the request */ -define sw_interface_ip6_enable_disable_reply { - u32 context; - i32 retval; +define sw_interface_ip6_enable_disable_reply +{ + u32 context; + i32 retval; }; /** \brief IPv6 set link local address on interface request @@ -968,21 +1186,23 @@ define sw_interface_ip6_enable_disable_reply { @param address[] - the new link local address @param address_length - link local address length */ -define sw_interface_ip6_set_link_local_address { - u32 client_index; - u32 context; - u32 sw_if_index; - u8 address[16]; - u8 address_length; +define sw_interface_ip6_set_link_local_address +{ + u32 client_index; + u32 context; + u32 sw_if_index; + u8 address[16]; + u8 address_length; }; /** \brief IPv6 set link local address on interface response @param context - sender context, to match reply w/ request @param retval - error code for the request */ -define sw_interface_ip6_set_link_local_address_reply { - u32 context; - i32 retval; +define sw_interface_ip6_set_link_local_address_reply +{ + u32 context; + i32 retval; }; /** \brief Set unnumbered interface add / del request @@ -992,21 +1212,23 @@ define sw_interface_ip6_set_link_local_address_reply { @param unnumbered_sw_if_index - interface which will use the address @param is_add - if non-zero set the association, else unset it */ -define sw_interface_set_unnumbered { - u32 client_index; - u32 context; - u32 sw_if_index; /* use this intfc address */ - u32 unnumbered_sw_if_index; /* on this interface */ - u8 is_add; +define sw_interface_set_unnumbered +{ + u32 client_index; + u32 context; + u32 sw_if_index; /* use this intfc address */ + u32 unnumbered_sw_if_index; /* on this interface */ + u8 is_add; }; /** \brief Set unnumbered interface add / del response @param context - sender context, to match reply w/ request @param retval - return code for the request */ -define sw_interface_set_unnumbered_reply { - u32 context; - i32 retval; +define sw_interface_set_unnumbered_reply +{ + u32 context; + i32 retval; }; /** \brief Create loopback interface request @@ -1014,10 +1236,11 @@ define sw_interface_set_unnumbered_reply { @param context - sender context, to match reply w/ request @param mac_address - mac addr to assign to the interface if none-zero */ -define create_loopback { - u32 client_index; - u32 context; - u8 mac_address[6]; +define create_loopback +{ + u32 client_index; + u32 context; + u8 mac_address[6]; }; /** \brief Create loopback interface response @@ -1025,10 +1248,11 @@ define create_loopback { @param sw_if_index - sw index of the interface that was created @param retval - return code for the request */ -define create_loopback_reply { - u32 context; - i32 retval; - u32 sw_if_index; +define create_loopback_reply +{ + u32 context; + i32 retval; + u32 sw_if_index; }; /** \brief Delete loopback interface request @@ -1036,28 +1260,31 @@ define create_loopback_reply { @param context - sender context, to match reply w/ request @param sw_if_index - sw index of the interface that was created */ -define delete_loopback { - u32 client_index; - u32 context; - u32 sw_if_index; +define delete_loopback +{ + u32 client_index; + u32 context; + u32 sw_if_index; }; /** \brief Delete loopback interface response @param context - sender context, to match reply w/ request @param retval - return code for the request */ -define delete_loopback_reply { - u32 context; - i32 retval; +define delete_loopback_reply +{ + u32 context; + i32 retval; }; /** \brief Control ping from client to api server request @param client_index - opaque cookie to identify the sender @param context - sender context, to match reply w/ request */ -manual_java define control_ping { - u32 client_index; - u32 context; +define control_ping +{ + u32 client_index; + u32 context; }; /** \brief Control ping from the client to the server response @@ -1066,11 +1293,12 @@ manual_java define control_ping { @param retval - return code for the request @param vpe_pid - the pid of the vpe, returned by the server */ -manual_java define control_ping_reply { - u32 context; - i32 retval; - u32 client_index; - u32 vpe_pid; +define control_ping_reply +{ + u32 context; + i32 retval; + u32 client_index; + u32 vpe_pid; }; /** \brief Process a vpe parser cli string request @@ -1078,10 +1306,18 @@ manual_java define control_ping_reply { @param context - sender context, to match reply w/ request @param cmd_in_shmem - pointer to cli command string */ -define cli_request { - u32 client_index; - u32 context; - u64 cmd_in_shmem; +define cli_request +{ + u32 client_index; + u32 context; + u64 cmd_in_shmem; +}; +define cli_inband +{ + u32 client_index; + u32 context; + u32 length; + u8 cmd[length]; }; /** \brief vpe parser cli string response @@ -1089,10 +1325,18 @@ define cli_request { @param retval - return code for request @param reply_in_shmem - Reply string from cli processing if any */ -define cli_reply { - u32 context; - i32 retval; - u64 reply_in_shmem; +define cli_reply +{ + u32 context; + i32 retval; + u64 reply_in_shmem; +}; +define cli_inband_reply +{ + u32 context; + i32 retval; + u32 length; + u8 reply[length]; }; /** \brief Set max allowed ARP or ip6 neighbor entries request @@ -1101,20 +1345,22 @@ define cli_reply { @param is_ipv6 - neighbor limit if non-zero, else ARP limit @param arp_neighbor_limit - the new limit, defaults are ~ 50k */ -define set_arp_neighbor_limit { - u32 client_index; - u32 context; - u8 is_ipv6; - u32 arp_neighbor_limit; -}; +define set_arp_neighbor_limit +{ + u32 client_index; + u32 context; + u8 is_ipv6; + u32 arp_neighbor_limit; +}; /** \brief Set max allowed ARP or ip6 neighbor entries response @param context - sender context, to match reply w/ request @param retval - return code for request */ -define set_arp_neighbor_limit_reply { - u32 context; - i32 retval; +define set_arp_neighbor_limit_reply +{ + u32 context; + i32 retval; }; /** \brief L2 interface patch add / del request @@ -1124,21 +1370,23 @@ define set_arp_neighbor_limit_reply { @param tx_sw_if_index - transmit side interface @param is_add - if non-zero set up the interface patch, else remove it */ -define l2_patch_add_del { - u32 client_index; - u32 context; - u32 rx_sw_if_index; - u32 tx_sw_if_index; - u8 is_add; +define l2_patch_add_del +{ + u32 client_index; + u32 context; + u32 rx_sw_if_index; + u32 tx_sw_if_index; + u8 is_add; }; /** \brief L2 interface patch add / del response @param context - sender context, to match reply w/ request @param retval - return code for the request */ -define l2_patch_add_del_reply { - u32 context; - i32 retval; +define l2_patch_add_del_reply +{ + u32 context; + i32 retval; }; /** \brief IPv6 segment routing tunnel add / del request @@ -1157,30 +1405,32 @@ define l2_patch_add_del_reply { @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; - u32 inner_vrf_id; - u32 outer_vrf_id; - u16 flags_net_byte_order; - u8 n_segments; - u8 n_tags; - u8 segs_and_tags[0]; - u8 policy_name[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; + u32 inner_vrf_id; + u32 outer_vrf_id; + u16 flags_net_byte_order; + u8 n_segments; + u8 n_tags; + u8 segs_and_tags[0]; + u8 policy_name[64]; }; /** \brief IPv6 segment routing tunnel add / del response @param context - sender context, to match reply w/ request @param retval - return value for request */ -define sr_tunnel_add_del_reply { - u32 context; - i32 retval; +define sr_tunnel_add_del_reply +{ + u32 context; + i32 retval; }; /** \brief IPv6 segment routing policy add / del request @@ -1190,21 +1440,23 @@ define sr_tunnel_add_del_reply { @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]; +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; +define sr_policy_add_del_reply +{ + u32 context; + i32 retval; }; /** \brief IPv6 segment routing multicast map to policy add / del request @@ -1214,21 +1466,23 @@ define sr_policy_add_del_reply { @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]; +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; +define sr_multicast_map_add_del_reply +{ + u32 context; + i32 retval; }; /** \brief Interface set vpath request @@ -1237,20 +1491,22 @@ define sr_multicast_map_add_del_reply { @param sw_if_index - interface used to reach neighbor @param enable - if non-zero enable, else disable */ -define sw_interface_set_vpath { - u32 client_index; - u32 context; - u32 sw_if_index; - u8 enable; +define sw_interface_set_vpath +{ + u32 client_index; + u32 context; + u32 sw_if_index; + u8 enable; }; /** \brief Interface set vpath response @param context - sender context, to match reply w/ request @param retval - return code for the request */ -define sw_interface_set_vpath_reply { - u32 context; - i32 retval; +define sw_interface_set_vpath_reply +{ + u32 context; + i32 retval; }; /** \brief MPLS Ethernet add / del tunnel request @@ -1263,26 +1519,28 @@ define sw_interface_set_vpath_reply { @param adj_address - @param adj_address_length - */ -define mpls_ethernet_add_del_tunnel { - u32 client_index; - u32 context; - u32 vrf_id; - u32 tx_sw_if_index; - u8 is_add; - u8 l2_only; - u8 dst_mac_address[6]; - u8 adj_address[4]; - u8 adj_address_length; +define mpls_ethernet_add_del_tunnel +{ + u32 client_index; + u32 context; + u32 vrf_id; + u32 tx_sw_if_index; + u8 is_add; + u8 l2_only; + u8 dst_mac_address[6]; + u8 adj_address[4]; + u8 adj_address_length; }; /** \brief Reply for MPLS Ethernet add / delete tunnel request @param context - sender context, to match reply w/ request @param retval - return code for the request */ -define mpls_ethernet_add_del_tunnel_reply { - u32 context; - i32 retval; - u32 tunnel_sw_if_index; +define mpls_ethernet_add_del_tunnel_reply +{ + u32 context; + i32 retval; + u32 tunnel_sw_if_index; }; /** \brief MPLS Ethernet add/ del tunnel 2 @param client_index - opaque cookie to identify the sender @@ -1297,28 +1555,30 @@ define mpls_ethernet_add_del_tunnel_reply { @param adj_address_length - @param next_hop_ip4_address_in_outer_vrf - */ -define mpls_ethernet_add_del_tunnel_2 { - u32 client_index; - u32 context; - u32 inner_vrf_id; - u32 outer_vrf_id; - u32 resolve_attempts; - u32 resolve_opaque; /* no need to set this */ - u8 resolve_if_needed; - u8 is_add; - u8 l2_only; - u8 adj_address[4]; - u8 adj_address_length; - u8 next_hop_ip4_address_in_outer_vrf [4]; +define mpls_ethernet_add_del_tunnel_2 +{ + u32 client_index; + u32 context; + u32 inner_vrf_id; + u32 outer_vrf_id; + u32 resolve_attempts; + u32 resolve_opaque; /* no need to set this */ + u8 resolve_if_needed; + u8 is_add; + u8 l2_only; + u8 adj_address[4]; + u8 adj_address_length; + u8 next_hop_ip4_address_in_outer_vrf[4]; }; /** \brief MPLS Ethernet add/ del tunnel 2 @param context - sender context, to match reply w/ request @param retval - return code for add /del request */ -define mpls_ethernet_add_del_tunnel_2_reply { - u32 context; - i32 retval; +define mpls_ethernet_add_del_tunnel_2_reply +{ + u32 context; + i32 retval; }; /** \brief Set L2 XConnect between two interfaces request @@ -1328,21 +1588,23 @@ define mpls_ethernet_add_del_tunnel_2_reply { @param tx_sw_if_index - Transmit interface index @param enable - enable xconnect if not 0, else set to L3 mode */ -define sw_interface_set_l2_xconnect { - u32 client_index; - u32 context; - u32 rx_sw_if_index; - u32 tx_sw_if_index; - u8 enable; +define sw_interface_set_l2_xconnect +{ + u32 client_index; + u32 context; + u32 rx_sw_if_index; + u32 tx_sw_if_index; + u8 enable; }; /** \brief Set L2 XConnect response @param context - sender context, to match reply w/ request @param retval - L2 XConnect request return code */ -define sw_interface_set_l2_xconnect_reply { - u32 context; - i32 retval; +define sw_interface_set_l2_xconnect_reply +{ + u32 context; + i32 retval; }; /** \brief Interface bridge mode request @@ -1354,23 +1616,25 @@ define sw_interface_set_l2_xconnect_reply { @param shg - Shared horizon group, for bridge mode only @param enable - Enable beige mode if not 0, else set to L3 mode */ -define sw_interface_set_l2_bridge { - u32 client_index; - u32 context; - u32 rx_sw_if_index; - u32 bd_id; - u8 shg; - u8 bvi; - u8 enable; +define sw_interface_set_l2_bridge +{ + u32 client_index; + u32 context; + u32 rx_sw_if_index; + u32 bd_id; + u8 shg; + u8 bvi; + u8 enable; }; /** \brief Interface bridge mode response @param context - sender context, to match reply w/ request @param retval - Bridge mode request return code */ -define sw_interface_set_l2_bridge_reply { - u32 context; - i32 retval; +define sw_interface_set_l2_bridge_reply +{ + u32 context; + i32 retval; }; /** \brief L2 FIB add entry request @@ -1383,25 +1647,27 @@ define sw_interface_set_l2_bridge_reply { @param static_mac - @param filter_mac - */ -define l2fib_add_del { - u32 client_index; - u32 context; - u64 mac; - u32 bd_id; - u32 sw_if_index; - u8 is_add; - u8 static_mac; - u8 filter_mac; - u8 bvi_mac; +define l2fib_add_del +{ + u32 client_index; + u32 context; + u64 mac; + u32 bd_id; + u32 sw_if_index; + u8 is_add; + u8 static_mac; + u8 filter_mac; + u8 bvi_mac; }; /** \brief L2 FIB add entry response @param context - sender context, to match reply w/ request @param retval - return code for the add l2fib entry request */ -define l2fib_add_del_reply { - u32 context; - i32 retval; +define l2fib_add_del_reply +{ + u32 context; + i32 retval; }; /** \brief Set L2 flags request !!! TODO - need more info, feature bits in l2_input.h @@ -1411,22 +1677,24 @@ define l2fib_add_del_reply { @param is_set - if non-zero, set the bits, else clear them @param feature_bitmap - non-zero bits to set or clear */ -define l2_flags { - u32 client_index; - u32 context; - u32 sw_if_index; - u8 is_set; - u32 feature_bitmap; +define l2_flags +{ + u32 client_index; + u32 context; + u32 sw_if_index; + u8 is_set; + u32 feature_bitmap; }; /** \brief Set L2 bits response @param context - sender context, to match reply w/ request @param retval - return code for the set l2 bits request */ -define l2_flags_reply { - u32 context; - i32 retval; - u32 resulting_feature_bitmap; +define l2_flags_reply +{ + u32 context; + i32 retval; + u32 resulting_feature_bitmap; }; /** \brief Set bridge flags (such as L2_LEARN, L2_FWD, L2_FLOOD, @@ -1437,12 +1705,13 @@ define l2_flags_reply { @param is_set - if non-zero, set the flags, else clear them @param feature_bitmap - bits that are non-zero to set or clear */ -define bridge_flags { - u32 client_index; - u32 context; - u32 bd_id; - u8 is_set; - u32 feature_bitmap; +define bridge_flags +{ + u32 client_index; + u32 context; + u32 bd_id; + u8 is_set; + u32 feature_bitmap; }; /** \brief Set bridge flags response @@ -1450,10 +1719,11 @@ define bridge_flags { @param retval - return code for the set bridge flags request @param resulting_feature_bitmap - the feature bitmap value after the request is implemented */ -define bridge_flags_reply { - u32 context; - i32 retval; - u32 resulting_feature_bitmap; +define bridge_flags_reply +{ + u32 context; + i32 retval; + u32 resulting_feature_bitmap; }; /** \brief Set bridge domain ip to mac entry request @@ -1465,23 +1735,25 @@ define bridge_flags_reply { @param mac_address - MAC address @param */ -define bd_ip_mac_add_del { - u32 client_index; - u32 context; - u32 bd_id; - u8 is_add; - u8 is_ipv6; - u8 ip_address[16]; - u8 mac_address[6]; +define bd_ip_mac_add_del +{ + u32 client_index; + u32 context; + u32 bd_id; + u8 is_add; + u8 is_ipv6; + u8 ip_address[16]; + u8 mac_address[6]; }; /** \brief Set bridge domain ip to mac entry response @param context - sender context, to match reply w/ request @param retval - return code for the set bridge flags request */ -define bd_ip_mac_add_del_reply { - u32 context; - i32 retval; +define bd_ip_mac_add_del_reply +{ + u32 context; + i32 retval; }; /** \brief Add/Delete classification table request @@ -1496,18 +1768,19 @@ define bd_ip_mac_add_del_reply { @param miss_next_index - index of miss table @param mask[] - match mask */ -define classify_add_del_table { - u32 client_index; - u32 context; - u8 is_add; - u32 table_index; - u32 nbuckets; - u32 memory_size; - u32 skip_n_vectors; - u32 match_n_vectors; - u32 next_table_index; - u32 miss_next_index; - u8 mask[0]; +define classify_add_del_table +{ + u32 client_index; + u32 context; + u8 is_add; + u32 table_index; + u32 nbuckets; + u32 memory_size; + u32 skip_n_vectors; + u32 match_n_vectors; + u32 next_table_index; + u32 miss_next_index; + u8 mask[0]; }; /** \brief Add/Delete classification table response @@ -1517,12 +1790,13 @@ define classify_add_del_table { @param skip_n_vectors - for add, returned value of skip_n_vectors in table @param match_n_vectors -for add, returned value of match_n_vectors in table */ -define classify_add_del_table_reply { - u32 context; - i32 retval; - u32 new_table_index; - u32 skip_n_vectors; - u32 match_n_vectors; +define classify_add_del_table_reply +{ + u32 context; + i32 retval; + u32 new_table_index; + u32 skip_n_vectors; + u32 match_n_vectors; }; /** \brief Classify add / del session request @@ -1535,24 +1809,26 @@ define classify_add_del_table_reply { @param advance -for add, advance value for session @param match[] - for add, match value for session, required */ -define classify_add_del_session { - u32 client_index; - u32 context; - u8 is_add; - u32 table_index; - u32 hit_next_index; - u32 opaque_index; - i32 advance; - u8 match[0]; +define classify_add_del_session +{ + u32 client_index; + u32 context; + u8 is_add; + u32 table_index; + u32 hit_next_index; + u32 opaque_index; + i32 advance; + u8 match[0]; }; /** \brief Classify add / del session response @param context - sender context, to match reply w/ request @param retval - return code for the add/del session request */ -define classify_add_del_session_reply { - u32 context; - i32 retval; +define classify_add_del_session_reply +{ + u32 context; + i32 retval; }; /** \brief Set/unset the classification table for an interface request @@ -1562,21 +1838,23 @@ define classify_add_del_session_reply { @param sw_if_index - interface to associate with the table @param table_index - index of the table, if ~0 unset the table */ -define classify_set_interface_ip_table { - u32 client_index; - u32 context; - u8 is_ipv6; - u32 sw_if_index; - u32 table_index; /* ~0 => off */ +define classify_set_interface_ip_table +{ + u32 client_index; + u32 context; + u8 is_ipv6; + u32 sw_if_index; + u32 table_index; /* ~0 => off */ }; /** \brief Set/unset interface classification table response @param context - sender context, to match reply w/ request @param retval - return code */ -define classify_set_interface_ip_table_reply { - u32 context; - i32 retval; +define classify_set_interface_ip_table_reply +{ + u32 context; + i32 retval; }; /** \brief Set/unset l2 classification tables for an interface request @@ -1587,23 +1865,26 @@ define classify_set_interface_ip_table_reply { @param ip6_table_index - ip6 index @param other_table_index - other index */ -define classify_set_interface_l2_tables { - u32 client_index; - u32 context; - u32 sw_if_index; - /* 3 x ~0 => off */ - u32 ip4_table_index; - u32 ip6_table_index; - u32 other_table_index; +define classify_set_interface_l2_tables +{ + u32 client_index; + u32 context; + u32 sw_if_index; + /* 3 x ~0 => off */ + u32 ip4_table_index; + u32 ip6_table_index; + u32 other_table_index; + u8 is_input; }; /** \brief Set/unset l2 classification tables for an interface response @param context - sender context, to match reply w/ request @param retval - return code for the request */ -define classify_set_interface_l2_tables_reply { - u32 context; - i32 retval; +define classify_set_interface_l2_tables_reply +{ + u32 context; + i32 retval; }; /** \brief Get node index using name request @@ -1611,10 +1892,11 @@ define classify_set_interface_l2_tables_reply { @param context - sender context, to match reply w/ request @param node_name[] - name of the node */ -define get_node_index { - u32 client_index; - u32 context; - u8 node_name[64]; +define get_node_index +{ + u32 client_index; + u32 context; + u8 node_name[64]; }; /** \brief Get node index using name request @@ -1622,10 +1904,11 @@ define get_node_index { @param retval - return code for the request @param node_index - index of the desired node if found, else ~0 */ -define get_node_index_reply { - u32 context; - i32 retval; - u32 node_index; +define get_node_index_reply +{ + u32 context; + i32 retval; + u32 node_index; }; /** \brief Set the next node for a given node request @@ -1634,11 +1917,12 @@ define get_node_index_reply { @param node_name[] - node to add the next node to @param next_name[] - node to add as the next node */ -define add_node_next { - u32 client_index; - u32 context; - u8 node_name[64]; - u8 next_name[64]; +define add_node_next +{ + u32 client_index; + u32 context; + u8 node_name[64]; + u8 next_name[64]; }; /** \brief IP Set the next node for a given node response @@ -1646,10 +1930,11 @@ define add_node_next { @param retval - return code for the add next node request @param next_index - the index of the next node if success, else ~0 */ -define add_node_next_reply { - u32 context; - i32 retval; - u32 next_index; +define add_node_next_reply +{ + u32 context; + i32 retval; + u32 next_index; }; /** \brief DHCP Proxy config 2 add / del request @@ -1663,25 +1948,27 @@ define add_node_next_reply { @param dhcp_server[] - server address @param dhcp_src_address[] - */ -define dhcp_proxy_config_2 { - u32 client_index; - u32 context; - u32 rx_vrf_id; - u32 server_vrf_id; - u8 is_ipv6; - u8 is_add; - u8 insert_circuit_id; - u8 dhcp_server[16]; - u8 dhcp_src_address[16]; +define dhcp_proxy_config_2 +{ + u32 client_index; + u32 context; + u32 rx_vrf_id; + u32 server_vrf_id; + u8 is_ipv6; + u8 is_add; + u8 insert_circuit_id; + u8 dhcp_server[16]; + u8 dhcp_src_address[16]; }; /** \brief DHCP Proxy config 2 add / del response @param context - sender context, to match reply w/ request @param retval - return code for request */ -define dhcp_proxy_config_2_reply { - u32 context; - i32 retval; +define dhcp_proxy_config_2_reply +{ + u32 context; + i32 retval; }; /** \brief l2tpv3 tunnel interface create request @@ -1696,18 +1983,19 @@ define dhcp_proxy_config_2_reply { @param l2_sublayer_present - l2 sublayer is present in packets if non-zero @param encap_vrf_id - fib identifier used for outgoing encapsulated packets */ -define l2tpv3_create_tunnel { - u32 client_index; - u32 context; - u8 client_address [16]; - u8 our_address [16]; - u8 is_ipv6; - u32 local_session_id; - u32 remote_session_id; - u64 local_cookie; - u64 remote_cookie; - u8 l2_sublayer_present; - u32 encap_vrf_id; +define l2tpv3_create_tunnel +{ + u32 client_index; + u32 context; + u8 client_address[16]; + u8 our_address[16]; + u8 is_ipv6; + u32 local_session_id; + u32 remote_session_id; + u64 local_cookie; + u64 remote_cookie; + u8 l2_sublayer_present; + u32 encap_vrf_id; }; /** \brief l2tpv3 tunnel interface create response @@ -1715,63 +2003,70 @@ define l2tpv3_create_tunnel { @param retval - return code for the request @param sw_if_index - index of the new tunnel interface */ -define l2tpv3_create_tunnel_reply { - u32 context; - i32 retval; - u32 sw_if_index; +define l2tpv3_create_tunnel_reply +{ + u32 context; + i32 retval; + u32 sw_if_index; }; -define l2tpv3_set_tunnel_cookies { - u32 client_index; - u32 context; - u32 sw_if_index; - u64 new_local_cookie; - u64 new_remote_cookie; +define l2tpv3_set_tunnel_cookies +{ + u32 client_index; + u32 context; + u32 sw_if_index; + u64 new_local_cookie; + u64 new_remote_cookie; }; /** \brief L2TP tunnel set cookies response @param context - sender context, to match reply w/ request @param retval - return code for the request */ -define l2tpv3_set_tunnel_cookies_reply { - u32 context; - i32 retval; -}; - -manual_java define sw_if_l2tpv3_tunnel_details { - u32 context; - u32 sw_if_index; - u8 interface_name[64]; - u8 client_address [16]; - u8 our_address [16]; - u32 local_session_id; - u32 remote_session_id; - u64 local_cookie[2]; - u64 remote_cookie; - u8 l2_sublayer_present; +define l2tpv3_set_tunnel_cookies_reply +{ + u32 context; + i32 retval; }; -define sw_if_l2tpv3_tunnel_dump { - u32 client_index; - u32 context; +define sw_if_l2tpv3_tunnel_details +{ + u32 context; + u32 sw_if_index; + u8 interface_name[64]; + u8 client_address[16]; + u8 our_address[16]; + u32 local_session_id; + u32 remote_session_id; + u64 local_cookie[2]; + u64 remote_cookie; + u8 l2_sublayer_present; +}; + +define sw_if_l2tpv3_tunnel_dump +{ + u32 client_index; + u32 context; }; /** \brief L2 fib clear table request, clear all mac entries in the l2 fib @param client_index - opaque cookie to identify the sender @param context - sender context, to match reply w/ request */ -define l2_fib_clear_table { - u32 client_index; - u32 context; +define l2_fib_clear_table +{ + u32 client_index; + u32 context; }; /** \brief L2 fib clear table response @param context - sender context, to match reply w/ request @param retval - return code for the request */ -define l2_fib_clear_table_reply { - u32 context; - i32 retval; +define l2_fib_clear_table_reply +{ + u32 context; + i32 retval; }; /** \brief L2 interface ethernet flow point filtering enable/disable request @@ -1780,110 +2075,128 @@ define l2_fib_clear_table_reply { @param sw_if_index - interface to enable/disable filtering on @param enable_disable - if non-zero enable filtering, else disable */ -define l2_interface_efp_filter { - u32 client_index; - u32 context; - u32 sw_if_index; - u32 enable_disable; +define l2_interface_efp_filter +{ + u32 client_index; + u32 context; + u32 sw_if_index; + u32 enable_disable; }; /** \brief L2 interface ethernet flow point filtering response @param context - sender context, to match reply w/ request @param retval - return code for the request */ -define l2_interface_efp_filter_reply { - u32 context; - i32 retval; +define l2_interface_efp_filter_reply +{ + u32 context; + i32 retval; }; -define l2tpv3_interface_enable_disable { - u32 client_index; - u32 context; - u8 enable_disable; - u32 sw_if_index; -}; +define l2tpv3_interface_enable_disable +{ + u32 client_index; + u32 context; + u8 enable_disable; + u32 sw_if_index; +}; -define l2tpv3_interface_enable_disable_reply { - u32 context; - i32 retval; +define l2tpv3_interface_enable_disable_reply +{ + u32 context; + i32 retval; }; -define l2tpv3_set_lookup_key { - u32 client_index; - u32 context; - /* 0 = ip6 src_address, 1 = ip6 dst_address, 2 = session_id */ - u8 key; -}; +define l2tpv3_set_lookup_key +{ + u32 client_index; + u32 context; + /* 0 = ip6 src_address, 1 = ip6 dst_address, 2 = session_id */ + u8 key; +}; -define l2tpv3_set_lookup_key_reply { - u32 context; - i32 retval; +define l2tpv3_set_lookup_key_reply +{ + u32 context; + i32 retval; }; -define vxlan_add_del_tunnel { - u32 client_index; - u32 context; - u8 is_add; - u8 is_ipv6; - u8 src_address[16]; - u8 dst_address[16]; - u32 encap_vrf_id; - u32 decap_next_index; - u32 vni; +define vxlan_add_del_tunnel +{ + u32 client_index; + u32 context; + u8 is_add; + u8 is_ipv6; + u8 src_address[16]; + u8 dst_address[16]; + u32 encap_vrf_id; + u32 decap_next_index; + u32 vni; }; -define vxlan_add_del_tunnel_reply { - u32 context; - i32 retval; - u32 sw_if_index; +define vxlan_add_del_tunnel_reply +{ + u32 context; + i32 retval; + u32 sw_if_index; }; -manual_java define vxlan_tunnel_dump { - u32 client_index; - u32 context; - u32 sw_if_index; +define vxlan_tunnel_dump +{ + u32 client_index; + u32 context; + u32 sw_if_index; }; -manual_java define vxlan_tunnel_details { - u32 context; - u32 sw_if_index; - u8 src_address[16]; - u8 dst_address[16]; - u32 encap_vrf_id; - u32 decap_next_index; - u32 vni; - u8 is_ipv6; +define vxlan_tunnel_details +{ + u32 context; + u32 sw_if_index; + 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 +{ + u32 client_index; + u32 context; + u8 is_add; + u8 is_ipv6; + u8 teb; + u8 src_address[16]; + u8 dst_address[16]; + u32 outer_fib_id; }; -define gre_add_del_tunnel_reply { - u32 context; - i32 retval; - u32 sw_if_index; +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; +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; +define gre_tunnel_details +{ + u32 context; + u32 sw_if_index; + u8 is_ipv6; + u8 teb; + u8 src_address[16]; + u8 dst_address[16]; + u32 outer_fib_id; }; - + /** \brief L2 interface vlan tag rewrite configure request @param client_index - opaque cookie to identify the sender @param context - sender context, to match reply w/ request @@ -1893,23 +2206,25 @@ manual_java define gre_tunnel_details { @param tag1 - Needed for any push or translate vtr op @param tag2 - Needed for any push 2 or translate x-2 vtr ops */ -define l2_interface_vlan_tag_rewrite { - u32 client_index; - u32 context; - u32 sw_if_index; - u32 vtr_op; - u32 push_dot1q; // ethertype of first pushed tag is dot1q/dot1ad - u32 tag1; // first pushed tag - u32 tag2; // second pushed tag +define l2_interface_vlan_tag_rewrite +{ + u32 client_index; + u32 context; + u32 sw_if_index; + u32 vtr_op; + u32 push_dot1q; // ethertype of first pushed tag is dot1q/dot1ad + u32 tag1; // first pushed tag + u32 tag2; // second pushed tag }; /** \brief L2 interface vlan tag rewrite response @param context - sender context, to match reply w/ request @param retval - return code for the request */ -define l2_interface_vlan_tag_rewrite_reply { - u32 context; - i32 retval; +define l2_interface_vlan_tag_rewrite_reply +{ + u32 context; + i32 retval; }; /** \brief vhost-user interface create request @@ -1919,15 +2234,16 @@ define l2_interface_vlan_tag_rewrite_reply { @param use_custom_mac - enable or disable the use of the provided hardware address @param mac_address - hardware address to use if 'use_custom_mac' is set */ -define create_vhost_user_if { - u32 client_index; - u32 context; - u8 is_server; - u8 sock_filename[256]; - u8 renumber; - u32 custom_dev_instance; - u8 use_custom_mac; - u8 mac_address[6]; +define create_vhost_user_if +{ + u32 client_index; + u32 context; + u8 is_server; + u8 sock_filename[256]; + u8 renumber; + u32 custom_dev_instance; + u8 use_custom_mac; + u8 mac_address[6]; }; /** \brief vhost-user interface create response @@ -1935,10 +2251,11 @@ define create_vhost_user_if { @param retval - return code for the request @param sw_if_index - interface the operation is applied to */ -define create_vhost_user_if_reply { - u32 context; - i32 retval; - u32 sw_if_index; +define create_vhost_user_if_reply +{ + u32 context; + i32 retval; + u32 sw_if_index; }; /** \brief vhost-user interface modify request @@ -1946,76 +2263,83 @@ define create_vhost_user_if_reply { @param is_server - our side is socket server @param sock_filename - unix socket filename, used to speak with frontend */ -define modify_vhost_user_if { - u32 client_index; - u32 context; - u32 sw_if_index; - u8 is_server; - u8 sock_filename[256]; - u8 renumber; - u32 custom_dev_instance; +define modify_vhost_user_if +{ + u32 client_index; + u32 context; + u32 sw_if_index; + u8 is_server; + u8 sock_filename[256]; + u8 renumber; + u32 custom_dev_instance; }; /** \brief vhost-user interface modify response @param context - sender context, to match reply w/ request @param retval - return code for the request */ -define modify_vhost_user_if_reply { - u32 context; - i32 retval; +define modify_vhost_user_if_reply +{ + u32 context; + i32 retval; }; /** \brief vhost-user interface delete request @param client_index - opaque cookie to identify the sender */ -define delete_vhost_user_if { - u32 client_index; - u32 context; - u32 sw_if_index; +define delete_vhost_user_if +{ + u32 client_index; + u32 context; + u32 sw_if_index; }; /** \brief vhost-user interface delete response @param context - sender context, to match reply w/ request @param retval - return code for the request */ -define delete_vhost_user_if_reply { - u32 context; - i32 retval; +define delete_vhost_user_if_reply +{ + u32 context; + i32 retval; }; -define create_subif { - u32 client_index; - u32 context; - u32 sw_if_index; - u32 sub_id; - - /* These fields map directly onto the subif template */ - u8 no_tags; - u8 one_tag; - u8 two_tags; - u8 dot1ad; // 0 = dot1q, 1=dot1ad - u8 exact_match; - u8 default_sub; - u8 outer_vlan_id_any; - u8 inner_vlan_id_any; - u16 outer_vlan_id; - u16 inner_vlan_id; -}; - -define create_subif_reply { - u32 context; - i32 retval; - u32 sw_if_index; +define create_subif +{ + u32 client_index; + u32 context; + u32 sw_if_index; + u32 sub_id; + + /* These fields map directly onto the subif template */ + u8 no_tags; + u8 one_tag; + u8 two_tags; + u8 dot1ad; // 0 = dot1q, 1=dot1ad + u8 exact_match; + u8 default_sub; + u8 outer_vlan_id_any; + u8 inner_vlan_id_any; + u16 outer_vlan_id; + u16 inner_vlan_id; +}; + +define create_subif_reply +{ + u32 context; + i32 retval; + u32 sw_if_index; }; /** \brief show version @param client_index - opaque cookie to identify the sender @param context - sender context, to match reply w/ request */ -define show_version { - u32 client_index; - u32 context; -}; +define show_version +{ + u32 client_index; + u32 context; +}; /** \brief show version response @param context - sender context, to match reply w/ request @@ -2024,13 +2348,14 @@ define show_version { @param version - version of the program @param build_directory - root of the workspace where the program was built */ -manual_java define show_version_reply { - u32 context; - i32 retval; - u8 program[32]; - u8 version[32]; - u8 build_date[32]; - u8 build_directory[256]; +define show_version_reply +{ + u32 context; + i32 retval; + u8 program[32]; + u8 version[32]; + u8 build_date[32]; + u8 build_directory[256]; }; /** \brief Vhost-user interface details structure (fix this) @@ -2042,47 +2367,53 @@ manual_java define show_version_reply { @param sock_filename - socket filename @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; - u64 features; - u8 is_server; - u8 sock_filename[256]; - u32 num_regions; - i32 sock_errno; +define sw_interface_vhost_user_details +{ + u32 context; + u32 sw_if_index; + u8 interface_name[64]; + u32 virtio_net_hdr_sz; + u64 features; + u8 is_server; + u8 sock_filename[256]; + u32 num_regions; + i32 sock_errno; }; /* works */ -define sw_interface_vhost_user_dump { - u32 client_index; - u32 context; +define sw_interface_vhost_user_dump +{ + u32 client_index; + u32 context; }; -manual_java define ip_address_details { - u32 client_index; - u32 context; - u8 ip[16]; - u8 prefix_length; +define ip_address_details +{ + u32 client_index; + u32 context; + u8 ip[16]; + u8 prefix_length; }; -manual_java define ip_address_dump { - u32 client_index; - u32 context; - u32 sw_if_index; - u8 is_ipv6; +define ip_address_dump +{ + u32 client_index; + u32 context; + u32 sw_if_index; + u8 is_ipv6; }; -manual_java define ip_details { - u32 sw_if_index; - u32 context; +define ip_details +{ + u32 sw_if_index; + u32 context; }; -define ip_dump { - u32 client_index; - u32 context; - u8 is_ipv6; +define ip_dump +{ + u32 client_index; + u32 context; + u8 is_ipv6; }; /** \brief l2 fib table entry structure @@ -2093,61 +2424,67 @@ define ip_dump { @param filter_mac - the entry is a mac filter entry. @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; - u8 static_mac; - u8 filter_mac; - u8 bvi_mac; +define l2_fib_table_entry +{ + u32 context; + u32 bd_id; + u64 mac; + u32 sw_if_index; + u8 static_mac; + u8 filter_mac; + u8 bvi_mac; }; /** \brief Dump l2 fib (aka bridge domain) table @param client_index - opaque cookie to identify the sender @param bd_id - the l2 fib / bridge domain table identifier */ -manual_java define l2_fib_table_dump { - u32 client_index; - u32 context; - u32 bd_id; -}; - -define vxlan_gpe_add_del_tunnel { - u32 client_index; - u32 context; - u8 is_ipv6; - u8 local[16]; - u8 remote[16]; - u32 encap_vrf_id; - u32 decap_vrf_id; - u8 protocol; - u32 vni; - u8 is_add; +define l2_fib_table_dump +{ + u32 client_index; + u32 context; + u32 bd_id; }; -define vxlan_gpe_add_del_tunnel_reply { - u32 context; - i32 retval; - u32 sw_if_index; +define vxlan_gpe_add_del_tunnel +{ + u32 client_index; + u32 context; + u8 is_ipv6; + u8 local[16]; + u8 remote[16]; + u32 encap_vrf_id; + u32 decap_vrf_id; + u8 protocol; + u32 vni; + u8 is_add; +}; + +define vxlan_gpe_add_del_tunnel_reply +{ + u32 context; + i32 retval; + u32 sw_if_index; }; -manual_java define vxlan_gpe_tunnel_dump { - u32 client_index; - u32 context; - u32 sw_if_index; +define vxlan_gpe_tunnel_dump +{ + u32 client_index; + u32 context; + u32 sw_if_index; }; -manual_java define vxlan_gpe_tunnel_details { - u32 context; - u32 sw_if_index; - u8 local[16]; - u8 remote[16]; - u32 vni; - u8 protocol; - u32 encap_vrf_id; - u32 decap_vrf_id; - u8 is_ipv6; +define vxlan_gpe_tunnel_details +{ + u32 context; + u32 sw_if_index; + u8 local[16]; + u8 remote[16]; + u32 vni; + u8 protocol; + u32 encap_vrf_id; + u32 decap_vrf_id; + u8 is_ipv6; }; /** \brief add or delete locator_set @@ -2155,21 +2492,36 @@ manual_java define vxlan_gpe_tunnel_details { @param context - sender context, to match reply w/ request @param is_add - add address if non-zero, else delete @param locator_set_name - locator name -*/ -define lisp_add_del_locator_set { - u32 client_index; - u32 context; - u8 is_add; - u8 locator_set_name[64]; + @param locator_num - number of locators + @param locators - LISP locator records + Structure of one locator record is as follows: + + define locator_t { + u32 sw_if_index; + u8 priority; + u8 weight; + } +*/ +define lisp_add_del_locator_set +{ + u32 client_index; + u32 context; + u8 is_add; + u8 locator_set_name[64]; + u32 locator_num; + u8 locators[0]; }; /** \brief Reply for locator_set add/del @param context - returned sender context, to match reply w/ request @param retval - return code + @param ls_index - locator set index */ -define lisp_add_del_locator_set_reply { - u32 context; - i32 retval; +define lisp_add_del_locator_set_reply +{ + u32 context; + i32 retval; + u32 ls_index; }; /** \brief add or delete locator for locator_set @@ -2181,23 +2533,25 @@ define lisp_add_del_locator_set_reply { @param priority - priority of the lisp locator @param weight - weight of the lisp locator */ -define lisp_add_del_locator { - u32 client_index; - u32 context; - u8 is_add; - u8 locator_set_name[64]; - u32 sw_if_index; - u8 priority; - u8 weight; +define lisp_add_del_locator +{ + u32 client_index; + u32 context; + u8 is_add; + u8 locator_set_name[64]; + u32 sw_if_index; + u8 priority; + u8 weight; }; /** \brief Reply for locator add/del @param context - returned sender context, to match reply w/ request @param retval - return code */ -define lisp_add_del_locator_reply { - u32 context; - i32 retval; +define lisp_add_del_locator_reply +{ + u32 context; + i32 retval; }; /** \brief add or delete lisp eid-table @@ -2213,56 +2567,73 @@ define lisp_add_del_locator_reply { @param locator_set_name - name of locator_set to add/del eid-table @param vni - virtual network instance */ -define lisp_add_del_local_eid { - u32 client_index; - u32 context; - u8 is_add; - u8 eid_type; - u8 eid[16]; - u8 prefix_len; - u8 locator_set_name[64]; - u32 vni; +define lisp_add_del_local_eid +{ + u32 client_index; + u32 context; + u8 is_add; + u8 eid_type; + u8 eid[16]; + u8 prefix_len; + u8 locator_set_name[64]; + u32 vni; }; /** \brief Reply for local_eid add/del @param context - returned sender context, to match reply w/ request @param retval - return code */ -define lisp_add_del_local_eid_reply { - u32 context; - i32 retval; +define lisp_add_del_local_eid_reply +{ + u32 context; + i32 retval; }; -/** \brief add or delete lisp gpe maptunel +/** \brief add or delete lisp gpe tunnel @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 eid_is_ipv6 - if non-zero the address is ipv6, else ipv4 - @param eid_ip_address - array of address bytes - @param eid_prefix_len - prefix len - @param address_is_ipv6 - if non-zero the address is ipv6, else ipv4 - @param source_ip_address - array of address bytes - @param destination_ip_address - array of address bytes -*/ -define lisp_gpe_add_del_fwd_entry { - u32 client_index; - u32 context; - u8 is_add; - u8 eid_is_ipv6; - u8 eid_ip_address[16]; - u8 eid_prefix_len; - u8 address_is_ipv6; - u8 source_ip_address[16]; - u8 destination_ip_address[16]; + @param eid_type - + 0 : ipv4 + 1 : ipv6 + 2 : mac + @param rmt_eid - remote eid + @param lcl_eid - local eid + @param rmt_len - remote prefix len + @param lcl_len - local prefix len + @param vni - virtual network identifier + @param dp_table - vrf/bridge domain id + @param loc_num - number of locators + @param lcl_locs - array of local locators + @param rmt_locs - array of remote locators + @param action - negative action when 0 locators configured +*/ +define lisp_gpe_add_del_fwd_entry +{ + u32 client_index; + u32 context; + u8 is_add; + u8 eid_type; + u8 rmt_eid[16]; + u8 lcl_eid[16]; + u8 rmt_len; + u8 lcl_len; + u32 vni; + u32 dp_table; + u32 loc_num; + u8 lcl_locs[loc_num]; + u8 rmt_locs[loc_num]; + u8 action; }; /** \brief Reply for gpe_fwd_entry add/del @param context - returned sender context, to match reply w/ request @param retval - return code */ -define lisp_gpe_add_del_fwd_entry_reply { - u32 context; - i32 retval; +define lisp_gpe_add_del_fwd_entry_reply +{ + u32 context; + i32 retval; }; /** \brief add or delete map-resolver @@ -2272,21 +2643,23 @@ define lisp_gpe_add_del_fwd_entry_reply { @param is_ipv6 - if non-zero the address is ipv6, else ipv4 @param ip_address - array of address bytes */ -define lisp_add_del_map_resolver { - u32 client_index; - u32 context; - u8 is_add; - u8 is_ipv6; - u8 ip_address[16]; +define lisp_add_del_map_resolver +{ + u32 client_index; + u32 context; + u8 is_add; + u8 is_ipv6; + u8 ip_address[16]; }; /** \brief Reply for map_resolver add/del @param context - returned sender context, to match reply w/ request @param retval - return code */ -define lisp_add_del_map_resolver_reply { - u32 context; - i32 retval; +define lisp_add_del_map_resolver_reply +{ + u32 context; + i32 retval; }; /** \brief enable or disable lisp-gpe protocol @@ -2294,19 +2667,21 @@ define lisp_add_del_map_resolver_reply { @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; +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; +define lisp_gpe_enable_disable_reply +{ + u32 context; + i32 retval; }; /** \brief enable or disable LISP feature @@ -2314,19 +2689,21 @@ define lisp_gpe_enable_disable_reply { @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; +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; +define lisp_enable_disable_reply +{ + u32 context; + i32 retval; }; /** \brief add or delete gpe_iface @@ -2334,21 +2711,24 @@ define lisp_enable_disable_reply { @param context - sender context, to match reply w/ request @param is_add - add address if non-zero, else delete */ -define lisp_gpe_add_del_iface { - u32 client_index; - u32 context; - u8 is_add; - u32 table_id; - u32 vni; +define lisp_gpe_add_del_iface +{ + u32 client_index; + u32 context; + u8 is_add; + u8 is_l2; + u32 dp_table; + u32 vni; }; /** \brief Reply for gpe_iface add/del @param context - returned sender context, to match reply w/ request @param retval - return code */ -define lisp_gpe_add_del_iface_reply { - u32 context; - i32 retval; +define lisp_gpe_add_del_iface_reply +{ + u32 context; + i32 retval; }; /** \brief configure or disable LISP PITR node @@ -2357,26 +2737,76 @@ define lisp_gpe_add_del_iface_reply { @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]; +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; +define lisp_pitr_set_locator_set_reply +{ + u32 context; + i32 retval; +}; + +/** \brief set LISP map-request mode. Based on configuration VPP will send + src/dest or just normal destination map requests. + @param client_index - opaque cookie to identify the sender + @param context - sender context, to match reply w/ request + @param mode - new map-request mode. Supported values are: + 0 - destination only + 1 - source/destaination +*/ +define lisp_map_request_mode +{ + u32 client_index; + u32 context; + u8 mode; +}; + +/** \brief Reply for lisp_map_request_mode + @param context - returned sender context, to match reply w/ request + @param retval - return code +*/ +define lisp_map_request_mode_reply +{ + u32 context; + i32 retval; +}; + +/** \brief Request for LISP map-request mode + @param client_index - opaque cookie to identify the sender + @param context - sender context, to match reply w/ request +*/ +define show_lisp_map_request_mode +{ + u32 client_index; + u32 context; +}; + +/** \brief Reply for show_lisp_map_request_mode + @param context - returned sender context, to match reply w/ request + @param retval - return code + @param mode - map-request mode +*/ +define show_lisp_map_request_mode_reply +{ + u32 context; + i32 retval; + u8 mode; }; /** \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 is_src_dst - flag indicating src/dst based routing policy @param del_all - if set, delete all remote mappings @param vni - virtual network instance @param action - negative map-reply action @@ -2384,34 +2814,45 @@ define lisp_pitr_set_locator_set_reply { 0 : ipv4 1 : ipv6 2 : mac - @param deid - destination EID - @param seid - source EID + @param deid - dst EID + @param seid - src EID, valid only if is_src_dst is enabled @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; - u8 del_all; - u32 vni; - u8 action; - u8 eid_type; - u8 deid[16]; - u8 seid[16]; - u8 deid_len; - u8 seid_len; - u32 rloc_num; - u8 rlocs[0]; + @param rlocs - remote locator records + Structure of remote locator: + + define rloc_t { + u8 is_ip4; + u8 priority; + u8 weight; + u8 addr[16]; + } +*/ +define lisp_add_del_remote_mapping +{ + u32 client_index; + u32 context; + u8 is_add; + u8 is_src_dst; + u8 del_all; + u32 vni; + u8 action; + u8 eid_type; + u8 eid[16]; + u8 eid_len; + u8 seid[16]; + 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; +define lisp_add_del_remote_mapping_reply +{ + u32 context; + i32 retval; }; /** \brief add or delete LISP adjacency adjacency @@ -2423,28 +2864,30 @@ define lisp_add_del_remote_mapping_reply { 0 : ipv4 1 : ipv6 2 : mac - @param deid - destination EID - @param seid - source EID + @param reid - remote EID + @param leid - local EID */ -define lisp_add_del_adjacency { - u32 client_index; - u32 context; - u8 is_add; - u32 vni; - u8 eid_type; - u8 deid[16]; - u8 seid[16]; - u8 deid_len; - u8 seid_len; +define lisp_add_del_adjacency +{ + u32 client_index; + u32 context; + u8 is_add; + u32 vni; + u8 eid_type; + u8 reid[16]; + u8 leid[16]; + u8 reid_len; + u8 leid_len; }; /** \brief Reply for lisp_add_del_adjacency @param context - returned sender context, to match reply w/ request @param retval - return code */ -define lisp_add_del_adjacency_reply { - u32 context; - i32 retval; +define lisp_add_del_adjacency_reply +{ + u32 context; + i32 retval; }; /** \brief add or delete map request itr rlocs @@ -2453,11 +2896,12 @@ define lisp_add_del_adjacency_reply { @param is_add - add address if non-zero, else delete @param locator_set_name - locator set name */ -define lisp_add_del_map_request_itr_rlocs { - u32 client_index; - u32 context; - u8 is_add; - u8 locator_set_name[64]; +define lisp_add_del_map_request_itr_rlocs +{ + u32 client_index; + u32 context; + u8 is_add; + u8 locator_set_name[64]; }; /** \brief Reply for lisp_add_del_map_request_itr_rlocs @@ -2465,78 +2909,140 @@ define lisp_add_del_map_request_itr_rlocs { @param retval - return code */ -define lisp_add_del_map_request_itr_rlocs_reply { - u32 context; - i32 retval; +define lisp_add_del_map_request_itr_rlocs_reply +{ + u32 context; + i32 retval; }; -/** \brief map/unmap vni to vrf +/** \brief map/unmap vni/bd_index to vrf @param client_index - opaque cookie to identify the sender @param context - sender context, to match reply w/ request @param is_add - add or delete mapping - @param vni - virtual network id + @param dp_table - virtual network id/bridge domain index @param vrf - vrf */ -define lisp_eid_table_add_del_map { - u32 client_index; - u32 context; - u8 is_add; - u32 vni; - u32 vrf; +define lisp_eid_table_add_del_map +{ + u32 client_index; + u32 context; + u8 is_add; + u32 vni; + u32 dp_table; + u8 is_l2; }; /** \brief Reply for lisp_eid_table_add_del_map @param context - returned sender context, to match reply w/ request @param retval - return code */ -define lisp_eid_table_add_del_map_reply { - u32 context; - i32 retval; +define lisp_eid_table_add_del_map_reply +{ + u32 context; + i32 retval; +}; + +/** \brief Request for map lisp locator status + @param client_index - opaque cookie to identify the sender + @param context - sender context, to match reply w/ request + @param locator_set_index - index of locator_set + @param ls_name - locator set name + @param is_index_set - flag indicating whether ls_name or ls_index is set + */ +define lisp_locator_dump +{ + u32 client_index; + u32 context; + u32 ls_index; + u8 ls_name[64]; + u8 is_index_set; }; /** \brief LISP locator_set status + @param local - if is set, then locator is local @param locator_set_name - name of the locator_set @param sw_if_index - sw_if_index of the locator @param priority - locator priority @param weight - locator weight + */ +define lisp_locator_details +{ + u32 context; + u8 local; + u32 sw_if_index; + u8 is_ipv6; + u8 ip_address[16]; + u8 priority; + u8 weight; +}; + +/** \brief LISP locator_set status + @param context - sender context, to match reply w/ request + @param ls_index - locator set index + @param ls_name - name of the locator set */ -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; +define lisp_locator_set_details +{ + u32 context; + u32 ls_index; + u8 ls_name[64]; }; /** \brief Request for locator_set summary status @param client_index - opaque cookie to identify the sender @param context - sender context, to match reply w/ request + @param filter - filter type + Supported values: + 0: all locator sets + 1: local locator sets + 2: remote locator sets */ -define lisp_locator_set_dump { - u32 client_index; - u32 context; +define lisp_locator_set_dump +{ + u32 client_index; + u32 context; + u8 filter; }; -/** \brief LISP local eid table status - @param locator_set_name - name of the locator_set - @param eid_type - ip4, ip6 or l2 mac address - @param eid - array of address bytes - @param eid_prefix_len - prefix len - */ -manual_java define lisp_local_eid_table_details { - u32 context; - u8 locator_set_name[64]; - u8 eid_type; - u32 vni; - u8 eid[16]; - u8 eid_prefix_len; +/** \brief Dump lisp eid-table + @param client_index - opaque cookie to identify the sender + @param context - sender context, to match reply w/ request + @param locator_set_index - index of locator_set, if ~0 then the mapping + is negative + @param action - negative map request action + @param is_local - local if non-zero, else remote + @param eid_type: + 0 : ipv4 + 1 : ipv6 + 2 : mac + @param is_src_dst - EID is type of source/destination + @param eid - EID can be ip4, ip6 or mac + @param eid_prefix_len - prefix length + @param seid - source EID can be ip4, ip6 or mac + @param seid_prefix_len - source prefix length + @param vni - virtual network instance + @param ttl - time to live + @param authoritative - authoritative +*/ + +define lisp_eid_table_details +{ + u32 context; + u32 locator_set_index; + u8 action; + u8 is_local; + u8 eid_type; + u8 is_src_dst; + u32 vni; + u8 eid[16]; + u8 eid_prefix_len; + u8 seid[16]; + u8 seid_prefix_len; + u32 ttl; + u8 authoritative; }; -/** \brief Request for local eid table summary status +/** \brief Request for eid table summary status @param client_index - opaque cookie to identify the sender @param context - sender context, to match reply w/ request @param eid_set - if non-zero request info about specific mapping @@ -2549,60 +3055,138 @@ manual_java define lisp_local_eid_table_details { 1: EID is IPv6 2: EID is ethernet address @param eid - endpoint identifier + @param filter - filter type; + Support values: + 0: all eid + 1: local eid + 2: remote eid */ -define lisp_local_eid_table_dump { - u32 client_index; - u32 context; - u8 eid_set; - u8 prefix_length; - u32 vni; - u8 eid_type; - u8 eid[16]; +define lisp_eid_table_dump +{ + u32 client_index; + u32 context; + u8 eid_set; + u8 prefix_length; + u32 vni; + u8 eid_type; + u8 eid[16]; + u8 filter; }; -/** \brief Shows relationship between vni and vrf - @param vrf - VRF index - @param vni - vitual network instance - */ -manual_java define lisp_eid_table_map_details { - u32 context; - u32 vni; - u32 vrf; -}; +/** \brief LISP adjacency + @param eid_type - + 0 : ipv4 + 1 : ipv6 + 2 : mac + @param reid - remote EID + @param leid - local EID + @param reid_prefix_len - remote EID IP prefix length + @param leid_prefix_len - local EID IP prefix length + */ +typeonly manual_print manual_endian define lisp_adjacency +{ + u8 eid_type; + u8 reid[16]; + u8 leid[16]; + u8 reid_prefix_len; + u8 leid_prefix_len; +}; + +/** \brief LISP adjacency reply + @param count - number of adjacencies + @param adjacencies - array of adjacencies + */ +manual_endian manual_print define lisp_adjacencies_get_reply +{ + u32 context; + i32 retval; + u32 count; + vl_api_lisp_adjacency_t adjacencies[count]; +}; + +/** \brief Request for LISP adjacencies + @param client_index - opaque cookie to identify the sender + @param context - sender context, to match reply w/ request + @param vni - filter adjacencies by VNI + */ +define lisp_adjacencies_get +{ + u32 client_index; + u32 context; + u32 vni; +}; + +/** \brief Shows relationship between vni and vrf/bd + @param dp_table - VRF index or bridge domain index + @param vni - vitual network instance + */ +define lisp_eid_table_map_details +{ + u32 context; + u32 vni; + u32 dp_table; +}; /** \brief Request for lisp_eid_table_map_details @param client_index - opaque cookie to identify the sender @param context - sender context, to match reply w/ request + @param is_l2 - if set dump vni/bd mappings else vni/vrf */ -define lisp_eid_table_map_dump { - u32 client_index; - u32 context; +define lisp_eid_table_map_dump +{ + u32 client_index; + u32 context; + u8 is_l2; }; -manual_java define lisp_gpe_tunnel_details { - u32 context; - u32 tunnels; - u8 is_ipv6; - u8 source_ip[16]; - u8 destination_ip[16]; - u32 encap_fib_id; - u32 decap_fib_id; - u32 dcap_next; - u8 lisp_ver; - u8 next_protocol; - u8 flags; - u8 ver_res; - u8 res; - u32 iid; +/** \brief Dumps all VNIs used in mappings + @param client_index - opaque cookie to identify the sender + @param context - sender context, to match reply w/ request + */ +define lisp_eid_table_vni_dump +{ + u32 client_index; + u32 context; +}; + +/** \brief reply to lisp_eid_table_vni_dump + @param client_index - opaque cookie to identify the sender + @param context - sender context, to match reply w/ request + @param vni - virtual network instance + */ +define lisp_eid_table_vni_details +{ + u32 client_index; + u32 context; + u32 vni; +}; + +define lisp_gpe_tunnel_details +{ + u32 context; + u32 tunnels; + u8 is_ipv6; + u8 source_ip[16]; + u8 destination_ip[16]; + u32 encap_fib_id; + u32 decap_fib_id; + u32 dcap_next; + u8 lisp_ver; + u8 next_protocol; + u8 flags; + u8 ver_res; + u8 res; + u32 iid; }; /** \brief Request for gpe tunnel summary status @param client_index - opaque cookie to identify the sender @param context - sender context, to match reply w/ request */ -define lisp_gpe_tunnel_dump { - u32 client_index; - u32 context; +define lisp_gpe_tunnel_dump +{ + u32 client_index; + u32 context; }; /** \brief LISP map resolver status @@ -2610,64 +3194,73 @@ define lisp_gpe_tunnel_dump { @param is_ipv6 - if non-zero the address is ipv6, else ipv4 @param ip_address - array of address bytes */ -manual_java define lisp_map_resolver_details { - u32 context; - u8 is_ipv6; - u8 ip_address[16]; +define lisp_map_resolver_details +{ + u32 context; + u8 is_ipv6; + u8 ip_address[16]; }; /** \brief Request for map resolver summary status @param client_index - opaque cookie to identify the sender @param context - sender context, to match reply w/ request */ -define lisp_map_resolver_dump { - u32 client_index; - u32 context; +define lisp_map_resolver_dump +{ + u32 client_index; + u32 context; }; -/** \brief Status of lisp-gpe protocol, enable or disable +/** \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 - @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; +define show_lisp_status +{ + u32 client_index; + u32 context; }; -/** \brief Request for lisp-gpe protocol status - @param client_index - opaque cookie to identify the sender +/** \brief Status of lisp, enable or disable @param context - sender context, to match reply w/ request + @param feature_status - lisp enable if non-zero, else disable + @param gpe_status - lisp enable if non-zero, else disable */ -define lisp_enable_disable_status_dump { - u32 client_index; - u32 context; +define show_lisp_status_reply +{ + u32 context; + i32 retval; + u8 feature_status; + u8 gpe_status; }; /** \brief Get LISP map request itr rlocs status @param context - sender context, to match reply w/ request @param locator_set_name - name of the locator_set */ -define lisp_get_map_request_itr_rlocs { - u32 client_index; - u32 context; +define lisp_get_map_request_itr_rlocs +{ + u32 client_index; + u32 context; }; /** \brief Request for map request itr rlocs summary status */ -define lisp_get_map_request_itr_rlocs_reply { - u32 context; - i32 retval; - u8 locator_set_name[64]; +define lisp_get_map_request_itr_rlocs_reply +{ + u32 context; + i32 retval; + u8 locator_set_name[64]; }; /** \brief Request for lisp pitr status @param client_index - opaque cookie to identify the sender @param context - sender context, to match reply w/ request */ -define show_lisp_pitr { - u32 client_index; - u32 context; +define show_lisp_pitr +{ + u32 client_index; + u32 context; }; /** \brief Status of lisp pitr, enable or disable @@ -2675,24 +3268,27 @@ define show_lisp_pitr { @param status - lisp pitr enable if non-zero, else disable @param locator_set_name - name of the locator_set */ -define show_lisp_pitr_reply { - u32 context; - i32 retval; - u8 status; - u8 locator_set_name[64]; +define show_lisp_pitr_reply +{ + u32 context; + i32 retval; + u8 status; + u8 locator_set_name[64]; }; /* Gross kludge, DGMS */ -define interface_name_renumber { - u32 client_index; - u32 context; - u32 sw_if_index; - u32 new_show_dev_instance; +define interface_name_renumber +{ + u32 client_index; + u32 context; + u32 sw_if_index; + u32 new_show_dev_instance; }; -define interface_name_renumber_reply { - u32 context; - i32 retval; +define interface_name_renumber_reply +{ + u32 context; + i32 retval; }; /** \brief Register for ip4 arp resolution events @@ -2702,21 +3298,23 @@ define interface_name_renumber_reply { @param pid - sender's pid @param address - the exact ip4 address of interest */ -define want_ip4_arp_events { - u32 client_index; - u32 context; - u8 enable_disable; - u32 pid; - u32 address; +define want_ip4_arp_events +{ + u32 client_index; + u32 context; + u8 enable_disable; + u32 pid; + u32 address; }; /** \brief Reply for interface events registration @param context - returned sender context, to match reply w/ request @param retval - return code */ -define want_ip4_arp_events_reply { - u32 context; - i32 retval; +define want_ip4_arp_events_reply +{ + u32 context; + i32 retval; }; /** \brief Tell client about an ip4 arp resolution event @@ -2726,14 +3324,63 @@ define want_ip4_arp_events_reply { @param pid - client pid registered to receive notification @param sw_if_index - interface which received ARP packet @param new_mac - the new mac address + @param mac_ip - 0: resolution event, 1: mac/ip binding in bd */ -define ip4_arp_event { - u32 client_index; - u32 context; - u32 address; - u32 pid; - u32 sw_if_index; - u8 new_mac[6]; +define ip4_arp_event +{ + u32 client_index; + u32 context; + u32 address; + u32 pid; + u32 sw_if_index; + u8 new_mac[6]; + u8 mac_ip; +}; + +/** \brief Register for ip6 nd resolution events + @param client_index - opaque cookie to identify the sender + @param context - sender context, to match reply w/ request + @param enable_disable - 1 => register for events, 0 => cancel registration + @param pid - sender's pid + @param address - the exact ip6 address of interest +*/ +define want_ip6_nd_events +{ + u32 client_index; + u32 context; + u8 enable_disable; + u32 pid; + u8 address[16]; +}; + +/** \brief Reply for ip6 nd resolution events registration + @param context - returned sender context, to match reply w/ request + @param retval - return code +*/ +define want_ip6_nd_events_reply +{ + u32 context; + i32 retval; +}; + +/** \brief Tell client about an ip6 nd resolution or mac/ip event + @param client_index - opaque cookie to identify the sender + @param context - sender context, to match reply w/ request + @param pid - client pid registered to receive notification + @param sw_if_index - interface which received ARP packet + @param address - the exact ip6 address of interest + @param new_mac - the new mac address + @param mac_ip - 0: resolution event, 1: mac/ip binding in bd +*/ +define ip6_nd_event +{ + u32 client_index; + u32 context; + u32 pid; + u32 sw_if_index; + u8 address[16]; + u8 new_mac[6]; + u8 mac_ip; }; /** \brief L2 bridge domain add or delete request @@ -2747,25 +3394,27 @@ define ip4_arp_event { @param arp_term - enable/disable arp termination in the bd @param is_add - add or delete flag */ -define bridge_domain_add_del { - u32 client_index; - u32 context; - u32 bd_id; - u8 flood; - u8 uu_flood; - u8 forward; - u8 learn; - u8 arp_term; - u8 is_add; +define bridge_domain_add_del +{ + u32 client_index; + u32 context; + u32 bd_id; + u8 flood; + u8 uu_flood; + u8 forward; + u8 learn; + u8 arp_term; + u8 is_add; }; /** \brief L2 bridge domain add or delete response @param context - sender context, to match reply w/ request @param retval - return code for the set bridge flags request */ -define bridge_domain_add_del_reply { - u32 context; - i32 retval; +define bridge_domain_add_del_reply +{ + u32 context; + i32 retval; }; /** \brief L2 bridge domain request operational state details @@ -2773,10 +3422,11 @@ define bridge_domain_add_del_reply { @param context - sender context, to match reply w/ request @param bd_id - the bridge domain id desired or ~0 to request all bds */ -manual_java define bridge_domain_dump { - u32 client_index; - u32 context; - u32 bd_id; +define bridge_domain_dump +{ + u32 client_index; + u32 context; + u32 bd_id; }; /** \brief L2 bridge domain operational state response @@ -2788,16 +3438,17 @@ manual_java define bridge_domain_dump { @param arp_term - arp termination state on all interfaces in the bd @param n_sw_ifs - number of sw_if_index's in the domain */ -manual_java define bridge_domain_details { - u32 context; - u32 bd_id; - u8 flood; - u8 uu_flood; - u8 forward; - u8 learn; - u8 arp_term; - u32 bvi_sw_if_index; - u32 n_sw_ifs; +define bridge_domain_details +{ + u32 context; + u32 bd_id; + u8 flood; + u8 uu_flood; + u8 forward; + u8 learn; + u8 arp_term; + u32 bvi_sw_if_index; + u32 n_sw_ifs; }; /** \brief L2 bridge domain sw interface operational state response @@ -2805,11 +3456,12 @@ manual_java define bridge_domain_details { @param sw_if_index - sw_if_index in the domain @param shg - split horizon group for the interface */ -manual_java define bridge_domain_sw_if_details { - u32 context; - u32 bd_id; - u32 sw_if_index; - u8 shg; +define bridge_domain_sw_if_details +{ + u32 context; + u32 bd_id; + u32 sw_if_index; + u8 shg; }; /** \brief DHCP Client config add / del request @@ -2822,23 +3474,25 @@ manual_java define bridge_domain_sw_if_details { via dhcp_compl_event API message if non-zero @param pid - sender's pid */ -define dhcp_client_config { - u32 client_index; - u32 context; - u32 sw_if_index; - u8 hostname[64]; - u8 is_add; - u8 want_dhcp_event; - u32 pid; +define dhcp_client_config +{ + u32 client_index; + u32 context; + u32 sw_if_index; + u8 hostname[64]; + u8 is_add; + u8 want_dhcp_event; + u32 pid; }; /** \brief DHCP Client config response @param context - sender context, to match reply w/ request @param retval - return code for the request */ -define dhcp_client_config_reply { - u32 context; - i32 retval; +define dhcp_client_config_reply +{ + u32 context; + i32 retval; }; /** \brief Set/unset input ACL interface @@ -2852,23 +3506,25 @@ define dhcp_client_config_reply { Note: User is recommeneded to use just one valid table_index per call. (ip4_table_index, ip6_table_index, or l2_table_index) */ -define input_acl_set_interface { - u32 client_index; - u32 context; - u32 sw_if_index; - u32 ip4_table_index; - u32 ip6_table_index; - u32 l2_table_index; - u8 is_add; +define input_acl_set_interface +{ + u32 client_index; + u32 context; + u32 sw_if_index; + u32 ip4_table_index; + u32 ip6_table_index; + u32 l2_table_index; + u8 is_add; }; /** \brief Set/unset input ACL interface response @param context - sender context, to match reply w/ request @param retval - return code for the request */ -define input_acl_set_interface_reply { - u32 context; - i32 retval; +define input_acl_set_interface_reply +{ + u32 context; + i32 retval; }; /** \brief IPsec: Add/delete Security Policy Database @@ -2878,11 +3534,12 @@ define input_acl_set_interface_reply { @param spd_id - SPD instance id (control plane allocated) */ -define ipsec_spd_add_del { - u32 client_index; - u32 context; - u8 is_add; - u32 spd_id; +define ipsec_spd_add_del +{ + u32 client_index; + u32 context; + u8 is_add; + u32 spd_id; }; /** \brief Reply for IPsec: Add/delete Security Policy Database entry @@ -2890,9 +3547,10 @@ define ipsec_spd_add_del { @param retval - return code */ -define ipsec_spd_add_del_reply { - u32 context; - i32 retval; +define ipsec_spd_add_del_reply +{ + u32 context; + i32 retval; }; /** \brief IPsec: Add/delete SPD from interface @@ -2905,13 +3563,14 @@ define ipsec_spd_add_del_reply { */ -define ipsec_interface_add_del_spd { - u32 client_index; - u32 context; +define ipsec_interface_add_del_spd +{ + u32 client_index; + u32 context; - u8 is_add; - u32 sw_if_index; - u32 spd_id; + u8 is_add; + u32 sw_if_index; + u32 spd_id; }; /** \brief Reply for IPsec: Add/delete SPD from interface @@ -2919,9 +3578,10 @@ define ipsec_interface_add_del_spd { @param retval - return code */ -define ipsec_interface_add_del_spd_reply { - u32 context; - i32 retval; +define ipsec_interface_add_del_spd_reply +{ + u32 context; + i32 retval; }; /** \brief IPsec: Add/delete Security Policy Database entry @@ -2949,33 +3609,34 @@ define ipsec_interface_add_del_spd_reply { */ -define ipsec_spd_add_del_entry { - u32 client_index; - u32 context; - u8 is_add; +define ipsec_spd_add_del_entry +{ + u32 client_index; + u32 context; + u8 is_add; - u32 spd_id; - i32 priority; - u8 is_outbound; + u32 spd_id; + i32 priority; + u8 is_outbound; - // Selector - u8 is_ipv6; - u8 is_ip_any; - u8 remote_address_start[16]; - u8 remote_address_stop[16]; - u8 local_address_start[16]; - u8 local_address_stop[16]; + // Selector + u8 is_ipv6; + u8 is_ip_any; + u8 remote_address_start[16]; + u8 remote_address_stop[16]; + u8 local_address_start[16]; + u8 local_address_stop[16]; - u8 protocol; + u8 protocol; - u16 remote_port_start; - u16 remote_port_stop; - u16 local_port_start; - u16 local_port_stop; + u16 remote_port_start; + u16 remote_port_stop; + u16 local_port_start; + u16 local_port_stop; - // Policy - u8 policy; - u32 sa_id; + // Policy + u8 policy; + u32 sa_id; }; /** \brief Reply for IPsec: Add/delete Security Policy Database entry @@ -2983,9 +3644,10 @@ define ipsec_spd_add_del_entry { @param retval - return code */ -define ipsec_spd_add_del_entry_reply { - u32 context; - i32 retval; +define ipsec_spd_add_del_entry_reply +{ + u32 context; + i32 retval; }; /** \brief IPsec: Add/delete Security Association Database entry @@ -3019,31 +3681,32 @@ define ipsec_spd_add_del_entry_reply { IPsec tunnel address copy mode (to support GDOI) */ -define ipsec_sad_add_del_entry { - u32 client_index; - u32 context; - u8 is_add; +define ipsec_sad_add_del_entry +{ + u32 client_index; + u32 context; + u8 is_add; - u32 sad_id; + u32 sad_id; - u32 spi; + u32 spi; - u8 protocol; + u8 protocol; - u8 crypto_algorithm; - u8 crypto_key_length; - u8 crypto_key[128]; + u8 crypto_algorithm; + u8 crypto_key_length; + u8 crypto_key[128]; - u8 integrity_algorithm; - u8 integrity_key_length; - u8 integrity_key[128]; + u8 integrity_algorithm; + u8 integrity_key_length; + u8 integrity_key[128]; - u8 use_extended_sequence_number; + u8 use_extended_sequence_number; - u8 is_tunnel; - u8 is_tunnel_ipv6; - u8 tunnel_src_address[16]; - u8 tunnel_dst_address[16]; + u8 is_tunnel; + u8 is_tunnel_ipv6; + u8 tunnel_src_address[16]; + u8 tunnel_dst_address[16]; }; /** \brief Reply for IPsec: Add/delete Security Association Database entry @@ -3051,9 +3714,10 @@ define ipsec_sad_add_del_entry { @param retval - return code */ -define ipsec_sad_add_del_entry_reply { - u32 context; - i32 retval; +define ipsec_sad_add_del_entry_reply +{ + u32 context; + i32 retval; }; /** \brief IPsec: Update Security Association keys @@ -3069,17 +3733,18 @@ define ipsec_sad_add_del_entry_reply { @param integrity_key - integrity keying material */ -define ipsec_sa_set_key { - u32 client_index; - u32 context; +define ipsec_sa_set_key +{ + u32 client_index; + u32 context; - u32 sa_id; + u32 sa_id; - u8 crypto_key_length; - u8 crypto_key[128]; + u8 crypto_key_length; + u8 crypto_key[128]; - u8 integrity_key_length; - u8 integrity_key[128]; + u8 integrity_key_length; + u8 integrity_key[128]; }; /** \brief Reply for IPsec: Update Security Association keys @@ -3087,9 +3752,10 @@ define ipsec_sa_set_key { @param retval - return code */ -define ipsec_sa_set_key_reply { - u32 context; - i32 retval; +define ipsec_sa_set_key_reply +{ + u32 context; + i32 retval; }; /** \brief IKEv2: Add/delete profile @@ -3099,21 +3765,23 @@ define ipsec_sa_set_key_reply { @param name - IKEv2 profile name @param is_add - Add IKEv2 profile if non-zero, else delete */ -define ikev2_profile_add_del { - u32 client_index; - u32 context; +define ikev2_profile_add_del +{ + u32 client_index; + u32 context; - u8 name[64]; - u8 is_add; + u8 name[64]; + u8 is_add; }; /** \brief Reply for IKEv2: Add/delete profile @param context - returned sender context, to match reply w/ request @param retval - return code */ -define ikev2_profile_add_del_reply { - u32 context; - i32 retval; +define ikev2_profile_add_del_reply +{ + u32 context; + i32 retval; }; /** \brief IKEv2: Set IKEv2 profile authentication method @@ -3126,24 +3794,26 @@ define ikev2_profile_add_del_reply { @param data_len - Authentication data length @param data - Authentication data (for rsa-sig cert file path) */ -define ikev2_profile_set_auth { - u32 client_index; - u32 context; +define ikev2_profile_set_auth +{ + u32 client_index; + u32 context; - u8 name[64]; - u8 auth_method; - u8 is_hex; - u32 data_len; - u8 data[0]; + u8 name[64]; + u8 auth_method; + u8 is_hex; + u32 data_len; + u8 data[0]; }; /** \brief Reply for IKEv2: Set IKEv2 profile authentication method @param context - returned sender context, to match reply w/ request @param retval - return code */ -define ikev2_profile_set_auth_reply { - u32 context; - i32 retval; +define ikev2_profile_set_auth_reply +{ + u32 context; + i32 retval; }; /** \brief IKEv2: Set IKEv2 profile local/remote identification @@ -3156,24 +3826,26 @@ define ikev2_profile_set_auth_reply { @param data_len - Identification data length @param data - Identification data */ -define ikev2_profile_set_id { - u32 client_index; - u32 context; +define ikev2_profile_set_id +{ + u32 client_index; + u32 context; - u8 name[64]; - u8 is_local; - u8 id_type; - u32 data_len; - u8 data[0]; + u8 name[64]; + u8 is_local; + u8 id_type; + u32 data_len; + u8 data[0]; }; /** \brief Reply for IKEv2: @param context - returned sender context, to match reply w/ request @param retval - return code */ -define ikev2_profile_set_id_reply { - u32 context; - i32 retval; +define ikev2_profile_set_id_reply +{ + u32 context; + i32 retval; }; /** \brief IKEv2: Set IKEv2 profile traffic selector parameters @@ -3188,26 +3860,28 @@ define ikev2_profile_set_id_reply { @param start_addr - The smallest address included in traffic selector @param end_addr - The largest address included in traffic selector */ -define ikev2_profile_set_ts { - u32 client_index; - u32 context; +define ikev2_profile_set_ts +{ + u32 client_index; + u32 context; - u8 name[64]; - u8 is_local; - u8 proto; - u16 start_port; - u16 end_port; - u32 start_addr; - u32 end_addr; + u8 name[64]; + u8 is_local; + u8 proto; + u16 start_port; + u16 end_port; + u32 start_addr; + u32 end_addr; }; /** \brief Reply for IKEv2: Set IKEv2 profile traffic selector parameters @param context - returned sender context, to match reply w/ request @param retval - return code */ -define ikev2_profile_set_ts_reply { - u32 context; - i32 retval; +define ikev2_profile_set_ts_reply +{ + u32 context; + i32 retval; }; /** \brief IKEv2: Set IKEv2 local RSA private key @@ -3216,20 +3890,22 @@ define ikev2_profile_set_ts_reply { @param key_file - Key file absolute path */ -define ikev2_set_local_key { - u32 client_index; - u32 context; +define ikev2_set_local_key +{ + u32 client_index; + u32 context; - u8 key_file[256]; + u8 key_file[256]; }; /** \brief Reply for IKEv2: Set IKEv2 local key @param context - returned sender context, to match reply w/ request @param retval - return code */ -define ikev2_set_local_key_reply { - u32 context; - i32 retval; +define ikev2_set_local_key_reply +{ + u32 context; + i32 retval; }; /** \brief Tell client about a DHCP completion event @@ -3240,14 +3916,15 @@ define ikev2_set_local_key_reply { @param router_address - Router IP address @param host_mac - Host MAC address */ -manual_java define dhcp_compl_event { - u32 client_index; - u32 pid; - u8 hostname[64]; - u8 is_ipv6; - u8 host_address[16]; - u8 router_address[16]; - u8 host_mac[6]; +define dhcp_compl_event +{ + u32 client_index; + u32 pid; + u8 hostname[64]; + u8 is_ipv6; + u8 host_address[16]; + u8 router_address[16]; + u8 host_mac[6]; }; /** \brief Add MAP domains @@ -3264,7 +3941,8 @@ manual_java define dhcp_compl_event { @param is_translation - MAP-E / MAP-T @param mtu - MTU */ -define map_add_domain { +define map_add_domain +{ u32 client_index; u32 context; u8 ip6_prefix[16]; @@ -3285,7 +3963,8 @@ define map_add_domain { @param index - MAP domain index @param retval - return code */ -define map_add_domain_reply { +define map_add_domain_reply +{ u32 context; u32 index; i32 retval; @@ -3296,7 +3975,8 @@ define map_add_domain_reply { @param context - sender context, to match reply w/ request @param index - MAP Domain index */ -define map_del_domain { +define map_del_domain +{ u32 client_index; u32 context; u32 index; @@ -3306,7 +3986,8 @@ define map_del_domain { @param context - returned sender context, to match reply w/ request @param retval - return code */ -define map_del_domain_reply { +define map_del_domain_reply +{ u32 context; i32 retval; }; @@ -3319,7 +4000,8 @@ define map_del_domain_reply { @param ip6_dst - MAP CE IPv6 address @param psid - Rule PSID */ -define map_add_del_rule { +define map_add_del_rule +{ u32 client_index; u32 context; u32 index; @@ -3332,7 +4014,8 @@ define map_add_del_rule { @param context - returned sender context, to match reply w/ request @param retval - return code */ -define map_add_del_rule_reply { +define map_add_del_rule_reply +{ u32 context; i32 retval; }; @@ -3340,12 +4023,14 @@ define map_add_del_rule_reply { /** \brief Get list of map domains @param client_index - opaque cookie to identify the sender */ -define map_domain_dump { +define map_domain_dump +{ u32 client_index; u32 context; }; -manual_java define map_domain_details { +define map_domain_details +{ u32 context; u32 domain_index; u8 ip6_prefix[16]; @@ -3362,13 +4047,15 @@ manual_java define map_domain_details { u8 is_translation; }; -define map_rule_dump { +define map_rule_dump +{ u32 client_index; u32 context; u32 domain_index; }; -manual_java define map_rule_details { +define map_rule_details +{ u32 context; u8 ip6_dst[16]; u16 psid; @@ -3378,9 +4065,10 @@ manual_java define map_rule_details { @param client_index - opaque cookie to identify the sender @param context - sender context, to match reply w/ request */ -define map_summary_stats { - u32 client_index; - u32 context; +define map_summary_stats +{ + u32 client_index; + u32 context; }; /** \brief Reply for map_summary_stats request @@ -3391,14 +4079,15 @@ define map_summary_stats { @param total_ip4_fragments - @param total_security_check - */ -define map_summary_stats_reply { - u32 context; - i32 retval; - u64 total_bindings; - u64 total_pkts[2]; - u64 total_bytes[2]; - u64 total_ip4_fragments; - u64 total_security_check[2]; +define map_summary_stats_reply +{ + u32 context; + i32 retval; + u64 total_bindings; + u64 total_pkts[2]; + u64 total_bytes[2]; + u64 total_ip4_fragments; + u64 total_security_check[2]; }; /** \brief cop: enable/disable junk filtration features on an interface @@ -3408,11 +4097,12 @@ define map_summary_stats_reply { @param enable_disable - 1 => enable, 0 => disable */ -define cop_interface_enable_disable { - u32 client_index; - u32 context; - u32 sw_if_index; - u8 enable_disable; +define cop_interface_enable_disable +{ + u32 client_index; + u32 context; + u32 sw_if_index; + u8 enable_disable; }; /** \brief cop: interface enable/disable junk filtration reply @@ -3420,9 +4110,10 @@ define cop_interface_enable_disable { @param retval - return code */ -define cop_interface_enable_disable_reply { - u32 context; - i32 retval; +define cop_interface_enable_disable_reply +{ + u32 context; + i32 retval; }; /** \brief cop: enable/disable whitelist filtration features on an interface @@ -3437,14 +4128,15 @@ define cop_interface_enable_disable_reply { @param default_cop - 1 => enable non-ip4, non-ip6 filtration 0=> disable it */ -define cop_whitelist_enable_disable { - u32 client_index; - u32 context; - u32 sw_if_index; - u32 fib_id; - u8 ip4; - u8 ip6; - u8 default_cop; +define cop_whitelist_enable_disable +{ + u32 client_index; + u32 context; + u32 sw_if_index; + u32 fib_id; + u8 ip4; + u8 ip6; + u8 default_cop; }; /** \brief cop: interface enable/disable junk filtration reply @@ -3452,9 +4144,10 @@ define cop_whitelist_enable_disable { @param retval - return code */ -define cop_whitelist_enable_disable_reply { - u32 context; - i32 retval; +define cop_whitelist_enable_disable_reply +{ + u32 context; + i32 retval; }; /** \brief get_node_graph - get a copy of the vpp node graph @@ -3464,9 +4157,10 @@ define cop_whitelist_enable_disable_reply { @param context - sender context, to match reply w/ request */ -define get_node_graph { - u32 client_index; - u32 context; +define get_node_graph +{ + u32 client_index; + u32 context; }; /** \brief get_node_graph_reply @@ -3477,10 +4171,11 @@ define get_node_graph { heaps and free the result. */ -define get_node_graph_reply { - u32 context; - i32 retval; - u64 reply_in_shmem; +define get_node_graph_reply +{ + u32 context; + i32 retval; + u64 reply_in_shmem; }; /** \brief Clear interface statistics @@ -3488,99 +4183,72 @@ define get_node_graph_reply { @param context - sender context, to match reply w/ request @param sw_if_index - index of the interface to clear statistics */ -define sw_interface_clear_stats { - u32 client_index; - u32 context; - u32 sw_if_index; +define sw_interface_clear_stats +{ + u32 client_index; + u32 context; + u32 sw_if_index; }; /** \brief Reply to sw_interface_clear_stats @param context - sender context which was passed in the request @param retval - return code of the set flags request */ -define sw_interface_clear_stats_reply { - u32 context; - i32 retval; +define sw_interface_clear_stats_reply +{ + u32 context; + i32 retval; }; -/** \brief IOAM Trace : Set TRACE profile +/** \brief IOAM enable : Enable in-band OAM @param id - profile id - @param trace_type - Trace type - @param trace_num_elt - Number of nodes in trace path - @param trace_ppc - Trace PPC (none/encap/decap) - @param trace_tsp - Trace timestamp precision (0-sec,1-ms,2-us,3-ns) - @param trace_app_data - Trace application data, can be any 4 bytes + @param seqno - To enable Seqno Processing + @param analyse - Enabling analysis of iOAM at decap node @param pow_enable - Proof of Work enabled or not flag - @param node_id - Id of this node + @param trace_enable - iOAM Trace enabled or not flag */ -define trace_profile_add { +define ioam_enable +{ u32 client_index; u32 context; u16 id; - u8 trace_type; - u8 trace_num_elt; - u8 trace_ppc; - u8 trace_tsp; - u32 trace_app_data; - u8 pow_enable; + u8 seqno; + u8 analyse; + u8 pot_enable; + u8 trace_enable; u32 node_id; }; -/** \brief Trace profile add / del response +/** \brief iOAM Trace profile add / del response @param context - sender context, to match reply w/ request @param retval - return value for request */ -define trace_profile_add_reply { - u32 context; - i32 retval; -}; - -/** \brief IOAM Trace enable trace profile for a flow - @param id - id of the trace profile to be applied - @param dest_ipv6 - Destination IPv6 address - @param prefix_length - prefix mask - @param vrf_id - VRF ID - @param trace_op - Trace operation (add/mod/del) - @param enable - apply/remove the trace profile for the flow -*/ -define trace_profile_apply { - u32 client_index; - u32 context; - u16 id; - u8 dest_ipv6[16]; - u32 prefix_length; - u32 vrf_id; - u8 trace_op; - u8 enable; -}; - -/** \brief Trace profile apply response - @param context - sender context, to match reply w/ request - @param retval - return value for request -*/ -define trace_profile_apply_reply { +define ioam_enable_reply +{ u32 context; i32 retval; }; -/** \brief Delete Trace Profile +/** \brief iOAM disable @param client_index - opaque cookie to identify the sender @param context - sender context, to match reply w/ request @param index - MAP Domain index */ -define trace_profile_del { +define ioam_disable +{ u32 client_index; u32 context; u16 id; }; -/** \brief Trace profile add / del response +/** \brief iOAM disable response @param context - sender context, to match reply w/ request @param retval - return value for request */ -define trace_profile_del_reply { - u32 context; - i32 retval; +define ioam_disable_reply +{ + u32 context; + i32 retval; }; /** \brief Create host-interface @@ -3590,23 +4258,25 @@ define trace_profile_del_reply { @param hw_addr - interface MAC @param use_random_hw_addr - use random generated MAC */ -define af_packet_create { - u32 client_index; - u32 context; +define af_packet_create +{ + u32 client_index; + u32 context; - u8 host_if_name[64]; - u8 hw_addr[6]; - u8 use_random_hw_addr; + 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; - u32 sw_if_index; +define af_packet_create_reply +{ + u32 context; + i32 retval; + u32 sw_if_index; }; /** \brief Delete host-interface @@ -3614,20 +4284,22 @@ define af_packet_create_reply { @param context - sender context, to match reply w/ request @param host_if_name - interface name */ -define af_packet_delete { - u32 client_index; - u32 context; +define af_packet_delete +{ + u32 client_index; + u32 context; - u8 host_if_name[64]; + 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; +define af_packet_delete_reply +{ + u32 context; + i32 retval; }; /** \brief Add/del policer @@ -3642,6 +4314,7 @@ define af_packet_delete_reply { @param rate_type - rate type @param round_type - rounding type @param type - policer algorithm + @param color_aware - 0=color-blind, 1=color-aware @param conform_action_type - conform action type @param conform_dscp - DSCP for conform mar-and-transmit action @param exceed_action_type - exceed action type @@ -3649,34 +4322,39 @@ define af_packet_delete_reply { @param violate_action_type - violate action type @param violate_dscp - DSCP for violate mar-and-transmit action */ -define policer_add_del { - u32 client_index; - u32 context; +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; - u8 conform_action_type; - u8 conform_dscp; - u8 exceed_action_type; - u8 exceed_dscp; - u8 violate_action_type; - u8 violate_dscp; + u8 is_add; + u8 name[64]; + u32 cir; + u32 eir; + u64 cb; + u64 eb; + u8 rate_type; + u8 round_type; + u8 type; + u8 color_aware; + u8 conform_action_type; + u8 conform_dscp; + u8 exceed_action_type; + u8 exceed_dscp; + u8 violate_action_type; + u8 violate_dscp; }; /** \brief Add/del policer response @param context - sender context, to match reply w/ request @param retval - return value for request + @param policer_index - for add, returned index of the new policer */ -define policer_add_del_reply { - u32 context; - i32 retval; +define policer_add_del_reply +{ + u32 context; + i32 retval; + u32 policer_index; }; /** \brief Get list of policers @@ -3685,12 +4363,13 @@ define policer_add_del_reply { @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; +define policer_dump +{ + u32 client_index; + u32 context; - u8 match_name_valid; - u8 match_name[64]; + u8 match_name_valid; + u8 match_name[64]; }; /** \brief Policer operational state response. @@ -3720,33 +4399,90 @@ define policer_dump { @param extended_bucket - extended bucket @param last_update_time - last update time */ -manual_java define policer_details { - u32 context; +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 conform_action_type; - u8 conform_dscp; - u8 exceed_action_type; - u8 exceed_dscp; - u8 violate_action_type; - u8 violate_dscp; - 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; + u8 name[64]; + u32 cir; + u32 eir; + u64 cb; + u64 eb; + u8 rate_type; + u8 round_type; + u8 type; + u8 conform_action_type; + u8 conform_dscp; + u8 exceed_action_type; + u8 exceed_dscp; + u8 violate_action_type; + u8 violate_dscp; + 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 Set/unset policer classify interface + @param client_index - opaque cookie to identify the sender + @param context - sender context, to match reply w/ request + @param sw_if_index - interface to set/unset policer classify + @param ip4_table_index - ip4 classify table index (~0 for skip) + @param ip6_table_index - ip6 classify table index (~0 for skip) + @param l2_table_index - l2 classify table index (~0 for skip) + @param is_add - Set if non-zero, else unset + Note: User is recommeneded to use just one valid table_index per call. + (ip4_table_index, ip6_table_index, or l2_table_index) +*/ +define policer_classify_set_interface +{ + u32 client_index; + u32 context; + u32 sw_if_index; + u32 ip4_table_index; + u32 ip6_table_index; + u32 l2_table_index; + u8 is_add; +}; + +/** \brief Set/unset policer classify interface response + @param context - sender context, to match reply w/ request + @param retval - return value for request +*/ +define policer_classify_set_interface_reply +{ + u32 context; + i32 retval; +}; + +/** \brief Get list of policer classify interfaces and tables + @param client_index - opaque cookie to identify the sender + @param context - sender context, to match reply w/ request + @param type - classify table type +*/ +define policer_classify_dump +{ + u32 client_index; + u32 context; + u8 type; +}; + +/** \brief Policer iclassify operational state response. + @param context - sender context, to match reply w/ request + @param sw_if_index - software interface index + @param table_index - classify table index +*/ +define policer_classify_details +{ + u32 context; + u32 sw_if_index; + u32 table_index; }; /** \brief Create netmap @@ -3758,24 +4494,26 @@ manual_java define policer_details { @param is_pipe - is pipe @param is_master - 0=slave, 1=master */ -define netmap_create { - u32 client_index; - u32 context; +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; + 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; +define netmap_create_reply +{ + u32 context; + i32 retval; }; /** \brief Delete netmap @@ -3783,30 +4521,33 @@ define netmap_create_reply { @param context - sender context, to match reply w/ request @param netmap_if_name - interface name */ -define netmap_delete { - u32 client_index; - u32 context; +define netmap_delete +{ + u32 client_index; + u32 context; - u8 netmap_if_name[64]; + 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; +define netmap_delete_reply +{ + u32 context; + i32 retval; }; /** \brief Dump mpls gre tunnel table @param client_index - opaque cookie to identify the sender @param tunnel_index - gre tunnel identifier or -1 in case of all tunnels */ -define mpls_gre_tunnel_dump { - u32 client_index; - u32 context; - i32 tunnel_index; +define mpls_gre_tunnel_dump +{ + u32 client_index; + u32 context; + i32 tunnel_index; }; /** \brief mpls gre tunnel operational state response @@ -3822,31 +4563,33 @@ define mpls_gre_tunnel_dump { @param nlabels - number of resolved labels @param labels - resolved labels */ -manual_java define mpls_gre_tunnel_details { - u32 context; - u32 tunnel_index; +define mpls_gre_tunnel_details +{ + u32 context; + u32 tunnel_index; - u32 intfc_address; - u32 inner_fib_index; - u32 mask_width; - u32 encap_index; - u32 hw_if_index; - u8 l2_only; - u32 tunnel_src; - u32 tunnel_dst; - u32 outer_fib_index; - u32 nlabels; - u32 labels[0]; + u32 intfc_address; + u32 inner_fib_index; + u32 mask_width; + u32 encap_index; + u32 hw_if_index; + u8 l2_only; + u32 tunnel_src; + u32 tunnel_dst; + u32 outer_fib_index; + u32 nlabels; + u32 labels[nlabels]; }; /** \brief Dump mpls eth tunnel table @param client_index - opaque cookie to identify the sender @param tunnel_index - eth tunnel identifier or -1 in case of all tunnels */ -define mpls_eth_tunnel_dump { - u32 client_index; - u32 context; - i32 tunnel_index; +define mpls_eth_tunnel_dump +{ + u32 client_index; + u32 context; + i32 tunnel_index; }; /** \brief mpls eth tunnel operational state response @@ -3861,29 +4604,31 @@ define mpls_eth_tunnel_dump { @param nlabels - number of resolved labels @param labels - resolved labels */ -manual_java define mpls_eth_tunnel_details { - u32 context; - u32 tunnel_index; +define mpls_eth_tunnel_details +{ + u32 context; + u32 tunnel_index; - u32 intfc_address; - u32 inner_fib_index; - u32 mask_width; - u32 encap_index; - u32 hw_if_index; - u8 l2_only; - u8 tunnel_dst_mac[6]; - u32 tx_sw_if_index; - u32 nlabels; - u32 labels[0]; + u32 intfc_address; + u32 inner_fib_index; + u32 mask_width; + u32 encap_index; + u32 hw_if_index; + u8 l2_only; + u8 tunnel_dst_mac[6]; + u32 tx_sw_if_index; + u32 nlabels; + u32 labels[nlabels]; }; /** \brief Dump mpls fib table @param client_index - opaque cookie to identify the sender @param fib_index - mpls fib entry identifier or -1 in case of all entries */ -define mpls_fib_encap_dump { - u32 client_index; - u32 context; +define mpls_fib_encap_dump +{ + u32 client_index; + u32 context; }; /** \brief mpls fib encap table response @@ -3894,56 +4639,26 @@ define mpls_fib_encap_dump { @param nlabels - number of resolved labels @param labels - resolved labels */ -manual_java define mpls_fib_encap_details { - u32 context; - - u32 fib_index; - u32 entry_index; - u32 dest; - u32 s_bit; - u32 nlabels; - u32 labels[0]; -}; - -/** \brief Dump mpls fib decap table - @param client_index - opaque cookie to identify the sender - @param fib_index - mpls fib entry identifier or -1 in case of all entries -*/ -define mpls_fib_decap_dump { - u32 client_index; - u32 context; -}; - -/** \brief mpls fib decap table response - @param fib_index - fib table id - @param entry_index - reference to mpls label table - @param dest - destination ipv4 addr - @param s_bit - - @param label - mpls labels - @param rx_table_id - rx fib id - @param tx_table_id - tx fib id - @param swif_tag - -*/ -manual_java define mpls_fib_decap_details { - u32 context; +define mpls_fib_encap_details +{ + u32 context; - u32 fib_index; - u32 entry_index; - u32 dest; - u32 s_bit; - u32 label; - u32 rx_table_id; - u32 tx_table_id; - u8 swif_tag[8]; + u32 fib_index; + u32 entry_index; + u32 dest; + u32 s_bit; + u32 nlabels; + u32 labels[nlabels]; }; /** \brief Classify get table IDs request @param client_index - opaque cookie to identify the sender @param context - sender context, to match reply w/ request */ -define classify_table_ids { - u32 client_index; - u32 context; +define classify_table_ids +{ + u32 client_index; + u32 context; }; /** \brief Reply for classify get table IDs request @@ -3951,11 +4666,12 @@ define classify_table_ids { @param count - number of ids returned in response @param ids - array of classify table ids */ -manual_java define classify_table_ids_reply { - u32 context; - i32 retval; - u32 count; - u32 ids[count]; +define classify_table_ids_reply +{ + u32 context; + i32 retval; + u32 count; + u32 ids[count]; }; /** \brief Classify table ids by interface index request @@ -3963,10 +4679,11 @@ manual_java define classify_table_ids_reply { @param context - sender context, to match reply w/ request @param sw_if_index - index of the interface */ -define classify_table_by_interface { - u32 client_index; - u32 context; - u32 sw_if_index; +define classify_table_by_interface +{ + u32 client_index; + u32 context; + u32 sw_if_index; }; /** \brief Reply for classify table id by interface index request @@ -3977,13 +4694,14 @@ define classify_table_by_interface { @param ip4_table_id - ip4 classify table index @param ip6_table_id - ip6 classify table index */ -manual_java define classify_table_by_interface_reply { - u32 context; - i32 retval; - u32 sw_if_index; - u32 l2_table_id; - u32 ip4_table_id; - u32 ip6_table_id; +define classify_table_by_interface_reply +{ + u32 context; + i32 retval; + u32 sw_if_index; + u32 l2_table_id; + u32 ip4_table_id; + u32 ip6_table_id; }; /** \brief Classify table info @@ -3991,10 +4709,11 @@ manual_java define classify_table_by_interface_reply { @param context - sender context, to match reply w/ request @param table_id - classify table index */ -define classify_table_info { - u32 client_index; - u32 context; - u32 table_id; +define classify_table_info +{ + u32 client_index; + u32 context; + u32 table_id; }; /** \brief Reply for classify table info request @@ -4009,18 +4728,19 @@ define classify_table_info { @param miss_next_index - index of miss table @param mask[] - match mask */ -manual_java define classify_table_info_reply { - u32 context; - i32 retval; - u32 table_id; - u32 nbuckets; - u32 match_n_vectors; - u32 skip_n_vectors; - u32 active_sessions; - u32 next_table_index; - u32 miss_next_index; - u32 mask_length; - u8 mask[mask_length]; +define classify_table_info_reply +{ + u32 context; + i32 retval; + u32 table_id; + u32 nbuckets; + u32 match_n_vectors; + u32 skip_n_vectors; + u32 active_sessions; + u32 next_table_index; + u32 miss_next_index; + u32 mask_length; + u8 mask[mask_length]; }; /** \brief Classify sessions dump request @@ -4028,10 +4748,11 @@ manual_java define classify_table_info_reply { @param context - sender context, to match reply w/ request @param table_id - classify table index */ -define classify_session_dump { - u32 client_index; - u32 context; - u32 table_id; +define classify_session_dump +{ + u32 client_index; + u32 context; + u32 table_id; }; /** \brief Reply for classify table session dump request @@ -4042,95 +4763,709 @@ define classify_session_dump { @param opaque_index - for add, opaque_index of session @param advance - advance value of session @param match[] - match value for session -*/ -manual_java define classify_session_details { - u32 context; - i32 retval; - u32 table_id; - u32 hit_next_index; - i32 advance; - u32 opaque_index; - u32 match_length; - u8 match[match_length]; +*/ +define classify_session_details +{ + u32 context; + i32 retval; + u32 table_id; + u32 hit_next_index; + i32 advance; + u32 opaque_index; + u32 match_length; + u8 match[match_length]; }; -/** \brief Enable and configure IPFIX exporter process request +/** \brief Configure IPFIX exporter process request @param client_index - opaque cookie to identify the sender @param context - sender context, to match reply w/ request @param collector_address - address of IPFIX collector - @param collector_port - port of IPFIX IPFIX collector + @param collector_port - port of IPFIX collector @param src_address - address of IPFIX exporter @param vrf_id - VRF / fib table ID @param path_mtu - Path MTU between exporter and collector @param template_interval - number of seconds after which to resend template + @param udp_checksum - UDP checksum calculation enable flag */ -define ipfix_enable { - u32 client_index; - u32 context; - u8 collector_address[16]; - u16 collector_port; - u8 src_address[16]; - u32 vrf_id; - u32 path_mtu; - u32 template_interval; +define set_ipfix_exporter +{ + u32 client_index; + u32 context; + u8 collector_address[16]; + u16 collector_port; + u8 src_address[16]; + u32 vrf_id; + u32 path_mtu; + u32 template_interval; + u8 udp_checksum; }; -/** \brief Reply to IPFIX enable and configure request +/** \brief Reply to IPFIX exporter configure request @param context - sender context which was passed in the request */ -define ipfix_enable_reply { - u32 context; - i32 retval; +define set_ipfix_exporter_reply +{ + u32 context; + i32 retval; }; -/** \brief IPFIX dump request +/** \brief IPFIX exporter dump request @param client_index - opaque cookie to identify the sender @param context - sender context, to match reply w/ request */ -define ipfix_dump { - u32 client_index; - u32 context; +define ipfix_exporter_dump +{ + u32 client_index; + u32 context; }; -/** \brief Reply to IPFIX dump request +/** \brief Reply to IPFIX exporter dump request @param context - sender context which was passed in the request @param collector_address - address of IPFIX collector - @param collector_port - port of IPFIX IPFIX collector + @param collector_port - port of IPFIX collector @param src_address - address of IPFIX exporter @param fib_index - fib table index @param path_mtu - Path MTU between exporter and collector @param template_interval - number of seconds after which to resend template + @param udp_checksum - UDP checksum calculation enable flag */ -manual_java define ipfix_details { - u32 context; - u8 collector_address[16]; - u16 collector_port; - u8 src_address[16]; - u32 fib_index; - u32 path_mtu; - u32 template_interval; +define ipfix_exporter_details +{ + u32 context; + u8 collector_address[16]; + u16 collector_port; + u8 src_address[16]; + u32 vrf_id; + u32 path_mtu; + u32 template_interval; + u8 udp_checksum; }; -/** \brief Query relative index via node names +/** \brief IPFIX classify stream configure request @param client_index - opaque cookie to identify the sender @param context - sender context, to match reply w/ request - @param node_name - name of node to find relative index from - @param next_name - next node from node_name to find relative index of + @param domain_id - domain ID reported in IPFIX messages for classify stream + @param src_port - source port of UDP session for classify stream */ -define get_next_index { +define set_ipfix_classify_stream { u32 client_index; u32 context; - u8 node_name[64]; - u8 next_name[64]; + u32 domain_id; + u16 src_port; }; -/** \brief Reply for get next node index - @param context - sender context which was passed in the request - @param retval - return value - @param next_index - index of the next_node +/** \brief IPFIX classify stream configure response + @param context - sender context, to match reply w/ request + @param retval - return value for request */ -define get_next_index_reply { +define set_ipfix_classify_stream_reply { u32 context; i32 retval; - u32 next_index; }; + +/** \brief IPFIX classify stream dump request + @param client_index - opaque cookie to identify the sender + @param context - sender context, to match reply w/ request +*/ +define ipfix_classify_stream_dump { + u32 client_index; + u32 context; +}; + +/** \brief Reply to IPFIX classify stream dump request + @param context - sender context, to match reply w/ request + @param domain_id - domain ID reported in IPFIX messages for classify stream + @param src_port - source port of UDP session for classify stream +*/ +define ipfix_classify_stream_details { + u32 context; + u32 domain_id; + u16 src_port; +}; + +/** \brief IPFIX add or delete classifier table request + @param client_index - opaque cookie to identify the sender + @param context - sender context, to match reply w/ request + @param table_id - classifier table ID + @param ip_version - version of IP used in the classifier table + @param transport_protocol - transport protocol used in the classifier table or 255 for unspecified +*/ +define ipfix_classify_table_add_del { + u32 client_index; + u32 context; + u32 table_id; + u8 ip_version; + u8 transport_protocol; + u8 is_add; +}; + +/** \brief IPFIX add classifier table response + @param context - sender context which was passed in the request +*/ +define ipfix_classify_table_add_del_reply { + u32 context; + i32 retval; +}; + +/** \brief IPFIX classify tables dump request + @param client_index - opaque cookie to identify the sender + @param context - sender context, to match reply w/ request +*/ +define ipfix_classify_table_dump { + u32 client_index; + u32 context; +}; + +/** \brief Reply to IPFIX classify tables dump request + @param context - sender context, to match reply w/ request + @param table_id - classifier table ID + @param ip_version - version of IP used in the classifier table + @param transport_protocol - transport protocol used in the classifier table or 255 for unspecified +*/ +define ipfix_classify_table_details { + u32 context; + u32 table_id; + u8 ip_version; + u8 transport_protocol; +}; + +/** \brief Set/unset flow classify interface + @param client_index - opaque cookie to identify the sender + @param context - sender context, to match reply w/ request + @param sw_if_index - interface to set/unset flow classify + @param ip4_table_index - ip4 classify table index (~0 for skip) + @param ip6_table_index - ip6 classify table index (~0 for skip) + @param l2_table_index - l2 classify table index (~0 for skip) + @param is_add - Set if non-zero, else unset + Note: User is recommeneded to use just one valid table_index per call. + (ip4_table_index, ip6_table_index, or l2_table_index) +*/ +define flow_classify_set_interface { + u32 client_index; + u32 context; + u32 sw_if_index; + u32 ip4_table_index; + u32 ip6_table_index; + u8 is_add; +}; + +/** \brief Set/unset flow classify interface response + @param context - sender context, to match reply w/ request + @param retval - return value for request +*/ +define flow_classify_set_interface_reply { + u32 context; + i32 retval; +}; + +/** \brief Get list of flow classify interfaces and tables + @param client_index - opaque cookie to identify the sender + @param context - sender context, to match reply w/ request + @param type - classify table type +*/ +define flow_classify_dump { + u32 client_index; + u32 context; + u8 type; +}; + +/** \brief Flow classify operational state response. + @param context - sender context, to match reply w/ request + @param sw_if_index - software interface index + @param table_index - classify table index +*/ +define flow_classify_details { + u32 context; + u32 sw_if_index; + u32 table_index; +}; + +/** \brief Enable/Disable span to mirror traffic from one interface to another + @param client_index - opaque cookie to identify the sender + @param context - sender context which was passed in the request + @param sw_if_index_from - interface to be mirorred + @param sw_if_index_to - interface where the traffic is mirrored + @param enable - 1 enable SPAN, 0 SPAN on given interface +*/ +define sw_interface_span_enable_disable{ + u32 client_index; + u32 context; + u32 sw_if_index_from; + u32 sw_if_index_to; + u8 enable; +}; + +/** \brief Reply to SPAN enable/disable request + @param context - sender context which was passed in the request +*/ +define sw_interface_span_enable_disable_reply { + u32 context; + i32 retval; +}; + +/** \brief SPAN dump request + @param client_index - opaque cookie to identify the sender + @param context - sender context, to match reply w/ request +*/ +define sw_interface_span_dump { + u32 client_index; + u32 context; +}; + +/** \brief Reply to SPAN dump request + @param context - sender context which was passed in the request + @param sw_if_index_from - mirorred interface + @param sw_if_index_to - interface where the traffic is mirrored +*/ +define sw_interface_span_details { + u32 context; + u32 sw_if_index_from; + u32 sw_if_index_to; +}; + +/** \brief Query relative index via node names + @param client_index - opaque cookie to identify the sender + @param context - sender context, to match reply w/ request + @param node_name - name of node to find relative index from + @param next_name - next node from node_name to find relative index of +*/ +define get_next_index +{ + u32 client_index; + u32 context; + u8 node_name[64]; + u8 next_name[64]; +}; + +/** \brief Reply for get next node index + @param context - sender context which was passed in the request + @param retval - return value + @param next_index - index of the next_node +*/ +define get_next_index_reply +{ + u32 context; + i32 retval; + u32 next_index; +}; + +/** \brief PacketGenerator create interface request + @param client_index - opaque cookie to identify the sender + @param context - sender context, to match reply w/ request + @param interface_id - interface index +*/ +define pg_create_interface +{ + u32 client_index; + u32 context; + u32 interface_id; +}; + +/** \brief PacketGenerator create interface response + @param context - sender context, to match reply w/ request + @param retval - return value for request +*/ +define pg_create_interface_reply +{ + u32 context; + i32 retval; + u32 sw_if_index; +}; + +/** \brief PacketGenerator capture packets on given interface request + @param client_index - opaque cookie to identify the sender + @param context - sender context, to match reply w/ request + @param interface_id - pg interface index + @param is_enabled - 1 if enabling streams, 0 if disabling + @param count - number of packets to be captured + @param pcap_file - pacp file name to store captured packets +*/ +define pg_capture +{ + u32 client_index; + u32 context; + u32 interface_id; + u8 is_enabled; + u32 count; + u32 pcap_name_length; + u8 pcap_file_name[pcap_name_length]; +}; + +/** \brief PacketGenerator capture packets response + @param context - sender context, to match reply w/ request + @param retval - return value for request +*/ +define pg_capture_reply +{ + u32 context; + i32 retval; +}; + +/** \brief Enable / disable packet generator request + @param client_index - opaque cookie to identify the sender + @param context - sender context, to match reply w/ request + @param is_enabled - 1 if enabling streams, 0 if disabling + @param stream - stream name to be enable/disabled, if not specified handle all streams +*/ +define pg_enable_disable +{ + u32 client_index; + u32 context; + u8 is_enabled; + u32 stream_name_length; + u8 stream_name[stream_name_length]; +}; + +/** \brief Reply for enable / disable packet generator + @param context - returned sender context, to match reply w/ request + @param retval - return code +*/ +define pg_enable_disable_reply +{ + u32 context; + i32 retval; +}; + +/** \brief Configure IP source and L4 port-range check + @param client_index - opaque cookie to identify the sender + @param context - sender context, to match reply w/ request + @param is_ip6 - 1 if source address type is IPv6 + @param is_add - 1 if add, 0 if delete + @param mask_length - mask length for address entry + @param address - array of address bytes + @param number_of_ranges - length of low_port and high_port arrays (must match) + @param low_ports[32] - up to 32 low end of port range entries (must have corresponding high_ports entry) + @param high_ports[32] - up to 32 high end of port range entries (must have corresponding low_ports entry) + @param vrf_id - fib table/vrf id to associate the source and port-range check with + @note To specify a single port set low_port and high_port entry the same +*/ +define ip_source_and_port_range_check_add_del +{ + u32 client_index; + u32 context; + u8 is_ipv6; + u8 is_add; + u8 mask_length; + u8 address[16]; + u8 number_of_ranges; + u16 low_ports[32]; + u16 high_ports[32]; + u32 vrf_id; +}; + +/** \brief Configure IP source and L4 port-range check reply + @param context - returned sender context, to match reply w/ request + @param retval - return code +*/ +define ip_source_and_port_range_check_add_del_reply +{ + u32 context; + i32 retval; +}; + +/** \brief Set interface source and L4 port-range request + @param client_index - opaque cookie to identify the sender + @param context - sender context, to match reply w/ request + @param interface_id - interface index + @param tcp_vrf_id - VRF associated with source and TCP port-range check + @param udp_vrf_id - VRF associated with source and TCP port-range check +*/ +define ip_source_and_port_range_check_interface_add_del +{ + u32 client_index; + u32 context; + u8 is_add; + u32 sw_if_index; + u32 tcp_in_vrf_id; + u32 tcp_out_vrf_id; + u32 udp_in_vrf_id; + u32 udp_out_vrf_id; +}; + +/** \brief Set interface source and L4 port-range response + @param context - sender context, to match reply w/ request + @param retval - return value for request +*/ +define ip_source_and_port_range_check_interface_add_del_reply +{ + u32 context; + i32 retval; +}; + +/** \brief Add / del ipsec gre tunnel request + @param client_index - opaque cookie to identify the sender + @param context - sender context, to match reply w/ request + @param local_sa_id - local SA id + @param remote_sa_id - remote SA id + @param is_add - 1 if adding the tunnel, 0 if deleting + @param src_address - tunnel source address + @param dst_address - tunnel destination address +*/ +define ipsec_gre_add_del_tunnel { + u32 client_index; + u32 context; + u32 local_sa_id; + u32 remote_sa_id; + u8 is_add; + u8 src_address[4]; + u8 dst_address[4]; +}; + +/** \brief Reply for add / del ipsec gre tunnel request + @param context - returned sender context, to match reply w/ request + @param retval - return code + @param sw_if_index - software index of the new ipsec gre tunnel +*/ +define ipsec_gre_add_del_tunnel_reply { + u32 context; + i32 retval; + u32 sw_if_index; +}; + +/** \brief Dump ipsec gre tunnel table + @param client_index - opaque cookie to identify the sender + @param context - sender context, to match reply w/ request + @param tunnel_index - gre tunnel identifier or -1 in case of all tunnels +*/ +define ipsec_gre_tunnel_dump { + u32 client_index; + u32 context; + u32 sw_if_index; +}; + +/** \brief mpls gre tunnel operational state response + @param context - returned sender context, to match reply w/ request + @param sw_if_index - software index of the ipsec gre tunnel + @param local_sa_id - local SA id + @param remote_sa_id - remote SA id + @param src_address - tunnel source address + @param dst_address - tunnel destination address +*/ +define ipsec_gre_tunnel_details { + u32 context; + u32 sw_if_index; + u32 local_sa_id; + u32 remote_sa_id; + u8 src_address[4]; + u8 dst_address[4]; +}; + +/** \brief Delete sub interface request + @param client_index - opaque cookie to identify the sender + @param context - sender context, to match reply w/ request + @param sw_if_index - sw index of the interface that was created by create_subif +*/ +define delete_subif { + u32 client_index; + u32 context; + u32 sw_if_index; +}; + +/** \brief Delete sub interface response + @param context - sender context, to match reply w/ request + @param retval - return code for the request +*/ +define delete_subif_reply { + u32 context; + i32 retval; +}; + +/** \brief DPDK interface HQoS pipe profile set request + @param client_index - opaque cookie to identify the sender + @param context - sender context, to match reply w/ request + @param sw_if_index - the interface + @param subport - subport ID + @param pipe - pipe ID within its subport + @param profile - pipe profile ID +*/ +define sw_interface_set_dpdk_hqos_pipe { + u32 client_index; + u32 context; + u32 sw_if_index; + u32 subport; + u32 pipe; + u32 profile; +}; + +/** \brief DPDK interface HQoS pipe profile set reply + @param context - sender context, to match reply w/ request + @param retval - request return code +*/ +define sw_interface_set_dpdk_hqos_pipe_reply { + u32 context; + i32 retval; +}; + +/** \brief DPDK interface HQoS subport parameters set request + @param client_index - opaque cookie to identify the sender + @param context - sender context, to match reply w/ request + @param sw_if_index - the interface + @param subport - subport ID + @param tb_rate - subport token bucket rate (measured in bytes/second) + @param tb_size - subport token bucket size (measured in credits) + @param tc_rate - subport traffic class 0 .. 3 rates (measured in bytes/second) + @param tc_period - enforcement period for rates (measured in milliseconds) +*/ +define sw_interface_set_dpdk_hqos_subport { + u32 client_index; + u32 context; + u32 sw_if_index; + u32 subport; + u32 tb_rate; + u32 tb_size; + u32 tc_rate[4]; + u32 tc_period; +}; + +/** \brief DPDK interface HQoS subport parameters set reply + @param context - sender context, to match reply w/ request + @param retval - request return code +*/ +define sw_interface_set_dpdk_hqos_subport_reply { + u32 context; + i32 retval; +}; + +/** \brief DPDK interface HQoS tctbl entry set request + @param client_index - opaque cookie to identify the sender + @param context - sender context, to match reply w/ request + @param sw_if_index - the interface + @param entry - entry index ID + @param tc - traffic class (0 .. 3) + @param queue - traffic class queue (0 .. 3) +*/ +define sw_interface_set_dpdk_hqos_tctbl { + u32 client_index; + u32 context; + u32 sw_if_index; + u32 entry; + u32 tc; + u32 queue; +}; + +/** \brief DPDK interface HQoS tctbl entry set reply + @param context - sender context, to match reply w/ request + @param retval - request return code +*/ +define sw_interface_set_dpdk_hqos_tctbl_reply { + u32 context; + i32 retval; +}; + +/** \brief L2 interface pbb tag rewrite configure request + @param client_index - opaque cookie to identify the sender + @param context - sender context, to match reply w/ request + @param sw_if_index - interface the operation is applied to + @param vtr_op - Choose from l2_vtr_op_t enum values + @param inner_tag - needed for translate_qinq vtr op only + @param outer_tag - needed for translate_qinq vtr op only + @param b_dmac - B-tag remote mac address, needed for any push or translate_qinq vtr op + @param b_smac - B-tag local mac address, needed for any push or translate qinq vtr op + @param b_vlanid - B-tag vlanid, needed for any push or translate qinq vtr op + @param i_sid - I-tag service id, needed for any push or translate qinq vtr op +*/ +define l2_interface_pbb_tag_rewrite +{ + u32 client_index; + u32 context; + u32 sw_if_index; + u32 vtr_op; + u16 outer_tag; + u8 b_dmac[6]; + u8 b_smac[6]; + u16 b_vlanid; + u32 i_sid; +}; + +/** \brief L2 interface pbb tag rewrite response + @param context - sender context, to match reply w/ request + @param retval - return code for the request +*/ +define l2_interface_pbb_tag_rewrite_reply +{ + u32 context; + i32 retval; +}; + +/** \brief Punt traffic to the host + @param client_index - opaque cookie to identify the sender + @param context - sender context, to match reply w/ request + @param is_add - add punt if non-zero, else delete + @param ipv - L3 protocol 4 - IPv4, 6 - IPv6, ~0 - All + @param l4_protocol - L4 protocol to be punted, only UDP (0x11) is supported + @param l4_port - TCP/UDP port to be punted +*/ +define punt { + u32 client_index; + u32 context; + u8 is_add; + u8 ipv; + u8 l4_protocol; + u16 l4_port; +}; + +/** \brief Reply to the punt request + @param context - sender context which was passed in the request + @param retval - return code of punt request +*/ +define punt_reply +{ + u32 context; + i32 retval; +}; + +/** \brief Dump ipsec policy database data + @param client_index - opaque cookie to identify the sender + @param context - sender context, to match reply w/ request + @param spd_id - SPD instance id + @param sa_id - SA id, optional, set to ~0 to see all policies in SPD +*/ +define ipsec_spd_dump { + u32 client_index; + u32 context; + u32 spd_id; + u32 sa_id; +}; + +/** \brief IPsec policy database response + @param context - sender context which was passed in the request + @param spd_id - SPD instance id + @param priority - numeric value to control policy evaluation order + @param is_outbound - [1|0] to indicate if direction is [out|in]bound + @param is_ipv6 - [1|0] to indicate if address family is ipv[6|4] + @param local_start_addr - first address in local traffic selector range + @param local_stop_addr - last address in local traffic selector range + @param local_start_port - first port in local traffic selector range + @param local_stop_port - last port in local traffic selector range + @param remote_start_addr - first address in remote traffic selector range + @param remote_stop_addr - last address in remote traffic selector range + @param remote_start_port - first port in remote traffic selector range + @param remote_stop_port - last port in remote traffic selector range + @param protocol - traffic selector protocol + @param policy - policy action + @param sa_id - SA id + @param bytes - byte count of packets matching this policy + @param packets - count of packets matching this policy +*/ + +define ipsec_spd_details { + u32 context; + u32 spd_id; + i32 priority; + u8 is_outbound; + u8 is_ipv6; + u8 local_start_addr[16]; + u8 local_stop_addr[16]; + u16 local_start_port; + u16 local_stop_port; + u8 remote_start_addr[16]; + u8 remote_stop_addr[16]; + u16 remote_start_port; + u16 remote_stop_port; + u8 protocol; + u8 policy; + u32 sa_id; + u64 bytes; + u64 packets; +}; +