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