From a2a85a22b3c82386633ab898012c4b249706d535 Mon Sep 17 00:00:00 2001 From: Tom Gundersen Date: Mon, 27 Oct 2014 17:39:18 +0100 Subject: [PATCH] networkd: network - if no prefixlength is given, try to deduce one from the address class In case of a class E or F address, ignore the address. --- src/network/networkd-address.c | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/src/network/networkd-address.c b/src/network/networkd-address.c index e595cd6e9..ce85109d2 100644 --- a/src/network/networkd-address.c +++ b/src/network/networkd-address.c @@ -482,7 +482,7 @@ int config_parse_address(const char *unit, r = safe_atou(e + 1, &i); if (r < 0) { log_syntax(unit, LOG_ERR, filename, line, EINVAL, - "Interface prefix length is invalid, ignoring assignment: %s", e + 1); + "Prefix length is invalid, ignoring assignment: %s", e + 1); return 0; } @@ -499,6 +499,15 @@ int config_parse_address(const char *unit, return 0; } + if (!e && f == AF_INET) { + r = in_addr_default_prefixlen(&buffer.in, &n->prefixlen); + if (r < 0) { + log_syntax(unit, LOG_ERR, filename, line, EINVAL, + "Prefix length not specified, and a default one can not be deduced for '%s', ignoring assignment", address); + return 0; + } + } + if (n->family != AF_UNSPEC && f != n->family) { log_syntax(unit, LOG_ERR, filename, line, EINVAL, "Address is incompatible, ignoring assignment: %s", address); -- 2.30.2