Commit Graph

777 Commits (0becbf5fba997b1806c65ee94c49e98f046ee799)

Author SHA1 Message Date
Michael Brown 4fc9333159 Move include/image.h to include/gpxe/image.h 2007-01-11 16:04:36 +00:00
Michael Brown 230f16538f Create include/gpxe/elf.h for the ELF bits that aren't part of the ELF
standard and so don't belong in include/elf.h
2007-01-11 15:25:07 +00:00
Michael Brown 0010e10ef3 Update TFTP to use a struct buffer rather than a callback.
Add debug autocolourisation to TFTP.
2007-01-11 15:14:54 +00:00
Michael Brown 7ad1c2eaa8 Removed the Etherboot-specific ELF-image code and replaced it with a
generic ELF loader, to be used by the multiboot code.
2007-01-11 14:44:03 +00:00
Michael Brown 3634e705b7 Remove osloader.c and replace with a prep_segment() that uses userptr_t
and get_memmap() in image/segment.c
2007-01-11 14:32:26 +00:00
Michael Brown c980cdd0aa Move memmap.h out of arch/i386; it no longer contains anything
architecture-dependent and is needed by the ELF code.
2007-01-11 14:08:44 +00:00
Michael Brown fbfed96965 buffer.c should be using copy_{to,from}_user, rather than
copy_{to,from}_phys.
2007-01-11 05:42:06 +00:00
Michael Brown a3ed0cbbc7 Extract packet-padding login from rtl8139.c to a separate pkbpad.c file. 2007-01-11 05:25:50 +00:00
Michael Brown 6918cf9e9e Change FTP to use a data buffer rather than a callback function. 2007-01-11 04:51:20 +00:00
Michael Brown e2dcd05b67 Update buffer-handling code to enable expandable buffers. 2007-01-11 03:50:47 +00:00
Michael Brown bb2024c6d6 Move include/buffer.h to include/gpxe/buffer.h 2007-01-11 01:47:26 +00:00
Michael Brown d9ba8f790b Add route() function to display routing table. 2007-01-10 20:38:20 +00:00
Michael Brown 1fa5cd0e2b Add find_pci_netdev() 2007-01-10 16:16:05 +00:00
Michael Brown fdc97499bf Add device description fields to struct device. 2007-01-10 15:27:48 +00:00
Michael Brown dad5274522 Add "name" field to struct device to allow human-readable hardware device
names.

Add "dev" pointer in struct net_device to tie network interfaces back to a
hardware device.

Force natural alignment of data types in __table() macros.  This seems to
prevent gcc from taking the unilateral decision to occasionally increase
their alignment (which screws up the table packing).
2007-01-10 04:22:09 +00:00
Michael Brown c821a7b20d Add udp_sendto_via() to allow e.g. DHCP to transmit without first having
to set up dummy routing entries.
2007-01-10 02:31:38 +00:00
Michael Brown f008b77ba2 Allow an explicit network device to be specified for IP-layer
transmissions.
2007-01-10 02:25:11 +00:00
Michael Brown 55e590ab3a Move header file for usr/autoboot.c to include/usr 2007-01-10 02:03:20 +00:00
Michael Brown d24b80acf2 Added network interface management commands 2007-01-10 01:55:07 +00:00
Michael Brown 98b6154c3e Add "name" field to network device, to facilitate netdev commands. 2007-01-09 23:48:18 +00:00
Michael Brown c65fae2475 Add RX quotas to the net device poll() method. This avoids the problem
of alloc_pkb() exhaustion when e.g. an iSCSI-booted DOS session is left
idle for a long time at the C:\ prompt and builds up a huge packet
backlog.
2007-01-09 21:47:01 +00:00
Michael Brown 18e5353bed Rename pkb_available() to pkb_tailroom() for consistency with Linux's
skb_tailroom().  Add pkb_headroom().
2007-01-09 20:56:31 +00:00
Michael Brown b7fcfe8ece Added net device TX queue; this will be needed to support the PXE UNDI API
(which will need us to wait for TX completions).

Added debug autocolourisation to netdevice.c
2007-01-09 20:18:31 +00:00
Michael Brown 76525294ee Clean up connection closing and permanent failure logic. 2007-01-09 04:31:33 +00:00
Michael Brown 79c5f0ba04 Added PCI_BASE_CLASS() macro 2007-01-08 03:32:41 +00:00
Michael Brown 5af4918356 Added support for wildcard device/vendor ID matches 2007-01-08 03:23:38 +00:00
Michael Brown 20c9fc407e Remove types and prototypes now provided in the undi*.h headers. 2007-01-08 03:05:34 +00:00
Michael Brown 9780fef360 Partial implementation of UNDI loader caller. 2007-01-05 03:24:39 +00:00
Michael Brown 0638945c7e Add PXE driver-scanning code, capable of locating all PXE ROMs in a system
and matching them up to (e.g. PCI) devices.
2007-01-05 01:52:06 +00:00
Michael Brown 7e07dfb2f4 Added PXE bus driver (with support only for using PXE structures found
lying about in memory, not for loading from ROM), and UNDI net driver.
2007-01-04 19:38:34 +00:00
Michael Brown 350603cb86 Don't include __FUNCTION__ in assert() messages; it was causing the
function name to appear within the objects even in non-asserting
builds.  (This could be considered a gcc bug.)

Removing __FUNCTION__ from assert() reduces the size of bin/blib.a by
around 2.5%!
2007-01-04 13:48:13 +00:00
Michael Brown 0c03bb5a9a Make open() and close() an official part of the netdevice API.
Call netdevice's poll() and transmit() methods only when device is open.
2007-01-04 04:20:08 +00:00
Michael Brown 7fafa89258 A DHCP session holds a persistent reference to a network device 2007-01-04 03:42:28 +00:00
Michael Brown ac53da1790 Added missing #include 2007-01-04 03:40:07 +00:00
Michael Brown b29861a5aa IPv6 minirouting table entries hold persistent references to net devices. 2007-01-04 03:28:30 +00:00
Michael Brown b22d4405c0 An AoE session holds a persistent reference to a net device. 2007-01-04 03:21:45 +00:00
Michael Brown bdf79ec8dc Use hotplug support to notify persistent reference holders when a
net_device is unregistered.
2007-01-04 03:09:28 +00:00
Michael Brown 0063725d28 Minimal hotplug support: provide a facility for notifying persistent
reference holders that their reference is about to become invalid.
2007-01-04 03:08:16 +00:00
Michael Brown a0525a4ed3 Verify checksums on the RX datapath.
Simplify checksum generation on the TX datapath.
2007-01-03 20:48:52 +00:00
Michael Brown b91b9d3d88 Use whole bytes for the ACKED and RCVD portions of tcp_state; it
produces slightly smaller code.
2006-12-30 01:32:22 +00:00
Michael Brown 2494625702 Added auto-colourising DBGC() macro 2006-12-29 03:05:21 +00:00
Michael Brown ce9819af27 Redefine TCP state to include "flags that have been sent" rather than
"flags that are currently being sent".  This allows at least one special
case (checking that we haven't already sent a FIN in tcp_rx_fin()) to be
collapsed.
2006-12-29 00:44:31 +00:00
Michael Brown 61ed298bc7 Merge changes from mcb-tcp-fixes branch. 2006-12-27 23:09:46 +00:00
Michael Brown a2e3357825 Cannot immediately overwrite the peer address when we parse
TargetAddress from the login response, because we still need the old
address while we close the connection!
2006-12-22 12:24:12 +00:00
Michael Brown 73e3e02367 Fix prototype of random() and move to stdlib.h 2006-12-22 01:44:51 +00:00
Michael Brown 66a7ed23cb Make start_timer() and stop_timer() robust against incorrect usage. 2006-12-22 01:35:21 +00:00
Michael Brown 9485478acc ibft_fill_data() prototype change. 2006-12-21 18:42:51 +00:00
Michael Brown ab242a760d Add ability to shut down iSCSI connection 2006-12-21 17:17:47 +00:00
Michael Brown cacd6b1d04 KEY_XXX constants are now defined in gpxe/keys.h. Kept separate from
curses.h so that you don't have to suffer the curses namespace pollution
just to get the symbolic key names.
2006-12-20 22:24:45 +00:00
Michael Brown 46c3eeba2a Fix definition of KEY_END 2006-12-20 22:17:44 +00:00
Michael Brown 2ae27f44d9 Add insert/delete and document keys, and documentation. 2006-12-20 22:11:28 +00:00
Michael Brown 791c7d3bf4 Added code to interpret ANSI keypress sequences into KEY_XXX constants. 2006-12-20 21:56:50 +00:00
Michael Brown 96a1a2c6f0 Key definitions 2006-12-20 21:53:07 +00:00
Michael Brown b9f8599537 Define KEY_MIN and use it in kb.c. 2006-12-20 21:10:32 +00:00
Michael Brown cbeec25662 settings_ui() now returns a status code. 2006-12-20 11:42:48 +00:00
Michael Brown 84202d89f0 Split the (quick hack) boot logic out from main.c to autoboot.c, add a
"boot" command to attempt booting from within the command shell, fall back
to shell if boot fails for any reason.
2006-12-20 07:04:08 +00:00
Michael Brown f8910410fe Add attr_{get,set,on,off} as static inlines. 2006-12-20 06:06:38 +00:00
Michael Brown 8f9336e0c1 Add "config" command to access config UI 2006-12-20 05:37:33 +00:00
Michael Brown b93ff48173 Added descriptive text for settings and setting types, and display it in
the option config UI.
2006-12-20 04:58:26 +00:00
Michael Brown 35edecac34 Move {show,set,clear}_setting() to {show,set,clear}_named_setting().
Introduce new {show,set,clear}_setting() that take a struct setting *
rather than a const char *.

set_setting() handles calling clear_setting() when appropriate, so that
individual setting types don't have to check for empty strings.
2006-12-20 04:20:13 +00:00
Michael Brown 4b33c03942 Increase colour pair limit 2006-12-20 03:42:35 +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 e5f0898f38 Move strerror() prototype to string.h, where it belongs 2006-12-20 03:35:49 +00:00
Michael Brown 04da3556f9 Differentiate between ENOSPC and ENOMEM 2006-12-20 03:34:27 +00:00
Michael Brown 637a891264 Fix prototype of sleep() and move it to unistd.h 2006-12-20 03:14:59 +00:00
Michael Brown 3e0f7621eb Don't automatically redraw the edit box; this allows better inheritance. 2006-12-20 02:09:41 +00:00
Michael Brown 35dcbfe771 Editable text box widget based on mucurses and edit_string. 2006-12-20 01:40:57 +00:00
Michael Brown 4919646fb9 Separated out (and tidied up) shell banner code 2006-12-20 00:24:13 +00:00
Michael Brown a2c5744daf Minimal shell implementation using readline() and system(). 2006-12-19 23:55:05 +00:00
Michael Brown 66007fa448 Provide an edit history to allow caller to efficiently update display. 2006-12-19 23:24:16 +00:00
Michael Brown b3c535e550 Skeletal (non-echoing) version of readline() 2006-12-19 22:35:10 +00:00
Michael Brown 1bc3514bd8 Start of generic editable string support 2006-12-19 19:28:12 +00:00
Michael Brown 70d20c4e7a Use common symbols to avoid dragging in getopt.o unless a getopt-using
command is linked in.
2006-12-19 16:27:15 +00:00
Michael Brown e85bf52446 Avoid cursor move on every single character 2006-12-19 00:51:32 +00:00
Michael Brown edbdce6e3d Now basically functioning on ANSI-supporting consoles. 2006-12-19 00:27:25 +00:00
Michael Brown 688eb60df4 Use int rather than short for bool; it will give more efficient code. 2006-12-18 16:48:09 +00:00
Michael Brown 2ed2b2efe8 Use iskey() and getchar() to interact with console, rather than object
abstraction.
2006-12-18 16:46:25 +00:00
Michael Brown 8b3a4c9862 Add basic ANSI escape sequence support to BIOS console 2006-12-18 01:19:38 +00:00
Michael Brown 1cd45decc4 Added support for interpreting ANSI escape sequences on behalf of
non-ANSI-capable consoles.
2006-12-18 00:01:30 +00:00
Michael Brown a39b111684 Automatically select between the "10" and "16" variants of command set,
based on the device size.
2006-12-12 18:54:35 +00:00
Michael Brown 007ca97f25 Added clear_setting() 2006-12-12 15:49:46 +00:00
Michael Brown 72b1629cee Add placeholder ibft.h 2006-12-08 16:16:21 +00:00
Michael Brown c343a3a8ee Including the final (char *)NULL is the responsibility of the caller
of execl().
2006-12-08 09:15:12 +00:00
Michael Brown 7de5d32ff5 cmdlinelib.c now calls system() rather than doing its own tokenisation
(which was extremely heavy on calls to malloc()).

Moved include/command.h to include/gpxe/command.h, since it's
gPXE-specific.
2006-12-08 01:26:11 +00:00
Michael Brown f3d817d512 Added execv() and system(). 2006-12-08 01:23:11 +00:00
Michael Brown e106a39ce8 Added missing include of stdint.h 2006-12-08 01:21:13 +00:00
Michael Brown 496563071d Added strdup() 2006-12-08 00:34:47 +00:00
Michael Brown 1e4a838f55 Added missing prototype 2006-12-08 00:21:08 +00:00
Michael Brown be0cd1cddd Added a functional version of getopt() and getopt_long(), ready for use
in our commands.
2006-12-07 03:54:57 +00:00
Michael Brown d2bf7abe75 Added write support for three-wire devices (e.g. the RTL8139 EEPROM) 2006-12-06 19:51:58 +00:00
Michael Brown 89bcb57201 Update ftp.c to work with Nikhil's TCP stack.
Remove the now-totally-obsolete sockaddr_in field from tcp.h.
2006-12-05 19:07:47 +00:00
Michael Brown 6a91a03409 Added options listed in
http://www.microsoft.com/whdc/winlogo/hwrequirements.mspx as required
for iSCSI boot.  Note that options 204-206 are listed in the document
but don't seem to be defined anywhere on the web.
2006-12-05 15:40:28 +00:00
Michael Brown d041d74054 Tied NVO commands into the human-interactable settings code that I
completely forgot I'd written ages ago.
2006-12-05 02:40:03 +00:00
Michael Brown 6842dd3222 Handle TargetAddress 2006-12-05 01:41:32 +00:00
Michael Brown 67577556a2 Handle strings as complete units, instead of a byte at a time. 2006-12-05 01:08:56 +00:00
Michael Brown 3a7d762c1c Add iscsi_rx_buffered_data() and supporting infrastructure. 2006-12-05 00:39:05 +00:00
Michael Brown d9f32726b4 Added quick and dirty commands for testing the new NVO code. 2006-12-04 23:40:35 +00:00
Michael Brown ab4e1dba3f Added nvo_save() 2006-12-04 22:04:10 +00:00
Michael Brown cc9bcb99a0 Add the concept of a fragment list for non-volatile stored options. 2006-12-04 21:46:13 +00:00
Michael Brown d62c83a350 Migrated etherfabric driver to using generic SPI layer. 2006-12-04 20:47:51 +00:00
Michael Brown 2d8d21fe74 Added the generic block-splitting code to nvs.c 2006-12-04 19:06:07 +00:00
Michael Brown 1961ba44e1 Added generic SPI protocol handler with read and write support. 2006-12-04 18:32:55 +00:00
Michael Brown 946967f09c Abstracted out part of the concept of an SPI device to a generalised NVS
device.

Separated the mechanisms of non-volatile storage access and non-volatile
stored options.
2006-12-04 18:23:06 +00:00
Michael Brown dc06c895fc Changed length parameter in SPI methods to be a byte length, rather than
a word length.
2006-12-04 16:09:59 +00:00
Michael Brown 931f94dca3 Generalised the SPI abstraction layer to also be able to handle interfaces
that don't provide the full flexibility of a bit-bashing interface.

Temporarily hacked rtl8139.c to use the new interface.
2006-12-04 15:36:51 +00:00
Michael Brown 2e41bfd268 Force syntax-checking on assertions even in non-asserting builds. 2006-12-04 15:09:57 +00:00
Michael Brown 3e0286dee3 Move ANSI C standard prototypes to stdlib.h; leave the gPXE-specific
function prototypes (e.g. malloc_dma()) in malloc.h.
2006-12-02 20:10:21 +00:00
Michael Brown 4cd56820ea Basic non-volatile storage support 2006-11-29 02:41:08 +00:00
Michael Brown 74c41fac06 Create "username" and "password" DHCP options, ready for placing this
information in NVS.
2006-11-28 02:14:20 +00:00
Michael Brown 3f0b4d9ed8 Updated to use asynchronous operation model for iSCSI requests
Added CHAP authentication
2006-11-28 00:29:02 +00:00
Michael Brown 82342e0b8f Marked memcmp/strcmp as "pure" functions, to allow gcc to optimise
away code such as

  if ( strcmp ( some_string, "some_value" ) != 0 ) {
     DBG ( "Bad value received!" );
  }
2006-11-27 23:50:24 +00:00
Michael Brown c4677c7e73 Implemented realloc(), and changed the semantics of malloc(0) to allow
for realloc(0) being a valid way to free memory.
2006-11-24 16:51:18 +00:00
Michael Brown fdaddd969a Added "name" field to digest algorithms 2006-11-21 16:14:50 +00:00
Michael Brown c5428303e4 Added generic CHAP layer, independent of iSCSI 2006-11-21 13:26:59 +00:00
Michael Brown 57d539aab0 Made it temporarily possible to call MD5 routines directly from external
code, rather than going through the digest layer.

Removed a spurious line of constants.
2006-11-15 04:22:22 +00:00
Michael Brown fedc186fd7 Split login into security negotation and operational parameter
negotiation phases, to allow inclusion of CHAP authentication.
2006-10-03 09:17:38 +00:00
Michael Brown b16de6ae66 Inhibit compiler warnings on DBG() when building a non-debug object,
while retaining the format string checking.
2006-09-27 11:09:56 +00:00
Michael Brown b8baee7632 Removed as a gesture of goodwill following a request from Microsoft 2006-09-18 21:56:15 +00:00
Michael Brown 2f60aa42e7 Killed 2006-09-18 21:55:27 +00:00
Michael Brown 0dca1dc8ce Made eth_ntoa() public for use in legacy drivers' DBG() statements. 2006-09-15 12:34:34 +00:00
Marty Connor e2aca77132 update DBG_DISCARD macro to allow the compiler to see the argument for compile-time checking, while still having it optimized away during compilation 2006-09-14 17:38:17 +00:00
Michael Brown bb8725bffa Added the "swap in place" macros 2006-09-11 17:54:19 +00:00
Michael Brown 1ddfce2308 Generalisation of a message digest algorithm 2006-09-11 16:29:45 +00:00
Michael Brown 22511400c7 Added generic function for calculating ACPI table checksum 2006-08-27 22:02:08 +00:00
Michael Brown cab3f4502b Correct option number for DHCP_DNS_SERVERS, and add it to the request
list.
2006-08-27 01:37:58 +00:00
Michael Brown b4e559d7e2 Added basic profiling support 2006-08-24 16:22:56 +00:00
Nikhil Chandru Rao d1d334b8e1 IP6 support 2006-08-19 15:58:22 +00:00
Michael Brown cf2178f885 Added debug strings. 2006-08-16 00:05:24 +00:00
Michael Brown 97439cb6eb Kill off poll_interruptions(); it is lethal when we're acting as a PXE
stack or INT 13 emulator etc.
2006-08-14 22:29:51 +00:00
Michael Brown 7029fb8eff Add string configuration type 2006-08-11 18:16:57 +00:00
Michael Brown db46972349 Added basic infrastructure for manipulating settings. 2006-08-11 18:00:22 +00:00
Derek Pryor 25ea34a8d7 New HTTP protocol and test code 2006-08-11 14:13:02 +00:00
Michael Brown bc1a37eacb Added missing packed attribute 2006-08-10 00:10:09 +00:00
Michael Brown 35559ad87c Added description for a basic ACPI table, taken from
include/linux/acpi.h.
2006-08-10 00:09:31 +00:00
Michael Brown c3a4f3c5da Towards an RFC2988-compliant timer. 2006-08-09 15:54:17 +00:00
Marty Connor ee9ae8130a Remove _PROTOCOL macros for gcc 3.2 compatibility 2006-08-09 04:42:14 +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 e9561aafc0 Derive xid dynamically from the netdev, so that we can call
create_dhcp_packet() from pxe_preboot.c, after the dhcp_session is long
gone.

Expose the functions required by pxe_preboot.c
2006-08-09 02:56:40 +00:00
Marty Connor 41af7457a8 Merge of Fredrik Hultin command_line 2006-08-09 02:30:35 +00:00
Michael Brown a3d508b648 Clarified packet ownership transfer between a few functions.
Added a large number of missing calls to free_pkb().  In the case of UDP,
no received packets were ever freed, which lead to memory exhaustion
remarkably quickly once pxelinux started up.

In general, any function with _rx() in its name which accepts a pk_buff
*must* either call free_pkb() or pass the pkb to another _rx() function
(e.g. the next layer up the stack).  Since the UDP (and TCP) layers don't
pass packet buffers up to the higher-layer protocols (the
"applications"), they must free the packet buffer after calling the
application's newdata() method.
2006-08-09 01:24:32 +00:00
Michael Brown d1a123b1f4 Added TFTP test code (currently just dumps file to console). 2006-08-09 00:09:29 +00:00
Michael Brown 3611cb17b7 Initial (untested) implementation of TFTP over the new UDP API. 2006-08-08 23:45:52 +00:00
Michael Brown eda79ec32b The prototype for strcasecmp() is apparently in strings.h. 2006-08-08 22:52:16 +00:00
Michael Brown 72cd29f13c Added some TFTP definitions for use with the new UDP API. 2006-08-08 22:01:16 +00:00
Michael Brown d12383f1d3 Update to match the daft capitalisation in the actual PXE spec 2006-08-08 20:43:05 +00:00
Michael Brown 68e33224ef gcc3 compatibility: removed ARP_NET_PROTOCOL(). 2006-08-08 17:44:25 +00:00
Nikhil Chandru Rao d2bdf81505 Removed some bugs in TCP 2006-08-08 03:42:30 +00:00
Nikhil Chandru Rao cb42e573a0 Added retransmissions to TCP 2006-08-07 18:52:26 +00:00
Michael Brown ecdcdea1af Remove unused attribute from __table macros; the tables are no longer
static since otherwise gcc4 optimises them away completely.  Also, it
really *is* an error if the table start and end are unused, so they
certainly shouldn't be marked with attribute unused.
2006-08-07 17:06:31 +00:00
Michael Brown eb24eece0e Convert some trivial functions to static inlines. 2006-08-03 23:42:03 +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 e24a6cb525 Moved the basic struct sockaddr out of in.h. 2006-08-02 00:06:30 +00:00
Michael Brown 467e9627cc Added features that will be required for PXE UDP support.
Introduced struct sockaddr_tcpip, to simplify code that deals with
both IPv4 and IPv6 addresses.

Reorganised parts of tcpip.c and udp.c.
2006-08-02 00:02:21 +00:00
Nikhil Chandru Rao 9225f4edac TCP support 2006-08-01 20:46:50 +00:00
Nikhil Chandru Rao c24546c70b Minor changes to the network layer rx() functions 2006-08-01 20:27:26 +00:00
Michael Brown beadd82208 Remove unused functions. 2006-08-01 14:26:02 +00:00
Michael Brown 1ebb68e49a Renamed trans_{rx,tx}() to tcpip_{rx,tx}(), since they are specific to
the TCP/IP protocol suite (rather than being general transport-layer
functions).
2006-08-01 14:22:04 +00:00
Michael Brown 3a0e293123 Renamed tcpip_if.[ch] to tcpip.[ch] 2006-08-01 14:18:09 +00:00
Michael Brown b26806cf18 Add dhcp_snprintf() for extracting DHCP string options. 2006-07-20 14:13:11 +00:00
Michael Brown 7ca8bcd98c Print out the lease time, just to show how easy it is. 2006-07-20 03:02:34 +00:00
Michael Brown 00a1f000b1 Added dhcp_ipv4_option() and friends.
Added test code to configure the interface for IPv4 after DHCP.
2006-07-20 02:49:59 +00:00
Michael Brown 7ca1bb0fbe Now successfully negotiates the whole DHCPDISCOVER/OFFER/REQUEST/ACK
cycle.  :)
2006-07-20 02:19:06 +00:00
Michael Brown 2c0eb6eb1d Correct TCP/IP checksum generation. 2006-07-19 23:38:05 +00:00
Nikhil Chandru Rao 13dbf5494d Minor edits 2006-07-19 21:05:58 +00:00
Michael Brown 224529d8dd Now capable of sending what, to me, looks like a valid DHCPDISCOVER
(apart from the bad UDP checksum).
2006-07-19 20:50:50 +00:00
Michael Brown 6858b14a34 Add pkb_available() 2006-07-19 18:16:48 +00:00
Michael Brown 6d9d48537e Added some debug messages and DHCP test code 2006-07-19 17:49:31 +00:00
Michael Brown 317b962b65 Proof of concept: transmit a single DHCPDISCOVER and dump out any
parsed DHCP responses.
2006-07-19 17:32:13 +00:00
Michael Brown 76070cd226 Added missing prototype 2006-07-19 17:29:18 +00:00
Michael Brown bf0cdd42cf Add some DHCP options that we are likely to use 2006-07-19 17:00:32 +00:00
Michael Brown e0668ad8df Correct typo 2006-07-19 16:58:44 +00:00
Nikhil Chandru Rao ab577e1a3a The following edits were made: \
1. Updated UDP send data code\
2. Corrected internet checksum\
3. Moved udp_buffer() and udp_buflen() to udp.c from udp.h
2006-07-19 16:25:23 +00:00
Michael Brown b8d619e822 Added macros for generating static DHCP options 2006-07-19 16:16:51 +00:00
Michael Brown 254fe6e00e Split DHCP packet creation into two parts: creating the basic packet
structure, and populating it with options.  This should allow us to
use the same basic options list for both DHCPDISCOVER and DHCPREQUEST,
plus making it much easier to set the non-constant parameters
(e.g. requested IP address) in request packets.
2006-07-19 12:12:45 +00:00
Michael Brown e40ebb67de Allow for calling find_dhcp_option() with "options" set to NULL, in order
to search through all registered option blocks.

Move some static inlines that are likely to be used frequently into
dhcpopts.c as normal functions, to save space.
2006-07-19 11:05:38 +00:00
Michael Brown 6c01d3bb95 Fix creation of the htype field; the ll_proto field from which it is
derived is a 16-bit big-endian field, but htype is only 8 bits wide.
2006-07-17 13:07:14 +00:00
Michael Brown b24947f0c0 Add sketch code to reassemble a DHCP packet from our internal "everything
is a DHCP option" data structures.

We need this code in order to be able to return a DHCP packet to a PXE NBP
which reflects options from our multiple sources (e.g. NVS and DHCP
server).  This is expensive, but necessary.  Having paid this cost, we may
as well try to use the same code to generate our DHCP request packets,
since the process is similar.
2006-07-17 12:47:22 +00:00
Michael Brown 12da7ea475 Add (untested) code for parsing a received DHCP packet and constructing a
DHCP options block from the contents.
2006-07-15 19:24:55 +00:00
Michael Brown 19e8b41562 Add code to modify DHCP option values within a block. 2006-07-13 20:49:04 +00:00
Nikhil Chandru Rao 5f651f8622 Added fragment reassembly code 2006-06-30 08:52:03 +00:00
Nikhil Chandru Rao 8de630c62b Removing net/interface.c and include/gpxe/interface.h 2006-06-29 06:51:11 +00:00
Michael Brown 51d62d1a3c Provide a mechanism for returning the encapsulator as well as the
encapsulated option; this will be needed for modifications to the options
block.
2006-06-28 18:59:54 +00:00
Nikhil Chandru Rao c9ea710930 Renamed net/interface.c and include/gpxe/interface.h to net/tcpip_if.c and include/gpxe/tcpip_if.h respectively. Made changes in the other files. 2006-06-28 15:43:08 +00:00
Michael Brown 291f072b82 Add priority mechanism 2006-06-28 13:48:02 +00:00
Dan Lynch d8b51332c6 typo in macro fixed 2006-06-28 11:53:41 +00:00
Nikhil Chandru Rao 6e2c97b0c0 Added ipv4_pseudo_header structure 2006-06-28 09:59:27 +00:00
Nikhil Chandru Rao e60817fa7a IP6 specifications 2006-06-28 09:44:41 +00:00
Nikhil Chandru Rao a6c6b3d739 Fixed whitespaces; updated UDP code 2006-06-28 07:46:28 +00:00
Michael Brown 0bcaa8a21f First stab at DHCP option handling in a way that will allow us to have
multiple option sources (e.g. multiple DHCP replies, non-volatile
storage etc.)
2006-06-27 17:24:07 +00:00
Dan Lynch e442447f37 - multiple static inline definitions added
- changes made to some constants and macros
- changes made to _curses_screen struct
- identified and removed prototypes for yet more unsupportable functions
2006-06-27 10:38:57 +00:00
Nikhil Chandru Rao f5ebf067c4 added generalized sockaddr structure and ip6 sockaddr 2006-06-25 05:18:24 +00:00
Nikhil Chandru Rao 90fbff8f34 added support for processing and transmitting without uIP 2006-06-25 05:16:54 +00:00
Nikhil Chandru Rao 74339b3c6e updated UDP interface 2006-06-25 05:13:17 +00:00
Nikhil Chandru Rao fdc05e2664 created interface for transport-network interface 2006-06-25 05:12:07 +00:00
Michael Brown 3a660f9b25 Update ftp.c and hello.c to use the generic async_operations API. 2006-06-19 15:46:58 +00:00
Michael Brown 15397db2b4 Placeholder 2006-06-17 23:34:48 +00:00
Michael Brown 8637834031 Made the temporary buffer part of the TCP senddata() API, to ease the
transition away from uIP.

Prepared ipv4.c for transition away from uIP.
2006-06-17 23:20:54 +00:00
Michael Brown 3c8aafa209 Simplify RX data path.
Kill off the static single net device and move to proper dynamic
registration (which we need with the new device model).

Break the (flawed) assumption that all network-layer protocols can use
ARP; such network-layer protocols (i.e. IPv4) must now register as an ARP
protocol using ARP_NET_PROTOCOL() and provide a single method for checking
the existence of a local network-layer address.
2006-06-17 22:36:27 +00:00
Michael Brown bbd9e28061 Simplify TX datapath. 2006-06-16 00:19:46 +00:00
Michael Brown cce2e47ff4 Added iSCSI boot test code 2006-06-14 17:00:25 +00:00
Michael Brown 3b51c719d3 Generalise three-wire interface to generic SPI interface.
Update rtl8139 driver to instantiate an SPI interface with a three-wire
device attached.
2006-06-14 00:22:50 +00:00
Michael Brown ab4f96e525 Move per-transition delays from generic bit-bashing layer to i2c layer
(since SPI bit-bashing will require different delay semantics).
2006-06-14 00:20:35 +00:00
Michael Brown 51a36f1cfb Change read_bit() to return 0 or -1UL, rather than 0 or 1. 2006-06-12 19:29:50 +00:00
Michael Brown 3ed40686c9 Added bit-bashing i2c interface code 2006-06-11 00:57:00 +00:00
Michael Brown e90b64d625 Added sketch of bit-bashing interface common code 2006-06-08 19:47:09 +00:00
Michael Brown 286bf68faf Added a very quick and dirty compatibility layer, to allow
not-yet-updated drivers to at least function.
2006-06-05 15:45:21 +00:00
Michael Brown d78581297b Improve tcpdump legibility. 2006-06-01 19:23:52 +00:00
Michael Brown 48fb6c6dc2 Updated retry timer mechanism to incorporate smoothed RTT estimation.
AoE now uses the retry timer mechanism.
2006-06-01 14:33:52 +00:00
Michael Brown 50415b3aca Make DBG_DISCARD correct 2006-06-01 12:11:09 +00:00
Michael Brown 1f394c2f7c Backing out last change; no immediate plans to make the whole block-device
layer asynchronous, so keeping the sync/async boundary within aoedev.c
seems cleanest for now.
2006-06-01 11:14:59 +00:00
Michael Brown 99ef98d0bf ATA devices are now asynchronous. The ATA layer itself now performs the
async_wait(), though we may wish to move this higher up the stack, and
consider making the block device model asynchronous.  (There is only a
marginal cost for synchronous devices, since they can simply call
async_done() before returning; async_wait() will work seamlessly in this
situation).
2006-05-31 18:57:11 +00:00
Michael Brown 68125bc441 Added generic asynchronous operations code.
Removed data_in_len and data_out_len from ata_command structure; the
lengths are implied by the sector count and the presence of the data_in
or data_out pointers.

Changed AoE code to use subcommands by default, and made aoe_issue()
nonblocking (with completion via async_wait()).
2006-05-31 14:34:17 +00:00
Michael Brown 1db1a6dad3 Added first sketch of a generic retry timer mechanism. The idea is to use
these timer objects in AoE and UDP protocols (where there is no underlying
retransmission mechanism) without requiring each protocol to implement its
own individual retry logic.  Eventually, we should be able to use the same
timer code for TCP retransmissions as well.
2006-05-29 14:55:07 +00:00
Michael Brown 6541338897 Handle multi-sector reads by splitting them into subcommands. 2006-05-29 08:25:31 +00:00
Michael Brown 9a2a52693d Initial AoE implementation. Limitations are:
Cannot yet handle reads of more than two sectors

  No retransmission

  No way to find out a target's MAC address (this proof of concept uses
  broadcasts)

These limitations shall not last long!  :)
2006-05-28 23:29:43 +00:00
Michael Brown 6f998cecb3 Use separate data-in and data-out buffers.
Increase code simplicity at the expense of around 64 bytes.
2006-05-28 23:26:42 +00:00
Michael Brown 6d6252067f Add ETH_P_AOE 2006-05-28 21:47:52 +00:00
Michael Brown f743de4858 Added tcp_kick(). This speed up LILO and GRUB booting by almost two
orders of magnitude.
2006-05-27 19:01:20 +00:00
Michael Brown 6c50564724 Make PKB_ZLEN the minimum possible size of packet buffer (to allow for
hardware that can't autopad).
2006-05-27 13:39:45 +00:00
Michael Brown aa2468babe Added abstraction layer for a three-wire serial device (e.g. the EEPROM
used on RTL8139 cards).
2006-05-26 15:39:24 +00:00
Michael Brown 3204a1e941 Removed some obsolete INIT_XXX constants. 2006-05-25 01:09:06 +00:00
Dan Lynch bef8874842 - implemented printw (formatted string output, a la printf)
- implemented hline/vline (part of wborder family)
- screen cursor now relocates at same time as window cursor when
  restoring after a non-wrapping function
2006-05-22 17:03:41 +00:00
Michael Brown 84a493b88d Allow vcprintf() to be called by external code such as the curses library.
Also trim another eight bytes from vsprintf.o.  :)
2006-05-22 15:41:01 +00:00
Dan Lynch f778500739 - fixes to _wputch to get positioning and wrap working properly
- fixes to wborder (same)
- addition of a few minor functions
2006-05-22 13:10:19 +00:00
Michael Brown 9dfb9d84b4 Made the LBA48 example clearer. 2006-05-21 16:02:38 +00:00
Michael Brown 80958ff69c Added (untested) support for ATA devices. This code should be generic
enough to support both real IDE chipsets and AoE.
2006-05-21 16:01:23 +00:00
Michael Brown af4aacb978 Added missing @file block 2006-05-20 13:25:07 +00:00
Michael Brown 402ba15c64 READ CAPACITY (16) turns out to be an optional command (even though
READ(16) is mandatory); we must use READ CAPACITY (10) first and then
use READ CAPACITY (16) if the READ CAPACITY (10) returns "out of range".
2006-05-19 18:54:38 +00:00
Michael Brown 444b885a7d Add EOVERFLOW==ERANGE 2006-05-19 18:53:12 +00:00
Dan Lynch acf572905c - made some of the bit shifting attribute access simpler (in my mind)
- added extern declarations for global vars
- removed comments from static inlines (too time consuming to do them
  all, considering all so far have been due to the ridiculous amount of
  redundancy within the API spec)
- removed a few more extern func decls for funcs that cannot be
  implemented at this time
2006-05-19 16:22:10 +00:00
Michael Brown d48d0fb1bb Add the concept of a "user pointer" (similar to the void __user * in
the kernel), which encapsulates the information needed to refer to an
external buffer.  Under normal operation, this can just be a void *
equivalent, but under -DKEEP_IT_REAL it would be a segoff_t equivalent.

Use this concept to avoid the need for bounce buffers in int13.c,
which reduces memory usage and opens up the possibility of using
multi-sector reads.

Extend the block-device API and the SCSI block device implementation
to support multi-sector reads.

Update iscsi.c to use user buffers.

Move the obsolete portions of realmode.h to old_realmode.h.

MS-DOS now boots an order of magnitude faster over iSCSI (~10 seconds
from power-up to C:> prompt in bochs).
2006-05-19 15:06:51 +00:00
Michael Brown a280587cde iSCSI writes seem to be working (at least, the ethereal trace shows no
errors; still need to verify data integrity).

SCSI response PDUs are handled: status and sense data (if available) are
returned via the scsi_command structure.

Updated iSCSI session parameter usage.
2006-05-19 00:20:08 +00:00
Michael Brown b531bd2bda All uses iscsi_state were removed some time ago; removing the
declaration.
2006-05-18 21:38:16 +00:00
Dan Lynch 2814681d20 all window primitives implemented 2006-05-18 17:51:19 +00:00
Michael Brown 6b6096d28b Strip down i386 PCI configuration space I/O to the bare minimum. A
typical build will now include 880 bytes of PCI support code, compared to
2327 bytes in Etherboot 5.4.

(There is a slight cost of around 5 extra bytes per access to a
non-constant config space address; this should be an overall win.
Driver-specific accesses will usually be to constant addresses, for
which there is no additional cost.)
2006-05-17 01:12:11 +00:00
Michael Brown 15ee09ed10 Restructured PCI subsystem to fit the new device model.
Generic PCI code now handles 64-bit BARs correctly when setting
"membase"; drivers should need to call pci_bar_start() only if they want
to use BARs other than the first memory or I/O BAR.

Split rarely-used PCI functions out into pciextra.c.

Core PCI code is now 662 bytes (down from 1308 bytes in Etherboot 5.4).
284 bytes of this saving comes from the pci/pciextra split.

Cosmetic changes to lots of drivers (e.g. vendor_id->vendor in order to
match the names used in Linux).
2006-05-16 15:12:06 +00:00
Michael Brown 0afa9db2de Tear out old heap code, replace with code that simply allocates memory
for use by malloc().

This breaks the image-loading code (which previously used the heap to
allocate the buffer for downloading the image), but that's not a major
concern since I'm going to tear out all the image formats within the next
couple of days anyway.  Byebye, NBI!  :)
2006-05-16 15:00:36 +00:00
Michael Brown 441189c6f8 Kill off the "all devices are boot devices" idea 2006-05-16 14:42:15 +00:00
Michael Brown 7cd0390013 Add list_for_each_entry_safe. 2006-05-16 14:14:31 +00:00
Michael Brown ceba6ecb75 Added generic device model. 2006-05-16 14:10:21 +00:00
Michael Brown 6b514393d3 Change movetoyx(), putc() and getc() to methods of the screen. 2006-05-15 09:51:18 +00:00
Dan Lynch dccc6aed3a lightweight xcurses implementation for etherboot (Michael made me do it...) 2006-05-15 09:29:48 +00:00
Michael Brown f25731d08f Split "iSCSI as a SCSI device" out from "iSCSI as a TCP protocol". 2006-05-14 23:29:16 +00:00
Michael Brown 25f5d114a0 Updated documentation.
Shaved around 100 bytes off vsprintf.o.  It's now 50 bytes smaller than
the old implementation and provides much more conformant semantics,
including the ability to return the number of characters that would have
been printed to the string had the buffer been big enough.  (iSCSI needs
this functionality).
2006-05-14 03:31:20 +00:00
Michael Brown 2421723a15 Rewrote printf and friends to better support standard C semantics. 2006-05-14 02:51:55 +00:00
Michael Brown 1ad72e0e79 Add 64-bit byte-swapping operations. 2006-05-13 11:40:39 +00:00
Michael Brown 5009f8d6a2 Provide a SCSI device interface to the iSCSI protocol 2006-05-13 11:39:46 +00:00
Michael Brown f33f01c126 Defined SCSI device interface, and added SCSI block device
implementation.
2006-05-13 11:37:50 +00:00
Michael Brown 8638a5e471 Defined a block device interface. 2006-05-13 11:36:30 +00:00
Michael Brown 568cad0ddc (Redoing check-in lost by SourceForge's failure.) 2006-05-13 11:30:03 +00:00
Michael Brown 9fcded3d23 Towards a(nother) new real-mode infrastructure, in which we take
advantage of the fact that we have to have a permanently-resident block
in base memory.
2006-05-02 15:41:21 +00:00
Michael Brown 9e1becaf8a Merge TCP aborted(), timedout() and closed() methods into a single
closed() method with a reason code.
2006-04-30 16:59:45 +00:00
Michael Brown aec0e127d2 Proof-of-concept FTP implementation 2006-04-30 12:02:07 +00:00
Michael Brown a42092d2a0 Add a temporary snprintf, so that safely-written code can at least
compile, even if it won't yet be safe.
2006-04-30 12:01:31 +00:00
Michael Brown 8df7e74990 Fix up prototype of strtoul() to match POSIX. 2006-04-30 11:45:38 +00:00
Michael Brown 7af478b30d Make tcp_connect() void; it will eventually have no failure case. 2006-04-30 02:13:52 +00:00
Michael Brown 9c9208a132 Put the TCP connection periodic processing in tcp.c, where it belongs. 2006-04-30 02:08:42 +00:00
Michael Brown 178b0a7e5e Consistency 2006-04-30 01:35:01 +00:00
Michael Brown 352bf1bda2 Move init.h to gpxe/init.h. 2006-04-30 01:08:52 +00:00
Michael Brown bac97eb979 Change semantics of network API so that packet-absorbing calls *always*
take ownership of the packet, rather than doing so only if they return
success.  This breaks semantic compatibility with Linux's
hard_start_xmit() method, but means that we don't have to worry so much
about error cases.

Split mechanism of processing received packets (net_rx_process()) out
from policy (net_step()), preparatory to putting net_step() in a separate
object.
2006-04-29 17:17:43 +00:00
Michael Brown 23c494d14e Added basic code for implementing co-operative multitasking.
Yes, you really can do it in 65 bytes.
2006-04-29 16:42:09 +00:00
Michael Brown 129c6c3968 Network layer now works as a proof of concept 2006-04-28 14:13:50 +00:00
Michael Brown 1488cd3b73 Fix a couple of broken assertions, and align the buffer correctly. 2006-04-28 14:09:31 +00:00
Michael Brown d8e99bf28f Gave up on adding POSIX errno's as required, and just added (almost) all
of them in one go.

EBADIMG has been replaced by ENOEXEC, and EIMGRET by ECANCELED.
2006-04-28 13:44:34 +00:00
Michael Brown cf3783b4ca Actually, it's probably a good idea to have packet buffers avoid 4kB
crossings.
2006-04-25 12:11:36 +00:00
Michael Brown b601a7d355 Updated memory allocator to improve support for unaligned or partially
aligned blocks.

Moved header to include/malloc.h, since we now also provide the
POSIX-like malloc()/free() pair.

Not yet tested.
2006-04-25 03:30:46 +00:00
Michael Brown 2f0d412210 Add __constant_flsl(), because it's useful for finding out the next
power-of-two up from a given constant via
  ( 1 << fls ( constant - 1 ) )

fls(), flsl(), ffs() and ffsl() appear in strings.h according to
POSIX.
2006-04-24 23:00:32 +00:00
Michael Brown 455b76980f Added pkb_reserve(). 2006-04-24 19:34:51 +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 824d6ffa7f Header rearrangement.
I want to get to the point where any header in include/ reflects a
standard user-level header (e.g. a POSIX header), while everything that's
specific to gPXE lives in include/gpxe/.  Headers that reflect a Linux
header (e.g. if_ether.h) should also be in include/gpxe/, with the same
name as the Linux header and, preferably, the same names used for the
definitions.
2006-04-24 15:42:49 +00:00
Michael Brown 53f78346bf Network API now allows for multiple network devices (although the
implementation allows for only one, and does so without compromising on
the efficiency of static allocation).

Link-layer protocols are cleanly separated from the device drivers.

Network-layer protocols are cleanly separated from individual network
devices.

Link-layer and network-layer protocols are cleanly separated from each
other.
2006-04-24 15:38:53 +00:00
Michael Brown fdc2ee79db Network API now allows for multiple network devices (although the
implementation allows for only one, and does so without compromising on
the efficiency of static allocation).

Link-layer protocols are cleanly separated from the device drivers.

Network-layer protocols are cleanly separated from individual network
devices.

Link-layer and network-layer protocols are cleanly separated from each
other.
2006-04-24 15:33:06 +00:00
Michael Brown 5423f876fb Don't bother poisoning lists; it costs code size. 2006-04-24 15:28:56 +00:00
Michael Brown 1d7cfd5acf Prototype now clashes with the macro in arch/i386. 2006-04-24 15:27:58 +00:00
Michael Brown b6b6a0b5fe First draft of a dynamic memory allocator 2006-04-24 15:21:18 +00:00
Michael Brown 6209bd873a First sketch of a new net device API. 2006-04-19 12:07:46 +00:00
Michael Brown bdc8190c8d Remove the concept of the media-independent link-layer header and replace
it with metadata in the pkb structure.  This is required since UNDI will
want to be able to parse the link-layer header without destroying it.
2006-04-19 11:32:24 +00:00
Michael Brown 3ca7dbe7ca Added the concept of a network interface (a network-layer concept) as
separate from a network device (a link-layer concept).
2006-04-19 02:09:08 +00:00
Michael Brown d65a66606b Typo 2006-04-19 02:08:27 +00:00
Michael Brown 2558439ce4 First version, based on include/linux/list.h, stripped down to just
those functions we are likely to need.

Still need to come up with a way of getting the linker to create
static lists using this linking mechanism.
2006-04-19 02:05:50 +00:00
Michael Brown d24042f0bb Update now that if_ether.h has moved. 2006-04-19 01:56:10 +00:00
Michael Brown 4f3581e99c Added ENOENT and EAFNOSUPPORT 2006-04-19 01:54:53 +00:00
Michael Brown ab139ceda9 Added pkb_unput() and pkb_len(). 2006-04-19 01:54:24 +00:00
Michael Brown 744b895077 Make flags more efficient.
Add 'raw' net_addr facility (needed for ARP).
2006-04-19 01:53:49 +00:00
Michael Brown 49f933fbc3 Moved if_ether.h and if_arp.h to include/gpxe, for consistency with Linux
kernel.

Removed obsolete struct arprequest from if_arp.h and put it in nic.c so
that nic.c will still compile.  ARP will very shortly be handled by
net/arp.c instead.
2006-04-19 01:52:41 +00:00
Michael Brown 363905e1b6 Add missing prototype 2006-04-19 01:42:33 +00:00
Michael Brown 02d342f38f First version 2006-04-19 01:42:03 +00:00
Michael Brown 0b561ce972 First sketch 2006-04-18 17:52:51 +00:00
Michael Brown 42b659f926 First version 2006-04-18 17:49:51 +00:00
Michael Brown 0864a73347 First version, based on the concepts in linux/skbuff.h 2006-04-18 17:47:01 +00:00
Michael Brown 6446767258 First draft of iSCSI protocol support. Is capable of retrieving disk
blocks.
2006-04-05 11:44:56 +00:00
Michael Brown c8a7133e9f Added tcp_buffer, to give applications a zero-cost place to build data to
be transmitted.
2006-04-05 11:43:01 +00:00
Michael Brown 988bb50979 Added set_netmask() and set_gateway() 2006-04-05 11:41:15 +00:00
Michael Brown b44332eb7d Split non-TCP portions of the stack out into ip.[ch].
Added set_ipaddr().
2006-03-24 17:22:09 +00:00
Michael Brown 7e61f38799 Moved "hello world" protocol implementation out of prototester.c and into
the first standalong uIP-based protocol module.
2006-03-23 22:37:05 +00:00
Michael Brown 508dcdb303 Added container_of(). This seems about the best place to put it, since
the definition of it uses offsetof(), and the two concepts are related.
2006-03-23 22:07:21 +00:00
Michael Brown 2299435f1c Added prototype for inet_ntoa, even though we don't have the function
yet, in order to allow prototester.c to compile.  It might be worth
changing all the uses of "%@" in printf to use "%s" and inet_ntoa
instead, in order to improve the portability of our code.
2006-03-23 21:34:25 +00:00
Michael Brown a4a0244aa3 Moved uIP wrapper out of prototester.c and into proto/tcp.c. 2006-03-23 21:32:03 +00:00
Michael Brown 05b284399e Moved old tcp.h to old_tcp.h, to avoid name clash with new (uIP-based)
tcp.h.
2006-03-23 20:34:08 +00:00
Michael Brown af23ff8a24 Assertions are now handled via the POSIX-like <assert.h>. 2006-03-23 19:33:57 +00:00
Michael Brown 55497b3402 Added missing #endif 2006-03-23 19:23:25 +00:00
Michael Brown cb8e89de15 Added assert.h, with assert() defined (almost) as per POSIX, and
linker_assert() defined as gPXE-specific.
2006-03-23 17:28:51 +00:00
Michael Brown dde1c5ad18 Moved include/in.h to include/gpxe/in.h, so that it can be included by
prototester.
2006-03-23 16:45:01 +00:00
Michael Brown 708bbc43bc Merge from Etherboot 5.4 2006-03-16 17:40:55 +00:00
Michael Brown 9c8a69b673 Merge from Etherboot 5.4 2006-03-16 17:31:29 +00:00
Michael Brown 5d28bae0f1 Fix up building with gcc 4.0.1 / gas 2.16.91 2006-01-17 01:47:41 +00:00
Michael Brown 33dbdda28e Allow data blocks to be less than sizeof ( struct buffer_free_block ) in
size.  (The restriction on the size of free blocks remains.)
2005-06-06 11:42:14 +00:00
Michael Brown 7d8adc25bc In multicast operation, the client still has a unicast local port. 2005-06-02 10:15:40 +00:00
Michael Brown be7897523d IGMP protocol now uses the generic background protocol mechanism. 2005-06-01 22:22:14 +00:00
Michael Brown 85a380530d Add generic mechanism for background protocols (e.g. ARP, IGMP) 2005-06-01 22:18:38 +00:00
Michael Brown fa17bf0917 Make rfc2090 multicast option optional 2005-06-01 19:10:25 +00:00
Michael Brown 55771a462d Re-order functions for more logical documentation 2005-06-01 18:02:24 +00:00
Michael Brown f2198e8a65 Don't choke on duplicate OACK packets.
Make await_tftp() static and create tftp_get() for fetching the next TFTP
packet instead.
2005-06-01 18:00:01 +00:00
Michael Brown 378e922f8f Remove prototypes for obsolete functions 2005-06-01 17:57:27 +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 0b048e9cfb Now have enough functions to implement a standard TFTP client in around 50
lines of code.
2005-06-01 11:01:59 +00:00
Michael Brown 92f1a5c677 Documented the purpose of the two timeout fields in
s_PXENV_TFTP_READ_FILE.
2005-05-27 16:47:16 +00:00
Michael Brown 6e74dc3460 Added implementation note on IP routing.
Added reason for min value of 512 on s_PXENV_TFTP_OPEN::PacketSize.
2005-05-27 11:36:36 +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 7b423c0988 Fixes for gcc >= 3.2 from Georg Baum 2005-05-23 23:47:54 +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 8becf0f65f Rearranging PXE header files 2005-05-23 22:45:48 +00:00
Michael Brown fd49648a35 Separated out the Etherboot-specific parts of the old pxe.h header. 2005-05-23 16:37:05 +00:00
Michael Brown b9c7468dea Added PXENV+ and !PXE structures, and the loader API. 2005-05-23 16:26:49 +00:00
Michael Brown 442ba12b9e Finished documenting the UNDI API. 2005-05-23 13:57:23 +00:00
Michael Brown cd9742e054 Documented up to PXENV_UNDI_CLOSE 2005-05-23 11:00:09 +00:00
Michael Brown 3503941582 Documented Preboot, TFTP and UDP data structures 2005-05-23 10:02:44 +00:00
Michael Brown eb40aac2b4 Documented PXENV_GET_CACHED_INFO structures 2005-05-22 23:00:56 +00:00
Michael Brown acb9d42cf8 Add UDP parameter structures 2005-05-22 02:57:50 +00:00
Michael Brown 22b7f0ec74 Define PXE types in terms of other PXE types where possible 2005-05-22 02:57:14 +00:00
Michael Brown 1e0a5d8b30 Worked out a sensible doxygen grouping 2005-05-22 00:59:09 +00:00
Michael Brown 29733a153d Added all API codes and basic prototypes. 2005-05-21 17:19:57 +00:00
Michael Brown 8355ce8a32 Documented the basic PXE data types 2005-05-21 15:15:10 +00:00
Michael Brown a96759f9c8 Use "#var" rather than "@c var" for doxygen. 2005-05-20 10:27:02 +00:00
Michael Brown bf32da87f0 Doxygenation 2005-05-20 10:24:11 +00:00
Michael Brown 7a4b45d3b0 Don't include etherboot.h; we get a circular dependency 2005-05-19 23:21:18 +00:00
Michael Brown a9fabe7546 Doxygenation 2005-05-19 19:00:21 +00:00
Michael Brown 8bc4551f5e API docs to .h 2005-05-19 18:41:54 +00:00
Michael Brown 2ddbac101e Move API docs to buffer.h, implementation to buffer.c. 2005-05-19 18:32:04 +00:00
Michael Brown 4e87543c74 Synced across updates from Etherboot 5.4 tree 2005-05-19 16:47:19 +00:00
Michael Brown c18ea5282c Doxygenated 2005-05-19 12:53:59 +00:00
Michael Brown e911a74724 More documentation 2005-05-19 11:54:41 +00:00
Michael Brown a135024626 load_buffer is now handled via load_buffer.h 2005-05-19 00:19:07 +00:00
Michael Brown 0e921cdd9e More doxygen docs 2005-05-18 15:28:33 +00:00
Michael Brown 484d6e7d24 __attribute__ does not need to be treated as a variadic macro, since
it is always used as __attribute__((...)).  Since variadic macros seem
to confuse poor doxygen, change it to a single-valued macro.
2005-05-18 15:02:23 +00:00
Michael Brown 75a90cb143 Hide __attribute__ from doxygen 2005-05-18 14:42:02 +00:00
Michael Brown 0eb4d9973c Add EBADIMG, EIMGRET, ETIMEDOUT and EINVAL 2005-05-18 14:41:53 +00:00
Michael Brown f888bd589d doxygen doesn't allow us to do the --include compiler.h trick... 2005-05-18 14:26:35 +00:00