Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 11 Jan 2009 22:14:16 +0100 (CET)
From:      "Joost Bekkers" <joost@jodocus.org>
To:        freebsd-net@freebsd.org
Subject:   pxeboot(8) after pxelinux
Message-ID:  <1694.192.168.100.227.1231708456.squirrel@jodocus.org>

next in thread | raw e-mail | index | archive | help
Hello

I've been playing with chainloading pxeboot after pxelinux and its menu
feature. It's working, but I had to do something weird. I'm wondering if
anybody can come up with a logical explanation. (and feeding the search
engines for people experiencing the same problem is a nice added bonus)

After pxeboot starts it first does a dhcp request and proceeds to load
/boot/loader.rc, which fails if pxelinux was part of the process. tftp
requests leave the host, answers are send back, but are ignored by the
client and the download times out.

The loader then proceeds to try /boot/boot.conf, this succeeds (read: the
client receives a ENOTFOUND and reacts accordingly. It does NOT time-out)

The only significant event I could find between the two downloads was the
closing and re-opening of the pxe socket (netif_close() and netif_open())

And indeed if I add netif_close() and netif_open() to the dhcp code in
pxe_open() everything works.

I checked the pxe documentation and didn't see anything about not being
allowed to receive packets on different ports, the API looks to have been
written to specificaly support it.

I don't think pxeboot is at fault here, but I'd really like to know if
there is a good explanation for this behaviour.

Thanks,


Joost Bekkers




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?1694.192.168.100.227.1231708456.squirrel>