mirror of
https://gitlab.isc.org/isc-projects/dhcp
synced 2025-08-28 12:57:42 +00:00
Clarify error message when lease limit reached. [rt17010]
This commit is contained in:
parent
b1d3778ce8
commit
65cf86d7ab
2
RELNOTES
2
RELNOTES
@ -55,6 +55,8 @@ suggested fixes to <dhcp-users@isc.org>.
|
|||||||
|
|
||||||
Changes since 4.0.0b2
|
Changes since 4.0.0b2
|
||||||
|
|
||||||
|
- Clarified error message when lease limit exceeded
|
||||||
|
|
||||||
- The server will now include multiple IA_NA's and multiple IAADDRs within
|
- The server will now include multiple IA_NA's and multiple IAADDRs within
|
||||||
them, if advertised by the client. It still only seeks to allocate one
|
them, if advertised by the client. It still only seeks to allocate one
|
||||||
new address.
|
new address.
|
||||||
|
@ -634,7 +634,7 @@ void dhcprequest (packet, ms_nulltp, ip_lease)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* If the address the client asked for is ours, but it wasn't
|
/* If the address the client asked for is ours, but it wasn't
|
||||||
available for the client, NAK it. */
|
available for the client, NAK it. */
|
||||||
if (!lease && ours) {
|
if (!lease && ours) {
|
||||||
log_info ("%s: lease %s unavailable.", msgbuf, piaddr (cip));
|
log_info ("%s: lease %s unavailable.", msgbuf, piaddr (cip));
|
||||||
nak_lease (packet, &cip);
|
nak_lease (packet, &cip);
|
||||||
@ -669,8 +669,8 @@ void dhcprelease (packet, ms_nulltp)
|
|||||||
|
|
||||||
|
|
||||||
/* DHCPRELEASE must not specify address in requested-address
|
/* DHCPRELEASE must not specify address in requested-address
|
||||||
option, but old protocol specs weren't explicit about this,
|
option, but old protocol specs weren't explicit about this,
|
||||||
so let it go. */
|
so let it go. */
|
||||||
if ((oc = lookup_option (&dhcp_universe, packet -> options,
|
if ((oc = lookup_option (&dhcp_universe, packet -> options,
|
||||||
DHO_DHCP_REQUESTED_ADDRESS))) {
|
DHO_DHCP_REQUESTED_ADDRESS))) {
|
||||||
log_info ("DHCPRELEASE from %s specified requested-address.",
|
log_info ("DHCPRELEASE from %s specified requested-address.",
|
||||||
@ -1822,31 +1822,28 @@ void ack_lease (packet, lease, offer, when, msg, ms_nulltp, hp)
|
|||||||
if (i == packet -> class_count)
|
if (i == packet -> class_count)
|
||||||
unbill_class (lease, lease -> billing_class);
|
unbill_class (lease, lease -> billing_class);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* If we don't have an active billing, see if we need
|
/* If we don't have an active billing, see if we need
|
||||||
one, and if we do, try to do so. */
|
one, and if we do, try to do so. */
|
||||||
if (!lease -> billing_class) {
|
if (lease->billing_class == NULL) {
|
||||||
for (i = 0; i < packet -> class_count; i++) {
|
int bill = 0;
|
||||||
if (packet -> classes [i] -> lease_limit)
|
for (i = 0; i < packet->class_count; i++) {
|
||||||
break;
|
if (packet->classes[i]->lease_limit) {
|
||||||
}
|
bill++;
|
||||||
if (i != packet -> class_count) {
|
if (bill_class(lease,
|
||||||
for (i = 0; i < packet -> class_count; i++)
|
packet->classes[i]))
|
||||||
if ((packet ->
|
|
||||||
classes [i] -> lease_limit) &&
|
|
||||||
bill_class (lease,
|
|
||||||
packet -> classes [i]))
|
|
||||||
break;
|
break;
|
||||||
if (i == packet -> class_count) {
|
|
||||||
log_info ("%s: no available billing",
|
|
||||||
msg);
|
|
||||||
free_lease_state (state, MDL);
|
|
||||||
if (host)
|
|
||||||
host_dereference (&host, MDL);
|
|
||||||
/* XXX possibly not necessary: */
|
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if (bill != 0 && i == packet->class_count) {
|
||||||
|
log_info("%s: no available billing: lease "
|
||||||
|
"limit reached in all matching "
|
||||||
|
"classes", msg);
|
||||||
|
free_lease_state(state, MDL);
|
||||||
|
if (host)
|
||||||
|
host_dereference(&host, MDL);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
/* If this is an offer, undo the billing. We go
|
/* If this is an offer, undo the billing. We go
|
||||||
* through all the steps above to bill a class so
|
* through all the steps above to bill a class so
|
||||||
@ -2485,7 +2482,7 @@ void ack_lease (packet, lease, offer, when, msg, ms_nulltp, hp)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* Now, if appropriate, put in DHCP-specific options that
|
/* Now, if appropriate, put in DHCP-specific options that
|
||||||
override those. */
|
override those. */
|
||||||
if (state -> offer) {
|
if (state -> offer) {
|
||||||
i = DHO_DHCP_MESSAGE_TYPE;
|
i = DHO_DHCP_MESSAGE_TYPE;
|
||||||
oc = (struct option_cache *)0;
|
oc = (struct option_cache *)0;
|
||||||
@ -3749,7 +3746,7 @@ int mockup_lease (struct lease **lp, struct packet *packet,
|
|||||||
a lease at all. */
|
a lease at all. */
|
||||||
|
|
||||||
int allocate_lease (struct lease **lp, struct packet *packet,
|
int allocate_lease (struct lease **lp, struct packet *packet,
|
||||||
struct pool *pool, int *peer_has_leases)
|
struct pool *pool, int *peer_has_leases)
|
||||||
{
|
{
|
||||||
struct lease *lease = (struct lease *)0;
|
struct lease *lease = (struct lease *)0;
|
||||||
struct lease *candl = (struct lease *)0;
|
struct lease *candl = (struct lease *)0;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user