Thamks for all your help, to recap:
class "nodhcp" {
match if (
(substring(hardware,1,6) = 00:11:22) );
is wrong
class "nodhcp" {
match if (
(substring(hardware,1,3) = 00:11:22) );
is correct. position 0 is type (Ethernet/FDDI/token ring)
and positions 1-3 are the first 6 characters of the MAC address.
00 is one position as 00 means $00 (hex) or 00, decimal 00001011
11 is one position as 11 means $11 (hex) or 17, decimal 00010001
22 is one position as 22 means $22 (hex) or 34, decimal 00100010
While this is six characters when looking at it in human form, in
reality this is three bytes. Thus the 1,3.
I post this because I see other examples on the web using 1,6. I cut
and pasted one of these into my dhcpd.conf in the first place.
I also found one article stating to use 0,3 (as of this writing) which
is apparently inaccurate, unless the hardware type is 00 and the mac
address is starting with 05:02 or 61:61 (that is not what they are
trying to accomplish though):
http://www.nominum.com/getOpenSourceResource.php?id=7
if substring (hardware, 0, 3) = 00:05:02 or
substring (hardware, 0, 3) = 00:61:61 {
default-lease-time 3599;
max-lease-time 3599;
min-lease-time 3599;
}