linux-cp: Only enable/disable the punt feature on the 0<->1 transition
Type: fix otherwise the feature is enabled n times for n lcp-pairs and the packets go n times through the feature. Signed-off-by: Neale Ranns <neale@graphiant.com> Change-Id: I8e47e4a293d6e2711f54aa09e9545e5e07728026
This commit is contained in:
committed by
Matthew Smith
parent
cb8b4c9486
commit
09cdea643a
@@ -308,10 +308,13 @@ lcp_itf_pair_add (u32 host_sw_if_index, u32 phy_sw_if_index, u8 *host_name,
|
||||
}
|
||||
else
|
||||
{
|
||||
vnet_feature_enable_disable ("ip4-punt", "linux-cp-punt-l3", 0, 1, NULL,
|
||||
0);
|
||||
vnet_feature_enable_disable ("ip6-punt", "linux-cp-punt-l3", 0, 1, NULL,
|
||||
0);
|
||||
if (hash_elts (lip_db_by_vif) == 1)
|
||||
{
|
||||
vnet_feature_enable_disable ("ip4-punt", "linux-cp-punt-l3", 0, 1,
|
||||
NULL, 0);
|
||||
vnet_feature_enable_disable ("ip6-punt", "linux-cp-punt-l3", 0, 1,
|
||||
NULL, 0);
|
||||
}
|
||||
}
|
||||
|
||||
/* invoke registered callbacks for pair addition */
|
||||
@@ -435,12 +438,14 @@ lcp_itf_pair_del (u32 phy_sw_if_index)
|
||||
}
|
||||
else
|
||||
{
|
||||
vnet_feature_enable_disable ("ip4-punt", "linux-cp-punt-l3", 0, 0, NULL,
|
||||
0);
|
||||
vnet_feature_enable_disable ("ip6-punt", "linux-cp-punt-l3", 0, 0, NULL,
|
||||
0);
|
||||
if (hash_elts (lip_db_by_vif) == 1)
|
||||
{
|
||||
vnet_feature_enable_disable ("ip4-punt", "linux-cp-punt-l3", 0, 0,
|
||||
NULL, 0);
|
||||
vnet_feature_enable_disable ("ip6-punt", "linux-cp-punt-l3", 0, 0,
|
||||
NULL, 0);
|
||||
}
|
||||
}
|
||||
|
||||
lip_db_by_phy[phy_sw_if_index] = INDEX_INVALID;
|
||||
lip_db_by_host[lip->lip_host_sw_if_index] = INDEX_INVALID;
|
||||
hash_unset (lip_db_by_vif, lip->lip_vif_index);
|
||||
|
||||
Reference in New Issue
Block a user