/* Hey Emacs use -*- mode: C -*- */ /* * Linux Control Plane API * * Copyright 2020 Rubicon Communications, LLC. * * 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. */ option version = "1.0.0"; import "vnet/interface_types.api"; /** \brief Set the default Linux Control Plane netns @param client_index - opaque cookie to identify the sender @param context - sender context, to match reply w/ request @param netns - the new default netns; netns[0] == 0 if none */ autoreply define lcp_default_ns_set { u32 client_index; u32 context; string netns[32]; /* LCP_NS_LEN */ option in_progress; }; /** \brief get the default Linux Control Plane netns @param client_index - opaque cookie to identify the sender @param context - sender context, to match reply w/ request */ define lcp_default_ns_get { u32 client_index; u32 context; }; /** \brief get the default Linux Control Plane netns @param client_index - opaque cookie to identify the sender @param context - sender context, to match reply w/ request @param netns - the default netns; netns[0] == 0 if none */ define lcp_default_ns_get_reply { u32 context; string netns[32]; /* LCP_NS_LEN */ option in_progress; }; enum lcp_itf_host_type : u8 { LCP_API_ITF_HOST_TAP = 0, LCP_API_ITF_HOST_TUN = 1, }; /** \brief Add or delete a Linux Conrol Plane interface pair @param client_index - opaque cookie to identify the sender @param context - sender context, to match reply w/ request @param is_add - 0 if deleting, != 0 if adding @param sw_if_index - index of VPP PHY SW interface @param host_if_name - host tap interface name @param host_if_type - the type of host interface to create (tun, tap) @param netns - optional tap netns; netns[0] == 0 if none */ autoreply autoendian define lcp_itf_pair_add_del { option deprecated; u32 client_index; u32 context; bool is_add; vl_api_interface_index_t sw_if_index; string host_if_name[16]; /* IFNAMSIZ */ vl_api_lcp_itf_host_type_t host_if_type; string netns[32]; /* LCP_NS_LEN */ }; autoendian define lcp_itf_pair_add_del_v2 { option in_progress; u32 client_index; u32 context; bool is_add; vl_api_interface_index_t sw_if_index; string host_if_name[16]; /* IFNAMSIZ */ vl_api_lcp_itf_host_type_t host_if_type; string netns[32]; /* LCP_NS_LEN */ }; define lcp_itf_pair_add_del_v2_reply { option in_progress; u32 context; i32 retval; vl_api_interface_index_t host_sw_if_index; }; autoendian define lcp_itf_pair_add_del_v3 { option in_progress; u32 client_index; u32 context; bool is_add; vl_api_interface_index_t sw_if_index; string host_if_name[16]; /* IFNAMSIZ */ vl_api_lcp_itf_host_type_t host_if_type; string netns[32]; /* LCP_NS_LEN */ }; define lcp_itf_pair_add_del_v3_reply { option in_progress; u32 context; i32 retval; u32 vif_index; vl_api_interface_index_t host_sw_if_index; }; /** \brief Dump Linux Control Plane interface pair data @param client_index - opaque cookie to identify the sender @param context - sender context, to match reply w/ request @param sw_if_index - interface to use as filter (~0 == "all") */ autoendian define lcp_itf_pair_get { u32 client_index; u32 context; u32 cursor; }; autoendian define lcp_itf_pair_get_reply { u32 context; i32 retval; u32 cursor; }; autoendian define lcp_itf_pair_get_v2 { u32 client_index; u32 context; u32 cursor; vl_api_interface_index_t sw_if_index; }; autoendian define lcp_itf_pair_get_v2_reply { u32 context; i32 retval; u32 cursor; }; /** \brief Linux Control Plane interface pair dump response @param context - sender context which was passed in the request @param phy_sw_if_index - VPP's sw_if_index for the PHY @param host_sw_if_index - VPP's sw_if_index for the host tap @param vif_index - tap linux index @param host_if_name - host interface name @param host_if_type - host interface type (tun, tap) @param netns - host interface netns */ autoendian define lcp_itf_pair_details { u32 context; vl_api_interface_index_t phy_sw_if_index; vl_api_interface_index_t host_sw_if_index; u32 vif_index; string host_if_name[16]; /* IFNAMSIZ */ vl_api_lcp_itf_host_type_t host_if_type; string netns[32]; /* LCP_NS_LEN */ option in_progress; }; service { rpc lcp_itf_pair_get returns lcp_itf_pair_get_reply stream lcp_itf_pair_details; }; service { rpc lcp_itf_pair_get_v2 returns lcp_itf_pair_get_v2_reply stream lcp_itf_pair_details; }; /** \brief Replace end/begin */ autoreply define lcp_itf_pair_replace_begin { u32 client_index; u32 context; }; autoreply define lcp_itf_pair_replace_end { u32 client_index; u32 context; }; /* * Linux-CP Error counters/messages */ counters linuxcp { packets { severity info; type counter64; units "packets"; description "ARP packets processed"; }; copies { severity info; type counter64; units "packets"; description "ARP replies copied to host"; }; }; paths { "/err/linux-cp-arp-phy" "linuxcp"; "/err/linux-cp-arp-host" "linuxcp"; }; /* * Local Variables: * eval: (c-set-style "gnu") * End: */