From: Yu Watanabe Date: Tue, 11 Jun 2019 14:26:11 +0000 (+0900) Subject: network: ignore requested ipv6 route when ipv6 is disabled by sysctl X-Git-Tag: archive/raspbian/242-5+rpi1^2~26 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=e53a835b8b76e545f5005eff16479c1d1f67c9d3;p=systemd.git network: ignore requested ipv6 route when ipv6 is disabled by sysctl (cherry picked from commit c442331750a2a9711036080f7590e190b9b0eb54) Gbp-Pq: Name network-ignore-requested-ipv6-route-when-ipv6-is-disabled.patch --- diff --git a/src/network/networkd-link.c b/src/network/networkd-link.c index d3752b2d..4de610b3 100644 --- a/src/network/networkd-link.c +++ b/src/network/networkd-link.c @@ -967,8 +967,8 @@ static int link_request_set_routes(Link *link) { link_enter_failed(link); return r; } - - link->route_messages++; + if (r > 0) + link->route_messages++; } if (link->route_messages == 0) { diff --git a/src/network/networkd-ndisc.c b/src/network/networkd-ndisc.c index 05911bda..fd4f8df0 100644 --- a/src/network/networkd-ndisc.c +++ b/src/network/networkd-ndisc.c @@ -117,8 +117,8 @@ static int ndisc_router_process_default(Link *link, sd_ndisc_router *rt) { link_enter_failed(link); return r; } - - link->ndisc_messages++; + if (r > 0) + link->ndisc_messages++; return 0; } @@ -255,8 +255,8 @@ static int ndisc_router_process_onlink_prefix(Link *link, sd_ndisc_router *rt) { link_enter_failed(link); return r; } - - link->ndisc_messages++; + if (r > 0) + link->ndisc_messages++; return 0; } @@ -316,8 +316,8 @@ static int ndisc_router_process_route(Link *link, sd_ndisc_router *rt) { link_enter_failed(link); return r; } - - link->ndisc_messages++; + if (r > 0) + link->ndisc_messages++; return 0; } diff --git a/src/network/networkd-route.c b/src/network/networkd-route.c index 379077cb..56a9c82e 100644 --- a/src/network/networkd-route.c +++ b/src/network/networkd-route.c @@ -498,6 +498,11 @@ int route_configure( assert(IN_SET(route->family, AF_INET, AF_INET6)); assert(callback); + if (route->family == AF_INET6 && manager_sysctl_ipv6_enabled(link->manager) == 0) { + log_link_warning(link, "An IPv6 route is requested, but IPv6 is disabled by sysctl, ignoring."); + return 0; + } + if (route_get(link, route->family, &route->dst, route->dst_prefixlen, route->tos, route->priority, route->table, NULL) <= 0 && set_size(link->routes) >= routes_max()) return log_link_error_errno(link, SYNTHETIC_ERRNO(E2BIG), @@ -674,7 +679,7 @@ int route_configure( sd_event_source_unref(route->expire); route->expire = TAKE_PTR(expire); - return 0; + return 1; } int network_add_ipv4ll_route(Network *network) {