Bug 209282

Summary: dhcp 3.0.3-26 fails to netboot etherboot client
Product: [Fedora] Fedora Reporter: Andreas Holzhammer <aholzhammer>
Component: dhcpAssignee: David Cantrell <dcantrell>
Status: CLOSED NOTABUG QA Contact:
Severity: medium Docs Contact:
Priority: medium    
Version: 5   
Target Milestone: ---   
Target Release: ---   
Hardware: i386   
OS: Linux   
Whiteboard:
Fixed In Version: Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2006-10-04 07:17:13 EDT Type: ---
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:

Description Andreas Holzhammer 2006-10-04 06:22:42 EDT
Description of problem:
I recently upgraded my FC4 server installation to FC5, and experienced a failure
in dhcp, which prevented my diskless client to boot. The client is running the
PXE protocol from a etherboot 5.3.14 based CD and a Realtek RTL-8139B network
card. The client is stuck at the "Waiting for server (DHCP)" message.
dhcp version used on the server was dhcp 3.0.3-26, a downgrade to FC4 dhcp
(dhcp-3.0.2-12) fixed the problem (using the same config file).

dhcpd.conf is like this:

subnet 10.0.0.0 netmask 255.255.255.0 {
  range 10.0.0.100 10.0.0.200;
  option broadcast-address 10.0.0.255;
  option routers 10.0.0.1;
  authoritative;
}

host dvr {
  hardware ethernet 00:e0:4c:60:31:92;
  fixed-address 10.0.0.5;
  filename "linux-install/pxelinux.0";
}

Version-Release number of selected component (if applicable):
dhcp-3.0.3-26

How reproducible:
always

Steps to Reproduce:
1. upgrade to dhcp-3.0.3-26 and reboot client
  
Actual results:
Client hangs on PXE boot

Expected results:
Successfull boot into FC4 environment (created by system-config-netboot)

Additional info:
tcpdump from successfull PXE boot (server = morris, client = vdr):
18:39:44.815197 IP 0.0.0.0.bootpc > 255.255.255.255.bootps: BOOTP/DHCP, Request
from 00:e0:4c:60:31:92, length: 548
18:39:44.815813 IP morris.localdomain.bootps > dvr.localdomain.bootpc:
BOOTP/DHCP, Reply, length: 300
18:39:44.816004 IP dvr.localdomain.bootpc > 255.255.255.255.bootps: BOOTP/DHCP,
Request from 00:e0:4c:60:31:92, length: 548
18:39:44.816349 IP morris.localdomain.bootps > dvr.localdomain.bootpc:
BOOTP/DHCP, Reply, length: 300
18:39:44.822137 arp who-has morris.localdomain tell dvr.localdomain
18:39:44.822166 arp reply morris.localdomain is-at 00:02:b3:a7:25:ff
18:39:44.822221 IP dvr.localdomain.2001 > morris.localdomain.tftp:  46 RRQ
"linux-install/pxelinux.0" octet blksize 1432

tcpdump from failed PXE-boot:
20:46:53.570280 IP 0.0.0.0.bootpc > 255.255.255.255.bootps: BOOTP/DHCP, Request
from 00:e0:4c:60:31:92 (oui Unknown), length: 548
20:46:53.571484 IP morris.localdomain.bootps > dvr.localdomain.bootpc:
BOOTP/DHCP, Reply, length: 300
20:47:04.252996 IP 0.0.0.0.bootpc > 255.255.255.255.bootps: BOOTP/DHCP, Request
from 00:e0:4c:60:31:92 (oui Unknown), length: 548
20:47:04.254019 IP morris.localdomain.bootps > dvr.localdomain.bootpc:
BOOTP/DHCP, Reply, length: 300
20:47:24.630326 IP 0.0.0.0.bootpc > 255.255.255.255.bootps: BOOTP/DHCP, Request
from 00:e0:4c:60:31:92 (oui Unknown), length: 548
20:47:24.631487 IP morris.localdomain.bootps > dvr.localdomain.bootpc:
BOOTP/DHCP, Reply, length: 300

Looks like the response packet sent by the server is not understood by the client:
20:47:24.631487 IP (tos 0x10, ttl  16, id 0, offset 0, flags [none], proto: UDP
(17), length: 328) morris.localdomain.bootps > dvr.localdomain.bootpc:
BOOTP/DHCP, Reply, length: 300, xid:0x4c74f9d2, secs:31, flags: [none] (0x0000)
          Your IP: dvr.localdomain
          Client Ethernet Address: 00:e0:4c:60:31:92 (oui Unknown) [|bootp]
        0x0000:  00e0 4c60 3192 0002 b3a7 25b4 0800 4510  ..L`1.....%...E.
        0x0010:  0148 0000 0000 1011 9590 0a00 0001 0a00  .H..............
        0x0020:  0005 0043 0044 0134 0eb2 0201 0600 4c74  ...C.D.4......Lt
        0x0030:  f9d2 001f 0000 0000 0000 0a00 0005 0000  ................
        0x0040:  0000 0000 0000 00e0 4c60 3192 0000 0000  ........L`1.....
        0x0050:  0000 0000 0000 0000 0000 0000 0000 0000  ................
Comment 1 Andreas Holzhammer 2006-10-04 07:17:13 EDT
Apparently my dhcpd.conf was missing the "next-server" directive. Setting this
resolved the issue.

From dhcp ChangeLog:
  - fix default 'boot file server' value (packet->siaddr):
    In dhcp-3.0.2(-), this was defaulted to the server address;
    now it defaults to 0.0.0.0 (a rather silly default!) and 
    must be specified with the 'next-server' option ( not the tftp-boot-server
option ?!?)
    which causes PXE boot clients to fail to load anything after the boot file.