mirror of https://github.com/acidanthera/audk.git
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:
parent
ac6c3d90ed
commit
142c00c3d6
|
@ -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.
|
||||
//
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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.
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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.
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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 ':'
|
||||
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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 '['
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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);
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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
|
||||
//
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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.
|
||||
|
||||
|
|
|
@ -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>
|
||||
|
|
Loading…
Reference in New Issue