Commit Graph

2886 Commits (558c1a45fe30ffe3d6c67b2321e0fc973f13e9b7)

Author SHA1 Message Date
Michael Brown cc80750694 Merge branch 'master' into iscsi-update 2007-07-08 22:06:33 +01:00
Michael Brown 7137c20ed1 Add strcspn() and strndup() 2007-07-08 22:03:12 +01:00
Michael Brown ed20fee0cf Make ref_get() return the reference, for cleaner code. 2007-07-08 22:02:45 +01:00
Michael Brown b94420a52b Ready to start testing 2007-07-08 22:01:49 +01:00
Michael Brown edd1b173a7 Code in place to use a hypothetical SCSI interface. 2007-07-08 19:33:26 +01:00
Michael Brown f2fa390ae6 Everything except the SCSI interface should now be present 2007-07-08 18:51:56 +01:00
Michael Brown 9b28b25332 iSCSI updated to use data-xfer interface on the socket side (TCP).
SCSI interface not yet implemented.
2007-07-08 16:04:13 +01:00
Michael Brown edded7546e Limit xmit window to one MTU. (Path MTU discovery not yet
implemented; should be done at some point.)
2007-07-08 14:33:53 +01:00
Michael Brown 3e1dd0772a Fix typo that was preventing any DHCP option applicators from being
applied.
2007-07-08 14:32:20 +01:00
Michael Brown 237e23c1c9 Add debug message when nameserver setting is applied/changed via DHCP. 2007-07-08 14:31:51 +01:00
Michael Brown 35afb379af TCP limits advertised TCP window to size of application window
obtained via xfer_window().
2007-07-08 14:14:59 +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 e5d8ede978 Re-added symtab to CLEANUP list 2007-07-07 17:49:59 +01:00
Michael Brown e505ceb942 Revert "Cope with builds with differing debug options within a second of each"
This reverts commit fc5f6c9de2.

Reverted commit breaks the much more common case of changing the debug
options in subsequent builds without any code changes.
2007-07-07 17:49:07 +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 2823688a92 Revert "Replace natsemi driver with Indolent's updated one that uses the gPXE API"
This reverts commit 3487640397.
2007-07-07 16:40:58 +01:00
Michael Brown 627feee265 Merge branch 'zalloc' 2007-07-07 04:01:52 +01:00
Michael Brown 436adb2890 Revert "convert to zalloc"
This reverts commit 68add6e814.
2007-07-07 03:59:37 +01:00
Holger Lubitz 85e04b5837 Revert "convert to zalloc"
This reverts commit a4bea78974.
2007-07-07 01:56:37 +02:00
Holger Lubitz e3c72a3438 Revert "convert to zalloc"
This reverts commit 3414fd8df8.
2007-07-07 01:56:27 +02:00
Holger Lubitz ac323c5e4d Revert "convert to zalloc"
This reverts commit 636bd2cd0a.
2007-07-07 01:56:15 +02:00
Holger Lubitz 50fe2159d5 Revert "convert to zalloc"
This reverts commit 7297f04481.
2007-07-07 01:55:45 +02:00
Holger Lubitz a772dc4a2a Revert "convert to zalloc"
This reverts commit 5ce16b03a1.
2007-07-07 01:55:23 +02:00
Holger Lubitz a4d3476e0e convert to zalloc 2007-07-06 21:08:54 +02:00
Holger Lubitz 389c63d7c4 convert to zalloc 2007-07-06 21:08:41 +02:00
Holger Lubitz 32e4ca8ae3 convert to zalloc 2007-07-06 21:08:29 +02:00
Holger Lubitz 1ccb6f9dc6 convert to zalloc 2007-07-06 21:08:21 +02:00
Holger Lubitz da3c785816 convert to zalloc 2007-07-06 20:52:58 +02:00
Holger Lubitz 2b9fb513f4 convert to zalloc 2007-07-06 20:52:01 +02:00
Holger Lubitz 7872b890fe convert to zalloc 2007-07-06 20:50:32 +02:00
Holger Lubitz 7fa85d19b9 convert to zalloc 2007-07-06 20:49:26 +02:00
Holger Lubitz dc6c1c294d convert to zalloc 2007-07-06 20:47:15 +02:00
Holger Lubitz 68add6e814 convert to zalloc 2007-07-06 20:42:05 +02:00
Holger Lubitz 5ce16b03a1 convert to zalloc 2007-07-06 20:42:05 +02:00
Holger Lubitz 7297f04481 convert to zalloc 2007-07-06 20:42:05 +02:00
Holger Lubitz 636bd2cd0a convert to zalloc 2007-07-06 20:42:05 +02:00
Holger Lubitz 3414fd8df8 convert to zalloc 2007-07-06 20:42:05 +02:00
Holger Lubitz a4bea78974 convert to zalloc 2007-07-06 20:42:05 +02:00
Holger Lubitz 6def8592ed convert to zalloc 2007-07-06 20:42:05 +02:00
Holger Lubitz 75ff85441b convert to zalloc 2007-07-06 20:42:05 +02:00
Holger Lubitz f77d9469a4 convert to zalloc 2007-07-06 20:19:55 +02:00
Holger Lubitz aca232c973 convert to zalloc 2007-07-06 20:19:55 +02:00
Holger Lubitz 6d0332b5b3 convert to zalloc 2007-07-06 20:19:55 +02:00
Holger Lubitz c7549bcebe convert to zalloc 2007-07-06 20:19:06 +02:00
Holger Lubitz bb61774ee4 convert to zalloc 2007-07-06 20:19:06 +02:00
Michael Brown 934b70d62c Apply global DHCP options when register_dhcp_options() is called. Do
not apply DHCP options in dhcp_configure_netdev().
2007-07-06 17:07:50 +01:00
Michael Brown 311637503d Merge branch 'master' of rom.etherboot.org:/pub/scm/gpxe 2007-07-06 13:31:58 +01:00
Michael Brown bfc335faa8 Added PXENV_GET_FILE_SIZE.
Documented non-blocking nature of PXENV_FILE_READ.

Changed FileName field in PXENV_FILE_OPEN to be a SEGOFF16, to avoid a
fixed 256-byte length limit on URLs.
2007-07-06 13:31:40 +01:00
Michael Brown f660e8ef58 Add strlen_user() (will be needed for PXE API extensions) 2007-07-06 13:07:10 +01:00
Marty Connor 74a1c77820 Merge branch 'master' of /pub/scm/gpxe 2007-07-06 08:04:55 -04:00
Marty Connor 28d8d828b3 Rename .lilo extension to .lkrn and updated dependencies 2007-07-06 08:04:06 -04:00
Michael Brown 763a3eab8a Add .pdsk target (padded .dsk, suitable for qemu). 2007-07-05 23:37:17 +01:00
Michael Brown 405be071de Pad ROM images to 512 bytes, not powers of two 2007-07-05 23:36:45 +01:00
Michael Brown fbda4837b0 Allocate heap at first usage, rather than assuming we can fit it in
below _text.  This should help with the gPXE-on-gPXE-via-PXE case.
2007-07-05 22:30:34 +01:00
Michael Brown b3ca73c303 Remap EBADF to PXENV_STATUS_TFTP_FILE_NOT_FOUND; the only user is
posix_io.c and this PXE error makes more sense in this context.
2007-07-05 18:47:46 +01:00
Michael Brown 1567b69895 Add concept of DHCP option applicators. 2007-07-05 18:38:14 +01:00
Michael Brown d64e1be1f8 First draft of PXE extensions API. 2007-07-05 18:03:09 +01:00
Michael Brown ed7eae6005 Use netdev_rx_err() to report receive errors. 2007-07-05 17:23:03 +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 07ea125213 Use partition type 0xeb ("EtherBoot"), to avoid any attempts to mount
the Etherboot partition.
2007-07-05 14:20:55 +01:00
Michael Brown db1d99df39 Merge branch 'master' of rom.etherboot.org:/pub/scm/gpxe 2007-07-05 14:15:58 +01:00
Michael Brown 6e082c9b81 Add .usb target 2007-07-05 14:15:43 +01:00
Marty Connor 3487640397 Replace natsemi driver with Indolent's updated one that uses the gPXE API
This version uses the gPXE driver API rather than the legacy wrapper API.
2007-07-05 08:54:12 -04:00
Michael Brown a0f078d7f5 Working with multi-sector reads 2007-07-05 13:30:49 +01:00
Michael Brown 66208dd65d hdprefix that works for LBA only 2007-07-05 12:58:16 +01:00
Michael Brown 839960276d Miscellaneous efficiency improvements, and extend read_sectors to
handle multiple sectors.
2007-07-05 12:36:39 +01:00
Michael Brown bdd1a0f462 Make masking constants unsigned, to avoid a gcc3-only compiler warning. 2007-07-05 12:04:53 +01:00
Michael Brown 8156f6bd19 Switch compiler warning on tcp_open() to a #warning 2007-07-05 12:00:35 +01:00
Marty Connor 1069a74d20 Warnings purge for via-velocity.[ch] 2007-07-04 21:58:28 -04:00
Marty Connor 8d39559192 Update warnings in depca.c ns8390.c 2007-07-04 20:14:10 -04:00
Marty Connor 13016297ed Purge warnings from tg3.c 2007-07-04 19:49:46 -04:00
Marty Connor a75fb80107 Merge branch 'master' of /pub/scm/gpxe 2007-07-04 19:47:13 -04:00
Marty Connor e5950283ec Purge warnings from prism2 drivers 2007-07-04 19:47:01 -04:00
Michael Brown 3c2d50e5de Added active partition locator, and simple MBR built using it. 2007-07-05 00:21:01 +01:00
Michael Brown 738ebaf4a5 Revert "Added master boot record capable of locating active partition"
This reverts commit 844d088c51.
2007-07-05 00:20:04 +01:00
Michael Brown 7918fc97b8 Merge branch 'master' of rom.etherboot.org:/pub/scm/gpxe 2007-07-05 00:05:36 +01:00
Michael Brown 844d088c51 Added master boot record capable of locating active partition
(including logical partitions).
2007-07-05 00:05:26 +01:00
Michael Brown 5e3f2247e0 Kill off lots of warnings in via-velocity.c by correcting these definitions. 2007-07-04 23:36:16 +01:00
Marty Connor 77c1777b44 Merge branch 'master' of /pub/scm/gpxe 2007-07-04 18:33:22 -04:00
Marty Connor b219814627 Remove deprecation of pci_bar_size() 2007-07-04 18:28:37 -04:00
Marty Connor 1af1668c95 Warnings purge of drivers (continued) 2007-07-04 05:52:56 -04:00
Michael Brown ac69b85adb UNDI loader entry point implemented; seems to work. 2007-07-04 03:23:02 +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 1ecb9acb87 Fix typo 2007-07-04 02:25:07 +01:00
Michael Brown fc5f6c9de2 Cope with builds with differing debug options within a second of each
other.
2007-07-04 02:24:24 +01:00
Michael Brown dca470cb21 Add (untested) UNDI loader C-level implementation. 2007-07-03 23:41:35 +01:00
Michael Brown 7db6b4b79c Merge branch 'master' of rom.etherboot.org:/pub/scm/gpxe 2007-07-03 23:10:16 +01:00
Michael Brown 89349d7fad Separated out initialisation functions from startup/shutdown functions. 2007-07-03 23:09:56 +01:00
Marty Connor 79238335b0 remove obsolete file: src/arch/i386/prefix/int19exit.c 2007-07-03 16:24:06 -04:00
Michael Brown a5f33ea283 Added missing line to set return status code. 2007-07-03 21:22:12 +01:00
Michael Brown 01b3dd4fc3 Line buffer API changed a while ago 2007-07-03 21:21:50 +01:00
Marty Connor ec0da04e7d Warnings purge iscsiboot.c 2007-07-03 16:20:54 -04:00
Michael Brown 1f24ba73c4 Added missing "extern" 2007-07-03 21:12:54 +01:00
Michael Brown cbd4542dc0 Merge branch 'master' of rom.etherboot.org:/pub/scm/gpxe 2007-07-03 21:09:26 +01:00
Marty Connor 6be8cdbb6f Merge branch 'master' of /pub/scm/gpxe 2007-07-03 16:02:26 -04:00
Marty Connor 9b3c4e4d79 Warnings purge: src/arch/i386, src/core/disk.c, ramdisk, autoboot 2007-07-03 16:02:15 -04:00
Michael Brown b5311c2c88 This comment is no longer relevant. 2007-07-03 20:39:47 +01:00
Michael Brown 438d1cc0b9 Should be using the generic device probe mechanism, when (if) they
eventually get updated.
2007-07-03 20:39:30 +01:00
Michael Brown fae10a7ca1 We don't actually use the reset functions anywhere, and nothing really
provides them.
2007-07-03 20:34:51 +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 fd86c819ba Use a linker-table based system to automatically mark and start up
permanent processes, rather than requiring each one to have its own
initialisation function.
2007-07-03 20:09:14 +01:00
Marty Connor 4bcfe7507b Merge branch 'master' of /pub/scm/gpxe 2007-07-03 13:20:54 -04:00
Marty Connor c77704cb60 Warnings purge: src/{crypto,hci,net} 2007-07-03 13:20:22 -04: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 2dc8ed1eb8 Work around Etherboot 5.4 bug when multiple packets are received. 2007-07-03 15:53:29 +01:00
Michael Brown ca4bd3e24e Kill off now-redundant _irq() methods. 2007-07-03 15:37:56 +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 e436b993a9 Avoid double free on I/O buffer when rtl_transmit() returns failure.
Convert printf() to DBG(); printf() is not allowed in drivers.
2007-07-03 14:44:33 +01:00
Michael Brown 0958726ebb It's not just Etherboot that fails to generate TX completions. 2007-07-03 14:43:57 +01:00
Michael Brown 5b52630a9c Never attempt to route the broadcast address. 2007-07-03 13:55:45 +01:00
Michael Brown adb3dd03e5 Document TX completion bug. 2007-07-03 13:17:58 +01:00
Michael Brown 71f500ff1b Enable/disable interrupts in driver open/close. 2007-07-03 12:50:58 +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 290280f90e Enable/disable interrupts at open/close time. 2007-07-03 03:34:08 +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 a2a0c2eace Enable/disable interrupts on open/close. 2007-07-03 00:57:04 +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 071356d976 Ensure that pxe_netdev is set before starting up PXE NBP. 2007-07-03 00:02:26 +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
Marty Connor 0297a63877 Merge branch 'master' of ssh://rom.etherboot.org/pub/scm/gpxe 2007-07-02 15:36:19 -04:00
Marty Connor f04899bf6c Warnings purge 2007-07-02 15:33:34 -04:00
Marty Connor b234d4a13e Warnings purge 2007-07-02 15:29:37 -04:00
Marty Connor ef7f6e72a1 Warnings purge 2007-07-02 15:28:55 -04:00
Marty Connor bf871c4d03 Warnings purge of src/core 2007-07-02 15:26:40 -04: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 d7e471f654 Improve debugging 2007-07-01 22:04:19 +01:00
Michael Brown 15f8323055 Removing obsolete files. 2007-07-01 15:30:12 +01:00
Michael Brown 95cb7aaacf Support cards such as natsemi which treat the data as little-endian
(i.e. LSB transmitted first on the wire), even though SPI commands and
addresses always have to be big-endian.
2007-07-01 15:22:12 +01:00
Michael Brown 3bf5eb49d0 Can't use strncpy() to copy strings that aren't NUL-terminated to
begin with.
2007-07-01 03:22:28 +01:00
Michael Brown 31fe5b9415 Hack together far enough to support ne2k-pci. 2007-07-01 00:37:29 +01:00
Michael Brown f33bbd4112 How has the legacy wrapper been working for the past month or so...? 2007-07-01 00:36:48 +01:00
Michael Brown b743b63ae9 DUMP_GDBSYM should not be enabled by default. 2007-07-01 00:05:36 +01:00
Michael Brown d5451d210c Add ability to resolve relative symbols as well as locate absolute ones. 2007-06-30 22:59:15 +01:00
Michael Brown 8f6a4e8140 Add gdbsym.c object to help with running gdb-to-qemu 2007-06-30 22:43:31 +01:00
Michael Brown e1646b4080 Place the actual version string in .data16, rather than just the
pointer to it.
2007-06-30 21:36:54 +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 acd598b4f9 Don't build option-overloaded packets; they just confuse people (ISC
DHCPD and Windows RIS in particular).
2007-06-30 01:32:53 +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 d71b116f54 Fix stack on return from PXE NBP so that we can return properly. 2007-06-28 23:37:49 +01:00
Michael Brown 045fb24557 Use internal real-mode stack from non-returnable prefixes 2007-06-28 21:56:14 +01:00
Michael Brown 00473f0952 Revert "Move stack to below 0x7c00; leaving it at the default location"
This reverts commit 03ca71c38d.
2007-06-28 21:50:36 +01:00
Michael Brown c73bff7ae5 Set current working URI based on TFTP server specified by DHCP. 2007-06-28 21:22:25 +01:00
Michael Brown 03ca71c38d Move stack to below 0x7c00; leaving it at the default location
(0x7ef4) tends to really screw up anything that loads at 0x7c00...
2007-06-28 21:15:47 +01:00
Michael Brown dffdc285b3 Obsoleted by downloader.c 2007-06-28 19:28:26 +01:00
Michael Brown f13baeb330 Added missing config.[ch] lines for FTP protocol 2007-06-28 18:49:57 +01:00
Michael Brown d465ae9785 Bugfix: iobuf->data always points to the start of the allocated
portion, not to the bit we want to currently write to...
2007-06-28 18:38:50 +01:00
Michael Brown 5de837cc67 Mildly ugly hack to force correct linkage. 2007-06-28 18:06:25 +01:00
Michael Brown e4c9c91d6e Removed debugging statements that should not have been checked in. 2007-06-28 17:57:10 +01:00
Michael Brown 4b08f4cf0f Quick hack to get image booting working again 2007-06-28 17:55:29 +01:00
Michael Brown 7d6e4aab6f Use monojob and dhcp_configure_netdev(). 2007-06-28 15:22:20 +01:00
Michael Brown 1ec7bb789d Add dhcp_configure_netdev() 2007-06-28 15:18:26 +01:00
Michael Brown 6209d20779 Added monojob controller in lieu of a full working shell. 2007-06-28 14:53:12 +01:00
Michael Brown cf33b568dc Forgot to set initial session state. Now works! 2007-06-28 01:55:01 +01:00
Michael Brown 73fe1ba9dd Kill off job::start() (it was only ever added as part of an aborted
attempt at triggering TCP-related protocols to start).
2007-06-28 01:09:45 +01:00
Michael Brown 07dc294de8 Update DHCP to use data-xfer interface (not yet tested). 2007-06-27 23:20:36 +01:00
Michael Brown f77815f2b1 Kill off hotplug.h and just make net devices normal reference-counted
structures.

DHCP still broken and #if 0'd out.
2007-06-27 14:48:31 +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 564ac70a42 Add iob_ensure_headroom() placeholder. 2007-06-20 01:12:21 +01:00
Michael Brown 4f309ff0c7 Treat URIs opened via xfer_open() and friends as relative to the
current working URI.
2007-06-13 16:28:32 +01:00
Michael Brown 15dae1e042 Add concept of "current working URI". 2007-06-11 23:54:51 +01:00
Michael Brown 2d4c72b762 Remove unused headers. 2007-06-11 23:40:34 +01:00
Michael Brown e708137029 DNS code now records a whole struct sockaddr for the name server. 2007-06-11 23:36:50 +01:00
Michael Brown f87bc837f4 Updated DNS to use not-yet-implemented UDP data-xfer API. 2007-06-11 23:30:44 +01:00
Michael Brown a74ecf3057 Merge branch 'master' into mcb-tcp-xfer 2007-06-11 21:36:22 +01:00
Michael Brown 058b200529 Renamed _calloc() to zalloc(), ready to be used as a standalone function. 2007-06-11 21:36:10 +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 95adce0ce1 Add concept of transfer metadata, to be used by UDP in order to
implement sendto()/recvfrom() equivalents.
2007-06-11 15:04:39 +01:00
Michael Brown 77e575235d Merge branch 'master' into mcb-tcp-xfer 2007-06-10 18:34:10 +01:00
Michael Brown 0316eaf85d Add missing call to free_iob(). 2007-06-10 18:33:42 +01:00
Michael Brown adf6c8e2a6 Add our own trivial version of stdarg.h. This makes our build
entirely self-hosted (which avoids problems when building the same
tree on multiple systems - e.g. when you have /home NFS-mounted).

Also saves around 50 bytes in total - not sure why.
2007-06-10 00:29:53 +01:00
Michael Brown 11ec23f454 Merge branch 'master' into mcb-tcp-xfer 2007-06-09 22:58:27 +01:00
Michael Brown 0f8d7d705d Rename .cvsignore files to .gitignore 2007-06-09 22:57:00 +01:00
Michael Brown 6835755350 Merge branch 'master' into mcb-tcp-xfer 2007-06-09 22:26:50 +01:00
Marty Connor f97e642d17 Update email addresses in drivers 2007-06-09 15:23:17 -04:00
Michael Brown b256900d4f Scripts temporarily deregister themselves while executing. This
allows us to avoid execution loops without having to hack around the
image registration order.
2007-06-09 19:00:34 +01:00
Michael Brown 2c569fb240 Allow xfer_open() to take a struct uri as well as a URI string. 2007-06-09 18:20:08 +01:00
Michael Brown 1ae549b892 Add our own trivial version of stdarg.h. This makes our build
entirely self-hosted (which avoids problems when building the same
tree on multiple systems - e.g. when you have /home NFS-mounted).

Also saves around 50 bytes in total - not sure why.
2007-06-09 18:11:07 +01:00
Michael Brown 7c8cc3ef6c Use standard xfer_open() argument list for downloader instantiator 2007-06-09 17:42:46 +01:00
Michael Brown 08e286714f Add reference counting to register/unregister procedure. 2007-06-09 17:32:27 +01:00
Michael Brown 53bd022235 Merge branch 'master' into mcb-tcp-xfer 2007-06-08 16:41:54 +01:00
Michael Brown 6f0a6c09db Merge branch 'master' into mcb-tcp-xfer 2007-06-08 16:33:24 +01:00
Marty Connor 8c25ea0970 Updated email mdc's email address 2007-06-08 11:23:26 -04:00
Michael Brown ff84a66c35 Conflicts with native asn1.c 2007-06-08 12:37:35 +00:00
Michael Brown b7ccdb7948 Add a couple of tests for the URI parsing and resolving code. 2007-06-03 02:15:00 +00:00
Michael Brown 6a5cc3533f Added missing va_end() 2007-06-03 02:11:25 +00:00
Michael Brown a6f0a098da Add facility for resolving base+relative URIs (and paths). 2007-06-03 02:01:02 +00:00
Michael Brown 182e3ed61d Added dirname() 2007-06-03 01:51:10 +00:00
Michael Brown 816c8f3b89 Added [v]asprintf() 2007-06-03 01:50:03 +00:00
Michael Brown 335b99a39d Move [v]ssnprintf() from iscsi.c into vsprintf.c; we need them
elsewhere as well.
2007-05-31 13:26:50 +00:00
Michael Brown 4ccd1e8198 Should call ftp_done() if constructor fails. 2007-05-29 15:37:30 +00:00
Michael Brown 735e07268e Update HTTP to use data-xfer interface. 2007-05-29 15:37:09 +00:00
Michael Brown 0dfd5b84fd Updated FTP to use data-xfer API. 2007-05-28 20:11:02 +00:00
Michael Brown a6a18ae9af Add xfer_[v]printf() functions. 2007-05-28 20:09:44 +00:00
Michael Brown 3acd51597a Add sanity check and extra debug message 2007-05-28 20:06:41 +00:00
Michael Brown 656485c1f1 Make URI structures reference-counted. 2007-05-28 17:35:15 +00:00
Michael Brown 63719deea9 Introduce name resolution interface and named socket opener. 2007-05-27 01:07:00 +00:00
Michael Brown bc694ec768 Move increment/decrement debug messages to DBG2 level 2007-05-27 01:04:52 +00:00
Michael Brown 1311b4194c Eliminate PF_INET; just use the AF_INET from the struct sockaddr instead. 2007-05-26 20:41:23 +00:00
Michael Brown a1210e4fca Eliminate PF_INET; just use the AF_INET from the struct sockaddr instead. 2007-05-26 20:41:23 +00:00
Michael Brown 070c55a838 Added EPIPE description. 2007-05-26 15:05:31 +00:00
Michael Brown b8618d76db Modify data-xfer semantics: it is no longer necessary to call one of
request(), seek() or deliver_xxx() in order to start the data flow.
Autonomous generators must be genuinely autonomous (having their own
process), or otherwise arrange to be called.  TCP does this by
starting the retry timer immediately.

Add some debugging statements.
2007-05-26 15:04:36 +00:00
Michael Brown 10d0a1f8c7 Modify data-xfer semantics: it is no longer necessary to call one of
request(), seek() or deliver_xxx() in order to start the data flow.
Autonomous generators must be genuinely autonomous (having their own
process), or otherwise arrange to be called.  TCP does this by
starting the retry timer immediately.

Add some debugging statements.
2007-05-26 15:04:36 +00:00
Michael Brown 3601103381 Modify process semantics; rescheduling is now automatic.
Add reference-counting to processes.

Add timer_running() test.
2007-05-26 15:00:56 +00:00
Michael Brown 6006bed530 Free I/O buffers when we are finished with them! 2007-05-25 16:01:31 +00:00
Michael Brown 1136c19fa4 Updated tcp.c to provide a standardised data transfer interface. 2007-05-25 15:58:42 +00:00
Michael Brown 54138f28f6 Use list_for_each_entry_safe() when flushing queue. 2007-05-19 22:05:16 +00:00
Michael Brown 5e25a89e74 Add local address to socket openers. 2007-05-19 20:14:18 +00:00
Michael Brown 776357214e Rename pkbpad.c to iobpad.c 2007-05-19 18:42:27 +00:00
Michael Brown 3e2c6b6736 pkbuff->iobuf changeover
Achieved via Perl using:

perl -pi -e 's/pk_buff/io_buffer/g; s/Packet buffer/I\/O buffer/ig; ' \
	-e 's/pkbuff\.h/iobuf.h/g; s/pkb_/iob_/g; s/_pkb/_iob/g; ' \
	-e 's/pkb/iobuf/g; s/PKB/IOB/g;'
2007-05-19 18:39:40 +00:00
Michael Brown 7c0a069f42 Add explicit "freeing" debug messages. 2007-05-18 15:42:02 +00:00
Michael Brown 7d2535779c Must request data before anything actually happens... 2007-05-18 15:36:11 +00:00
Michael Brown b63b14ff32 Add debugging 2007-05-18 15:26:44 +00:00
Michael Brown 68dd826b86 Add alloc_iob() and free_iob(). (Direct search-and-replace
equivalents for alloc_pkb() and free_pkb(), which will be retired in
due course).
2007-05-18 14:45:16 +00:00
Michael Brown 23008b9326 Updated to use POSIX-style file I/O layer. 2007-05-18 14:33:20 +00:00
Michael Brown 86a948ccbe Added POSIX-style blocking I/O calls, for use by PXE TFTP API. 2007-05-18 14:19:22 +00:00
Michael Brown 6b6fc1d5ea Allow construction of PXE status code from internal error number. 2007-05-18 14:17:35 +00:00
Michael Brown 59e738d756 Prefix all the open()-family routines with xfer_, to disambiguate them
from the normal POSIX-style open()
2007-05-18 14:16:06 +00:00
Michael Brown b1755462ab Do not hold self-references. This then avoids the problem of having to
ensure that we only drop our self-reference exactly once.

To maintain the guarantee that an object won't go out of scope
unexpectedly while one of its event handlers is being called, the
event-calling functions now automatically obtain and drop extra
references.
2007-05-15 16:53:46 +00:00
Michael Brown 5471bfbbbe Data-transfer interface should now be functionally complete. 2007-05-15 15:23:09 +00:00
Michael Brown 817a446cc6 Add always_inline attribute to force gcc to inline single-instruction
functions.
2007-05-01 10:17:29 +00:00
Michael Brown 123a98db26 Added (non-functional) reference count to struct image 2007-05-01 00:11:34 +00:00
Michael Brown 53da1f1402 Initial sketch for a downloader object 2007-05-01 00:09:19 +00:00
Michael Brown e3dcb9a1ad Add start() event
Add "xfer" to all xfer functions and "job" to all job functions.
2007-05-01 00:07:57 +00:00
Michael Brown a90a9adbd7 Clarify behaviour of plug() by using intf_put() and intf_get(). 2007-05-01 00:06:21 +00:00
Michael Brown 7ff81f6654 Document the fact that a zeroed-out refcounted object will behave in
the most generally useful way.
2007-05-01 00:04:21 +00:00
Michael Brown 31f1bf4426 D'oh 2007-04-30 01:24:52 +00:00
Michael Brown 0898b0b3b1 Added plug_plug() 2007-04-30 01:23:01 +00:00
Michael Brown d40761d725 Add (and use) generic reference counter, to improve signal:noise ratio
in code defining reference-counted objects.
2007-04-29 23:53:39 +00:00
Michael Brown 36bfb6edbb Skeleton job control interface 2007-04-29 02:08:39 +00:00
Michael Brown 280160139d Add seek()
Dehyphenate "data-transfer".
2007-04-29 02:03:58 +00:00
Michael Brown ff1222a8d3 Preliminary support for opening data-transfer interfaces 2007-04-28 20:56:24 +00:00
Michael Brown 27b3bd10c9 Added PF_INET[6] and SOCK_{STREAM,DGRAM} definitions and debug
functions.
2007-04-28 20:53:48 +00:00
Michael Brown 1c765b3988 Added deliver-as-iobuf/deliver-as-raw concepts. 2007-04-27 00:02:23 +00:00
Michael Brown 2575ddc889 Initial sketch for the generic data-transfer interface. 2007-04-26 22:44:52 +00:00
Michael Brown 95206577a7 Trivial ASN.1 decoding functions. 2007-04-21 18:53:26 +00:00
Anselm Martin Hoffmeister ed7dc02a95 hoffmeis: Preparations for syslog support (LOGSERVER in DHCP, linewise
output buffering defintions and the like)
2007-04-09 18:01:43 +00:00
Anselm Martin Hoffmeister ff5aac826a hoffmeis: Fixing situation where absence of a newdata() handler for UDP
connections might break things. Only-sending applications like syslog()
do not need a newdata() handler, so added a check if that handler exists.
2007-04-09 17:34:10 +00:00
Michael Brown 0d9b3e2dd2 Add 32-bit support.
Generate DHCP data block for images.
2007-03-22 16:18:46 +00:00
Michael Brown ff7d0af585 Provide a buffer in base memory for code to fill with generated DHCP data. 2007-03-22 16:18:07 +00:00
Michael Brown 160e66dbb9 Typo 2007-03-20 18:55:00 +00:00
Michael Brown 5578d3b2de Support 32-bit (linear) NBI images. We don't yet provide a bootp data
block, so first32.c dies immediately.
2007-03-14 00:39:12 +00:00
James Harper 80cc27cbc4 Ported bnx2 driver from Etherboot 5.4. 2007-03-13 23:03:50 +00:00
Michael Brown 37127ea90c Added .nbi as a format. 2007-03-11 00:57:26 +00:00
Michael Brown 628f6eddcc Make _load_size accurately reflect the number of bytes in the actual
image file.
2007-03-11 00:54:35 +00:00
Michael Brown 13137a4d61 t5x9 code relies on nic->ioaddr being set 2007-03-11 00:37:46 +00:00
Michael Brown 62548c9f0d Updated 3c509 to current device model 2007-03-10 22:28:22 +00:00
Michael Brown 520d9c36af Updated ISAPnP, EISA, MCA and ISA buses to current device model.
ISA 3c509 is currently non-functional, although the EISA (3c509-eisa) and
MCA (3c529) variants should build OK.

None of this code is yet tested.
2007-03-10 18:08:33 +00:00
Marty Connor 6991ea7cc5 Add gpxe-tarball target to create clean release tarballs 2007-03-02 16:28:04 +00:00
Marty Connor 969642dca6 Add warning about formats that are not working until we fix them 2007-03-02 16:25:42 +00:00
Michael Brown c63af1ea14 Remove no-longer-used variable 2007-02-19 17:31:20 +00:00
James Harper e1735d5fc2 Fix some bad pointer arithmatic in the tg3 driver that was causing the dynamic memory pool to be corrupted (or worse) 2007-02-10 00:28:41 +00:00
James Harper 1c971f1234 Fix padding problem - from Michael 2007-02-10 00:27:46 +00:00
Michael Brown af3149d18e Allow queries in GET requests 2007-02-01 21:01:47 +00:00
Michael Brown 22ed1fbaf1 Add ability to read serial number from SMBIOS 2007-02-01 20:52:12 +00:00
Michael Brown 3fd10074d8 SSL needs quite a lot of spare memory 2007-02-01 09:38:16 +00:00
Michael Brown e01aadd5a7 Required for public key extraction 2007-02-01 09:13:27 +00:00
Michael Brown abccb8b63c SSL requires inordinately large data storage 2007-02-01 07:22:13 +00:00
Michael Brown 2c67167929 Don't pass through zero-length requests 2007-02-01 07:18:56 +00:00
Michael Brown 0050378f51 SHA1_DIGEST_SIZE also available as a static constant 2007-02-01 06:36:45 +00:00
Michael Brown cc8f9e4b7f Make context sizes available for statically-allocated structures 2007-02-01 05:48:56 +00:00
Michael Brown d467552367 Vanilla copies from axtls 2007-02-01 04:20:12 +00:00
Michael Brown 5c3837e0ed Quick hacks to get it working 2007-02-01 02:20:35 +00:00
Michael Brown a01374b5cd Add dummy setiv method 2007-02-01 02:19:16 +00:00
Michael Brown f5776dbef1 Fix prototypes 2007-02-01 02:18:56 +00:00
Michael Brown f06059ab97 More assertions 2007-02-01 02:18:22 +00:00
Michael Brown c650c8c84a Also print out stack pointer (with optional stack dump) 2007-02-01 02:17:59 +00:00
Michael Brown a1f021db96 Placeholder 2007-02-01 02:17:33 +00:00
Michael Brown 406b20a64d Assert that division result is correct 2007-01-31 23:58:52 +00:00
Michael Brown c789e8640b Added __umoddi3 2007-01-31 22:26:14 +00:00
Michael Brown 6c2f0e1bf4 Original axtls RSA code 2007-01-31 22:18:29 +00:00
Michael Brown 1ae70e12e5 Added wrapper for AXTLS AES code 2007-01-31 18:09:20 +00:00
Michael Brown 0d07657296 Added setiv method 2007-01-31 17:58:36 +00:00
Michael Brown c1aa1d0764 Add wrapper around axtls' sha1 code 2007-01-31 12:24:01 +00:00
Michael Brown 869f9bcb23 Adding missing include 2007-01-31 12:19:50 +00:00
Michael Brown 6ce5c97981 Made most of the build much quieter 2007-01-31 11:06:36 +00:00
Michael Brown 413c554b34 We need this, I think 2007-01-31 03:50:49 +00:00
Michael Brown 2e0548e17e Force inlining 2007-01-31 03:50:31 +00:00
Michael Brown a3695b1ff6 Placeholder for TLS insertion 2007-01-31 03:47:42 +00:00
Michael Brown 1f5f900595 Add HTTPS port 2007-01-31 03:44:38 +00:00
Michael Brown 2d726144f7 Filter insertion now actually works 2007-01-31 03:43:59 +00:00
Michael Brown 21f3789ec8 Swap downstream/upstream order so that debug messages for filters show
up in the same colour as debug messages for the application stream.
2007-01-31 03:43:40 +00:00
Michael Brown 1fbd6f7d76 ...but not when it's being used as a digest algorithm... 2007-01-31 03:42:47 +00:00
Michael Brown a502fcda45 The null crypto algorithm should at least copy data... 2007-01-31 03:42:07 +00:00
Michael Brown 138967dd6b Tidy up debug messages 2007-01-31 03:05:49 +00:00
Michael Brown e38e516463 Add insert_filter() function 2007-01-31 03:04:56 +00:00
Michael Brown a008f9e85b Add null crypto algorithm 2007-01-31 03:04:31 +00:00
Michael Brown 6d32f0e6e2 Changed to use the generic stream API. 2007-01-31 02:09:13 +00:00
Michael Brown 02f18565da First sketch of stream API 2007-01-31 00:40:35 +00:00
Michael Brown 55601b2d38 Placeholder 2007-01-30 22:55:19 +00:00
Michael Brown 0e996b81cf Added blocksize for the benefit of HMAC code 2007-01-30 22:54:43 +00:00
Michael Brown 811db204a6 Added cipher wrapper functions 2007-01-30 22:54:20 +00:00
Michael Brown b3e4418ea8 Missing check-in 2007-01-30 22:53:59 +00:00
Michael Brown db2fde474e Generalise digest_algorithm to crypto_algorithm. 2007-01-30 14:55:17 +00:00
Michael Brown 2f7eac1646 Low-overhead filter streams 2007-01-30 12:17:03 +00:00
Michael Brown ddf3b56d47 Definition of a (hopefully) generic stream API 2007-01-30 12:16:36 +00:00
Michael Brown 395c76e94d Use "dbg_stream" rather than "stream" as a variable name in
DBG_AC_IF(), to avoid namespace collisions.
2007-01-30 10:12:19 +00:00
Michael Brown 7d9267561b Don't call PXENV_STOP_UNDI in the kpxeprefix. This slighy breaks the
clean separation between loading and starting, but does mean that more
PXE stacks survive the process.
2007-01-29 15:21:10 +00:00
Michael Brown 2cf1e33df1 Split bootsector execution code out into bootsector.c.
Added basic El Torito ISO image boot capability
2007-01-29 04:21:38 +00:00
Michael Brown bde8878eef Keep HTTP progress updated, and display a progress indicator during the
download
2007-01-29 04:19:45 +00:00
Michael Brown 1a79437888 Added async_block_progress() and default SIGUPDATE handler. 2007-01-29 04:15:24 +00:00
Michael Brown c42a384709 Moved most buffer debug messages to DBG2.
Make expand_buffer() a non-inline function, so that we can add debug
messages.

Expandable buffers now don't *always* round up to the next power of two.
This allows e.g. loading a 137MB ISO image on a machine with only 256MB
RAM...
2007-01-29 04:12:29 +00:00
Michael Brown 89c3c67c51 Should be correct for building RSA 2007-01-28 19:50:43 +00:00
Michael Brown b3b6b25aeb Handle (64-bit) / (32-bit) = (64-bit), i.e. one step beyond that
provided by the divl instruction.
2007-01-28 19:34:17 +00:00
Michael Brown bd873525ff Add matrixssl directory 2007-01-26 04:36:50 +00:00
Michael Brown 6417a6adf0 Avoid barfing on gcc's implicit memcpy()s 2007-01-26 04:14:25 +00:00
Michael Brown 3bb7c19779 Allow MatrixSSL code to compile inside gPXE 2007-01-26 03:50:17 +00:00
Michael Brown afe4e011ac Move tolower() etc to ctype.h as per ISO C 2007-01-26 03:25:19 +00:00
Michael Brown bf9ec8102f Add 64-bit rotates 2007-01-26 02:53:30 +00:00
Michael Brown 7cdc6529bb Build external axtls code 2007-01-26 02:03:34 +00:00
Michael Brown 9542c016cd Add aes.c and required headers from axtls tree 2007-01-26 01:59:37 +00:00
Michael Brown 7b8859ad15 Enable the axtls code to at least build within gPXE 2007-01-26 01:55:34 +00:00
Michael Brown 7993488a68 #if 0 out for now 2007-01-26 01:42:16 +00:00
Michael Brown f59281d8f6 Yet more synonyms that people tend to use. 2007-01-26 01:30:16 +00:00
Michael Brown da9dc834b1 Help quick testing of building Linux code inside gPXE 2007-01-24 23:38:05 +00:00
Michael Brown 9cf5c4557d Add Linux-compatible rol32/ror32 functions. Amazingly, gcc will
optimise these down to the correct single "roll"/"rorl" instruction.
2007-01-24 23:31:58 +00:00
Michael Brown 6a765fdc15 Use base "0" in strtoul for consistency with "mem=" 2007-01-24 22:54:08 +00:00
Michael Brown 99cb46943f "vga=" is specified in decimal, not hex. 2007-01-22 23:56:24 +00:00
Michael Brown ebb00e032c Misread the definition of the type_of_loader field; it should include a
version.
2007-01-19 15:40:01 +00:00
Michael Brown 92a78c8e15 Added SIGKILL handler 2007-01-19 15:19:52 +00:00
Michael Brown 13d9a660ca Zeroing out memory before using it can be so important. 2007-01-19 14:44:59 +00:00
Michael Brown d6909f65f0 Actually, it's probably safer *not* to leave child processes hanging
around which still hold pointers to variables belonging to our parent...
2007-01-19 14:20:41 +00:00
Michael Brown b6194b8cb9 Note that the SIGCHLD handler could be re-entered. 2007-01-19 14:10:13 +00:00
Michael Brown 1411876e26 Propagate return status code from last child to fail. 2007-01-19 14:00:51 +00:00
Michael Brown cde6d776e3 Handle structured error codes. 2007-01-19 13:52:50 +00:00
Michael Brown 18f9f939a8 Introduce structured error codes. 2007-01-19 13:15:26 +00:00
Michael Brown c2352dc8de Add POSIX prototypes for time functions, to allow external code to build
more easily within gPXE.

Note that we don't have function bodies for these functions yet.
2007-01-19 03:09:22 +00:00
Michael Brown 4256b3338a Split random number generation out into core/random.c, and create the
correct prototypes for srandom(), rand() and srand().
2007-01-19 02:02:59 +00:00
Michael Brown f4c1e564a1 vsprintf.h is gPXE-specific; move it to include/gpxe 2007-01-19 01:17:23 +00:00
Michael Brown 73b09ecba6 Use stdio.h instead of vsprintf.h 2007-01-19 01:13:12 +00:00
Michael Brown 06475f7b69 Finally move the prototypes for printf() and friends to stdio.h 2007-01-19 00:58:49 +00:00
Michael Brown 1a0ca661c2 4.3BSD says that bcopy and bzero are defined in strings.h, not string.h 2007-01-19 00:51:13 +00:00
Michael Brown a213876382 Typo 2007-01-19 00:48:13 +00:00
Michael Brown b02a564297 Add missing prerequisite include 2007-01-19 00:39:12 +00:00
Michael Brown 4e3976711d A working name resolution framework 2007-01-18 22:38:13 +00:00
Michael Brown 8bb9f726a0 When an async operation dies, orphan its children. 2007-01-18 22:36:57 +00:00
Michael Brown 075f8144ff Have DHCP set the nameserver, rather than DNS read the DHCP nameserver
value.
2007-01-18 21:22:03 +00:00
Michael Brown c014f607a8 Use total free memory as advertised window. This seems to be sufficient
to avoid drops even on slow NICs.
2007-01-18 20:39:17 +00:00
Michael Brown 6d4e37cf42 Move include/malloc.h to include/gpxe/malloc.h, since everything in there
is now gPXE-specific.  (The standard malloc() et al have been in stdlib.h
for a while).

Add free memory counter.
2007-01-18 20:11:04 +00:00
Michael Brown 5ff23aa406 Include stdlib.h rather than malloc.h 2007-01-18 20:06:03 +00:00
Michael Brown d12770e254 console.h is no longer needed for debugging 2007-01-18 19:13:25 +00:00
Michael Brown 37f1b12587 Allow truly arbitrary debug levels to be specified via DEBUG= 2007-01-18 19:00:09 +00:00
Michael Brown 5d57cd47a2 Declaring the CPU architecture in the middle of an assembly file is
somewhat redundant, and also causes gas to complain when we include
the profiling code (which uses an i586 instruction).
2007-01-18 18:53:32 +00:00
Michael Brown f781a98ac4 Add DBGLVL_PROFILE 2007-01-18 17:59:59 +00:00
Michael Brown 05f4c3d176 Remove the one-packet-per-poll-cycle limit; it seems to no longer be
needed now that performance is up.
2007-01-18 16:50:35 +00:00
Michael Brown 5b00fbade3 Increase window size to 64kB. Line rate downloads on a 100Mbps link,
anyone?
2007-01-18 16:39:55 +00:00
Michael Brown bd95927386 Accelerate memcpy() by around 32% on large, dword-aligned copies. 2007-01-18 15:18:02 +00:00
Michael Brown c8b3e969a0 Allow buffers to be pre-expanded on demand. 2007-01-18 15:13:41 +00:00
Michael Brown 6c72bf13a1 Presize the download buffer when we see the Content-Length header;
this saves around 70us per received packet (which is around 50% of the
overall packet processing time).
2007-01-18 13:26:57 +00:00
Michael Brown 08da93a311 Reorder functions to more closely reflect the flow of control 2007-01-18 13:10:26 +00:00
Michael Brown 35776f481c Don't always zero memory in malloc(). This saves around 2us on a
full-length PKB allocation.
2007-01-18 12:54:18 +00:00
Michael Brown 06630a3036 Switch from calloc() to malloc()+memset() to match the practices used
almost everywhere else.
2007-01-18 12:45:58 +00:00
Michael Brown 48fe701716 Respect the RX quota. This improves poll time by about 0.7us when the
quota is 1.
2007-01-18 12:34:12 +00:00
Michael Brown dd6d94004f HTTP/DNS now working fully asynchronously. HTTP/IP addresses and any
other protocol won't work at the moment.
2007-01-18 03:39:45 +00:00
Michael Brown 0b11733b75 Replacement for fetch() which operates asynchronously and identifies
protocols by URI scheme.
2007-01-18 03:37:05 +00:00
Michael Brown 99e58865c7 Use struct sockaddr rather than struct sockaddr_tcpip
Tidy up code
2007-01-18 03:35:00 +00:00
Michael Brown 6601a7da6a Added async_uninit() to simplify failure paths. 2007-01-18 03:29:40 +00:00
Michael Brown 5a807994d8 Add utility function to parse port from URI 2007-01-18 03:28:55 +00:00
Michael Brown 8ffbbebf11 Ensure that struct sockaddr is long enough... 2007-01-18 03:28:29 +00:00
Michael Brown 9828181e3b Obsolete 2007-01-18 01:05:09 +00:00
Michael Brown 544fa25928 Rename e{malloc,realloc,free} to u{malloc,realloc,free}, to more obviously
reflect the fact that they allocate and deallocate user memory (i.e.
things reached through a userptr_t).
2007-01-16 08:36:42 +00:00
Michael Brown ff8528ea9a Create and use async_block() macro; it cuts down on the visual overhead
of blocking on asynchronous operations, when that isn't an important
aspect of the code.
2007-01-16 08:10:54 +00:00
Michael Brown f11da20f25 When a network device is specified to tcpip_tx() or it's children, treat
it as a fallback network device rather than an explicitly forced network
device.

Clear routing table entries before re-attempting DHCP.
2007-01-16 04:09:13 +00:00
Michael Brown 1a1fc23417 Improve debugging 2007-01-16 03:29:15 +00:00
Michael Brown bcdb6fad3e Improve debug messages 2007-01-16 03:19:40 +00:00
Michael Brown 835d35749f Improved debugging 2007-01-16 03:10:37 +00:00
Michael Brown 143d14614d Quickly hack in DNS resolution as a proof of concept 2007-01-15 17:32:52 +00:00
Michael Brown 9af12d5fba A working DNS resolver (not yet tied in to anything) 2007-01-15 17:31:35 +00:00
Michael Brown df0397f334 Update TFTP and FTP to take the same temporary URI scheme as HTTP 2007-01-15 09:58:26 +00:00
Michael Brown afa752f5fb Protocol's get() method no longer takes ownership of the URI. HTTP is the
exception rather than the rule; we may as well keep things clean for other
protocols.
2007-01-15 09:18:06 +00:00
Michael Brown 1f92c6b3e8 Must free http on the error path; nothing else will do it 2007-01-15 09:08:40 +00:00
Michael Brown c676591cd1 Unmaintained example code is probably worse than useless. 2007-01-15 09:06:12 +00:00
Michael Brown 4e20d73bb5 Gave asynchronous operations approximate POSIX signal semantics. This
will enable us to cascade async operations, which is necessary in order to
properly support DNS.  (For example, an HTTP request may have to redirect
to a new location and will have to perform a new DNS lookup, so we can't
just rely on doing the name lookup at the time of parsing the initial
URL).

Anything other than HTTP is probably broken right now; I'll fix the others
up asap.
2007-01-15 08:49:10 +00:00
Michael Brown ec75b269d3 Add missing include 2007-01-15 08:44:05 +00:00
Michael Brown 90d859c34b Add ETIMEDOUT 2007-01-15 02:46:56 +00:00
Michael Brown 26166cf5e0 Added a URI parser that should be standards conformant. (It can certainly
handle something as convoluted as

  ftp://joe:secret@insecure.org:8081/hidden/path/to?what=is#this
2007-01-14 23:48:31 +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 76aa9ad07d Make TCP give up immediately when it receives -ENETUNREACH from
tcpip_tx().  This avoids the irritating wait when you accidentally type
"kernel pxelinux.0" before bringing up the network interface.

Add ENETUNREACH to strerror()'s list.
2007-01-14 16:47:03 +00:00
Michael Brown c953c1a1c3 Use -ENETUNREACH to mean "no reachable network device exists, don't bother
retrying".
2007-01-14 16:22:10 +00:00
Michael Brown 8edf8f6fa8 Add the "initrd" command 2007-01-14 16:09:48 +00:00
Michael Brown a5f6408d8e We can now load an initrd as well as a kernel 2007-01-14 16:09:01 +00:00
Michael Brown b9f99858ab Make the getmemsize() prototype available in memsizes.h, for code that
doesn't want to go to the hassle of processing a full memory map.
2007-01-14 15:32:25 +00:00
Michael Brown c1fd6e8dc7 Once image type has been set, do not autoprobe further 2007-01-14 15:25:23 +00:00
Michael Brown 99272f958b Typo 2007-01-14 15:13:33 +00:00
Michael Brown 10c9b03cdb Actually, the initrd image should be architecture-independent. 2007-01-14 15:07:11 +00:00
Michael Brown f92e04dea4 Add dummy "initrd" image format, just so that images can be marked as
initrds.
2007-01-14 15:03:39 +00:00
Michael Brown 7dc50167bb Allow load() and exec() methods to be NULL. 2007-01-14 14:59:36 +00:00
Michael Brown 8a490146bf Copy command line at execution time rather than load time.
Parse command line for "vga=" and "mem=" parameters
2007-01-14 14:29:30 +00:00
Michael Brown 3ccd7335f0 Split bzimage_load into separate functions 2007-01-14 13:36:33 +00:00
Michael Brown 97a3037f76 Can start a Linux kernel directly (albeit with no initrd support) 2007-01-14 12:34:35 +00:00
Michael Brown 3cbf0db0a3 Remove some references to no-longer-existent source files.
Add a path for isolinux.bin that is correct on my system; hopefully it
will work on others too.
2007-01-14 11:52:22 +00:00
Michael Brown b04b0ddc31 .lilo and derived targets (e.g. .iso) now load properly. 2007-01-14 11:50:44 +00:00
Michael Brown 77d280968a Obsoleted by arch/i386/image/multiboot.c 2007-01-14 11:45:28 +00:00
Michael Brown 784e10635a Can almost start a kernel now. It dies with "No setup signature found" 2007-01-14 06:36:20 +00:00
Michael Brown 698bbe0155 Obsolete 2007-01-14 04:28:42 +00:00
Michael Brown b07161f397 Placeholder bzImage support 2007-01-14 04:27:25 +00:00
Michael Brown 797edf28b7 Replace image->entry with image->priv. 2007-01-14 04:04:28 +00:00
Michael Brown 3bdbfe1f00 Mostly updated. Won't work yet. 2007-01-14 03:49:07 +00:00
Michael Brown 644f3674e6 Obsolete for some time 2007-01-14 02:24:41 +00:00
Michael Brown 6dcb182aee Fill in BufferSize in PXENV_GET_CACHED_INFO 2007-01-14 02:21:02 +00:00
Michael Brown 7bc03d37a2 Select a PXE network device before starting PXE NBP.
Move pxe_boot() code to pxe_image.c
2007-01-14 02:20:10 +00:00
Michael Brown 98240d99f0 Do not go past the end of the argv[] array.
This bug found by setting read and write watchpoints at NULL in bochs.
2007-01-14 02:01:26 +00:00
Michael Brown 55e6d7b70c Use debug autocolourisation.
Shut down before jumping to the multiboot image.
2007-01-14 00:57:43 +00:00
Michael Brown dca369ddc3 Call hide_etherboot() from startup(), rather than requiring the prefix to
do it.
2007-01-14 00:53:56 +00:00
Michael Brown c2708df14a Make shutdown functions callable by OS image's exec methods. 2007-01-14 00:16:41 +00:00
Michael Brown c088ecf042 Make "boot" a synonym for "imgexec", to match grub 2007-01-14 00:08:13 +00:00
Michael Brown beb941ed81 Rename "boot" to "autoboot" 2007-01-14 00:06:23 +00:00
Michael Brown ece4ff929e Use _text, rather than assuming _text==0. 2007-01-14 00:03:07 +00:00
Michael Brown f547f148d3 Use {get,set}_fbms() so that allocated base memory is correctly hidden. 2007-01-14 00:01:16 +00:00
Michael Brown 0b0e34e667 Provide {get,set}_fbms() in basemem.h.
set_fbms() will also update the E820 hidden region.
2007-01-13 23:57:31 +00:00
Michael Brown aaed3d50a8 Some operating systems get a nasty shock if a region of the E820 map seems
to start on a non-page boundary.  Make life safer by rounding out our
edited regions.
2007-01-13 23:38:33 +00:00
Michael Brown d0f4e9a54b Add some trace messages for important events 2007-01-13 17:54:41 +00:00
Michael Brown 526d314266 Advertise a larger MSS to improve TCP performance. 2007-01-13 17:36:17 +00:00
Michael Brown f11900a9c6 I prefer IMAGE_XXX to XXX_IMAGE.
Add IMAGE_PXE to use the new image format framework.  "kernel pxelinux.0"
now works.
2007-01-13 17:28:51 +00:00
Michael Brown bd863e4112 Add header for pxe_boot() 2007-01-13 17:23:44 +00:00
Michael Brown 4b77061881 Pick up the return status code from the correct place now that we
don't overwrite the parameter block until *after* the debug code.
2007-01-13 16:55:57 +00:00
Michael Brown 5817c9f114 When an UNDI API call fails, print everything there is to know about it. 2007-01-13 16:53:55 +00:00
Michael Brown 3b77c7aa1b Hex dumps are now integrated into the DBG() framework. 2007-01-13 16:49:38 +00:00
Michael Brown 6a3c76c8e0 Always send EOI. We can't feasibly share interrupts (since we have no
clue what the "previous" interrupt handler will do, which could range
from "just an iret" to "disable the interrupt"), and that means that
we have to take responsibility for ACKing all interrupts.  Joy.
2007-01-13 14:45:26 +00:00
Michael Brown 86171c53f4 Damn Broadcom and their damned incorrect assumptions about x86 memory
allocation.
2007-01-13 01:48:12 +00:00
Michael Brown 341c0b9cfb Add HTTP test support 2007-01-12 19:19:59 +00:00
Michael Brown 497c3a5aad Fixed HTTP 2007-01-12 19:18:13 +00:00
Michael Brown 369754f959 Whitespace fix 2007-01-12 19:17:25 +00:00
Michael Brown 63386f4455 Added ENOENT, since HTTP 404 translates to it 2007-01-12 19:14:01 +00:00
Michael Brown ca3db0bf11 Added isspace() and made strtoul() accept whitespace, as per POSIX. 2007-01-12 19:11:28 +00:00
Michael Brown 83b7933f8a Damn it; my lovely resilient scheme falls down when you have a protocol
that switches from line-oriented to byte-oriented partway through, such as
HTTP.
2007-01-12 18:09:14 +00:00
Michael Brown ad22cccc09 No need to maintain a received byte count; we always fill in sequential
order so we can just use buffer->fill.
2007-01-12 17:16:46 +00:00
Michael Brown 996b091b50 Added generic line-buffering code (a la stdio) 2007-01-12 17:08:37 +00:00
Michael Brown bcd6ca3291 Place multiboot tables in base memory; at least some OSes won't see it
if we don't.
2007-01-12 16:25:05 +00:00
Michael Brown 5c72d9c4e0 Print image physical location in registration message. 2007-01-12 16:20:51 +00:00
Michael Brown 0f29e0e46e Ensure multiboot modules are in ascending order of memory start
address, to work around OS bugs.
2007-01-12 12:03:19 +00:00
Michael Brown 53e948bba8 Fix the memory map. 2007-01-12 11:38:04 +00:00
Michael Brown 112d7f9d79 Code used for load buffer and multiboot image testing 2007-01-12 10:12:11 +00:00
Michael Brown 49fc8dcdc3 Use dhcp(), imgfetch() etc. to boot rather than dhcp_test(). 2007-01-12 10:08:27 +00:00
Michael Brown b45a9bfa2d Added missing declaration. 2007-01-12 10:07:56 +00:00
Michael Brown a6afbe762c Make DEBUG=script echo the commands as they are executed 2007-01-12 10:06:59 +00:00
Michael Brown 9952df9b52 Add "dhcp" command 2007-01-12 09:53:28 +00:00
Michael Brown e2c0055e23 Let ifmgmt.c take care of calling efree(), since it's the once which
took out the contract to eventually call efree() when it called fetch().

Maintain the most recently loaded image at the start of the list, so that
imgautoselect() will pick it.
2007-01-12 09:46:10 +00:00
Michael Brown 39ede8c7e8 Added dhcp() user-level command. 2007-01-12 09:20:11 +00:00
Michael Brown 67aedf34fa Use systematic names for XXX_IMAGE.
Add scripts as an image format (since it's trivial to do).
2007-01-12 09:00:48 +00:00
Michael Brown 83559c668a Don't print "<NULL>" when we use imgautoselect(). 2007-01-12 08:59:25 +00:00
Michael Brown 2be2f3b205 Rearrange struct image to reflect usage of the fields 2007-01-12 08:58:16 +00:00
Michael Brown eba3609e7f Add debug message 2007-01-12 08:57:51 +00:00
Michael Brown 5162f30028 Ignore comment lines.
Avoid returning errors for comments and empty lines.
2007-01-12 08:56:48 +00:00
Michael Brown 48e0fc3447 API change: the raw image will no longer be (hypothetically) discarded
after a call to load().
2007-01-12 08:15:25 +00:00
Michael Brown 6fdc6c81a6 Force probing of multiboot before ELF. 2007-01-12 08:10:35 +00:00
Michael Brown 475d6d1f7c fetch() now knows nothing about struct image; it simply loads a file and
returns the allocated buffer.
2007-01-12 08:02:27 +00:00
Michael Brown 2876197306 Allow "imgexec" with no arguments to boot the file that was loaded with
"kernel".
2007-01-12 07:32:46 +00:00
Michael Brown f135a37f30 Cleaner separation between imgXXX() functions and image_cmd.c 2007-01-12 07:22:20 +00:00
Michael Brown 742f242863 Add free_image 2007-01-12 06:26:59 +00:00
Michael Brown 9817f93094 Add basic "fetch" and "imgstat" commands. 2007-01-12 06:05:27 +00:00
Michael Brown b9fea9cbac Added IMAGE_LOADED flag and find_image() 2007-01-12 06:03:02 +00:00
Michael Brown 8b6eaf3c82 Be silent if there are no network interfaces 2007-01-12 05:48:22 +00:00
Michael Brown e96041872e Added missing declaration. 2007-01-12 05:27:02 +00:00
Michael Brown 9debfed07a Place command-line inline, to save on memory allocation hassles. 2007-01-12 05:26:19 +00:00
Michael Brown f15482d85f Added basename() to make automatically naming images easier. 2007-01-12 05:24:51 +00:00
Michael Brown 29dadc5ec6 Build automatically expanding buffers from struct buffer and erealloc(). 2007-01-12 03:51:04 +00:00
Michael Brown 77b7640af4 Fix the only bug (which was to use DBGC() in place of DBG()!) and add 4kB
alignment.
2007-01-12 03:28:03 +00:00
Michael Brown 132a8fe49d Quick and dirty test for emalloc() 2007-01-12 03:27:05 +00:00
Michael Brown 45ec9c907e First version of an external memory allocator (not tested) 2007-01-12 03:15:29 +00:00
Michael Brown 1d313234b3 Rename copy_user() to memcpy_user(). Add memmove_user() and
userptr_add().
2007-01-12 03:14:15 +00:00
Michael Brown 859da6bd32 Allow external code to update hidden memory regions. 2007-01-12 03:13:04 +00:00
Michael Brown 687c1e3227 Nothing (not even hidemem.c) uses this file! 2007-01-12 02:45:46 +00:00
Michael Brown 39a8ed827c Long since obsoleted by arch/i386/scripts/i386.lds 2007-01-12 02:43:10 +00:00
Michael Brown 2e088d9afc Obsoleted by arch/i386/interface/pxe/pxe_call.c 2007-01-12 02:42:14 +00:00
Michael Brown f81bf3bc52 We *do* have a __data16_array after all! 2007-01-12 02:37:47 +00:00
Michael Brown 2c66588f3e Add UNULL 2007-01-12 01:40:12 +00:00
Michael Brown 6c894c2a2e Fix typo 2007-01-12 01:37:38 +00:00
Michael Brown e4c6418ac0 We may be required to page-align modules, so let's make sure we catch
it if we don't.
2007-01-12 00:09:16 +00:00
Michael Brown 7bf94b5ad6 Allow for named images. 2007-01-11 23:45:18 +00:00
Michael Brown f59ad50504 Provide registration mechanism for loaded images, so that we can e.g.
refer to them by name from the command line, or build them into a
multiboot module list.

Use setting image->type to disambiguate between "not my image" and "bad
image"; this avoids relying on specific values of the error code.
2007-01-11 23:43:29 +00:00
Michael Brown 79a399c05a alloca() can be useful in some (limited) circumstances. 2007-01-11 23:19:31 +00:00
Michael Brown f31d91bce5 Populate multiboot information structure before calling OS. 2007-01-11 21:21:02 +00:00
Michael Brown ddbc60b5ae Whoever put together the grub multiboot.h header is insane. 2007-01-11 21:20:27 +00:00
Michael Brown c468c68661 Add command line that can be passed to executed images. 2007-01-11 21:19:29 +00:00
Michael Brown 200d92c76d Avoid namespace clashes 2007-01-11 19:42:26 +00:00
Michael Brown bcc98c78b8 Added fields present in the documentation but not in the header file. 2007-01-11 19:41:13 +00:00
Michael Brown dc51af59a4 Capable of starting a multiboot kernel (albeit without the multiboot
information table yet).
2007-01-11 18:41:15 +00:00
Michael Brown 9196e9069c Add PHYS_CODE, for use as in __asm__ ( PHYS_CODE ( ... ) ), comparable
to the REAL_CODE interface.
2007-01-11 18:40:46 +00:00
Michael Brown d488a172eb Capable of loading a multiboot image into memory 2007-01-11 17:44:42 +00:00
Michael Brown 7cf4a72389 Add placeholder elf_execute() 2007-01-11 17:44:07 +00:00
Michael Brown 819cd3f41c Limit -ENOEXEC to mean "this is not in my format". 2007-01-11 17:06:25 +00:00
Michael Brown 6a03552381 Distinguish between ENOMEM (as representing a lack of internal memory
as allocated by malloc()) versus all other errors, in particular
ENOBUFS (representing a lack of external buffer space, e.g. in a
device's TX queue or a user buffer).
2007-01-11 16:30:21 +00:00
Michael Brown 143e3b84a4 Downloaded from current grub CVS. 2007-01-11 16:22:03 +00:00
Michael Brown c810baad37 Use generic "struct image" rather than "struct elf". 2007-01-11 16:10:32 +00:00
Michael Brown c6c63d954d Rename "image" field to "data", because "image->image" is just confusing. 2007-01-11 16:07:30 +00:00
Michael Brown 4fc9333159 Move include/image.h to include/gpxe/image.h 2007-01-11 16:04:36 +00:00
Michael Brown d84ec0e5d5 Had this file lying around for ages; may as well check it in. 2007-01-11 15:31:50 +00:00
Michael Brown 91ac92bc86 Try image as ELF file first. (Don't yet actually try to execute it). 2007-01-11 15:27:06 +00:00
Michael Brown 3460860bef Print informative error message when boot fails. 2007-01-11 15:26:17 +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 d9204ef676 Use physical address in debug messages; they make more sense to read. 2007-01-11 15:08:58 +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 10980c12ee Add image directory back in 2007-01-11 14:43:15 +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 ceca6b185c Added user_to_phys() and memset_user(). 2007-01-11 14:27:27 +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 c6a4055fae Add phys_to_user() and copy_user(). 2007-01-11 14:01:20 +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 037da9d840 I hate NULL pointer dereferences. 2007-01-11 05:27:02 +00:00
Michael Brown 03390f0cd6 Use pkb_pad() rather than doing it the dangerous way :) 2007-01-11 05:26:16 +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 c0ef730ec4 Fix bug in buffer.c, add buffer mini-unit test. 2007-01-11 04:46:41 +00:00
Michael Brown 83fa318b86 Added strerror(0)=="No error", so that TCP protocols can use
strerror(rc) in their closed() methods without producing "Error
0x0000" when the connection is closed normally.
2007-01-11 04:01:31 +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 de042993c0 Warn when net device on an active route is not open. 2007-01-10 20:58:36 +00:00
Michael Brown d45c5e7ce7 Add "route" command (which currently only displays the routing table; it
can't modify it).
2007-01-10 20:51:14 +00:00
Michael Brown d9ba8f790b Add route() function to display routing table. 2007-01-10 20:38:20 +00:00
Michael Brown 78ded6604a Try booting from the "boot" network device first (i.e. the one which we
were loaded from).  The code to identify this device isn't present yet,
but the code to act upon the knowledge is.
2007-01-10 20:21:42 +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 489a4004d7 Give UNDI device a more meaningful name. 2007-01-10 05:52:04 +00:00
Michael Brown f396f1f9d3 Force ordering of commands within help list. 2007-01-10 05:13:20 +00:00
Michael Brown cef551376f Force ordering of commands in help list. 2007-01-10 05:10:30 +00:00
Michael Brown 77bb7b13a7 Having forced __table() to natural structure alignment, it now seems
that we *can* place arrays in tables, which means we can force the
order within a table without having to resort to explicitly numbered
sections on everything.
2007-01-10 05:08:05 +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 cc9b32c405 Remove uIP; we haven't used it for quite some time now. 2007-01-10 02:52:58 +00:00
Michael Brown 753e156844 Allow udp_{send,sendto,sendto_via} to be called outside of the
udp_senddata() callback.  This will simplify any UDP protocols that don't
need the temporary buffer.
2007-01-10 02:46:39 +00:00
Michael Brown 649b789e93 DHCP transmits via specified net device, so no need to create a dummy
routing table entry just to fool ipv4.c any more.
2007-01-10 02:37:23 +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 9869659895 Add interface management commands 2007-01-10 02:04:07 +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 e822bc2a90 Autopadding was sometimes overwriting the struct list_head at the end
of the packet buffer.  Although pkbuffs are guaranteed to be at least
PKB_ZLEN bytes long, there's no guarantee that the data starts at the
start of the packet buffer.

Since we have to align data for rtl8139 anyway, and since the start of
the packet buffer is guaranteed to be aligned to PKB_ALIGN, we may as
well just shuffle the packet down so that it starts at the start of
the packet buffer.  This simultaneously aligns the packet and ensures
that there is enough room for the zero-padding.
2007-01-09 21:01:55 +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 8a268073a7 Move start/stop/expire debug messages to DBG2() level. 2007-01-09 17:39:52 +00:00
Michael Brown 3c2cc59d25 Added ability to break ISR processing over several calls to poll().
This will allow us to implement RX quotas.
2007-01-09 17:04:10 +00:00
Michael Brown aa7bda7b47 Send EOI after enabling interrupt, in case the device had asserted IRQ
to the PIC while it was disabled.
2007-01-09 14:53:19 +00:00
Michael Brown a2ffe8c123 Allow boot sector to completely destroy real-mode stack, but still
manage to return control.
2007-01-09 14:13:59 +00:00
Michael Brown a9369bb503 Leave protected-mode return address on PM stack when issuing a
real_call(), rather than moving it to the RM stack and back again.
This allows the real-mode function to completely destroy the stack
contents, provided that it manages to return to real_call().
2007-01-09 14:13:06 +00:00
Michael Brown 2eeb7c4fe7 Define "connected" as
"when SYN is ACKed and we have already received SYN", or
  "when SYN is received and we have already had SYN ACKed"

rather than just

  "when SYN is ACKed"

This avoids spuriously calling the connected() method when we receive
a RST,ACK in response to a SYN.
2007-01-09 05:01:22 +00:00
Michael Brown 70cc3a164a Reset character attributes before start of welcome banner, in case
it's a serial console and remembers state from the previous program
run.
2007-01-09 04:51:27 +00:00
Michael Brown aaca21a2b6 We can't assert that the RX engine is idle in iscsi_done(), because it
may be called during the RX data processor, before the RX engine
transitions back to idle.  It doesn't really matter if the RX engine
isn't idle when iscsi_done() is called, because it will just pick up
where it left off on the next call.  (The same is not true for the TX
engine, so keep the TX engine assertion.)
2007-01-09 04:42:23 +00:00
Michael Brown 6ea07b9247 Use debug auto-colourisation. 2007-01-09 04:38:39 +00:00
Michael Brown 76525294ee Clean up connection closing and permanent failure logic. 2007-01-09 04:31:33 +00:00
Michael Brown 2738bdf74b Obsoleted by drivers/net/undionly.c 2007-01-09 03:22:11 +00:00
Michael Brown d606edb41d Added UNDI root bus driver (which saves including all the PCI bus code,
UNDI ROM code etc. when you just want a "undi.kpxe"-type image).

This driver cannot be used in conjunction with any other driver (it will
crash), or in any other format than .kpxe (it just won't find any network
devices).
2007-01-09 03:20:22 +00:00
Michael Brown 159930862f Added missing call to undinet_remove() 2007-01-09 03:08:01 +00:00
Michael Brown 6b09dd8244 undipci_probe() has to calculate busdevfn anyway, so we may as well pass
it directly to undi_load_pci().
2007-01-09 02:58:07 +00:00
Michael Brown ed44e3730d Avoid erasing non-existent signatures in undi_unload() 2007-01-09 02:53:24 +00:00
Michael Brown a2be828a33 Avoid leaving preloaded_undi with invalid PXENV+/!PXE structure
addresses if the signature checks fail.
2007-01-09 02:52:28 +00:00
Michael Brown 697bcc9d24 Since we now always unload the base code stack (even if we keep UNDI),
we can never return to the PXE stack and must always use INT 18.
2007-01-09 02:46:58 +00:00
Michael Brown f2f492a536 If preloaded device matches, use that rather than going via the UNDI
loader.
2007-01-09 02:32:06 +00:00
Michael Brown 2436dac281 Populate preloaded_undi device when applicable. 2007-01-09 02:29:54 +00:00
Michael Brown 937289cdc8 Provide storage for an undi_device structure representing the preloaded
UNDI stack.
2007-01-09 02:29:18 +00:00
Michael Brown 47222d5ed8 Call PXENV_UNDI_GET_NIC_TYPE to identify NIC physical device.
Record all information required for populating a struct undi_device.

Make debugging output more human-readable.
2007-01-09 01:42:28 +00:00
Michael Brown cea2221737 Use fixed-width fields in struct undi_device, so that pxeprefix.S will be
able to populate the structure.
2007-01-09 01:41:26 +00:00
Michael Brown fbdebac5f4 Copy pxelinux's shutdown sequence: use UNLOAD_STACK without STOP_BASE,
and call UNDI_SHUTDOWN first to make sure the NIC is in a safe state.
2007-01-08 05:06:26 +00:00
Michael Brown 8f8af10b22 New strategy: always stop both base code and UNDI. Always free base code
memory (unless we get an error while stopping the base code).  Leave UNDI
resident (though stopped) for .kpxe.

Still need to add code to record the device identification parameters
prior to stopping UNDI.
2007-01-08 03:48:26 +00:00
Michael Brown 075d79f6d4 Checking in obsolete but working memory-scanning code just for the record 2007-01-08 03:45:00 +00:00
Michael Brown 67e824b539 Neaten up debug messages 2007-01-08 03:42:19 +00:00
Michael Brown f08093b0d9 Remove spurious debug message 2007-01-08 03:37:32 +00:00
Michael Brown f0edd11c7d Now split out into undirom.c and undiload.c 2007-01-08 03:35:51 +00:00
Michael Brown 07e5d4e3dc Added any-PCI-device UNDI driver 2007-01-08 03:34:47 +00:00
Michael Brown 66f7bcc785 Tidied up debug messages 2007-01-08 03:34:06 +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 a6ba48e51e Added debugging statements 2007-01-08 03:04:54 +00:00
Michael Brown 239965ff3b Added missing includes 2007-01-08 03:03:42 +00:00
Michael Brown 6115356859 Added missing declarations 2007-01-08 02:51:27 +00:00
Michael Brown aff96c13d2 Added missing include 2007-01-08 02:51:04 +00:00
Michael Brown afc01a1a7f Split UNDI load/unload out into undiload.c. 2007-01-08 02:48:17 +00:00
Michael Brown 359c888aec Remove obsolete includes 2007-01-08 02:39:56 +00:00
Michael Brown 6fc75f659b Separated out UNDI ROM location code into undirom.c, and use struct
undi_rom rather than struct pxe_driver.  (This is part of the naming
consistency fixes).
2007-01-08 02:38:10 +00:00
Michael Brown 675fe200e5 Use "struct undi_device" instead of "struct pxe_device", and use the
function prefix "undinet_" and the variable name "undinic" in undinet.c,
so that we can reserve the variable name "undi" for a struct undi_device.

The idea is that we preserve the Etherboot 5.4 convention that the "UNDI"
code refers to our using an underlying UNDI stack, while the "PXE" code
refers to our providing a PXE API.
2007-01-08 02:24:53 +00:00
Michael Brown 36c1e1aa57 Renamed undi.c to undinet.c. (undi.c will become the UNDI PCI driver) 2007-01-08 02:02:07 +00:00
Michael Brown 234d81728a Obsolete 2007-01-08 02:00:55 +00:00
Michael Brown 7b9617f5df Add device to hierarchy before calling the driver's probe() function; this
way everything remains consistent if the probe() ends up creating child
devices.
2007-01-08 01:29:51 +00:00
Michael Brown d3558fdd3a Remove accidentally checked-in code 2007-01-07 19:05:28 +00:00
Michael Brown 85a41b25fe Move START_UNDI, UNDI_STARTUP, UNDI_INITIALIZE and
UNDI_GET_INFORMATION calls into drivers/net/undi.c.  undi_probe() now
gets given a pxe_device representing a PXE stack that has been loaded
into memory but not initialised in any way.
2007-01-07 19:02:17 +00:00
Michael Brown 23cb837951 Remember to enable/disable the interrupt at the PIC.
Handle failures in undi_open() properly.
2007-01-07 13:31:39 +00:00
Michael Brown 9ab5c0dde7 Remove redundant debug message 2007-01-05 16:15:50 +00:00
Michael Brown fa9055197d UNDI loader routine now works 2007-01-05 16:11:05 +00:00
Michael Brown 477a70697a Added PnP BIOS scanning code, separated out from the UNDI driver 2007-01-05 16:10:03 +00:00
Marty Connor 7dee2556f4 Fixed typo 2007-01-05 16:09:47 +00:00
Michael Brown d0a3cc3417 Avoid creating implicit memcpy()s 2007-01-05 14:48:20 +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 ef50ea0b2b Renamed undi_net.c to undi.c. 2007-01-04 19:43:35 +00:00
Michael Brown 6cf488dcf7 Obsolete; net driver functionality is now in undi_net.c and bus driver
functionality is now in pxebus.c.  (Not all bus functionality is ported
across yet.)
2007-01-04 19:42:05 +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 e28db95de6 Obsolete 2007-01-04 19:37:31 +00:00
Michael Brown 3b2f6e4585 Currently unusable; do not attempt to compile 2007-01-04 19:37:21 +00:00
Michael Brown 70acce06e4 This file is no longer used 2007-01-04 19:36:31 +00:00
Michael Brown b12cd68726 Ripped out everything except the ability to send EOI to the PIC. 2007-01-04 19:36:18 +00:00
Michael Brown de2fc50f4c Add as a separate file so that we can do "make bin/xxxx.kpxe" rather than
having to edit PXELOADER_KEEP_ALL as a config option.
2007-01-04 19:35:10 +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 20681d6168 Allow empty checksums on received packets 2007-01-04 05:17:28 +00:00
Michael Brown 290c5ee779 Don't automatically call gateA20_set() when returning from a real-mode
call.
2007-01-04 04:32:18 +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 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 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 35b5e5d3f5 Minirouting table entries hold a persistent reference to a net_device. 2007-01-04 03:10:21 +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 b0daa99dce Send RST packets when we get a non-matching connection, or receive an
out-of-range ACK.
2007-01-03 22:21:59 +00:00
Michael Brown eea1167a85 Accept RST on received packets 2007-01-03 21:51:36 +00:00
Michael Brown 94fc68895d Improve consistency between TCP and UDP RX datapaths 2007-01-03 21:13:11 +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 285beeff7c Tidy up debug messages
Move routing into a separate function
2007-01-03 16:39:11 +00:00
Michael Brown 718294553b Fix compiler warning 2007-01-03 15:56:15 +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 83e1340d88 Use autocolourisation 2006-12-29 14:09:23 +00:00
Michael Brown feb4f65d1e Use auto-colourisation for debug messages.
Truncate TX length to TCP window at time of transmission rather than at
time of adding to TX packet; this is conceptually cleaner and also allows
the application to call tcp_send() multiple times to build up a single
packet.
2006-12-29 14:03:03 +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 be31970e36 Don't send a second FIN if we receive a FIN while in FIN_WAIT_2 2006-12-27 23:44:05 +00:00
Michael Brown 61ed298bc7 Merge changes from mcb-tcp-fixes branch. 2006-12-27 23:09:46 +00:00
Michael Brown b6def29f2b Keep running the main processing loop while waiting for input. 2006-12-27 22:59:40 +00:00
Michael Brown 1a11cc5c5b Added times to start/stop log messages 2006-12-27 22:56:39 +00:00
Michael Brown 4cc1c1bd4c Ensure that old TCP connection state is destroyed before attempting to
reopen connection.  (The TCP API will soon change to render this step
unnecessary.)
2006-12-22 13:04:50 +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 d6f9152bfa Avoid null pointer dereferences when no username/password specified. 2006-12-21 18:38:24 +00:00
Michael Brown 6ceb55fad0 When login fails, leave the session open but not in full feature
phase.  In iscsi_issue(), detect this state and immediately refuse the
operation.  This avoids trying multiple logins when scsi.c tries
several times to read the drive capacity.
2006-12-21 17:43:43 +00:00
Michael Brown 024809d454 Use a bigger buffer for the initiator IQN 2006-12-21 17:42:02 +00:00
Michael Brown ab242a760d Add ability to shut down iSCSI connection 2006-12-21 17:17:47 +00:00
Michael Brown 7ce3df65c2 Default to port 0 (sic). 2006-12-21 17:16:06 +00:00
Michael Brown 286db6ffa3 Print explicit error message on iSCSI boot failure, and add
"Permission denied" as an error text to strerror().
2006-12-21 16:16:24 +00:00
Michael Brown fbc7b4dfa8 Add iSCSI initiator IQN as a setting 2006-12-21 16:08:37 +00:00
Michael Brown f58f193633 Engage brain: since when was zero >= 0x80 ? 2006-12-21 05:15:26 +00:00
Michael Brown 9c3b4e5b0b Some BIOSes return 0xe0 for extended characters. Just assume that
anything over 0x80 is an extended character.
2006-12-21 00:07:48 +00:00
Michael Brown 839d425c6e Added missing header 2006-12-20 23:43:44 +00:00
Michael Brown dbb7b30cca Return ANSI sequences for special keys 2006-12-20 23:42:28 +00:00
Michael Brown f33a03c1e5 Use getkey() and symbolic key names. 2006-12-20 22:25:54 +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 4b2b8b02ab Use symbolic key names, and avoid moving beyond end of string 2006-12-20 22:21:09 +00:00
Michael Brown 46c3eeba2a Fix definition of KEY_END 2006-12-20 22:17:44 +00:00
Michael Brown c5df1bc7df Use getkey() and symbolic key names. 2006-12-20 22:12:53 +00:00
Michael Brown ae728f8d23 Some key sequences seem to end with a tilde 2006-12-20 22:12:25 +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 43d976edd0 Prevent NULL from ever pointing to some real code or data. (This was
causing the serial console to ignore input, because it happened to end up
linked with serial_ischar() at address 0, which core/console.c decided was
invalid).
2006-12-20 20:28:20 +00:00
Michael Brown 6ceaa158da Return -EIO when verification fails, instead of -EINVAL. 2006-12-20 14:11:50 +00:00
Michael Brown cbeec25662 settings_ui() now returns a status code. 2006-12-20 11:42:48 +00:00
Michael Brown 07ddaedd33 Add EIO.
Kill errortab array; it can screw up alignment.
2006-12-20 07:57:40 +00:00
Michael Brown 60a3f77711 Close UDP connection when DHCP completes. 2006-12-20 07:19:48 +00:00
Michael Brown c21502acad No longer needed 2006-12-20 07:13:46 +00:00
Michael Brown a6d1815bc6 Obsolete for some time now. 2006-12-20 07:05:32 +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 9ab17484d0 Explicitly call erase(), to cope with platforms where the ANSI clear
screen sequence doesn't work (like bios_console.c on some platforms).
2006-12-20 06:12:04 +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 666b309c0c Add instruction row, and save option 2006-12-20 05:37:15 +00:00
Michael Brown 75430e813e Only need printf(), so use vsprintf.h instead of console.h 2006-12-20 05:33:12 +00:00
Michael Brown 2b97d2ebc5 8-bit integers are 1 byte long, not 8... 2006-12-20 05:04:17 +00:00
Michael Brown e4f489636f Clear message on alert row before printing new one 2006-12-20 05:03:55 +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 fc7dcc201b Added messages for some of the most common errors 2006-12-20 03:54:20 +00:00
Michael Brown 7766e34ed1 Split strerror() out from errno.c 2006-12-20 03:49:36 +00:00
Michael Brown 65e97c4f22 Alert when saving settings fails 2006-12-20 03:43:24 +00:00
Michael Brown 4b33c03942 Increase colour pair limit 2006-12-20 03:42:35 +00:00
Michael Brown c66b99272f Fix (hopefully) the scrolling logic 2006-12-20 03:41:55 +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 4f506328ad Use -ENOSPC rather than -ENOMEM, to distinguish the cases "generic out of
memory" and "no space left for DHCP options"
2006-12-20 03:33:37 +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 1e322d4b4c Add (partly-functional) user interface for editing configuration settings 2006-12-20 03:04:07 +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 82ec3fc5cc Reset screen on exit as well as entry 2006-12-20 01:30:40 +00:00
Michael Brown 24f945edce Add "exit --help" to preempt the pedants. 2006-12-20 00:44:16 +00:00
Michael Brown d7cffd33e1 Remove obsolete mechanism for including nvo_cmd.o 2006-12-20 00:39:52 +00:00
Michael Brown ec5789bf0c Select required commands via config.h 2006-12-20 00:39:06 +00:00
Michael Brown 9f953322a1 Remove warning (at least on platforms with uint32_t == unsigned long). 2006-12-20 00:34:53 +00:00
Michael Brown a1685cb3e2 Move nvo_cmd.c to hci/commands. 2006-12-20 00:31:34 +00:00
Michael Brown 4d0d275ce4 Functionality now replaced by a combination of readline() and system(). 2006-12-20 00:27:11 +00:00
Michael Brown 38ad706b08 Use new minimal shell 2006-12-20 00:26:01 +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 a646e38f03 Use stdlib.h for malloc() instead of malloc.h. 2006-12-19 23:42:46 +00:00
Michael Brown b613086bfe Explicitly print out-of-memory message to avoid tricking the user into
thinking that a command executed successfully.
2006-12-19 23:37:51 +00:00
Michael Brown 22289ca8f6 Functioning readline() 2006-12-19 23:25:44 +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 abbfbd678d Explicitly move cursor to top-left of screen, in case the clear screen
call doesn't do it.
2006-12-19 22:37:12 +00:00
Michael Brown b3c535e550 Skeletal (non-echoing) version of readline() 2006-12-19 22:35:10 +00:00
Michael Brown 19e1d674d3 Catch attempts to print NULL strings 2006-12-19 22:33:42 +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 c1bac56f85 Use current attributes when erasing. 2006-12-19 01:17:10 +00:00
Michael Brown cdfe61662b Assume a 24-line screen, since we can't (easily) avoid scrolling after
printing in the bottom-right position.
2006-12-19 01:16:43 +00:00
Michael Brown 0aa1223264 Optimise bios_putchar for speed(!) by avoiding two separate real-mode
calls.  This does make a visible difference when clearing the screen with
werase() inside bochs or qemu.
2006-12-19 01:15:05 +00:00
Michael Brown e85bf52446 Avoid cursor move on every single character 2006-12-19 00:51:32 +00:00
Michael Brown 8e460de6be Obsolete, and no longer functions 2006-12-19 00:34:54 +00:00
Michael Brown e7cc1c6c35 Use ANSI escape sequence to reset and clear terminal, rather than using
the (slow) werase().
2006-12-19 00:33:36 +00:00
Michael Brown edbdce6e3d Now basically functioning on ANSI-supporting consoles. 2006-12-19 00:27:25 +00:00
Michael Brown 09f9142cbf Adjusted to use the normal internal mucurses API rather than accessing
stdscr directly.
2006-12-18 21:44:44 +00:00
Michael Brown b6b36e8ac4 Remove more dynamic allocation 2006-12-18 21:28:35 +00:00
Michael Brown 04d15fb8f8 There seems to be no reason why pos_x is static... 2006-12-18 21:12:58 +00:00
Michael Brown 1f74fa2cad Remove some unnecessary use of calloc() for tiny memory areas. 2006-12-18 21:11:30 +00:00
Michael Brown ba26defa6e Convert _{store,restore}_cursor_pos to static inlines. 2006-12-18 20:46:41 +00:00
Michael Brown 56970053f4 wmove() is part of the public curses API, and already defined in curses.h 2006-12-18 20:38:07 +00:00
Michael Brown 1755d8df7a Renamed core.h to mucurses.h 2006-12-18 16:52:21 +00:00
Michael Brown 426e847c4c Rename core.c->mucurses.c; bin/core.o is too generic to belong to mucurses. 2006-12-18 16:50:02 +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 a497e16767 The "increment MAC address by port number" hack applies only to EF1. 2006-12-18 15:28:34 +00:00
Michael Brown 530bbf7cca Print welcome banner in bold (which will come out as bright white text
on the BIOS console, or genuine bold font on a xterm "serial" console),
just to prove the concept of the ANSI escape sequence handling.
2006-12-18 01:31:33 +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 8a45f619a9 Fix building on gas versions that don't auto-insert addr32 prefixes 2006-12-12 19:07:18 +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 3bd7e479a2 Catch SCSI errors, and work around the start-of-day CHECK CONDITION
that some targets send.
2006-12-12 18:18:54 +00:00
Michael Brown c0ec119ede Typo 2006-12-12 16:18:42 +00:00
Michael Brown 04c09823bd Request all the options that we're prepared to do anything with. 2006-12-12 16:18:20 +00:00
Michael Brown 240c9512bb Added "clear" command 2006-12-12 15:52:19 +00:00
Michael Brown 007ca97f25 Added clear_setting() 2006-12-12 15:49:46 +00:00
Michael Brown 0a26cd2933 Cope with system(""). 2006-12-08 17:07:12 +00:00
Michael Brown 69b9048e1a Added "priority" and "root-path" options 2006-12-08 16:30:14 +00:00
Michael Brown 72b1629cee Add placeholder ibft.h 2006-12-08 16:16:21 +00:00
Michael Brown 9aa3e10d7c Use root-path option (as per RFC 4173) rather than filename option to
determine iSCSI boot parameters.
2006-12-08 15:53:49 +00:00
Michael Brown a1af111a87 Also request root-path. 2006-12-08 15:49:46 +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 a77b32aaf6 D'oh d'oh d'oh d'oh d'oh d'oh d'oh d'oh d'oh 2006-12-08 03:07:15 +00:00
Michael Brown cc697eeb1f Added "exit" back in as a standardised command. 2006-12-08 01:40:06 +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 29db66fb51 Add support for non-volatile stored options in the RTL8139 EEPROM. 2006-12-06 20:45:44 +00:00
Michael Brown 2863d1a1de inet_aton() has a non-traditional return value 2006-12-06 20:44:29 +00:00
Michael Brown 38ae94f8ce A cleaner method of handling login redirection; just use the existing
reconnection mechanism.  This avoids the problems of trying to reuse
the TCP connection structure before the old connection has cleanly exited.
2006-12-06 19:53:56 +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 ac401f481d Verify data after writing 2006-12-06 18:51:31 +00:00
Michael Brown 5edb85c8b4 Work around another confused-by-RST bug 2006-12-06 18:09:33 +00:00
Michael Brown d88832ad7e Support PXE and iSCSI by default 2006-12-05 23:26:07 +00:00
Michael Brown b9f9230661 Work around another instance of the port re-use bug. 2006-12-05 23:15:35 +00:00
Michael Brown 8c3d09c564 Tweaked retry messages 2006-12-05 23:12:54 +00:00
Michael Brown 9600af14a3 Added debug messages 2006-12-05 22:53:49 +00:00
Michael Brown cc0b92652f Call closed() method only when the connection is genuinely in the
TCP_CLOSED state (i.e. after the final FIN/ACK exchange), and has been
removed from the list of TCP connections.
2006-12-05 22:53:28 +00:00
Michael Brown fcc70c9d60 Ensure that tcp_rx() always frees its received packet buffer. 2006-12-05 21:23:23 +00:00
Michael Brown 28c711b91d Killed off spurious <stdio.h> inclusion 2006-12-05 21:16:52 +00:00
Michael Brown 3fbfbad0f7 Avoid calling NULL methods! 2006-12-05 21:09:37 +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 a128b33b8b The VPD engine is broken and can't actually handle placing VPD
anywhere other than offset 0 within the EEPROM, so we have to put our
settings at 0x100 instead.
2006-12-05 17:56:13 +00:00
Michael Brown 4c3e0fede5 Adjust EEPROM/flash detection to fit expected manufacturing practice. 2006-12-05 16:00:06 +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 c6060a8fea Tidy up some more output. The command-line code needs some severe
overhauling, but this is not the time to do it.
2006-12-05 10:27:16 +00:00
Michael Brown e852f8e504 Slightly tidied up console messages. 2006-12-05 10:14:58 +00:00
Michael Brown cb883b3faf Change some debugging messages to use DBG() 2006-12-05 10:01:00 +00:00
Michael Brown 8bff0f0619 Avoid draining the keyboard buffer during gateA20_set(). It shouldn't
technically be necessary, because the "enable A20" command requires
only that the keyboard controller is ready to accept input (i.e. that
its input buffer is empty), and shouldn't also require that the
keyboard is ready to send output (i.e. that its output buffer is also
empty).  See http://www.smsc.com/main/tools/io-bios/42i.pdf section
3.1 ("Command Invocation") for a justification.

gateA20_set() is called on every real-mode transition (in case some
idiot piece of external code such as Intel's PXE stack decided it
would be fun to re-disable A20), so draining the keyboard buffer means
that we end up losing keypresses on some systems.  In particular, this
makes typing at the command line almost impossible, and causes
Etherboot to ignore Ctrl-Alt-Del.

We should really implement a gateA20_test() function to verify that
gate A20 has been correctly enabled, and think about adding other
commonly-used methods such as Fast Gate A20.
2006-12-05 09:45:39 +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 16b81e442f Added more debug messages 2006-12-04 23:47:44 +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 6b45947a59 Added debug statements 2006-12-04 23:20:56 +00:00
Michael Brown 052ef6dc5a Added nvs_write(). This shares a lot of code in common with nvs_read();
this can probably be optimised down quite a lot.
2006-12-04 22:06:54 +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 f944737045 Fixed two logic errors that were cancelling each other out. 2006-12-04 21:12:52 +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 70d4b4f7cf Make the "drive number" option apply to iSCSI as well as AoE 2006-11-29 00:27:10 +00:00
Michael Brown 3234ef1b0b Merged changes from Solarflare 2006-11-28 13:25:23 +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 6a18721ce8 Fixed off-by-one error 2006-11-22 04:54:17 +00:00
Michael Brown fdaddd969a Added "name" field to digest algorithms 2006-11-21 16:14:50 +00:00
Michael Brown d37f82509f Added debug statements.
Don't crash when called on an uninitialised chap structure; this
allows us to avoid extra checks within iscsi.c to make sure that we
receive the CHAP_XXX keys in a sensible order.
2006-11-21 16:14:17 +00:00
Michael Brown a9415d3da2 Reduce from 157 to 123 bytes 2006-11-21 16:01:12 +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 ea97fe42dd Note to self: do not write code late at night 2006-11-15 04:16:26 +00:00
Michael Brown 5753f2c58b May as well add octal support to strtoul() 2006-11-15 02:57:24 +00:00
Michael Brown bbfb2e02fd Fixed endp bug in strtoul() 2006-11-15 02:54:28 +00:00
Michael Brown 65ff5357f1 Extend strtoul() to cope with hex as well as decimal. Doesn't cope
with octal yet, but we can probably live without that.
2006-11-15 02:52:06 +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 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
Marty Connor 1da4faa896 include stdio.h to suppress printf warning, general warnings fixups 2006-09-27 04:04:55 +00:00
Marty Connor 757618edea eth_ntoa and warnings cleanup 2006-09-27 03:05:21 +00:00
Marty Connor cd8168b071 eth_ntoa cleanup. still has warnings. needs work. 2006-09-27 03:00:21 +00:00
Marty Connor 727a88709e eth_ntoa and warnings cleanup 2006-09-27 02:18:07 +00:00
Marty Connor 0d1087a5de eth_ntoa and warnings cleanup 2006-09-27 02:07:59 +00:00
Marty Connor 859cc71158 compilation warnings cleanup 2006-09-26 22:18:00 +00:00
Marty Connor a02dccdafa eth_ntoa cleanup 2006-09-26 22:11:45 +00:00
Marty Connor b88aa51b07 warnings cleanup (still gives lots of compilation warnings from unused functions and missing legacy support) 2006-09-26 22:09:03 +00:00
Marty Connor 9588e20828 warnings cleanup 2006-09-26 22:04:33 +00:00
Marty Connor e753444e04 compilation warnings cleanup 2006-09-26 21:58:08 +00:00
Marty Connor cf84605271 eth_ntoa and compilation warnings fixes 2006-09-26 21:33:12 +00:00
Marty Connor 097c1b341d eth_ntoa fixes 2006-09-26 21:06:29 +00:00
Michael Brown 7952bb76ec Minor fix 2006-09-25 14:41:54 +00:00
Marty Connor cce8755fb8 eth_ntoa and warnings fixups, memcpy compilation fix 2006-09-25 09:06:50 +00:00
Marty Connor d86c080024 eth_ntoa and warnings fixups 2006-09-25 03:52:01 +00:00
Marty Connor eefac0e258 eth_ntoa and warnings fixups 2006-09-25 03:21:25 +00:00
Marty Connor d4b060be3b eth_ntoa and warnings fixups 2006-09-25 02:55:13 +00:00
Marty Connor f4d0f2e5b5 eth_ntoa and warnings fixups 2006-09-25 02:47:50 +00:00
Marty Connor 9e71390930 eth_ntoa and warnings fixups 2006-09-25 02:41:46 +00:00
Marty Connor 447ed77525 eth_ntoa and warnings fixups 2006-09-25 02:18:11 +00:00
Marty Connor 3ffeffebb2 eth_ntoa and warnings fixups 2006-09-25 02:11:52 +00:00
Marty Connor c0e91255d0 eth_ntoa fixups 2006-09-20 00:20:37 +00:00
Marty Connor fe62800bad eth_ntoa fixups 2006-09-20 00:06:52 +00:00
Marty Connor 637411c2ab eth_ntoa fixups 2006-09-20 00:00:44 +00:00
Marty Connor 3df3ac72e1 eth_ntoa fixups 2006-09-19 16:33:46 +00:00
Marty Connor 896f871fba eth_ntoa fixups 2006-09-19 15:58:37 +00:00
Marty Connor 077bbc220a eth_ntoa fixup 2006-09-19 15:49:57 +00:00
Marty Connor 338a6de549 eth_ntoa fixup, some warnings fixups (isa/pnp fixups still needed) 2006-09-19 15:23:28 +00:00
Marty Connor 5a39995f8b eth_ntoa fixup, _disable arg fixup 2006-09-19 15:17:51 +00:00
Marty Connor c4964c3e3a fix args to _disable routine 2006-09-19 15:01:16 +00:00
Marty Connor 31d65dd73f Minor edit to make HEAD build 2006-09-19 14:16:15 +00:00
Michael Brown 1a944a894e Killed 2006-09-18 21:57:59 +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
Marty Connor be0b19a690 commented out contents of core/nic.c, which should now be obsolete. 2006-09-18 15:08:08 +00:00
Marty Connor a9cb4ca079 DBG MAC addr printout in driver 2006-09-15 12:54:11 +00:00
Marty Connor a998286c8b change MAC address printout to DBG using eth_ntoa (temporary legacy support) 2006-09-15 12:42:43 +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 56a3ff7202 get rid of compile warnings (except intentionally generated ones) 2006-09-14 20:54:05 +00:00
Marty Connor c30623b739 fix DBG macro unknown variable 2006-09-14 20:34:53 +00:00
Marty Connor b41f754e3a Fix compile warnings, remove unused var 2006-09-14 17:58:23 +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
Marty Connor 08d7ea1d34 Fixed DBG macro format, fixed compile warnings. removed extra parameter from mtd80x_disable(...) 2006-09-14 17:15:53 +00:00
Marty Connor 35f90278a8 Remove nic_disable call from drivers. Call should be made at a higher level 2006-09-14 14:51:38 +00:00
Marty Connor 1ed6e69ea5 Remove printf of MAC address in driver. 2006-09-14 14:06:33 +00:00
Michael Brown 4ef1ef0ee4 Restored the le32_to_cpus() and cpu_to_le32s() calls 2006-09-11 17:54:50 +00:00
Michael Brown bb8725bffa Added the "swap in place" macros 2006-09-11 17:54:19 +00:00
Michael Brown 013f8c119a Tidied up. 2006-09-11 17:45:51 +00:00
Michael Brown 2eed0bb8e5 Reduced size from 2087 bytes to 1056 bytes 2006-09-11 17:18:06 +00:00
Michael Brown 48bdde5d7b Taken from Linux's md5.c. This implementation is not very
size-efficient, and will probably be rewritten.

The md5.c from MatrixSSL is too ugly to consider importing.
2006-09-11 16:30:36 +00:00
Michael Brown 1ddfce2308 Generalisation of a message digest algorithm 2006-09-11 16:29:45 +00:00
Michael Brown 0566ab2a2f Added geometry-guessing code based on the partition table 2006-09-08 22:22:03 +00:00
Michael Brown 21bc2015f2 Fix gcc-induced reference to memcpy 2006-09-01 10:48:35 +00:00
Michael Brown 69d2261016 Check that serial port init actually happens 2006-09-01 00:26:32 +00:00
Michael Brown 66dcd22f61 Added debug to catch initialisation failures 2006-09-01 00:19:09 +00:00
Michael Brown 78dd963c1f Check to see if we've reached the end of the map before attempting to
skip past an empty region, otherwise we end up generating an infinitely
long e820 map.  (Yes, there *are* real systems that provide e820 maps
with a zero-length region at the end...)
2006-08-31 13:25:45 +00:00
Michael Brown c399e88aa3 Hopefully fix gcc3 build issue 2006-08-30 13:55:52 +00:00
Michael Brown 095fce14f8 Added extra debugging 2006-08-30 13:39:07 +00:00
Michael Brown 7e95980858 Added iBFT construction to iSCSI boot test 2006-08-27 23:54:20 +00:00
Michael Brown 22511400c7 Added generic function for calculating ACPI table checksum 2006-08-27 22:02:08 +00:00
Michael Brown c46126bfa4 Does anyone still use 9600 baud? 2006-08-27 01:39:11 +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 5a54225aef Added support for INT 13,15; NTLDR calls it (though it may not
actually do anything with the result, since it carried on using us
even when we returned failure).
2006-08-27 01:22:01 +00:00
Michael Brown 40724431e8 Added support for INT 13,15; NTLDR calls it (though it may not
actually do anything with the result, since it carried on using us
even when we returned failure).
2006-08-26 23:42:02 +00:00
Michael Brown 19883779ba Use TEXT16_CODE() rather than manually specifying ".code16" etc, since
our manual ".code32" will break a KEEP_IT_REAL build.
2006-08-24 18:43:28 +00:00
Michael Brown 028bc034e4 Always update the PnP checksum, even if the ident string is not being set. 2006-08-24 17:56:46 +00:00
Michael Brown b4e559d7e2 Added basic profiling support 2006-08-24 16:22:56 +00:00
Michael Brown 6abfaa153b Towards making KEEP_IT_REAL work again.
Fix bug that caused over-allocation of .text16 and .data16 memory areas
by a factor of 16.
2006-08-24 13:18:05 +00:00
Michael Brown cddf8df8d4 Quick utility to pad floppy disk images for vmware/qemu 2006-08-23 03:07:41 +00:00
Nikhil Chandru Rao dccb8358bd Fixed a bug in the TCP state machine. Added a transition from ESTABLISHED to LAST_ACK on receiving a FIN,ACK 2006-08-19 16:14:53 +00:00
Nikhil Chandru Rao d1d334b8e1 IP6 support 2006-08-19 15:58:22 +00:00
Michael Brown f1e1dfae3d Added RX tracing as well. 2006-08-16 00:15:40 +00:00
Michael Brown cf2178f885 Added debug strings. 2006-08-16 00:05:24 +00:00
Michael Brown bb3df618b8 Remove old-style debug message 2006-08-16 00:02:43 +00:00
Michael Brown 0743dc5b0d Added some minimal debugging for transmitted PDUs. 2006-08-15 23:56:18 +00:00
Michael Brown 27ba2d7527 Take out unused cleanup() function so that we can remove the link
dependency on dev.o.
2006-08-14 22:52:35 +00:00
Michael Brown d475ecd561 Removed TAGGED_IMAGE from the default build; NBI has been broken for ages. 2006-08-14 22:46:50 +00:00
Michael Brown dbf3482ef5 Removed obsolete print_config() 2006-08-14 22:45:22 +00:00
Michael Brown dd59181a0a Removed DNS from the default configuration; it hasn't been updated to
the new UDP API yet.
2006-08-14 22:42:56 +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
Derek Pryor 562ab6d65c Bug fixes to the HTTP protocol code 2006-08-12 19:05:08 +00:00
Derek Pryor 0f88703019 Bug fixes to the HTTP protocol code 2006-08-12 18:54:59 +00:00
Michael Brown c48170ffaf Print net device name when making request. 2006-08-11 18:49:58 +00:00
Michael Brown 3c35a0b16d Added cmdl_show proof-of-concept 2006-08-11 18:40:27 +00:00
Michael Brown dd9399f527 Added "hostname" and "ip" as sample settings 2006-08-11 18:29:20 +00:00
Michael Brown fe774fe356 Added ipv4 configuration type 2006-08-11 18:22:41 +00:00
Michael Brown 7029fb8eff Add string configuration type 2006-08-11 18:16:57 +00:00
Michael Brown db0ff1731f Fail gracefully when set_dhcp_option() is called with options==NULL. 2006-08-11 18:16:34 +00:00
Michael Brown db46972349 Added basic infrastructure for manipulating settings. 2006-08-11 18:00:22 +00:00
Derek Pryor 3b45f05be4 Removing because of conflict with new HTTP protocol 2006-08-11 14:13:58 +00:00
Derek Pryor 25ea34a8d7 New HTTP protocol and test code 2006-08-11 14:13:02 +00:00
Michael Brown 2497270c14 command->data_{in,out} are now userptr_t, so it is invalid to compare
against NULL.
2006-08-10 17:35:14 +00:00
Michael Brown ea5fa82b91 Fixed variable name in assertion 2006-08-10 17:09:48 +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 4afc494b83 Both the !PXE and PXENV+ structures must be paragraph-aligned 2006-08-09 18:22:25 +00:00
Michael Brown c3a4f3c5da Towards an RFC2988-compliant timer. 2006-08-09 15:54:17 +00:00
Michael Brown f0718d562f Don't call stop_timer() from within the timer expiry callback; it's
already stopped.

Don't call start_timer() when sending a dataless ACK.  This may or may
not be the right thing to do; I can't tell.

Back out broken "send ACK only if required to" logic temporarily.
2006-08-09 15:50:20 +00:00
Nikhil Chandru Rao 3aff701001 Changed the TCP state machines behaviour in the ESTABLISHED state 2006-08-09 15:04:26 +00:00
Michael Brown dc8b96b446 Temporarily work around the bug when port numbers are reused between
subsequent runs.
2006-08-09 14:44:58 +00:00
Michael Brown 09688cb3b5 Correct some packet ownership and freeing bugs. 2006-08-09 14:27:07 +00:00
Michael Brown 43d601b678 out_flags was being set but never used.
Use just random() to allocate initial sequence numbers; the previous
algorithm ended up with a high probability of zeroing the high word.
2006-08-09 13:35:03 +00:00
Michael Brown 065a2a486d Port the UDP port allocation code to TCP 2006-08-09 12:08:20 +00:00
Michael Brown de0c36a98a Remove some of the confusion surrounding the amount to strip off from
a TCP packet before passing to newdata().
2006-08-09 12:01:09 +00:00
Michael Brown 867c7aef59 iphdr->hlen includes the IP header, so truncate packet *before*
stripping the header.  Also fix an htons/ntohs confusion.
2006-08-09 11:52:53 +00:00
Marty Connor ee9ae8130a Remove _PROTOCOL macros for gcc 3.2 compatibility 2006-08-09 04:42:14 +00:00
Marty Connor dd7e103d58 Make VERSION_MAJOR for gPXE be 0 2006-08-09 03:43:41 +00:00
Michael Brown 0dd0a8366e Removed obsolete line merged in with the cmdline stuff 2006-08-09 03:22:29 +00:00
Michael Brown 504a705d9e Do no evil. :) 2006-08-09 03:21:02 +00:00
Michael Brown c9e6c33bba Attempt a PXE NBP boot as the TFTP test. 2006-08-09 03:00:11 +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 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
Michael Brown 56c995ff60 Aborted 2006-08-09 02:37:05 +00:00
Marty Connor 41af7457a8 Merge of Fredrik Hultin command_line 2006-08-09 02:30:35 +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 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 fd07f56f0d Note to self: learn to count. 2006-08-09 00:56:07 +00:00
Michael Brown 843bcc291d Added missing __from_text16()s when passing pointers to PXE NBP. 2006-08-09 00:39:21 +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 751ae718bd pxe_int_1a is needed by pxe_call.c 2006-08-09 00:16:57 +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
Nikhil Chandru Rao 409f69a08a Changed ipv4_dump() to consume only one line. 2006-08-08 22:26:35 +00:00
Nikhil Chandru Rao 8bf38fb400 Corrected bugs in the TCP logic. There might be a few more which need to be taken care of. 2006-08-08 22:25:20 +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 18c112d205 Added (not yet tested) PXE API entry point and support functions. 2006-08-08 20:43:33 +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 010288577f Add very, very quick and dirty hello world test 2006-08-07 18:49:10 +00:00
Michael Brown 885a630ddf Fix routing when a gateway exists. This should probably be split into
a separate function.
2006-08-07 17:51:19 +00:00
Michael Brown 8a3f4b7de6 Set a NUL terminator before calling inet_aton. 2006-08-07 17:50:41 +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 d0e4f198d6 Add iSCSI to the DHCP tests.
Start updating iscsi.c to use Nikhil's TCP API.
2006-08-07 16:48:24 +00:00
Nikhil Chandru Rao 6714ec745a Minor corrections 2006-08-07 07:37:23 +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 21c3d63c2e We shouldn't need to allocate a TX packet buffer when calling newdata();
if the application wants to send data then it will have to use the normal
senddata() mechanism.
2006-08-01 14:13:58 +00:00
Michael Brown ae277992c2 Request bootfile name; it doesn't seem to be automatically supplied by
all servers.
2006-08-01 14:12:27 +00:00
Michael Brown 6e3e5efaed Accept '%i' as a synonym for '%d'. 2006-07-25 14:33:20 +00:00
Michael Brown 9e761f5f28 Print out "DHCP..." message just in case people think the demo is sitting
there doing nothing when it's actually waiting for a DHCP reply.
2006-07-20 14:20:11 +00:00
Michael Brown a92d242008 Allow an AoE boot to be directed via DHCP, so that we have a proof of
concept demo that actually does something useful.
2006-07-20 14:15:23 +00:00
Michael Brown 3085f03ad4 Request Etherboot encapsulated options.
Parameter request list is yet another option that ISC dhcpd ignores
unless it's in the main options block.

Fix logic error in parsing file and sname fields.
2006-07-20 14:14:41 +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 16d04386b6 Switch default stack to Nikhil's TCP/IP stack 2006-07-20 02:53:15 +00:00
Michael Brown e74e20cb55 Remove the static IP address hack from netdevice.c, and change the
default test to the DHCP test.
2006-07-20 02:51:52 +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 6a0b4c9772 Free up any allocated options if we fail 2006-07-20 02:25:39 +00:00
Michael Brown 764cb41456 Document memory ownership. 2006-07-20 02:23:42 +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 30d9bcdc6e Rename unwieldy function 2006-07-20 00:24:25 +00:00
Michael Brown 9ad5cede96 Set DHCP_MESSAGE_TYPE option within the main options block. This
doesn't seem to be required by the RFCs, but at least ISC dhcpd and
ethereal refuse to recognise it otherwise.
2006-07-20 00:18:50 +00:00
Michael Brown 881b90e82c Packets without a DHCP_MESSAGE_TYPE option are probably just BOOTP
packets.
2006-07-20 00:03:25 +00:00
Michael Brown 29b358dd39 conn->local_port is now network-endian; do not swap when comparing
against value in header.

Temporarily disable RX checksumming; it's broken and is holding up
work on higher-layer protocols
.
2006-07-20 00:03:01 +00:00
Michael Brown 36c94eae78 Clarify hexiness of header length 2006-07-20 00:01:50 +00:00
Michael Brown 2c0eb6eb1d Correct TCP/IP checksum generation. 2006-07-19 23:38:05 +00:00
Michael Brown 0768670fd8 udp_open() takes ports in network-endian order. 2006-07-19 21:56:27 +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 a38010fb0e Make udp_send() call udp_sendto(), rather than vice-versa. 2006-07-19 20:38:49 +00:00
Michael Brown 7c84b74185 A small but very critical bug. 2006-07-19 20:16:46 +00:00
Michael Brown 82f3295794 Use more standardised format specifiers in debug messages (e.g. %p for
a pointer).
2006-07-19 18:45:18 +00:00
Michael Brown ab633f6a73 Reserve space for lower-layer headers when allocating packet buffer.
Use pkb_available() rather than pkb_len() (which will always return 0
on a freshly allocated buffer).

udp_send() should assume that the buffer has already been allocated.
2006-07-19 18:21:30 +00:00
Michael Brown 6858b14a34 Add pkb_available() 2006-07-19 18:16:48 +00:00
Michael Brown e8daeb62b1 Eliminate confusion between functions that return pointers and
functions that return status codes.

Zero the DHCP packet buffer *before* creating the options structures
inside it.
2006-07-19 18:11:31 +00:00
Michael Brown 3369f93036 Add block identification to debug messages 2006-07-19 17:58:27 +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 16fc9858db Beginnings of DHCP protocol implementation 2006-07-19 17:01:06 +00:00
Michael Brown a7011edfd4 Add net/udp 2006-07-19 17:00:40 +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 bf515d3d65 Minor edit in net/udp.c 2006-07-19 16:27:54 +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 7ab29b0bfe This file breaks "make blib"; please find a way to avoid doing this. 2006-07-17 19:19:17 +00:00
Derek Pryor e71098a652 The first packet (ClientHello Handshake) can be constructed and is accepted

							
						
2006-07-17 16:38:20 +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 35b0233baa Tidy up hex_dump() output. 2006-07-17 13:04:29 +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
Michael Brown 3acbff4f00 How did this ever work properly before? 2006-07-13 18:27:23 +00:00
Derek Pryor 47be47bf17 Adding SSL Constructs header file. (First version) 2006-07-10 13:26:20 +00:00
Nikhil Chandru Rao 5f651f8622 Added fragment reassembly code 2006-06-30 08:52:03 +00:00
Marty Connor eb091f03e3 fix printf format args 2006-06-29 19:04:25 +00:00
Marty Connor e8cc1c4333 Removed vestigal FILO code 2006-06-29 18:07:02 +00:00
Marty Connor 623f2e7b9d Added bin/.blib.list to VERYCLEANUP so .bin directory is made empty 2006-06-29 17:58:48 +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
Michael Brown bd0c8b21ad Change dhcp_num_option() to return the numerical value directly. 2006-06-28 12:16:41 +00:00
Dan Lynch d8b51332c6 typo in macro fixed 2006-06-28 11:53:41 +00:00
Dan Lynch ba2bfd54ed - modified length of password string to match visible field length
- value of n passed to wgetnstr should now be equivalent to output from strlen (i.e. length excluding NUL-terminating character)
2006-06-28 11:52:30 +00:00
Dan Lynch f9887c3f0f started on ANSI sequence processing 2006-06-28 11:50:02 +00:00
Dan Lynch c29c868475 - implemented cursor retreat function (_wcursback) as a core function
- reimplemented cleaner wgetnstr
- fixed wdelch for use with _wcursback
2006-06-28 11:48:40 +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 41b399d672 Fixed endianness of 16- and 32- bit values 2006-06-28 09:10:35 +00:00
Nikhil Chandru Rao a6c6b3d739 Fixed whitespaces; updated UDP code 2006-06-28 07:46:28 +00:00
Dan Lynch 2b15084388 - first check-in for mucurses_test.c
- added mucurses_test.c build targets
2006-06-27 17:31:01 +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 7f4cfe4a84 - put in the screen initialisation stuff and clear the screen... 2006-06-27 17:18:11 +00:00
Dan Lynch 11e280670d - works with test ansi tty, but will need a rethink when we start
getting key_ codes instead
2006-06-27 17:15:34 +00:00
Dan Lynch f78fa3c59d - working basic ansi termnal extension for mucurses 2006-06-27 17:11:57 +00:00
Dan Lynch 916f21921f check whether malloc returns a valid pointer 2006-06-27 13:32:15 +00:00
Dan Lynch 9ca2f64ee1 moved console specific items out of mucurses (should be handled by external screen object) 2006-06-27 13:31:30 +00:00
Dan Lynch 197c0c91b2 make path relative (so that I don't break eb top of tree !) 2006-06-27 13:28:43 +00:00
Dan Lynch 05c0b3ce09 included contents of input.{c,h} in kb.c 2006-06-27 13:27:28 +00:00
Dan Lynch 04fcee2306 enabled build entry for mucurses libraries 2006-06-27 11:40:04 +00:00
Dan Lynch 446c1a3372 - deprecated in favour of a split library model 2006-06-27 11:05:13 +00:00
Dan Lynch 6d34baaef9 - testable console framework implementing mucurses SCREEN struct 2006-06-27 11:00:14 +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
Dan Lynch 5d2f39bbc2 added placeholder SRCDIRS entry for mucurses 2006-06-27 10:31:42 +00:00
Dan Lynch 1c87d54bb8 - recoded wgetch and wgetnstr for greater more efficiency
- wgetch now includes non, part and full blocking read support
2006-06-27 10:24:40 +00:00
Michael Brown 35557914e3 Simplify ipv4_tx() by not having a separate "source" variable now that
we are constructing the IP header ourselves.

Formatting fix-ups (80 column limit is mandatory!)
2006-06-26 16:10:34 +00:00
Michael Brown b49de73950 Factorise out common code 2006-06-26 16:01:24 +00:00
Michael Brown e517a4771b Split ipv6 functions out from ipv4.c 2006-06-26 15:33:46 +00:00
Michael Brown e04ea505c9 Whitespace fixes 2006-06-26 13:45:24 +00:00
Dan Lynch fb85954249 first working version - nasty, but mostly works 2006-06-26 08:24:34 +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