A client class reservation in FreeRADIUS only applies to the first exchange if there is also an address reservation for the same host
If you have both an address reservation and a client class reservation in RADIUS, like so:
00:03:00:01:08:00:27:b0:c1:42 Cleartext-password := "08:00:27:b0:c1:42"
Framed-IP-Address = "192.168.52.52",
Framed-IPv6-Address = "2001:db8:50::52",
Framed-Pool = "gold",
Framed-IPv6-Pool = "gold"
The client class is only assigned to the packet from the first exchange, but not to the packet from the second exchange, like so:
DEBUG [kea-dhcp6.packets] DHCP6_QUERY_DATA duid=[00:03:00:01:08:00:27:b0:c1:42], tid=0xf9cf5f, packet details: localAddr=[ff02::1:2]:0 remoteAddr=[fe80::3442:f5d2:3c93:374c]:546
msgtype=1(SOLICIT), transid=0xf9cf5f
--
DEBUG [kea-dhcp6.dhcp6] DHCP6_CLASS_ASSIGNED duid=[00:03:00:01:08:00:27:b0:c1:42], tid=0xf9cf5f: client packet has been assigned to the following class(es): ALL, gold, KNOWN
--
DEBUG [kea-dhcp6.packets] DHCP6_RESPONSE_DATA responding with packet type 2 data is localAddr=[ff02::1:2]:547 remoteAddr=[fe80::3442:f5d2:3c93:374c]:546
msgtype=2(ADVERTISE), transid=0xf9cf5f
--
DEBUG [kea-dhcp6.packets] DHCP6_QUERY_DATA duid=[00:03:00:01:08:00:27:b0:c1:42], tid=0xf9cf5f, packet details: localAddr=[ff02::1:2]:0 remoteAddr=[fe80::3442:f5d2:3c93:374c]:546
msgtype=3(REQUEST), transid=0xf9cf5f
--
DEBUG [kea-dhcp6.dhcp6] DHCP6_CLASS_ASSIGNED duid=[00:03:00:01:08:00:27:b0:c1:42], tid=0xf9cf5f: client packet has been assigned to the following class(es): ALL, KNOWN
--
DEBUG [kea-dhcp6.packets] DHCP6_RESPONSE_DATA responding with packet type 7 data is localAddr=[ff02::1:2]:547 remoteAddr=[fe80::3442:f5d2:3c93:374c]:546
msgtype=7(REPLY), transid=0xf9cf5f
If the client class would have also been assigned in the second exchange, it could have potentially resulted in a different lease, depending on Kea configuration.
This behavior is exhibited with v4 too.
See #2761 (comment 357250) for slightly more details.