[PATCH v3 0/3] net: DHCPv6 protocol and commands

seanedmond
2023-04-11T17:49:25Z

From: Sean Edmond <seanedmond@microsoft.com>

The recently integrated IPv6 patch series relies on the link-local address,
or a statically assigned IPv6 address for network operations. This patch
series adds IPv6 address assignment through DHCPv6.

The implementation meets the requirements in RFC 8415 for "Client/Server
Exchanges Involving Four Messages":
https://www.rfc-editor.org/rfc/rfc8415

The implementation sends/receives the minimum required DHCPv6 options to
network boot.

A new command (dhcp6) will execute the protocol. In addition, IPv6
functionality has been extended to the existing pxe commands ("pxe get"
and "pxe boot").

changes in v3:
- Always instance pxelinux_configfile (allows for clean-up of many ugly #ifdef)
- clean-up includes in dhcpv6.c
- clean-up single line comments
- use strlcpy() for setting pxelinux_configfile
- change API ordering to reduce fordard declarations in dhcpv6.c
- remove <net6.h> and <net.h> include in dhcpv6.h
- Add detailed function header to dhcp6_start()
- Remove conditional include of dhcpv6.h
- Remove inline from pxe_dhcp_option_path()
- Remove ugly "pxe get"/"pxe boot" command definition (specify the maximum
number of arguments and do number of parameter checking in c code)

changes in v2:
- Add sandbox test in test_net.py
- Add CONFIG_CMD_DHCP6 to sandbox_defconfig
- fix comment style (/**/ instead of //)
- move addition of Kconfig from 1st patch to 2nd patch
- Fix warning (warning: label ‘error_exit’ defined but not used") when
CONFIG_DHCP6_PXE_DHCP_OPTION not configured
- Fix dhcp6 command help
- Use net_set_timeout_handler(0, NULL) in dhcpv6.c
- Move USE_IP6_CMD_PARAM back to net6.h

Sean Edmond (3):
net: dhcp6: Add DHCPv6 (DHCP for IPv6)
net: dhcp6: pxe: Add DHCP/PXE commands for IPv6
net: dhcp6: Add a sandbox test for dhcp6

boot/bootmeth_distro.c | 2 +-
boot/bootmeth_pxe.c | 4 +-
boot/pxe_utils.c | 3 +-
cmd/Kconfig | 26 ++
cmd/net.c | 23 ++
cmd/pxe.c | 85 ++++-
cmd/sysboot.c | 2 +-
configs/sandbox_defconfig | 1 +
include/net.h | 6 +-
include/pxe_utils.h | 10 +-
net/Makefile | 1 +
net/dhcpv6.c | 719 ++++++++++++++++++++++++++++++++++++++
net/dhcpv6.h | 256 ++++++++++++++
net/net.c | 11 +-
test/py/tests/test_net.py | 25 ++
15 files changed, 1147 insertions(+), 27 deletions(-)
create mode 100644 net/dhcpv6.c
create mode 100644 net/dhcpv6.h

--
2.40.0