assert(server);
assert(req);
- log_dhcp_server(server, "DECLINE (0x%x): %s", be32toh(req->message->xid), strna(error_message));
+ if (req->server_address != server->address)
+ return 0; /* The message is not for us. Let's silently ignore the packet. */
- /* TODO: make sure we don't offer this address again */
+ /* TODO: make sure we don't offer this address again for a while. */
+ log_dhcp_server(server, "DECLINE (0x%x): %s", be32toh(req->message->xid), strna(error_message));
return 0;
}
assert(server);
assert(req);
- log_dhcp_server(server, "RELEASE (0x%x)",
- be32toh(req->message->xid));
+ if (req->server_address != server->address)
+ return 0; /* The message is not for us. Let's silently ignore the packet. */
sd_dhcp_server_lease *existing_lease = hashmap_get(server->bound_leases_by_client_id, &req->client_id);
if (!existing_lease)
return 0;
if (existing_lease->address != req->message->ciaddr)
- return 0;
+ return -EBADMSG;
sd_dhcp_server_lease_unref(existing_lease);
dhcp_server_on_lease_change(server);
+ log_dhcp_server(server, "RELEASE (0x%x)", be32toh(req->message->xid));
return 0;
}