From: Susant Sahani Date: Thu, 11 May 2017 04:42:54 +0000 (+0530) Subject: networkd: route replace parse prefix with generic in_addr_prefix_from_string X-Git-Tag: v234~215^2~1 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=36423ff433de5d349791aee7586ebf000e74a49b;p=platform%2Fupstream%2Fsystemd.git networkd: route replace parse prefix with generic in_addr_prefix_from_string --- diff --git a/src/network/networkd-route.c b/src/network/networkd-route.c index c5ee08a..a1c60c4 100644 --- a/src/network/networkd-route.c +++ b/src/network/networkd-route.c @@ -772,45 +772,18 @@ int config_parse_destination(const char *unit, if (r < 0) return r; - /* Destination|Source=address/prefixlen */ - - /* address */ - e = strchr(rvalue, '/'); - if (e) - address = strndupa(rvalue, e - rvalue); - else - address = rvalue; - - r = in_addr_from_string_auto(address, &f, &buffer); + r = in_addr_prefix_from_string(rvalue, AF_INET, &buffer, &prefixlen); if (r < 0) { - log_syntax(unit, LOG_ERR, filename, line, r, "Destination is invalid, ignoring assignment: %s", address); - return 0; - } - - if (f != AF_INET && f != AF_INET6) { - log_syntax(unit, LOG_ERR, filename, line, 0, "Unknown address family, ignoring assignment: %s", address); - return 0; - } - - /* prefixlen */ - if (e) { - r = safe_atou8(e + 1, &prefixlen); + r = in_addr_prefix_from_string(rvalue, AF_INET6, &buffer, &prefixlen); if (r < 0) { - log_syntax(unit, LOG_ERR, filename, line, r, "Route destination prefix length is invalid, ignoring assignment: %s", e + 1); + log_syntax(unit, LOG_ERR, filename, line, r, "Route source or destination prefix is invalid, ignoring assignment: %s", rvalue); return 0; } - } else { - switch (f) { - case AF_INET: - prefixlen = 32; - break; - case AF_INET6: - prefixlen = 128; - break; - } - } - n->family = f; + n->family = AF_INET6; + } else + n->family = AF_INET; + if (streq(lvalue, "Destination")) { n->dst = buffer; n->dst_prefixlen = prefixlen;