2
0
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:
Evan Hunt 2007-11-02 22:09:02 +00:00
parent b1d3778ce8
commit 65cf86d7ab
2 changed files with 24 additions and 25 deletions

View File

@ -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.

View File

@ -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.",
@ -1825,28 +1825,25 @@ void ack_lease (packet, lease, offer, when, msg, ms_nulltp, hp)
/* 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;