mirror of
https://gitlab.isc.org/isc-projects/dhcp
synced 2025-09-04 00:05:30 +00:00
- Pass packet to release_lease (Brian Murrell).
- Don't release leases in one-lease-per-client code if they've already expired (Shaun Clowes).
This commit is contained in:
@@ -22,7 +22,7 @@
|
|||||||
|
|
||||||
#ifndef lint
|
#ifndef lint
|
||||||
static char copyright[] =
|
static char copyright[] =
|
||||||
"$Id: dhcp.c,v 1.111 1999/10/05 00:04:43 mellon Exp $ Copyright (c) 1995, 1996, 1997, 1998, 1999 The Internet Software Consortium. All rights reserved.\n";
|
"$Id: dhcp.c,v 1.112 1999/10/05 02:46:17 mellon Exp $ Copyright (c) 1995, 1996, 1997, 1998, 1999 The Internet Software Consortium. All rights reserved.\n";
|
||||||
#endif /* not lint */
|
#endif /* not lint */
|
||||||
|
|
||||||
#include "dhcpd.h"
|
#include "dhcpd.h"
|
||||||
@@ -296,7 +296,7 @@ void dhcprelease (packet)
|
|||||||
|
|
||||||
/* If we found a lease, release it. */
|
/* If we found a lease, release it. */
|
||||||
if (lease)
|
if (lease)
|
||||||
release_lease (lease);
|
release_lease (lease, packet);
|
||||||
}
|
}
|
||||||
|
|
||||||
void dhcpdecline (packet)
|
void dhcpdecline (packet)
|
||||||
@@ -928,12 +928,13 @@ void ack_lease (packet, lease, offer, when, msg)
|
|||||||
/* Don't release expired leases, and don't
|
/* Don't release expired leases, and don't
|
||||||
release the lease we're going to assign. */
|
release the lease we're going to assign. */
|
||||||
while (seek) {
|
while (seek) {
|
||||||
if (seek != lease)
|
if (seek != lease &&
|
||||||
|
seek -> ends > cur_time)
|
||||||
break;
|
break;
|
||||||
seek = lease -> n_uid;
|
seek = lease -> n_uid;
|
||||||
}
|
}
|
||||||
if (seek) {
|
if (seek) {
|
||||||
release_lease (seek);
|
release_lease (seek, packet);
|
||||||
}
|
}
|
||||||
} while (seek);
|
} while (seek);
|
||||||
} else {
|
} else {
|
||||||
@@ -942,12 +943,13 @@ void ack_lease (packet, lease, offer, when, msg)
|
|||||||
(lease -> hardware_addr.haddr,
|
(lease -> hardware_addr.haddr,
|
||||||
lease -> hardware_addr.hlen));
|
lease -> hardware_addr.hlen));
|
||||||
while (seek) {
|
while (seek) {
|
||||||
if (seek != lease)
|
if (seek != lease &&
|
||||||
|
seek -> ends > cur_time)
|
||||||
break;
|
break;
|
||||||
seek = lease -> n_hw;
|
seek = lease -> n_hw;
|
||||||
}
|
}
|
||||||
if (seek) {
|
if (seek) {
|
||||||
release_lease (seek);
|
release_lease (seek, packet);
|
||||||
}
|
}
|
||||||
} while (seek);
|
} while (seek);
|
||||||
}
|
}
|
||||||
@@ -2045,7 +2047,7 @@ struct lease *find_lease (packet, share, ours)
|
|||||||
#endif
|
#endif
|
||||||
next = uid_lease -> n_uid;
|
next = uid_lease -> n_uid;
|
||||||
if (!packet -> raw -> ciaddr.s_addr)
|
if (!packet -> raw -> ciaddr.s_addr)
|
||||||
release_lease (uid_lease);
|
release_lease (uid_lease, packet);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
@@ -2097,7 +2099,7 @@ struct lease *find_lease (packet, share, ours)
|
|||||||
#endif
|
#endif
|
||||||
next = hw_lease -> n_hw;
|
next = hw_lease -> n_hw;
|
||||||
if (!packet -> raw -> ciaddr.s_addr)
|
if (!packet -> raw -> ciaddr.s_addr)
|
||||||
release_lease (hw_lease);
|
release_lease (hw_lease, packet);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
@@ -2237,7 +2239,7 @@ struct lease *find_lease (packet, share, ours)
|
|||||||
(ip_lease -> pool -> permit_list &&
|
(ip_lease -> pool -> permit_list &&
|
||||||
!permitted (packet, ip_lease -> pool -> permit_list)))) {
|
!permitted (packet, ip_lease -> pool -> permit_list)))) {
|
||||||
if (!packet -> raw -> ciaddr.s_addr)
|
if (!packet -> raw -> ciaddr.s_addr)
|
||||||
release_lease (ip_lease);
|
release_lease (ip_lease, packet);
|
||||||
ip_lease = (struct lease *)0;
|
ip_lease = (struct lease *)0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -2293,7 +2295,7 @@ struct lease *find_lease (packet, share, ours)
|
|||||||
if (ip_lease) {
|
if (ip_lease) {
|
||||||
if (lease) {
|
if (lease) {
|
||||||
if (!packet -> raw -> ciaddr.s_addr)
|
if (!packet -> raw -> ciaddr.s_addr)
|
||||||
release_lease (ip_lease);
|
release_lease (ip_lease, packet);
|
||||||
#if defined (DEBUG_FIND_LEASE)
|
#if defined (DEBUG_FIND_LEASE)
|
||||||
log_info ("not choosing requested address (!).");
|
log_info ("not choosing requested address (!).");
|
||||||
#endif
|
#endif
|
||||||
|
Reference in New Issue
Block a user