summaryrefslogtreecommitdiffstats
path: root/src/usr
Commit message (Collapse)AuthorAgeFilesLines
* [dhcp] Fall back to using the hardware address to populate the chaddr fieldMichael Brown2009-08-121-1/+7
| | | | | | | | | | | | | | | | | | | | | | | | For IPoIB, the chaddr field is too small (16 bytes) to contain the 20-byte IPoIB link-layer address. RFC4390 mandates that we should pass an empty chaddr field and rely on the DHCP client identifier instead. This has many problems, not least of which is that a client identifier containing an IPoIB link-layer address is not very useful from the point of view of creating DHCP reservations, since the QPN component is assigned at runtime and may vary between boots. Leave the DHCP client identifier as-is, to avoid breaking existing setups as far as possible, but expose the real hardware address (the port GUID) via the DHCP chaddr field, using the broadcast flag to instruct the DHCP server not to use this chaddr value as a link-layer address. This makes it possible (at least with ISC dhcpd) to create DHCP reservations using host declarations such as: host duckling { fixed-address 10.252.252.99; hardware unknown-32 00:02:c9:02:00:25:a1:b5; }
* [netdevice] Separate out the concept of hardware and link-layer addressesMichael Brown2009-08-122-2/+2
| | | | | | | | | | | The hardware address is an intrinsic property of the hardware, while the link-layer address can be changed at runtime. This separation is exposed via APIs such as PXE and EFI, but is currently elided by gPXE. Expose the hardware and link-layer addresses as separate properties within a net device. Drivers should now fill in hw_addr, which will be used to initialise ll_addr at the time of calling register_netdev().
* [dhcp] Await link-up before starting DHCPJoshua Oreman2009-06-242-7/+6Star
| | | | | Modified-by: Michael Brown <mcb30@etherboot.org> Signed-off-by: Michael Brown <mcb30@etherboot.org>
* [ifmgmt] Move link-up status messages from autoboot() to iflinkwait()Joshua Oreman2009-06-242-12/+28
| | | | | | | | | | | | With the addition of link status codes, we can now display a detailed error indication if iflinkwait() fails. Putting the error output in iflinkwait avoids code duplication, and gains symmetry with the other interface management routines; ifopen() already prints an error directly if it cannot open its interface. Modified-by: Michael Brown <mcb30@etherboot.org> Signed-off-by: Michael Brown <mcb30@etherboot.org>
* [netdevice] Add mechanism for reporting detailed link status codesMichael Brown2009-06-241-0/+4
| | | | | | | | Expand the NETDEV_LINK_UP bit into a link_rc status code field, allowing specific reasons for link failure to be reported via "ifstat". Originally-authored-by: Joshua Oreman <oremanj@rwcr.net>
* [legal] Add a selection of FILE_LICENCE declarationsMichael Brown2009-05-186-0/+12
| | | | | Add FILE_LICENCE declarations to almost all files that make up the various standard builds of gPXE.
* [tables] Redefine methods for accessing linker tablesMichael Brown2009-03-131-8/+1Star
| | | | | | | | | | | | | | | Intel's C compiler (icc) chokes on the zero-length arrays that we currently use as part of the mechanism for accessing linker table entries. Abstract away the zero-length arrays, to make a port to icc easier. Introduce macros such as for_each_table_entry() to simplify the common case of iterating over all entries in a linker table. Represent table names as #defined string constants rather than unquoted literals; this avoids visual confusion between table names and C variable or type names, and also allows us to force a compilation error in the event of incorrect table names.
* [image] Redact password from URIs displayed by imgfetch()Michael Brown2009-02-171-1/+12
|
* [pxe] Allow Escape to abort PXE menu selectionsMichael Brown2009-02-171-2/+2
| | | | | | Other vendor PXE stacks tend to allow the Escape key to be used to abort menu selection. Allow Escape (as well as Ctrl-C) to abort selection.
* [image] Allow multiple embedded imagesMichael Brown2009-02-161-30/+0Star
| | | | | | | | | | This patch extends the embedded image feature to allow multiple embedded images instead of just one. gPXE now always boots the first embedded image on startup instead of doing the hardcoded DHCP boot (aka autoboot). Based heavily upon a patch by Stefan Hajnoczi <stefanha@gmail.com>.
* [pxe] Display the "Press F8" prompt rather than displaying menu with timeoutMichael Brown2009-02-051-58/+112
| | | | | | | | | | | The PXE spec dictates the rather ugly feature that we have to present a DHCP-specified prompt string to the user, then wait to see if they press F8 before displaying the menu. This seems to me to be a significant retrograde step from the current situation of displaying the menu with the timeout counting down against the default selected boot option, but apparently the lack of the "Press F8" prompt causes some confusion.
* [pxe] Obey lists of PXE Boot Servers and associated Discovery Control bitsMichael Brown2009-02-052-17/+4Star
| | | | | | | | Various combinations of options 43.6, 43.7 and 43.8 dictate which servers we send Boot Server Discovery requests to, and which servers we should accept responses from. Obey these options, and remove the explicit specification of a single Boot Server from start_pxebs() and dependent functions.
* [pxe] Skip PXE boot server discovery if directed to do soMichael Brown2009-02-051-6/+15
| | | | | Option 43.6 can direct us to skip PXE boot server discovery and just perform a standard DHCP filename boot.
* [pxe] Fall back to broadcast if no boot server multicast address existsMichael Brown2009-02-031-1/+2
| | | | | fetch_ipv4_setting() will zero its IPv4 address argument if no such setting exists, rather than leaving it untouched.
* [dhcp] Split PXE menuing code out of dhcp.cMichael Brown2009-02-013-2/+363
| | | | | | | | | The DHCP client code now implements only the mechanism of the DHCP and PXE Boot Server protocols. Boot Server Discovery can be initiated manually using the "pxebs" command. The menuing code is separated out into a user-level function on a par with boot_root_path(), and is entered in preference to a normal filename boot if the DHCP vendor class is "PXEClient" and the PXE boot menu option exists.
* [ui] Allow Ctrl-C to cancel wait for net device link-upMichael Brown2009-01-271-0/+9
| | | | | This really ought to be handled via monojob.c and the usual Ctrl-C mechanism that handles cancelling DHCP or file downloads.
* [i386] Move iSCSI and AoE boot code to arch/i386/interface/pcbiosMichael Brown2008-11-192-187/+0Star
|
* [netdevice] Retain and report detailed error breakdownsMichael Brown2008-11-081-2/+23
| | | | | | | | | | netdev_rx_err() and netdev_tx_complete_err() get passed the error code, but currently use it only in debug messages. Retain error numbers and frequencey counts for up to NETDEV_MAX_UNIQUE_ERRORS (4) different errors for each of TX and RX. This allows the "ifstat" command to report the reasons for TX/RX errors in most cases, even in non-debug builds.
* [hacks] Improve the guess_boot_netdev() logicMichael Brown2008-10-312-6/+8
| | | | | | This function is a major kludge, but can be made slightly more accurate by ignoring net devices that aren't open. Eventually it needs to be removed entirely.
* [sanboot] Quick and dirty hack to make SAN boot protocols selectableMichael Brown2008-10-133-10/+28
|
* [autoboot] Retain initial-slash (if present) when constructing TFTP URIsMichael Brown2008-07-311-3/+30
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When we boot from a DHCP-supplied filename, we previously relied on the fact that the current working URI is set to tftp://[next-server]/ in order to resolve the filename into a full tftp:// URI. However, this process will eliminate the distinction between filenames with and without initial slashes: cwuri="tftp://10.0.0.1/" filename="vmlinuz" => URI="tftp://10.0.0.1/vmlinuz" cwuri="tftp://10.0.0.1/" filename="/vmlinuz" => URI="tftp://10.0.0.1/vmlinuz" This distinction is important for some TFTP servers. We now explicitly construct a string of the form "tftp://[next-server]/filename" so that a filename with an initial slash will result in a URI containing a double-slash, e.g. "tftp://10.0.0.1//vmlinuz" The TFTP code always strips a single initial slash, and so ends up presenting the correct path to the server. URIs entered explicitly by users at the command line must include a double slash if they want an initial slash presented to the TFTP server: "kernel tftp://10.0.0.1/vmlinuz" => filename="vmlinuz" "kernel tftp://10.0.0.1//vmlinuz" => filename="/vmlinuz"
* [iSCSI] Support Windows Server 2008 direct iSCSI installationMichael Brown2008-07-172-19/+55
| | | | | | | | | | | | | Add yet another ugly hack to iscsiboot.c, this time to allow the user to inhibit the shutdown/removal of the iSCSI INT13 device (and the network devices, since they are required for the iSCSI device to function). On the plus side, the fact that shutdown() now takes flags to differentiate between shutdown-for-exit and shutdown-for-boot means that another ugly hack (to allow returning via the PXE stack on BIOSes that have broken INT 18 calls) will be easier. I feel dirty.
* [image] Fail "imgexec"/"boot" if the image to execute is ambiguousMichael Brown2008-07-081-5/+9
| | | | | | | | | | | | | | | If there is more than one loaded image, refuse to automatically select the image to execute. There are at least two possible cases, with different "correct" answers: 1. User loads image A by mistake, then loads image B and types "boot". User wants to execute image B. 2. User loads image A, then loads image B (which patches image A), then types "boot". User wants to execute image A. If a user actually wants to load multiple images, they must explicitly specify which image is to be executed.
* [NETDEV] Add notion of link stateMichael Brown2008-04-222-1/+34
| | | | | | | | | | | Add ability for network devices to flag link up/down state to the networking core. Autobooting code will now wait for link-up before attempting DHCP. IPoIB reflects the Infiniband link state as the network device link state (which is not strictly correct; we also need a succesful IPoIB IPv4 broadcast group join), but is probably more informative.
* [Settings] Remove assumption that all settings have DHCP tag valuesMichael Brown2008-03-253-6/+2Star
| | | | | | | | | | | | Allow for settings to be described by something other than a DHCP option tag if desirable. Currently used only for the MAC address setting. Separate out fake DHCP packet creation code from dhcp.c to fakedhcp.c. Remove notion of settings from dhcppkt.c. Rationalise dhcp.c to use settings API only for final registration of the DHCP options, rather than using {store,fetch}_setting throughout.
* [DHCP] Fix up fake-packet creation as used by PXENV_GET_CACHED_INFOMichael Brown2008-03-231-6/+0Star
| | | | | | | | | | | Add dedicated functions create_dhcpdiscover(), create_dhcpack() and create_proxydhcpack() for use by external code such as the PXE preboot code. Register ProxyDHCP options under the global scope "proxydhcp". Unregister previously-acquired DHCP and ProxyDHCP settings when DHCP succeeds.
* [Settings] Migrate DHCP and NVO code to the new settings API (untested)Michael Brown2008-03-211-18/+5Star
|
* [Settings] Use a settings applicator to configure IPv4 routes.Michael Brown2008-03-211-2/+2
|
* [Settings] Convert code in src/usr to use settings API.Michael Brown2008-03-213-6/+7
|
* [Command] Add "sanboot" command.Michael Brown2008-03-041-1/+1
|
* Added the embedded pxelinux payload patch from hpa.Michael Brown2008-01-081-0/+30
|
* Remove the obsolete pre-aBFT AoE boot table.Michael Brown2007-12-121-30/+0Star
|
* Remove some assumptions about DHCP obtaining only a single options block.Michael Brown2007-11-211-8/+11
|
* Display name and status of each file as it is downloaded.Michael Brown2007-08-033-13/+12Star
|
* Error message cleanups.Michael Brown2007-08-021-1/+1
|
* Allow images to hold references to the originating URI.Michael Brown2007-08-022-33/+17Star
| | | | Some shuffling around of the image management code; this needs tidying up.
* Added support for draft version of the AoE Boot Firmware Table.Michael Brown2007-07-311-0/+3
|
* Fix endianness of "shelf" fieldMichael Brown2007-07-311-1/+2
|
* Added the AoE boot information table as used by Vampyre's AoEMichael Brown2007-07-311-0/+33
| | | | | | initiator. This table needs to be replaced by something similar to iBFT (i.e. scanned for and identified by signature, rather than being at a fixed address), but it works for now.
* Quick hack to get AoE back in to the tree, on a par with the currentMichael Brown2007-07-292-4/+74
| | | | iSCSI hack.
* Merge branch 'symcheck2'Michael Brown2007-07-281-1/+1
|\
| * make netboot() staticHolger Lubitz2007-07-271-1/+1
| |
* | Prepare for iBFT merge when possible. iscsiboot.c contains a really,Michael Brown2007-07-261-0/+24
|/ | | | | | really ugly hack at present, but that doesn't hugely matter since I'm aiming to change the interface to iSCSI devices anyway within the next week.
* Fix up iscsiboot missing prototype warningsMichael Brown2007-07-092-0/+47
|
* Ready to start testingMichael Brown2007-07-081-26/+66
|
* Allow recording of TX and RX errors to aid in end-user debugging.Michael Brown2007-07-051-2/+3
|
* Warnings purge: src/arch/i386, src/core/disk.c, ramdisk, autobootMarty Connor2007-07-031-28/+0Star
|
* Add trivial net device statistics (TX and RX packet count), reportedMichael Brown2007-07-031-2/+3
| | | | via UNDI API and also by ifstat command; may be useful for debugging.
* Removed debugging statements that should not have been checked in.Michael Brown2007-06-281-2/+0Star
|
* Quick hack to get image booting working againMichael Brown2007-06-282-38/+32Star
|