[gPXE git] mainline commit to master: [dhcp] Use correct DHCP options on EFI systems

git at etherboot.org git at etherboot.org
Fri May 28 20:58:50 EDT 2010


In the Main gPXE repository, branch master has been updated.
      adds  447aa79 [dhcp] Use correct DHCP options on EFI systems
      from  0e6bcf5 [build] Allow building against a zlib in a non-standard location

Summary of changes:
 src/Makefile.housekeeping                          |    1 +
 .../i386/include/efi/gpxe/dhcp_arch.h}             |   40 ++++++++------------
 .../i386/include/pcbios/gpxe/dhcp_arch.h}          |   40 ++++++++------------
 .../x86_64/include/efi/gpxe/dhcp_arch.h}           |   40 ++++++++------------
 src/net/udp/dhcp.c                                 |   13 ++----
 5 files changed, 54 insertions(+), 80 deletions(-)
 copy src/{core/cwuri.c => arch/i386/include/efi/gpxe/dhcp_arch.h} (52%)
 copy src/{core/cwuri.c => arch/i386/include/pcbios/gpxe/dhcp_arch.h} (52%)
 copy src/{core/cwuri.c => arch/x86_64/include/efi/gpxe/dhcp_arch.h} (52%)


- Log -----------------------------------------------------------------
------
commit 447aa79d1a47f7c68d910053aa8bfb034b5d978e
Author: Geoff Lywood <glywood at vmware.com>
Date: Tue May 4 14:31:46 2010 -0700
Committer: Joshua Oreman <oremanj at rwcr.net>

[dhcp] Use correct DHCP options on EFI systems

See RFC 4578 for details.

Signed-off-by: Joshua Oreman <oremanj at rwcr.net>

diff --git a/src/Makefile.housekeeping b/src/Makefile.housekeeping
index bf16fde..c5b15d6 100644
--- a/src/Makefile.housekeeping
+++ b/src/Makefile.housekeeping
@@ -295,6 +295,7 @@ endif
 # Include architecture-specific include path
 ifdef ARCH
 INCDIRS		+= arch/$(ARCH)/include
+INCDIRS		+= arch/$(ARCH)/include/$(PLATFORM)
 endif
 
 ###############################################################################
diff --git a/src/arch/i386/include/efi/gpxe/dhcp_arch.h b/src/arch/i386/include/efi/gpxe/dhcp_arch.h
new file mode 100644
index 0000000..f978b45
--- /dev/null
+++ b/src/arch/i386/include/efi/gpxe/dhcp_arch.h
@@ -0,0 +1,40 @@
+/*
+ * Copyright (C) 2010 VMware, Inc.  All Rights Reserved.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of the
+ * License, or any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ */
+
+#ifndef _DHCP_ARCH_H
+#define _DHCP_ARCH_H
+
+/** @file
+ *
+ * Architecture-specific DHCP options
+ */
+
+FILE_LICENCE ( GPL2_OR_LATER );
+
+#include <gpxe/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_CLIENT_ARCHITECTURE DHCP_WORD ( 6 )
+
+#define DHCP_ARCH_CLIENT_NDI DHCP_OPTION ( 1 /* UNDI */ , 3, 10 /* v3.10 */ )
+
+#endif
diff --git a/src/arch/i386/include/pcbios/gpxe/dhcp_arch.h b/src/arch/i386/include/pcbios/gpxe/dhcp_arch.h
new file mode 100644
index 0000000..c67f222
--- /dev/null
+++ b/src/arch/i386/include/pcbios/gpxe/dhcp_arch.h
@@ -0,0 +1,40 @@
+/*
+ * Copyright (C) 2010 VMware, Inc.  All Rights Reserved.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of the
+ * License, or any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ */
+
+#ifndef _DHCP_ARCH_H
+#define _DHCP_ARCH_H
+
+/** @file
+ *
+ * Architecture-specific DHCP options
+ */
+
+FILE_LICENCE ( GPL2_OR_LATER );
+
+#include <gpxe/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_CLIENT_ARCHITECTURE DHCP_WORD ( 0 )
+
+#define DHCP_ARCH_CLIENT_NDI DHCP_OPTION ( 1 /* UNDI */ , 2, 1 /* v2.1 */ )
+
+#endif
diff --git a/src/arch/x86_64/include/efi/gpxe/dhcp_arch.h b/src/arch/x86_64/include/efi/gpxe/dhcp_arch.h
new file mode 100644
index 0000000..2cef8ad
--- /dev/null
+++ b/src/arch/x86_64/include/efi/gpxe/dhcp_arch.h
@@ -0,0 +1,40 @@
+/*
+ * Copyright (C) 2010 VMware, Inc.  All Rights Reserved.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of the
+ * License, or any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ */
+
+#ifndef _DHCP_ARCH_H
+#define _DHCP_ARCH_H
+
+/** @file
+ *
+ * Architecture-specific DHCP options
+ */
+
+FILE_LICENCE ( GPL2_OR_LATER );
+
+#include <gpxe/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_CLIENT_ARCHITECTURE DHCP_WORD ( 7 )
+
+#define DHCP_ARCH_CLIENT_NDI DHCP_OPTION ( 1 /* UNDI */ , 3, 10 /* v3.10 */ )
+
+#endif
diff --git a/src/net/udp/dhcp.c b/src/net/udp/dhcp.c
index 8ee4100..ed2385b 100644
--- a/src/net/udp/dhcp.c
+++ b/src/net/udp/dhcp.c
@@ -40,6 +40,7 @@ FILE_LICENCE ( GPL2_OR_LATER );
 #include <gpxe/dhcp.h>
 #include <gpxe/dhcpopts.h>
 #include <gpxe/dhcppkt.h>
+#include <gpxe/dhcp_arch.h>
 #include <gpxe/features.h>
 
 /** @file
@@ -74,14 +75,10 @@ static uint8_t dhcp_request_options_data[] = {
 	DHCP_MESSAGE_TYPE, DHCP_BYTE ( 0 ),
 	DHCP_MAX_MESSAGE_SIZE,
 	DHCP_WORD ( ETH_MAX_MTU - 20 /* IP header */ - 8 /* UDP header */ ),
-	DHCP_CLIENT_ARCHITECTURE, DHCP_WORD ( 0 ),
-	DHCP_CLIENT_NDI, DHCP_OPTION ( 1 /* UNDI */ , 2, 1 /* v2.1 */ ),
-	DHCP_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' ),
-	DHCP_USER_CLASS_ID,
-	DHCP_STRING ( 'g', 'P', 'X', 'E' ),
+	DHCP_CLIENT_ARCHITECTURE, DHCP_ARCH_CLIENT_ARCHITECTURE,
+	DHCP_CLIENT_NDI, DHCP_ARCH_CLIENT_NDI,
+	DHCP_VENDOR_CLASS_ID, DHCP_ARCH_VENDOR_CLASS_ID,
+	DHCP_USER_CLASS_ID, DHCP_STRING ( 'g', 'P', 'X', 'E' ),
 	DHCP_PARAMETER_REQUEST_LIST,
 	DHCP_OPTION ( DHCP_SUBNET_MASK, DHCP_ROUTERS, DHCP_DNS_SERVERS,
 		      DHCP_LOG_SERVERS, DHCP_HOST_NAME, DHCP_DOMAIN_NAME,
-----------------------------------------------------------------------


-- 
Main gPXE repository


More information about the gPXE-commits mailing list