X-Git-Url: https://gerrit.fd.io/r/gitweb?a=blobdiff_plain;f=src%2Fvnet%2Finterface.api;h=eea86aa1ac8aeab4f370bf4caf227f2ac3f54213;hb=dfd426c2c83f69e95fe8dab5b4827825230f1d7c;hp=dff954438af3724af46e7eeacbaa9fc5c7b9a477;hpb=e5ff5a36dd126ee57dca4e0b03da2f7704e0a4f5;p=vpp.git diff --git a/src/vnet/interface.api b/src/vnet/interface.api index dff954438af..eea86aa1ac8 100644 --- a/src/vnet/interface.api +++ b/src/vnet/interface.api @@ -14,7 +14,7 @@ * limitations under the License. */ -option version = "3.1.0"; +option version = "3.2.3"; import "vnet/interface_types.api"; import "vnet/ethernet/ethernet_types.api"; @@ -40,6 +40,20 @@ autoreply define sw_interface_set_flags vl_api_if_status_flags_t flags; }; +/** \brief Set interface promiscuous mode + @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 promisc_on - promiscuous mode is on ? +*/ +autoreply define sw_interface_set_promisc +{ + u32 client_index; + u32 context; + vl_api_interface_index_t sw_if_index; + bool promisc_on; +}; + /** \brief Set interface physical MTU @param client_index - opaque cookie to identify the sender @param context - sender context, to match reply w/ request @@ -131,6 +145,7 @@ autoreply define want_interface_events @param pbb_b_vlanid - B-tag vlanid @param pbb_i_sid - I-tag service id @param interface_name - name of the interface + @param interface_dev_type - device type of the interface @param tag - an ascii tag */ define sw_interface_details @@ -186,6 +201,7 @@ define sw_interface_details /* Interface name */ string interface_name[64]; + string interface_dev_type[64]; string tag[64]; }; @@ -202,7 +218,7 @@ define sw_interface_dump { u32 client_index; u32 context; - vl_api_interface_index_t sw_if_index; + vl_api_interface_index_t sw_if_index [default=0xFFFFFFFF]; bool name_filter_valid; string name_filter[]; }; @@ -223,7 +239,44 @@ autoreply define sw_interface_add_del_address bool is_add; bool del_all; - vl_api_prefix_t prefix; + vl_api_address_with_prefix_t prefix; +}; + +/** \brief IP interface address replace begin + + The use-case is that, for some unspecified reason, the control plane + has a different set of interface addresses than VPP + currently has. The CP would thus like to 'replace' VPP's set + only by specifying what the new set shall be, i.e. it is not + going to delete anything that already eixts, rather, is wants any + unspecified interface addresses to be deleted implicitly. + The CP declares the start of this procedure with this replace_begin + API Call, and when it has populated all addresses it wants, it calls + the below replace_end API. From this point on it is of course free + to add and delete interface addresses as usual. + The underlying mechanism by which VPP implements this replace is + intentionally left unspecified. + + @param client_index - opaque cookie to identify the sender + @param context - sender context, to match reply w/ request +*/ +autoreply define sw_interface_address_replace_begin +{ + u32 client_index; + u32 context; +}; + +/** \brief IP interface address replace end + + see ip_interface_address_replace_begin description. + + @param client_index - opaque cookie to identify the sender + @param context - sender context, to match reply w/ request +*/ +autoreply define sw_interface_address_replace_end +{ + u32 client_index; + u32 context; }; /** \brief Associate the specified interface with a fib table @@ -310,6 +363,22 @@ autoreply define sw_interface_tag_add_del string tag[64]; }; +/** \brief Add or delete a secondary MAC address on an interface + @param client_index - opaque cookie to identify the sender + @param context - sender context, to match reply w/ request + @param sw_if_index - the interface whose MAC will be set + @param mac_addr - the new MAC address + @param is_add - 0 to delete, != 0 to add +*/ +autoreply define sw_interface_add_del_mac_address +{ + u32 client_index; + u32 context; + u32 sw_if_index; + vl_api_mac_address_t addr; + u8 is_add; +}; + /** \brief Set an interface's MAC address @param client_index - opaque cookie to identify the sender @param context - sender context, to match reply w/ request @@ -389,6 +458,45 @@ autoreply define sw_interface_set_rx_placement bool is_main; }; +/** \brief Set an interface's tx-placement + Tx-Queue placement on specific thread is operational for only hardware + interface. It will not set queue - thread placement for sub-interfaces, + p2p and pipe interfaces. + @param client_index - opaque cookie to identify the sender + @param context - sender context, to match reply w/ request + @param sw_if_index - the interface whose tx-placement will be set + @param queue_id - the queue number whose tx-placement will be set. + @param array_size - the size of the thread indexes array + @param threads - the thread indexes of main and worker(s) threads + whom tx-placement will be at. +*/ +autoendian autoreply define sw_interface_set_tx_placement +{ + u32 client_index; + u32 context; + vl_api_interface_index_t sw_if_index; + u32 queue_id; + u32 array_size; + u32 threads[array_size]; + option vat_help = "> queue [threads | mask ]"; +}; + +/** \brief Set custom interface name + Set custom interface name for the interface. + @param client_index - opaque cookie to identify the sender + @param context - sender context, to match reply w/ request + @param sw_if_index - the interface whose name will be set + @param name - the custom interface name to be set +k +*/ +autoreply define sw_interface_set_interface_name +{ + u32 client_index; + u32 context; + vl_api_interface_index_t sw_if_index; + string name[64]; +}; + /** \brief dump the rx queue placement of interface(s) @param sw_if_index - optional interface index for which queue placement to be requested. sw_if_index = ~0 will dump placement information for all @@ -427,6 +535,60 @@ define sw_interface_rx_placement_details vl_api_rx_mode_t mode; }; +service { + rpc sw_interface_tx_placement_get returns sw_interface_tx_placement_get_reply + stream sw_interface_tx_placement_details; +}; + +/** \brief get the tx queue placement of interface(s) + @param cursor - optional, it allows client to continue a dump + @param sw_if_index - optional interface index for which queue placement to + be requested. sw_if_index = ~0 will get the placement information for all + interfaces. It will not get information related to sub-interfaces, p2p + and pipe interfaces. +*/ +autoendian define sw_interface_tx_placement_get +{ + u32 client_index; + u32 context; + u32 cursor; + vl_api_interface_index_t sw_if_index; + option vat_help = "[interface | sw_if_index ]"; +}; + +autoendian define sw_interface_tx_placement_get_reply +{ + u32 context; + i32 retval; + u32 cursor; +}; + +/** \brief show the interface's queue - thread placement + This api is used to display the interface and queue worker + thread placement. One message per tx-queue per interface will + be sent to client. + Each message will contain information about tx-queue id of an + interface, interface index, thread on which this tx-queue is + placed and mode of tx-queue. + @param client_index - opaque cookie to identify the sender + @param context - sender context, to match reply w/ request + @param sw_if_index - the interface whose tx-placement will be dumped + @param queue_id - the queue id + @param shared - the queue is shared on other threads + @param array_size - the size of the threads array + @param threads - the main and worker(s) thread index(es) whom tx-placement are at. +*/ +autoendian define sw_interface_tx_placement_details +{ + u32 client_index; + u32 context; + vl_api_interface_index_t sw_if_index; + u32 queue_id; + u8 shared; + u32 array_size; + u32 threads[array_size]; +}; + /* Gross kludge, DGMS */ autoreply define interface_name_renumber { @@ -571,6 +733,61 @@ autoreply define collect_detailed_interface_stats bool enable_disable; }; +/** \brief pcap_set_filter_function + @param client_index - opaque cookie to identify the sender + @param context - sender context, to match reply w/ request + @param filter_function_name - the name of the filter function + to set for pcap capture +*/ +autoreply define pcap_set_filter_function +{ + u32 client_index; + u32 context; + + string filter_function_name[]; +}; + +/** \brief pcap_trace_on + @param client_index - opaque cookie to identify the sender + @param context - sender context, to match reply w/ request + @param capture_rx - capture received packets + @param capture_tx - capture transmitted packets + @param capture_drop - capture dropped packets + @param filter - is a filter is being used on this capture + @param preallocate_data - preallocate the data buffer + @param free_data - free the data buffer + @param max_packets - depth of local buffer + @param max_bytes_per_packet - maximum number of bytes to capture + for each packet + @param sw_if_index - specify a given interface, or 0 for any + @param error - filter packets based on a specific error. + @param filename - output filename, will be placed in /tmp +*/ +autoreply define pcap_trace_on +{ + u32 client_index; + u32 context; + bool capture_rx; + bool capture_tx; + bool capture_drop; + bool filter; + bool preallocate_data; + bool free_data; + u32 max_packets [default=1000]; + u32 max_bytes_per_packet [default=512]; + vl_api_interface_index_t sw_if_index; + string error[128]; + string filename[64]; + + option vat_help = "pcap_trace_on [capture_rx] [capture_tx] [capture_drop] [max_packets ] [sw_if_index |0 for any] [error .] [filename ] [max_bytes_per_packet ] [filter] [preallocate_data] [free_data]"; +}; + +autoreply define pcap_trace_off +{ + u32 client_index; + u32 context; +}; + /* * Local Variables: * eval: (c-set-style "gnu")