#13966: DHCP Option start sequence
Some clients require Option 53 first and don't accept options presented in numerical order the way they are in Kea 1.5.0. ISC DHCP sends option 53 first and so this has become an established, although non-standard, expectation.
After discussion in the Kea support meeting, everyone thinks we should just change the default behavior in the base Kea code to support this (non-standard) client requirement. Thomas has written a patch for this (below) which was shared with the support customer requesting this. We should review, merge and test this and include the change in the next Kea release.
diff --git a/src/lib/dhcp/libdhcp++.cc b/src/lib/dhcp/libdhcp++.cc index ced705dd29..a9f956eda8 100644 --- a/src/lib/dhcp/libdhcp++.cc +++ b/src/lib/dhcp/libdhcp++.cc @@ -790,11 +790,19 @@ LibDHCP::packOptions4(isc::util::OutputBuffer& buf, const OptionCollection& options) { OptionPtr agent; OptionPtr end; +
- auto x = options.find(DHO_DHCP_MESSAGE_TYPE);
- if (x != options.end()) {
- x->second->pack(buf);
- }
for (OptionCollection::const_iterator it = options.begin(); it != options.end(); ++it) {
- // RAI and END options must be last.
- // TYPE is already done, RAI and END options must be last. switch (it->first) {
- case DHO_DHCP_MESSAGE_TYPE:
- break; case DHO_DHCP_AGENT_OPTIONS: agent = it->second; break;