Michael Brown
b62f2325ba
[PXEXT] Add PXENV_FILE_EXEC call to PXE extensions API.
...
This allows pxelinux to execute arbitrary gPXE commands. This is
remarkably unsafe (not least because some of the commands will assume
full ownership of memory and do nasty things like edit the e820 map
underneath the calling pxelinux), but it does allow access to the
"sanboot" command.
2008-03-04 18:16:30 +00:00
Michael Brown
5e4e267177
Start restructuring pxe_tftp.c to cope with multicast (MTFTP) receives.
2008-02-02 15:59:32 +00:00
Michael Brown
c9c8cdeb8b
Add pxe_set_cached_filename() so that pxe_tftp.c can also update the
...
stored DHCP packets.
2008-01-22 18:51:12 +00:00
Michael Brown
84f99f781e
Use XFER_INIT() macro.
2008-01-22 18:50:24 +00:00
Michael Brown
f6a8158eed
Make seek information part of the xfer metadata, rather than an entirely
...
separate xfer method.
Add missing .alloc_iob entries to several xfer_interface_operations
structures.
2008-01-08 16:46:55 +00:00
Michael Brown
1949641d10
Fix compiler warnings that appear only on OpenBSD.
2007-12-06 14:16:46 -06:00
Michael Brown
6b0e147e0d
Don't complain when callers provide too-short buffers for
...
PXENV_GET_CACHED_INFO. NTLDR does this.
2007-12-07 01:06:37 +00:00
Michael Brown
838ecba131
Provide individually cached constructed copies of DHCP packets via
...
PXENV_GET_CACHED_INFO. If we dont do this, Altiris' NBP screws up; it
relies on being able to grab pointers to each of the three packets and
then read them at will later.
2007-11-22 04:43:11 +00:00
Michael Brown
3a2473f123
Do not fill in the BufferLimit field in struct
...
s_PXENV_GET_CACHED_INFO, because this field doesn't exist in earlier
versions of the PXE spec, and some callers don't allocate space for it.
2007-11-22 00:31:21 +00:00
Michael Brown
950057eeed
Add PXE FILE API.
2007-08-04 01:23:37 +01:00
Michael Brown
07f84566d5
Make read_user() non-blocking, and add select() call.
2007-08-04 01:22:52 +01:00
Michael Brown
5e26df0325
Centralise construction of the DHCP request and response packets.
2007-07-31 03:02:21 +01:00
Michael Brown
9aa61ad5a2
Add per-file error identifiers
2007-07-24 17:11:31 +01:00
Michael Brown
b34d4d0449
Separate the "is data ready" function of xfer_seek() into an
...
xfer_window() function, which can return a scalar rather than a
boolean.
2007-07-08 14:11:07 +01:00
Michael Brown
ca4c6f9eee
Kill off unused request() method in data-xfer interface.
2007-07-08 02:10:54 +01:00
Michael Brown
4c418d2100
Use net_device_operations structure and netdev_nullify() to allow for
...
safe dropping of the netdev ref by the driver while other refs still
exist.
Add netdev_irq() method. Net device open()/close() methods should no
longer enable or disable IRQs.
Remove rx_quota; it wasn't used anywhere and added too much complexity
to implementing correct interrupt-masking behaviour in pxe_undi.c.
2007-07-07 16:43:39 +01:00
Michael Brown
539ff45fd0
Allow recording of TX and RX errors to aid in end-user debugging.
2007-07-05 17:18:27 +01:00
Michael Brown
0324d5ff70
!PXE and PXENV+ structures are in code segment, not data segment.
2007-07-04 03:20:18 +01:00
Michael Brown
dca470cb21
Add (untested) UNDI loader C-level implementation.
2007-07-03 23:41:35 +01:00
Michael Brown
89349d7fad
Separated out initialisation functions from startup/shutdown functions.
2007-07-03 23:09:56 +01:00
Michael Brown
5ce5e6d846
Move pxe_netdev and set_pxe_netdev to pxe_undi.c and remove
...
now-obsolete pxe.c.
2007-07-03 20:21:16 +01:00
Michael Brown
0924cf678e
Implemented (untested) PXENV_START_UNDI.
2007-07-03 18:17:14 +01:00
Michael Brown
30a442aef8
Report our interface type as "gPXE" to avoid working around Etherboot
...
5.4 bugs when driving ourselves via UNDI.
2007-07-03 15:57:32 +01:00
Michael Brown
1ce0b4bbfb
Kill off PXENV_UNDI_FORCE_INTERRUPT support; we have no reason to
...
suspect that we need it, and implementing it would require needlessly
complicating the net device API.
2007-07-03 15:36:29 +01:00
Michael Brown
5f92f0bd82
Reserve space for link-layer header in pxenv_undi_transmit() when not
...
handed a P_UNKNOWN packet.
2007-07-03 04:05:30 +01:00
Michael Brown
258afef751
Add missing call to free_iob() in pxenv_undi_isr().
...
Correct typo in pxenv_set_station_address().
2007-07-03 00:57:53 +01:00
Michael Brown
4968caab82
Add trivial net device statistics (TX and RX packet count), reported
...
via UNDI API and also by ifstat command; may be useful for debugging.
2007-07-03 00:15:53 +01:00
Michael Brown
cbd956535e
Place netdev_open()/netdev_close() calls in appropriate places.
2007-07-03 00:02:06 +01:00
Michael Brown
8f37a6a424
Add mechanism for providing TX completion events.
2007-07-02 23:49:00 +01:00
Michael Brown
332614a382
Add untested support for UNDI transmit and receive.
2007-07-02 20:05:58 +01:00
Michael Brown
e42eba4af4
Use a common base-memory packet buffer for DHCP construction (as used
...
by PXE and NBI) and UNDI packets (as used by undinet and UNDI).
2007-07-02 18:33:41 +01:00
Michael Brown
5f17089b14
pxe_netdev now holds a reference to the network device.
...
Use generic fields in struct device_description rather than assuming
that the struct device * is contained within a pci_device or
isapnp_device; this assumption is broken when using the undionly
driver.
Add PXENV_UNDI_SET_STATION_ADDRESS.
2007-07-02 17:43:32 +01:00
Michael Brown
e3bbfd7a75
Call shutdown() from pxenv_undi_shutdown(). Probably not totally
...
correct, but it's enough to get RIS working.
2007-07-02 03:12:35 +01:00
Michael Brown
4472e22b5e
Implement the two UNDI API calls used by RIS.
2007-06-30 15:56:00 +01:00
Michael Brown
d05d8edd42
Implement the "overwrite TFTP filename" Microsoft RIS bug workaround.
2007-06-30 15:13:18 +01:00
Michael Brown
8130443f9f
Separate out pxe_start_nbp() from pxe_image.c into pxe_call.c
...
Implement PXENV_RESTART_TFTP.
2007-06-30 14:56:35 +01:00
Michael Brown
9125070f51
I really, really screwed up the semantics of BufferSize and BufferLimit.
2007-06-29 20:16:30 +01:00
Michael Brown
40d6d3dcf4
Windows RIS now gets as far as downloading NTLDR.
2007-06-29 01:42:59 +01:00
Michael Brown
e381714c07
Partial migration of UDP to data-xfer interface. (Will not link at
...
present; DHCP is broken).
2007-06-20 01:13:35 +01:00
Michael Brown
01b4bde8a0
Updated TFTP and PXE UDP API code to use not-yet-implemented data-xfer
...
UDP API.
2007-06-11 18:11:29 +01:00
Michael Brown
23008b9326
Updated to use POSIX-style file I/O layer.
2007-05-18 14:33:20 +00:00
Michael Brown
5ff23aa406
Include stdlib.h rather than malloc.h
2007-01-18 20:06:03 +00:00
Michael Brown
a5a330339b
Split DBG() statement containing two inet_ntoa() statements; they
...
return a static buffer.
2007-01-14 19:58:41 +00:00
Michael Brown
ce7289a766
Dump buffer and packet information in PXENV_UDP_READ as well
2007-01-14 18:22:37 +00:00
Michael Brown
6dcb182aee
Fill in BufferSize in PXENV_GET_CACHED_INFO
2007-01-14 02:21:02 +00:00
Michael Brown
3b2f6e4585
Currently unusable; do not attempt to compile
2007-01-04 19:37:21 +00:00
Michael Brown
d4894f0127
We *should* use the persistent reference API for our netdev reference,
...
but there's so much else missing that it's not worth doing right now.
2007-01-04 03:44:36 +00:00
Michael Brown
84a2b886e1
Split error-message table portions of errno.h out to gpxe/errortab.h
2006-12-20 03:40:48 +00:00
Michael Brown
88e38fa148
We don't actually have a stdio.h header file. Our printf() functions are
...
defined in vsprintf.h. (This may change, since vsprintf.h is a
non-standard name, but for now it's the one to use.)
There should be no need to include vsprintf.h just for DBG() statements,
since include/compiler.h forces it in for a debug build anyway.
2006-09-27 10:58:14 +00:00
Marty Connor
6ac78f6aff
added stdio.h to includes for DBG compilation
2006-09-27 05:57:06 +00:00
Michael Brown
f018da8215
Implement enough of PXENV_GET_CACHED_INFO to support pxelinux.
2006-08-09 02:59:19 +00:00
Michael Brown
75d26d884a
Added pxe_netdev; a slight hack for now, but will need to be done
...
properly for the PXE UNDI API anyway.
2006-08-09 02:58:27 +00:00
Michael Brown
691557281f
Add a couple of small but vital parts to PXENV_UDP_WRITE.
2006-08-09 01:57:02 +00:00
Michael Brown
71754ada2a
Allow linking by converting functions to stubs
2006-08-09 00:25:29 +00:00
Michael Brown
17ecfd1d67
Allow linking by converting all functions to stubs
2006-08-09 00:22:28 +00:00
Michael Brown
ffe0e24249
Make the UDP senddata() methods return a status code.
...
udp_connect() now follows the standard BSD sockets semantics and simply
sets the default address for outgoing packets; it doesn't filter incoming
packets.
2006-08-03 23:10:14 +00:00
Michael Brown
a0a872f7f1
Updated PXE UDP implementation to use the new Etherboot UDP API.
...
Updated PXE API dispatcher to use copy_{to,from}_user, and moved to
arch/i386 since the implementation is quite architecture-dependent.
(The individual PXE API calls can be largely
architecture-independent.)
2006-08-02 23:08:10 +00:00
Michael Brown
c3e41e6fd1
Added soon-to-be-requisite missing include.
2006-06-05 15:41:22 +00:00
Michael Brown
832e86246b
gcc is rather over-aggressive about optimising out static data structures
...
even when __atribute__ (( unused )) is correctly set...
2006-04-24 18:31:37 +00:00
Michael Brown
b89ccac02d
Updated to remove obsolete constants
2006-04-19 02:11:56 +00:00
Michael Brown
708bbc43bc
Merge from Etherboot 5.4
2006-03-16 17:40:55 +00:00
Michael Brown
53a4436d94
TFTP upgraded to use a core function library (in tftpcore.c) which will be
...
shared between TFTP, TFTM and MTFTP protocols.
2005-06-01 13:13:05 +00:00
Michael Brown
59582db29d
Documented remainder of PXE TFTP API calls.
2005-05-27 16:47:45 +00:00
Michael Brown
2ffc960e67
Added diatribe about the mismatch between the PXE spec and the TFTP
...
protocol, and how we will work around it.
2005-05-27 11:44:46 +00:00
Michael Brown
97675c7129
Refer to implementation note on IP routing.
2005-05-27 11:37:09 +00:00
Michael Brown
aeb984a1a9
Thoughts on how to coerce the PXE TFTP API into something resembling
...
the TFTP protocol.
2005-05-26 18:52:12 +00:00
Michael Brown
572483cc59
Separate out the documentation of the PXE API from the documentation of
...
the Etherboot implementation (i.e. don't do what Intel did).
2005-05-24 17:00:55 +00:00
Michael Brown
0e494614b5
Some versions of doxygen seem to object to "@ret None" or similar.
2005-05-24 00:11:25 +00:00
Michael Brown
809933d9f7
Split PXE code into preboot, udp, tftp, undi and loader units.
...
PXE code now compiles without errors (though it won't actually work).
2005-05-23 23:32:56 +00:00
Michael Brown
8fcb6448bd
Moved pxe_errors.c to pxe/interface/
2005-05-23 22:47:21 +00:00
Michael Brown
d8f187dc6a
Documented the UDP API calls.
2005-05-20 17:50:37 +00:00