Sriram, I vote for adding them to the IndustryStandard header, but I think we'd better to also keep the existing macros in PxeBaseCode.h. So we won't need to update all the C files to include the new header file.
Best Regards Siyuan > -----Original Message----- > From: edk2-devel [mailto:edk2-devel-boun...@lists.01.org] On Behalf Of > Subramanian, Sriram (EG Servers Platform SW) > Sent: Friday, June 17, 2016 3:29 PM > To: Zhang, Lubo <lubo.zh...@intel.com>; edk2-devel@lists.01.org > Cc: Ye, Ting <ting...@intel.com>; Fu, Siyuan <siyuan...@intel.com>; Wu, > Jiaxin <jiaxin...@intel.com>; Gao, Liming <liming....@intel.com> > Subject: Re: [edk2] [patch 3/3] MdePkg: Refine codes related to Dhcpv4 and > Dhcpv6 configuration. > > OK, in that case how about move those macros from > MdePkg/Include/Protocol/PxeBaseCode.h to this > MdePkg/Include/IndustryStandard/? Because these are defined in RFCs and > assignments controlled by IANA, so more wider scope and not specific to the > UEFI protocols. > > What do you think Ting/Siyuan? > > Thanks, > Sriram. > > -----Original Message----- > From: Zhang, Lubo [mailto:lubo.zh...@intel.com] > Sent: Friday, June 17, 2016 12:43 PM > To: Subramanian, Sriram (EG Servers Platform SW) <srira...@hpe.com>; > edk2-devel@lists.01.org > Cc: Ye, Ting <ting...@intel.com>; Fu, Siyuan <siyuan...@intel.com>; Wu, > Jiaxin <jiaxin...@intel.com>; Gao, Liming <liming....@intel.com> > Subject: RE: [edk2] [patch 3/3] MdePkg: Refine codes related to Dhcpv4 and > Dhcpv6 configuration. > > Hi Sriram > > I intend to add more arch for PXE boot ones according to your comments, > but I find in Pxe driver, the macro EFI_PXE_CLIENT_SYSTEM_ARCHITECTURE is > already defined in PxeBaseCode.h under mdepkg\include\protocol, so I think > it is on need to redefine these arch, how do you think. > > > thanks > lubo > > -----Original Message----- > From: edk2-devel [mailto:edk2-devel-boun...@lists.01.org] On Behalf Of > Subramanian, Sriram (EG Servers Platform SW) > Sent: Friday, June 17, 2016 11:57 AM > To: Zhang, Lubo <lubo.zh...@intel.com>; edk2-devel@lists.01.org > Cc: Ye, Ting <ting...@intel.com>; Fu, Siyuan <siyuan...@intel.com>; Wu, > Jiaxin <jiaxin...@intel.com>; Gao, Liming <liming....@intel.com> > Subject: Re: [edk2] [patch 3/3] MdePkg: Refine codes related to Dhcpv4 and > Dhcpv6 configuration. > > Hi Lubo, > > For these: > +/// Processor Architecture Types > +/// These identifiers are defined by IETF: > +/// > +http://www.ietf.org/assignments/dhcpv6-parameters/dhcpv6- > parameters.xml > +/// > +#define DHCP6_ARCH_IA32 0x000F /// x86 uefi boot from http > +#define DHCP6_ARCH_X64 0x0010 /// x64 uefi boot from http > +#define DHCP6_ARCH_ARM 0x0012 /// Arm uefi 32 boot from http > +#define DHCP6_ARCH_AARCH64 0x0013 /// Arm uefi 64 boot from http > +#define DHCP6_ARCH_EBC 0x0011 /// EBC boot from http > + > > These are not DHCP6 specific. These are client arch types used for both > DHCP4 and 6, and as such must not have the DHCP6_ prefix. > > Also, I think we must define the other arch types: especially for the PXE boot > ones (0x0000, 0x0002, 0x0006, 0x0007, 0x0009, etc.) > > Thanks, > Sriram. > > -----Original Message----- > From: edk2-devel [mailto:edk2-devel-boun...@lists.01.org] On Behalf Of > Zhang Lubo > Sent: Friday, June 17, 2016 8:39 AM > To: edk2-devel@lists.01.org > Cc: Ye Ting <ting...@intel.com>; Fu Siyuan <siyuan...@intel.com>; Wu Jiaxin > <jiaxin...@intel.com>; Liming Gao <liming....@intel.com> > Subject: [edk2] [patch 3/3] MdePkg: Refine codes related to Dhcpv4 and > Dhcpv6 configuration. > > Add a new head file Dhcp.h in Mde/Include/IndustryStandard, normalize the > universal option numbers and other network number tags. > > Cc: Liming Gao <liming....@intel.com> > Cc: Ye Ting <ting...@intel.com> > Cc: Fu Siyuan <siyuan...@intel.com> > Cc: Wu Jiaxin <jiaxin...@intel.com> > Contributed-under: TianoCore Contribution Agreement 1.0 > Signed-off-by: Zhang Lubo <lubo.zh...@intel.com> > --- > MdePkg/Include/IndustryStandard/Dhcp.h | 273 > +++++++++++++++++++++++++++++++++ > 1 file changed, 273 insertions(+) > create mode 100644 MdePkg/Include/IndustryStandard/Dhcp.h > > diff --git a/MdePkg/Include/IndustryStandard/Dhcp.h > b/MdePkg/Include/IndustryStandard/Dhcp.h > new file mode 100644 > index 0000000..a0d3c9f > --- /dev/null > +++ b/MdePkg/Include/IndustryStandard/Dhcp.h > @@ -0,0 +1,273 @@ > +/** @file > + This file contains the DHCPv4 and DHCPv6 option definitions and other > configuration. > + They are used to carry additional information and parameters in DHCP > messages. > + > + Copyright (c) 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 http://opensource.org/licenses/bsd-license.php > + > + THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" > BASIS, > + WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER > EXPRESS OR IMPLIED. > +**/ > + > +#ifndef _DHCP_H_ > +#define _DHCP_H_ > + > +/// > +/// Dynamic Host Configuration Protocol for IPv4 (DHCPv4) /// /// > +Dhcpv4 Options, definitions from RFC 2132 /// > +#define DHCP4_TAG_PAD 0 /// Pad Option > +#define DHCP4_TAG_EOP 255 /// End Option > +#define DHCP4_TAG_NETMASK 1 /// Subnet Mask > +#define DHCP4_TAG_TIME_OFFSET 2 /// Time Offset from UTC > +#define DHCP4_TAG_ROUTER 3 /// Router option, > +#define DHCP4_TAG_TIME_SERVER 4 /// Time Server > +#define DHCP4_TAG_NAME_SERVER 5 /// Name Server > +#define DHCP4_TAG_DNS_SERVER 6 /// Domain Name Server > +#define DHCP4_TAG_LOG_SERVER 7 /// Log Server > +#define DHCP4_TAG_COOKIE_SERVER 8 /// Cookie Server > +#define DHCP4_TAG_LPR_SERVER 9 /// LPR Print Server > +#define DHCP4_TAG_IMPRESS_SERVER 10 /// Impress Server > +#define DHCP4_TAG_RL_SERVER 11 /// Resource Location Server > +#define DHCP4_TAG_HOSTNAME 12 /// Host Name > +#define DHCP4_TAG_BOOTFILE_LEN 13 /// Boot File Size > +#define DHCP4_TAG_DUMP 14 /// Merit Dump File > +#define DHCP4_TAG_DOMAINNAME 15 /// Domain Name > +#define DHCP4_TAG_SWAP_SERVER 16 /// Swap Server > +#define DHCP4_TAG_ROOTPATH 17 /// Root path > +#define DHCP4_TAG_EXTEND_PATH 18 /// Extensions Path > +#define DHCP4_TAG_IPFORWARD 19 /// IP Forwarding Enable/Disable > +#define DHCP4_TAG_NONLOCAL_SRR 20 /// on-Local Source Routing > Enable/Disable > +#define DHCP4_TAG_POLICY_SRR 21 /// Policy Filter > +#define DHCP4_TAG_EMTU 22 /// Maximum Datagram Reassembly > Size > +#define DHCP4_TAG_TTL 23 /// Default IP Time-to-live > +#define DHCP4_TAG_PATHMTU_AGE 24 /// Path MTU Aging Timeout > +#define DHCP4_TAG_PATHMTU_PLATEAU 25 /// Path MTU Plateau Table > +#define DHCP4_TAG_IFMTU 26 /// Interface MTU > +#define DHCP4_TAG_SUBNET_LOCAL 27 /// All Subnets are Local > +#define DHCP4_TAG_BROADCAST 28 /// Broadcast Address > +#define DHCP4_TAG_DISCOVER_MASK 29 /// Perform Mask Discovery > +#define DHCP4_TAG_SUPPLY_MASK 30 /// Mask Supplier > +#define DHCP4_TAG_DISCOVER_ROUTE 31 /// Perform Router Discovery > +#define DHCP4_TAG_ROUTER_SOLICIT 32 /// Router Solicitation Address > +#define DHCP4_TAG_STATIC_ROUTE 33 /// Static Route > +#define DHCP4_TAG_TRAILER 34 /// Trailer Encapsulation > +#define DHCP4_TAG_ARPAGE 35 /// ARP Cache Timeout > +#define DHCP4_TAG_ETHER_ENCAP 36 /// Ethernet Encapsulation > +#define DHCP4_TAG_TCP_TTL 37 /// TCP Default TTL > +#define DHCP4_TAG_KEEP_INTERVAL 38 /// TCP Keepalive Interval > +#define DHCP4_TAG_KEEP_GARBAGE 39 /// TCP Keepalive Garbage > +#define DHCP4_TAG_NIS_DOMAIN 40 /// Network Information Service > Domain > +#define DHCP4_TAG_NIS_SERVER 41 /// Network Information Servers > +#define DHCP4_TAG_NTP_SERVER 42 /// Network Time Protocol > Servers > +#define DHCP4_TAG_VENDOR 43 /// Vendor Specific Information > +#define DHCP4_TAG_NBNS 44 /// NetBIOS over TCP/IP Name Server > +#define DHCP4_TAG_NBDD 45 /// NetBIOS Datagram Distribution > Server > +#define DHCP4_TAG_NBTYPE 46 /// NetBIOS over TCP/IP Node Type > +#define DHCP4_TAG_NBSCOPE 47 /// NetBIOS over TCP/IP Scope > +#define DHCP4_TAG_XFONT 48 /// X Window System Font Server > +#define DHCP4_TAG_XDM 49 /// X Window System Display > Manager > +#define DHCP4_TAG_REQUEST_IP 50 /// Requested IP Address > +#define DHCP4_TAG_LEASE 51 /// IP Address Lease Time > +#define DHCP4_TAG_OVERLOAD 52 /// Option Overload > +#define DHCP4_TAG_MSG_TYPE 53 /// DHCP Message Type > +#define DHCP4_TAG_SERVER_ID 54 /// Server Identifier > +#define DHCP4_TAG_PARA_LIST 55 /// Parameter Request List > +#define DHCP4_TAG_MESSAGE 56 /// Message > +#define DHCP4_TAG_MAXMSG 57 /// Maximum DHCP Message Size > +#define DHCP4_TAG_T1 58 /// Renewal (T1) Time Value > +#define DHCP4_TAG_T2 59 /// Rebinding (T2) Time Value > +#define DHCP4_TAG_CLASS_ID 60 /// Vendor class identifier > +#define DHCP4_TAG_CLIENT_ID 61 /// Client-identifier > +#define DHCP4_TAG_NISPLUS 64 /// Network Information Service+ > Domain > +#define DHCP4_TAG_NISPLUS_SERVER 65 /// Network Information > Service+ Servers > +#define DHCP4_TAG_TFTP 66 /// TFTP server name > +#define DHCP4_TAG_BOOTFILE 67 /// Bootfile name > +#define DHCP4_TAG_MOBILEIP 68 /// Mobile IP Home Agent > +#define DHCP4_TAG_SMTP 69 /// Simple Mail Transport Protocol > Server > +#define DHCP4_TAG_POP3 70 /// Post Office Protocol (POP3) > Server > +#define DHCP4_TAG_NNTP 71 /// Network News Transport Protocol > Server > +#define DHCP4_TAG_WWW 72 /// Default World Wide Web (WWW) > Server > +#define DHCP4_TAG_FINGER 73 /// Default Finger Server > +#define DHCP4_TAG_IRC 74 /// Default Internet Relay Chat > (IRC) > Server > +#define DHCP4_TAG_STTALK 75 /// StreetTalk Server > +#define DHCP4_TAG_STDA 76 /// StreetTalk Directory Assistance > Server > +#define DHCP4_TAG_ARCH 93 /// Client System Architecture > Type, > RFC 4578 > +#define DHCP4_TAG_UNDI 94 /// Client Network Interface > Identifier, > RFC 4578 > +#define DHCP4_TAG_UUID 97 /// Client Machine Identifier, RFC > 4578 > +#define DHCP4_TAG_CLASSLESS_ROUTE 121 /// Classless Route > + > + > +/// > +/// Dynamic Host Configuration Protocol for IPv6 (DHCPv6) /// /// > +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; > + > +/// Transmission and Retransmission Parameters /// This section > +presents a table of values used to describe the message /// > +transmission behavior of clients and servers. > +/// > +/// 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 > + > +//// > +//// DHCPv6 Options, definitions from RFC 3315,RFC 5970 and RFC 3646. > +//// > +#define DHCP6_OPT_CLIENT_ID 1 /// Client Identifier Option > +#define DHCP6_OPT_SERVER_ID 2 /// Server Identifier Option > +#define DHCP6_OPT_IA_NA 3 /// The Identity Association for > Non- > temporary Addresses option > +#define DHCP6_OPT_IA_TA 4 /// The Identity Association for the > Temporary Addresses > +#define DHCP6_OPT_IAADDR 5 /// IA Address option > +#define DHCP6_OPT_ORO 6 /// Request option > +#define DHCP6_OPT_PREFERENCE 7 /// Preference option > +#define DHCP6_OPT_ELAPSED_TIME 8 /// Elapsed Time Option > +#define DHCP6_OPT_REPLAY_MSG 9 /// Relay Message option > +#define DHCP6_OPT_AUTH 11 /// Authentication option > +#define DHCP6_OPT_UNICAST 12 /// Server Unicast Option > +#define DHCP6_OPT_STATUS_CODE 13 /// Status Code Option > +#define DHCP6_OPT_RAPID_COMMIT 14 /// Rapid Commit option > +#define DHCP6_OPT_USER_CLASS 15 /// User Class option > +#define DHCP6_OPT_VENDOR_CLASS 16 /// Vendor Class Option > +#define DHCP6_OPT_VENDOR_OPTS 17 /// Vendor-specific Information > Option > +#define DHCP6_OPT_INTERFACE_ID 18 /// Interface-Id Option > +#define DHCP6_OPT_RECONFIG_MSG 19 /// Reconfigure Message > Option > +#define DHCP6_OPT_RECONFIG_ACCEPT 20 /// Reconfigure Accept Option > +#define DHCP6_OPT_DNS_SERVERS 23 /// DNS Configuration options, > RFC 3646 > +#define DHCP6_OPT_BOOT_FILE_URL 59 /// Assigned by IANA, RFC 5970 > +#define DHCP6_OPT_BOOT_FILE_PARAM 60 /// Assigned by IANA, RFC > 5970 > +#define DHCP6_OPT_ARCH 61 /// Assigned by IANA, RFC 5970 > +#define DHCP6_OPT_UNDI 62 /// Assigned by IANA, RFC 5970 > + > +/// > +/// Processor Architecture Types > +/// These identifiers are defined by IETF: > +/// > +http://www.ietf.org/assignments/dhcpv6-parameters/dhcpv6- > parameters.xml > +/// > +#define DHCP6_ARCH_IA32 0x000F /// x86 uefi boot from http > +#define DHCP6_ARCH_X64 0x0010 /// x64 uefi boot from http > +#define DHCP6_ARCH_ARM 0x0012 /// Arm uefi 32 boot from http > +#define DHCP6_ARCH_AARCH64 0x0013 /// Arm uefi 64 boot from http > +#define DHCP6_ARCH_EBC 0x0011 /// EBC boot from http > + > +#endif > -- > 1.9.5.msysgit.1 > > _______________________________________________ > edk2-devel mailing list > edk2-devel@lists.01.org > https://lists.01.org/mailman/listinfo/edk2-devel > _______________________________________________ > edk2-devel mailing list > edk2-devel@lists.01.org > https://lists.01.org/mailman/listinfo/edk2-devel > _______________________________________________ > edk2-devel mailing list > edk2-devel@lists.01.org > https://lists.01.org/mailman/listinfo/edk2-devel _______________________________________________ edk2-devel mailing list edk2-devel@lists.01.org https://lists.01.org/mailman/listinfo/edk2-devel