]> git.puffer.fish Git - mirror/frr.git/commitdiff
zebra: Fix crash when dereferencing dest->selected_fib 1687/head
authorDonald Sharp <sharpd@cumulusnetworks.com>
Mon, 29 Jan 2018 22:52:15 +0000 (17:52 -0500)
committerDonald Sharp <sharpd@cumulusnetworks.com>
Mon, 29 Jan 2018 22:52:15 +0000 (17:52 -0500)
When a rib_unlink() event is directly called for a
route_entry we need to see if the dest->selected_fib
is the same and just unset the dest->selected_fib.

This was happening for redistributed table 10 routes
into BGP.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
zebra/zebra_rib.c

index c200e2dbb3727de5e65e2fb63e249072156208cd..b7b4a159dac58af7fac02465fabf15b7bf0b8fc0 100644 (file)
@@ -2098,6 +2098,9 @@ void rib_unlink(struct route_node *rn, struct route_entry *re)
                dest->routes = re->next;
        }
 
+       if (dest->selected_fib == re)
+               dest->selected_fib = NULL;
+
        /* free RE and nexthops */
        zebra_deregister_rnh_static_nexthops(re->vrf_id, re->nexthop, rn);
        nexthops_free(re->nexthop);