[syslinux] comboot+PXE stack

Pawel Oleksik oleksik at awa.mat.agh.edu.pl
Wed Nov 24 06:25:13 PST 2004

On Tue, Nov 23, 2004 at 06:24:26PM -0800, H. Peter Anvin wrote:
> >
> >1) How to transfer IP address and other options from PXElinux to comboot?
> >2) I got PXE specification, ver. 2.1 (sept. 1999); can I follow it safely?
> >3) Is there an easy interface to use PXE stack (easier than calling INTs)?
> >
> 1. You need to call the PXE stack's GET CACHED INFO function and extract 
> the relevant information from there.  Right now there is no API function 
> which gets that preparsed; on the other hand, you get a *lot* of 
> information that way.

OK. I have not yet played with it, so additional question: which packet
type (discover, ack or reply) should it be? As a client I would expect
a packet of type OFFER, but there is no such type in the spec.

BTW, can PXElinux send some information to krenel?
Maybe it would be a simpler way to put what I need on "command-line"?

> 2. Mostly.  When PXELINUX runs, PXE is set up to run in UDP mode, so you 
> need to shut down the UDP stack (AND RESTART IT!) if you want to use the 
> TFTP or the UNDI functions.  Most of the API functions will call the UDP 
> stack, so this isn't really very safe.  For sending or receiving UDP 
> packets, though, it should work fine (don't call the setup and shutdown 
> routines, though.)

I'm going to stay with UDP. And probably only one packet to send and to
receive would be enough.  So, it shouldn't be to difficult.

> Invoking the keyboard functions will poll for UDP packets and discard them. 
> This is to keep ARP alive.

Does it mean, that before reading keyboard I should read and copy all expected
UDP datagrams?

> 3. INT 22h, AX=0009h does this; this is in many ways simpler than calling 
> the PXE stack directly, because you don't have to worry about the fact that 
> different PXE versions have different calling conventions.
Of course, in this question I meant "C-interface" :)

And one more question:
in specification there are such comments: "service cannot be used with 32-bit
stack segment", "service cannot be user in protected mode".
How do they concern programming com and com32?

with best regards

More information about the Syslinux mailing list