section in the README file for the recommended procedure.
[ISC-Bugs #29402]
+- When replying to a DHCPINFORM, the server will now include options specified
+ at the pool scope, provided the ciaddr field of the DHCPINFORM is populated.
+ Prior to this the server only evaluated options down to the subnet scope.
+ Thanks to Fernando Soto at BlueCat Networks for reporting the issue.
+ [ISC-Bugs #43219]
+
Changes since 4.3.0 (bug fixes)
- Tidy up several small tickets.
#if defined (DEBUG_INFORM_HOST)
int h_w_fixed_addr = 0;
#endif
+ struct lease* cip_lease = NULL;
/* The client should set ciaddr to its IP address, but apparently
it's common for clients not to do this, so we'll use their IP
maybe_return_agent_options(packet, options);
- /* Execute statements in scope starting with the subnet scope. */
+ /* If we have ciaddr, find its lease so we can find its pool. */
+ if (zeroed_ciaddr == ISC_FALSE) {
+ find_lease_by_ip_addr (&cip_lease, cip, MDL);
+ }
+
+ /* Execute statements starting at the pool scope if we can
+ * otherwise the subnet scope is a far as we can go. */
execute_statements_in_scope(NULL, packet, NULL, NULL,
packet->options, options,
- &global_scope, subnet->group,
+ &global_scope,
+ (cip_lease != NULL &&
+ cip_lease->pool != NULL ?
+ cip_lease->pool->group : subnet->group),
NULL, NULL);
+ if (cip_lease) {
+ lease_dereference (&cip_lease, MDL);
+ }
/* Execute statements in the class scopes. */
for (i = packet->class_count; i > 0; i--) {