summaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* [release] Update version to 0.9.7 for releasev0.9.7Michael Brown2009-03-021-2/+2
|
* [release] Remove obsolete VERSION fileMichael Brown2009-03-021-1/+0Star
|
* [sundance] Add reset completion checkThomas Miletich2009-02-271-0/+16
| | | | | | | | Following the example of the Linux driver, we add a check and delay to make sure that the NIC has finished resetting before the driver issues any additional commands. Signed-off-by: Marty Connor <mdc@etherboot.org>
* [infiniband] Kill off obsolete mlx_ipoib directoryMichael Brown2009-02-2529-16486/+0Star
| | | | | | This directory contains the old Etherboot implementation of IPoIB boot from Mellanox, which has long been obsoleted by gPXE's own implementation.
* [image] Allow for zero embedded imagesMichael Brown2009-02-246-20/+32
| | | | | | | | | | | | | | | | | | Having a default script containing #!gpxe autoboot can cause problems when entering commands to load and start a kernel manually; the default script image will still be present when the kernel is started and so will be treated as an initrd. It is possible to work around this by typing "imgfree" before any other commands, but this is counter-intuitive. Fix by allowing the embedded image list to be empty (in which case we just call autoboot()), and making this the default. Reported by alkisg@gmail.com.
* [image] Added "chain" command to fetch, load, and execute imageShao Miller2009-02-241-0/+20
| | | | | | | | | | | | The "chain" command combines the functions of "imgfetch", "imgload", and "boot". chain http://etherboot.org/gtest/gtest.gpxe is equivalent to: kernel http://etherboot.org/gtest/gtest.gpxe boot
* [pxe] Set %ax to zero on entry to PXE NBPMichael Brown2009-02-231-9/+10
| | | | | | This is not strictly an entry requirement, but it does mean that a PXE NBP returning without setting %ax will appear to have returned success.
* [pxeprefix] Search for the PXE entry points through all methodsH. Peter Anvin2009-02-231-42/+105
| | | | | | | Search for the PXE entry points (via the !PXE or PXENV+ structures) through all known combinations of search methods. Furthermore, if we find a PXENV+ structure, attempt to use it to find the !PXE structure if at all possible.
* [iscsi] Include credentials in iBFT only if used during iSCSI loginMichael Brown2009-02-203-17/+73
| | | | | | | | Avoid passing credentials in the iBFT that were available but not required for login. This works around a problem in the Microsoft iSCSI initiator, which will refuse to initiate sessions if the CHAP password is fewer than 12 characters, even if the target ends up not asking for CHAP authentication.
* [scsi] Fix DBG() message reporting of error numberMichael Brown2009-02-191-2/+2
|
* [crypto] Allow creation of arbitrary CBC cipher algorithms using CBC_CIPHER()Michael Brown2009-02-193-106/+66Star
| | | | | Given any block cipher, a corresponding CBC mode of behaviour for the cipher can be created using the CBC_CIPHER() macro.
* [crypto] Add our own general-purpose cipher-block chaining routinesMichael Brown2009-02-195-29/+363
|
* [crypto] Change cipher_{en,de}crypt() to void functionsMichael Brown2009-02-193-50/+25Star
| | | | | | It is a programming error, not a runtime error, if we attempt to use block ciphers with an incorrect blocksize, so use an assert() rather than an error status return.
* [crypto] Split crypto_algorithm into {digest,cipher,pubkey}_algorithmMichael Brown2009-02-1816-121/+160
| | | | | | | | The various types of cryptographic algorithm are fundamentally different, and it was probably a mistake to try to handle them via a single common type. pubkey_algorithm is a placeholder type for now.
* [crypto] Move AES_convert_key() hack into axtls_aes.cMichael Brown2009-02-182-13/+25
| | | | | | Although the nature of the hack is essentially unchanged, this allows us to remove the hardcoded assumption in tls.c that the RX cipher is AES.
* [crypto] Rename aes_algorithm to aes_cbc_algorithmMichael Brown2009-02-183-15/+15
|
* [pxe] Initialize EDX on PXE NBP entry and INT 1AhH. Peter Anvin2009-02-182-8/+13
| | | | | | | | | The PXE 1.x spec specifies that on NBP entry or on return from INT 1Ah AX=5650h, EDX shall point to the physical address of the PXENV+ structure. The PXE 2.x spec drops this requirement, simply stating that EDX is clobbered. Given the principle "be conservative in what you send, liberal in what you accept", however, we should implement this anyway.
* [pxeprefix] Add .kkpxe image type and ability to return via PXE stackMichael Brown2009-02-187-39/+131
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Certain combinations of PXE stack and BIOS result in a broken INT 18 call, which will leave the system displaying a "PRESS ANY KEY TO REBOOT" message instead of proceeding to the next boot device. On these systems, returning via the PXE stack is the only way to continue to the next boot device. Returning via the PXE stack works only if we haven't already blown away the PXE base code in pxeprefix.S. In most circumstances, we do want to blow away the PXE base code. Base memory is a limited resource, and it is desirable to reclaim as much as possible. When we perform an iSCSI boot, we need to place the iBFT above the 512kB mark, because otherwise it may not be detected by the loaded OS; this may not be possible if the PXE base code is still occupying that memory. Introduce a new prefix type .kkpxe which will preserve both the PXE base code and the UNDI driver (as compared to .kpxe, which preserves the UNDI driver but uninstalls the PXE base code). This prefix type can be used on systems that are known to experience the specific problem of INT 18 being broken, or in builds (such as gpxelinux.0) for which it is particularly important to know that returning to the BIOS will work. Written by H. Peter Anvin <hpa@zytor.com> and Stefan Hajnoczi <stefanha@gmail.com>, minor structural alterations by Michael Brown <mcb30@etherboot.org>.
* [i386] Kill off obsolete boot1a.s fileMichael Brown2009-02-181-410/+0Star
|
* [dhcp] Use a default user-class of "gPXE"Michael Brown2009-02-171-0/+2
| | | | | This change makes it possible to break the PXE-chaining infinite loop even when restricted to a Windows DHCP server.
* [image] Redact password from URIs displayed by imgfetch()Michael Brown2009-02-171-1/+12
|
* [login] Add "login" command and UIMichael Brown2009-02-176-0/+179
|
* [settings] Allow store_setting() to access the root settings blockMichael Brown2009-02-171-3/+3
|
* [http] Send authentication information whenever username is presentMichael Brown2009-02-171-9/+8Star
| | | | | Send authentication information if the username is present, even if the password is empty.
* [editbox] Allow for password widgets that do not display their contentsMichael Brown2009-02-173-6/+19
|
* [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.
* [icmp] Add support for responding to pingsMichael Brown2009-02-174-0/+128
|
* [comboot] Implement INT 22h AX=001Bh (Cleanup, shuffle, and boot to real mode)Daniel Verkamp2009-02-172-1/+95
|
* [comboot] Restore the real-mode stack pointer on exit from a COMBOOT imageMichael Brown2009-02-175-14/+40
| | | | | | | | | | | | | COMBOOT images use INTs to issue API calls; these end up making calls into gPXE from real mode, and so temporarily change the real-mode stack pointer. When our COMBOOT code uses a longjmp() to implement the various "exit COMBOOT image" API calls, this leaves the real-mode stack pointer stuck with its temporary value, which causes problems if we eventually try to exit out of gPXE back to the BIOS. Fix by adding rmsetjmp() and rmlongjmp() calls (analogous to sigsetjmp()/siglongjmp()); these save and restore the additional state needed for real-mode calls to function correctly.
* [comboot] Unhook interrupt vectors after returning from a COMBOOT imageMichael Brown2009-02-174-0/+18
|
* [comboot] Fix reference counting on replacement imagesMichael Brown2009-02-175-18/+23
| | | | When chaining COMBOOT images, the old images now get freed correctly.
* [comboot] Allow for tail recursion of COMBOOT imagesMichael Brown2009-02-178-111/+176
| | | | | | | | | | | | Multi-level menus via COMBOOT rely on the COMBOOT program being able to exit and invoke a new COMBOOT program (the next menu). This works, but rapidly (within about five iterations) runs out of space in gPXE's internal stack, since each new image is executed in a new function context. Fix by allowing tail recursion between images; an image can now specify a replacement image for itself, and image_exec() will perform the necessary tail recursion.
* [uri] Allow use of relative URIs when calling churi()Michael Brown2009-02-161-1/+4
|
* [build] Cope with oddities in the Fedora 10 assemblerMichael Brown2009-02-163-15/+15
| | | | | | | | | The version of the GNU assembler shipped with Fedora 10 (2.18.50.0.9-8.fc10) complains about character literals in some of our assembly code. Changing $'x' to $( 'x' ) seems to fix the problem. Yes, the whitespace is required; using just $('x') does not work. Reported by Kevin O'Connor <kevin@koconnor.net>.
* [build] Fix building on gcc 3Michael Brown2009-02-161-0/+2
| | | | GCC did not support #pragma GCC visibility until version 4.0.
* [build] Allow NO_WERROR=1 to inhibit --fatal-warnings as well as -WerrorMichael Brown2009-02-161-1/+1
|
* [image] Avoid claiming zero-length images as validMichael Brown2009-02-162-0/+12
| | | | | Both the script and PXE images types will claim a zero-length image. Inhibit this to avoid end-user surprises.
* [image] Allow multiple embedded imagesMichael Brown2009-02-1612-91/+138
| | | | | | | | | | 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>.
* [romprefix] Update ROM checksum even if PMM allocation failsMichael Brown2009-02-151-7/+9
| | | | | | | | | | There are code paths other than PMM allocation that can result in our changing the ROM checksum. For example, we attempt to update our product string to incorporate the PCI bus:dev.fn number. In a system that does not support PMM, we could therefore end up with an incorrect checksum. Fix by attempting to update the checksum unconditionally.
* [build] Treat warnings as errors in assembly filesMichael Brown2009-02-151-0/+1
| | | | | Add --fatal-warnings to ASFLAGS; this is the equivalent of -Werror in CFLAGS (which we have used since July 2007).
* [i386] Add explicit flags and type on all .section declarationsMichael Brown2009-02-1510-102/+85Star
| | | | | | | | | | | | | | | | | | | | | | | Try to avoid future problems caused by implicit section flags and/or type information by instituting a policy that all .section declarations must explicitly state the flags and type. Most of this change was achieved using perl -pi \ -e 's/".text"$/".text", "ax", \@progbits/ ; ' \ -e 's/".text16"$/".text16", "ax", \@progbits/ ; ' \ -e 's/".text16.null"$/".text16.null", "ax", \@progbits/ ; ' \ -e 's/".text16.data"$/".text16.data", "aw", \@progbits/ ; ' \ -e 's/".data"$/".data", "aw", \@progbits/ ; ' \ -e 's/".data16"$/".data16", "aw", \@progbits/ ; ' \ -e 's/".bss"$/".bss", "aw", \@nobits/ ; ' \ -e 's/".bss16"$/".bss16", "aw", \@nobits/ ; ' \ -e 's/".prefix"$/".prefix", "ax", \@progbits/ ; ' \ -e 's/".prefix.lib"$/".prefix.lib", "awx", \@progbits/ ; ' \ -e 's/".prefix.data"$/".prefix.data", "aw", \@progbits/ ; ' \ -e 's/".weak"$/".weak", "a", \@nobits/ ; ' \ `git grep -l '\.section'`
* [i386] Add explicit ""aw", @nobits" declarations to stack sectionsMichael Brown2009-02-152-2/+2
| | | | | | | | | | | | | | As reported by Stefan, commit 13d09e6 ("[i386] Simplify linker script and standardise linker-defined symbol names") breaks gdb, readelf and associated utilities. This is caused by the .stack section overwriting a block in the middle of the .debug_info section (despite being included in the .bss.textdata section in the output file, which apparently has the correct attributes for a .bss section). Fixed by adding explicit flags and type to the stack section declaration.
* [xfer] Make consistent assumptions that xfer metadata can never be NULLMichael Brown2009-02-157-32/+18Star
| | | | | | | | | | | | | The documentation in xfer.h and xfer.c does not say that the metadata parameter is optional in calls such as xfer_deliver_iob_meta() and the deliver_iob() method. However, some code in net/ is prepared to accept a NULL pointer, and xfer_deliver_as_iob() passes a NULL pointer directly to the deliver_iob() method. Fix this mess of conflicting assumptions by making everything assume that the metadata parameter is mandatory, and fixing xfer_deliver_as_iob() to pass in a dummy metadata structure (as is already done in xfer_deliver_iob()).
* [umalloc] Avoid problems when _textdata_memsz is a multiple of 4kBMichael Brown2009-02-151-3/+3
| | | | | | | | | | | | | | | | | | | If it happens that _textdata_memsz ends up being an exact multiple of 4kB, then this will cause the .textdata section (after relocation) to start on a page boundary. This means that the hidden memory region (which is rounded down to the nearest page boundary) will start exactly at virtual address 0, i.e. UNULL. This means that init_eheap() will erroneously assume that it has failed to allocate a an external heap, since it typically ends up choosing the area that lies immediately below .textdata, which in this case will be the region with top==UNULL. A subsequent error is that memtop_urealloc() passes through the error return status -ENOMEM to the caller, which (rightly) assumes that the result represents a valid userptr_t address. Fixed by using alternative tests for heap non-existence, and by returning UNULL in case of an error from init_eheap().
* [http] Allow for URI encodings within username and passwordMichael Brown2009-02-131-2/+15
|
* [http] Add support for HTTP Basic authenticationMichael Brown2009-02-131-0/+28
|
* [base64] Add base64 encoding functionsMichael Brown2009-02-132-0/+90
|
* [settings] Handle errors in fetchf_uristring()Michael Brown2009-02-121-1/+4
| | | | | | | | | fetchf_uristring() was failing to handle error values from fetch_setting(), resulting in its attempting to allocate extremely large temporary buffers on the stack (and so overrunning the stack and locking up the machine). Problem reported by Shao Miller <Shao.Miller@yrdsb.edu.on.ca>.
* [tls] Use our own ASN.1 routines for certificate parsingMichael Brown2009-02-108-954/+354Star
| | | | | | Use our own, more robust, ASN.1 parsing routines to extract the RSA public key from a server certificate. Remove the now-unused AXTLS ASN.1 parser.
* [crypto] Remove unused filesMichael Brown2009-02-107-1851/+0Star
|