diff options
-rw-r--r-- | cmd/Kconfig | 28 | ||||
-rw-r--r-- | net/bootp.c | 6 | ||||
-rw-r--r-- | net/dhcpv6.c | 6 |
3 files changed, 22 insertions, 18 deletions
diff --git a/cmd/Kconfig b/cmd/Kconfig index c335eceea63..4eb0140c10a 100644 --- a/cmd/Kconfig +++ b/cmd/Kconfig @@ -1864,12 +1864,6 @@ config CMD_DHCP6 if CMD_DHCP6 -config DHCP6_PXE_CLIENTARCH - hex - default 0x16 if ARM64 - default 0x15 if ARM - default 0xFF - config DHCP6_PXE_DHCP_OPTION bool "Request & store 'pxe_configfile' from DHCP6 server" @@ -1977,12 +1971,22 @@ config BOOTP_PXE help Supported for ARM, ARM64, and x86 for now. -config BOOTP_PXE_CLIENTARCH - hex - depends on BOOTP_PXE - default 0x16 if ARM64 - default 0x15 if ARM - default 0x0 if X86 +config DHCP_PXE_CLIENTARCH + hex "DCHCP client system architecture type" + depends on BOOTP_PXE || CMD_DHCP6 + default 0x16 if ARM64 # arm 64 uboot + default 0x15 if ARM # arm 32 uboot + default 0x0 if X86 # x86 BIOS + default 0xFF # DHCP option not sent + help + DHCP option 93 (defined in RFC4578) or DHCPv6 option 61 (defined in + RFC 5970) is used to transmit the client system architecture type + to the DHCP server. The DHCP server may use this information to + choose the boot file. For a complete list of assigned values see + https://www.iana.org/assignments/dhcpv6-parameters#processor-architecture. + + If the value is set to the reserved value 0xFF, the DHCP option will + not be sent by U-Boot. config BOOTP_PXE_DHCP_OPTION bool "Request & store 'pxe_configfile' from BOOTP/DHCP server" diff --git a/net/bootp.c b/net/bootp.c index f22921ed388..95d906e3b2d 100644 --- a/net/bootp.c +++ b/net/bootp.c @@ -545,14 +545,14 @@ static int dhcp_extended(u8 *e, int message_type, struct in_addr server_ip, } #endif -#ifdef CONFIG_BOOTP_PXE_CLIENTARCH - clientarch = CONFIG_BOOTP_PXE_CLIENTARCH; +#ifdef CONFIG_DHCP_PXE_CLIENTARCH + clientarch = CONFIG_DHCP_PXE_CLIENTARCH; #endif if (env_get("bootp_arch")) clientarch = env_get_ulong("bootp_arch", 16, clientarch); - if (clientarch > 0) { + if (clientarch != 0xff) { *e++ = 93; /* Client System Architecture */ *e++ = 2; *e++ = (clientarch >> 8) & 0xff; diff --git a/net/dhcpv6.c b/net/dhcpv6.c index 0c2de75ba1d..5bf935cb6a3 100644 --- a/net/dhcpv6.c +++ b/net/dhcpv6.c @@ -128,7 +128,7 @@ static int dhcp6_add_option(int option_id, uchar *pkt) break; case DHCP6_OPTION_CLIENT_ARCH_TYPE: client_arch_opt = (struct dhcp6_option_client_arch *)dhcp_option_start; - client_arch_opt->arch_type[num_client_arch++] = htons(CONFIG_DHCP6_PXE_CLIENTARCH); + client_arch_opt->arch_type[num_client_arch++] = htons(CONFIG_DHCP_PXE_CLIENTARCH); opt_len = sizeof(__be16) * num_client_arch; break; @@ -194,7 +194,7 @@ static void dhcp6_send_solicit_packet(void) pkt += dhcp6_add_option(DHCP6_OPTION_ELAPSED_TIME, pkt); pkt += dhcp6_add_option(DHCP6_OPTION_IA_NA, pkt); pkt += dhcp6_add_option(DHCP6_OPTION_ORO, pkt); - if (CONFIG_DHCP6_PXE_CLIENTARCH != 0xFF) + if (CONFIG_DHCP_PXE_CLIENTARCH != 0xFF) pkt += dhcp6_add_option(DHCP6_OPTION_CLIENT_ARCH_TYPE, pkt); pkt += dhcp6_add_option(DHCP6_OPTION_VENDOR_CLASS, pkt); pkt += dhcp6_add_option(DHCP6_OPTION_NII, pkt); @@ -244,7 +244,7 @@ static void dhcp6_send_request_packet(void) memcpy(pkt, sm_params.server_uid.uid_ptr, sm_params.server_uid.uid_size); pkt += sm_params.server_uid.uid_size; } - if (CONFIG_DHCP6_PXE_CLIENTARCH != 0xFF) + if (CONFIG_DHCP_PXE_CLIENTARCH != 0xFF) pkt += dhcp6_add_option(DHCP6_OPTION_CLIENT_ARCH_TYPE, pkt); pkt += dhcp6_add_option(DHCP6_OPTION_VENDOR_CLASS, pkt); pkt += dhcp6_add_option(DHCP6_OPTION_NII, pkt); |