[Kea-users] Example of how to combine host reservations and class tests?

Darren Ankney darren.ankney at gmail.com
Mon Dec 5 11:22:29 UTC 2022


Nathan,

Something like the below would work.

However, the test for being a member of office-printers or
public-printers would need to be changed.  I didn't know what
parameter would cause that to be the case so I just used an example.
Also, you shouldn't need member KNOWN in your test unless you are
performing some reservations and only want clients in the
office-printers / public-printers classes that you have given a
reservation to.  If so, you can assign special options during the
reservation process. That might satisfy the JetDirect requirements in
a simpler way.  Have a look at:
https://kea.readthedocs.io/en/kea-2.2.0/arm/dhcp4-srv.html?highlight=reservation#including-specific-dhcpv4-options-in-reservations
avoiding the need for these other more complex classes.

        "client-classes": [
            {
                "name": "office-printers",
                "test": "(substring(option[60].hex,0,9) == 'JetDirect')",
                "only-if-required": true
            },
            {
                "name": "public-printers",
                "test": "(substring(option[60].hex,0,9) == 'JetDirect')",
                "only-if-required": true
            },
            {
                "name": "jetdirect-office",
                "test": "(member('KNOWN')) and
(member('office-printers')) and (substring(option[60].hex,0,9) ==
'JetDirect')",
                "only-if-required": true
            },
            {
                "name": "jetdirect-public",
                "test": "(member('KNOWN')) and
(member('public-printers')) and (substring(option[60].hex,0,9) ==
'JetDirect')",
                "only-if-required": true
            }
        ],
        "subnet4": [
            {
                "subnet": "192.168.10.0/24",
                "id": 10,
                "option-data": [
                    {
                        "name": "routers",
                        "data": "192.168.10.1"
                    }
                ],
                "pools": [
                    {
                        "pool": "192.168.10.10 - 192.168.10.20"
                    }
                ],
                "client-class": "jetdirect-office"
            },
            {
                "subnet": "192.168.20.0/24",
                "id": 20,
                "option-data": [
                    {
                        "name": "routers",
                        "data": "192.168.20.1"
                    }
                ],
                "pools": [
                    {
                        "pool": "192.168.20.10 - 192.168.20.50"
                    }
                ],
                "client-class": "jetdirect-office"
            },

On Sun, Dec 4, 2022 at 4:35 PM Nathan Neulinger <nneul at neulinger.org> wrote:
>
> I see this example in the docs:
>
>     https://kea.readthedocs.io/en/kea-2.2.0/arm/dhcp4-srv.html#reserving-client-classes-in-dhcpv4
>
> Where it's assigning 'reserved-class1' and 'reserved-class2' to to a reservation in the subnet. Is there some way to do this in conjunction with a 'test'?
>
> i.e. I'd like to say:
>
>     For a host with class "reserved-class1" _AND_ VendorClassIdentifier "X" -> these options
>     For a host with class "reserved-class2" _AND_ VendorClassIdentifier "X" -> these other options
>
> If you need a more specific example (come up on the fly, so there may certainly be better ways to do this, but I'm specifically wanting to do something like the above):
>
>     JetDirect printer devices with label "office printers" -> use boot server A, filename X
>     JetDirect printer devices with label "public printers" -> use boot server B, filename Y
>
>
> Would it be something like (VCI likely wrong, just for example purposes:
>
> {
>     "client-classes": [
>         {
>             "name": "jetdirect-office",
>             "test": "member('KNOWN') and member('office-printers') and substring(option[60].hex,0,9) == 'JetDirect'",
>             "only-if-required": true
>         }
>     ]
> }
>
> combined with setting in a host reservation?
>
>     "client-class" : "office-printers"
>
>
> -- Nathan
> ------------------------------------------------------------
> Nathan Neulinger                       nneul at neulinger.org
> Neulinger Consulting                   (573) 612-1412
>
> --
> 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 at lists.isc.org
> https://lists.isc.org/mailman/listinfo/kea-users


More information about the Kea-users mailing list