summaryrefslogtreecommitdiffstats
path: root/src/plugins/linux-cp/lcp.api
diff options
context:
space:
mode:
authorNeale Ranns <nranns@cisco.com>2020-12-24 09:16:09 +0000
committerOle Tr�an <otroan@employees.org>2021-02-04 14:16:34 +0000
commit44db1caefbf5067b0cf0073299c9f21265331412 (patch)
tree4981dc028db66398cf6dc2ca9d309aa5a7bf7a1d /src/plugins/linux-cp/lcp.api
parent1a52d37fc50acd479274c29c2e92b05cf32c3a6d (diff)
linux-cp: Linux Interface Mirroring for Control Plane Integration
Type: feature please see FEATURE.yaml for details. Signed-off-by: Neale Ranns <nranns@cisco.com> Signed-off-by: Matthew Smith <mgsmith@netgate.com> Signed-off-by: Jon Loeliger <jdl@netgate.com> Signed-off-by: Pim van Pelt <pim@ipng.nl> Change-Id: I04a45c15c0838906aa787e06660fa29f39f755fa
Diffstat (limited to 'src/plugins/linux-cp/lcp.api')
-rw-r--r--src/plugins/linux-cp/lcp.api166
1 files changed, 166 insertions, 0 deletions
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:
+ */