Hello All,
I'm trying to get working isc-dhcpd with DHCP Relay Option 82 on D-
Link DES-3526.
I want my server to listen relayed DHCPREQUEST packets with Option 82
inserted which contains such information as vlan, port of switch from
where request was sent. I have fixed host declarations for my clients
and need to assign fixed addresses only if request come from specified
vlan.
E.g: client with mac 00:1b:fc:62:34:aa must come from vlan017 and get
10.90.90.91:

subnet 10.90.90.0 netmask 255.255.255.0 {
option subnet-mask 255.255.255.0;
option broadcast-address 10.90.90.255;
option routers 10.90.90.1;
default-lease-time 3600;
max-lease-time 3600;

class "bind_1" { match if substring (hardware, 1, 6) =
00:1b:fc:62:34:aa and binary-to-ascii(10, 8, "", substring(option
agent.circuit-id, 2, 2)) = "017";
log(info, "matched class bind_1");
}
pool { range 10.90.90.91; allow members of "bind_1"; }
}

I've got match and correctly relayed packets, but my client can't got
his lease in some strange way:

Dec 23 17:20:48 ssc dhcpd: DHCPREQUEST for 10.90.90.91 (91.193.172.3)
from 00:1b:fc:62:34:aa (lucky) via 10.90.90.90
Dec 23 17:20:48 ssc dhcpd: DHCPACK on 10.90.90.91 to 00:1b:fc:62:34:aa
(lucky) via 10.90.90.90
Dec 23 17:20:49 ssc dhcpd: released <-- Debug: on release { log(info,
"released") }
Dec 23 17:20:49 ssc dhcpd: DHCPDISCOVER from 00:1b:fc:62:34:aa via
vlan17: network 10.90.90.0/24: no free leases

Dec 23 17:20:49 ssc dhcpd: *10.90.90.91|10.90.90.90|00:1b:11:21:7d:22|
1|017* <-- Debug: contents of Option 82: lease / switch / switch-
mac / switch-port / vlan

Dec 23 17:20:49 ssc dhcpd: matched class bind_1
Dec 23 17:20:49 ssc dhcpd: DHCPDISCOVER from 00:1b:fc:62:34:aa via
10.90.90.90
Dec 23 17:20:49 ssc dhcpd: DHCPOFFER on 10.90.90.91 to 00:1b:fc:
62:34:aa (lucky) via 10.90.90.90
Dec 23 17:20:49 ssc dhcpd: released
Dec 23 17:20:49 ssc dhcpd: DHCPREQUEST for 10.90.90.91 (91.193.172.3)
from 00:1b:fc:62:34:aa via vlan17: lease 10.90.90.91 unavailable.
Dec 23 17:20:49 ssc dhcpd: DHCPNAK on 10.90.90.91 to 00:1b:fc:62:34:aa
via vlan17
Dec 23 17:20:49 ssc dhcpd: *10.90.90.91|10.90.90.90|00:1b:11:21:7d:22|
1|017*
Dec 23 17:20:49 ssc dhcpd: matched class bind_1
Dec 23 17:20:49 ssc dhcpd: *10.90.90.91|10.90.90.90|00:1b:11:21:7d:22|
1|017*
Dec 23 17:20:49 ssc dhcpd: DHCPREQUEST for 10.90.90.91 (91.193.172.3)
from 00:1b:fc:62:34:aa (lucky) via 10.90.90.90
Dec 23 17:20:49 ssc dhcpd: DHCPACK on 10.90.90.91 to 00:1b:fc:62:34:aa
(lucky) via 10.90.90.90
....
and so on...

Maybe there are wrong steps in my solution, or exists smarter and more
suitable way to solve such problem?
Many thanks and sorry for my English.
--
Alexander Nesterov