]> git.ipfire.org Git - thirdparty/freeradius-server.git/commitdiff
update checks for Server-Id
authorethan-thompson <ethan.thompson@networkradius.com>
Wed, 25 Feb 2026 21:09:32 +0000 (16:09 -0500)
committerAlan T. DeKok <aland@freeradius.org>
Tue, 10 Mar 2026 12:00:54 +0000 (08:00 -0400)
As per RFC 9915 the server MUST discard any Solicit, Confirm,
or Rebind messages that include a Server Identifier option.

Signed-off-by: ethan-thompson <ethan.thompson@networkradius.com>
src/protocols/dhcpv6/base.c

index 454f916a13f218a2543dbefba003e696be79544d..1d5a58b67e0b4e5b288596357a9b25dddb635998 100644 (file)
@@ -453,9 +453,8 @@ static bool verify_from_client(uint8_t const *packet, size_t packet_len, fr_dhcp
                        return false;
                }
 
-               if (!fr_dhcpv6_option_find(options, end, FR_SERVER_ID)) {
-               fail_sid:
-                       fr_strerror_const("Packet does not contain a Server-Id option");
+               if (fr_dhcpv6_option_find(options, end, FR_SERVER_ID)) {
+                       fr_strerror_const("Packet contains a Server-Id option");
                        return false;
                }
                break;
@@ -467,7 +466,10 @@ static bool verify_from_client(uint8_t const *packet, size_t packet_len, fr_dhcp
                if (!fr_dhcpv6_option_find(options, end, FR_CLIENT_ID)) goto fail_cid;
 
                option = fr_dhcpv6_option_find(options, end, FR_SERVER_ID);
-               if (!option) goto fail_sid;
+               if (!option) {
+                       fr_strerror_const("Packet does not contain a Server-Id option");
+                       return false;
+               }
 
                if (!duid_match(option, packet_ctx)) {
                fail_match: