DHCP Vender Specific Information Patch for GRUB

 

Why?:

1.) A network that has two or more DHCP servers (e.g. One for IP's, one for etherbooting) can cause pxegrub to hang during its boot process. (This occurs because pxegrub accepts DHCP OFFERs from any DHCP server, even if the server is not configured to provide pxegrub with the necessary configuration information.)
2.) There is no simple way of distinguishing DHCP traffic coming from a pxegrub client, from all other DHCP traffic. Thus, configuring a server to respond only to DHCP traffic from pxegrub clients is not possible.

How?:

1.) Have pxegrub check the Vendor Specific Information option of DHCP packets for the string "pxegrub.".
2.) Have pxegrub place the string "pxegrub" in the Vendor Specific Information option of all outgoing DHCP packets.

Note that this forces DHCP servers to be configured with the VSI option, if they wish to communicate with pxegrub (see the HOWTO below)
This functionality is very similar to Etherboot's REQUIRE_VCI_ETHERBOOT option.

The fix:

A Patch (CVS/diff) for the GNU GRUB project
Libpcap traces: before after Etherboot version (for comparison)

HOWTO:

An example dhcpd.conf file used on the patched version of GRUB
This server is configured to reply only pxe or pxegrub DHCP traffic (via "match if" directive)
It is also configured to place the string "pxegrub." in outgoing traffic (via "option vendor-encapsulated-options" directive)