diff options
-rw-r--r-- | src/arch/i386/include/efi/ipxe/dhcp_arch.h | 3 | ||||
-rw-r--r-- | src/arch/i386/include/pcbios/ipxe/dhcp_arch.h | 3 | ||||
-rw-r--r-- | src/arch/x86_64/include/efi/ipxe/dhcp_arch.h | 5 | ||||
-rw-r--r-- | src/include/ipxe/dhcp.h | 33 |
4 files changed, 40 insertions, 4 deletions
diff --git a/src/arch/i386/include/efi/ipxe/dhcp_arch.h b/src/arch/i386/include/efi/ipxe/dhcp_arch.h index 902caff95..184177219 100644 --- a/src/arch/i386/include/efi/ipxe/dhcp_arch.h +++ b/src/arch/i386/include/efi/ipxe/dhcp_arch.h @@ -33,7 +33,8 @@ FILE_LICENCE ( GPL2_OR_LATER ); 'A', 'r', 'c', 'h', ':', '0', '0', '0', '0', '6', ':', \ 'U', 'N', 'D', 'I', ':', '0', '0', '3', '0', '1', '0' ) -#define DHCP_ARCH_CLIENT_ARCHITECTURE DHCP_WORD ( 6 ) +#define DHCP_ARCH_CLIENT_ARCHITECTURE \ + DHCP_WORD ( DHCP_CLIENT_ARCHITECTURE_IA32 ) #define DHCP_ARCH_CLIENT_NDI DHCP_OPTION ( 1 /* UNDI */ , 3, 10 /* v3.10 */ ) diff --git a/src/arch/i386/include/pcbios/ipxe/dhcp_arch.h b/src/arch/i386/include/pcbios/ipxe/dhcp_arch.h index 822b3eba9..a36d9cfa1 100644 --- a/src/arch/i386/include/pcbios/ipxe/dhcp_arch.h +++ b/src/arch/i386/include/pcbios/ipxe/dhcp_arch.h @@ -33,7 +33,8 @@ FILE_LICENCE ( GPL2_OR_LATER ); 'A', 'r', 'c', 'h', ':', '0', '0', '0', '0', '0', ':', \ 'U', 'N', 'D', 'I', ':', '0', '0', '2', '0', '0', '1' ) -#define DHCP_ARCH_CLIENT_ARCHITECTURE DHCP_WORD ( 0 ) +#define DHCP_ARCH_CLIENT_ARCHITECTURE \ + DHCP_WORD ( DHCP_CLIENT_ARCHITECTURE_X86 ) #define DHCP_ARCH_CLIENT_NDI DHCP_OPTION ( 1 /* UNDI */ , 2, 1 /* v2.1 */ ) diff --git a/src/arch/x86_64/include/efi/ipxe/dhcp_arch.h b/src/arch/x86_64/include/efi/ipxe/dhcp_arch.h index af41b195e..9a4790fdc 100644 --- a/src/arch/x86_64/include/efi/ipxe/dhcp_arch.h +++ b/src/arch/x86_64/include/efi/ipxe/dhcp_arch.h @@ -30,10 +30,11 @@ FILE_LICENCE ( GPL2_OR_LATER ); #define DHCP_ARCH_VENDOR_CLASS_ID \ DHCP_STRING ( 'P', 'X', 'E', 'C', 'l', 'i', 'e', 'n', 't', ':', \ - 'A', 'r', 'c', 'h', ':', '0', '0', '0', '0', '7', ':', \ + 'A', 'r', 'c', 'h', ':', '0', '0', '0', '0', '9', ':', \ 'U', 'N', 'D', 'I', ':', '0', '0', '3', '0', '1', '0' ) -#define DHCP_ARCH_CLIENT_ARCHITECTURE DHCP_WORD ( 7 ) +#define DHCP_ARCH_CLIENT_ARCHITECTURE \ + DHCP_WORD ( DHCP_CLIENT_ARCHITECTURE_X86_64 ) #define DHCP_ARCH_CLIENT_NDI DHCP_OPTION ( 1 /* UNDI */ , 3, 10 /* v3.10 */ ) diff --git a/src/include/ipxe/dhcp.h b/src/include/ipxe/dhcp.h index 148e3d66f..dbca8e633 100644 --- a/src/include/ipxe/dhcp.h +++ b/src/include/ipxe/dhcp.h @@ -240,6 +240,39 @@ struct dhcp_client_id { /** Client system architecture */ #define DHCP_CLIENT_ARCHITECTURE 93 +/** DHCP client architecture */ +struct dhcp_client_architecture { + uint16_t arch; +} __attribute__ (( packed )); + +/** DHCP client architecture values + * + * These are defined by the PXE specification and redefined by + * RFC4578. + */ +enum dhcp_client_architecture_values { + /** Intel x86 PC */ + DHCP_CLIENT_ARCHITECTURE_X86 = 0x0000, + /** NEC/PC98 */ + DHCP_CLIENT_ARCHITECTURE_PC98 = 0x0001, + /** EFI Itanium */ + DHCP_CLIENT_ARCHITECTURE_IA64 = 0x0002, + /** DEC Alpha */ + DHCP_CLIENT_ARCHITECTURE_ALPHA = 0x0003, + /** Arc x86 */ + DHCP_CLIENT_ARCHITECTURE_ARCX86 = 0x0004, + /** Intel Lean Client */ + DHCP_CLIENT_ARCHITECTURE_LC = 0x0005, + /** EFI IA32 */ + DHCP_CLIENT_ARCHITECTURE_IA32 = 0x0006, + /** EFI BC */ + DHCP_CLIENT_ARCHITECTURE_EFI = 0x0007, + /** EFI Xscale */ + DHCP_CLIENT_ARCHITECTURE_XSCALE = 0x0008, + /** EFI x86-64 */ + DHCP_CLIENT_ARCHITECTURE_X86_64 = 0x0009, +}; + /** Client network device interface */ #define DHCP_CLIENT_NDI 94 |