diff --git a/src/network/networkd-nexthop.c b/src/network/networkd-nexthop.c index 67eba509d3..07a971a0e9 100644 --- a/src/network/networkd-nexthop.c +++ b/src/network/networkd-nexthop.c @@ -12,6 +12,7 @@ #include "networkd-network.h" #include "networkd-nexthop.h" #include "networkd-queue.h" +#include "networkd-route.h" #include "networkd-route-util.h" #include "parse-util.h" #include "set.h" @@ -489,7 +490,7 @@ static int nexthop_remove_dependents(NextHop *nexthop, Manager *manager) { assert(nexthop); assert(manager); - /* If a nexthop is removed, the kernel silently removes nexthops that depend on the + /* If a nexthop is removed, the kernel silently removes nexthops and routes that depend on the * removed nexthop. Let's remove them for safety (though, they are already removed in the kernel, * hence that should fail), and forget them. */ @@ -503,6 +504,10 @@ static int nexthop_remove_dependents(NextHop *nexthop, Manager *manager) { RET_GATHER(r, nexthop_remove(nh, manager)); } + Route *route; + SET_FOREACH(route, nexthop->routes) + RET_GATHER(r, route_remove(route, manager)); + return r; }