udhcpd: if a lease from lease file coincides with a static one, ignore it
function old new delta read_leases 269 328 +59 Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
This commit is contained in:
parent
2bba9ad67a
commit
298fabaefc
@ -189,12 +189,24 @@ void FAST_FUNC read_leases(const char *file)
|
|||||||
goto ret;
|
goto ret;
|
||||||
|
|
||||||
while (full_read(fd, &lease, sizeof(lease)) == sizeof(lease)) {
|
while (full_read(fd, &lease, sizeof(lease)) == sizeof(lease)) {
|
||||||
//FIXME: what if it matches some static lease?
|
|
||||||
uint32_t y = ntohl(lease.lease_nip);
|
uint32_t y = ntohl(lease.lease_nip);
|
||||||
if (y >= server_config.start_ip && y <= server_config.end_ip) {
|
if (y >= server_config.start_ip && y <= server_config.end_ip) {
|
||||||
signed_leasetime_t expires = ntohl(lease.expires) - (signed_leasetime_t)time_passed;
|
signed_leasetime_t expires = ntohl(lease.expires) - (signed_leasetime_t)time_passed;
|
||||||
|
uint32_t static_nip;
|
||||||
|
|
||||||
if (expires <= 0)
|
if (expires <= 0)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
|
/* Check if there is a different static lease for this IP or MAC */
|
||||||
|
static_nip = get_static_nip_by_mac(server_config.static_leases, lease.lease_mac);
|
||||||
|
if (static_nip) {
|
||||||
|
/* NB: we do not add lease even if static_nip == lease.lease_nip.
|
||||||
|
*/
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
if (is_nip_reserved(server_config.static_leases, lease.lease_nip))
|
||||||
|
continue;
|
||||||
|
|
||||||
/* NB: add_lease takes "relative time", IOW,
|
/* NB: add_lease takes "relative time", IOW,
|
||||||
* lease duration, not lease deadline. */
|
* lease duration, not lease deadline. */
|
||||||
if (add_lease(lease.lease_mac, lease.lease_nip,
|
if (add_lease(lease.lease_mac, lease.lease_nip,
|
||||||
|
Loading…
Reference in New Issue
Block a user