I have pushed a series of patches which aims to pull together various IPv6 improvements. This includes exposing IPv6 addresses via the settings mechanism, allowing for manual assignment of IPv6 addresses via the settings mechanism, and selecting an appropriate routing table entry when there are multiple routers available.

Automatically assigned IPv6 addresses can be observed using e.g.

  ${net0.link/ip6} - link-local IPv6 address
  ${net0.ndp.0/ip6} - SLAAC IPv6 address from first advertised prefix
  ${net0.ndp.1/ip6} - SLAAC IPv6 address from second advertised prefix
  ${net0.dhcpv6/ip6} - stateful DHCPv6 IPv6 address

The ordering of settings blocks is such that ${net0/ip6} should evaluate to give the intuitively most relevant address. For example, it will evaluate to ${net0.link/ip6} if only a link-local address is available, but to ${net0.dhcpv6/ip6} if stateful DHCPv6 is used.

Manual assignment of IPv6 addresses can be done via e.g.

  set net0/ip6 2001:ba8:0:1d4::6950:5845
  set net0/len6 64
  set net0/gateway6 fe80::226:bff:fedd:d3c0

The prefix length ("len6") may be omitted, in which case a default prefix length of 64 will be assumed.

Multiple IPv6 addresses may be assigned manually by implicitly creating child settings blocks. For example:

  set net0/ip6 2001:ba8:0:1d4::6950:5845
  set net0.ula/ip6 fda4:2496:e992::6950:5845

The routing mechanism should now correctly handle ULAs and site-local addresses. There are routing table unit tests using ipv6_route_ok().

Thank you to everyone who has sent IPv6-related patches.

Michael
_______________________________________________
ipxe-devel mailing list
ipxe-devel@lists.ipxe.org
https://lists.ipxe.org/mailman/listinfo.cgi/ipxe-devel

Reply via email to