Using multiple client classes with ISC DHCPd

Since the internet is lacking examples of how to use multiple classes with a single pool here is one:

    class "mac-filtered-clients"
        match binary-to-ascii (16, 8, ":", substring(hardware, 1, 6));

    subclass "mac-filtered-clients" "50:7b:00:00:00:00"; # some cool host!

    class "J-client" {
        spawn with option agent.circuit-id;
        match if (substring(option agent.circuit-id, 30, 9) = "foo-bar");
        lease limit 1;

    subnet {
         pool {
              allow members of "J-client";
              allow members of "mac-filtered-clients";

This isn’t very special compared to a setup with just a single class but it can be confusing since debugging classes is a pita.. One pitfall I did run into was using the byte representation of the mac-addresses (without the quotes) and using match hardware;. The example above works for me (tm).