aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNeale Ranns <neale.ranns@cisco.com>2020-12-14 16:50:33 +0000
committerOle Tr�an <otroan@employees.org>2021-02-05 12:00:56 +0000
commit6a999d67d6e41df0fb9f63f0a379ebd389617a7e (patch)
treef8f029fea972508aed622b38682196080a59c8ad
parentadcc0b359605df118b69e05614740570b22c92fb (diff)
interface: RX/TX direction type in API
Type: feature Signed-off-by: Neale Ranns <neale.ranns@cisco.com> Change-Id: I982205b48615395f19cbb36c73854fb5c3db45e8
-rw-r--r--src/vnet/interface.h10
-rw-r--r--src/vnet/interface_types.api28
-rw-r--r--src/vnet/interface_types_api.c49
-rw-r--r--src/vnet/interface_types_api.h70
4 files changed, 87 insertions, 70 deletions
diff --git a/src/vnet/interface.h b/src/vnet/interface.h
index 88f7c88eff9..6b22bc327df 100644
--- a/src/vnet/interface.h
+++ b/src/vnet/interface.h
@@ -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
diff --git a/src/vnet/interface_types.api b/src/vnet/interface_types.api
index c40f64efdea..48783874f4f 100644
--- a/src/vnet/interface_types.api
+++ b/src/vnet/interface_types.api
@@ -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
index 00000000000..5aba3d632f3
--- /dev/null
+++ b/src/vnet/interface_types_api.c
@@ -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:
+ */
diff --git a/src/vnet/interface_types_api.h b/src/vnet/interface_types_api.h
index 37f6bad8737..f1f165d79f4 100644
--- a/src/vnet/interface_types_api.h
+++ b/src/vnet/interface_types_api.h
@@ -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:
@@ -14,70 +14,18 @@
* 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