]> git.proxmox.com Git - mirror_ubuntu-bionic-kernel.git/commitdiff
ipv6: fib: Unlink replaced routes from their nodes
authorIdo Schimmel <idosch@mellanox.com>
Thu, 3 Aug 2017 11:28:22 +0000 (13:28 +0200)
committerDavid S. Miller <davem@davemloft.net>
Thu, 3 Aug 2017 22:36:00 +0000 (15:36 -0700)
When a route is deleted its node pointer is set to NULL to indicate it's
no longer linked to its node. Do the same for routes that are replaced.

This will later allow us to test if a route is still in the FIB by
checking its node pointer instead of its reference count.

Signed-off-by: Ido Schimmel <idosch@mellanox.com>
Signed-off-by: Jiri Pirko <jiri@mellanox.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/ipv6/ip6_fib.c

index fa27905de92eda284b180e749bffb9e7634c0c07..fe193b48ef6126e895c3e5d1d602103aeeea186b 100644 (file)
@@ -1019,6 +1019,7 @@ add:
                        fn->fn_flags |= RTN_RTINFO;
                }
                nsiblings = iter->rt6i_nsiblings;
+               iter->rt6i_node = NULL;
                fib6_purge_rt(iter, fn, info->nl_net);
                rt6_release(iter);
 
@@ -1031,6 +1032,7 @@ add:
                                        break;
                                if (rt6_qualify_for_ecmp(iter)) {
                                        *ins = iter->dst.rt6_next;
+                                       iter->rt6i_node = NULL;
                                        fib6_purge_rt(iter, fn, info->nl_net);
                                        rt6_release(iter);
                                        nsiblings--;