diff --git a/src/network/networkd-address.c b/src/network/networkd-address.c index 542298c8c3..41d75bdf84 100644 --- a/src/network/networkd-address.c +++ b/src/network/networkd-address.c @@ -1496,7 +1496,7 @@ static int address_acquire(Link *link, const Address *address, union in_addr_uni assert(ret); r = address_acquire_from_dhcp_server_leases_file(link, address, ret); - if (r != -ENOENT) + if (!IN_SET(r, -ENOENT, -ENXIO, -EINVAL)) return r; r = address_pool_acquire(link->manager, address->family, address->prefixlen, &a); diff --git a/src/network/networkd-dhcp-server.c b/src/network/networkd-dhcp-server.c index 44b8aaa977..b1953545ed 100644 --- a/src/network/networkd-dhcp-server.c +++ b/src/network/networkd-dhcp-server.c @@ -197,8 +197,14 @@ int address_acquire_from_dhcp_server_leases_file(Link *link, const Address *addr lease_file, &a, &prefixlen); - if (r < 0) + if (r == -ENOENT) return r; + if (r < 0) + return log_warning_errno(r, "Failed to load lease file %s: %s", + lease_file, + r == -ENXIO ? "expected JSON content not found" : + r == -EINVAL ? "invalid JSON" : + STRERROR(r)); if (prefixlen != address->prefixlen) return -ENOENT;