When an address with peer address is specified, the kernel by default
adds the prefix route for the peer address. When ManageForeignRoute=no
is set, then we also needs to check the prefix for the peer address.
Fixes #30403.
continue;
if (FLAGS_SET(a->flags, IFA_F_NOPREFIXROUTE))
continue;
- if (in_addr_is_set(a->family, &a->in_addr_peer))
- continue;
- if (in_addr_prefix_covers(family, &a->in_addr, a->prefixlen, gw) > 0)
+ if (in_addr_prefix_covers(a->family,
+ in_addr_is_set(a->family, &a->in_addr_peer) ? &a->in_addr_peer : &a->in_addr,
+ a->prefixlen, gw) > 0)
return true;
}