aboutsummaryrefslogtreecommitdiff
path: root/src/hci
AgeCommit message (Collapse)AuthorFilesLines
2021-09-10[readline] Extend maximum read line length to 1024 charactersMichael Brown1-7/+17
Realistic Linux kernel command lines may exceed our current 256 character limit for interactively edited commands or settings. Switch from stack allocation to heap allocation, and increase the limit to 1024 characters. Requested-by: Matteo Guglielmi <Matteo.Guglielmi@dalco.ch> Signed-off-by: Michael Brown <mcb30@ipxe.org>
2021-05-08[image] Add "imgextract" command for extracting archive imagesMichael Brown1-0/+105
Add the concept of extracting an image from an archive (which could be a single-file archive such as a gzip-compressed file), along with an "imgextract" command to expose this functionality to scripts. Signed-off-by: Michael Brown <mcb30@ipxe.org>
2021-04-23[settings] Add --timeout option to "read" commandMichael Brown1-14/+43
Requested-by: Matteo Guglielmi <Matteo.Guglielmi@dalco.ch> Signed-off-by: Michael Brown <mcb30@ipxe.org>
2021-04-23[readline] Add an optional timeout to readline_history()Michael Brown3-5/+16
Signed-off-by: Michael Brown <mcb30@ipxe.org>
2021-02-28[linux] Use host glibc system call wrappersMichael Brown1-17/+3
When building as a Linux userspace application, iPXE currently implements its own system calls to the host kernel rather than relying on the host's C library. The output binary is statically linked and has no external dependencies. This matches the general philosophy of other platforms on which iPXE runs, since there are no external libraries available on either BIOS or UEFI bare metal. However, it would be useful for the Linux userspace application to be able to link against host libraries such as libslirp. Modify the build process to perform a two-stage link: first picking out the requested objects in the usual way from blib.a but with relocations left present, then linking again with a helper object to create a standard hosted application. The helper object provides the standard main() entry point and wrappers for the Linux system calls required by the iPXE Linux drivers and interface code. Signed-off-by: Michael Brown <mcb30@ipxe.org>
2021-01-26[cmdline] Expose "iflinkwait" as a commandMichael Brown1-0/+56
Signed-off-by: Michael Brown <mcb30@ipxe.org>
2021-01-25[image] Provide image_memory()Michael Brown1-3/+1
Consolidate the remaining logic common to initrd_init() and imgmem() into a shared image_memory() function. Signed-off-by: Michael Brown <mcb30@ipxe.org>
2021-01-22[image] Add the "imgmem" commandMichael Brown1-0/+98
Provide the "imgmem" command to create an image from an existing block of memory, for debugging purposes only. Signed-off-by: Michael Brown <mcb30@ipxe.org>
2020-07-22[cmdline] Add "--timeout" parameter to "ifconf" commandJoe Groocock1-1/+7
Modified-by: Michael Brown <mcb30@ipxe.org> Signed-off-by: Michael Brown <mcb30@ipxe.org>
2019-01-25[init] Show startup and shutdown function names in debug messagesMichael Brown1-0/+1
Signed-off-by: Michael Brown <mcb30@ipxe.org>
2017-07-04[mucurses] Avoid potential division by zeroMichael Brown1-2/+1
Signed-off-by: Michael Brown <mcb30@ipxe.org>
2017-04-12[block] Allow use of a non-default EFI SAN boot filenameMichael Brown1-3/+8
Some older operating systems (e.g. RHEL6) use a non-default filename on the root disk and rely on setting an EFI variable to point to the bootloader. This does not work when performing a SAN boot on a machine where the EFI variable is not present. Fix by allowing a non-default filename to be specified via the "sanboot --filename" option or the "san-filename" setting. For example: sanboot --filename \efi\redhat\grub.efi \ iscsi:192.168.0.1::::iqn.2010-04.org.ipxe.demo:rhel6 or option ipxe.san-filename code 188 = string; option ipxe.san-filename "\\efi\\redhat\\grub.efi"; option root-path "iscsi:192.168.0.1::::iqn.2010-04.org.ipxe.demo:rhel6"; Originally-implemented-by: Vishvananda Ishaya Abrams <vish.ishaya@oracle.com> Signed-off-by: Michael Brown <mcb30@ipxe.org>
2017-03-26[block] Add basic multipath supportMichael Brown1-15/+15
Add basic support for multipath block devices. The "sanboot" and "sanhook" commands now accept a list of SAN URIs. We open all URIs concurrently. The first connection to become available for issuing block device commands is marked as the active path and used for all subsequent commands; all other connections are then closed. Whenever the active path fails, we reopen all URIs and repeat the process. Signed-off-by: Michael Brown <mcb30@ipxe.org>
2017-03-22[mucurses] Ensure SLK labels are always terminatedMichael Brown1-1/+1
Signed-off-by: Michael Brown <mcb30@ipxe.org>
2017-03-21[mucurses] Attempt to fix use of uninitialised buffer with strcat()Michael Brown1-0/+1
Signed-off-by: Michael Brown <mcb30@ipxe.org>
2017-03-21[mucurses] Attempt to fix resource leaksMichael Brown1-6/+4
Signed-off-by: Michael Brown <mcb30@ipxe.org>
2017-03-21[mucurses] Attempt to fix keypress processing logicMichael Brown1-4/+3
Signed-off-by: Michael Brown <mcb30@ipxe.org>
2017-03-21[mucurses] Attempt to fix test for empty stringMichael Brown1-1/+1
Signed-off-by: Michael Brown <mcb30@ipxe.org>
2017-01-26[time] Allow timer to be selected at runtimeMichael Brown1-1/+1
Allow the active timer (providing udelay() and currticks()) to be selected at runtime based on probing during the INIT_EARLY stage of initialisation. TICKS_PER_SEC is now a fixed compile-time constant for all builds, and is independent of the underlying clock tick rate. We choose the value 1024 to allow multiplications and divisions on seconds to be converted to bit shifts. TICKS_PER_MS is defined as 1, allowing multiplications and divisions on milliseconds to be omitted entirely. The 2% inaccuracy in this definition is negligible when using the standard BIOS timer (running at around 18.2Hz). TIMER_RDTSC now checks for a constant TSC before claiming to be a usable timer. (This timer can be tested in KVM via the command-line option "-cpu host,+invtsc".) Signed-off-by: Michael Brown <mcb30@ipxe.org>
2016-08-31[cmdline] Add certificate management commandsMichael Brown1-0/+304
Signed-off-by: Michael Brown <mcb30@ipxe.org>
2016-07-29[build] Remove more obsolete explicit object requirementsMichael Brown1-6/+0
Signed-off-by: Michael Brown <mcb30@ipxe.org>
2016-07-29[build] Remove obsolete explicit object requirementsMichael Brown1-4/+0
As of commit b1caa48 ("[crypto] Support SHA-{224,384,512} in X.509 certificates"), the list of supported cryptographic algorithms is controlled by config/crypto.h. Signed-off-by: Michael Brown <mcb30@ipxe.org>
2016-07-29[image] Use image_asn1() to extract data from CMS signature imagesMichael Brown1-0/+1
Signed-off-by: Michael Brown <mcb30@ipxe.org>
2016-06-13[cmdline] Add "ntp" commandMichael Brown1-0/+81
Signed-off-by: Michael Brown <mcb30@ipxe.org>
2016-05-23[lotest] Add option to use broadcast packets for loopback testingMichael Brown1-1/+6
Signed-off-by: Michael Brown <mcb30@ipxe.org>
2016-05-04[mucurses] Fix GCC 6 nonnull-compare errorsVinson Lee1-11/+0
Remove null checks for arguments declared as nonnull. Signed-off-by: Vinson Lee <vlee@freedesktop.org> Signed-off-by: Michael Brown <mcb30@ipxe.org>
2016-03-08[infiniband] Add "ibstat" commandMichael Brown1-0/+79
Signed-off-by: Michael Brown <mcb30@ipxe.org>
2015-03-05[legal] Relicense files under GPL2_OR_LATER_OR_UBDLMichael Brown1-1/+5
Relicense files with kind permission from Stefan Hajnoczi <stefanha@redhat.com> alongside the contributors who have already granted such relicensing permission. Signed-off-by: Michael Brown <mcb30@ipxe.org>
2015-03-05[build] Fix the REQUIRE_SYMBOL mechanismMichael Brown1-0/+3
At some point in the past few years, binutils became more aggressive at removing unused symbols. To function as a symbol requirement, a relocation record must now be in a section marked with @progbits and must not be in a section which gets discarded during the link (either via --gc-sections or via /DISCARD/). Update REQUIRE_SYMBOL() to generate relocation records meeting these criteria. To minimise the impact upon the final binary size, we use existing symbols (specified via the REQUIRING_SYMBOL() macro) as the relocation targets where possible. We use R_386_NONE or R_X86_64_NONE relocation types to prevent any actual unwanted relocation taking place. Where no suitable symbol exists for REQUIRING_SYMBOL() (such as in config.c), the macro PROVIDE_REQUIRING_SYMBOL() can be used to generate a one-byte-long symbol to act as the relocation target. If there are versions of binutils for which this approach fails, then the fallback will probably involve killing off REQUEST_SYMBOL(), redefining REQUIRE_SYMBOL() to use the current definition of REQUEST_SYMBOL(), and postprocessing the linked ELF file with something along the lines of "nm -u | wc -l" to check that there are no undefined symbols remaining. Signed-off-by: Michael Brown <mcb30@ipxe.org>
2015-03-03[settings] Use generic jump scrolling abstractionMichael Brown1-196/+155
Signed-off-by: Michael Brown <mcb30@ipxe.org>
2015-03-03[menu] Abstract out the generic concept of a jump scrollerMichael Brown2-65/+171
Signed-off-by: Michael Brown <mcb30@ipxe.org>
2015-03-02[legal] Relicense files under GPL2_OR_LATER_OR_UBDLMichael Brown2-2/+10
These files cannot be automatically relicensed by util/relicense.pl since they either contain unusual but trivial contributions (such as the addition of __nonnull function attributes), or contain lines dating back to the initial git revision (and so require manual knowledge of the code's origin). Signed-off-by: Michael Brown <mcb30@ipxe.org>
2015-03-02[legal] Relicense files under GPL2_OR_LATER_OR_UBDLMichael Brown2-2/+10
Relicence files with kind permission from the following contributors: Alex Williamson <alex.williamson@redhat.com> Eduardo Habkost <ehabkost@redhat.com> Greg Jednaszewski <jednaszewski@gmail.com> H. Peter Anvin <hpa@zytor.com> Marin Hannache <git@mareo.fr> Robin Smidsrød <robin@smidsrod.no> Shao Miller <sha0.miller@gmail.com> Thomas Horsten <thomas@horsten.com> Signed-off-by: Michael Brown <mcb30@ipxe.org>
2015-03-02[legal] Relicense files under GPL2_OR_LATER_OR_UBDLMichael Brown15-15/+15
Relicense files authored by Dan Lynch while working as an employee of Fen Systems Ltd., with permission from Fen Systems Ltd. Signed-off-by: Michael Brown <mcb30@ipxe.org>
2015-03-02[legal] Relicense files under GPL2_OR_LATER_OR_UBDLMichael Brown27-27/+131
Relicense files for which I am the sole author (as identified by util/relicense.pl). Signed-off-by: Michael Brown <mcb30@ipxe.org>
2015-03-02[mucurses] Add missing FILE_LICENCE declarationsMichael Brown6-0/+12
Signed-off-by: Michael Brown <mcb30@ipxe.org>
2015-02-16[libc] Rewrite string functionsMichael Brown1-1/+1
Some of the C library string functions have an unknown provenance. Reimplement all such functions to avoid potential licensing uncertainty. Remove the inline-assembler versions of strlen(), memswap(), and strncmp(); these save a minimal amount of space (around 40 bytes in total) and are not performance-critical. Signed-off-by: Michael Brown <mcb30@ipxe.org>
2015-02-11[build] Allow setting help text URI to be customised via config/branding.hMichael Brown1-2/+1
Signed-off-by: Michael Brown <mcb30@ipxe.org>
2015-02-11[build] Allow error message URI to be customised via config/branding.hMichael Brown1-2/+3
Signed-off-by: Michael Brown <mcb30@ipxe.org>
2015-02-11[build] Use PRODUCT_SHORT_NAME for end-user visible stringsMichael Brown2-2/+4
Use PRODUCT_SHORT_NAME instead of a hardcoded "iPXE" for strings which are typically shown in the user interface. Note that this only allows for customisation of the user interface. Where the "iPXE" string serves a technical purpose (such as in the HTTP User-Agent), the string cannot be customised. Signed-off-by: Michael Brown <mcb30@ipxe.org>
2014-10-23[ping] Allow "ping" command output to be inhibitedMichael Brown1-1/+5
Originally-implemented-by: Cedric Levasseur <cyr-ius@ipocus.net> Signed-off-by: Michael Brown <mcb30@ipxe.org>
2014-10-23[ping] Allow termination after a specified number of packetsMichael Brown1-1/+6
Add the "-c <count>" option to the "ping" command, allowing for automatic termination after a specified number of packets. When a number of packets is specified: - if a serious error (i.e. length mismatch or content mismatch) occurs, then the ping will be immediately terminated with the relevant status code; - if at least one response is received successfully, and all errors are non-serious (i.e. timeouts or out-of-sequence responses), then the ping will be terminated after the final response (or timeout) with a success status; - if no responses are received successfully, then the ping will be terminated after the final timeout with ETIMEDOUT. If no number of packets is specified, then the ping will continue until manually interrupted. Originally-implemented-by: Cedric Levasseur <cyr-ius@ipocus.net> Signed-off-by: Michael Brown <mcb30@ipxe.org>
2014-08-19[readline] Add CTRL-W shortcut to remove a wordMarin Hannache1-1/+35
Signed-off-by: Marin Hannache <git@mareo.fr> Modified-by: Michael Brown <mcb30@ipxe.org> Signed-off-by: Michael Brown <mcb30@ipxe.org>
2014-08-06[readline] Ensure cursor is visible when prompting for inputMichael Brown1-0/+3
Signed-off-by: Michael Brown <mcb30@ipxe.org>
2014-04-27[cmdline] Add "profstat" command to display profiling statisticsMichael Brown1-0/+70
Signed-off-by: Michael Brown <mcb30@ipxe.org>
2014-03-13[console] Fix display of characters with top bit setMichael Brown1-1/+1
Inhibit implicit sign-padding of characters with the top bit set (e.g. accented characters), which confuses the mucurses library by colliding with the bits used to store character attributes and colours. Reported-by: Marc Delisle <Marc.Delisle@cegepsherbrooke.qc.ca> Signed-off-by: Michael Brown <mcb30@ipxe.org>
2014-03-10[image] Add "--timeout" parameter to image downloading commandsMichael Brown4-9/+22
iPXE will detect timeout failures in several situations: network link-up, DHCP, TCP connection attempts, unacknowledged TCP data, etc. This does not cover all possible circumstances. For example, if a connection to a web server is successfully established and the web server acknowledges the HTTP request but never sends any data in response, then no timeout will be triggered. There is no timeout defined within the HTTP specifications, and the underlying TCP connection will not generate a timeout since it has no way to know that the HTTP layer is expecting to receive data from the server. Add a "--timeout" parameter to "imgfetch", "chain", etc. If no progress is made (i.e. no data is downloaded) within the timeout period, then the download will be aborted. Signed-off-by: Michael Brown <mcb30@ipxe.org>
2014-03-02[cmdline] Add the "ipstat" commandMichael Brown1-0/+70
Signed-off-by: Michael Brown <mcb30@ipxe.org>
2014-02-26[params] Use reference counters for form parameter listsMichael Brown1-2/+4
Signed-off-by: Michael Brown <mcb30@ipxe.org>
2014-01-22[cmdline] Always clear screen after reconfiguring consoleMichael Brown1-0/+5
Signed-off-by: Michael Brown <mcb30@ipxe.org>