NetworkPkg: Refine codes related to Dhcpv4 and Dhcpv6 configuration.

v2:
*Since we have redefined the name of arch types in Dhcp.h for http boot,
it need to change corresponding codes.

Add a new head file Dhcp.h in Mde/Include/IndustryStandard, normalize the
universal option numbers and other network number tags.

Cc: Sriram Subramanian <sriram-s@hpe.com>
Cc: Ye Ting <ting.ye@intel.com>
Cc: Fu Siyuan <siyuan.fu@intel.com>
Cc: Wu Jiaxin <jiaxin.wu@intel.com>
Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Zhang Lubo <lubo.zhang@intel.com>
Reviewed-by: Fu Siyuan <siyuan.fu@intel.com>
This commit is contained in:
Zhang Lubo 2016-06-22 10:25:21 +08:00 committed by Jiaxin Wu
parent ac6c3d90ed
commit 142c00c3d6
20 changed files with 155 additions and 418 deletions

View File

@ -1,7 +1,7 @@
/** @file
Dhcp6 internal data structure and definition declaration.
Copyright (c) 2009 - 2012, Intel Corporation. All rights reserved.<BR>
Copyright (c) 2009 - 2016, Intel Corporation. All rights reserved.<BR>
This program and the accompanying materials
are licensed and made available under the terms and conditions of the BSD License
@ -19,6 +19,8 @@
#include <Uefi.h>
#include <IndustryStandard/Dhcp.h>
#include <Protocol/Dhcp6.h>
#include <Protocol/Udp6.h>
#include <Protocol/Ip6Config.h>
@ -50,66 +52,6 @@ typedef struct _DHCP6_INSTANCE DHCP6_INSTANCE;
#define DHCP6_SERVICE_SIGNATURE SIGNATURE_32 ('D', 'H', '6', 'S')
#define DHCP6_INSTANCE_SIGNATURE SIGNATURE_32 ('D', 'H', '6', 'I')
//
// Transmit parameters of solicit message, refers to section-5.5 of rfc-3315.
//
#define DHCP6_SOL_MAX_DELAY 1
#define DHCP6_SOL_IRT 1
#define DHCP6_SOL_MRC 0
#define DHCP6_SOL_MRT 120
#define DHCP6_SOL_MRD 0
//
// Transmit parameters of request message, refers to section-5.5 of rfc-3315.
//
#define DHCP6_REQ_IRT 1
#define DHCP6_REQ_MRC 10
#define DHCP6_REQ_MRT 30
#define DHCP6_REQ_MRD 0
//
// Transmit parameters of confirm message, refers to section-5.5 of rfc-3315.
//
#define DHCP6_CNF_MAX_DELAY 1
#define DHCP6_CNF_IRT 1
#define DHCP6_CNF_MRC 0
#define DHCP6_CNF_MRT 4
#define DHCP6_CNF_MRD 10
//
// Transmit parameters of renew message, refers to section-5.5 of rfc-3315.
//
#define DHCP6_REN_IRT 10
#define DHCP6_REN_MRC 0
#define DHCP6_REN_MRT 600
#define DHCP6_REN_MRD 0
//
// Transmit parameters of rebind message, refers to section-5.5 of rfc-3315.
//
#define DHCP6_REB_IRT 10
#define DHCP6_REB_MRC 0
#define DHCP6_REB_MRT 600
#define DHCP6_REB_MRD 0
//
// Transmit parameters of information request message, refers to section-5.5 of rfc-3315.
//
#define DHCP6_INF_MAX_DELAY 1
#define DHCP6_INF_IRT 1
#define DHCP6_INF_MRC 0
#define DHCP6_INF_MRT 120
#define DHCP6_INF_MRD 0
//
// Transmit parameters of release message, refers to section-5.5 of rfc-3315.
//
#define DHCP6_REL_IRT 1
#define DHCP6_REL_MRC 5
#define DHCP6_REL_MRT 0
#define DHCP6_REL_MRD 0
//
// Transmit parameters of decline message, refers to section-5.5 of rfc-3315.
//
#define DHCP6_DEC_IRT 1
#define DHCP6_DEC_MRC 5
#define DHCP6_DEC_MRT 0
#define DHCP6_DEC_MRD 0
#define DHCP6_PACKET_ALL 0
#define DHCP6_PACKET_STATEFUL 1
#define DHCP6_PACKET_STATELESS 2
@ -126,70 +68,6 @@ extern EFI_IPv6_ADDRESS mAllDhcpRelayAndServersAddress;
extern EFI_IPv6_ADDRESS mAllDhcpServersAddress;
extern EFI_DHCP6_PROTOCOL gDhcp6ProtocolTemplate;
//
// Enumeration of Dhcp6 message type, refers to section-5.3 of rfc-3315.
//
typedef enum {
Dhcp6MsgSolicit = 1,
Dhcp6MsgAdvertise = 2,
Dhcp6MsgRequest = 3,
Dhcp6MsgConfirm = 4,
Dhcp6MsgRenew = 5,
Dhcp6MsgRebind = 6,
Dhcp6MsgReply = 7,
Dhcp6MsgRelease = 8,
Dhcp6MsgDecline = 9,
Dhcp6MsgReconfigure = 10,
Dhcp6MsgInfoRequest = 11
} DHCP6_MSG_TYPE;
//
// Enumeration of option code in Dhcp6 packet, refers to section-24.3 of rfc-3315.
//
typedef enum {
Dhcp6OptClientId = 1,
Dhcp6OptServerId = 2,
Dhcp6OptIana = 3,
Dhcp6OptIata = 4,
Dhcp6OptIaAddr = 5,
Dhcp6OptRequestOption = 6,
Dhcp6OptPreference = 7,
Dhcp6OptElapsedTime = 8,
Dhcp6OptReplayMessage = 9,
Dhcp6OptAuthentication = 11,
Dhcp6OptServerUnicast = 12,
Dhcp6OptStatusCode = 13,
Dhcp6OptRapidCommit = 14,
Dhcp6OptUserClass = 15,
Dhcp6OptVendorClass = 16,
Dhcp6OptVendorInfo = 17,
Dhcp6OptInterfaceId = 18,
Dhcp6OptReconfigMessage = 19,
Dhcp6OptReconfigureAccept = 20
} DHCP6_OPT_CODE;
//
// Enumeration of status code recorded by IANA, refers to section-24.4 of rfc-3315.
//
typedef enum {
Dhcp6StsSuccess = 0,
Dhcp6StsUnspecFail = 1,
Dhcp6StsNoAddrsAvail = 2,
Dhcp6StsNoBinding = 3,
Dhcp6StsNotOnLink = 4,
Dhcp6StsUseMulticast = 5
} DHCP6_STS_CODE;
//
// Enumeration of Duid type recorded by IANA, refers to section-24.5 of rfc-3315.
//
typedef enum {
Dhcp6DuidTypeLlt = 1,
Dhcp6DuidTypeEn = 2,
Dhcp6DuidTypeLl = 3,
Dhcp6DuidTypeUuid = 4
} DHCP6_DUID_TYPE;
//
// Control block for each IA.
//

View File

@ -18,13 +18,13 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
// This is a map from the interested DHCP4 option tags' index to the tag value.
//
UINT8 mInterestedDhcp4Tags[HTTP_BOOT_DHCP4_TAG_INDEX_MAX] = {
HTTP_BOOT_DHCP4_TAG_BOOTFILE_LEN,
HTTP_BOOT_DHCP4_TAG_OVERLOAD,
HTTP_BOOT_DHCP4_TAG_MSG_TYPE,
HTTP_BOOT_DHCP4_TAG_SERVER_ID,
HTTP_BOOT_DHCP4_TAG_CLASS_ID,
HTTP_BOOT_DHCP4_TAG_BOOTFILE,
HTTP_BOOT_DHCP4_TAG_DNS_SERVER
DHCP4_TAG_BOOTFILE_LEN,
DHCP4_TAG_OVERLOAD,
DHCP4_TAG_MSG_TYPE,
DHCP4_TAG_SERVER_ID,
DHCP4_TAG_VENDOR_CLASS_ID,
DHCP4_TAG_BOOTFILE,
DHCP4_TAG_DNS_SERVER
};
//
@ -59,42 +59,42 @@ HttpBootBuildDhcp4Options (
//
// Append parameter request list option.
//
OptList[Index]->OpCode = HTTP_BOOT_DHCP4_TAG_PARA_LIST;
OptList[Index]->OpCode = DHCP4_TAG_PARA_LIST;
OptList[Index]->Length = 27;
OptEnt.Para = (HTTP_BOOT_DHCP4_OPTION_PARA *) OptList[Index]->Data;
OptEnt.Para->ParaList[0] = HTTP_BOOT_DHCP4_TAG_NETMASK;
OptEnt.Para->ParaList[1] = HTTP_BOOT_DHCP4_TAG_TIME_OFFSET;
OptEnt.Para->ParaList[2] = HTTP_BOOT_DHCP4_TAG_ROUTER;
OptEnt.Para->ParaList[3] = HTTP_BOOT_DHCP4_TAG_TIME_SERVER;
OptEnt.Para->ParaList[4] = HTTP_BOOT_DHCP4_TAG_NAME_SERVER;
OptEnt.Para->ParaList[5] = HTTP_BOOT_DHCP4_TAG_DNS_SERVER;
OptEnt.Para->ParaList[6] = HTTP_BOOT_DHCP4_TAG_HOSTNAME;
OptEnt.Para->ParaList[7] = HTTP_BOOT_DHCP4_TAG_BOOTFILE_LEN;
OptEnt.Para->ParaList[8] = HTTP_BOOT_DHCP4_TAG_DOMAINNAME;
OptEnt.Para->ParaList[9] = HTTP_BOOT_DHCP4_TAG_ROOTPATH;
OptEnt.Para->ParaList[10] = HTTP_BOOT_DHCP4_TAG_EXTEND_PATH;
OptEnt.Para->ParaList[11] = HTTP_BOOT_DHCP4_TAG_EMTU;
OptEnt.Para->ParaList[12] = HTTP_BOOT_DHCP4_TAG_TTL;
OptEnt.Para->ParaList[13] = HTTP_BOOT_DHCP4_TAG_BROADCAST;
OptEnt.Para->ParaList[14] = HTTP_BOOT_DHCP4_TAG_NIS_DOMAIN;
OptEnt.Para->ParaList[15] = HTTP_BOOT_DHCP4_TAG_NIS_SERVER;
OptEnt.Para->ParaList[16] = HTTP_BOOT_DHCP4_TAG_NTP_SERVER;
OptEnt.Para->ParaList[17] = HTTP_BOOT_DHCP4_TAG_VENDOR;
OptEnt.Para->ParaList[18] = HTTP_BOOT_DHCP4_TAG_REQUEST_IP;
OptEnt.Para->ParaList[19] = HTTP_BOOT_DHCP4_TAG_LEASE;
OptEnt.Para->ParaList[20] = HTTP_BOOT_DHCP4_TAG_SERVER_ID;
OptEnt.Para->ParaList[21] = HTTP_BOOT_DHCP4_TAG_T1;
OptEnt.Para->ParaList[22] = HTTP_BOOT_DHCP4_TAG_T2;
OptEnt.Para->ParaList[23] = HTTP_BOOT_DHCP4_TAG_CLASS_ID;
OptEnt.Para->ParaList[25] = HTTP_BOOT_DHCP4_TAG_BOOTFILE;
OptEnt.Para->ParaList[26] = HTTP_BOOT_DHCP4_TAG_UUID;
OptEnt.Para->ParaList[0] = DHCP4_TAG_NETMASK;
OptEnt.Para->ParaList[1] = DHCP4_TAG_TIME_OFFSET;
OptEnt.Para->ParaList[2] = DHCP4_TAG_ROUTER;
OptEnt.Para->ParaList[3] = DHCP4_TAG_TIME_SERVER;
OptEnt.Para->ParaList[4] = DHCP4_TAG_NAME_SERVER;
OptEnt.Para->ParaList[5] = DHCP4_TAG_DNS_SERVER;
OptEnt.Para->ParaList[6] = DHCP4_TAG_HOSTNAME;
OptEnt.Para->ParaList[7] = DHCP4_TAG_BOOTFILE_LEN;
OptEnt.Para->ParaList[8] = DHCP4_TAG_DOMAINNAME;
OptEnt.Para->ParaList[9] = DHCP4_TAG_ROOTPATH;
OptEnt.Para->ParaList[10] = DHCP4_TAG_EXTEND_PATH;
OptEnt.Para->ParaList[11] = DHCP4_TAG_EMTU;
OptEnt.Para->ParaList[12] = DHCP4_TAG_TTL;
OptEnt.Para->ParaList[13] = DHCP4_TAG_BROADCAST;
OptEnt.Para->ParaList[14] = DHCP4_TAG_NIS_DOMAIN;
OptEnt.Para->ParaList[15] = DHCP4_TAG_NIS_SERVER;
OptEnt.Para->ParaList[16] = DHCP4_TAG_NTP_SERVER;
OptEnt.Para->ParaList[17] = DHCP4_TAG_VENDOR;
OptEnt.Para->ParaList[18] = DHCP4_TAG_REQUEST_IP;
OptEnt.Para->ParaList[19] = DHCP4_TAG_LEASE;
OptEnt.Para->ParaList[20] = DHCP4_TAG_SERVER_ID;
OptEnt.Para->ParaList[21] = DHCP4_TAG_T1;
OptEnt.Para->ParaList[22] = DHCP4_TAG_T2;
OptEnt.Para->ParaList[23] = DHCP4_TAG_VENDOR_CLASS_ID;
OptEnt.Para->ParaList[25] = DHCP4_TAG_BOOTFILE;
OptEnt.Para->ParaList[26] = DHCP4_TAG_UUID;
Index++;
OptList[Index] = GET_NEXT_DHCP_OPTION (OptList[Index - 1]);
//
// Append UUID/Guid-based client identifier option
//
OptList[Index]->OpCode = HTTP_BOOT_DHCP4_TAG_UUID;
OptList[Index]->OpCode = DHCP4_TAG_UUID;
OptList[Index]->Length = (UINT8) sizeof (HTTP_BOOT_DHCP4_OPTION_UUID);
OptEnt.Uuid = (HTTP_BOOT_DHCP4_OPTION_UUID *) OptList[Index]->Data;
OptEnt.Uuid->Type = 0;
@ -110,7 +110,7 @@ HttpBootBuildDhcp4Options (
//
// Append client network device interface option
//
OptList[Index]->OpCode = HTTP_BOOT_DHCP4_TAG_UNDI;
OptList[Index]->OpCode = DHCP4_TAG_UNDI;
OptList[Index]->Length = (UINT8) sizeof (HTTP_BOOT_DHCP4_OPTION_UNDI);
OptEnt.Undi = (HTTP_BOOT_DHCP4_OPTION_UNDI *) OptList[Index]->Data;
@ -130,7 +130,7 @@ HttpBootBuildDhcp4Options (
//
// Append client system architecture option
//
OptList[Index]->OpCode = HTTP_BOOT_DHCP4_TAG_ARCH;
OptList[Index]->OpCode = DHCP4_TAG_ARCH;
OptList[Index]->Length = (UINT8) sizeof (HTTP_BOOT_DHCP4_OPTION_ARCH);
OptEnt.Arch = (HTTP_BOOT_DHCP4_OPTION_ARCH *) OptList[Index]->Data;
Value = HTONS (EFI_HTTP_BOOT_CLIENT_SYSTEM_ARCHITECTURE);
@ -141,7 +141,7 @@ HttpBootBuildDhcp4Options (
//
// Append vendor class identify option
//
OptList[Index]->OpCode = HTTP_BOOT_DHCP4_TAG_CLASS_ID;
OptList[Index]->OpCode = DHCP4_TAG_VENDOR_CLASS_ID;
OptList[Index]->Length = (UINT8) sizeof (HTTP_BOOT_DHCP4_OPTION_CLID);
OptEnt.Clid = (HTTP_BOOT_DHCP4_OPTION_CLID *) OptList[Index]->Data;
CopyMem (
@ -190,7 +190,7 @@ HttpBootParseDhcp4Options (
Option = (EFI_DHCP4_PACKET_OPTION *) Buffer;
Offset = 0;
while (Offset < Length && Option->OpCode != HTTP_BOOT_DHCP4_TAG_EOP) {
while (Offset < Length && Option->OpCode != DHCP4_TAG_EOP) {
if (Option->OpCode == OptTag) {
//
@ -202,7 +202,7 @@ HttpBootParseDhcp4Options (
//
// Skip the current option to the next.
//
if (Option->OpCode == HTTP_BOOT_DHCP4_TAG_PAD) {
if (Option->OpCode == DHCP4_TAG_PAD) {
Offset++;
} else {
Offset += Option->Length + 2;
@ -607,7 +607,7 @@ HttpBootDhcp4CallBack (
MaxMsgSize = HttpBootParseDhcp4Options (
Packet->Dhcp4.Option,
GET_OPTION_BUFFER_LEN (Packet),
HTTP_BOOT_DHCP4_TAG_MAXMSG
DHCP4_TAG_MAXMSG
);
if (MaxMsgSize != NULL) {
Value = HTONS (HTTP_BOOT_DHCP4_PACKET_MAX_SIZE);

View File

@ -24,47 +24,6 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
#define HTTP_BOOT_DHCP4_MSG_TYPE_REQUEST 3
#define HTTP_BOOT_DHCP4_MAGIC 0x63538263 // network byte order
//
// Dhcp Options
//
#define HTTP_BOOT_DHCP4_TAG_PAD 0 // Pad Option
#define HTTP_BOOT_DHCP4_TAG_EOP 255 // End Option
#define HTTP_BOOT_DHCP4_TAG_NETMASK 1 // Subnet Mask
#define HTTP_BOOT_DHCP4_TAG_TIME_OFFSET 2 // Time Offset from UTC
#define HTTP_BOOT_DHCP4_TAG_ROUTER 3 // Router option,
#define HTTP_BOOT_DHCP4_TAG_TIME_SERVER 4 // Time Server
#define HTTP_BOOT_DHCP4_TAG_NAME_SERVER 5 // Name Server
#define HTTP_BOOT_DHCP4_TAG_DNS_SERVER 6 // Domain Name Server
#define HTTP_BOOT_DHCP4_TAG_HOSTNAME 12 // Host Name
#define HTTP_BOOT_DHCP4_TAG_BOOTFILE_LEN 13 // Boot File Size
#define HTTP_BOOT_DHCP4_TAG_DUMP 14 // Merit Dump File
#define HTTP_BOOT_DHCP4_TAG_DOMAINNAME 15 // Domain Name
#define HTTP_BOOT_DHCP4_TAG_ROOTPATH 17 // Root path
#define HTTP_BOOT_DHCP4_TAG_EXTEND_PATH 18 // Extensions Path
#define HTTP_BOOT_DHCP4_TAG_EMTU 22 // Maximum Datagram Reassembly Size
#define HTTP_BOOT_DHCP4_TAG_TTL 23 // Default IP Time-to-live
#define HTTP_BOOT_DHCP4_TAG_BROADCAST 28 // Broadcast Address
#define HTTP_BOOT_DHCP4_TAG_NIS_DOMAIN 40 // Network Information Service Domain
#define HTTP_BOOT_DHCP4_TAG_NIS_SERVER 41 // Network Information Servers
#define HTTP_BOOT_DHCP4_TAG_NTP_SERVER 42 // Network Time Protocol Servers
#define HTTP_BOOT_DHCP4_TAG_VENDOR 43 // Vendor Specific Information
#define HTTP_BOOT_DHCP4_TAG_REQUEST_IP 50 // Requested IP Address
#define HTTP_BOOT_DHCP4_TAG_LEASE 51 // IP Address Lease Time
#define HTTP_BOOT_DHCP4_TAG_OVERLOAD 52 // Option Overload
#define HTTP_BOOT_DHCP4_TAG_MSG_TYPE 53 // DHCP Message Type
#define HTTP_BOOT_DHCP4_TAG_SERVER_ID 54 // Server Identifier
#define HTTP_BOOT_DHCP4_TAG_PARA_LIST 55 // Parameter Request List
#define HTTP_BOOT_DHCP4_TAG_MAXMSG 57 // Maximum DHCP Message Size
#define HTTP_BOOT_DHCP4_TAG_T1 58 // Renewal (T1) Time Value
#define HTTP_BOOT_DHCP4_TAG_T2 59 // Rebinding (T2) Time Value
#define HTTP_BOOT_DHCP4_TAG_CLASS_ID 60 // Vendor class identifier
#define HTTP_BOOT_DHCP4_TAG_CLIENT_ID 61 // Client-identifier
#define HTTP_BOOT_DHCP4_TAG_TFTP 66 // TFTP server name
#define HTTP_BOOT_DHCP4_TAG_BOOTFILE 67 // Bootfile name
#define HTTP_BOOT_DHCP4_TAG_ARCH 93
#define HTTP_BOOT_DHCP4_TAG_UNDI 94
#define HTTP_BOOT_DHCP4_TAG_UUID 97
#define HTTP_BOOT_DHCP4_OVERLOAD_FILE 1
#define HTTP_BOOT_DHCP4_OVERLOAD_SERVER_NAME 2
@ -75,15 +34,15 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
/// http://www.ietf.org/assignments/dhcpv6-parameters/dhcpv6-parameters.xml
///
#if defined (MDE_CPU_IA32)
#define EFI_HTTP_BOOT_CLIENT_SYSTEM_ARCHITECTURE 0x000F
#define EFI_HTTP_BOOT_CLIENT_SYSTEM_ARCHITECTURE HTTP_CLIENT_ARCH_IA32
#elif defined (MDE_CPU_X64)
#define EFI_HTTP_BOOT_CLIENT_SYSTEM_ARCHITECTURE 0x0010
#define EFI_HTTP_BOOT_CLIENT_SYSTEM_ARCHITECTURE HTTP_CLIENT_ARCH_X64
#elif defined (MDE_CPU_ARM)
#define EFI_HTTP_BOOT_CLIENT_SYSTEM_ARCHITECTURE 0x0012
#define EFI_HTTP_BOOT_CLIENT_SYSTEM_ARCHITECTURE HTTP_CLIENT_ARCH_ARM
#elif defined (MDE_CPU_AARCH64)
#define EFI_HTTP_BOOT_CLIENT_SYSTEM_ARCHITECTURE 0x0013
#define EFI_HTTP_BOOT_CLIENT_SYSTEM_ARCHITECTURE HTTP_CLIENT_ARCH_AARCH64
#elif defined (MDE_CPU_EBC)
#define EFI_HTTP_BOOT_CLIENT_SYSTEM_ARCHITECTURE 0x0011
#define EFI_HTTP_BOOT_CLIENT_SYSTEM_ARCHITECTURE HTTP_CLIENT_ARCH_EBC
#endif
/// DHCP offer types among HTTP boot.

View File

@ -1,7 +1,7 @@
/** @file
Functions implementation related with DHCPv6 for HTTP boot driver.
Copyright (c) 2016, Intel Corporation. All rights reserved.<BR>
Copyright (c) 2015 - 2016, Intel Corporation. All rights reserved.<BR>
This program and the accompanying materials are licensed and made available under
the terms and conditions of the BSD License that accompanies this distribution.
The full text of the license may be found at
@ -41,20 +41,20 @@ HttpBootBuildDhcp6Options (
//
// Append client option request option
//
OptList[Index]->OpCode = HTONS (HTTP_BOOT_DHCP6_OPT_ORO);
OptList[Index]->OpCode = HTONS (DHCP6_OPT_ORO);
OptList[Index]->OpLen = HTONS (8);
OptEnt.Oro = (HTTP_BOOT_DHCP6_OPTION_ORO *) OptList[Index]->Data;
OptEnt.Oro->OpCode[0] = HTONS(HTTP_BOOT_DHCP6_OPT_BOOT_FILE_URL);
OptEnt.Oro->OpCode[1] = HTONS(HTTP_BOOT_DHCP6_OPT_BOOT_FILE_PARAM);
OptEnt.Oro->OpCode[2] = HTONS(HTTP_BOOT_DHCP6_OPT_DNS_SERVERS);
OptEnt.Oro->OpCode[3] = HTONS(HTTP_BOOT_DHCP6_OPT_VENDOR_CLASS);
OptEnt.Oro->OpCode[0] = HTONS(DHCP6_OPT_BOOT_FILE_URL);
OptEnt.Oro->OpCode[1] = HTONS(DHCP6_OPT_BOOT_FILE_PARAM);
OptEnt.Oro->OpCode[2] = HTONS(DHCP6_OPT_DNS_SERVERS);
OptEnt.Oro->OpCode[3] = HTONS(DHCP6_OPT_VENDOR_CLASS);
Index++;
OptList[Index] = GET_NEXT_DHCP6_OPTION (OptList[Index - 1]);
//
// Append client network device interface option
//
OptList[Index]->OpCode = HTONS (HTTP_BOOT_DHCP6_OPT_UNDI);
OptList[Index]->OpCode = HTONS (DHCP6_OPT_UNDI);
OptList[Index]->OpLen = HTONS ((UINT16)3);
OptEnt.Undi = (HTTP_BOOT_DHCP6_OPTION_UNDI *) OptList[Index]->Data;
@ -74,7 +74,7 @@ HttpBootBuildDhcp6Options (
//
// Append client system architecture option
//
OptList[Index]->OpCode = HTONS (HTTP_BOOT_DHCP6_OPT_ARCH);
OptList[Index]->OpCode = HTONS (DHCP6_OPT_ARCH);
OptList[Index]->OpLen = HTONS ((UINT16) sizeof (HTTP_BOOT_DHCP6_OPTION_ARCH));
OptEnt.Arch = (HTTP_BOOT_DHCP6_OPTION_ARCH *) OptList[Index]->Data;
Value = HTONS (EFI_HTTP_BOOT_CLIENT_SYSTEM_ARCHITECTURE);
@ -85,7 +85,7 @@ HttpBootBuildDhcp6Options (
//
// Append vendor class identify option.
//
OptList[Index]->OpCode = HTONS (HTTP_BOOT_DHCP6_OPT_VENDOR_CLASS);
OptList[Index]->OpCode = HTONS (DHCP6_OPT_VENDOR_CLASS);
OptList[Index]->OpLen = HTONS ((UINT16) sizeof (HTTP_BOOT_DHCP6_OPTION_VENDOR_CLASS));
OptEnt.VendorClass = (HTTP_BOOT_DHCP6_OPTION_VENDOR_CLASS *) OptList[Index]->Data;
OptEnt.VendorClass->Vendor = HTONL (HTTP_BOOT_DHCP6_ENTERPRISE_NUM);
@ -211,18 +211,18 @@ HttpBootParseDhcp6Packet (
//
while (Offset < Length) {
if (NTOHS (Option->OpCode) == HTTP_BOOT_DHCP6_OPT_IA_NA) {
if (NTOHS (Option->OpCode) == DHCP6_OPT_IA_NA) {
Options[HTTP_BOOT_DHCP6_IDX_IA_NA] = Option;
} else if (NTOHS (Option->OpCode) == HTTP_BOOT_DHCP6_OPT_BOOT_FILE_URL) {
} else if (NTOHS (Option->OpCode) == DHCP6_OPT_BOOT_FILE_URL) {
//
// The server sends this option to inform the client about an URL to a boot file.
//
Options[HTTP_BOOT_DHCP6_IDX_BOOT_FILE_URL] = Option;
} else if (NTOHS (Option->OpCode) == HTTP_BOOT_DHCP6_OPT_BOOT_FILE_PARAM) {
} else if (NTOHS (Option->OpCode) == DHCP6_OPT_BOOT_FILE_PARAM) {
Options[HTTP_BOOT_DHCP6_IDX_BOOT_FILE_PARAM] = Option;
} else if (NTOHS (Option->OpCode) == HTTP_BOOT_DHCP6_OPT_VENDOR_CLASS) {
} else if (NTOHS (Option->OpCode) == DHCP6_OPT_VENDOR_CLASS) {
Options[HTTP_BOOT_DHCP6_IDX_VENDOR_CLASS] = Option;
} else if (NTOHS (Option->OpCode) == HTTP_BOOT_DHCP6_OPT_DNS_SERVERS) {
} else if (NTOHS (Option->OpCode) == DHCP6_OPT_DNS_SERVERS) {
Options[HTTP_BOOT_DHCP6_IDX_DNS_SERVER] = Option;
}
@ -238,7 +238,7 @@ HttpBootParseDhcp6Packet (
Option = HttpBootParseDhcp6Options (
Option->Data + 12,
NTOHS (Option->OpLen),
HTTP_BOOT_DHCP6_OPT_STATUS_CODE
DHCP6_OPT_STATUS_CODE
);
if ((Option != NULL && Option->Data[0] == 0) || (Option == NULL)) {
IsProxyOffer = FALSE;

View File

@ -1,7 +1,7 @@
/** @file
Functions declaration related with DHCPv6 for HTTP boot driver.
Copyright (c) 2015, Intel Corporation. All rights reserved.<BR>
Copyright (c) 2015 - 2016, Intel Corporation. All rights reserved.<BR>
This program and the accompanying materials are licensed and made available under
the terms and conditions of the BSD License that accompanies this distribution.
The full text of the license may be found at
@ -24,31 +24,6 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
#define HTTP_BOOT_DEFAULT_HOPLIMIT 64
#define HTTP_BOOT_DEFAULT_LIFETIME 50000
#define HTTP_BOOT_DHCP6_OPT_CLIENT_ID 1
#define HTTP_BOOT_DHCP6_OPT_SERVER_ID 2
#define HTTP_BOOT_DHCP6_OPT_IA_NA 3
#define HTTP_BOOT_DHCP6_OPT_IA_TA 4
#define HTTP_BOOT_DHCP6_OPT_IAADDR 5
#define HTTP_BOOT_DHCP6_OPT_ORO 6
#define HTTP_BOOT_DHCP6_OPT_PREFERENCE 7
#define HTTP_BOOT_DHCP6_OPT_ELAPSED_TIME 8
#define HTTP_BOOT_DHCP6_OPT_REPLAY_MSG 9
#define HTTP_BOOT_DHCP6_OPT_AUTH 11
#define HTTP_BOOT_DHCP6_OPT_UNICAST 12
#define HTTP_BOOT_DHCP6_OPT_STATUS_CODE 13
#define HTTP_BOOT_DHCP6_OPT_RAPID_COMMIT 14
#define HTTP_BOOT_DHCP6_OPT_USER_CLASS 15
#define HTTP_BOOT_DHCP6_OPT_VENDOR_CLASS 16
#define HTTP_BOOT_DHCP6_OPT_VENDOR_OPTS 17
#define HTTP_BOOT_DHCP6_OPT_INTERFACE_ID 18
#define HTTP_BOOT_DHCP6_OPT_RECONFIG_MSG 19
#define HTTP_BOOT_DHCP6_OPT_RECONFIG_ACCEPT 20
#define HTTP_BOOT_DHCP6_OPT_DNS_SERVERS 23
#define HTTP_BOOT_DHCP6_OPT_BOOT_FILE_URL 59 // Assigned by IANA, RFC 5970
#define HTTP_BOOT_DHCP6_OPT_BOOT_FILE_PARAM 60 // Assigned by IANA, RFC 5970
#define HTTP_BOOT_DHCP6_OPT_ARCH 61 // Assigned by IANA, RFC 5970
#define HTTP_BOOT_DHCP6_OPT_UNDI 62 // Assigned by IANA, RFC 5970
#define HTTP_BOOT_DHCP6_ENTERPRISE_NUM 343 // TODO: IANA TBD: temporarily using Intel's
#define HTTP_BOOT_DHCP6_MAX_BOOT_FILE_SIZE 65535 // It's a limitation of bit length, 65535*512 bytes.

View File

@ -19,6 +19,7 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
#include <Uefi.h>
#include <IndustryStandard/Http11.h>
#include <IndustryStandard/Dhcp.h>
//
// Libraries

View File

@ -1,7 +1,7 @@
/** @file
iSCSI DHCP4 related configuration routines.
Copyright (c) 2004 - 2011, Intel Corporation. All rights reserved.<BR>
Copyright (c) 2004 - 2016, Intel Corporation. All rights reserved.<BR>
This program and the accompanying materials
are licensed and made available under the terms and conditions of the BSD License
which accompanies this distribution. The full text of the license may be found at
@ -240,7 +240,7 @@ IScsiDhcpSelectOffer (
}
for (Index = 0; Index < OptionCount; Index++) {
if (OptionList[Index]->OpCode != DHCP4_TAG_ROOT_PATH) {
if (OptionList[Index]->OpCode != DHCP4_TAG_ROOTPATH) {
continue;
}
@ -326,7 +326,7 @@ IScsiParseDhcpAck (
//
// Get DNS server addresses and DHCP server address from this offer.
//
if (OptionList[Index]->OpCode == DHCP4_TAG_DNS) {
if (OptionList[Index]->OpCode == DHCP4_TAG_DNS_SERVER) {
if (((OptionList[Index]->Length & 0x3) != 0) || (OptionList[Index]->Length == 0)) {
Status = EFI_INVALID_PARAMETER;
@ -440,8 +440,8 @@ IScsiDoDhcp (
ParaList->Length = (UINT8) (NvData->TargetInfoFromDhcp ? 4 : 3);
ParaList->Data[0] = DHCP4_TAG_NETMASK;
ParaList->Data[1] = DHCP4_TAG_ROUTER;
ParaList->Data[2] = DHCP4_TAG_DNS;
ParaList->Data[3] = DHCP4_TAG_ROOT_PATH;
ParaList->Data[2] = DHCP4_TAG_DNS_SERVER;
ParaList->Data[3] = DHCP4_TAG_ROOTPATH;
ZeroMem (&Dhcp4ConfigData, sizeof (EFI_DHCP4_CONFIG_DATA));
Dhcp4ConfigData.OptionCount = 1;

View File

@ -1,7 +1,7 @@
/** @file
The head file of iSCSI DHCP4 related configuration routines.
Copyright (c) 2004 - 2010, Intel Corporation. All rights reserved.<BR>
Copyright (c) 2004 - 2016, Intel Corporation. All rights reserved.<BR>
This program and the accompanying materials
are licensed and made available under the terms and conditions of the BSD License
which accompanies this distribution. The full text of the license may be found at
@ -15,13 +15,6 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
#ifndef _ISCSI_DHCP_H_
#define _ISCSI_DHCP_H_
#define DHCP4_TAG_PARA_LIST 55
#define DHCP4_TAG_NETMASK 1
#define DHCP4_TAG_ROUTER 3
#define DHCP4_TAG_DNS 6
#define DHCP4_TAG_SERVER_ID 54
#define DHCP4_TAG_ROOT_PATH 17
#define ISCSI_ROOT_PATH_ID "iscsi:"
#define ISCSI_ROOT_PATH_FIELD_DELIMITER ':'

View File

@ -1,7 +1,7 @@
/** @file
iSCSI DHCP6 related configuration routines.
Copyright (c) 2009 - 2015, Intel Corporation. All rights reserved.<BR>
Copyright (c) 2009 - 2016, Intel Corporation. All rights reserved.<BR>
This program and the accompanying materials
are licensed and made available under the terms and conditions of the BSD License
which accompanies this distribution. The full text of the license may be found at
@ -303,7 +303,7 @@ IScsiDhcp6ParseReply (
// The server sends this option to inform the client about an URL to a boot file.
//
BootFileOpt = OptionList[Index];
} else if (OptionList[Index]->OpCode == DHCP6_OPT_BOOT_FILE_PARA) {
} else if (OptionList[Index]->OpCode == DHCP6_OPT_BOOT_FILE_PARAM) {
//
// The server sends this option to inform the client about DHCP6 server address.
//
@ -434,11 +434,11 @@ IScsiDoDhcp6 (
// Ask the server to reply with DNS and Boot File URL options by info request.
// All members in EFI_DHCP6_PACKET_OPTION are in network order.
//
Oro->OpCode = HTONS (DHCP6_OPT_REQUEST_OPTION);
Oro->OpCode = HTONS (DHCP6_OPT_ORO);
Oro->OpLen = HTONS (2 * 3);
Oro->Data[1] = DHCP6_OPT_DNS_SERVERS;
Oro->Data[3] = DHCP6_OPT_BOOT_FILE_URL;
Oro->Data[5] = DHCP6_OPT_BOOT_FILE_PARA;
Oro->Data[5] = DHCP6_OPT_BOOT_FILE_PARAM;
InfoReqReXmit.Irt = 4;
InfoReqReXmit.Mrc = 1;

View File

@ -1,7 +1,7 @@
/** @file
The header file of iSCSI DHCP6 related configuration routines.
Copyright (c) 2004 - 2012, Intel Corporation. All rights reserved.<BR>
Copyright (c) 2004 - 2016, Intel Corporation. All rights reserved.<BR>
This program and the accompanying materials
are licensed and made available under the terms and conditions of the BSD License
which accompanies this distribution. The full text of the license may be found at
@ -15,15 +15,6 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
#ifndef _ISCSI_DHCP6_H_
#define _ISCSI_DHCP6_H_
#define DHCP6_OPT_REQUEST_OPTION 6
#define DHCP6_OPT_VENDOR_INFO 17
#define DHCP6_OPT_DNS_SERVERS 23
///
/// Assigned by IANA, RFC 5970
///
#define DHCP6_OPT_BOOT_FILE_URL 59
#define DHCP6_OPT_BOOT_FILE_PARA 60
#define ISCSI_ROOT_PATH_ID "iscsi:"
#define ISCSI_ROOT_PATH_FIELD_DELIMITER ':'
#define ISCSI_ROOT_PATH_ADDR_START_DELIMITER '['

View File

@ -1,7 +1,7 @@
/** @file
The shared head file for iSCSI driver.
Copyright (c) 2004 - 2015, Intel Corporation. All rights reserved.<BR>
Copyright (c) 2004 - 2016, Intel Corporation. All rights reserved.<BR>
This program and the accompanying materials
are licensed and made available under the terms and conditions of the BSD License
which accompanies this distribution. The full text of the license may be found at
@ -17,6 +17,8 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
#include <Uefi.h>
#include <IndustryStandard/Dhcp.h>
#include <Protocol/ComponentName.h>
#include <Protocol/ComponentName2.h>
#include <Protocol/DriverBinding.h>

View File

@ -219,9 +219,9 @@ Ip6ConfigStartStatefulAutoConfig (
// with DNS SERVERS.
//
Oro = (EFI_DHCP6_PACKET_OPTION *) OptBuf;
Oro->OpCode = HTONS (IP6_CONFIG_DHCP6_OPTION_ORO);
Oro->OpCode = HTONS (DHCP6_OPT_ORO);
Oro->OpLen = HTONS (2);
*((UINT16 *) &Oro->Data[0]) = HTONS (IP6_CONFIG_DHCP6_OPTION_DNS_SERVERS);
*((UINT16 *) &Oro->Data[0]) = HTONS (DHCP6_OPT_DNS_SERVERS);
OptList[0] = Oro;
Status = EFI_SUCCESS;
@ -1508,7 +1508,7 @@ Ip6ConfigParseDhcpReply (
CopyMem (&OpCode, &OptList[Index]->OpCode, sizeof (OpCode));
OpCode = NTOHS (OpCode);
if (OpCode == IP6_CONFIG_DHCP6_OPTION_DNS_SERVERS) {
if (OpCode == DHCP6_OPT_DNS_SERVERS) {
CopyMem (&Length, &OptList[Index]->OpLen, sizeof (Length));
Length = NTOHS (Length);

View File

@ -21,8 +21,6 @@
#define IP6_CONFIG_VARIABLE_ATTRIBUTE (EFI_VARIABLE_NON_VOLATILE | EFI_VARIABLE_BOOTSERVICE_ACCESS)
#define IP6_CONFIG_DEFAULT_DAD_XMITS 1
#define IP6_CONFIG_DHCP6_OPTION_ORO 6
#define IP6_CONFIG_DHCP6_OPTION_DNS_SERVERS 23
#define DATA_ATTRIB_SIZE_FIXED 0x1
#define DATA_ATTRIB_VOLATILE 0x2

View File

@ -1,7 +1,7 @@
/** @file
Implementation of EFI_IP6_PROTOCOL protocol interfaces and type definitions.
Copyright (c) 2009 - 2012, Intel Corporation. All rights reserved.<BR>
Copyright (c) 2009 - 2016, Intel Corporation. All rights reserved.<BR>
(C) Copyright 2015 Hewlett-Packard Development Company, L.P.<BR>
This program and the accompanying materials
@ -19,6 +19,8 @@
#include <Uefi.h>
#include <IndustryStandard/Dhcp.h>
#include <Protocol/ServiceBinding.h>
#include <Protocol/ManagedNetwork.h>
#include <Protocol/IpSec.h>

View File

@ -853,9 +853,9 @@ Ip6OnDADFinished (
// with DNS SERVERS.
//
Oro = (EFI_DHCP6_PACKET_OPTION *) OptBuf;
Oro->OpCode = HTONS (IP6_CONFIG_DHCP6_OPTION_ORO);
Oro->OpCode = HTONS (DHCP6_OPT_ORO);
Oro->OpLen = HTONS (2);
*((UINT16 *) &Oro->Data[0]) = HTONS (IP6_CONFIG_DHCP6_OPTION_DNS_SERVERS);
*((UINT16 *) &Oro->Data[0]) = HTONS (DHCP6_OPT_DNS_SERVERS);
InfoReqReXmit.Irt = 4;
InfoReqReXmit.Mrc = 64;

View File

@ -19,13 +19,13 @@
// This is a map from the interested DHCP4 option tags' index to the tag value.
//
UINT8 mInterestedDhcp4Tags[PXEBC_DHCP4_TAG_INDEX_MAX] = {
PXEBC_DHCP4_TAG_BOOTFILE_LEN,
PXEBC_DHCP4_TAG_VENDOR,
PXEBC_DHCP4_TAG_OVERLOAD,
PXEBC_DHCP4_TAG_MSG_TYPE,
PXEBC_DHCP4_TAG_SERVER_ID,
PXEBC_DHCP4_TAG_CLASS_ID,
PXEBC_DHCP4_TAG_BOOTFILE
DHCP4_TAG_BOOTFILE_LEN,
DHCP4_TAG_VENDOR,
DHCP4_TAG_OVERLOAD,
DHCP4_TAG_MSG_TYPE,
DHCP4_TAG_SERVER_ID,
DHCP4_TAG_VENDOR_CLASS_ID,
DHCP4_TAG_BOOTFILE
};
//
@ -58,7 +58,7 @@ PxeBcParseDhcp4Options (
Option = (EFI_DHCP4_PACKET_OPTION *) Buffer;
Offset = 0;
while (Offset < Length && Option->OpCode != PXEBC_DHCP4_TAG_EOP) {
while (Offset < Length && Option->OpCode != DHCP4_TAG_EOP) {
if (Option->OpCode == OptTag) {
//
@ -70,7 +70,7 @@ PxeBcParseDhcp4Options (
//
// Skip the current option to the next.
//
if (Option->OpCode == PXEBC_DHCP4_TAG_PAD) {
if (Option->OpCode == DHCP4_TAG_PAD) {
Offset++;
} else {
Offset += Option->Length + 2;
@ -108,7 +108,7 @@ PxeBcParseVendorOptions (
ASSERT (PxeOption != NULL);
while ((Offset < VendorOptionLen) && (PxeOption->OpCode != PXEBC_DHCP4_TAG_EOP)) {
while ((Offset < VendorOptionLen) && (PxeOption->OpCode != DHCP4_TAG_EOP)) {
//
// Parse all the interesting PXE vendor options one by one.
//
@ -201,7 +201,7 @@ PxeBcParseVendorOptions (
//
// Continue to the next option.
//
if (PxeOption->OpCode == PXEBC_DHCP4_TAG_PAD) {
if (PxeOption->OpCode == DHCP4_TAG_PAD) {
Offset++;
} else {
Offset = (UINT8) (Offset + PxeOption->Length + 2);
@ -243,7 +243,7 @@ PxeBcBuildDhcp4Options (
//
// Append message type.
//
OptList[Index]->OpCode = PXEBC_DHCP4_TAG_MSG_TYPE;
OptList[Index]->OpCode = DHCP4_TAG_MSG_TYPE;
OptList[Index]->Length = 1;
OptEnt.Mesg = (PXEBC_DHCP4_OPTION_MESG *) OptList[Index]->Data;
OptEnt.Mesg->Type = PXEBC_DHCP4_MSG_TYPE_REQUEST;
@ -253,7 +253,7 @@ PxeBcBuildDhcp4Options (
//
// Append max message size.
//
OptList[Index]->OpCode = PXEBC_DHCP4_TAG_MAXMSG;
OptList[Index]->OpCode = DHCP4_TAG_MAXMSG;
OptList[Index]->Length = (UINT8) sizeof (PXEBC_DHCP4_OPTION_MAX_MESG_SIZE);
OptEnt.MaxMesgSize = (PXEBC_DHCP4_OPTION_MAX_MESG_SIZE *) OptList[Index]->Data;
Value = NTOHS (PXEBC_DHCP4_PACKET_MAX_SIZE - 8);
@ -265,36 +265,36 @@ PxeBcBuildDhcp4Options (
//
// Append parameter request list option.
//
OptList[Index]->OpCode = PXEBC_DHCP4_TAG_PARA_LIST;
OptList[Index]->OpCode = DHCP4_TAG_PARA_LIST;
OptList[Index]->Length = 35;
OptEnt.Para = (PXEBC_DHCP4_OPTION_PARA *) OptList[Index]->Data;
OptEnt.Para->ParaList[0] = PXEBC_DHCP4_TAG_NETMASK;
OptEnt.Para->ParaList[1] = PXEBC_DHCP4_TAG_TIME_OFFSET;
OptEnt.Para->ParaList[2] = PXEBC_DHCP4_TAG_ROUTER;
OptEnt.Para->ParaList[3] = PXEBC_DHCP4_TAG_TIME_SERVER;
OptEnt.Para->ParaList[4] = PXEBC_DHCP4_TAG_NAME_SERVER;
OptEnt.Para->ParaList[5] = PXEBC_DHCP4_TAG_DNS_SERVER;
OptEnt.Para->ParaList[6] = PXEBC_DHCP4_TAG_HOSTNAME;
OptEnt.Para->ParaList[7] = PXEBC_DHCP4_TAG_BOOTFILE_LEN;
OptEnt.Para->ParaList[8] = PXEBC_DHCP4_TAG_DOMAINNAME;
OptEnt.Para->ParaList[9] = PXEBC_DHCP4_TAG_ROOTPATH;
OptEnt.Para->ParaList[10] = PXEBC_DHCP4_TAG_EXTEND_PATH;
OptEnt.Para->ParaList[11] = PXEBC_DHCP4_TAG_EMTU;
OptEnt.Para->ParaList[12] = PXEBC_DHCP4_TAG_TTL;
OptEnt.Para->ParaList[13] = PXEBC_DHCP4_TAG_BROADCAST;
OptEnt.Para->ParaList[14] = PXEBC_DHCP4_TAG_NIS_DOMAIN;
OptEnt.Para->ParaList[15] = PXEBC_DHCP4_TAG_NIS_SERVER;
OptEnt.Para->ParaList[16] = PXEBC_DHCP4_TAG_NTP_SERVER;
OptEnt.Para->ParaList[17] = PXEBC_DHCP4_TAG_VENDOR;
OptEnt.Para->ParaList[18] = PXEBC_DHCP4_TAG_REQUEST_IP;
OptEnt.Para->ParaList[19] = PXEBC_DHCP4_TAG_LEASE;
OptEnt.Para->ParaList[20] = PXEBC_DHCP4_TAG_SERVER_ID;
OptEnt.Para->ParaList[21] = PXEBC_DHCP4_TAG_T1;
OptEnt.Para->ParaList[22] = PXEBC_DHCP4_TAG_T2;
OptEnt.Para->ParaList[23] = PXEBC_DHCP4_TAG_CLASS_ID;
OptEnt.Para->ParaList[24] = PXEBC_DHCP4_TAG_TFTP;
OptEnt.Para->ParaList[25] = PXEBC_DHCP4_TAG_BOOTFILE;
OptEnt.Para->ParaList[26] = PXEBC_PXE_DHCP4_TAG_UUID;
OptEnt.Para->ParaList[0] = DHCP4_TAG_NETMASK;
OptEnt.Para->ParaList[1] = DHCP4_TAG_TIME_OFFSET;
OptEnt.Para->ParaList[2] = DHCP4_TAG_ROUTER;
OptEnt.Para->ParaList[3] = DHCP4_TAG_TIME_SERVER;
OptEnt.Para->ParaList[4] = DHCP4_TAG_NAME_SERVER;
OptEnt.Para->ParaList[5] = DHCP4_TAG_DNS_SERVER;
OptEnt.Para->ParaList[6] = DHCP4_TAG_HOSTNAME;
OptEnt.Para->ParaList[7] = DHCP4_TAG_BOOTFILE_LEN;
OptEnt.Para->ParaList[8] = DHCP4_TAG_DOMAINNAME;
OptEnt.Para->ParaList[9] = DHCP4_TAG_ROOTPATH;
OptEnt.Para->ParaList[10] = DHCP4_TAG_EXTEND_PATH;
OptEnt.Para->ParaList[11] = DHCP4_TAG_EMTU;
OptEnt.Para->ParaList[12] = DHCP4_TAG_TTL;
OptEnt.Para->ParaList[13] = DHCP4_TAG_BROADCAST;
OptEnt.Para->ParaList[14] = DHCP4_TAG_NIS_DOMAIN;
OptEnt.Para->ParaList[15] = DHCP4_TAG_NIS_SERVER;
OptEnt.Para->ParaList[16] = DHCP4_TAG_NTP_SERVER;
OptEnt.Para->ParaList[17] = DHCP4_TAG_VENDOR;
OptEnt.Para->ParaList[18] = DHCP4_TAG_REQUEST_IP;
OptEnt.Para->ParaList[19] = DHCP4_TAG_LEASE;
OptEnt.Para->ParaList[20] = DHCP4_TAG_SERVER_ID;
OptEnt.Para->ParaList[21] = DHCP4_TAG_T1;
OptEnt.Para->ParaList[22] = DHCP4_TAG_T2;
OptEnt.Para->ParaList[23] = DHCP4_TAG_VENDOR_CLASS_ID;
OptEnt.Para->ParaList[24] = DHCP4_TAG_TFTP;
OptEnt.Para->ParaList[25] = DHCP4_TAG_BOOTFILE;
OptEnt.Para->ParaList[26] = DHCP4_TAG_UUID;
OptEnt.Para->ParaList[27] = 0x80;
OptEnt.Para->ParaList[28] = 0x81;
OptEnt.Para->ParaList[29] = 0x82;
@ -309,7 +309,7 @@ PxeBcBuildDhcp4Options (
//
// Append UUID/Guid-based client identifier option
//
OptList[Index]->OpCode = PXEBC_PXE_DHCP4_TAG_UUID;
OptList[Index]->OpCode = DHCP4_TAG_UUID;
OptList[Index]->Length = (UINT8) sizeof (PXEBC_DHCP4_OPTION_UUID);
OptEnt.Uuid = (PXEBC_DHCP4_OPTION_UUID *) OptList[Index]->Data;
OptEnt.Uuid->Type = 0;
@ -326,7 +326,7 @@ PxeBcBuildDhcp4Options (
//
// Append client network device interface option
//
OptList[Index]->OpCode = PXEBC_PXE_DHCP4_TAG_UNDI;
OptList[Index]->OpCode = DHCP4_TAG_UNDI;
OptList[Index]->Length = (UINT8) sizeof (PXEBC_DHCP4_OPTION_UNDI);
OptEnt.Undi = (PXEBC_DHCP4_OPTION_UNDI *) OptList[Index]->Data;
@ -346,7 +346,7 @@ PxeBcBuildDhcp4Options (
//
// Append client system architecture option
//
OptList[Index]->OpCode = PXEBC_PXE_DHCP4_TAG_ARCH;
OptList[Index]->OpCode = DHCP4_TAG_ARCH;
OptList[Index]->Length = (UINT8) sizeof (PXEBC_DHCP4_OPTION_ARCH);
OptEnt.Arch = (PXEBC_DHCP4_OPTION_ARCH *) OptList[Index]->Data;
Value = HTONS (EFI_PXE_CLIENT_SYSTEM_ARCHITECTURE);
@ -357,7 +357,7 @@ PxeBcBuildDhcp4Options (
//
// Append vendor class identify option
//
OptList[Index]->OpCode = PXEBC_DHCP4_TAG_CLASS_ID;
OptList[Index]->OpCode = DHCP4_TAG_VENDOR_CLASS_ID;
OptList[Index]->Length = (UINT8) sizeof (PXEBC_DHCP4_OPTION_CLID);
OptEnt.Clid = (PXEBC_DHCP4_OPTION_CLID *) OptList[Index]->Data;
CopyMem (
@ -414,7 +414,7 @@ PxeBcSeedDhcp4Packet (
CopyMem (Header->ClientHwAddr, &Mode.CurrentAddress, Header->HwAddrLen);
Seed->Dhcp4.Magik = PXEBC_DHCP4_MAGIC;
Seed->Dhcp4.Option[0] = PXEBC_DHCP4_TAG_EOP;
Seed->Dhcp4.Option[0] = DHCP4_TAG_EOP;
}
@ -1180,7 +1180,7 @@ PxeBcDhcp4CallBack (
MaxMsgSize = PxeBcParseDhcp4Options (
Packet->Dhcp4.Option,
GET_OPTION_BUFFER_LEN (Packet),
PXEBC_DHCP4_TAG_MAXMSG
DHCP4_TAG_MAXMSG
);
if (MaxMsgSize != NULL) {
Value = HTONS (PXEBC_DHCP4_PACKET_MAX_SIZE - 8);
@ -1356,14 +1356,14 @@ PxeBcDhcp4Discover (
return EFI_OUT_OF_RESOURCES;
}
OptList[OptCount]->OpCode = PXEBC_DHCP4_TAG_VENDOR;
OptList[OptCount]->OpCode = DHCP4_TAG_VENDOR;
OptList[OptCount]->Length = (UINT8) (VendorOptLen - 2);
PxeOpt = (EFI_DHCP4_PACKET_OPTION *) OptList[OptCount]->Data;
PxeOpt->OpCode = PXEBC_VENDOR_TAG_BOOT_ITEM;
PxeOpt->Length = (UINT8) sizeof (PXEBC_OPTION_BOOT_ITEM);
PxeBootItem = (PXEBC_OPTION_BOOT_ITEM *) PxeOpt->Data;
PxeBootItem->Type = HTONS (Type);
PxeOpt->Data[PxeOpt->Length] = PXEBC_DHCP4_TAG_EOP;
PxeOpt->Data[PxeOpt->Length] = DHCP4_TAG_EOP;
if (Layer != NULL) {
PxeBootItem->Layer = HTONS (*Layer);

View File

@ -1,7 +1,7 @@
/** @file
Functions declaration related with DHCPv4 for UefiPxeBc Driver.
Copyright (c) 2009 - 2015, Intel Corporation. All rights reserved.<BR>
Copyright (c) 2009 - 2016, Intel Corporation. All rights reserved.<BR>
This program and the accompanying materials
are licensed and made available under the terms and conditions of the BSD License
@ -28,46 +28,6 @@
#define PXEBC_DHCP4_MSG_TYPE_REQUEST 3
#define PXEBC_DHCP4_MAGIC 0x63538263 // network byte order
//
// Dhcp Options
//
#define PXEBC_DHCP4_TAG_PAD 0 // Pad Option
#define PXEBC_DHCP4_TAG_EOP 255 // End Option
#define PXEBC_DHCP4_TAG_NETMASK 1 // Subnet Mask
#define PXEBC_DHCP4_TAG_TIME_OFFSET 2 // Time Offset from UTC
#define PXEBC_DHCP4_TAG_ROUTER 3 // Router option,
#define PXEBC_DHCP4_TAG_TIME_SERVER 4 // Time Server
#define PXEBC_DHCP4_TAG_NAME_SERVER 5 // Name Server
#define PXEBC_DHCP4_TAG_DNS_SERVER 6 // Domain Name Server
#define PXEBC_DHCP4_TAG_HOSTNAME 12 // Host Name
#define PXEBC_DHCP4_TAG_BOOTFILE_LEN 13 // Boot File Size
#define PXEBC_DHCP4_TAG_DUMP 14 // Merit Dump File
#define PXEBC_DHCP4_TAG_DOMAINNAME 15 // Domain Name
#define PXEBC_DHCP4_TAG_ROOTPATH 17 // Root path
#define PXEBC_DHCP4_TAG_EXTEND_PATH 18 // Extensions Path
#define PXEBC_DHCP4_TAG_EMTU 22 // Maximum Datagram Reassembly Size
#define PXEBC_DHCP4_TAG_TTL 23 // Default IP Time-to-live
#define PXEBC_DHCP4_TAG_BROADCAST 28 // Broadcast Address
#define PXEBC_DHCP4_TAG_NIS_DOMAIN 40 // Network Information Service Domain
#define PXEBC_DHCP4_TAG_NIS_SERVER 41 // Network Information Servers
#define PXEBC_DHCP4_TAG_NTP_SERVER 42 // Network Time Protocol Servers
#define PXEBC_DHCP4_TAG_VENDOR 43 // Vendor Specific Information
#define PXEBC_DHCP4_TAG_REQUEST_IP 50 // Requested IP Address
#define PXEBC_DHCP4_TAG_LEASE 51 // IP Address Lease Time
#define PXEBC_DHCP4_TAG_OVERLOAD 52 // Option Overload
#define PXEBC_DHCP4_TAG_MSG_TYPE 53 // DHCP Message Type
#define PXEBC_DHCP4_TAG_SERVER_ID 54 // Server Identifier
#define PXEBC_DHCP4_TAG_PARA_LIST 55 // Parameter Request List
#define PXEBC_DHCP4_TAG_MAXMSG 57 // Maximum DHCP Message Size
#define PXEBC_DHCP4_TAG_T1 58 // Renewal (T1) Time Value
#define PXEBC_DHCP4_TAG_T2 59 // Rebinding (T2) Time Value
#define PXEBC_DHCP4_TAG_CLASS_ID 60 // Vendor class identifier
#define PXEBC_DHCP4_TAG_CLIENT_ID 61 // Client-identifier
#define PXEBC_DHCP4_TAG_TFTP 66 // TFTP server name
#define PXEBC_DHCP4_TAG_BOOTFILE 67 // Bootfile name
#define PXEBC_PXE_DHCP4_TAG_ARCH 93
#define PXEBC_PXE_DHCP4_TAG_UNDI 94
#define PXEBC_PXE_DHCP4_TAG_UUID 97
//
// Sub-Options in Dhcp Vendor Option
//

View File

@ -92,18 +92,18 @@ PxeBcBuildDhcp6Options (
//
// Append client option request option
//
OptList[Index]->OpCode = HTONS (PXEBC_DHCP6_OPT_ORO);
OptList[Index]->OpCode = HTONS (DHCP6_OPT_ORO);
OptList[Index]->OpLen = HTONS (4);
OptEnt.Oro = (PXEBC_DHCP6_OPTION_ORO *) OptList[Index]->Data;
OptEnt.Oro->OpCode[0] = HTONS(PXEBC_DHCP6_OPT_BOOT_FILE_URL);
OptEnt.Oro->OpCode[1] = HTONS(PXEBC_DHCP6_OPT_BOOT_FILE_PARAM);
OptEnt.Oro->OpCode[0] = HTONS(DHCP6_OPT_BOOT_FILE_URL);
OptEnt.Oro->OpCode[1] = HTONS(DHCP6_OPT_BOOT_FILE_PARAM);
Index++;
OptList[Index] = GET_NEXT_DHCP6_OPTION (OptList[Index - 1]);
//
// Append client network device interface option
//
OptList[Index]->OpCode = HTONS (PXEBC_DHCP6_OPT_UNDI);
OptList[Index]->OpCode = HTONS (DHCP6_OPT_UNDI);
OptList[Index]->OpLen = HTONS ((UINT16)3);
OptEnt.Undi = (PXEBC_DHCP6_OPTION_UNDI *) OptList[Index]->Data;
@ -123,7 +123,7 @@ PxeBcBuildDhcp6Options (
//
// Append client system architecture option
//
OptList[Index]->OpCode = HTONS (PXEBC_DHCP6_OPT_ARCH);
OptList[Index]->OpCode = HTONS (DHCP6_OPT_ARCH);
OptList[Index]->OpLen = HTONS ((UINT16) sizeof (PXEBC_DHCP6_OPTION_ARCH));
OptEnt.Arch = (PXEBC_DHCP6_OPTION_ARCH *) OptList[Index]->Data;
Value = HTONS (EFI_PXE_CLIENT_SYSTEM_ARCHITECTURE);
@ -134,7 +134,7 @@ PxeBcBuildDhcp6Options (
//
// Append vendor class option to store the PXE class identifier.
//
OptList[Index]->OpCode = HTONS (PXEBC_DHCP6_OPT_VENDOR_CLASS);
OptList[Index]->OpCode = HTONS (DHCP6_OPT_VENDOR_CLASS);
OptList[Index]->OpLen = HTONS ((UINT16) sizeof (PXEBC_DHCP6_OPTION_VENDOR_CLASS));
OptEnt.VendorClass = (PXEBC_DHCP6_OPTION_VENDOR_CLASS *) OptList[Index]->Data;
OptEnt.VendorClass->Vendor = HTONL (PXEBC_DHCP6_ENTERPRISE_NUM);
@ -471,16 +471,16 @@ PxeBcParseDhcp6Packet (
//
while (Offset < Length) {
if (NTOHS (Option->OpCode) == PXEBC_DHCP6_OPT_IA_NA) {
if (NTOHS (Option->OpCode) == DHCP6_OPT_IA_NA) {
Options[PXEBC_DHCP6_IDX_IA_NA] = Option;
} else if (NTOHS (Option->OpCode) == PXEBC_DHCP6_OPT_BOOT_FILE_URL) {
} else if (NTOHS (Option->OpCode) == DHCP6_OPT_BOOT_FILE_URL) {
//
// The server sends this option to inform the client about an URL to a boot file.
//
Options[PXEBC_DHCP6_IDX_BOOT_FILE_URL] = Option;
} else if (NTOHS (Option->OpCode) == PXEBC_DHCP6_OPT_BOOT_FILE_PARAM) {
} else if (NTOHS (Option->OpCode) == DHCP6_OPT_BOOT_FILE_PARAM) {
Options[PXEBC_DHCP6_IDX_BOOT_FILE_PARAM] = Option;
} else if (NTOHS (Option->OpCode) == PXEBC_DHCP6_OPT_VENDOR_CLASS) {
} else if (NTOHS (Option->OpCode) == DHCP6_OPT_VENDOR_CLASS) {
Options[PXEBC_DHCP6_IDX_VENDOR_CLASS] = Option;
}
@ -497,7 +497,7 @@ PxeBcParseDhcp6Packet (
Option = PxeBcParseDhcp6Options (
Option->Data + 12,
NTOHS (Option->OpLen),
PXEBC_DHCP6_OPT_STATUS_CODE
DHCP6_OPT_STATUS_CODE
);
if ((Option != NULL && Option->Data[0] == 0) || (Option == NULL)) {
IsProxyOffer = FALSE;
@ -713,7 +713,7 @@ PxeBcRequestBootService (
Option = PxeBcDhcp6SeekOption (
ProxyOffer->Dhcp6.Option,
ProxyOffer->Length - 4,
PXEBC_DHCP6_OPT_SERVER_ID
DHCP6_OPT_SERVER_ID
);
if (Option == NULL) {
return EFI_NOT_FOUND;
@ -732,7 +732,7 @@ PxeBcRequestBootService (
OpLen = NTOHS (((EFI_DHCP6_PACKET_OPTION *) RequestOpt)->OpLen);
if (OpCode != EFI_DHCP6_IA_TYPE_NA &&
OpCode != EFI_DHCP6_IA_TYPE_TA &&
OpCode != PXEBC_DHCP6_OPT_SERVER_ID
OpCode != DHCP6_OPT_SERVER_ID
) {
//
// Copy all the options except IA option and Server ID
@ -751,7 +751,7 @@ PxeBcRequestBootService (
Option = PxeBcDhcp6SeekOption (
Discover->DhcpOptions,
(UINT32)(RequestLen - 4),
PXEBC_DHCP6_OPT_ELAPSED_TIME
DHCP6_OPT_ELAPSED_TIME
);
if (Option != NULL) {
CalcElapsedTime (Private);

View File

@ -1,7 +1,7 @@
/** @file
Functions declaration related with DHCPv6 for UefiPxeBc Driver.
Copyright (c) 2009 - 2014, Intel Corporation. All rights reserved.<BR>
Copyright (c) 2009 - 2016, Intel Corporation. All rights reserved.<BR>
This program and the accompanying materials
are licensed and made available under the terms and conditions of the BSD License
@ -25,29 +25,6 @@
#define PXEBC_DHCP6_S_PORT 547
#define PXEBC_DHCP6_C_PORT 546
#define PXEBC_DHCP6_OPT_CLIENT_ID 1
#define PXEBC_DHCP6_OPT_SERVER_ID 2
#define PXEBC_DHCP6_OPT_IA_NA 3
#define PXEBC_DHCP6_OPT_IA_TA 4
#define PXEBC_DHCP6_OPT_IAADDR 5
#define PXEBC_DHCP6_OPT_ORO 6
#define PXEBC_DHCP6_OPT_PREFERENCE 7
#define PXEBC_DHCP6_OPT_ELAPSED_TIME 8
#define PXEBC_DHCP6_OPT_REPLAY_MSG 9
#define PXEBC_DHCP6_OPT_AUTH 11
#define PXEBC_DHCP6_OPT_UNICAST 12
#define PXEBC_DHCP6_OPT_STATUS_CODE 13
#define PXEBC_DHCP6_OPT_RAPID_COMMIT 14
#define PXEBC_DHCP6_OPT_USER_CLASS 15
#define PXEBC_DHCP6_OPT_VENDOR_CLASS 16
#define PXEBC_DHCP6_OPT_VENDOR_OPTS 17
#define PXEBC_DHCP6_OPT_INTERFACE_ID 18
#define PXEBC_DHCP6_OPT_RECONFIG_MSG 19
#define PXEBC_DHCP6_OPT_RECONFIG_ACCEPT 20
#define PXEBC_DHCP6_OPT_BOOT_FILE_URL 59 // Assigned by IANA, RFC 5970
#define PXEBC_DHCP6_OPT_BOOT_FILE_PARAM 60 // Assigned by IANA, RFC 5970
#define PXEBC_DHCP6_OPT_ARCH 61 // Assigned by IANA, RFC 5970
#define PXEBC_DHCP6_OPT_UNDI 62 // Assigned by IANA, RFC 5970
#define PXEBC_DHCP6_ENTERPRISE_NUM 343 // TODO: IANA TBD: temporarily using Intel's
#define PXEBC_DHCP6_MAX_BOOT_FILE_SIZE 65535 // It's a limitation of bit length, 65535*512 bytes.

View File

@ -2,7 +2,7 @@
This EFI_PXE_BASE_CODE_PROTOCOL and EFI_LOAD_FILE_PROTOCOL.
interfaces declaration.
Copyright (c) 2007 - 2015, Intel Corporation. All rights reserved.<BR>
Copyright (c) 2007 - 2016, Intel Corporation. All rights reserved.<BR>
This program and the accompanying materials
are licensed and made available under the terms and conditions of the BSD License
@ -21,6 +21,7 @@
#include <Guid/SmBios.h>
#include <IndustryStandard/SmBios.h>
#include <IndustryStandard/Dhcp.h>
#include <Protocol/NetworkInterfaceIdentifier.h>
#include <Protocol/Arp.h>
#include <Protocol/Ip4.h>