Code Review
/
vpp.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
review
|
tree
raw
|
inline
| side by side
ip: Reference count the enabling the punt feature
[vpp.git]
/
src
/
vnet
/
ip
/
ip6_punt_drop.c
diff --git
a/src/vnet/ip/ip6_punt_drop.c
b/src/vnet/ip/ip6_punt_drop.c
index
ab5203d
..
32a2ab7
100644
(file)
--- a/
src/vnet/ip/ip6_punt_drop.c
+++ b/
src/vnet/ip/ip6_punt_drop.c
@@
-301,6
+301,8
@@
VNET_FEATURE_INIT (ip6_punt_redirect_node, static) = {
#ifndef CLIB_MARCH_VARIANT
#ifndef CLIB_MARCH_VARIANT
+static u32 ip6_punt_redirect_enable_counts;
+
void
ip6_punt_redirect_add_paths (u32 rx_sw_if_index,
const fib_route_path_t *rpaths)
void
ip6_punt_redirect_add_paths (u32 rx_sw_if_index,
const fib_route_path_t *rpaths)
@@
-309,13
+311,16
@@
ip6_punt_redirect_add_paths (u32 rx_sw_if_index,
rx_sw_if_index,
FIB_FORW_CHAIN_TYPE_UNICAST_IP6, rpaths);
rx_sw_if_index,
FIB_FORW_CHAIN_TYPE_UNICAST_IP6, rpaths);
- vnet_feature_enable_disable ("ip6-punt", "ip6-punt-redirect", 0, 1, 0, 0);
+ if (1 == ++ip6_punt_redirect_enable_counts)
+ vnet_feature_enable_disable ("ip6-punt", "ip6-punt-redirect", 0, 1, 0, 0);
}
void
ip6_punt_redirect_del (u32 rx_sw_if_index)
{
}
void
ip6_punt_redirect_del (u32 rx_sw_if_index)
{
- vnet_feature_enable_disable ("ip6-punt", "ip6-punt-redirect", 0, 0, 0, 0);
+ ASSERT (ip6_punt_redirect_enable_counts);
+ if (0 == --ip6_punt_redirect_enable_counts)
+ vnet_feature_enable_disable ("ip6-punt", "ip6-punt-redirect", 0, 0, 0, 0);
ip_punt_redirect_del (FIB_PROTOCOL_IP6, rx_sw_if_index);
}
ip_punt_redirect_del (FIB_PROTOCOL_IP6, rx_sw_if_index);
}