From: John Lo Date: Mon, 25 Jul 2016 18:34:48 +0000 (-0400) Subject: VPP-142 - Follow up fix for shared_count in indirect adjacencies X-Git-Tag: v16.09-rc1~125 X-Git-Url: https://gerrit.fd.io/r/gitweb?a=commitdiff_plain;h=refs%2Fchanges%2F78%2F2078%2F1;p=vpp.git VPP-142 - Follow up fix for shared_count in indirect adjacencies Change-Id: Ia2d0351ffd40c75cbf9611e00a7e111189ad70b5 Signed-off-by: John Lo --- diff --git a/vnet/vnet/ip/ip4_forward.c b/vnet/vnet/ip/ip4_forward.c index 97e472b63c7..d2e761fe9ea 100644 --- a/vnet/vnet/ip/ip4_forward.c +++ b/vnet/vnet/ip/ip4_forward.c @@ -455,8 +455,11 @@ ip4_add_del_route_next_hop (ip4_main_t * im, ip4_add_del_route (im, &a); - /* adjust share count. This cannot be the only use of the adjacency */ - nh_adj->share_count += is_del ? -1 : 1; + /* adjust share count. This cannot be the only use of the adjacency + unless next hop is an indiect adj where share count is already + incremented */ + if (next_hop_sw_if_index != ~0) + nh_adj->share_count += is_del ? -1 : 1; goto done; } diff --git a/vnet/vnet/ip/ip6_forward.c b/vnet/vnet/ip/ip6_forward.c index 80156e03f38..823daa69699 100644 --- a/vnet/vnet/ip/ip6_forward.c +++ b/vnet/vnet/ip/ip6_forward.c @@ -516,8 +516,12 @@ ip6_add_del_route_next_hop (ip6_main_t * im, a.n_add_adj = 0; ip6_add_del_route (im, &a); - /* adjust share count. This cannot be the only use of the adjacency */ - nh_adj->share_count += is_del ? -1 : 1; + + /* adjust share count. This cannot be the only use of the adjacency + unless next hop is an indiect adj where share count is already + incremented */ + if (next_hop_sw_if_index != ~0) + nh_adj->share_count += is_del ? -1 : 1; goto done; }