dhcpd not sending additional parameters
Matt Cowger
mcowger at salesforce.com
Thu Aug 9 02:14:29 UTC 2007
Hi,
We are running ISC DHCP3.1.0 on Solaris 10 (though we can duplicate the
problem on RHEL4). With the old version 3.0.6, we have the following
options set for our PXELinux boot environment:
option space pxelinux;
option pxelinux.magic code 208 = string;
option pxelinux.configfile code 209 = text;
option pxelinux.pathprefix code 210 = text;
option pxelinux.reboottime code 211 = unsigned integer 32;
filename "pxelinux.0";
next-server W.X.Y.Z
# Specify PXELINUX options when jumping linux
option pxelinux.magic f1:00:74:7e;
option pxelinux.pathprefix "rhel40u4_x86-64/";
option pxelinux.configfile "pxelinux.default.cfg";
site-option-space "pxelinux";
# Always send the PXELINUX options (specified in hexadecimal)
if exists dhcp-parameter-request-list {
option dhcp-parameter-request-list = concat(option
dhcp-parameter-request-list,d0,d1,d2,d3);
}
All was working fine with 3.0.6 - the DHCP server would send out the
additional requested options for the parameter list (required for
PXELinux). However, upon upgrading to 3.1, the DHCP server has stopped
sending the additional options (confirmed with a snoop capture and
analysis in wireshark). We began to investigate, and adding the
following troubleshooting statements:
log(info, concat("PXE: ", binary-to-ascii(10, 8, ",",
option dhcp-parameter-request-list)));
option dhcp-parameter-request-list = concat( option
dhcp-parameter-request-list, d0, d1, d2, d3);
log(info, concat("PXE: ", binary-to-ascii(10, 8, ",",
option dhcp-parameter-request-list)));
log(info, concat("PXE: ", binary-to-ascii(10, 8, ",",
concat( option dhcp-parameter-request-list, d0, d1, d2, d3))));
The idea here is to print out the value of the dhcp param request list
before be munge it, munge it (line 2) and print it out again after the
munge (where it should be changed. Line 4 does the concat without an
assignment, just for testing. When we run it, and get a request, we get
the following:
Listening on LPF/eth1/00:0c:29:85:46:2f/192.168.6/24
Sending on LPF/eth1/00:0c:29:85:46:2f/192.168.6/24
Sending on Socket/fallback/fallback-net
PXE:
1,2,3,5,6,11,12,13,15,16,17,18,43,54,60,67,128,129,130,131,132,133,134,1
35
PXE:
1,2,3,5,6,11,12,13,15,16,17,18,43,54,60,67,128,129,130,131,132,133,134,1
35
PXE:
1,2,3,5,6,11,12,13,15,16,17,18,43,54,60,67,128,129,130,131,132,133,134,1
35,208,209,210,211
DHCPDISCOVER from 00:0c:29:c9:be:bd via eth1
DHCPOFFER on 192.168.6.14 to 00:0c:29:c9:be:bd via eth1
As you can see, the PXE output lines 1 (pre munge) and 2 (post munge)
are the same - as though the assignment didn't properly take place. The
3rd line shows the output of the concat directly, without an assignment.
So, to sum it - it worked before 3.1, and broke after. Is this a
syntax/method change we missed in the docs, or a bug, or a brainfart, or
what?
--Matt
More information about the dhcp-users
mailing list