On Mon, 24.11.14 12:01, Gavin Li (gavi...@thegavinli.com) wrote: > 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 (::).
Patch is line-broken. It's hard to review it and we cannot apply it this way. Please resend non-line-broken version. If your mailer doesn't allow that, just attach the git-format-patch formatted patch to your email. > --- > src/network/networkd-route.c | 32 ++++++++++++++++++-------------- > 1 file changed, 18 insertions(+), 14 deletions(-) > > diff --git a/src/network/networkd-route.c b/src/network/networkd-route.c > index 10d8cd9..82c9e00 100644 > --- a/src/network/networkd-route.c > +++ b/src/network/networkd-route.c > @@ -118,13 +118,15 @@ int route_drop(Route *route, Link *link, > return r; > } > > - 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) > - r = sd_rtnl_message_append_in6_addr(req, RTA_GATEWAY, > &route->in_addr.in6); > - if (r < 0) { > - log_error("Could not append RTA_GATEWAY attribute: > %s", strerror(-r)); > - 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) > + r = sd_rtnl_message_append_in6_addr(req, > RTA_GATEWAY, &route->in_addr.in6); > + if (r < 0) { > + log_error("Could not append RTA_GATEWAY > attribute: %s", strerror(-r)); > + return r; > + } > } > > if (route->dst_prefixlen) { > @@ -203,13 +205,15 @@ int route_configure(Route *route, Link *link, > return r; > } > > - 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) > - r = sd_rtnl_message_append_in6_addr(req, RTA_GATEWAY, > &route->in_addr.in6); > - if (r < 0) { > - log_error("Could not append RTA_GATEWAY attribute: > %s", strerror(-r)); > - 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) > + r = sd_rtnl_message_append_in6_addr(req, > RTA_GATEWAY, &route->in_addr.in6); > + if (r < 0) { > + log_error("Could not append RTA_GATEWAY > attribute: %s", strerror(-r)); > + return r; > + } > } > > if (route->dst_prefixlen) { > -- > 2.1.3 > _______________________________________________ > systemd-devel mailing list > systemd-devel@lists.freedesktop.org > http://lists.freedesktop.org/mailman/listinfo/systemd-devel Lennart -- Lennart Poettering, Red Hat _______________________________________________ systemd-devel mailing list systemd-devel@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/systemd-devel