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]

Reply via email to