diff options
author | Swarup Nayak <swarupnpvt@gmail.com> | 2017-12-11 17:36:54 +0530 |
---|---|---|
committer | Neale Ranns <nranns@cisco.com> | 2017-12-12 09:06:22 +0000 |
commit | 4112e389ea934463fd2160c8f24edaf11bc931b0 (patch) | |
tree | 9c7ba36e0ac3ecfb3ba4fb6b5629622f91f3d8dc /src/vnet | |
parent | 561af9b441c7392cf391dd46399b0b16b876a08a (diff) |
VPP-1092 Correcting ip punt delete flow, when recv if index valid but doesnt exist in configuration
Change-Id: I01a69c4eef2c6224a24907b8fed12dcb1b642307
Signed-off-by: Swarup Nayak <swarupnpvt@gmail.com>
Diffstat (limited to 'src/vnet')
-rw-r--r-- | src/vnet/ip/ip4_punt_drop.c | 5 | ||||
-rw-r--r-- | src/vnet/ip/ip6_punt_drop.c | 9 |
2 files changed, 10 insertions, 4 deletions
diff --git a/src/vnet/ip/ip4_punt_drop.c b/src/vnet/ip/ip4_punt_drop.c index ceb1bb8f251..5f40e14754a 100644 --- a/src/vnet/ip/ip4_punt_drop.c +++ b/src/vnet/ip/ip4_punt_drop.c @@ -115,6 +115,7 @@ format_ip_punt_redirect_trace (u8 * s, va_list * args) ip_punt_redirect_t ip4_punt_redirect_cfg = { .any_rx_sw_if_index = { .tx_sw_if_index = ~0, + .adj_index = ADJ_INDEX_INVALID, }, }; /* *INDENT-ON* */ @@ -309,6 +310,7 @@ VLIB_CLI_COMMAND (ip4_punt_policer_command, static) = */ ip_punt_redirect_rx_t uninit_rx_redirect = { .tx_sw_if_index = ~0, + .adj_index = ADJ_INDEX_INVALID, }; void @@ -351,6 +353,9 @@ ip_punt_redirect_del (ip_punt_redirect_t * cfg, u32 rx_sw_if_index) old = &cfg->redirect_by_rx_sw_if_index[rx_sw_if_index]; } + if ((old == NULL) || (old->adj_index == ADJ_INDEX_INVALID)) + return; + adj_unlock (old->adj_index); *old = uninit_rx_redirect; } diff --git a/src/vnet/ip/ip6_punt_drop.c b/src/vnet/ip/ip6_punt_drop.c index 4c4240ee7a3..a46b7d9024f 100644 --- a/src/vnet/ip/ip6_punt_drop.c +++ b/src/vnet/ip/ip6_punt_drop.c @@ -207,14 +207,15 @@ VLIB_CLI_COMMAND (ip6_punt_policer_command, static) = .function = ip6_punt_police_cmd, .short_help = "ip6 punt policer [add|del] <index>", }; -/* *INDENT-ON* */ + ip_punt_redirect_t ip6_punt_redirect_cfg = { .any_rx_sw_if_index = { - .tx_sw_if_index = ~0, - } - , + .tx_sw_if_index = ~0, + .adj_index = ADJ_INDEX_INVALID, + }, }; +/* *INDENT-ON* */ #define foreach_ip6_punt_redirect_error \ _(DROP, "ip6 punt redirect drop") |