diff options
author | Neale Ranns <nranns@cisco.com> | 2018-09-19 04:55:32 -0700 |
---|---|---|
committer | Ole Trøan <otroan@employees.org> | 2018-09-19 15:53:46 +0000 |
commit | 2646c80db8d3d1a3cd7555328d5a0038798f861e (patch) | |
tree | 52269f0ab8207676f719cc670576a5e4b13f86fd /src | |
parent | a2e212919c9a287681182bb5171e31d94e90d02e (diff) |
GRE: fix 4o6 and 6o4 adj stacking
Change-Id: I13dc5eab8835c4f3b95906816d42dccfeee8b092
Signed-off-by: Neale Ranns <nranns@cisco.com>
Diffstat (limited to 'src')
-rw-r--r-- | src/vnet/fib/fib_types.c | 16 | ||||
-rw-r--r-- | src/vnet/fib/fib_types.h | 5 | ||||
-rw-r--r-- | src/vnet/gre/interface.c | 6 | ||||
-rw-r--r-- | src/vnet/mfib/mfib_test.c | 17 |
4 files changed, 24 insertions, 20 deletions
diff --git a/src/vnet/fib/fib_types.c b/src/vnet/fib/fib_types.c index a71f4194a18..25606438491 100644 --- a/src/vnet/fib/fib_types.c +++ b/src/vnet/fib/fib_types.c @@ -339,6 +339,22 @@ fib_forw_chain_type_from_dpo_proto (dpo_proto_t proto) return (FIB_FORW_CHAIN_TYPE_UNICAST_IP4); } +fib_forward_chain_type_t +fib_forw_chain_type_from_fib_proto (fib_protocol_t proto) +{ + switch (proto) + { + case FIB_PROTOCOL_IP4: + return (FIB_FORW_CHAIN_TYPE_UNICAST_IP4); + case FIB_PROTOCOL_IP6: + return (FIB_FORW_CHAIN_TYPE_UNICAST_IP6); + case FIB_PROTOCOL_MPLS: + return (FIB_FORW_CHAIN_TYPE_MPLS_NON_EOS); + } + ASSERT(0); + return (FIB_FORW_CHAIN_TYPE_UNICAST_IP4); +} + vnet_link_t fib_forw_chain_type_to_link_type (fib_forward_chain_type_t fct) { diff --git a/src/vnet/fib/fib_types.h b/src/vnet/fib/fib_types.h index 805f8e1b964..cd6ef7efac8 100644 --- a/src/vnet/fib/fib_types.h +++ b/src/vnet/fib/fib_types.h @@ -188,6 +188,11 @@ extern fib_forward_chain_type_t fib_forw_chain_type_from_link_type(vnet_link_t l extern fib_forward_chain_type_t fib_forw_chain_type_from_dpo_proto(dpo_proto_t proto); /** + * @brief Convert from a fib-protocol to a chain type. + */ +extern fib_forward_chain_type_t fib_forw_chain_type_from_fib_proto(fib_protocol_t proto); + +/** * @brief Convert from a chain type to the DPO proto it will install */ extern dpo_proto_t fib_forw_chain_type_to_dpo_proto(fib_forward_chain_type_t fct); diff --git a/src/vnet/gre/interface.c b/src/vnet/gre/interface.c index cd7f952cce5..0215f9b0860 100644 --- a/src/vnet/gre/interface.c +++ b/src/vnet/gre/interface.c @@ -128,7 +128,9 @@ gre_tunnel_from_fib_node (fib_node_t * node) void gre_tunnel_stack (adj_index_t ai) { + fib_forward_chain_type_t fib_fwd; gre_main_t *gm = &gre_main; + dpo_id_t tmp = DPO_INVALID; ip_adjacency_t *adj; gre_tunnel_t *gt; u32 sw_if_index; @@ -150,9 +152,7 @@ gre_tunnel_stack (adj_index_t ai) return; } - dpo_id_t tmp = DPO_INVALID; - fib_forward_chain_type_t fib_fwd = (FIB_PROTOCOL_IP6 == adj->ia_nh_proto) ? - FIB_FORW_CHAIN_TYPE_UNICAST_IP6 : FIB_FORW_CHAIN_TYPE_UNICAST_IP4; + fib_fwd = fib_forw_chain_type_from_fib_proto (gt->tunnel_dst.fp_proto); fib_entry_contribute_forwarding (gt->fib_entry_index, fib_fwd, &tmp); if (DPO_LOAD_BALANCE == tmp.dpoi_type) diff --git a/src/vnet/mfib/mfib_test.c b/src/vnet/mfib/mfib_test.c index a94b308473e..4d519cd460f 100644 --- a/src/vnet/mfib/mfib_test.c +++ b/src/vnet/mfib/mfib_test.c @@ -217,23 +217,6 @@ mfib_test_validate_rep_v (const replicate_t *rep, return (res); } -static fib_forward_chain_type_t -fib_forw_chain_type_from_fib_proto (fib_protocol_t proto) -{ - switch (proto) - { - case FIB_PROTOCOL_IP4: - return (FIB_FORW_CHAIN_TYPE_UNICAST_IP4); - case FIB_PROTOCOL_IP6: - return (FIB_FORW_CHAIN_TYPE_UNICAST_IP6); - default: - break; - } - ASSERT(0); - return (0); -} - - static int mfib_test_entry (fib_node_index_t fei, mfib_entry_flags_t eflags, |