<div dir="ltr"><div class="gmail_default" style="font-family:tahoma,sans-serif;font-size:small">You can make global reservations:<br><a href="https://kea.readthedocs.io/en/stable/arm/hooks.html#std-isccmd-reservation-add">https://kea.readthedocs.io/en/stable/arm/hooks.html#std-isccmd-reservation-add</a><br></div><div class="gmail_default" style="font-family:tahoma,sans-serif;font-size:small">Quote:<br>"The <code class="gmail-docutils gmail-literal gmail-notranslate" style="font-family:monospace"><span class="gmail-pre" style="font-family:monospace">subnet-id</span></code> 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."<br></div><div class="gmail_default" style="font-family:tahoma,sans-serif;font-size:small">It is important to enable global reservations in config:<br></div><div class="gmail_default" style="font-family:tahoma,sans-serif;font-size:small">This is what works for me:<br>    "reservations-global": true,<br>    "reservations-in-subnet": true,<br><br></div><div class="gmail_default" style="font-family:tahoma,sans-serif;font-size:small">If I'm not mistaken "reservations-global" is disabled by default:<br><a href="https://kea.readthedocs.io/en/stable/arm/dhcp4-srv.html#global-reservations-in-dhcpv4">https://kea.readthedocs.io/en/stable/arm/dhcp4-srv.html#global-reservations-in-dhcpv4</a><br><br></div><div class="gmail_default" style="font-family:tahoma,sans-serif;font-size:small">Either you add record to host table manually (remembering how mac is encoded in db) or with libdhcp_host_cmds.so  just call API:<br><pre style="font-family:monospace"><span class="gmail-p" style="font-family:monospace">{</span>
<span class="gmail-w" style="font-family:monospace">    </span><span class="gmail-nt" style="font-family:monospace">"command"</span><span class="gmail-p" style="font-family:monospace">:</span><span class="gmail-w" style="font-family:monospace"> </span><span class="gmail-s2" style="font-family:monospace">"reservation-add"</span><span class="gmail-p" style="font-family:monospace">,</span>
<span class="gmail-w" style="font-family:monospace">    </span><span class="gmail-nt" style="font-family:monospace">"arguments"</span><span class="gmail-p" style="font-family:monospace">:</span><span class="gmail-w" style="font-family:monospace"> </span><span class="gmail-p" style="font-family:monospace">{</span>
<span class="gmail-w" style="font-family:monospace">        </span><span class="gmail-nt" style="font-family:monospace">"reservation"</span><span class="gmail-p" style="font-family:monospace">:</span><span class="gmail-w" style="font-family:monospace"> </span><span class="gmail-p" style="font-family:monospace">{</span>
<span class="gmail-w" style="font-family:monospace">            </span><span class="gmail-nt" style="font-family:monospace">"subnet-id"</span><span class="gmail-p" style="font-family:monospace">:</span><span class="gmail-w" style="font-family:monospace"> 0</span><span class="gmail-p" style="font-family:monospace">,</span>
<span class="gmail-w" style="font-family:monospace">            </span><span class="gmail-nt" style="font-family:monospace">"hw-address"</span><span class="gmail-p" style="font-family:monospace">:</span><span class="gmail-w" style="font-family:monospace"> </span><span class="gmail-s2" style="font-family:monospace">"1a:1b:1c:1d:1e:1f",<br>            </span><span class="gmail-w" style="font-family:monospace">"boot-file-name": </span>"modemcfg.bin"
<span class="gmail-w" style="font-family:monospace">        </span><span class="gmail-p" style="font-family:monospace">}</span>
<span class="gmail-w" style="font-family:monospace">    </span><span class="gmail-p" style="font-family:monospace">}</span>
<span class="gmail-p" style="font-family:monospace">}<br></span></pre><pre style="font-family:monospace">Regards,<br></pre><pre style="font-family:monospace">Marcin</pre></div></div><br><div class="gmail_quote gmail_quote_container"><div dir="ltr" class="gmail_attr">wt., 9 gru 2025 o 18:49 Skyler Blumer <<a href="mailto:skyler.blumer@zitomedia.com">skyler.blumer@zitomedia.com</a>> napisał(a):<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><u></u>

  
    
  
  <div>
    <p>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.</p>
    <div>On 12/8/25 1:55 PM, Marcin Jurczuk
      wrote:<br>
    </div>
    <blockquote type="cite">
      
      <div dir="auto">Hi,</div>
      <div dir="auto">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. </div>
      <div dir="auto">As of today flex option only sets “real” dhcp
        options and can’t set field in dhcp header. </div>
      <div dir="auto">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. </div>
      <div dir="auto"><br>
      </div>
      <div dir="auto">Regards </div>
      <div><br>
        <div class="gmail_quote">
          <div dir="ltr" class="gmail_attr">On Mon, Dec 8, 2025 at 19:50
            Skyler Blumer <<a href="mailto:skyler.blumer@zitomedia.com" target="_blank">skyler.blumer@zitomedia.com</a>>
            wrote:<br>
          </div>
          <blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">I'm
            Currently testing with kea 3.0. My end goal is to
            dynamically set <br>
            the boot-file-name (legacy BOOTP FNAME field not DHCP option
            67) to the <br>
            CHADDR sent in the request.<br>
            <br>
            Using the below it will set option 67 to
            cm/<CHADDR>.bin<br>
            <br>
                     {   "library": "libdhcp_flex_option.so",<br>
            <br>
                             "parameters": {<br>
                                 "options": [<br>
                                     {<br>
                                         "name": "boot-file-name",<br>
                                         "supersede":
            "lcase(concat('cm/', <br>
            concat(relay4[2].hex, '.bin')))",<br>
                                         "csv-format": false,<br>
                                         "client-class": "docsis"<br>
                                     }<br>
            <br>
            However when I try to do this in a subnet or class the FNAME
            is set to a <br>
            string literal "'cm/', concat(relay4[2].hex, '.bin'"<br>
            <br>
            "boot-file-name": "lcase(concat('cm/', concat(relay4[2].hex,
            '.bin')))"<br>
            <br>
            Is there a way to do this for the legacy FNAME field?<br>
            <br>
            -- <br>
            ISC funds the development of this software with paid support
            subscriptions. Contact us at <a href="https://www.isc.org/contact/" rel="noreferrer" target="_blank">https://www.isc.org/contact/</a>
            for more information.<br>
            <br>
            To unsubscribe visit <a href="https://lists.isc.org/mailman/listinfo/kea-users.Kea-users@lists.isc.org" rel="noreferrer" target="_blank">https://lists.isc.org/mailman/listinfo/kea-users.<br>
              Kea-users@lists.isc.org</a><br>
          </blockquote>
        </div>
      </div>
      <br>
      <fieldset></fieldset>
    </blockquote>
  </div>

</blockquote></div>