diff --git a/doc/sphinx/arm/dhcp4-srv.rst b/doc/sphinx/arm/dhcp4-srv.rst index d90ea25083..aff1d5c88f 100644 --- a/doc/sphinx/arm/dhcp4-srv.rst +++ b/doc/sphinx/arm/dhcp4-srv.rst @@ -6769,7 +6769,9 @@ The following standards are currently supported in Kea: - *Server Identifier Override sub-option for the Relay Agent Option*, `RFC 5107 `__: The server identifier override - sub-option is supported. + sub-option is supported. The implementation is not complete according to the + RFC, because the server does not store the RAI, but the functionality handles + expected use cases. Known RFC Violations -------------------- diff --git a/src/bin/dhcp4/dhcp4_srv.cc b/src/bin/dhcp4/dhcp4_srv.cc index 9c291639c0..4c2693adc1 100644 --- a/src/bin/dhcp4/dhcp4_srv.cc +++ b/src/bin/dhcp4/dhcp4_srv.cc @@ -3695,6 +3695,8 @@ Dhcpv4Srv::acceptServerId(const Pkt4Ptr& query) const { return (false); } + // According to RFC5107, the RAI_OPTION_SERVER_ID_OVERRIDE option if + // present, should match DHO_DHCP_SERVER_IDENTIFIER option. OptionPtr rai_option = query->getOption(DHO_DHCP_AGENT_OPTIONS); if (rai_option) { OptionPtr rai_suboption = rai_option->getOption(RAI_OPTION_SERVER_ID_OVERRIDE);