You can make global reservations: https://kea.readthedocs.io/en/stable/arm/hooks.html#std-isccmd-reservation-add Quote: "The subnet-id is mandatory. Use a value of zero (0) to add a global reservation, or the ID of the subnet to which the reservation should be added." It is important to enable global reservations in config: This is what works for me: "reservations-global": true, "reservations-in-subnet": true,
If I'm not mistaken "reservations-global" is disabled by default: https://kea.readthedocs.io/en/stable/arm/dhcp4-srv.html#global-reservations-in-dhcpv4 Either you add record to host table manually (remembering how mac is encoded in db) or with libdhcp_host_cmds.so just call API: { "command": "reservation-add", "arguments": { "reservation": { "subnet-id": 0, "hw-address": "1a:1b:1c:1d:1e:1f", "boot-file-name": "modemcfg.bin" } }} Regards, Marcin wt., 9 gru 2025 o 18:49 Skyler Blumer <[email protected]> napisał(a): > Are you saying that you're making static host reservations in a DB, and > are they global reservations? From what I'm seeing you can only make > reservations at the subnet level in 3.0. > On 12/8/25 1:55 PM, Marcin Jurczuk wrote: > > Hi, > Please look into historical thread past month from myself. Been there done > that. I’ve tried for exactly the same reason for cable modem provisioning. > As of today flex option only sets “real” dhcp options and can’t set field > in dhcp header. > I’ve end up with cross db syncing by adding records to hosts table with db > host backend. This table has column named dhcp4_boot_filename which is > exactly that field. Modems work with that. > > Regards > > On Mon, Dec 8, 2025 at 19:50 Skyler Blumer <[email protected]> > wrote: > >> I'm Currently testing with kea 3.0. My end goal is to dynamically set >> the boot-file-name (legacy BOOTP FNAME field not DHCP option 67) to the >> CHADDR sent in the request. >> >> Using the below it will set option 67 to cm/<CHADDR>.bin >> >> { "library": "libdhcp_flex_option.so", >> >> "parameters": { >> "options": [ >> { >> "name": "boot-file-name", >> "supersede": "lcase(concat('cm/', >> concat(relay4[2].hex, '.bin')))", >> "csv-format": false, >> "client-class": "docsis" >> } >> >> However when I try to do this in a subnet or class the FNAME is set to a >> string literal "'cm/', concat(relay4[2].hex, '.bin'" >> >> "boot-file-name": "lcase(concat('cm/', concat(relay4[2].hex, '.bin')))" >> >> Is there a way to do this for the legacy FNAME field? >> >> -- >> ISC funds the development of this software with paid support >> subscriptions. Contact us at https://www.isc.org/contact/ for more >> information. >> >> To unsubscribe visit https://lists.isc.org/mailman/listinfo/kea-users. >> [email protected] >> <https://lists.isc.org/mailman/listinfo/[email protected]> >> > >
-- ISC funds the development of this software with paid support subscriptions. Contact us at https://www.isc.org/contact/ for more information. To unsubscribe visit https://lists.isc.org/mailman/listinfo/kea-users. [email protected]
