aboutsummaryrefslogtreecommitdiff
path: root/src/include
AgeCommit message (Collapse)AuthorFilesLines
2010-04-19[build] Rename gPXE to iPXEMichael Brown195-707/+707
Access to the gpxe.org and etherboot.org domains and associated resources has been revoked by the registrant of the domain. Work around this problem by renaming project from gPXE to iPXE, and updating URLs to match. Also update README, LOG and COPYRIGHTS to remove obsolete information. Signed-off-by: Michael Brown <mcb30@ipxe.org>
2010-03-23[netdevice] Record whether or not interrupts are currently enabledMichael Brown1-0/+14
Signed-off-by: Michael Brown <mcb30@etherboot.org>
2010-03-23[netdevice] Add netdev_is_open() wrapper functionMichael Brown1-0/+11
Signed-off-by: Michael Brown <mcb30@etherboot.org>
2010-03-17[igb] Add igb driverMarty Connor1-0/+1
This commit adds an igb (Intel GigaBit) driver based on Intel source code available at: http://sourceforge.net/projects/e1000/ which is upstream source for the Linux kernel e1000 drivers, and should support some PCIe e1000 variants. Signed-off-by: Marty Connor <mdc@etherboot.org>
2010-03-17[e1000e] Add e1000e driverMarty Connor1-0/+1
This commit adds an e1000e driver based on Intel source code available at: http://sourceforge.net/projects/e1000/ which is upstream source for the Linux kernel e1000 drivers, and should support many PCIe e1000 variants. Signed-off-by: Marty Connor <mdc@etherboot.org>
2010-03-17[e1000] Update e1000 driverMarty Connor1-2/+1
This commit replaces the current gPXE e1000 driver with one ported from Intel source code available at http://sourceforge.net/projects/e1000/ which is upstream source for the Linux kernel e1000 drivers, and should support most if not all PCI e1000 variants. Signed-off-by: Marty Connor <mdc@etherboot.org>
2010-02-24[vxge] Add support for X3100 series 10GbE Server/Storage AdapterMasroor Vettuparambil1-0/+3
Signed-off-by: Sivakumar Subramani <sivakumar.subramani@neterion.com> Signed-off-by: Masroor Vettuparambil <masroor.vettuparambil@neterion.com> Signed-off-by: Stefan Hajnoczi <stefanha@gmail.com> Signed-off-by: Marty Connor <mdc@etherboot.org>
2010-01-31[proto] Remove unsupported NMB protocolStefan Hajnoczi1-22/+0
The NMB protocol code came from legacy Etherboot and was never updated to work as a gPXE protocol. There has been no demand for this protocol, so this patch removes it. Signed-off-by: Stefan Hajnoczi <stefanha@gmail.com> Signed-off-by: Marty Connor <mdc@etherboot.org>
2010-01-31[proto] Remove unsupported IGMP protocolStefan Hajnoczi2-43/+0
The IGMP code came from legacy Etherboot and was never updated to work as a gPXE protocol. There has been no demand for this protocol, so this patch removes it. Signed-off-by: Stefan Hajnoczi <stefanha@gmail.com> Signed-off-by: Marty Connor <mdc@etherboot.org>
2010-01-31[proto] Remove unsupported NFS protocolStefan Hajnoczi1-63/+0
The NFS protocol code came from legacy Etherboot and was never updated to work as a gPXE protocol. There has been no demand for this protocol, so this patch removes it. I have an unfinished NFSv3 over TCP implementation for gPXE that can be used as the base for new work, should we want to resurrect this protocol. Signed-off-by: Stefan Hajnoczi <stefanha@gmail.com> Signed-off-by: Marty Connor <mdc@etherboot.org>
2010-01-20[uri] Decode/encode URIs when parsing/unparsingJoshua Oreman1-3/+41
Currently, handling of URI escapes is ad-hoc; escaped strings are stored as-is in the URI structure, and it is up to the individual protocol to unescape as necessary. This is error-prone and expensive in terms of code size. Modify this behavior by unescaping in parse_uri() and escaping in unparse_uri() those fields that typically handle URI escapes (hostname, user, password, path, query, fragment), and allowing unparse_uri() to accept a subset of fields to print so it can be easily used to generate e.g. the escaped HTTP path?query request. Signed-off-by: Joshua Oreman <oremanj@rwcr.net> Signed-off-by: Marty Connor <mdc@etherboot.org>
2010-01-20[config] Make PXE stack a compile-time optionJoshua Oreman1-1/+3
For extremely tight space requirements and specific applications, it is sometimes desirable to create gPXE images that cannot provide the PXE API functionality to client programs. Add a configuration header option, PXE_STACK, that can be removed to remove this stack. Also add PXE_MENU to control the PXE boot menu, which most uses of gPXE do not need. Signed-off-by: Marty Connor <mdc@etherboot.org>
2010-01-20[dhcp] Add generic facility for using cached network settingsJoshua Oreman1-0/+19
When a DHCP session is started (using autoboot or a command-line `dhcp net0'), check whether the new setting use-cached (DHCP option 175.178) is TRUE; if so, skip DHCP and rely on currently registered settings. This lets one combine a static IP with autoboot. Before checking the use-cached setting, call a weak get_cached_dhcpack() hook that can be implemented by particular builds of gPXE supporting some fashion of retrieving a cached DHCPACK packet. If one is available, it is registered as an options source, and then either that packet's option 175.178 or the user's prior manual use-cached setting can allow skipping duplicate DHCP. Using cached packets is not the default because DHCP servers are often configured to give gPXE different options than they give a vendor PXE client; in order to break the infinite loop of PXE chaining, one would need to load a gPXE with an embedded image that does something more than autoboot. Signed-off-by: Marty Connor <mdc@etherboot.org>
2010-01-20[linker] Add safe weak symbol macrosJoshua Oreman1-0/+36
Weak symbols are a useful tool in eliminating unnecessary dependencies between object files, but they are somewhat dangerous because one must remember to test the weak symbol against NULL before using it. To rectify that, add macros for declaring weak functions that will return a default value inline if the file defining them is not available at link time. Signed-off-by: Marty Connor <mdc@etherboot.org>
2010-01-14[skge] Add driver for skge NICsMarty Connor1-0/+1
This code is based on the linux skge driver. It supports Marvell Yukon and SysKonnect Gigabit chipsets. The code is based on code Michael Decker <mrd999@gmail.com> wrote for Google Summer of Code 2008. Support for dual-port cards is untested. The code, however, was left in. In my opinion it's easier to fix the code if we need to, instead of having to add support for it from scratch. Signed-off-by: Marty Connor <mdc@etherboot.org>
2010-01-14[myri10ge] Native driver for Myricom 10Gb Ethernet NICsGlenn Brown2-0/+2
This driver supports all current Myricom 10 gigabit Ethernet NICs. It was written from scratch for gPXE by Glenn Brown <glenn@myri.com>, referenencing Myricom's Linux and EFI drivers, with permission. Signed-off-by: Glenn Brown <glenn@myri.com> Signed-off-by: Stefan Hajnoczi <stefanha@gmail.com> Signed-off-by: Marty Connor <mdc@etherboot.org>
2010-01-14[pci] Add PCI_COMMAND_INTX_DISABLEGlenn Brown1-0/+1
Taken from Linux /usr/include/linux/pci.h . Signed-off-by: Glenn Brown <glenn@myri.com> Signed-off-by: Stefan Hajnoczi <stefanha@gmail.com> Signed-off-by: Marty Connor <mdc@etherboot.org>
2010-01-05[wpa] Add CCMP backend (new AES-based cryptosystem)Joshua Oreman1-0/+1
Signed-off-by: Marty Connor <mdc@etherboot.org>
2010-01-05[wpa] Add TKIP backend (legacy RC4-based cryptosystem)Joshua Oreman1-0/+1
Signed-off-by: Marty Connor <mdc@etherboot.org>
2010-01-05[wpa] Add pre-shared key frontend (WPA "Personal" with just a passphrase)Joshua Oreman1-0/+1
Modified-by: Marty Connor <mdc@etherboot.org> Signed-off-by: Marty Connor <mdc@etherboot.org>
2010-01-05[wpa] Add general support for WPA-protected 802.11 networksJoshua Oreman2-0/+504
Modified-by: Marty Connor <mdc@etherboot.org> Signed-off-by: Marty Connor <mdc@etherboot.org>
2010-01-05[eapol] Add basic support for 802.1X EAP over LANsJoshua Oreman3-0/+114
EAPOL is a container protocol that can wrap either EAP packets or 802.11 EAPOL-Key frames. For cleanliness' sake, add a stub that strips the framing and sends packets off to the appropriate handler if it is compiled in. Signed-off-by: Marty Connor <mdc@etherboot.org>
2010-01-05[802.11] Add support for WEP-protected networksJoshua Oreman1-0/+1
WEP is a highly flawed cryptosystem, barely better than no encryption at all, but many people still use it. It does have the advantage of being very simple and small in code size. Signed-off-by: Marty Connor <mdc@etherboot.org>
2010-01-05[iwmgmt] Add wireless management commands and text for common errorsJoshua Oreman2-0/+18
Add commands `iwstat' (to list 802.11-specific status information for 802.11 devices) and `iwlist' (to scan for available networks and print a list along with security information). Signed-off-by: Marty Connor <mdc@etherboot.org>
2010-01-05[802.11] Add core support for detecting and using encrypted networksJoshua Oreman4-144/+376
Signed-off-by: Marty Connor <mdc@etherboot.org>
2010-01-05[crypto] Add a placeholder for a proper random number generatorJoshua Oreman1-0/+2
Currently it just calls random(). Signed-off-by: Marty Connor <mdc@etherboot.org>
2010-01-05[crypto] Add AES key-wrap mode (RFC 3394)Joshua Oreman1-0/+3
The unwrapping half is used by WPA2 code; the wrapping half is currently unused. Signed-off-by: Marty Connor <mdc@etherboot.org>
2010-01-05[crypto] Make AES context size and algorithm structure externally availableJoshua Oreman1-0/+17
This is required to support modes of AES beyond cipher-block chaining. Signed-off-by: Marty Connor <mdc@etherboot.org>
2010-01-05[crypto] Add parentheses around len argument in blocksize assertJoshua Oreman1-2/+2
This fixes an issue where passing a length as a compound expression (e.g. using `hdrlen + datalen') would trigger compiler warnings and potentially precedence-related errors. Signed-off-by: Marty Connor <mdc@etherboot.org>
2010-01-05[digest] Add HMAC-SHA1 based pseudorandom function and PBKDF2Joshua Oreman1-0/+9
Both of these routines are used by 802.11 WPA, but they are generic and could be needed by other protocols as well. Signed-off-by: Marty Connor <mdc@etherboot.org>
2010-01-05[cipher] Add the ARC4 stream cipherJoshua Oreman1-0/+22
Signed-off-by: Marty Connor <mdc@etherboot.org>
2010-01-05[digest] Add generic CRC32 functionJoshua Oreman1-0/+10
Signed-off-by: Marty Connor <mdc@etherboot.org>
2009-12-14[settings] Add Bus ID settingShao Miller1-0/+1
Users can find the bus type and PCI IDs for a network interface with: netX/busid Signed-off-by: Stefan Hajnoczi <stefanha@gmail.com>
2009-11-20[linker] Add mechanism for subsystem-dependent configuration optionsJoshua Oreman1-0/+5
It is often the case that some module of gPXE is only relevant if the subsystem it depends on is already being included. For instance, commands to manage wireless interfaces are quite useless if no compiled-in driver has pulled in the wireless networking stack. There may be a user-modifiable configuration options for these dependent modules, but even if enabled, they should not be included when they would be useless. Solve this by allowing the creation of config_subsystem.c, for configuration directives like those in the global config.c that should only be considered when subsystem.c is included in the final gPXE build. For consistency, move core/config.c to the config/ directory, where the other config_subsystem.c files will eventually reside. Signed-off-by: Marty Connor <mdc@etherboot.org>
2009-11-20[linker] Expand and correct symbol requirement macrosJoshua Oreman1-10/+95
REQUIRE_SYMBOL() formerly used a formulation of symbol requirement that would allow a link to succeed despite lacking a required symbol, because it did not introduce any relocations. Fix by renaming it to REQUEST_SYMBOL() (since the soft-requirement behavior can be useful) and add a REQUIRE_SYMBOL() that truly requires. Add EXPORT_SYMBOL() and IMPORT_SYMBOL() for REQUEST_SYMBOL()-like behavior that allows one to make use of the symbol, by combining a weak external on the symbol itself with a REQUEST_SYMBOL() of a second symbol. Signed-off-by: Marty Connor <mdc@etherboot.org>
2009-11-16[ipoib] Mask out non-QPN bits in the IPoIB destination MAC when sendingMichael Brown2-2/+6
The first byte of the IPoIB MAC address is used for flags indicating support for "connected mode". Strip out the non-QPN bits of the first dword when constructing the address vector for transmitted IPoIB packets, so as not to end up passing an invalid QPN in the BTH.
2009-11-16[ipoib] Always set the "full membership" bit in the IPv4 broadcast GIDMichael Brown1-0/+3
The SM always creates the IPoIB multicast groups with full membership partition keys.
2009-11-16[infiniband] Rename IB_PKEY_NONE to IB_PKEY_DEFAULTMichael Brown1-1/+1
There is no such thing as a non-existent partition.
2009-11-16[infiniband] Report IB link status as IPoIB netdevice statusMichael Brown1-0/+1
2009-11-04[sanboot] Extend the "keep-san" option to non-iSCSI SAN protocolsMichael Brown1-0/+2
This disgustingly ugly hack just keeps getting worse.
2009-10-24[sis190] Hide the ISA bridge's PCI IDs from parserom.plThomas Miletich1-1/+6
Signed-off-by: Michael Brown <mcb30@etherboot.org> Modified-by: Michael Brown <mcb30@etherboot.org>
2009-10-23[netdevice] Add the concept of an "Ethernet-compatible" MAC addressMichael Brown2-6/+14
The iBFT is Ethernet-centric in providing only six bytes for a MAC address. This is most probably an indirect consequence of a similar design flaw in the Windows NDIS stack. (The WinOF IPoIB stack performs all sorts of contortions in order to pretend to the NDIS layer that it is dealing with six-byte MAC addresses.) There is no sensible way in which to extend the iBFT without breaking compatibility with programs that expect to parse it. Add the notion of an "Ethernet-compatible" MAC address to our link layer abstraction, so that link layers can provide their own workarounds for this limitation.
2009-10-16[sis190] Add sis190/191 ethernet driverThomas Miletich1-0/+1
Tested-by: Paul Hackett <paulfxhackett@gmail.com> Signed-off-by: Marty Connor <mdc@etherboot.org>
2009-10-16[atl1e] Add Attansic L1E gigabit Ethernet driverJoshua Oreman1-0/+1
Signed-off-by: Marty Connor <mdc@etherboot.org>
2009-10-14[pci] Add generic configuration space backup/restore facilityMichael Brown1-0/+33
Some devices can only be reset via a mechanism that also resets the card's PCI core, thus necessitating a backup and restore of all or part of the PCI configuration space across a reset.
2009-08-31[job] Add missing job_progress() interface methodMichael Brown1-0/+2
2009-08-12[802.11] Support multicast hashingMichael Brown1-0/+2
802.11 multicast hashing is the same as standard Ethernet hashing, so just expose and use eth_mc_hash(). Signed-off-by: Joshua Oreman <oremanj@rwcr.net>
2009-08-12[dhcp] Fall back to using the hardware address to populate the chaddr fieldMichael Brown1-0/+2
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; }
2009-08-12[netdevice] Allow the hardware and link-layer addresses to differ in sizeMichael Brown2-2/+21
IPoIB has a 20-byte link-layer address, of which only eight bytes represent anything relating to a "hardware address". The PXE and EFI SNP APIs expect the permanent address to be the same size as the link-layer address, so fill in the "permanent address" field with the initial link layer address (as generated by register_netdev() based upon the real hardware address).
2009-08-12[netdevice] Separate out the concept of hardware and link-layer addressesMichael Brown1-4/+11
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().