etherboot rejecting DHCP replies without server ip, although DEFAULT_BOOTFILE specified

Arnd Hannemann <[email protected]> Sun, 02 Apr 2006 17:08:35 +0200
Newsgroups gmane.network.etherboot.devel
Message-ID <[email protected]>
Hello,

in src/core/nic.c (etherboot 5.4 cvs) etherboot is dropping DHCP replies
which do not contain a next server ip:

  if (memcmp(&bootpreply->bp_siaddr, &zeroIP, sizeof(in_addr)) == 0)
              return 0;

In almost all common setups that makes sense. However if a _server_ was
specified in DEFAULT_BOOTFILE (e.g. tftp://192.168.9.1/bootimage), then
it doesn't.
Etherboot will not boot if it did not get a next server ip in the DHCP
reply, although it could, because it has a server given in the
DEFAULT_BOOTFILE option.
To make our devices boot we had to override above behavior.

My first idea for a patch was:

#ifndef DEFAULT_BOOTFILE
  if (memcmp(&bootpreply->bp_siaddr, &zeroIP, sizeof(in_addr)) == 0)
              return 0;
#endif

This is obviously still not correct and may break existing
installations, because DEFAULT_BOOTFILE is not required to contain a
server address.

Any ideas? Please CC me, because I'm not subscribed to this list.

Thank you
Arnd Hannemann

P.S.:
Note that a recent ISC dhcp server WILL give its own ip address as the
next server address in a dhcp reply without further configuration,
though this is not required by RFC 2131.


-------------------------------------------------------
This SF.Net email is sponsored by xPML, a groundbreaking scripting language
that extends applications into web and mobile media. Attend the live webcast
and join the prime developer group breaking into this new coding territory!
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=110944&bid=241720&dat=121642