network: route bound to a link requires the link is up
We checked if the link is up only when configuring (explicit) nexthop, but we did not checked that when configuring route which has (implicit) nexthop. Let's move the checks from nexthop_is_ready_to_configure() to gateway_is_ready(), which is called for both implicit and explict nexthops. Fixes #40106.
This commit is contained in:
@@ -784,11 +784,6 @@ static bool nexthop_is_ready_to_configure(Link *link, const NextHop *nexthop) {
|
||||
if (nexthop_bound_to_link(nexthop)) {
|
||||
assert(nexthop->ifindex == link->ifindex);
|
||||
|
||||
if (link->set_flags_messages > 0)
|
||||
return false;
|
||||
if (!link_is_up(link))
|
||||
return false;
|
||||
|
||||
return gateway_is_ready(link, FLAGS_SET(nexthop->flags, RTNH_F_ONLINK), nexthop->family, &nexthop->gw.address);
|
||||
}
|
||||
|
||||
|
||||
@@ -139,6 +139,12 @@ bool gateway_is_ready(Link *link, bool onlink, int family, const union in_addr_u
|
||||
assert(link);
|
||||
assert(link->manager);
|
||||
|
||||
if (link->set_flags_messages > 0)
|
||||
return false;
|
||||
|
||||
if (!link_is_up(link))
|
||||
return false;
|
||||
|
||||
if (onlink)
|
||||
return true;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user