work on other platforms. Please report any problems and suggested fixes to
<dhcp-users@isc.org>.
+
Changes since 4.2.0b1
- Prohibit including lease time information in a response to a DHCP INFORM.
also didn't do much as we exited afterwards anyway. Now we simply log
the error and exit. [ISC-Bugs #21093]
+- A bug was fixed that could cause the DHCPv6 server to advertise/assign a
+ previously allocated (active) lease to a client that has changed subnets,
+ despite being on different shared networks. Dynamic prefixes specifically
+ allocated in shared networks also now are not offered if the client has
+ moved. [ISC-Bugs #21152]
+
Changes since 4.2.0a2
- Update the fsync code to work with the changes to the DDNS code. It now
if (reply->old_ia != NULL) {
for (i = 0 ; i < reply->old_ia->num_iasubopt ; i++) {
+ struct shared_network *candidate_shared;
+
lease = reply->old_ia->iasubopt[i];
+ candidate_shared = lease->ipv6_pool->shared_network;
- best_lease = lease_compare(lease, best_lease);
+ /*
+ * Look for the best lease on the client's shared
+ * network.
+ */
+ if (candidate_shared == reply->shared) {
+ best_lease = lease_compare(lease, best_lease);
+ }
}
}
if (reply->old_ia != NULL) {
for (i = 0 ; i < reply->old_ia->num_iasubopt ; i++) {
+ struct shared_network *candidate_shared;
+
prefix = reply->old_ia->iasubopt[i];
+ candidate_shared = prefix->ipv6_pool->shared_network;
- best_prefix = prefix_compare(reply, prefix,
- best_prefix);
+ /*
+ * Consider this prefix if it is in a global pool or
+ * if it is scoped in a pool under the client's shared
+ * network.
+ */
+ if (candidate_shared == NULL ||
+ candidate_shared == reply->shared) {
+ best_prefix = prefix_compare(reply, prefix,
+ best_prefix);
+ }
}
}