mirror of
https://github.com/morgan9e/systemd
synced 2026-04-15 00:47:10 +09:00
network/route: use log_section_warning() more
This commit is contained in:
@@ -804,6 +804,16 @@ int route_nexthops_read_netlink_message(Route *route, sd_netlink_message *messag
|
||||
return 0;
|
||||
}
|
||||
|
||||
#define log_route_section(route, fmt, ...) \
|
||||
({ \
|
||||
const Route *_route = (route); \
|
||||
log_section_warning_errno( \
|
||||
_route ? _route->section : NULL, \
|
||||
SYNTHETIC_ERRNO(EINVAL), \
|
||||
fmt " Ignoring [Route] section.", \
|
||||
##__VA_ARGS__); \
|
||||
})
|
||||
|
||||
int route_section_verify_nexthops(Route *route) {
|
||||
assert(route);
|
||||
assert(route->section);
|
||||
@@ -815,37 +825,30 @@ int route_section_verify_nexthops(Route *route) {
|
||||
/* When deprecated Gateway=_dhcp is set, then assume gateway family based on other settings. */
|
||||
switch (route->family) {
|
||||
case AF_UNSPEC:
|
||||
log_warning("%s: Deprecated value \"_dhcp\" is specified for Gateway= in [Route] section from line %u. "
|
||||
"Please use \"_dhcp4\" or \"_ipv6ra\" instead. Assuming \"_dhcp4\".",
|
||||
route->section->filename, route->section->line);
|
||||
log_section_warning(route->section,
|
||||
"Deprecated value \"_dhcp\" is specified for Gateway=. "
|
||||
"Please use \"_dhcp4\" or \"_ipv6ra\" instead. Assuming \"_dhcp4\".");
|
||||
|
||||
route->nexthop.family = route->family = AF_INET;
|
||||
break;
|
||||
case AF_INET:
|
||||
case AF_INET6:
|
||||
log_warning("%s: Deprecated value \"_dhcp\" is specified for Gateway= in [Route] section from line %u. "
|
||||
"Assuming \"%s\" based on Destination=, Source=, or PreferredSource= setting.",
|
||||
route->section->filename, route->section->line, route->family == AF_INET ? "_dhcp4" : "_ipv6ra");
|
||||
log_section_warning(route->section,
|
||||
"Deprecated value \"_dhcp\" is specified for Gateway=. "
|
||||
"Assuming \"%s\" based on Destination=, Source=, or PreferredSource= setting.",
|
||||
route->family == AF_INET ? "_dhcp4" : "_ipv6ra");
|
||||
|
||||
route->nexthop.family = route->family;
|
||||
break;
|
||||
default:
|
||||
return log_warning_errno(SYNTHETIC_ERRNO(EINVAL),
|
||||
"%s: Invalid route family. Ignoring [Route] section from line %u.",
|
||||
route->section->filename, route->section->line);
|
||||
return log_route_section(route, "Invalid route family.");
|
||||
}
|
||||
|
||||
if (route->nexthop.family == AF_INET && !FLAGS_SET(route->network->dhcp, ADDRESS_FAMILY_IPV4))
|
||||
return log_warning_errno(SYNTHETIC_ERRNO(EINVAL),
|
||||
"%s: Gateway=\"_dhcp4\" is specified but DHCPv4 client is disabled. "
|
||||
"Ignoring [Route] section from line %u.",
|
||||
route->section->filename, route->section->line);
|
||||
return log_route_section(route, "Gateway=\"_dhcp4\" is specified but DHCPv4 client is disabled.");
|
||||
|
||||
if (route->nexthop.family == AF_INET6 && route->network->ndisc == 0)
|
||||
return log_warning_errno(SYNTHETIC_ERRNO(EINVAL),
|
||||
"%s: Gateway=\"_ipv6ra\" is specified but IPv6AcceptRA= is disabled. "
|
||||
"Ignoring [Route] section from line %u.",
|
||||
route->section->filename, route->section->line);
|
||||
return log_route_section(route, "Gateway=\"_ipv6ra\" is specified but IPv6AcceptRA= is disabled.");
|
||||
}
|
||||
|
||||
/* When only Gateway= is specified, assume the route family based on the Gateway address. */
|
||||
@@ -855,20 +858,14 @@ int route_section_verify_nexthops(Route *route) {
|
||||
if (route->family == AF_UNSPEC) {
|
||||
assert(route->section);
|
||||
|
||||
return log_warning_errno(SYNTHETIC_ERRNO(EINVAL),
|
||||
"%s: Route section without Gateway=, Destination=, Source=, "
|
||||
"or PreferredSource= field configured. "
|
||||
"Ignoring [Route] section from line %u.",
|
||||
route->section->filename, route->section->line);
|
||||
return log_route_section(route, "Route section without Gateway=, Destination=, Source=, or PreferredSource= field configured.");
|
||||
}
|
||||
|
||||
if (route->gateway_onlink < 0 && in_addr_is_set(route->nexthop.family, &route->nexthop.gw) &&
|
||||
route->network && ordered_hashmap_isempty(route->network->addresses_by_section)) {
|
||||
/* If no address is configured, in most cases the gateway cannot be reachable.
|
||||
* TODO: we may need to improve the condition above. */
|
||||
log_warning("%s: Gateway= without static address configured. "
|
||||
"Enabling GatewayOnLink= option.",
|
||||
route->section->filename);
|
||||
log_section_warning(route->section, "Gateway= without static address configured. Enabling GatewayOnLink= option.");
|
||||
route->gateway_onlink = true;
|
||||
}
|
||||
|
||||
@@ -877,45 +874,30 @@ int route_section_verify_nexthops(Route *route) {
|
||||
|
||||
if (route->family == AF_INET6) {
|
||||
if (route->nexthop.family == AF_INET)
|
||||
return log_warning_errno(SYNTHETIC_ERRNO(EINVAL),
|
||||
"%s: IPv4 gateway is configured for IPv6 route. "
|
||||
"Ignoring [Route] section from line %u.",
|
||||
route->section->filename, route->section->line);
|
||||
return log_route_section(route, "IPv4 gateway is configured for IPv6 route.");
|
||||
|
||||
RouteNextHop *nh;
|
||||
ORDERED_SET_FOREACH(nh, route->nexthops)
|
||||
if (nh->family == AF_INET)
|
||||
return log_warning_errno(SYNTHETIC_ERRNO(EINVAL),
|
||||
"%s: IPv4 multipath route is specified for IPv6 route. "
|
||||
"Ignoring [Route] section from line %u.",
|
||||
route->section->filename, route->section->line);
|
||||
return log_route_section(route, "IPv4 multipath route is specified for IPv6 route.");
|
||||
}
|
||||
|
||||
if (route->nexthop_id != 0 &&
|
||||
(route->gateway_from_dhcp_or_ra ||
|
||||
in_addr_is_set(route->nexthop.family, &route->nexthop.gw) ||
|
||||
!ordered_set_isempty(route->nexthops)))
|
||||
return log_warning_errno(SYNTHETIC_ERRNO(EINVAL),
|
||||
"%s: NextHopId= cannot be specified with Gateway= or MultiPathRoute=. "
|
||||
"Ignoring [Route] section from line %u.",
|
||||
route->section->filename, route->section->line);
|
||||
return log_route_section(route, "NextHopId= cannot be specified with Gateway= or MultiPathRoute=.");
|
||||
|
||||
if (route_is_reject(route) &&
|
||||
(route->gateway_from_dhcp_or_ra ||
|
||||
in_addr_is_set(route->nexthop.family, &route->nexthop.gw) ||
|
||||
!ordered_set_isempty(route->nexthops)))
|
||||
return log_warning_errno(SYNTHETIC_ERRNO(EINVAL),
|
||||
"%s: reject type route cannot be specified with Gateway= or MultiPathRoute=. "
|
||||
"Ignoring [Route] section from line %u.",
|
||||
route->section->filename, route->section->line);
|
||||
return log_route_section(route, "Reject type route cannot be specified with Gateway= or MultiPathRoute=.");
|
||||
|
||||
if ((route->gateway_from_dhcp_or_ra ||
|
||||
in_addr_is_set(route->nexthop.family, &route->nexthop.gw)) &&
|
||||
!ordered_set_isempty(route->nexthops))
|
||||
return log_warning_errno(SYNTHETIC_ERRNO(EINVAL),
|
||||
"%s: Gateway= cannot be specified with MultiPathRoute=. "
|
||||
"Ignoring [Route] section from line %u.",
|
||||
route->section->filename, route->section->line);
|
||||
return log_route_section(route, "Gateway= cannot be specified with MultiPathRoute=.");
|
||||
|
||||
if (ordered_set_size(route->nexthops) == 1) {
|
||||
_cleanup_(route_nexthop_freep) RouteNextHop *nh = ordered_set_steal_first(route->nexthops);
|
||||
|
||||
@@ -1960,7 +1960,7 @@ int route_section_verify(Route *route) {
|
||||
/* IPv6 route */
|
||||
if (route->family == AF_INET6) {
|
||||
if (route->scope != RT_SCOPE_UNIVERSE) {
|
||||
log_warning("%s: Scope= is specified for IPv6 route. It will be ignored.", route->section->filename);
|
||||
log_section_warning(route->section, "Scope= is specified for IPv6 route. It will be ignored.");
|
||||
route->scope = RT_SCOPE_UNIVERSE;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user