]> git.ipfire.org Git - thirdparty/ipxe.git/log
thirdparty/ipxe.git
11 years ago[socket] Ensure socket address structure sizes are fixed
Michael Brown [Thu, 5 Dec 2013 01:21:10 +0000 (01:21 +0000)] 
[socket] Ensure socket address structure sizes are fixed

Signed-off-by: Michael Brown <mcb30@ipxe.org>
11 years ago[dns] Add support for resolving IPv6 addresses via AAAA records
Michael Brown [Wed, 4 Dec 2013 22:21:47 +0000 (22:21 +0000)] 
[dns] Add support for resolving IPv6 addresses via AAAA records

Our policy is to prefer IPv6 addreses to IPv4 addresses, but to
request IPv6 addresses only if we have an IPv6 address for the name
server itself.

Signed-off-by: Michael Brown <mcb30@ipxe.org>
11 years ago[settings] Add fetch_ipv6_setting()
Michael Brown [Wed, 4 Dec 2013 23:36:53 +0000 (23:36 +0000)] 
[settings] Add fetch_ipv6_setting()

Signed-off-by: Michael Brown <mcb30@ipxe.org>
11 years ago[settings] Allow for IPv6 setting types in non-IPv6 builds
Michael Brown [Wed, 4 Dec 2013 22:06:10 +0000 (22:06 +0000)] 
[settings] Allow for IPv6 setting types in non-IPv6 builds

Allow for the existence of references to IPv6 setting types without
dragging in the whole IPv6 stack, by placing the definition of
setting_type_ipv6 in core/settings.c and providing weak stub methods
for parse_ipv6_setting() and format_ipv6_setting().

Signed-off-by: Michael Brown <mcb30@ipxe.org>
11 years ago[settings] Explicitly separate the concept of a completed fetched setting
Michael Brown [Tue, 3 Dec 2013 16:48:56 +0000 (16:48 +0000)] 
[settings] Explicitly separate the concept of a completed fetched setting

The fetch_setting() family of functions may currently modify the
definition of the specified setting (e.g. to add missing type
information).  Clean up this interface by requiring callers to provide
an explicit buffer to contain the completed definition of the fetched
setting, if required.

Signed-off-by: Michael Brown <mcb30@ipxe.org>
11 years ago[fbcon] Add support for displaying a cursor
Michael Brown [Mon, 2 Dec 2013 17:27:37 +0000 (17:27 +0000)] 
[fbcon] Add support for displaying a cursor

Signed-off-by: Michael Brown <mcb30@ipxe.org>
11 years ago[menu] Hide cursor when displaying menu
Michael Brown [Mon, 2 Dec 2013 17:25:16 +0000 (17:25 +0000)] 
[menu] Hide cursor when displaying menu

Signed-off-by: Michael Brown <mcb30@ipxe.org>
11 years ago[settings] Hide cursor when not actively editing a setting
Michael Brown [Mon, 2 Dec 2013 17:23:51 +0000 (17:23 +0000)] 
[settings] Hide cursor when not actively editing a setting

Signed-off-by: Michael Brown <mcb30@ipxe.org>
11 years ago[mucurses] Implement curs_set() to control cursor visibility
Michael Brown [Mon, 2 Dec 2013 17:23:09 +0000 (17:23 +0000)] 
[mucurses] Implement curs_set() to control cursor visibility

Signed-off-by: Michael Brown <mcb30@ipxe.org>
11 years ago[console] Allow '?' as an intermediate byte in ANSI escape sequences
Michael Brown [Mon, 2 Dec 2013 17:20:36 +0000 (17:20 +0000)] 
[console] Allow '?' as an intermediate byte in ANSI escape sequences

The ANSI escape sequences to show and hide the cursor take the form
"<ESC>[?25h" and "<ESC>[?25l" respectively.  iPXE currently treats the
'?' character as the final byte.  Fix by explicitly treating '?' as an
intermediate byte.

Signed-off-by: Michael Brown <mcb30@ipxe.org>
11 years ago[build] Fix building on OpenBSD 5.4
Michael Brown [Mon, 2 Dec 2013 15:55:45 +0000 (15:55 +0000)] 
[build] Fix building on OpenBSD 5.4

OpenBSD 5.4 seems to generate dynamically linked binaries by default,
which breaks our build process.  Fix by forcing the linker to always
create static binaries.

Reported-by: Jiri B <jirib@devio.us>
Tested-by: Jiri B <jirib@devio.us>
Signed-off-by: Michael Brown <mcb30@ipxe.org>
11 years ago[vesafb] Select an optimal mode, rather than the first acceptable mode
Michael Brown [Thu, 28 Nov 2013 14:56:25 +0000 (14:56 +0000)] 
[vesafb] Select an optimal mode, rather than the first acceptable mode

There is no requirement for VBE modes to be listed in increasing order
of resolution.  With the present logic, this can cause e.g. a 1024x768
mode to be selected if the user asks for 640x480, if the 1024x768 mode
is earlier in the mode list.

Define a scoring system for modes as

  score = ( width * height - bpp )

and choose the mode with the lowest score among all acceptable modes.
This should prefer to choose the mode closest to the requested
resolution, with a slight preference for higher colour depths.

Reported-by: Robin Smidsrød <robin@smidsrod.no>
Signed-off-by: Michael Brown <mcb30@ipxe.org>
11 years ago[vesafb] Return meaningful error when no suitable mode is found
Michael Brown [Thu, 28 Nov 2013 12:12:05 +0000 (12:12 +0000)] 
[vesafb] Return meaningful error when no suitable mode is found

Signed-off-by: Michael Brown <mcb30@ipxe.org>
11 years ago[vesafb] Skip modes for which we cannot get mode information
Michael Brown [Thu, 28 Nov 2013 11:41:07 +0000 (11:41 +0000)] 
[vesafb] Skip modes for which we cannot get mode information

The VirtualBox BIOS fails to retrieve mode information (with status
0x0100) for some modes within the mode list.  Skip any such modes,
rather than treating this as a fatal error.

Reported-by: Robin Smidsrød <robin@smidsrod.no>
Signed-off-by: Michael Brown <mcb30@ipxe.org>
11 years ago[vesafb] Include raw status value within VBE error messages
Michael Brown [Thu, 28 Nov 2013 11:50:31 +0000 (11:50 +0000)] 
[vesafb] Include raw status value within VBE error messages

Signed-off-by: Michael Brown <mcb30@ipxe.org>
11 years ago[vesafb] Add VESA frame buffer console
Michael Brown [Thu, 28 Nov 2013 04:15:34 +0000 (04:15 +0000)] 
[vesafb] Add VESA frame buffer console

The VESA frame buffer console uses the VESA BIOS extensions (VBE) to
enumerate video modes, selects an appropriate mode, and then hands off
to the generic frame buffer code.

The font is extracted from the VGA BIOS, avoiding the need to provide
an external font file.

Signed-off-by: Michael Brown <mcb30@ipxe.org>
11 years ago[fbcon] Add generic concept of a frame buffer console
Michael Brown [Thu, 28 Nov 2013 04:14:58 +0000 (04:14 +0000)] 
[fbcon] Add generic concept of a frame buffer console

Add support for a simple frame buffer console, using single buffering
and a fixed-width bitmap font.

Signed-off-by: Michael Brown <mcb30@ipxe.org>
11 years ago[cmdline] Add "console" command to configure console
Michael Brown [Wed, 27 Nov 2013 19:43:25 +0000 (19:43 +0000)] 
[cmdline] Add "console" command to configure console

Signed-off-by: Michael Brown <mcb30@ipxe.org>
11 years ago[console] Add concept of generic console configuration
Michael Brown [Wed, 27 Nov 2013 19:42:23 +0000 (19:42 +0000)] 
[console] Add concept of generic console configuration

Signed-off-by: Michael Brown <mcb30@ipxe.org>
11 years ago[console] Allow console input and output to be disabled independently
Michael Brown [Thu, 28 Nov 2013 05:41:45 +0000 (05:41 +0000)] 
[console] Allow console input and output to be disabled independently

Signed-off-by: Michael Brown <mcb30@ipxe.org>
11 years ago[mucurses] Use "<ESC>[2J" ANSI escape sequence to clear screen
Michael Brown [Thu, 28 Nov 2013 05:01:29 +0000 (05:01 +0000)] 
[mucurses] Use "<ESC>[2J" ANSI escape sequence to clear screen

Signed-off-by: Michael Brown <mcb30@ipxe.org>
11 years ago[pnm] Add support for PNM images
Michael Brown [Tue, 26 Nov 2013 16:29:30 +0000 (16:29 +0000)] 
[pnm] Add support for PNM images

Signed-off-by: Michael Brown <mcb30@ipxe.org>
11 years ago[image] Add image_pixbuf() to create pixel buffer from image
Michael Brown [Wed, 27 Nov 2013 01:13:18 +0000 (01:13 +0000)] 
[image] Add image_pixbuf() to create pixel buffer from image

Signed-off-by: Michael Brown <mcb30@ipxe.org>
11 years ago[image] Allow for non-executable image formats
Michael Brown [Tue, 26 Nov 2013 16:29:45 +0000 (16:29 +0000)] 
[image] Allow for non-executable image formats

Signed-off-by: Michael Brown <mcb30@ipxe.org>
11 years ago[pixbuf] Add generic concept of a pixel buffer
Michael Brown [Tue, 26 Nov 2013 16:28:36 +0000 (16:28 +0000)] 
[pixbuf] Add generic concept of a pixel buffer

Signed-off-by: Michael Brown <mcb30@ipxe.org>
11 years ago[console] Pass escape sequence context to ANSI escape sequence handlers
Michael Brown [Mon, 25 Nov 2013 14:01:40 +0000 (14:01 +0000)] 
[console] Pass escape sequence context to ANSI escape sequence handlers

Signed-off-by: Michael Brown <mcb30@ipxe.org>
11 years ago[main] Defer "initialising devices" message until initialising devices
Michael Brown [Mon, 18 Nov 2013 14:07:37 +0000 (14:07 +0000)] 
[main] Defer "initialising devices" message until initialising devices

Allow the "initialising devices" message to show up on consoles which
require initialisation, by deferring it until after initialise() has
completed.

Signed-off-by: Michael Brown <mcb30@ipxe.org>
11 years ago[test] Include failing code within failed test result output
Michael Brown [Wed, 27 Nov 2013 03:03:16 +0000 (03:03 +0000)] 
[test] Include failing code within failed test result output

Signed-off-by: Michael Brown <mcb30@ipxe.org>
11 years ago[dhcpv6] Allow stateful DHCPv6 to apply obtained IPv6 addresses
Michael Brown [Fri, 15 Nov 2013 15:23:09 +0000 (15:23 +0000)] 
[dhcpv6] Allow stateful DHCPv6 to apply obtained IPv6 addresses

Signed-off-by: Michael Brown <mcb30@ipxe.org>
11 years ago[ipv6] Separate the concepts of prefix and address creation
Michael Brown [Fri, 15 Nov 2013 15:12:25 +0000 (15:12 +0000)] 
[ipv6] Separate the concepts of prefix and address creation

Allow for IPv6 routing table entries to be created for an on-link
prefix where a local address has not yet been assigned to the network
device.

Signed-off-by: Michael Brown <mcb30@ipxe.org>
11 years ago[build] Update build system for Syslinux 6.x
Christian Hesse [Wed, 13 Nov 2013 10:46:02 +0000 (11:46 +0100)] 
[build] Update build system for Syslinux 6.x

Syslinux 6.x places its files into a bios subdirectory, and requires
that a ldlinux.c32 module be included within the ISO image.  Add the
relevant search paths for isolinux.bin, and include the file
ldlinux.c32 within the ISO image if it exists.

Signed-off-by: Michael Brown <mcb30@ipxe.org>
11 years ago[dhcpv6] Add basic support for stateful and stateless DHCPv6
Michael Brown [Fri, 8 Nov 2013 14:35:29 +0000 (14:35 +0000)] 
[dhcpv6] Add basic support for stateful and stateless DHCPv6

Add support for the stateful and stateless variants of the DHCPv6
protocol.  The resulting settings block is registered as
"net<x>.dhcpv6", and DHCPv6 options can be obtained using
e.g. "${net0.dhcpv6/23:ipv6}" to obtain the IPv6 DNS server address.

IPv6 addresses obtained via stateful DHCPv6 are not yet applied to the
network device.

Signed-off-by: Michael Brown <mcb30@ipxe.org>
11 years ago[ipv6] Add "ipv6" setting type
Michael Brown [Thu, 14 Nov 2013 12:34:35 +0000 (12:34 +0000)] 
[ipv6] Add "ipv6" setting type

Signed-off-by: Michael Brown <mcb30@ipxe.org>
11 years ago[ipv6] Use given source address only if it is not the unspecified address
Michael Brown [Fri, 8 Nov 2013 15:52:07 +0000 (15:52 +0000)] 
[ipv6] Use given source address only if it is not the unspecified address

Signed-off-by: Michael Brown <mcb30@ipxe.org>
11 years ago[settings] Move user-class setting from dhcp.c to settings.c
Michael Brown [Fri, 8 Nov 2013 15:52:56 +0000 (15:52 +0000)] 
[settings] Move user-class setting from dhcp.c to settings.c

Signed-off-by: Michael Brown <mcb30@ipxe.org>
11 years ago[base16] Fix comparison of signed and unsigned integers
Michael Brown [Tue, 12 Nov 2013 22:16:24 +0000 (22:16 +0000)] 
[base16] Fix comparison of signed and unsigned integers

gcc 4.7.1 fails to report this erroneous comparison unless assertions
are enabled.

Signed-off-by: Michael Brown <mcb30@ipxe.org>
11 years ago[pxe] Ensure cached DHCPACK is retrieved prior to network device creation
Michael Brown [Fri, 8 Nov 2013 12:45:22 +0000 (12:45 +0000)] 
[pxe] Ensure cached DHCPACK is retrieved prior to network device creation

The retrieval of the cached DHCPACK and the creation of network
devices are both currently scheduled as STARTUP_NORMAL.  It is
therefore possible that the cached DHCPACK will not be retrieved in
time for cachedhcp_probe() to apply it to the relevant network device.

Fix by retrieving the cached DHCPACK at initialisation time rather
than at startup time.

As an optimisation, an unclaimed cached DHCPACK can be freed
immediately after the last network device has been created, rather
than waiting until shutdown.

Reported-by: Espen Braastad <espen.braastad@redpill-linpro.com>
Signed-off-by: Michael Brown <mcb30@ipxe.org>
11 years ago[cmdline] Generate command option help text automatically
Michael Brown [Thu, 7 Nov 2013 17:00:51 +0000 (17:00 +0000)] 
[cmdline] Generate command option help text automatically

Generate the command option help text automatically from the list of
defined options.

Signed-off-by: Michael Brown <mcb30@ipxe.org>
11 years ago[ipv6] Add IPv6 network device configurator
Michael Brown [Thu, 7 Nov 2013 14:44:28 +0000 (14:44 +0000)] 
[ipv6] Add IPv6 network device configurator

Include IPv6 within the generic network device configurator
mechanism.  The IPv6 configurator will send a router solicitation and
wait for a router advertisement to be received.  (As per RFC4861
section 6.3.7, we do this even if advertisements have been received
prior to sending the router solicitation.)

Signed-off-by: Michael Brown <mcb30@ipxe.org>
11 years ago[dhcp] Remove obsolete dhcp() function
Michael Brown [Mon, 4 Nov 2013 23:07:06 +0000 (23:07 +0000)] 
[dhcp] Remove obsolete dhcp() function

All functionality provided by dhcp() has now been obviated by the more
generic ifconf().

Signed-off-by: Michael Brown <mcb30@ipxe.org>
11 years ago[cmdline] Make "dhcp" command a synonym for "ifconf"
Michael Brown [Mon, 4 Nov 2013 23:05:48 +0000 (23:05 +0000)] 
[cmdline] Make "dhcp" command a synonym for "ifconf"

Signed-off-by: Michael Brown <mcb30@ipxe.org>
11 years ago[cmdline] Add "ifconf" command
Michael Brown [Mon, 4 Nov 2013 17:06:21 +0000 (17:06 +0000)] 
[cmdline] Add "ifconf" command

Signed-off-by: Michael Brown <mcb30@ipxe.org>
11 years ago[autoboot] Use ifconf() to configure network device
Michael Brown [Mon, 4 Nov 2013 23:06:45 +0000 (23:06 +0000)] 
[autoboot] Use ifconf() to configure network device

Signed-off-by: Michael Brown <mcb30@ipxe.org>
11 years ago[ifmgmt] Add ifconf() to carry out network device configuration
Michael Brown [Mon, 4 Nov 2013 17:05:53 +0000 (17:05 +0000)] 
[ifmgmt] Add ifconf() to carry out network device configuration

Signed-off-by: Michael Brown <mcb30@ipxe.org>
11 years ago[parseopt] Add parse_netdev_configurator()
Michael Brown [Mon, 4 Nov 2013 17:05:16 +0000 (17:05 +0000)] 
[parseopt] Add parse_netdev_configurator()

Signed-off-by: Michael Brown <mcb30@ipxe.org>
11 years ago[dhcp] Add DHCP network device configurator
Michael Brown [Thu, 31 Oct 2013 15:44:39 +0000 (15:44 +0000)] 
[dhcp] Add DHCP network device configurator

Provide an interface to DHCP via the generic network device
configurator mechanism.

Signed-off-by: Michael Brown <mcb30@ipxe.org>
11 years ago[netdevice] Add generic concept of a network device configurator
Michael Brown [Thu, 31 Oct 2013 15:37:52 +0000 (15:37 +0000)] 
[netdevice] Add generic concept of a network device configurator

iPXE supports multiple mechanisms for network device configuration:
DHCPv4 for IPv4, FIP for FCoE, and SLAAC for IPv6.  At present, DHCPv4
requires an explicit action (e.g. a "dhcp" command), FIP is initiated
implicitly upon opening a network device, and SLAAC takes place
whenever a RA happens to be received.

Add a generic concept of a network device configurator, which provides
a common interface to triggering configuration and to reporting the
result of the configuration process.

Signed-off-by: Michael Brown <mcb30@ipxe.org>
11 years ago[cmdline] Allow "if<xxx>" commands to take options
Michael Brown [Mon, 4 Nov 2013 16:15:21 +0000 (16:15 +0000)] 
[cmdline] Allow "if<xxx>" commands to take options

Allow commands implemented using ifcommon_exec() to accept
command-specific options.

Signed-off-by: Michael Brown <mcb30@ipxe.org>
11 years ago[ifmgmt] Rewrite iflinkwait() to use monojob_wait()
Michael Brown [Fri, 1 Nov 2013 17:38:45 +0000 (17:38 +0000)] 
[ifmgmt] Rewrite iflinkwait() to use monojob_wait()

Signed-off-by: Michael Brown <mcb30@ipxe.org>
11 years ago[autoboot] Fix shell banner timeout
Michael Brown [Tue, 5 Nov 2013 16:58:34 +0000 (16:58 +0000)] 
[autoboot] Fix shell banner timeout

Commit 5e1fa5c ("[parseopt] Add parse_timeout()") introduced a
regression causing the shell banner timeout value (calculated in
milliseconds) to be treated as a timer tick count, resulting in a
timeout of approximately two minutes rather than the intended two
seconds.

Reported-by: Christian Hesse <list@eworm.de>
Signed-off-by: Michael Brown <mcb30@ipxe.org>
11 years ago[cmdline] Rewrite "sync" command to use monojob_wait()
Michael Brown [Fri, 1 Nov 2013 01:56:33 +0000 (01:56 +0000)] 
[cmdline] Rewrite "sync" command to use monojob_wait()

Signed-off-by: Michael Brown <mcb30@ipxe.org>
11 years ago[monojob] Report ongoing job status as overall return status on timeout
Michael Brown [Fri, 1 Nov 2013 15:13:33 +0000 (15:13 +0000)] 
[monojob] Report ongoing job status as overall return status on timeout

If a job times out then use the most recent ongoing error status
reported via job_progress() (if available) as the overall return
status.

Signed-off-by: Michael Brown <mcb30@ipxe.org>
11 years ago[monojob] Add timeout parameter to monojob_wait()
Michael Brown [Fri, 1 Nov 2013 01:55:13 +0000 (01:55 +0000)] 
[monojob] Add timeout parameter to monojob_wait()

Signed-off-by: Michael Brown <mcb30@ipxe.org>
11 years ago[job] Allow job_progress() to return an ongoing job status code, if known
Michael Brown [Fri, 1 Nov 2013 15:05:16 +0000 (15:05 +0000)] 
[job] Allow job_progress() to return an ongoing job status code, if known

Some background jobs have a meaningful ongoing status code (e.g. the
current link status for a job waiting for a network link to come up).
Allow this to be exposed via the job_progress() method.

Signed-off-by: Michael Brown <mcb30@ipxe.org>
11 years ago[interface] Default to calling intf_restart() in response to intf_close()
Michael Brown [Fri, 1 Nov 2013 15:52:31 +0000 (15:52 +0000)] 
[interface] Default to calling intf_restart() in response to intf_close()

If an object interface does not provide an intf_close() method, then
default to calling intf_restart().  This allows static objects to
safely ignore intf_close(), without needing to add code solely to
ensure that the interface gets unplugged.

Signed-off-by: Michael Brown <mcb30@ipxe.org>
11 years ago[netdevice] Make all net_driver methods optional
Michael Brown [Thu, 31 Oct 2013 14:09:43 +0000 (14:09 +0000)] 
[netdevice] Make all net_driver methods optional

Most network upper-layer drivers do not implement all three methods
(probe, notify, and remove).  Save code by making all methods
optional.

Signed-off-by: Michael Brown <mcb30@ipxe.org>
11 years ago[parseopt] Add parse_timeout()
Michael Brown [Fri, 1 Nov 2013 02:22:12 +0000 (02:22 +0000)] 
[parseopt] Add parse_timeout()

Parsing a timeout value (specified in milliseconds) into an internal
timeout value measured in timer ticks is a common operation.  Provide
a parse_timeout() value to carry out this conversion automatically.

Signed-off-by: Michael Brown <mcb30@ipxe.org>
11 years ago[ipv6] Add ndp_tx_router_solicitation() to send router solicitations
Michael Brown [Thu, 24 Oct 2013 13:06:33 +0000 (14:06 +0100)] 
[ipv6] Add ndp_tx_router_solicitation() to send router solicitations

Signed-off-by: Michael Brown <mcb30@ipxe.org>
11 years ago[pxe] Always retrieve cached DHCPACK and apply to relevant network device
Michael Brown [Fri, 25 Oct 2013 16:24:09 +0000 (17:24 +0100)] 
[pxe] Always retrieve cached DHCPACK and apply to relevant network device

When chainloading, always retrieve the cached DHCPACK packet from the
underlying PXE stack, and apply it as the original contents of the
"net<X>.dhcp" settings block.  This allows cached DHCP settings to be
used for any chainloaded iPXE binary (not just undionly.kkpxe).

This change eliminates the undocumented "use-cached" setting.  Issuing
the "dhcp" command will now always result in a fresh DHCP request.

Signed-off-by: Michael Brown <mcb30@ipxe.org>
11 years ago[ipv6] Automatically choose source for link-local and multicast destinations
Michael Brown [Fri, 25 Oct 2013 13:41:37 +0000 (14:41 +0100)] 
[ipv6] Automatically choose source for link-local and multicast destinations

When transmitting to a link-local or multicast destination address,
use the network device's link-local address as the source address if
no explicit source address has been specified.

Signed-off-by: Michael Brown <mcb30@ipxe.org>
11 years ago[ipv6] Treat sin6_scope_id consistently
Michael Brown [Fri, 25 Oct 2013 12:48:18 +0000 (13:48 +0100)] 
[ipv6] Treat sin6_scope_id consistently

sin6_scope_id is never exposed outside of the local system, and so
should be a native-endian quantity.

Signed-off-by: Michael Brown <mcb30@ipxe.org>
11 years ago[ipv6] Support stateless address autoconfiguration (SLAAC)
Michael Brown [Wed, 23 Oct 2013 13:00:12 +0000 (14:00 +0100)] 
[ipv6] Support stateless address autoconfiguration (SLAAC)

Signed-off-by: Michael Brown <mcb30@ipxe.org>
11 years ago[ipv6] Extract link layer addresses from router advertisements
Michael Brown [Tue, 22 Oct 2013 22:39:29 +0000 (23:39 +0100)] 
[ipv6] Extract link layer addresses from router advertisements

Signed-off-by: Michael Brown <mcb30@ipxe.org>
11 years ago[ipv6] Handle IPv6 option length correctly
Michael Brown [Wed, 23 Oct 2013 12:05:23 +0000 (13:05 +0100)] 
[ipv6] Handle IPv6 option length correctly

The IPv6 option length field represents the length of the option data
field, not the overall length of the option.

Signed-off-by: Michael Brown <mcb30@ipxe.org>
11 years ago[intel] Add Intel I217 Gigabit Ethernet PCI ID
lolipop [Fri, 20 Sep 2013 14:56:33 +0000 (18:56 +0400)] 
[intel] Add Intel I217 Gigabit Ethernet PCI ID

Signed-off-by: Michael Brown <mcb30@ipxe.org>
11 years ago[cmdline] Add "ping" command
Michael Brown [Mon, 21 Oct 2013 13:20:32 +0000 (14:20 +0100)] 
[cmdline] Add "ping" command

Signed-off-by: Michael Brown <mcb30@ipxe.org>
11 years ago[ping] Add top-level ping() function to ping a host
Michael Brown [Mon, 21 Oct 2013 13:19:40 +0000 (14:19 +0100)] 
[ping] Add top-level ping() function to ping a host

Signed-off-by: Michael Brown <mcb30@ipxe.org>
11 years ago[ping] Add generic ping mechanism
Michael Brown [Mon, 21 Oct 2013 13:17:47 +0000 (14:17 +0100)] 
[ping] Add generic ping mechanism

Add generic pinger mechanism (analogous to the generic downloader
mechanism) which opens a ping socket, transmits ping requests, and
passes information about ping replies to a callback function.

Signed-off-by: Michael Brown <mcb30@ipxe.org>
11 years ago[ping] Add concept of a ping socket
Michael Brown [Mon, 21 Oct 2013 13:16:10 +0000 (14:16 +0100)] 
[ping] Add concept of a ping socket

Signed-off-by: Michael Brown <mcb30@ipxe.org>
11 years ago[icmp] Add support for sending ICMP echo requests
Michael Brown [Mon, 21 Oct 2013 13:10:07 +0000 (14:10 +0100)] 
[icmp] Add support for sending ICMP echo requests

Merge common functionality between IPv4 and IPv6 ICMP echo handling,
and add support for transmitting ICMP echo requests and delivering
ICMP echo replies to a (not yet implemented) ping_rx() function.

Signed-off-by: Michael Brown <mcb30@ipxe.org>
11 years ago[resolv] Use sock_aton() to allow parsing of arbitrary numeric addresses
Michael Brown [Mon, 21 Oct 2013 13:06:55 +0000 (14:06 +0100)] 
[resolv] Use sock_aton() to allow parsing of arbitrary numeric addresses

Signed-off-by: Michael Brown <mcb30@ipxe.org>
11 years ago[ipv6] Add IPv6 socket address converter
Michael Brown [Mon, 21 Oct 2013 13:06:07 +0000 (14:06 +0100)] 
[ipv6] Add IPv6 socket address converter

Signed-off-by: Michael Brown <mcb30@ipxe.org>
11 years ago[ipv4] Add IPv4 socket address converter
Michael Brown [Mon, 21 Oct 2013 13:05:40 +0000 (14:05 +0100)] 
[ipv4] Add IPv4 socket address converter

Signed-off-by: Michael Brown <mcb30@ipxe.org>
11 years ago[socket] Add concept of a generalised socket address converter
Michael Brown [Mon, 21 Oct 2013 13:04:06 +0000 (14:04 +0100)] 
[socket] Add concept of a generalised socket address converter

Add sock_aton() and sock_ntoa() to allow for parsing and transcription
of arbitrary socket addresses.

Signed-off-by: Michael Brown <mcb30@ipxe.org>
11 years ago[netdevice] Add find_netdev_by_index()
Michael Brown [Mon, 21 Oct 2013 13:02:19 +0000 (14:02 +0100)] 
[netdevice] Add find_netdev_by_index()

Signed-off-by: Michael Brown <mcb30@ipxe.org>
11 years ago[udp] Add AF_INET6 socket opener
Michael Brown [Mon, 21 Oct 2013 13:17:18 +0000 (14:17 +0100)] 
[udp] Add AF_INET6 socket opener

Signed-off-by: Michael Brown <mcb30@ipxe.org>
11 years ago[tcp] Add AF_INET6 socket opener
Michael Brown [Mon, 21 Oct 2013 13:17:03 +0000 (14:17 +0100)] 
[tcp] Add AF_INET6 socket opener

Signed-off-by: Michael Brown <mcb30@ipxe.org>
11 years ago[cmdline] Add "nstat" command
Michael Brown [Wed, 25 Sep 2013 13:35:07 +0000 (14:35 +0100)] 
[cmdline] Add "nstat" command

Signed-off-by: Michael Brown <mcb30@ipxe.org>
11 years ago[neighbour] Add nstat() function to print out neighbour table
Michael Brown [Wed, 25 Sep 2013 13:34:00 +0000 (14:34 +0100)] 
[neighbour] Add nstat() function to print out neighbour table

Signed-off-by: Michael Brown <mcb30@ipxe.org>
11 years ago[build] Work around bug in gcc >= 4.8
Michael Brown [Wed, 25 Sep 2013 11:55:46 +0000 (12:55 +0100)] 
[build] Work around bug in gcc >= 4.8

Commit 238050d ("[build] Work around bug in gcc >= 4.8") works around
one instance of a bug in recent versions of gcc, in which "ebp" cannot
be specified within an asm clobber list.

Some versions of gcc seem to exhibit the same bug on other points in
the codebase.  Fix by changing all instances of "ebp" in a clobber
list to use the push/pop %ebp workaround instead.

Originally-implemented-by: Víctor Román Archidona <contacto@victor-roman.es>
Signed-off-by: Michael Brown <mcb30@ipxe.org>
11 years ago[ipv6] Add inet6_aton()
Michael Brown [Wed, 11 Sep 2013 03:26:39 +0000 (04:26 +0100)] 
[ipv6] Add inet6_aton()

Signed-off-by: Michael Brown <mcb30@ipxe.org>
11 years ago[tcp] Reduce path MTU to 1280 bytes
Michael Brown [Wed, 4 Sep 2013 16:37:34 +0000 (17:37 +0100)] 
[tcp] Reduce path MTU to 1280 bytes

The path MTU is currently hardcoded to 1460 bytes, which fails to
allow space for TCP options.  Sending a maximum-sized datagram (which
is viable when using HTTP POST) will therefore fail since the Ethernet
MTU will be exceeded.

Reduce the hardcoded path MTU to produce a maximum datagram of 1280
bytes, which is the size required of data link layers by IPv6.  It is
a reasonable assumption that all intermediary data link layers will be
able to convey this packet without fragmentation, even for IPv4.

Note that this reduction has a minimal impact upon download
throughput, since it affects only the transmit data path.

Originally-fixed-by: Suresh Sundriyal <ssundriy@vmware.com>
Signed-off-by: Michael Brown <mcb30@ipxe.org>
11 years ago[ipv6] Fix uninitialised-variable warning
Michael Brown [Tue, 3 Sep 2013 19:01:17 +0000 (20:01 +0100)] 
[ipv6] Fix uninitialised-variable warning

Fix uninitialised-variable warning reported by gcc 4.5.2.

Signed-off-by: Michael Brown <mcb30@ipxe.org>
11 years ago[ipv6] Replace IPv6 stack
Michael Brown [Mon, 26 Aug 2013 13:23:54 +0000 (14:23 +0100)] 
[ipv6] Replace IPv6 stack

Replace the existing partially-implemented IPv6 stack with a fresh
implementation.

This implementation is not yet complete.  The IPv6 transmit and
receive datapaths are functional (including fragment reassembly and
parsing of arbitrary extension headers).  NDP neighbour solicitations
and advertisements are supported.  ICMPv6 echo is supported.

At present, only link-local addresses may be used, and there is no way
to specify an IPv6 address as part of a URI (either directly or via
a DNS lookup).

Signed-off-by: Michael Brown <mcb30@ipxe.org>
11 years ago[ipv4] Abstract out protocol-specific portions of "route" command
Michael Brown [Tue, 3 Sep 2013 15:28:34 +0000 (16:28 +0100)] 
[ipv4] Abstract out protocol-specific portions of "route" command

Signed-off-by: Michael Brown <mcb30@ipxe.org>
11 years ago[neighbour] Generalise concept of neighbour discovery
Michael Brown [Sun, 1 Sep 2013 15:13:58 +0000 (16:13 +0100)] 
[neighbour] Generalise concept of neighbour discovery

Split the protocol-independent portions of arp.c into a separate file
neighbour.c, to allow for sharing of functionality between IPv4+ARP
and IPv6+NDP.

Signed-off-by: Michael Brown <mcb30@ipxe.org>
11 years ago[tcpip] Pass through network device to transport layer protocols
Michael Brown [Sun, 1 Sep 2013 19:55:18 +0000 (20:55 +0100)] 
[tcpip] Pass through network device to transport layer protocols

NDP requires knowledge of the network device on which a packet was
received.

Signed-off-by: Michael Brown <mcb30@ipxe.org>
11 years ago[linux] Apply MAC address prior to registering network device
Michael Brown [Sun, 1 Sep 2013 16:38:40 +0000 (17:38 +0100)] 
[linux] Apply MAC address prior to registering network device

Signed-off-by: Michael Brown <mcb30@ipxe.org>
11 years ago[ethernet] Add support for generating multicast hash for IPv6 addresses
Michael Brown [Sat, 31 Aug 2013 02:23:24 +0000 (03:23 +0100)] 
[ethernet] Add support for generating multicast hash for IPv6 addresses

Signed-off-by: Michael Brown <mcb30@ipxe.org>
11 years ago[netdevice] Add method for generating EUI-64 address from link-layer address
Michael Brown [Fri, 30 Aug 2013 18:05:03 +0000 (19:05 +0100)] 
[netdevice] Add method for generating EUI-64 address from link-layer address

Signed-off-by: Michael Brown <mcb30@ipxe.org>
11 years ago[netdevice] Add concept of a network device index
Michael Brown [Thu, 29 Aug 2013 13:10:16 +0000 (14:10 +0100)] 
[netdevice] Add concept of a network device index

IPv6 link-local socket addresses require some way to specify a local
network device.  We cannot simply use a pointer to the network device,
since a struct sockaddr_in6 may be long-lived and has no way to hold a
reference to the network device.

Using a network device index allows a socket address to cleanly refer
to a network device without worrying about whether or not that device
continues to exist.

Signed-off-by: Michael Brown <mcb30@ipxe.org>
11 years ago[netdevice] Increase maximum network-layer address length
Michael Brown [Mon, 2 Sep 2013 21:31:04 +0000 (22:31 +0100)] 
[netdevice] Increase maximum network-layer address length

IPv6 uses 16-byte network-layer addresses.

Signed-off-by: Michael Brown <mcb30@ipxe.org>
11 years ago[ipv4] Generalise fragment reassembly mechanism
Michael Brown [Tue, 27 Aug 2013 15:08:15 +0000 (16:08 +0100)] 
[ipv4] Generalise fragment reassembly mechanism

Generalise the concept of fragment reassembly to allow for code
sharing between IPv4 and IPv6 protocols.

Signed-off-by: Michael Brown <mcb30@ipxe.org>
11 years ago[linux] Give tap devices a name and bus type
Michael Brown [Tue, 27 Aug 2013 15:28:54 +0000 (16:28 +0100)] 
[linux] Give tap devices a name and bus type

Give tap devices a meaningful name, and avoid segmentation faults when
attempting to retrieve ${net0/bustype} by assigning a new bus type for
tap devices.

Signed-off-by: Michael Brown <mcb30@ipxe.org>
11 years ago[settings] Make built-in settings a linker table
Michael Brown [Tue, 27 Aug 2013 12:46:12 +0000 (13:46 +0100)] 
[settings] Make built-in settings a linker table

Allow for configurable provision of built-in settings by placing them
in a linker table rather than an array.

Signed-off-by: Michael Brown <mcb30@ipxe.org>
11 years ago[3c90x] Fix High-MTU packet reception
Thomas Miletich [Mon, 19 Aug 2013 11:36:27 +0000 (13:36 +0200)] 
[3c90x] Fix High-MTU packet reception

Prevent the card from flagging packets of 1518 bytes length as
overlength.

This fixes the High-MTU loopback test.

Signed-off-by: Thomas Miletich <thomas.miletich@gmail.com>
Signed-off-by: Michael Brown <mcb30@ipxe.org>
11 years ago[3c90x] Don't round up transmit packet length
Thomas Miletich [Mon, 19 Aug 2013 11:16:27 +0000 (13:16 +0200)] 
[3c90x] Don't round up transmit packet length

The 3c90x B and C revisions support rounding up the packet length to a
specific boundary.  Disable this feature to avoid overlength packets.

This fixes the loopback test.

Signed-off-by: Thomas Miletich <thomas.miletich@gmail.com>
Signed-off-by: Michael Brown <mcb30@ipxe.org>
11 years ago[3c90x] Stall upload engine before setting RX ring address
Thomas Miletich [Mon, 19 Aug 2013 10:59:34 +0000 (12:59 +0200)] 
[3c90x] Stall upload engine before setting RX ring address

According to the 3c90x datasheet we have to stall the upload (receive)
engine before setting the receive ring address.

Signed-off-by: Thomas Miletich <thomas.miletich@gmail.com>
Signed-off-by: Michael Brown <mcb30@ipxe.org>
11 years ago[http] Add support for HTTP POST
Michael Brown [Mon, 19 Aug 2013 16:17:49 +0000 (17:17 +0100)] 
[http] Add support for HTTP POST

Allow HTTP POST requests to be generated when the URI includes a
parameter list.  For example:

  #!ipxe
  params
  param mac ${net0/mac}
  param uuid ${uuid}
  param asset ${asset}
  chain http://boot.ipxe.org/demo/boot.php##params

Signed-off-by: Michael Brown <mcb30@ipxe.org>
11 years ago[uri] Allow URIs to incorporate a parameter list
Michael Brown [Wed, 14 Aug 2013 14:07:52 +0000 (15:07 +0100)] 
[uri] Allow URIs to incorporate a parameter list

HTTP POST requires the ability to associate a parameter list with a
URI.  There is no standardised syntax for this.  Use a non-standard
URI syntax to incorporate the specification of a parameter list within
a URI:

  URI = [ absoluteURI | relativeURI ]
[ "#" fragment ] [ "##params" [ "=" paramsName ] ]

e.g.

  http://boot.ipxe.org/demo/boot.php##params
  http://boot.ipxe.org/demo/boot.php##params=mylist

Signed-off-by: Michael Brown <mcb30@ipxe.org>