X-Git-Url: https://gerrit.fd.io/r/gitweb?a=blobdiff_plain;f=vpp%2Fvpp-api%2Fvpe.api;h=38561b6742c98b952dfba7c568a0f004d8d9e423;hb=8b2b794ae99a2316caebceb65a5ab16f75536d6b;hp=50cfe2adf670a0ea07b237e4753d1acd411c3e1a;hpb=8a1531dfb7c963b530b54d33498c4a035ec03caa;p=vpp.git diff --git a/vpp/vpp-api/vpe.api b/vpp/vpp-api/vpe.api index 50cfe2adf67..38561b6742c 100644 --- a/vpp/vpp-api/vpe.api +++ b/vpp/vpp-api/vpe.api @@ -1,6 +1,5 @@ -/* 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: @@ -20,457 +19,290 @@ called through a shared memory interface. */ +/* + * Note: API placement cleanup in progress + * If you're looking for interface APIs, please + * see .../vnet/vnet/{interface.api,interface_api.c} + * IP APIs: see .../vnet/vnet/ip/{ip.api, ip_api.c} + * TAP APIs: see .../vnet/vnet/unix/{tap.api, tap_api.c} + * VXLAN APIs: see .../vnet/vnet/vxlan/{vxlan.api, vxlan_api.c} + * AF-PACKET APIs: ... see /vnet/devices/af_packet/{af_packet.api, af_packet_api.c} + * NETMAP APIs: see ... /vnet/vnet/devices/netmap/{netmap.api, netmap_api.c} + */ -/** \brief Register for interface 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 -*/ -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; -}; - -/** \brief Interface details structure (fix this) - @param sw_if_index - index of the interface - @param sup_sw_if_index - index of parent interface if any, else same as sw_if_index - @param l2_address_length - length of the interface's l2 address - @param pid - the interface's l2 address - @param interface_name - name of the interface - @param link_duplex - 1 if half duplex, 2 if full duplex - @param link_speed - 1 = 10M, 2 = 100M, 4 = 1G, 8 = 10G, 16 = 40G, 32 = 100G - @param link_MTU - max. transmittion unit - @param sub_if_id - A number 0-N to uniquely identify this subif on super if - @param sub_dot1ad - 0 = dot1q, 1=dot1ad - @param sub_number_of_tags - Number of tags (0 - 2) - @param sub_outer_vlan_id - @param sub_inner_vlan_id - @param sub_exact_match - @param sub_default - @param sub_outer_vlan_id_any - @param sub_inner_vlan_id_any - @param vtr_op - vlan tag rewrite operation - @param vtr_push_dot1q - @param vtr_tag1 - @param vtr_tag2 -*/ -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; - - /* Layer 2 address, if applicable */ - u32 l2_address_length; - u8 l2_address[8]; - - /* Interface name */ - u8 interface_name[64]; - - /* 1 = up, 0 = down */ - u8 admin_up_down; - u8 link_up_down; - - /* 1 = half duplex, 2 = full duplex */ - u8 link_duplex; - - /* 1 = 10M, 2 = 100M, 4 = 1G, 8 = 10G, 16 = 40G, 32 = 100G */ - u8 link_speed; - - /* MTU */ - u16 link_mtu; - - /* Subinterface ID. A number 0-N to uniquely identify this subinterface under the super interface*/ - u32 sub_id; - - /* 0 = dot1q, 1=dot1ad */ - u8 sub_dot1ad; - - /* 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 - @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 to set flags on - @param admin_up_down - set the admin state, 1 = up, 0 = down - @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; -}; - -/** \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; -}; - -/* works */ -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 +/** \brief Create a new subinterface with the given vlan id @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 to add/del addresses - @param is_add - add address if non-zero, else delete - @param is_ipv6 - if non-zero the address is ipv6, else ipv4 - @param del_all - if non-zero delete all addresses on the interface - @param address_length - address length in bytes, 4 for ip4, 16 for ip6 - @param address - array of address bytes + @param sw_if_index - software index of the new vlan's parent interface + @param vlan_id - vlan tag of the new interface */ -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 create_vlan_subif +{ + u32 client_index; + u32 context; + u32 sw_if_index; + u32 vlan_id; }; -/** \brief Reply for interface events registration +/** \brief Reply for the vlan subinterface create request @param context - returned sender context, to match reply w/ request @param retval - return code + @param sw_if_index - software index allocated for the new subinterface */ -define sw_interface_add_del_address_reply { - u32 context; - i32 retval; +define create_vlan_subif_reply +{ + u32 context; + i32 retval; + u32 sw_if_index; }; -/** \brief Associate the specified interface with a fib table +/** \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 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; -}; - -/** \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; -}; - -/** \brief Initialize a new tap interface with the given paramters - @param client_index - opaque cookie to identify the sender - @param context - sender context, to match reply w/ request - @param use_random_mac - let the system generate a unique mac address - @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 + @param enable - if non-zero enable, else disable */ -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 sw_interface_set_mpls_enable +{ + u32 client_index; + u32 context; + u32 sw_if_index; + u8 enable; }; -/** \brief Reply for tap connect request +/** \brief Reply for MPLS state on an interface @param context - returned sender context, to match reply w/ request @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; -}; - -/** \brief Modify a tap interface with the given paramters - @param client_index - opaque cookie to identify the sender - @param context - sender context, to match reply w/ request - @param sw_if_index - interface index of existing tap interface - @param use_random_mac - let the system generate a unique mac address - @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 sw_interface_set_mpls_enable_reply +{ + u32 context; + i32 retval; }; -/** \brief Reply for tap modify request +/** \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_n_out_labels - the number of labels in the label stack + @param mr_next_hop_out_label_stack - the next-hop output label stack, outer most first + @param next_hop_via_label - The next-hop is a resolved via a local 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]; + u8 mr_next_hop_n_out_labels; + u32 mr_next_hop_sw_if_index; + u32 mr_next_hop_table_id; + u32 mr_next_hop_via_label; + u32 mr_next_hop_out_label_stack[mr_next_hop_n_out_labels]; +}; + +/** \brief Reply for MPLS route add / del request @param context - returned sender context, to match reply w/ request @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 mpls_route_add_del_reply +{ + u32 context; + i32 retval; }; -/** \brief Delete tap interface +/** \brief Dump MPLS fib table @param client_index - opaque cookie to identify the sender - @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; -}; - -/** \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; -}; - -/** \brief Dump tap interfaces request */ -define sw_interface_tap_dump { - u32 client_index; - u32 context; +define mpls_fib_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 -*/ -define sw_interface_tap_details { - u32 context; - u32 sw_if_index; - u8 dev_name[64]; +/** \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 + + WARNING: this type is replicated, pending cleanup completion + +*/ +typeonly manual_print manual_endian define fib_path2 +{ + 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_path2_t path[count]; }; -/** \brief Create a new subinterface with the given vlan id +/** \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 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; -}; - -/** \brief Reply for the vlan subinterface create request - @param context - returned sender context, to match reply w/ request - @param retval - return code - @param sw_if_index - software index allocated for the new subinterface + @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 create_vlan_subif_reply { - u32 context; - i32 retval; - u32 sw_if_index; +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 Add / del route 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 vrf_id - fib table /vrf associated with the route - @param lookup_in_vrf - - @param resolve_attempts - - @param classify_table_index - - @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_ipv6 - 0 if an ip4 route, else ip6 - @param is_local - - @param is_classify - - @param is_multipath - Set to 1 if this is a multipath route, else 0 - @param not_last - Is last or not last msg in group of multiple add/del msgs - @param next_hop_weight - - @param dst_address_length - - @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]; -}; - -/** \brief Reply for add / del route request +/** \brief Reply for MPLS IP bind/unbind 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; +define mpls_ip_bind_unbind_reply +{ + u32 context; + i32 retval; }; -/* works */ -/** \brief Add / del gre tunnel request +/** \brief MPLS tunnel Add / del route @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 - + @param mt_is_add - Is this a route add or delete + @param mt_sw_if_index - The SW interface index of the tunnel to delete + @param mt_next_hop_proto_is_ip4 - The next-hop is IPV4 + @param mt_next_hop_weight - The weight, for UCMP + @param mt_next_hop[16] - the nextop address + @param mt_next_hop_sw_if_index - the next-hop SW interface + @param mt_next_hop_table_id - the next-hop table-id (if appropriate) + @param mt_next_hop_n_out_labels - the number of next-hop output labels + @param mt_next_hop_out_label_stack - the next-hop output label stack, outer most first */ -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 +define mpls_tunnel_add_del +{ + u32 client_index; + u32 context; + u32 mt_sw_if_index; + u8 mt_is_add; + u8 mt_l2_only; + u8 mt_next_hop_proto_is_ip4; + u8 mt_next_hop_weight; + u8 mt_next_hop[16]; + u8 mt_next_hop_n_out_labels; + u32 mt_next_hop_sw_if_index; + u32 mt_next_hop_table_id; + u32 mt_next_hop_out_label_stack[mt_next_hop_n_out_labels]; +}; + +/** \brief Reply for MPLS tunnel add / del request @param context - returned sender context, to match reply w/ request @param retval - return code + @param sw_if_index - SW interface index of the tunnel created */ -define mpls_gre_add_del_tunnel_reply { - u32 context; - i32 retval; - u32 tunnel_sw_if_index; +define mpls_tunnel_add_del_reply +{ + u32 context; + i32 retval; + u32 sw_if_index; }; -/** \brief Add / del MPLS encapsulation request +/** \brief Dump mpls eth tunnel table @param client_index - opaque cookie to identify the sender - @param context - sender context, to match reply w/ request - @param vrf_id - vrf id - @param dst_address[4] - - @param is_add - 1 if adding the encap, 0 if deleting - @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 + @param tunnel_index - eth tunnel identifier or -1 in case of all tunnels */ -define mpls_add_del_encap_reply { - u32 context; - i32 retval; +define mpls_tunnel_dump +{ + u32 client_index; + u32 context; + i32 tunnel_index; }; -/** \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 - @param context - returned sender context, to match reply w/ request - @param retval - return code +/** \brief mpls eth tunnel operational state response + @param tunnel_index - eth tunnel identifier + @param intfc_address - interface ipv4 addr + @param mask_width - interface ipv4 addr mask + @param hw_if_index - interface id + @param l2_only - + @param tunnel_dst_mac - + @param tx_sw_if_index - + @param encap_index - reference to mpls label table + @param nlabels - number of resolved labels + @param labels - resolved labels */ -define mpls_add_del_decap_reply { - u32 context; - i32 retval; +define mpls_tunnel_details +{ + u32 context; + u32 tunnel_index; + u8 mt_l2_only; + u8 mt_sw_if_index; + u8 mt_next_hop_proto_is_ip4; + u8 mt_next_hop[16]; + u32 mt_next_hop_sw_if_index; + u32 mt_next_hop_table_id; + u32 mt_next_hop_n_labels; + u32 mt_next_hop_out_labels[mt_next_hop_n_labels]; }; /** \brief Proxy ARP add / del request @@ -481,22 +313,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,54 +339,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; -}; - -/** \brief IP neighbor add / del request - @param client_index - opaque cookie to identify the sender - @param context - sender context, to match reply w/ request - @param vrf_id - vrf_id, only for IP4 - @param sw_if_index - interface used to reach neighbor - @param is_add - 1 to add neighbor, 0 to delete - @param is_ipv6 - 1 for IPv6 neighbor, 0 for IPv4 - @param is_static - - @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]; -}; - -/** \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 proxy_arp_intfc_enable_disable_reply +{ + u32 context; + i32 retval; }; /** \brief Reset VRF (remove all routes etc) request @@ -561,20 +364,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 +390,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,71 +407,62 @@ 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 */ -define want_stats_reply { - u32 context; - i32 retval; -}; - -/** \brief Want stats counters structure - @param vnet_counter_type- such as ip4, ip6, punts, etc - @param is_combined - rx & tx total (all types) counts - @param first_sw_if_index - first sw index in block of index, counts - @param count - number of interfaces this stats block includes counters for - @param data - contiguous block of vlib_counter_t structures -*/ -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]; +define want_stats_reply +{ + u32 context; + i32 retval; }; -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_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_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,338 +472,161 @@ 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 */ -define oam_event { - u8 dst_address[4]; - u8 state; -}; - -/** \brief Want OAM events request - @param client_index - opaque cookie to identify the sender - @param context - sender context, to match reply w/ request - @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; -}; - -/** \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; -}; - -/** \brief OAM add / del target request - @param client_index - opaque cookie to identify the sender - @param context - sender context, to match reply w/ request - @param vrf_id - vrf_id of the target - @param src_address[] - source address to use for the updates - @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; -}; - -/** \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; -}; - -/** \brief Reset fib table request - @param client_index - opaque cookie to identify the sender - @param context - sender context, to match reply w/ request - @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; -}; - -/** \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; -}; - -/** \brief DHCP Proxy config add / del request - @param client_index - opaque cookie to identify the sender - @param context - sender context, to match reply w/ request - @param vrf_id - vrf id - @param if_ipv6 - ipv6 if non-zero, else ipv4 - @param is_add - add the config if non-zero, else delete - @param insert_circuit_id - option82 suboption 1 fib number - @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]; -}; - -/** \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; -}; - -/** \brief DHCP Proxy set / unset vss request - @param client_index - opaque cookie to identify the sender - @param context - sender context, to match reply w/ request - @param tbl_id - table id - @param oui - first part of vpn id - @param fib_id - second part of vpn id - @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; -}; - -/** \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; -}; - -/** \brief Set the ip flow hash config for a fib request - @param client_index - opaque cookie to identify the sender - @param context - sender context, to match reply w/ request - @param vrf_id - vrf/fib id - @param is_ipv6 - if non-zero the fib is ip6, else ip4 - @param src - if non-zero include src in flow hash - @param dst - if non-zero include dst in flow hash - @param sport - if non-zero include sport in flow hash - @param dport - if non-zero include dport in flow hash - @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; -}; - -/** \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 oam_event +{ + u8 dst_address[4]; + u8 state; }; -/** \brief IPv6 router advertisement config request +/** \brief Want OAM events request @param client_index - opaque cookie to identify the sender @param context - sender context, to match reply w/ request - @param suppress - - @param managed - - @param other - - @param ll_option - - @param send_unicast - - @param cease - - @param is_no - - @param default_router - - @param max_interval - - @param min_interval - - @param lifetime - - @param initial_count - - @param initial_interval - + @param enable_disable- enable if non-zero, else disable + @param pid - pid of the requesting process */ -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 +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 request + @param retval - return code for the want oam stats request */ -define sw_interface_ip6nd_ra_config_reply { - u32 context; - i32 retval; +define want_oam_events_reply +{ + u32 context; + i32 retval; }; -/** \brief IPv6 router advertisement prefix config request +/** \brief OAM add / del target request @param client_index - opaque cookie to identify the sender @param context - sender context, to match reply w/ request - @param sw_if_index - - @param address[] - - @param address_length - - @param use_default - - @param no_advertise - - @param off_link - - @param no_autoconfig - - @param no_onlink - - @param is_no - - @param val_lifetime - - @param pref_lifetime - + @param vrf_id - vrf_id of the target + @param src_address[] - source address to use for the updates + @param dst_address[] - destination address of the target + @param is_add - add target if non-zero, else delete */ -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 oam_add_del +{ + u32 client_index; + u32 context; + u32 vrf_id; + u8 src_address[4]; + u8 dst_address[4]; + u8 is_add; }; -/** \brief IPv6 router advertisement prefix config response +/** \brief OAM add / del target response @param context - sender context, to match reply w/ request - @param retval - return code for the request + @param retval - return code of the request */ -define sw_interface_ip6nd_ra_prefix_reply { - u32 context; - i32 retval; +define oam_add_del_reply +{ + u32 context; + i32 retval; }; -/** \brief IPv6 interface enable / disable request +/** \brief Reset fib table request @param client_index - opaque cookie to identify the sender @param context - sender context, to match reply w/ request - @param sw_if_index - interface used to reach neighbor - @param enable - if non-zero enable ip6 on interface, else disable + @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 sw_interface_ip6_enable_disable { - u32 client_index; - u32 context; - u32 sw_if_index; - u8 enable; /* set to true if enable*/ +define reset_fib +{ + u32 client_index; + u32 context; + u32 vrf_id; + u8 is_ipv6; }; -/** \brief IPv6 interface enable / disable response +/** \brief Reset fib response @param context - sender context, to match reply w/ request - @param retval - return code for the request + @param retval - return code for the reset bfib request */ -define sw_interface_ip6_enable_disable_reply { - u32 context; - i32 retval; +define reset_fib_reply +{ + u32 context; + i32 retval; }; -/** \brief IPv6 set link local address on interface request +/** \brief DHCP Proxy config add / del request @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 link local on - @param address[] - the new link local address - @param address_length - link local address length + @param vrf_id - vrf id + @param if_ipv6 - ipv6 if non-zero, else ipv4 + @param is_add - add the config if non-zero, else delete + @param insert_circuit_id - option82 suboption 1 fib number + @param dhcp_server[] - server address + @param dhcp_src_address[] - */ -define sw_interface_ip6_set_link_local_address { - u32 client_index; - u32 context; - u32 sw_if_index; - u8 address[16]; - u8 address_length; +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 IPv6 set link local address on interface response +/** \brief DHCP Proxy config response @param context - sender context, to match reply w/ request - @param retval - error code for the request + @param retval - return code for the request */ -define sw_interface_ip6_set_link_local_address_reply { - u32 context; - i32 retval; +define dhcp_proxy_config_reply +{ + u32 context; + i32 retval; }; -/** \brief Set unnumbered interface add / del request +/** \brief DHCP Proxy set / unset vss request @param client_index - opaque cookie to identify the sender @param context - sender context, to match reply w/ request - @param sw_if_index - interface with an IP address - @param unnumbered_sw_if_index - interface which will use the address - @param is_add - if non-zero set the association, else unset it + @param tbl_id - table id + @param oui - first part of vpn id + @param fib_id - second part of vpn id + @param is_ipv6 - ip6 if non-zero, else ip4 + @param is_add - set vss if non-zero, else delete */ -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 dhcp_proxy_set_vss +{ + u32 client_index; + u32 context; + u32 tbl_id; + u32 oui; + u32 fib_id; + u8 is_ipv6; + u8 is_add; }; -/** \brief Set unnumbered interface add / del response +/** \brief DHCP proxy set / unset vss 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 dhcp_proxy_set_vss_reply +{ + u32 context; + i32 retval; }; /** \brief Create loopback interface request @@ -1014,10 +634,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 +646,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,50 +658,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 */ -define control_ping { - u32 client_index; - u32 context; -}; - -/** \brief Control ping from the client to the server response - @param client_index - opaque cookie to identify the sender - @param context - sender context, to match reply w/ request - @param retval - return code for the request - @param vpe_pid - the pid of the vpe, returned by the server -*/ -define control_ping_reply { - u32 context; - i32 retval; - u32 client_index; - u32 vpe_pid; -}; - -/** \brief Control ping from client to api server request, no print json output - @param client_index - opaque cookie to identify the sender - @param context - sender context, to match reply w/ request -*/ -define noprint_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 @@ -1088,11 +691,12 @@ define noprint_control_ping { @param retval - return code for the request @param vpe_pid - the pid of the vpe, returned by the server */ -define noprint_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 @@ -1100,10 +704,18 @@ define noprint_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 @@ -1111,10 +723,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 @@ -1123,20 +743,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 @@ -1146,21 +768,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 @@ -1179,30 +803,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 policy_name[64]; + u8 segs_and_tags[0]; }; /** \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 @@ -1212,21 +838,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 @@ -1236,21 +864,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 @@ -1259,88 +889,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; -}; - -/** \brief MPLS Ethernet add / del tunnel request - @param client_index - opaque cookie to identify the sender - @param context - sender context, to match reply w/ request - @param vrf_id - vrf_id, only for IP4 - @param sw_if_index - interface used to reach neighbor - @param is_add - add if set, tunnel delete if 0 - @param dst_mac_address - - @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; -}; - -/** \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; -}; -/** \brief MPLS Ethernet add/ del tunnel 2 - @param client_index - opaque cookie to identify the sender - @param context - sender context, to match reply w/ request - @param inner_vrf_id - - @param outer_vrf_id - - @param resolve_attempts - - @param resolve_opaque - - @param resolve_if_needed - - @param is_add - - @param adj_address - - @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]; -}; - -/** \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 sw_interface_set_vpath_reply +{ + u32 context; + i32 retval; }; /** \brief Set L2 XConnect between two interfaces request @@ -1350,21 +914,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 @@ -1376,23 +942,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 @@ -1405,25 +973,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 @@ -1433,22 +1003,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, @@ -1459,12 +1031,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 @@ -1472,10 +1045,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 @@ -1487,49 +1061,67 @@ 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 @param client_index - opaque cookie to identify the sender @param context - sender context, to match reply w/ request @param is_add- if non-zero add the table, else delete it + @param del_chain - if non-zero delete the whole chain of tables @param table_index - if add, reuturns index of the created table, else specifies the table to delete @param nbuckets - number of buckets when adding a table @param memory_size - memory size when adding a table @param match_n_vectors - number of match vectors @param next_table_index - index of next table @param miss_next_index - index of miss table + @param current_data_flag - option to use current node's packet payload + as the starting point from where packets are classified, + This option is only valid for L2/L3 input ACL for now. + 0: by default, classify data from the buffer's start location + 1: classify packets from VPP node’s current data pointer + @param current_data_offset - a signed value to shift the start location of + the packet to be classified + For example, if input IP ACL node is used, L2 header’s first byte + can be accessible by configuring current_data_offset to -14 + if there is no vlan tag. + This is valid only if current_data_flag is set to 1. @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; + u8 del_chain; + u32 table_index; + u32 nbuckets; + u32 memory_size; + u32 skip_n_vectors; + u32 match_n_vectors; + u32 next_table_index; + u32 miss_next_index; + u32 current_data_flag; + i32 current_data_offset; + u8 mask[0]; }; /** \brief Add/Delete classification table response @@ -1539,12 +1131,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 @@ -1555,26 +1148,41 @@ define classify_add_del_table_reply { @param hit_next_index - for add, hit_next_index of new session, required @param opaque_index - for add, opaque_index of new session @param advance -for add, advance value for session + @param action - + 0: no action (by default) + metadata is not used. + 1: Classified IP packets will be looked up from the + specified ipv4 fib table (configured by metadata as VRF id). + Only valid for L3 input ACL node + 2: Classified IP packets will be looked up from the + specified ipv6 fib table (configured by metadata as VRF id). + Only valid for L3 input ACL node + @param metadata - valid only if action != 0 + VRF id if action is 1 or 2. @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 action; + u32 metadata; + 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 @@ -1584,21 +1192,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 @@ -1609,23 +1219,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 @@ -1633,10 +1246,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 @@ -1644,10 +1258,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 @@ -1656,11 +1271,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 @@ -1668,10 +1284,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 @@ -1685,25 +1302,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 @@ -1718,18 +1337,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 @@ -1737,63 +1357,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; -}; - -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 @@ -1802,112 +1429,89 @@ 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 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 l2_interface_efp_filter_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_reply { - u32 context; - i32 retval; +define l2tpv3_interface_enable_disable +{ + u32 client_index; + u32 context; + u8 enable_disable; + u32 sw_if_index; }; -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 l2tpv3_interface_enable_disable_reply +{ + u32 context; + i32 retval; }; -define vxlan_add_del_tunnel_reply { - u32 context; - i32 retval; - u32 sw_if_index; +define l2tpv3_set_lookup_key +{ + u32 client_index; + u32 context; + /* 0 = ip6 src_address, 1 = ip6 dst_address, 2 = session_id */ + u8 key; }; -define vxlan_tunnel_dump { - u32 client_index; - u32 context; - u32 sw_if_index; +define l2tpv3_set_lookup_key_reply +{ + u32 context; + i32 retval; }; -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; + u8 is_ipv6; + u8 teb; + u8 src_address[16]; + u8 dst_address[16]; + u32 outer_fib_id; }; -define gre_add_del_tunnel { - u32 client_index; - u32 context; - u8 is_add; - u8 is_ipv6; - 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; +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; +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; }; -define gre_tunnel_details { - u32 context; - u32 sw_if_index; - u8 is_ipv6; - 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 @@ -1917,23 +1521,25 @@ 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 @@ -1943,15 +1549,17 @@ 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]; + u8 tag[64]; }; /** \brief vhost-user interface create response @@ -1959,10 +1567,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 @@ -1970,75 +1579,82 @@ 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 @@ -2048,13 +1664,14 @@ define show_version { @param version - version of the program @param build_directory - root of the workspace where the program was built */ -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) @@ -2066,47 +1683,24 @@ define show_version_reply { @param sock_filename - socket filename @param num_regions - number of used memory regions */ -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 ip_address_details { - u32 client_index; - u32 context; - u8 ip[16]; - u8 prefix_length; -}; - -define ip_address_dump { - u32 client_index; - u32 context; - u32 sw_if_index; - u8 is_ipv6; -}; - -define ip_details { - u32 sw_if_index; - u32 context; +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 ip_dump { - u32 client_index; - u32 context; - u8 is_ipv6; +/* works */ +define sw_interface_vhost_user_dump +{ + u32 client_index; + u32 context; }; /** \brief l2 fib table entry structure @@ -2117,61 +1711,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 */ -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 */ -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; }; -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; }; -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 @@ -2180,24 +1780,35 @@ define vxlan_gpe_tunnel_details { @param is_add - add address if non-zero, else delete @param locator_set_name - locator name @param locator_num - number of locators - @param locators - Lisp locator data + @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[locator_num]; +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 @@ -2209,23 +1820,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 @@ -2240,57 +1853,107 @@ define lisp_add_del_locator_reply { @param prefix_len - prefix len @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; + @param key_id + HMAC_NO_KEY 0 + HMAC_SHA_1_96 1 + HMAC_SHA_256_128 2 + @param key - secret key +*/ +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; + u16 key_id; + u8 key[64]; }; /** \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/delete map server + @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; delete otherwise + @param is_ipv6 - if non-zero the address is ipv6, else ipv4 + @param ip_address - map server IP address +*/ +define lisp_add_del_map_server +{ + u32 client_index; + u32 context; + u8 is_add; + u8 is_ipv6; + u8 ip_address[16]; +}; + +/** \brief Reply for lisp_add_del_map_server + @param context - returned sender context, to match reply w/ request + @param retval - return code +*/ +define lisp_add_del_map_server_reply +{ + u32 context; + i32 retval; }; /** \brief add or delete map-resolver @@ -2300,21 +1963,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 @@ -2322,19 +1987,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 @@ -2342,19 +2009,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 @@ -2362,21 +2031,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 @@ -2385,20 +2057,156 @@ 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 Get state of LISP RLOC probing + @param client_index - opaque cookie to identify the sender + @param context - sender context, to match reply w/ request +*/ +define show_lisp_rloc_probe_state +{ + u32 client_index; + u32 context; +}; + +/** \brief Reply for show_lisp_rloc_probe_state + @param context - returned sender context, to match reply w/ request + @param retval - return code + @param is_enabled - state of RLOC probing +*/ +define show_lisp_rloc_probe_state_reply +{ + u32 context; + i32 retval; + u8 is_enabled; +}; + +/** \brief enable/disable LISP RLOC probing + @param client_index - opaque cookie to identify the sender + @param context - sender context, to match reply w/ request + @param is_enable - enable if non-zero; disable otherwise +*/ +define lisp_rloc_probe_enable_disable +{ + u32 client_index; + u32 context; + u8 is_enabled; +}; + +/** \brief Reply for lisp_rloc_probe_enable_disable + @param context - returned sender context, to match reply w/ request + @param retval - return code +*/ +define lisp_rloc_probe_enable_disable_reply +{ + u32 context; + i32 retval; +}; + +/** \brief enable/disable LISP map-register + @param client_index - opaque cookie to identify the sender + @param context - sender context, to match reply w/ request + @param is_enable - enable if non-zero; disable otherwise +*/ +define lisp_map_register_enable_disable +{ + u32 client_index; + u32 context; + u8 is_enabled; +}; + +/** \brief Reply for lisp_map_register_enable_disable + @param context - returned sender context, to match reply w/ request + @param retval - return code +*/ +define lisp_map_register_enable_disable_reply +{ + u32 context; + i32 retval; +}; + +/** \brief Get state of LISP map-register + @param client_index - opaque cookie to identify the sender + @param context - sender context, to match reply w/ request +*/ +define show_lisp_map_register_state +{ + u32 client_index; + u32 context; +}; + +/** \brief Reply for show_lisp_map_register_state + @param context - returned sender context, to match reply w/ request + @param retval - return code +*/ +define show_lisp_map_register_state_reply +{ + u32 context; + i32 retval; + u8 is_enabled; +}; + +/** \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 @@ -2416,32 +2224,42 @@ define lisp_pitr_set_locator_set_reply { @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 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[rloc_num]; + @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 @@ -2453,28 +2271,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 @@ -2483,11 +2303,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 @@ -2495,9 +2316,10 @@ 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/bd_index to vrf @@ -2507,39 +2329,40 @@ define lisp_add_del_map_request_itr_rlocs_reply { @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 dp_table; - u8 is_l2; +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 filter - filter type; - Support value: - 0: all locator - 1: local locator - 2: remote locator + @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 locator_set_index; - u8 filter; +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 @@ -2549,70 +2372,88 @@ define lisp_locator_dump { @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; +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 locator_set_name - name of the locator_set - @param local - if is set, then locator_set is local - @param locator_count - number of locator this stats block includes - @param locator - locator data + @param context - sender context, to match reply w/ request + @param ls_index - locator set index + @param ls_name - name of the locator set */ -define lisp_locator_set_details { - u32 context; - u8 local; - u32 locator_set_index; - u8 locator_set_name[64]; +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; - Support value: - 0: all locator_set - 1: local locator_set - 2: remote locator_set + @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; - u8 filter; +define lisp_locator_set_dump +{ + u32 client_index; + u32 context; + u8 filter; }; /** \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 + @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 prefix_len - prefix len + @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 + @param key_id + HMAC_NO_KEY 0 + HMAC_SHA_1_96 1 + HMAC_SHA_256_128 2 + @param key - secret key */ -define lisp_eid_table_details { - u32 context; - u32 locator_set_index; - u8 is_local; - u8 eid_type; - u32 vni; - u8 eid[16]; - u8 eid_prefix_len; - u32 ttl; - u8 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; + u16 key_id; + u8 key[64]; }; /** \brief Request for eid table summary status @@ -2634,89 +2475,184 @@ define lisp_eid_table_details { 1: local eid 2: remote eid */ -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; +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 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 Shows relationship between vni and vrf - @param vrf - VRF index +/** \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 vrf; +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; }; -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 - @param locator_set_name - name of the locator_set @param is_ipv6 - if non-zero the address is ipv6, else ipv4 @param ip_address - array of address bytes */ -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 LISP map server details + @param is_ipv6 - if non-zero the address is ipv6, else ipv4 + @param ip_address - array of address bytes + */ +define lisp_map_server_details +{ + u32 context; + u8 is_ipv6; + u8 ip_address[16]; +}; + +/** \brief Request for map server summary status + @param client_index - opaque cookie to identify the sender + @param context - sender context, to match reply w/ request + */ +define lisp_map_server_dump +{ + u32 client_index; + u32 context; }; /** \brief Request for lisp-gpe protocol status @param client_index - opaque cookie to identify the sender @param context - sender context, to match reply w/ request */ -define show_lisp_status{ - u32 client_index; - u32 context; +define show_lisp_status +{ + u32 client_index; + u32 context; }; /** \brief Status of lisp, enable or disable @@ -2724,37 +2660,41 @@ define show_lisp_status{ @param feature_status - lisp enable if non-zero, else disable @param gpe_status - lisp enable if non-zero, else disable */ -define show_lisp_status_reply{ - u32 context; - i32 retval; - u8 feature_status; - u8 gpe_status; +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 @@ -2762,24 +2702,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 @@ -2789,21 +2732,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 @@ -2813,14 +2758,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 @@ -2832,27 +2826,31 @@ define ip4_arp_event { @param forward - enable/disable forwarding on all interfaces in the bd @param learn - enable/disable learning on all interfaces in the bd @param arp_term - enable/disable arp termination in the bd + @param mac_age - mac aging time in min, 0 for disabled @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 mac_age; + 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 @@ -2860,10 +2858,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 */ -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 @@ -2873,18 +2872,21 @@ define bridge_domain_dump { @param forward - forwarding state on all interfaces in the bd @param learn - learning state on all interfaces in the bd @param arp_term - arp termination state on all interfaces in the bd + @param mac_age - mac aging time in min, 0 for disabled @param n_sw_ifs - number of sw_if_index's in the domain */ -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; + u8 mac_age; + u32 bvi_sw_if_index; + u32 n_sw_ifs; }; /** \brief L2 bridge domain sw interface operational state response @@ -2892,11 +2894,12 @@ define bridge_domain_details { @param sw_if_index - sw_if_index in the domain @param shg - split horizon group for the interface */ -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 @@ -2909,23 +2912,25 @@ 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 @@ -2939,23 +2944,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 @@ -2965,11 +2972,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 @@ -2977,9 +2985,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 @@ -2992,13 +3001,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 @@ -3006,9 +3016,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 @@ -3036,33 +3047,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 @@ -3070,9 +3082,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 @@ -3106,31 +3119,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 @@ -3138,9 +3152,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 @@ -3156,17 +3171,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 @@ -3174,9 +3190,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 @@ -3186,21 +3203,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 @@ -3213,24 +3232,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 @@ -3243,24 +3264,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 @@ -3275,26 +3298,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 @@ -3303,20 +3328,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 @@ -3327,523 +3354,621 @@ define ikev2_set_local_key_reply { @param router_address - Router IP address @param host_mac - Host MAC address */ -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 +/** \brief cop: enable/disable junk filtration features on an interface @param client_index - opaque cookie to identify the sender @param context - sender context, to match reply w/ request - @param ip6_prefix - Rule IPv6 prefix - @param ip4_prefix - Rule IPv4 prefix - @param ip6_src - MAP domain IPv6 BR address / Tunnel source - @param ip6_prefix_len - Rule IPv6 prefix length - @param ip4_prefix_len - Rule IPv4 prefix length - @param ea_bits_len - Embedded Address bits length - @param psid_offset - Port Set Identifider (PSID) offset - @param psid_length - PSID length - @param is_translation - MAP-E / MAP-T - @param mtu - MTU + @param sw_if_inded - desired interface + @param enable_disable - 1 => enable, 0 => disable */ -define map_add_domain { + +define cop_interface_enable_disable +{ u32 client_index; u32 context; - u8 ip6_prefix[16]; - u8 ip4_prefix[4]; - u8 ip6_src[16]; - u8 ip6_prefix_len; - u8 ip4_prefix_len; - u8 ip6_src_prefix_len; - u8 ea_bits_len; - u8 psid_offset; - u8 psid_length; - u8 is_translation; - u16 mtu; + u32 sw_if_index; + u8 enable_disable; }; -/** \brief Reply for MAP domain add +/** \brief cop: interface enable/disable junk filtration reply @param context - returned sender context, to match reply w/ request - @param index - MAP domain index @param retval - return code */ -define map_add_domain_reply { + +define cop_interface_enable_disable_reply +{ u32 context; - u32 index; i32 retval; }; -/** \brief Delete MAP domain +/** \brief cop: enable/disable whitelist filtration features on an interface + Note: the supplied fib_id must match in order to remove the feature! + @param client_index - opaque cookie to identify the sender @param context - sender context, to match reply w/ request - @param index - MAP Domain index + @param sw_if_index - interface handle, physical interfaces only + @param fib_id - fib identifier for the whitelist / blacklist fib + @param ip4 - 1 => enable ip4 filtration, 0=> disable ip4 filtration + @param ip6 - 1 => enable ip6 filtration, 0=> disable ip6 filtration + @param default_cop - 1 => enable non-ip4, non-ip6 filtration 0=> disable it */ -define map_del_domain { + +define cop_whitelist_enable_disable +{ u32 client_index; u32 context; - u32 index; + u32 sw_if_index; + u32 fib_id; + u8 ip4; + u8 ip6; + u8 default_cop; }; -/** \brief Reply for MAP domain del +/** \brief cop: interface enable/disable junk filtration reply @param context - returned sender context, to match reply w/ request @param retval - return code */ -define map_del_domain_reply { + +define cop_whitelist_enable_disable_reply +{ u32 context; i32 retval; }; -/** \brief Add or Delete MAP rule from a domain (Only used for shared IPv4 per subscriber) +/** \brief get_node_graph - get a copy of the vpp node graph + including the current set of graph arcs. + @param client_index - opaque cookie to identify the sender @param context - sender context, to match reply w/ request - @param index - MAP Domain index - @param is_add - If 1 add rule, if 0 delete rule - @param ip6_dst - MAP CE IPv6 address - @param psid - Rule PSID */ -define map_add_del_rule { + +define get_node_graph +{ u32 client_index; u32 context; - u32 index; - u32 is_add; - u8 ip6_dst[16]; - u16 psid; }; -/** \brief Reply for MAP rule add/del +/** \brief get_node_graph_reply @param context - returned sender context, to match reply w/ request @param retval - return code + @param reply_in_shmem - result from vlib_node_serialize, in shared + memory. Process with vlib_node_unserialize, remember to switch + heaps and free the result. */ -define map_add_del_rule_reply { + +define get_node_graph_reply +{ u32 context; i32 retval; + u64 reply_in_shmem; }; -/** \brief Get list of map domains - @param client_index - opaque cookie to identify the sender +/** \brief IOAM enable : Enable in-band OAM + @param id - profile id + @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 trace_enable - iOAM Trace enabled or not flag */ -define map_domain_dump { +define ioam_enable +{ u32 client_index; u32 context; + u16 id; + u8 seqno; + u8 analyse; + u8 pot_enable; + u8 trace_enable; + u32 node_id; }; -define map_domain_details { +/** \brief iOAM Trace profile add / del response + @param context - sender context, to match reply w/ request + @param retval - return value for request +*/ +define ioam_enable_reply +{ u32 context; - u32 domain_index; - u8 ip6_prefix[16]; - u8 ip4_prefix[4]; - u8 ip6_src[16]; - u8 ip6_prefix_len; - u8 ip4_prefix_len; - u8 ip6_src_len; - u8 ea_bits_len; - u8 psid_offset; - u8 psid_length; - u8 flags; - u16 mtu; - u8 is_translation; + i32 retval; }; -define map_rule_dump { +/** \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 ioam_disable +{ u32 client_index; u32 context; - u32 domain_index; + u16 id; }; -define map_rule_details { +/** \brief iOAM disable response + @param context - sender context, to match reply w/ request + @param retval - return value for request +*/ +define ioam_disable_reply +{ u32 context; - u8 ip6_dst[16]; - u16 psid; + i32 retval; }; -/** \brief Request for a single block of summary stats +/** \brief Add/del policer @param client_index - opaque cookie to identify the sender @param context - sender context, to match reply w/ request + @param is_add - add policer if non-zero, else delete + @param name - policer name + @param cir - CIR + @param eir - EIR + @param cb - Committed Burst + @param eb - Excess or Peak Burst + @param rate_type - rate type + @param round_type - rounding type + @param type - policer algorithm + @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 + @param exceed_dscp - DSCP for exceed mar-and-transmit action + @param violate_action_type - violate action type + @param violate_dscp - DSCP for violate mar-and-transmit action */ -define map_summary_stats { - 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 color_aware; + u8 conform_action_type; + u8 conform_dscp; + u8 exceed_action_type; + u8 exceed_dscp; + u8 violate_action_type; + u8 violate_dscp; }; -/** \brief Reply for map_summary_stats request +/** \brief Add/del policer response @param context - sender context, to match reply w/ request - @param retval - return code for request - @param total_bindings - - @param total_pkts - - @param total_ip4_fragments - - @param total_security_check - + @param retval - return value for request + @param policer_index - for add, returned index of the new policer */ -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 policer_add_del_reply +{ + u32 context; + i32 retval; + u32 policer_index; }; -/** \brief cop: enable/disable junk filtration features on an interface +/** \brief Get list of policers @param client_index - opaque cookie to identify the sender @param context - sender context, to match reply w/ request - @param sw_if_inded - desired interface - @param enable_disable - 1 => enable, 0 => disable + @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 cop_interface_enable_disable { - u32 client_index; - u32 context; - u32 sw_if_index; - u8 enable_disable; + u8 match_name_valid; + u8 match_name[64]; }; -/** \brief cop: interface enable/disable junk filtration reply - @param context - returned sender context, to match reply w/ request - @param retval - return code +/** \brief Policer operational state response. + @param context - sender context, to match reply w/ request + @param name - policer name + @param cir - CIR + @param eir - EIR + @param cb - Committed Burst + @param eb - Excess or Peak Burst + @param rate_type - rate type + @param round_type - rounding type + @param type - policer algorithm + @param conform_action_type - conform action type + @param conform_dscp - DSCP for conform mar-and-transmit action + @param exceed_action_type - exceed action type + @param exceed_dscp - DSCP for exceed mar-and-transmit action + @param violate_action_type - violate action type + @param violate_dscp - DSCP for violate mar-and-transmit action + @param single_rate - 1 = single rate policer, 0 = two rate policer + @param color_aware - for hierarchical policing + @param scale - power-of-2 shift amount for lower rates + @param cir_tokens_per_period - number of tokens for each period + @param pir_tokens_per_period - number of tokens for each period for 2-rate policer + @param current_limit - current limit + @param current_bucket - current bucket + @param extended_limit - extended limit + @param extended_bucket - extended bucket + @param last_update_time - last update time */ +define policer_details +{ + u32 context; -define cop_interface_enable_disable_reply { - u32 context; - i32 retval; + 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 cop: enable/disable whitelist filtration features on an interface - Note: the supplied fib_id must match in order to remove the feature! - +/** \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 handle, physical interfaces only - @param fib_id - fib identifier for the whitelist / blacklist fib - @param ip4 - 1 => enable ip4 filtration, 0=> disable ip4 filtration - @param ip6 - 1 => enable ip6 filtration, 0=> disable ip6 filtration - @param default_cop - 1 => enable non-ip4, non-ip6 filtration 0=> disable it + @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 cop_whitelist_enable_disable { - u32 client_index; - u32 context; - u32 sw_if_index; - u32 fib_id; - u8 ip4; - u8 ip6; - u8 default_cop; +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 cop: interface enable/disable junk filtration reply - @param context - returned sender context, to match reply w/ request - @param retval - return code +/** \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; +}; -define cop_whitelist_enable_disable_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 get_node_graph - get a copy of the vpp node graph - including the current set of graph arcs. +/** \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 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; +}; + +/** \brief Reply for classify get table IDs request + @param context - sender context which was passed in the request + @param count - number of ids returned in response + @param ids - array of classify table ids +*/ +define classify_table_ids_reply +{ + u32 context; + i32 retval; + u32 count; + u32 ids[count]; +}; -define get_node_graph { - u32 client_index; - u32 context; +/** \brief Classify table ids by interface index request + @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 +*/ +define classify_table_by_interface +{ + u32 client_index; + u32 context; + u32 sw_if_index; }; -/** \brief get_node_graph_reply - @param context - returned sender context, to match reply w/ request - @param retval - return code - @param reply_in_shmem - result from vlib_node_serialize, in shared - memory. Process with vlib_node_unserialize, remember to switch - heaps and free the result. +/** \brief Reply for classify table id by interface index request + @param context - sender context which was passed in the request + @param count - number of ids returned in response + @param sw_if_index - index of the interface + @param l2_table_id - l2 classify table index + @param ip4_table_id - ip4 classify table index + @param ip6_table_id - ip6 classify table index */ - -define get_node_graph_reply { - u32 context; - i32 retval; - u64 reply_in_shmem; +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 Clear interface statistics +/** \brief Classify table info @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 to clear statistics + @param table_id - classify table index */ -define sw_interface_clear_stats { - u32 client_index; - u32 context; - u32 sw_if_index; +define classify_table_info +{ + u32 client_index; + u32 context; + u32 table_id; }; -/** \brief Reply to sw_interface_clear_stats +/** \brief Reply for classify table info request @param context - sender context which was passed in the request - @param retval - return code of the set flags request + @param count - number of ids returned in response + @param table_id - classify table index + @param nbuckets - number of buckets when adding a table + @param match_n_vectors - number of match vectors + @param skip_n_vectors - number of skip_n_vectors + @param active_sessions - number of sessions (active entries) + @param next_table_index - index of next table + @param miss_next_index - index of miss table + @param mask[] - match mask */ -define sw_interface_clear_stats_reply { - u32 context; - i32 retval; +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 IOAM Trace : Set TRACE profile - @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 pow_enable - Proof of Work enabled or not flag - @param node_id - Id of this node +/** \brief Classify sessions dump request + @param client_index - opaque cookie to identify the sender + @param context - sender context, to match reply w/ request + @param table_id - classify table index */ -define trace_profile_add { +define classify_session_dump +{ 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; - u32 node_id; + u32 table_id; }; -/** \brief Trace profile add / del response - @param context - sender context, to match reply w/ request - @param retval - return value for request +/** \brief Reply for classify table session dump request + @param context - sender context which was passed in the request + @param count - number of ids returned in response + @param table_id - classify table index + @param hit_next_index - hit_next_index of session + @param opaque_index - for add, opaque_index of session + @param advance - advance value of session + @param match[] - match value for session */ -define trace_profile_add_reply { - u32 context; - i32 retval; +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 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 +/** \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 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 trace_profile_apply { +define set_ipfix_exporter +{ u32 client_index; u32 context; - u16 id; - u8 dest_ipv6[16]; - u32 prefix_length; + u8 collector_address[16]; + u16 collector_port; + u8 src_address[16]; u32 vrf_id; - u8 trace_op; - u8 enable; + u32 path_mtu; + u32 template_interval; + u8 udp_checksum; }; -/** \brief Trace profile apply response - @param context - sender context, to match reply w/ request - @param retval - return value for request +/** \brief Reply to IPFIX exporter configure request + @param context - sender context which was passed in the request */ -define trace_profile_apply_reply { +define set_ipfix_exporter_reply +{ u32 context; i32 retval; }; -/** \brief Delete Trace Profile +/** \brief IPFIX exporter dump request @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 ipfix_exporter_dump +{ u32 client_index; u32 context; - u16 id; }; -/** \brief Trace profile add / del response - @param context - sender context, to match reply w/ request - @param retval - return value for 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 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 */ -define trace_profile_del_reply { - u32 context; - i32 retval; +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 Create host-interface +/** \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 host_if_name - interface name - @param hw_addr - interface MAC - @param use_random_hw_addr - use random generated MAC + @param domain_id - domain ID reported in IPFIX messages for classify stream + @param src_port - source port of UDP session for classify stream */ -define af_packet_create { +define set_ipfix_classify_stream { u32 client_index; u32 context; - - u8 host_if_name[64]; - u8 hw_addr[6]; - u8 use_random_hw_addr; + u32 domain_id; + u16 src_port; }; -/** \brief Create host-interface response +/** \brief IPFIX classify stream configure response @param context - sender context, to match reply w/ request @param retval - return value for request */ -define af_packet_create_reply { +define set_ipfix_classify_stream_reply { u32 context; i32 retval; - u32 sw_if_index; }; -/** \brief Delete host-interface +/** \brief IPFIX classify stream dump request @param client_index - opaque cookie to identify the sender @param context - sender context, to match reply w/ request - @param host_if_name - interface name */ -define af_packet_delete { +define ipfix_classify_stream_dump { u32 client_index; u32 context; - - u8 host_if_name[64]; }; -/** \brief Delete host-interface response +/** \brief Reply to IPFIX classify stream dump request @param context - sender context, to match reply w/ request - @param retval - return value for 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 af_packet_delete_reply { +define ipfix_classify_stream_details { u32 context; - i32 retval; + u32 domain_id; + u16 src_port; }; -/** \brief Add/del policer +/** \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 is_add - add policer if non-zero, else delete - @param name - policer name - @param cir - CIR - @param eir - EIR - @param cb - Committed Burst - @param eb - Excess or Peak Burst - @param rate_type - rate type - @param round_type - rounding type - @param type - policer algorithm - @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 - @param exceed_dscp - DSCP for exceed mar-and-transmit action - @param violate_action_type - violate action type - @param violate_dscp - DSCP for violate mar-and-transmit action + @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 policer_add_del { +define ipfix_classify_table_add_del { u32 client_index; u32 context; - + u32 table_id; + u8 ip_version; + u8 transport_protocol; 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 +/** \brief IPFIX add classifier table response + @param context - sender context which was passed in the request */ -define policer_add_del_reply { +define ipfix_classify_table_add_del_reply { u32 context; i32 retval; - u32 policer_index; }; -/** \brief Get list of policers +/** \brief IPFIX classify tables dump request @param client_index - opaque cookie to identify the sender @param context - sender context, to match reply w/ request - @param match_name_valid - if 0 request all policers otherwise use match_name - @param match_name - policer name */ -define policer_dump { +define ipfix_classify_table_dump { u32 client_index; u32 context; - - u8 match_name_valid; - u8 match_name[64]; }; -/** \brief Policer operational state response. +/** \brief Reply to IPFIX classify tables dump request @param context - sender context, to match reply w/ request - @param name - policer name - @param cir - CIR - @param eir - EIR - @param cb - Committed Burst - @param eb - Excess or Peak Burst - @param rate_type - rate type - @param round_type - rounding type - @param type - policer algorithm - @param conform_action_type - conform action type - @param conform_dscp - DSCP for conform mar-and-transmit action - @param exceed_action_type - exceed action type - @param exceed_dscp - DSCP for exceed mar-and-transmit action - @param violate_action_type - violate action type - @param violate_dscp - DSCP for violate mar-and-transmit action - @param single_rate - 1 = single rate policer, 0 = two rate policer - @param color_aware - for hierarchical policing - @param scale - power-of-2 shift amount for lower rates - @param cir_tokens_per_period - number of tokens for each period - @param pir_tokens_per_period - number of tokens for each period for 2-rate policer - @param current_limit - current limit - @param current_bucket - current bucket - @param extended_limit - extended limit - @param extended_bucket - extended bucket - @param last_update_time - last update time + @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 policer_details { +define ipfix_classify_table_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; + u32 table_id; + u8 ip_version; + u8 transport_protocol; }; -/** \brief Set/unset policer classify interface +/** \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 policer classify + @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) @@ -3851,557 +3976,704 @@ define policer_details { 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 { +define flow_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 +/** \brief Set/unset flow classify interface response @param context - sender context, to match reply w/ request @param retval - return value for request */ -define policer_classify_set_interface_reply { +define flow_classify_set_interface_reply { u32 context; i32 retval; }; -/** \brief Get list of policer classify interfaces and tables +/** \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 policer_classify_dump { +define flow_classify_dump { u32 client_index; u32 context; u8 type; }; -/** \brief Policer iclassify operational state response. +/** \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 policer_classify_details { +define flow_classify_details { u32 context; u32 sw_if_index; u32 table_index; }; -/** \brief Create netmap +/** \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 netmap_if_name - interface name - @param hw_addr - interface MAC - @param use_random_hw_addr - use random generated MAC - @param is_pipe - is pipe - @param is_master - 0=slave, 1=master + @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 netmap_create { - u32 client_index; - u32 context; +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; +}; - u8 netmap_if_name[64]; - u8 hw_addr[6]; - u8 use_random_hw_addr; - u8 is_pipe; - u8 is_master; +/** \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 Create netmap response +/** \brief PacketGenerator create interface 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 pg_create_interface_reply +{ + u32 context; + i32 retval; + u32 sw_if_index; }; -/** \brief Delete netmap +/** \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 netmap_if_name - interface name + @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 netmap_delete { - u32 client_index; - u32 context; +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; +}; - u8 netmap_if_name[64]; +/** \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 Delete netmap response +/** \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 netmap_delete_reply { +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 mpls gre tunnel table +/** \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 mpls_gre_tunnel_dump { +define ipsec_gre_tunnel_dump { u32 client_index; u32 context; - i32 tunnel_index; + u32 sw_if_index; }; /** \brief mpls gre tunnel operational state response - @param tunnel_index - gre tunnel identifier - @param intfc_address - interface ipv4 addr - @param mask_width - interface ipv4 addr mask - @param hw_if_index - interface id - @param l2_only - - @param tunnel_src - tunnel source ipv4 addr - @param tunnel_dst - tunnel destination ipv4 addr - @param outer_fib_index - gre tunnel identifier - @param encap_index - reference to mpls label table - @param nlabels - number of resolved labels - @param labels - resolved labels + @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 mpls_gre_tunnel_details { +define ipsec_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[nlabels]; + u32 sw_if_index; + u32 local_sa_id; + u32 remote_sa_id; + u8 src_address[4]; + u8 dst_address[4]; }; -/** \brief Dump mpls eth tunnel table +/** \brief Delete sub interface request @param client_index - opaque cookie to identify the sender - @param tunnel_index - eth tunnel identifier or -1 in case of all tunnels + @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 mpls_eth_tunnel_dump { - u32 client_index; - u32 context; - i32 tunnel_index; +define delete_subif { + u32 client_index; + u32 context; + u32 sw_if_index; }; -/** \brief mpls eth tunnel operational state response - @param tunnel_index - eth tunnel identifier - @param intfc_address - interface ipv4 addr - @param mask_width - interface ipv4 addr mask - @param hw_if_index - interface id - @param l2_only - - @param tunnel_dst_mac - - @param tx_sw_if_index - - @param encap_index - reference to mpls label table - @param nlabels - number of resolved labels - @param labels - resolved labels +/** \brief Delete sub interface response + @param context - sender context, to match reply w/ request + @param retval - return code for the request */ -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[nlabels]; +define delete_subif_reply { + u32 context; + i32 retval; }; -/** \brief Dump mpls fib table +/** \brief DPDK interface HQoS pipe profile set request @param client_index - opaque cookie to identify the sender - @param fib_index - mpls fib entry identifier or -1 in case of all entries + @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 mpls_fib_encap_dump { +define sw_interface_set_dpdk_hqos_pipe { u32 client_index; u32 context; + u32 sw_if_index; + u32 subport; + u32 pipe; + u32 profile; }; -/** \brief mpls fib encap table response - @param fib_index - fib table id - @param dest - destination ipv4 addr - @param s_bit - - @param entry_index - reference to mpls label table - @param nlabels - number of resolved labels - @param labels - resolved labels +/** \brief DPDK interface HQoS pipe profile set reply + @param context - sender context, to match reply w/ request + @param retval - request return code */ -define mpls_fib_encap_details { +define sw_interface_set_dpdk_hqos_pipe_reply { u32 context; - - u32 fib_index; - u32 entry_index; - u32 dest; - u32 s_bit; - u32 nlabels; - u32 labels[nlabels]; + i32 retval; }; -/** \brief Dump mpls fib decap table +/** \brief DPDK interface HQoS subport parameters set request @param client_index - opaque cookie to identify the sender - @param fib_index - mpls fib entry identifier or -1 in case of all entries + @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 mpls_fib_decap_dump { +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 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 - +/** \brief DPDK interface HQoS subport parameters set reply + @param context - sender context, to match reply w/ request + @param retval - request return code */ -define mpls_fib_decap_details { +define sw_interface_set_dpdk_hqos_subport_reply { 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]; + i32 retval; }; -/** \brief Classify get table IDs request +/** \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 classify_table_ids { +define sw_interface_set_dpdk_hqos_tctbl { u32 client_index; u32 context; + u32 sw_if_index; + u32 entry; + u32 tc; + u32 queue; }; -/** \brief Reply for classify get table IDs request - @param context - sender context which was passed in the request - @param count - number of ids returned in response - @param ids - array of classify table ids +/** \brief DPDK interface HQoS tctbl entry set reply + @param context - sender context, to match reply w/ request + @param retval - request return code */ -define classify_table_ids_reply { +define sw_interface_set_dpdk_hqos_tctbl_reply { u32 context; i32 retval; - u32 count; - u32 ids[count]; }; -/** \brief Classify table ids by interface index request +/** \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 - index of the interface -*/ -define classify_table_by_interface { - u32 client_index; - u32 context; - u32 sw_if_index; + @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 Reply for classify table id by interface index request - @param context - sender context which was passed in the request - @param count - number of ids returned in response - @param sw_if_index - index of the interface - @param l2_table_id - l2 classify table index - @param ip4_table_id - ip4 classify table index - @param ip6_table_id - ip6 classify table index +/** \brief L2 interface pbb tag rewrite response + @param context - sender context, to match reply w/ request + @param retval - return code for the request */ -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 l2_interface_pbb_tag_rewrite_reply +{ + u32 context; + i32 retval; }; -/** \brief Classify table info +/** \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 table_id - classify table index + @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 classify_table_info { +define punt { u32 client_index; u32 context; - u32 table_id; + u8 is_add; + u8 ipv; + u8 l4_protocol; + u16 l4_port; }; -/** \brief Reply for classify table info request +/** \brief Reply to the punt request @param context - sender context which was passed in the request - @param count - number of ids returned in response - @param table_id - classify table index - @param nbuckets - number of buckets when adding a table - @param match_n_vectors - number of match vectors - @param skip_n_vectors - number of skip_n_vectors - @param active_sessions - number of sessions (active entries) - @param next_table_index - index of next table - @param miss_next_index - index of miss table - @param mask[] - match mask + @param retval - return code of punt request */ -define classify_table_info_reply { +define punt_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 +/** \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 table_id - classify table index + @param spd_id - SPD instance id + @param sa_id - SA id, optional, set to ~0 to see all policies in SPD */ -define classify_session_dump { +define ipsec_spd_dump { u32 client_index; u32 context; - u32 table_id; + u32 spd_id; + u32 sa_id; }; -/** \brief Reply for classify table session dump request +/** \brief IPsec policy database response @param context - sender context which was passed in the request - @param count - number of ids returned in response - @param table_id - classify table index - @param hit_next_index - hit_next_index of session - @param opaque_index - for add, opaque_index of session - @param advance - advance value of session - @param match[] - match value for session -*/ -define classify_session_details { + @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; - i32 retval; - u32 table_id; - u32 hit_next_index; - i32 advance; - u32 opaque_index; - u32 match_length; - u8 match[match_length]; + 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; }; -/** \brief Enable and configure IPFIX exporter process request +/** \brief Feature path enable/disable 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 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 sw_if_index - the interface + @param enable - 1 = on, 0 = off */ -define ipfix_enable { +define feature_enable_disable { 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; + u32 sw_if_index; + u8 enable; + u8 arc_name[64]; + u8 feature_name[64]; }; -/** \brief Reply to IPFIX enable and configure request +/** \brief Reply to the eature path enable/disable request @param context - sender context which was passed in the request + @param retval - return code for the request */ -define ipfix_enable_reply { +define feature_enable_disable_reply +{ u32 context; i32 retval; }; -/** \brief IPFIX dump request +/** \brief Configure BFD feature @param client_index - opaque cookie to identify the sender @param context - sender context, to match reply w/ request + @param slow_timer - slow timer (seconds) + @param min_tx - desired min tx interval + @param min_rx - desired min rx interval + @param detect_mult - desired detection multiplier */ -define ipfix_dump { - u32 client_index; - u32 context; +define bfd_set_config { + u32 client_index; + u32 context; + u32 slow_timer; + u32 min_tx; + u32 min_rx; + u8 detect_mult; }; -/** \brief Reply to IPFIX 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 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 +/** \brief Configure BFD feature response + @param context - sender context, to match reply w/ request + @param retval - return code for the request */ -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 bfd_set_config_reply { + u32 context; + i32 retval; }; -/** \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 +/** \brief Get BFD configuration */ -define get_next_index { - u32 client_index; - u32 context; - u8 node_name[64]; - u8 next_name[64]; +define bfd_get_config { + u32 client_index; + u32 context; }; -/** \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 Get BFD configuration response + @param context - sender context, to match reply w/ request + @param retval - return code for the request + @param slow_timer - slow timer (seconds) + @param min_tx - desired min tx interval + @param min_rx - desired min rx interval + @param detect_mult - desired detection multiplier */ -define get_next_index_reply { - u32 context; - i32 retval; - u32 next_index; +define bfd_get_config_reply { + u32 client_index; + u32 context; + u32 slow_timer; + u32 min_tx; + u32 min_rx; + u8 detect_mult; }; -/** \brief PacketGenerator create interface request +/** \brief Add UDP BFD session on interface @param client_index - opaque cookie to identify the sender @param context - sender context, to match reply w/ request - @param interface_id - interface index + @param sw_if_index - sw index of the interface + @param desired_min_tx - desired min transmit interval (microseconds) + @param required_min_rx - required min receive interval (microseconds) + @param detect_mult - detect multiplier (# of packets missed between connection goes down) + @param local_addr - local address + @param peer_addr - peer address + @param is_ipv6 - local_addr, peer_addr are IPv6 if non-zero, otherwise IPv4 */ -define pg_create_interface { - u32 client_index; - u32 context; - u32 interface_id; +define bfd_udp_add { + u32 client_index; + u32 context; + u32 sw_if_index; + u32 desired_min_tx; + u32 required_min_rx; + u8 local_addr[16]; + u8 peer_addr[16]; + u8 is_ipv6; + u8 detect_mult; }; -/** \brief PacketGenerator create interface response +/** \brief Add UDP BFD session response @param context - sender context, to match reply w/ request - @param retval - return value for request + @param retval - return code for the request + @param bs_index - index of the session created */ -define pg_create_interface_reply { - u32 context; - i32 retval; - u32 sw_if_index; +define bfd_udp_add_reply { + u32 context; + i32 retval; + u32 bs_index; }; -/** \brief PacketGenerator capture packets on given interface request +/** \brief Delete UDP BFD session on interface @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 + @param sw_if_index - sw index of the interface + @param local_addr - local address + @param peer_addr - peer address + @param is_ipv6 - local_addr, peer_addr are IPv6 if non-zero, otherwise IPv4 */ -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]; +define bfd_udp_del { + u32 client_index; + u32 context; + u32 sw_if_index; + u8 local_addr[16]; + u8 peer_addr[16]; + u8 is_ipv6; }; -/** \brief PacketGenerator capture packets response +/** \brief Delete UDP BFD session response @param context - sender context, to match reply w/ request - @param retval - return value for request + @param retval - return code for the request */ -define pg_capture_reply { - u32 context; - i32 retval; +define bfd_udp_del_reply { + u32 context; + i32 retval; }; -/** \brief Enable / disable packet generator request +/** \brief Get all BFD sessions @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]; +define bfd_udp_session_dump { + u32 client_index; + u32 context; }; -/** \brief Reply for enable / disable packet generator - @param context - returned sender context, to match reply w/ request - @param retval - return code +/** \brief BFD session details structure + @param context - sender context, to match reply w/ request + @param bs_index - index of the session + @param sw_if_index - sw index of the interface + @param local_addr - local address + @param peer_addr - peer address + @param is_ipv6 - local_addr, peer_addr are IPv6 if non-zero, otherwise IPv4 + @param state - session state */ -define pg_enable_disable_reply { - u32 context; - i32 retval; +define bfd_udp_session_details { + u32 context; + u32 bs_index; + u32 sw_if_index; + u8 local_addr[16]; + u8 peer_addr[16]; + u8 is_ipv6; + u8 state; }; -/** \brief Configure IP source and L4 port-range check +/** \brief Set flags of BFD session @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 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 + @param bs_index - index of the bfd session to set flags on + @param admin_up_down - set the admin state, 1 = up, 0 = down */ -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; +define bfd_session_set_flags { + u32 client_index; + u32 context; + u32 bs_index; + u8 admin_up_down; }; -/** \brief Configure IP source and L4 port-range check reply - @param context - returned sender context, to match reply w/ request - @param retval - return code +/** \brief Reply to bfd_session_set_flags + @param context - sender context which was passed in the request + @param retval - return code of the set flags request */ -define ip_source_and_port_range_check_add_del_reply { - u32 context; - i32 retval; +define bfd_session_set_flags_reply +{ + u32 context; + i32 retval; }; -/** \brief Set interface source and L4 port-range request +/** \brief Register for BFD events @param client_index - opaque cookie to identify the sender @param context - sender context, to match reply w/ request - @param interface_id - interface index - @param vrf_id - VRF associated with source and L4 port-range check + @param enable_disable - 1 => register for events, 0 => cancel registration + @param pid - sender's pid */ -define ip_source_and_port_range_check_interface_add_del { - u32 client_index; - u32 context; - u8 is_add; - u32 sw_if_index; - u32 vrf_id; +define want_bfd_events +{ + u32 client_index; + u32 context; + u32 enable_disable; + u32 pid; }; -/** \brief Set interface source and L4 port-range response - @param context - sender context, to match reply w/ request - @param retval - return value for request +/** \brief Reply for BFD events registration + @param context - returned sender context, to match reply w/ request + @param retval - return code */ -define ip_source_and_port_range_check_interface_add_del_reply { - u32 context; - i32 retval; +define want_bfd_events_reply +{ + u32 context; + i32 retval; }; + +/* + * Local Variables: + * eval: (c-set-style "gnu") + * End: + */