diff options
author | Yu Watanabe <watanabe.yu+github@gmail.com> | 2022-01-28 02:25:37 +0900 |
---|---|---|
committer | Yu Watanabe <watanabe.yu+github@gmail.com> | 2022-02-01 11:56:22 +0900 |
commit | bd1a3eb65b9e308028c18e1ed7ffde474a3b1244 (patch) | |
tree | 5a83ecb5b3b4cae6c0f2dbc45e8ab35237a1c888 /src/libsystemd-network/sd-dhcp-server.c | |
parent | 7e98fe05a0b9cdfdad326f34189cd37257d9d4e4 (diff) | |
download | systemd-bd1a3eb65b9e308028c18e1ed7ffde474a3b1244.tar.gz |
sd-dhcp-server: do not assign address reserved for static leases to non-matching clients
This fix the root cause of the issue #22253.
Diffstat (limited to 'src/libsystemd-network/sd-dhcp-server.c')
-rw-r--r-- | src/libsystemd-network/sd-dhcp-server.c | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/src/libsystemd-network/sd-dhcp-server.c b/src/libsystemd-network/sd-dhcp-server.c index 2f429020bb..904298ebb0 100644 --- a/src/libsystemd-network/sd-dhcp-server.c +++ b/src/libsystemd-network/sd-dhcp-server.c @@ -801,6 +801,9 @@ static bool address_is_in_pool(sd_dhcp_server *server, be32_t address) { be32toh(address) >= (be32toh(server->subnet) | (server->pool_offset + server->pool_size))) return false; + if (hashmap_contains(server->static_leases_by_address, UINT32_TO_PTR(address))) + return false; + return true; } |