isc dhcp class with more match

Is there any way to define more matches with OR?

I would like to create a class with a mac address check, like

class "fixVms" {
match if substring (hardware, 1, 4) = 00:15:5d:aa;
}

but I would like to add another macs to it, like

subclass "fixVms" 1:00:15:5d:bb:00:00;

I tried to add

match pick-first-value (option dhcp-client-identifier, hardware);

to the class body but it did not work. The 2 things separetly does work.


Solution 1:

I haven't been able to test it myself, and the DHCPD.conf man page isn't that great, but you could try something like the following:

match if ( substring(hardware,1,3) = 00:01:e6 ) or
         ( substring(hardware,1,3) = 00:60:b0 ) or
         ( substring(hardware,1,3) = 00:10:83 );

This came from the following mailing list message

http://marc.info/?l=dhcp-server&m=102521117221954&w=2

Solution 2:

In class declaration, "match if" and "match" statements will joined as AND (intersection), so class may be rewrited as:

class "fixVms" {
  match if substring(hardware, 1, 4) = 00:15:5d:aa or substring(hardware, 1, 6) = 00:15:5d:bb:00:00;
}

if needed static macs list for mac prefixes 00:15:5d:aa and 00:15:5d:bb :

class "fixVms" {
  match if substring(hardware, 1, 4) = 00:15:5d:aa or substring(hardware, 1, 4) = 00:15:5d:bb;
  match hardware;
}

subclass "fixVms" 1:00:15:5d:aa:00:00;
subclass "fixVms" 1:00:15:5d:aa:01:01;
subclass "fixVms" 1:00:15:5d:bb:00:00;
subclass "fixVms" 1:00:15:5d:bb:0a:0a;
 .  .  .

In this case, client belongs to class if mac matching with prefixes and if declared subclass with this mac.