summaryrefslogtreecommitdiffstats
path: root/vnet/vnet/fib/fib_types.h
diff options
context:
space:
mode:
Diffstat (limited to 'vnet/vnet/fib/fib_types.h')
-rw-r--r--vnet/vnet/fib/fib_types.h39
1 files changed, 29 insertions, 10 deletions
diff --git a/vnet/vnet/fib/fib_types.h b/vnet/vnet/fib/fib_types.h
index 4ebd68d1450..232a2301606 100644
--- a/vnet/vnet/fib/fib_types.h
+++ b/vnet/vnet/fib/fib_types.h
@@ -1,4 +1,4 @@
-/*
+ /*
* Copyright (c) 2016 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.
@@ -58,6 +58,17 @@ typedef enum fib_protocol_t_ {
*/
#define FIB_PROTOCOL_NONE (FIB_PROTOCOL_MAX+1)
+#define FOR_EACH_FIB_PROTOCOL(_item) \
+ for (_item = FIB_PROTOCOL_IP4; \
+ _item <= FIB_PROTOCOL_MPLS; \
+ _item++)
+
+#define FOR_EACH_FIB_IP_PROTOCOL(_item) \
+ for (_item = FIB_PROTOCOL_IP4; \
+ _item <= FIB_PROTOCOL_IP6; \
+ _item++)
+
+
/**
* Link Type. This maps directly into the ethertype.
*/
@@ -68,6 +79,7 @@ typedef enum fib_link_t_ {
FIB_LINK_IP4 = 0,
#endif
FIB_LINK_IP6,
+ FIB_LINK_ETHERNET,
FIB_LINK_MPLS,
} __attribute__ ((packed)) fib_link_t;
@@ -77,15 +89,16 @@ typedef enum fib_link_t_ {
*/
#define FIB_LINK_NUM (FIB_LINK_MPLS+1)
-#define FIB_LINKS { \
- [FIB_LINK_IP4] = "ipv4", \
- [FIB_LINK_IP6] = "ipv6", \
- [FIB_LINK_MPLS] = "mpls", \
+#define FIB_LINKS { \
+ [FIB_LINK_ETHERNET] = "ethernet", \
+ [FIB_LINK_IP4] = "ipv4", \
+ [FIB_LINK_IP6] = "ipv6", \
+ [FIB_LINK_MPLS] = "mpls", \
}
-#define FOR_EACH_FIB_LINK(_item) \
- for (_item = FIB_LINK_IP4; \
- _item <= FIB_LINK_MPLS; \
+#define FOR_EACH_FIB_LINK(_item) \
+ for (_item = FIB_LINK_IP4; \
+ _item <= FIB_LINK_MPLS; \
_item++)
#define FOR_EACH_FIB_IP_LINK(_item) \
@@ -105,6 +118,10 @@ fib_link_t fib_proto_to_link (fib_protocol_t proto);
*/
typedef enum fib_forward_chain_type_t_ {
/**
+ * Contribute an object that is to be used to forward Ethernet packets
+ */
+ FIB_FORW_CHAIN_TYPE_ETHERNET,
+ /**
* Contribute an object that is to be used to forward IP4 packets
*/
FIB_FORW_CHAIN_TYPE_UNICAST_IP4,
@@ -127,6 +144,7 @@ typedef enum fib_forward_chain_type_t_ {
} __attribute__ ((packed)) fib_forward_chain_type_t;
#define FIB_FORW_CHAINS { \
+ [FIB_FORW_CHAIN_TYPE_ETHERNET] = "ehternet", \
[FIB_FORW_CHAIN_TYPE_UNICAST_IP4] = "unicast-ip4", \
[FIB_FORW_CHAIN_TYPE_UNICAST_IP6] = "unicast-ip6", \
[FIB_FORW_CHAIN_TYPE_MPLS_NON_EOS] = "mpls-neos", \
@@ -136,7 +154,7 @@ typedef enum fib_forward_chain_type_t_ {
#define FIB_FORW_CHAIN_NUM (FIB_FORW_CHAIN_TYPE_MPLS_EOS+1)
#define FOR_EACH_FIB_FORW_CHAIN(_item) \
- for (_item = FIB_FORW_CHAIN_TYPE_UNICAST_IP4; \
+ for (_item = FIB_FORW_CHAIN_TYPE_ETHERNET; \
_item <= FIB_FORW_CHAIN_TYPE_MPLS_EOS; \
_item++)
@@ -148,7 +166,7 @@ extern fib_link_t fib_forw_chain_type_to_link_type(fib_forward_chain_type_t fct)
/**
* @brief Convert from a payload-protocol to a chain type.
*/
-extern fib_forward_chain_type_t fib_proto_to_forw_chain_type(fib_protocol_t proto);
+extern fib_forward_chain_type_t fib_forw_chain_type_from_dpo_proto(dpo_proto_t proto);
/**
* @brief Convert from a chain type to the DPO proto it will install
@@ -222,6 +240,7 @@ extern u8 * format_fib_prefix(u8 * s, va_list * args);
extern u8 * format_fib_forw_chain_type(u8 * s, va_list * args);
extern dpo_proto_t fib_proto_to_dpo(fib_protocol_t fib_proto);
+extern dpo_proto_t fib_link_to_dpo_proto(fib_link_t linkt);
extern fib_protocol_t dpo_proto_to_fib(dpo_proto_t dpo_proto);
/**