Fix output feature processing (VPP-670)
Double committing to 17.04 as its a bug-fix. Change-Id: I94539812191ad0eb8abe78e2dad25ab96c780f30 Signed-off-by: AkshayaNadahalli <anadahal@cisco.com>
This commit is contained in:
@ -132,6 +132,46 @@ adj_get_nd_node (fib_protocol_t proto)
|
|||||||
return (ip4_arp_node.index);
|
return (ip4_arp_node.index);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Check and set feature flags if o/p interface has any o/p features.
|
||||||
|
*/
|
||||||
|
static void
|
||||||
|
adj_nbr_evaluate_feature (adj_index_t ai)
|
||||||
|
{
|
||||||
|
ip_adjacency_t *adj;
|
||||||
|
vnet_feature_main_t *fm = &feature_main;
|
||||||
|
i16 feature_count;
|
||||||
|
u8 arc_index;
|
||||||
|
u32 sw_if_index;
|
||||||
|
|
||||||
|
adj = adj_get(ai);
|
||||||
|
|
||||||
|
switch (adj->ia_link)
|
||||||
|
{
|
||||||
|
case VNET_LINK_IP4:
|
||||||
|
arc_index = ip4_main.lookup_main.output_feature_arc_index;
|
||||||
|
break;
|
||||||
|
case VNET_LINK_IP6:
|
||||||
|
arc_index = ip6_main.lookup_main.output_feature_arc_index;
|
||||||
|
break;
|
||||||
|
case VNET_LINK_MPLS:
|
||||||
|
arc_index = mpls_main.output_feature_arc_index;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
sw_if_index = adj->rewrite_header.sw_if_index;
|
||||||
|
if (vec_len(fm->feature_count_by_sw_if_index[arc_index]) > sw_if_index)
|
||||||
|
{
|
||||||
|
feature_count = fm->feature_count_by_sw_if_index[arc_index][sw_if_index];
|
||||||
|
if (feature_count > 0)
|
||||||
|
adj->rewrite_header.flags |= VNET_REWRITE_HAS_FEATURES;
|
||||||
|
}
|
||||||
|
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
static ip_adjacency_t*
|
static ip_adjacency_t*
|
||||||
adj_nbr_alloc (fib_protocol_t nh_proto,
|
adj_nbr_alloc (fib_protocol_t nh_proto,
|
||||||
vnet_link_t link_type,
|
vnet_link_t link_type,
|
||||||
@ -158,6 +198,7 @@ adj_nbr_alloc (fib_protocol_t nh_proto,
|
|||||||
memset(&adj->sub_type.midchain.next_dpo, 0,
|
memset(&adj->sub_type.midchain.next_dpo, 0,
|
||||||
sizeof(adj->sub_type.midchain.next_dpo));
|
sizeof(adj->sub_type.midchain.next_dpo));
|
||||||
|
|
||||||
|
adj_nbr_evaluate_feature (adj_get_index(adj));
|
||||||
return (adj);
|
return (adj);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user