mirror of
https://github.com/systemd/systemd.git
synced 2024-11-02 10:51:20 +03:00
networkd: route - allow routes without a gateway
For IPv6, the kernel returns EINVAL if a route is added with the RTA_GATEWAY attribute set to in6addr_any (::). A route without a gateway is useful in some situations, such as layer 3 tunneling (sit, gre, etc.). This patch prevents the RTA_GATEWAY attribute from being added when route.in_addr is ip6addr_any (::).
This commit is contained in:
parent
bedd083aae
commit
59580681f5
@ -118,6 +118,7 @@ int route_drop(Route *route, Link *link,
|
||||
return r;
|
||||
}
|
||||
|
||||
if (!in_addr_is_null(route->family, &route->in_addr)) {
|
||||
if (route->family == AF_INET)
|
||||
r = sd_rtnl_message_append_in_addr(req, RTA_GATEWAY, &route->in_addr.in);
|
||||
else if (route->family == AF_INET6)
|
||||
@ -126,6 +127,7 @@ int route_drop(Route *route, Link *link,
|
||||
log_error("Could not append RTA_GATEWAY attribute: %s", strerror(-r));
|
||||
return r;
|
||||
}
|
||||
}
|
||||
|
||||
if (route->dst_prefixlen) {
|
||||
if (route->family == AF_INET)
|
||||
@ -203,6 +205,7 @@ int route_configure(Route *route, Link *link,
|
||||
return r;
|
||||
}
|
||||
|
||||
if (!in_addr_is_null(route->family, &route->in_addr)) {
|
||||
if (route->family == AF_INET)
|
||||
r = sd_rtnl_message_append_in_addr(req, RTA_GATEWAY, &route->in_addr.in);
|
||||
else if (route->family == AF_INET6)
|
||||
@ -211,6 +214,7 @@ int route_configure(Route *route, Link *link,
|
||||
log_error("Could not append RTA_GATEWAY attribute: %s", strerror(-r));
|
||||
return r;
|
||||
}
|
||||
}
|
||||
|
||||
if (route->dst_prefixlen) {
|
||||
if (route->family == AF_INET)
|
||||
|
Loading…
Reference in New Issue
Block a user