Como você descobriu, não é possível declarar host s dentro de class . A declaração class pode conter apenas match ou match if declarações. Se você quiser agrupar suas solicitações de clientes em classes usando a construção class , poderá fazer algo assim:
class "MyHosts" {
match hardware;
}
subclass "MyHosts" 1:10:bf:48:xx:xx:xx; # host2
subclass "MyHosts" 1:10:bf:48:xx:xx:xx; # host3
Acima, a instrução match no class declara que as subclasses serão correspondidas pelo atributo hardware . ( hardware avalia a concatenação do tipo de hardware e o endereço MAC do cliente; para clientes ethernet, o tipo de hardware é 1, portanto, o prefixo 1: na sequência de dados das instruções subclass .)
Quando um cliente é membro de uma subclasse, também é um membro da classe pai, portanto, agora você pode usar as cláusulas allow e deny em suas declarações pool para garantir que os membros de MyHosts são atribuídos IPs do pool desejado, por exemplo:
subnet 192.168.1.0 netmask 255.255.255.0 {
...
pool {
range 192.168.1.101 192.168.1.250;
...
deny members of "MyHosts";
...
}
pool {
range 192.168.1.1 192.168.1.20;
...
allow members of "MyHosts";
...
}
}