From 44db1caefbf5067b0cf0073299c9f21265331412 Mon Sep 17 00:00:00 2001 From: Neale Ranns Date: Thu, 24 Dec 2020 09:16:09 +0000 Subject: linux-cp: Linux Interface Mirroring for Control Plane Integration Type: feature please see FEATURE.yaml for details. Signed-off-by: Neale Ranns Signed-off-by: Matthew Smith Signed-off-by: Jon Loeliger Signed-off-by: Pim van Pelt Change-Id: I04a45c15c0838906aa787e06660fa29f39f755fa --- src/plugins/linux-cp/lcp.api | 166 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 166 insertions(+) create mode 100644 src/plugins/linux-cp/lcp.api (limited to 'src/plugins/linux-cp/lcp.api') diff --git a/src/plugins/linux-cp/lcp.api b/src/plugins/linux-cp/lcp.api new file mode 100644 index 00000000000..49fdeddf886 --- /dev/null +++ b/src/plugins/linux-cp/lcp.api @@ -0,0 +1,166 @@ +/* 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 namespace + @param client_index - opaque cookie to identify the sender + @param context - sender context, to match reply w/ request + @param namespace - the new default namespace; namespace[0] == 0 iff none +*/ +autoreply define lcp_default_ns_set +{ + u32 client_index; + u32 context; + string namespace[32]; /* LCP_NS_LEN */ +}; + +/** \brief get the default Linux Control Plane namespace + @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 namespace + @param client_index - opaque cookie to identify the sender + @param context - sender context, to match reply w/ request + @param namespace - the default namespace; namespace[0] == 0 iff none +*/ +define lcp_default_ns_get_reply +{ + u32 context; + string namespace[32]; /* LCP_NS_LEN */ +}; + +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 namespace - optional tap namespace; namespace[0] == 0 iff none +*/ +autoreply autoendian define lcp_itf_pair_add_del +{ + 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 namespace[32]; /* LCP_NS_LEN */ +}; + +/** \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; +}; + +/** \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 namespace - host interface namespace +*/ +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 namespace[32]; /* LCP_NS_LEN */ +}; + +service { + rpc lcp_itf_pair_get returns lcp_itf_pair_get_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: + */ -- cgit 1.2.3-korg