/* * 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: * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /** \file This file defines vpe control-plane API messages which are generally called through a shared memory interface. */ /* * Note: API placement cleanup in progress * If you're looking for interface APIs, please * see .../src/vnet/{interface.api,interface_api.c} * IP APIs: see .../src/vnet/ip/{ip.api, ip_api.c} * TAP APIs: see .../src/vnet/unix/{tap.api, tap_api.c} * VXLAN APIs: see .../src/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 ... /src/vnet/devices/netmap/{netmap.api, netmap_api.c} * VHOST-USER APIs: see .../vnet/devices/virtio/{vhost_user.api, vhost_user_api.c} * VXLAN GPE APIs: see .../src/vnet/vxlan-gpe/{vxlan_gpe.api, vxlan_gpe_api.c} * GRE APIs: see .../src/vnet/gre/{gre.api, gre_api.c} * L2 APIs: see .../src/vnet/l2/{l2.api, l2_api.c} * L2TP APIs: see .../src/vnet/l2tp/{l2tp.api, l2tp_api.c} * BFD APIs: see .../src/vnet/bfd/{bfd.api, bfd_api.c} * IPSEC APIs: see .../src/vnet/ipsec/{ipsec.api, ipsec_api.c} * IPSEC-GRE APIs: see .../src/vnet/ipsec-gre/{ipsec_gre.api, ipsec_gre_api.c} * LISP APIs: see .../src/vnet/lisp/{lisp.api, lisp_api.c} * LISP-GPE APIs: see .../src/vnet/lisp-gpe/{lisp_gpe.api, lisp_gpe_api.c} * SESSION APIs: .../vnet/session/{session.api session_api.c} * MPLS APIs: see .../src/vnet/mpls/{mpls.api, mpls_api.c} * SR APIs: see .../src/vnet/srv6/{sr.api, sr_api.c} * CLASSIFY APIs: see ... /src/vnet/classify/{classify.api, classify_api.c} * FLOW APIs: see ... /src/vnet/flow/{flow.api, flow_api.c} * DHCP APIs: see ... /src/vnet/dhcp/{dhcpk.api, dhcp_api.c} * COP APIs: see ... /src/vnet/cop/{cop.api, cop_api.c} * POLICER APIs: see ... /src/vnet/policer/{policer.api, policer_api.c} */ /** \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 - 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 */ define create_vlan_subif_reply { u32 context; i32 retval; u32 sw_if_index; }; /** \brief Enable or Disable MPLS on and interface @param client_index - opaque cookie to identify the sender @param context - sender context, to match reply w/ request @param sw_if_index - index of the interface @param enable - if non-zero enable, else disable */ autoreply define sw_interface_set_mpls_enable { u32 client_index; u32 context; u32 sw_if_index; u8 enable; }; /** \brief Proxy ARP 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 / Fib table ID @param is_add - 1 if adding the Proxy ARP range, 0 if deleting @param low_address[4] - Low address of the Proxy ARP range @param hi_address[4] - High address of the Proxy ARP range */ autoreply 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 Proxy ARP 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 - Which interface to enable / disable Proxy Arp on @param enable_disable - 1 to enable Proxy ARP on interface, 0 to disable */ autoreply define proxy_arp_intfc_enable_disable { u32 client_index; u32 context; u32 sw_if_index; /* 1 = on, 0 = off */ u8 enable_disable; }; /** \brief Reset VRF (remove all routes etc) request @param client_index - opaque cookie to identify the sender @param context - sender context, to match reply w/ request @param is_ipv6 - 1 for IPv6 neighbor, 0 for IPv4 @param vrf_id - ID of th FIB table / VRF to reset */ autoreply define reset_vrf { u32 client_index; u32 context; u8 is_ipv6; u32 vrf_id; }; /** \brief Is Address Reachable request - DISABLED @param client_index - opaque cookie to identify the sender @param context - sender context, to match reply w/ request @param next_hop_sw_if_index - index of interface used to get to next hop @param is_ipv6 - 1 for IPv6, 0 for IPv4 @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]; }; /** \brief Want Stats, register for stats updates @param client_index - opaque cookie to identify the sender @param context - sender context, to match reply w/ request @param enable_disable - 1 = enable stats, 0 = disable @param pid - pid of process requesting stats updates */ autoreply define want_stats { u32 client_index; u32 context; u32 enable_disable; u32 pid; }; 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]; }; typeonly manual_print manual_endian define ip4_nbr_counter { u32 address; u8 link_type; u64 packets; u64 bytes; }; /** * @brief Per-neighbour (i.e. per-adjacency) coutners * @param count The size of the array of counters * @param sw_if_index The interface the adjacency is on * @param begin Flag to indicate this is the first set of stats for this * interface. If this flag is not set the it is a continuation of * stats for this interface * @param c counters */ manual_print manual_endian define vnet_ip4_nbr_counters { u32 count; u32 sw_if_index; u8 begin; vl_api_ip4_nbr_counter_t c[count]; }; 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]; }; typeonly manual_print manual_endian define ip6_nbr_counter { u64 address[2]; u8 link_type; u64 packets; u64 bytes; }; manual_print manual_endian define vnet_ip6_nbr_counters { u32 count; u32 sw_if_index; u8 begin; vl_api_ip6_nbr_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; }; /** \brief Reply for vnet_get_summary_stats request @param context - sender context, to match reply w/ request @param retval - return code for request @param total_pkts - @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; }; /** \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 */ autoreply define want_oam_events { u32 client_index; u32 context; u32 enable_disable; u32 pid; }; /** \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 */ autoreply define oam_add_del { u32 client_index; u32 context; u32 vrf_id; u8 src_address[4]; u8 dst_address[4]; u8 is_add; }; /** \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 */ autoreply define reset_fib { u32 client_index; u32 context; u32 vrf_id; u8 is_ipv6; }; /** \brief Create loopback interface request @param client_index - opaque cookie to identify the sender @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]; }; /** \brief Create loopback interface response @param context - sender context, to match reply w/ request @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; }; /** \brief Create loopback interface instance request @param client_index - opaque cookie to identify the sender @param context - sender context, to match reply w/ request @param mac_address - mac addr to assign to the interface if none-zero @param is_specified - if non-0, a specific user_instance is being requested @param user_instance - requested instance, ~0 => dynamically allocate */ define create_loopback_instance { u32 client_index; u32 context; u8 mac_address[6]; u8 is_specified; u32 user_instance; }; /** \brief Create loopback interface instance response @param context - sender context, to match reply w/ request @param sw_if_index - sw index of the interface that was created @param retval - return code for the request */ define create_loopback_instance_reply { u32 context; i32 retval; u32 sw_if_index; }; /** \brief Delete loopback interface request @param client_index - opaque cookie to identify the sender @param context - sender context, to match reply w/ request @param sw_if_index - sw index of the interface that was created */ autoreply define delete_loopback { u32 client_index; u32 context; u32 sw_if_index; }; /** \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 Process a vpe parser cli string request @param client_index - opaque cookie to identify the sender @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_inband { u32 client_index; u32 context; u32 length; u8 cmd[length]; }; /** \brief vpe parser cli string response @param context - sender context, to match reply w/ 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_inband_reply { u32 context; i32 retval; u32 length; u8 reply[length]; }; /** \brief Set max allowed ARP or ip6 neighbor entries request @param client_index - opaque cookie to identify the sender @param context - sender context, to match reply w/ request @param is_ipv6 - neighbor limit if non-zero, else ARP limit @param arp_neighbor_limit - the new limit, defaults are ~ 50k */ autoreply define set_arp_neighbor_limit { u32 client_index; u32 context; u8 is_ipv6; u32 arp_neighbor_limit; }; /** \brief L2 interface patch add / del request @param client_index - opaque cookie to identify the sender @param context - sender context, to match reply w/ request @param rx_sw_if_index - receive side interface @param tx_sw_if_index - transmit side interface @param is_add - if non-zero set up the interface patch, else remove it */ autoreply define l2_patch_add_del { u32 client_index; u32 context; u32 rx_sw_if_index; u32 tx_sw_if_index; u8 is_add; }; /** \brief Interface set vpath 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, else disable */ autoreply define sw_interface_set_vpath { u32 client_index; u32 context; u32 sw_if_index; u8 enable; }; /** \brief Set L2 XConnect between two interfaces request @param client_index - opaque cookie to identify the sender @param context - sender context, to match reply w/ request @param rx_sw_if_index - Receive interface index @param tx_sw_if_index - Transmit interface index @param enable - enable xconnect if not 0, else set to L3 mode */ autoreply define sw_interface_set_l2_xconnect { u32 client_index; u32 context; u32 rx_sw_if_index; u32 tx_sw_if_index; u8 enable; }; /** \brief Interface bridge mode request @param client_index - opaque cookie to identify the sender @param context - sender context, to match reply w/ request @param rx_sw_if_index - the interface @param bd_id - bridge domain id @param bvi - Setup interface as a bvi, bridge mode only @param shg - Shared horizon group, for bridge mode only @param enable - Enable beige mode if not 0, else set to L3 mode */ autoreply 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 Set bridge domain ip to mac entry request @param client_index - opaque cookie to identify the sender @param context - sender context, to match reply w/ request @param bd_id - the bridge domain to set the flags for @param is_add - if non-zero, add the entry, else clear it @param is_ipv6 - if non-zero, ipv6 address, else ipv4 address @param mac_address - MAC address @param */ autoreply 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/unset the classification table for an interface request @param client_index - opaque cookie to identify the sender @param context - sender context, to match reply w/ request @param is_ipv6 - ipv6 if non-zero, else ipv4 @param sw_if_index - interface to associate with the table @param table_index - index of the table, if ~0 unset the table */ autoreply 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 l2 classification tables for an interface 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/unset tables for @param ip4_table_index - ip4 index, use ~0 for all 3 indexes to unset @param ip6_table_index - ip6 index @param other_table_index - other index */ autoreply 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 Get node index using name request @param client_index - opaque cookie to identify the sender @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]; }; /** \brief Get node index using name request @param context - sender context, to match reply w/ request @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; }; /** \brief Set the next node for a given node request @param client_index - opaque cookie to identify the sender @param context - sender context, to match reply w/ request @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]; }; /** \brief IP Set the next node for a given node response @param context - sender context, to match reply w/ request @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; }; /** \brief L2 interface ethernet flow point filtering enable/disable 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 enable/disable filtering on @param enable_disable - if non-zero enable filtering, else disable */ autoreply define l2_interface_efp_filter { u32 client_index; u32 context; u32 sw_if_index; u32 enable_disable; }; 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; }; /** \brief show version response @param context - sender context, to match reply w/ request @param retval - return code for the request @param program - name of the program (vpe) @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]; }; /* Gross kludge, DGMS */ autoreply define interface_name_renumber { u32 client_index; u32 context; u32 sw_if_index; u32 new_show_dev_instance; }; /** \brief Register for ip4 arp 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 ip4 address of interest */ autoreply define want_ip4_arp_events { u32 client_index; u32 context; u8 enable_disable; u32 pid; u32 address; }; /** \brief Tell client about an ip4 arp resolution event @param client_index - opaque cookie to identify the sender @param context - sender context, to match reply w/ request @param address - the exact ip4 address of interest @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]; 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 */ autoreply define want_ip6_nd_events { u32 client_index; u32 context; u8 enable_disable; u32 pid; u8 address[16]; }; /** \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 Set/unset input ACL 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 input ACL @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 input ACL 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) */ autoreply 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 get_node_graph { u32 client_index; u32 context; }; /** \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 get_node_graph_reply { u32 context; i32 retval; u64 reply_in_shmem; }; /** \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 */ autoreply define ioam_enable { u32 client_index; u32 context; u16 id; u8 seqno; u8 analyse; u8 pot_enable; u8 trace_enable; u32 node_id; }; /** \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 */ autoreply define ioam_disable { u32 client_index; u32 context; u16 id; }; /** \brief Query relative index via node names @param client_index - opaque cookie to identify the sender @param context - sender context, to match reply w/ request @param node_name - name of node to find relative index from @param next_name - next node from node_name to find relative index of */ define get_next_index { u32 client_index; u32 context; u8 node_name[64]; u8 next_name[64]; }; /** \brief Reply for get next node index @param context - sender context which was passed in the request @param retval - return value @param next_index - index of the next_node */ define get_next_index_reply { u32 context; i32 retval; u32 next_index; }; /** \brief PacketGenerator create interface request @param client_index - opaque cookie to identify the sender @param context - sender context, to match reply w/ request @param interface_id - interface index */ define pg_create_interface { u32 client_index; u32 context; u32 interface_id; }; /** \brief PacketGenerator create interface response @param context - sender context, to match reply w/ request @param retval - return value for request */ define pg_create_interface_reply { u32 context; i32 retval; u32 sw_if_index; }; /** \brief PacketGenerator capture packets on given interface request @param client_index - opaque cookie to identify the sender @param context - sender context, to match reply w/ request @param interface_id - pg interface index @param is_enabled - 1 if enabling streams, 0 if disabling @param count - number of packets to be captured @param pcap_file - pacp file name to store captured packets */ autoreply 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 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 */ autoreply define pg_enable_disable { u32 client_index; u32 context; u8 is_enabled; u32 stream_name_length; u8 stream_name[stream_name_length]; }; /** \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 */ autoreply 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 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 */ autoreply 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 sub interface request @param client_index - opaque cookie to identify the sender @param context - sender context, to match reply w/ request @param sw_if_index - sw index of the interface that was created by create_subif */ autoreply define delete_subif { u32 client_index; u32 context; u32 sw_if_index; }; /** \brief Punt traffic to the host @param client_index - opaque cookie to identify the sender @param context - sender context, to match reply w/ request @param is_add - add punt if non-zero, else delete @param ipv - L3 protocol 4 - IPv4, 6 - IPv6, ~0 - All @param l4_protocol - L4 protocol to be punted, only UDP (0x11) is supported @param l4_port - TCP/UDP port to be punted */ autoreply define punt { u32 client_index; u32 context; u8 is_add; u8 ipv; u8 l4_protocol; u16 l4_port; }; /** \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 sw_if_index - the interface @param enable - 1 = on, 0 = off */ autoreply define feature_enable_disable { u32 client_index; u32 context; u32 sw_if_index; u8 enable; u8 arc_name[64]; u8 feature_name[64]; }; /* * Local Variables: * eval: (c-set-style "gnu") * End: */