Hi Darren,

Thanks for the information. The option class-tagging looks like a great 
feature, unfortunately I need to use the stable release for now. I'm trying to 
recreate what you explained in your first paragraph and I'm having trouble 
finding a way to make it work. I have generic client classes setup for legacy 
and efi:
"client-classes": [
    {
        "name": "ipxe_legacy",
        "test": "substring(option[60].hex,0,20) == 'PXEClient:Arch:00000'",
        "boot-file-name": "youshallnotpass"
    },
    {
        "name": "ipxe_efi",
        "test": "substring(option[60].hex,0,20) == 'PXEClient:Arch:00007'",
        "boot-file-name": "youshallnotpass"
    },
],

Then I'm using the flex option hook to dynamically set the boot-file-name 
option. This is the part where I'm struggling. I want to restrict this to a 
specific subnet so I created a custom option but I later realized this hook 
only works for the query packet and not the outgoing packet.

{
    "library": "/usr/lib/x86_64-linux-gnu/kea/hooks/libdhcp_flex_option.so",
    "parameters": {
        "options": [
            {
                "name": "boot-file-name",
                "add": "ifelse((option[244].text == '1') and 
(member('ipxe_legacy')),'ipxe/netboot.xyz.kpxe','')"
            },
            {
                "name": "boot-file-name",
                "add": "ifelse((option[244].text == '1') and 
(member('ipxe_efi')),'ipxe/netboot.xyz.efi','')"
            }
        ]
    }
}

Subnet:

"subnet4": [
    {
        "id": 1,
        "subnet": "10.10.10.0/24",
        "calculate-tee-times": true,
        "valid-lifetime": 60,
        "ddns-qualifying-suffix": "kea-dev.com",
        "option-data": [
            {
                "name": "subnet-id",
                "code": 244,
                "data": "1",
                "always-send": true
            }
        ],
    }
]

Do you have any ideas to be able to dynamically set the boot-file-name to a 
different value per-subnet?

Thanks,
Isaac
________________________________
From: Kea-users <kea-users-boun...@lists.isc.org> on behalf of Darren Ankney 
<darren.ank...@gmail.com>
Sent: Thursday, December 5, 2024 2:35 PM
To: Kea user's list <kea-users@lists.isc.org>
Subject: [External] - Re: [Kea-users] Client Class for a Specific Subnet

Hi Isaac,

Your choices are limited at the moment.  You can use the flex option
hook to replace option content based on class membership as described
in the hook documentation:
https://kea.readthedocs.io/en/kea-2.6.1/arm/hooks.html#libdhcp-flex-option-so-flexible-option-actions-for-option-value-settings
There is also this KB article that shows this in action:
https://kb.isc.org/docs/redefining-standard-options though the subject
of the article is actually about sending different content in an
option than it is supposed to carry.

In this case, you could set the "else" portion of your ISC DHCP
configuration as an option in the corresponding subnet in the Kea
configuration.  Make the client a member of the class as you've shown.
Then use the flex option hook to replace the option content if the
client is a member of "ipxe_legacy_netbootxyz".

In the development version 2.7.4, there is the new method called
"Option Class-Tagging":
https://kea.readthedocs.io/en/kea-2.7.4/arm/classify.html#option-class-tagging
that will allow you to tag any option to be sent based on class
membership.  This is an effective replacement for the "if"
functionality in ISC DHCP.  This will first appear in a stable version
in 3.0.0.

Thank you,
Darren Ankney

On Wed, Dec 4, 2024 at 3:48 PM Isaac Brummel <ibrum...@xes-inc.com> wrote:
>
> Hello,
> I'm in the process of migrating an ISC DHCP server to Kea. I'm trying to 
> re-create a feature that we use in the ISC DHCP config to set a boot file 
> name if a specific vendor-class-identifier is met. The ISC DHCP share-network 
> looks like:
>
> shared-network FOOBAR {
>     allow bootp;
>
>     subnet 10.10.10.0 netmask 255.255.255.0 {
>
>         # default PXE boot
>         if substring(option vendor-class-identifier, 0, 20) = 
> "PXEClient:Arch:00000" {
>             filename "ipxe/netboot.xyz.kpxe";
>         } else {
>             filename "ipxe/netboot.xyz.efi";
>         }
>
>
> For Kea I can create the client class just fine, but how can I restrict these 
> client classes to apply only to this subnet? I have other subnets that use a 
> different boot file name. It doesn't seem like using "client-class" in the 
> "subnet4" config would work as that would require a client to meet the 
> classification, when that's not necessary.
>
> "client-classes": [
>     {
>         "name": "ipxe_legacy_netbootxyz",
>         "test": "substring(option[60].hex,0,20) == 'PXEClient:Arch:00000'",
>         "next-server": "10.10.10.5",
>         "boot-file-name": "ipxe/netboot.xyz.kpxe"
>     },
>     {
>         "name": "ipxe_efi_netbootxyz",
>         "test": "substring(option[60].hex,0,20) == 'PXEClient:Arch:00007'",
>         "next-server": "10.10.10.5",
>         "boot-file-name": "ipxe/netboot.xyz.efi"
>     }
> ],
>
>
> Thanks,
>
> Isaac Brummel
> System Administrator
> Extreme Engineering Solutions
> --
> 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.
>
> Kea-users mailing list
> Kea-users@lists.isc.org
> https://lists.isc.org/mailman/listinfo/kea-users
--
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.

Kea-users mailing list
Kea-users@lists.isc.org
https://lists.isc.org/mailman/listinfo/kea-users
CAUTION: This email originated from outside of the organization. Do not click 
links or open attachments unless you recognize the sender and know the content 
is safe.

-- 
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.

Kea-users mailing list
Kea-users@lists.isc.org
https://lists.isc.org/mailman/listinfo/kea-users

Reply via email to