summaryrefslogtreecommitdiffstats
path: root/src/arch
diff options
context:
space:
mode:
authorMichael Brown2016-07-04 14:15:05 +0200
committerMichael Brown2016-07-04 14:15:05 +0200
commit3d9f094022854ca06d02f34c688896abde9e1b20 (patch)
tree3905fa7145b191aaa733fceea7f11f2a24b2f0dc /src/arch
parent[pxe] Disable interrupts on the PIC before starting NBP (diff)
downloadipxe-3d9f094022854ca06d02f34c688896abde9e1b20.tar.gz
ipxe-3d9f094022854ca06d02f34c688896abde9e1b20.tar.xz
ipxe-3d9f094022854ca06d02f34c688896abde9e1b20.zip
[dhcp] Allow for variable encapsulation of architecture-specific options
DHCPv4 and DHCPv6 share some values in common for the architecture- specific options (such as the client system architecture type), but use different encapsulations: DHCPv4 has a single byte for the option length while DHCPv6 has a 16-bit field for the option length. Move the containing DHCP_OPTION() and related wrappers from the individual dhcp_arch.h files to dhcp.c, thus allowing for the architecture-specific values to be reused in dhcpv6.c. Signed-off-by: Michael Brown <mcb30@ipxe.org>
Diffstat (limited to 'src/arch')
-rw-r--r--src/arch/arm32/include/efi/ipxe/dhcp_arch.h13
-rw-r--r--src/arch/arm64/include/efi/ipxe/dhcp_arch.h13
-rw-r--r--src/arch/i386/include/efi/ipxe/dhcp_arch.h13
-rw-r--r--src/arch/i386/include/pcbios/ipxe/dhcp_arch.h13
-rw-r--r--src/arch/x86_64/include/efi/ipxe/dhcp_arch.h13
-rw-r--r--src/arch/x86_64/include/pcbios/ipxe/dhcp_arch.h13
6 files changed, 36 insertions, 42 deletions
diff --git a/src/arch/arm32/include/efi/ipxe/dhcp_arch.h b/src/arch/arm32/include/efi/ipxe/dhcp_arch.h
index f9baab4f..e971955b 100644
--- a/src/arch/arm32/include/efi/ipxe/dhcp_arch.h
+++ b/src/arch/arm32/include/efi/ipxe/dhcp_arch.h
@@ -33,14 +33,13 @@ FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL );
#include <ipxe/dhcp.h>
-#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', ':', \
- 'U', 'N', 'D', 'I', ':', '0', '0', '3', '0', '1', '0' )
+#define DHCP_ARCH_VENDOR_CLASS_ID \
+ 'P', 'X', 'E', 'C', 'l', 'i', 'e', 'n', 't', ':', \
+ 'A', 'r', 'c', 'h', ':', '0', '0', '0', '0', '7', ':', \
+ 'U', 'N', 'D', 'I', ':', '0', '0', '3', '0', '1', '0'
-#define DHCP_ARCH_CLIENT_ARCHITECTURE \
- DHCP_WORD ( DHCP_CLIENT_ARCHITECTURE_ARM32 )
+#define DHCP_ARCH_CLIENT_ARCHITECTURE DHCP_CLIENT_ARCHITECTURE_ARM32
-#define DHCP_ARCH_CLIENT_NDI DHCP_OPTION ( 1 /* UNDI */ , 3, 10 /* v3.10 */ )
+#define DHCP_ARCH_CLIENT_NDI 1 /* UNDI */ , 3, 10 /* v3.10 */
#endif
diff --git a/src/arch/arm64/include/efi/ipxe/dhcp_arch.h b/src/arch/arm64/include/efi/ipxe/dhcp_arch.h
index 48a36d05..4ffea7f4 100644
--- a/src/arch/arm64/include/efi/ipxe/dhcp_arch.h
+++ b/src/arch/arm64/include/efi/ipxe/dhcp_arch.h
@@ -33,14 +33,13 @@ FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL );
#include <ipxe/dhcp.h>
-#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', ':', \
- 'U', 'N', 'D', 'I', ':', '0', '0', '3', '0', '1', '0' )
+#define DHCP_ARCH_VENDOR_CLASS_ID \
+ 'P', 'X', 'E', 'C', 'l', 'i', 'e', 'n', 't', ':', \
+ 'A', 'r', 'c', 'h', ':', '0', '0', '0', '0', '7', ':', \
+ 'U', 'N', 'D', 'I', ':', '0', '0', '3', '0', '1', '0'
-#define DHCP_ARCH_CLIENT_ARCHITECTURE \
- DHCP_WORD ( DHCP_CLIENT_ARCHITECTURE_ARM64 )
+#define DHCP_ARCH_CLIENT_ARCHITECTURE DHCP_CLIENT_ARCHITECTURE_ARM64
-#define DHCP_ARCH_CLIENT_NDI DHCP_OPTION ( 1 /* UNDI */ , 3, 10 /* v3.10 */ )
+#define DHCP_ARCH_CLIENT_NDI 1 /* UNDI */ , 3, 10 /* v3.10 */
#endif
diff --git a/src/arch/i386/include/efi/ipxe/dhcp_arch.h b/src/arch/i386/include/efi/ipxe/dhcp_arch.h
index c17c1ea5..74027928 100644
--- a/src/arch/i386/include/efi/ipxe/dhcp_arch.h
+++ b/src/arch/i386/include/efi/ipxe/dhcp_arch.h
@@ -33,14 +33,13 @@ FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL );
#include <ipxe/dhcp.h>
-#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', '6', ':', \
- 'U', 'N', 'D', 'I', ':', '0', '0', '3', '0', '1', '0' )
+#define DHCP_ARCH_VENDOR_CLASS_ID \
+ 'P', 'X', 'E', 'C', 'l', 'i', 'e', 'n', 't', ':', \
+ '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 ( DHCP_CLIENT_ARCHITECTURE_IA32 )
+#define DHCP_ARCH_CLIENT_ARCHITECTURE DHCP_CLIENT_ARCHITECTURE_IA32
-#define DHCP_ARCH_CLIENT_NDI DHCP_OPTION ( 1 /* UNDI */ , 3, 10 /* v3.10 */ )
+#define DHCP_ARCH_CLIENT_NDI 1 /* UNDI */ , 3, 10 /* v3.10 */
#endif
diff --git a/src/arch/i386/include/pcbios/ipxe/dhcp_arch.h b/src/arch/i386/include/pcbios/ipxe/dhcp_arch.h
index e07e4c19..0a7a2f7c 100644
--- a/src/arch/i386/include/pcbios/ipxe/dhcp_arch.h
+++ b/src/arch/i386/include/pcbios/ipxe/dhcp_arch.h
@@ -33,14 +33,13 @@ FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL );
#include <ipxe/dhcp.h>
-#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', '0', ':', \
- 'U', 'N', 'D', 'I', ':', '0', '0', '2', '0', '0', '1' )
+#define DHCP_ARCH_VENDOR_CLASS_ID \
+ 'P', 'X', 'E', 'C', 'l', 'i', 'e', 'n', 't', ':', \
+ '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 ( DHCP_CLIENT_ARCHITECTURE_X86 )
+#define DHCP_ARCH_CLIENT_ARCHITECTURE DHCP_CLIENT_ARCHITECTURE_X86
-#define DHCP_ARCH_CLIENT_NDI DHCP_OPTION ( 1 /* UNDI */ , 2, 1 /* v2.1 */ )
+#define DHCP_ARCH_CLIENT_NDI 1 /* UNDI */ , 2, 1 /* v2.1 */
#endif
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 6511c1ad..b35818ef 100644
--- a/src/arch/x86_64/include/efi/ipxe/dhcp_arch.h
+++ b/src/arch/x86_64/include/efi/ipxe/dhcp_arch.h
@@ -33,14 +33,13 @@ FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL );
#include <ipxe/dhcp.h>
-#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', '9', ':', \
- 'U', 'N', 'D', 'I', ':', '0', '0', '3', '0', '1', '0' )
+#define DHCP_ARCH_VENDOR_CLASS_ID \
+ 'P', 'X', 'E', 'C', 'l', 'i', 'e', 'n', 't', ':', \
+ '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 ( DHCP_CLIENT_ARCHITECTURE_X86_64 )
+#define DHCP_ARCH_CLIENT_ARCHITECTURE DHCP_CLIENT_ARCHITECTURE_X86_64
-#define DHCP_ARCH_CLIENT_NDI DHCP_OPTION ( 1 /* UNDI */ , 3, 10 /* v3.10 */ )
+#define DHCP_ARCH_CLIENT_NDI 1 /* UNDI */ , 3, 10 /* v3.10 */
#endif
diff --git a/src/arch/x86_64/include/pcbios/ipxe/dhcp_arch.h b/src/arch/x86_64/include/pcbios/ipxe/dhcp_arch.h
index e07e4c19..0a7a2f7c 100644
--- a/src/arch/x86_64/include/pcbios/ipxe/dhcp_arch.h
+++ b/src/arch/x86_64/include/pcbios/ipxe/dhcp_arch.h
@@ -33,14 +33,13 @@ FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL );
#include <ipxe/dhcp.h>
-#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', '0', ':', \
- 'U', 'N', 'D', 'I', ':', '0', '0', '2', '0', '0', '1' )
+#define DHCP_ARCH_VENDOR_CLASS_ID \
+ 'P', 'X', 'E', 'C', 'l', 'i', 'e', 'n', 't', ':', \
+ '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 ( DHCP_CLIENT_ARCHITECTURE_X86 )
+#define DHCP_ARCH_CLIENT_ARCHITECTURE DHCP_CLIENT_ARCHITECTURE_X86
-#define DHCP_ARCH_CLIENT_NDI DHCP_OPTION ( 1 /* UNDI */ , 2, 1 /* v2.1 */ )
+#define DHCP_ARCH_CLIENT_NDI 1 /* UNDI */ , 2, 1 /* v2.1 */
#endif