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