interface: RX/TX direction type in API 15/30415/4
authorNeale Ranns <neale.ranns@cisco.com>
Mon, 14 Dec 2020 16:50:33 +0000 (16:50 +0000)
committerOle Tr�an <otroan@employees.org>
Fri, 5 Feb 2021 12:00:56 +0000 (12:00 +0000)
Type: feature

Signed-off-by: Neale Ranns <neale.ranns@cisco.com>
Change-Id: I982205b48615395f19cbb36c73854fb5c3db45e8

src/vnet/interface.h
src/vnet/interface_types.api
src/vnet/interface_types_api.c [new file with mode: 0644]
src/vnet/interface_types_api.h

index 88f7c88..6b22bc3 100644 (file)
@@ -364,11 +364,17 @@ typedef enum vnet_link_t_
        _link <= VNET_LINK_NSH;       \
        _link++)
 
+#define FOR_EACH_VNET_IP_LINK(_link)    \
+  for (_link = VNET_LINK_IP4;           \
+       _link <= VNET_LINK_IP6;          \
+       _link++)
+
 /**
- * @brief Number of link types. Not part of the enum so it does not have to be included in
- * switch statements
+ * @brief Number of link types. Not part of the enum so it does not have to be
+ * included in switch statements
  */
 #define VNET_LINK_NUM (VNET_LINK_NSH+1)
+#define VNET_N_LINKS VNET_LINK_NUM
 
 /**
  * @brief Convert a link to to an Ethertype
index c40f64e..4878387 100644 (file)
@@ -49,7 +49,7 @@ enum sub_if_flags
   SUB_IF_API_FLAG_DEFAULT = 32,
   SUB_IF_API_FLAG_OUTER_VLAN_ID_ANY = 64,
   SUB_IF_API_FLAG_INNER_VLAN_ID_ANY = 128,
-  SUB_IF_API_FLAG_MASK_VNET = 254, /* use with vnet_sub_interface_t raw_flags */
+  SUB_IF_API_FLAG_MASK_VNET = 254,     /* use with vnet_sub_interface_t raw_flags */
   SUB_IF_API_FLAG_DOT1AH = 256,
 };
 
@@ -64,11 +64,25 @@ enum rx_mode
 
 enum if_type
 {
-       /* A hw interface. */
-       IF_API_TYPE_HARDWARE = 0,
+  /* A hw interface. */
+  IF_API_TYPE_HARDWARE = 0,
 
-       /* A sub-interface. */
-       IF_API_TYPE_SUB = 1,
-       IF_API_TYPE_P2P = 2,
-       IF_API_TYPE_PIPE = 3,
+  /* A sub-interface. */
+  IF_API_TYPE_SUB = 1,
+  IF_API_TYPE_P2P = 2,
+  IF_API_TYPE_PIPE = 3,
 };
+
+enum direction:u8
+{
+  RX = 0,
+  TX,
+};
+
+/*
+ * fd.io coding-style-patch-verification: ON
+ *
+ * Local Variables:
+ * eval: (c-set-style "gnu")
+ * End:
+ */
diff --git a/src/vnet/interface_types_api.c b/src/vnet/interface_types_api.c
new file mode 100644 (file)
index 0000000..5aba3d6
--- /dev/null
@@ -0,0 +1,49 @@
+/* Hey Emacs use -*- mode: C -*- */
+/*
+ * Copyright (c) 2020 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.
+ */
+
+
+#include <vnet/interface_types_api.h>
+
+STATIC_ASSERT_SIZEOF (vl_api_direction_t, 1);
+
+int
+direction_decode (vl_api_direction_t _dir, vlib_dir_t * out)
+{
+  switch (_dir)
+    {
+    case RX:
+      *out = VLIB_RX;
+      return (0);
+    case TX:
+      *out = VLIB_TX;
+      return (0);
+    }
+  return (VNET_API_ERROR_INVALID_VALUE);
+}
+
+vl_api_direction_t
+direction_encode (vlib_dir_t dir)
+{
+  return (vl_api_direction_t) dir;
+}
+
+/*
+ * fd.io coding-style-patch-verification: ON
+ *
+ * Local Variables:
+ * eval: (c-set-style "gnu")
+ * End:
+ */
index 37f6bad..f1f165d 100644 (file)
@@ -1,6 +1,6 @@
 /* Hey Emacs use -*- mode: C -*- */
 /*
- * Copyright (c) 2018 Cisco and/or its affiliates.
+ * Copyright (c) 2020 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:
  * limitations under the License.
  */
 
-typedef u32 interface_index;
+#ifndef __INTERFACE_TYPES_API_H__
+#define __INTERFACE_TYPES_API_H__
 
-enum if_status_flags
-{
-  IF_STATUS_API_FLAG_ADMIN_UP = 1,
-  IF_STATUS_API_FLAG_LINK_UP = 2,
-};
+#include <vnet/vnet.h>
+#include <vlibapi/api_types.h>
 
-/* Per protocol MTU */
-enum mtu_proto
-{
-  MTU_PROTO_API_L3,            /* Default payload MTU (without L2 headers) */
-  MTU_PROTO_API_IP4,           /* Per-protocol MTUs overriding default */
-  MTU_PROTO_API_IP6,
-  MTU_PROTO_API_MPLS,
-  MTU_PROTO_API_N,
-};
+#include <vnet/interface.api_types.h>
 
-enum link_duplex
-{
-  LINK_DUPLEX_API_UNKNOWN = 0,
-  LINK_DUPLEX_API_HALF = 1,
-  LINK_DUPLEX_API_FULL = 2,
-};
+extern int direction_decode (vl_api_direction_t _dir, vlib_dir_t * out);
+extern vl_api_direction_t direction_encode (vlib_dir_t dir);
 
-enum sub_if_flags
-{
-  SUB_IF_API_FLAG_NO_TAGS = 1,
-  SUB_IF_API_FLAG_ONE_TAG = 2,
-  SUB_IF_API_FLAG_TWO_TAGS = 4,
-  SUB_IF_API_FLAG_DOT1AD = 8,
-  SUB_IF_API_FLAG_EXACT_MATCH = 16,
-  SUB_IF_API_FLAG_DEFAULT = 32,
-  SUB_IF_API_FLAG_OUTER_VLAN_ID_ANY = 64,
-  SUB_IF_API_FLAG_INNER_VLAN_ID_ANY = 128,
-  SUB_IF_API_FLAG_MASK_VNET = 254,     /* use with vnet_sub_interface_t raw_flags */
-  SUB_IF_API_FLAG_DOT1AH = 256,
-};
-
-enum rx_mode
-{
-  RX_MODE_API_UNKNOWN = 0,
-  RX_MODE_API_POLLING,
-  RX_MODE_API_INTERRUPT,
-  RX_MODE_API_ADAPTIVE,
-  RX_MODE_API_DEFAULT,
-};
-
-enum if_type
-{
-  /* A hw interface. */
-  IF_API_TYPE_HARDWARE,
-
-  /* A sub-interface. */
-  IF_API_TYPE_SUB,
-  IF_API_TYPE_P2P,
-  IF_API_TYPE_PIPE,
-};
-
-enum direction:u8
-{
-  DIRECTION_RX,
-  DIRECTION_TX,
-};
+#endif
 
 /*
  * fd.io coding-style-patch-verification: ON