#ifndef __EFI_PXEBC_DHCP_H__\r
#define __EFI_PXEBC_DHCP_H__\r
\r
-typedef enum {\r
- PXEBC_DHCP4_MAX_OPTION_NUM = 16,\r
- PXEBC_DHCP4_MAX_OPTION_SIZE = 312,\r
- PXEBC_DHCP4_MAX_PACKET_SIZE = 1472,\r
-\r
- PXEBC_DHCP4_S_PORT = 67,\r
- PXEBC_DHCP4_C_PORT = 68,\r
- PXEBC_BS_DOWNLOAD_PORT = 69,\r
- PXEBC_BS_DISCOVER_PORT = 4011,\r
-\r
- PXEBC_DHCP4_OPCODE_REQUEST = 1,\r
- PXEBC_DHCP4_OPCODE_REPLY = 2,\r
- PXEBC_DHCP4_MSG_TYPE_REQUEST = 3,\r
- PXEBC_DHCP4_MAGIC = 0x63538263, // network byte order\r
- //\r
- // Dhcp Options\r
- //\r
- PXEBC_DHCP4_TAG_PAD = 0, // Pad Option\r
- PXEBC_DHCP4_TAG_EOP = 255, // End Option\r
- PXEBC_DHCP4_TAG_NETMASK = 1, // Subnet Mask\r
- PXEBC_DHCP4_TAG_TIME_OFFSET = 2, // Time Offset from UTC\r
- PXEBC_DHCP4_TAG_ROUTER = 3, // Router option,\r
- PXEBC_DHCP4_TAG_TIME_SERVER = 4, // Time Server\r
- PXEBC_DHCP4_TAG_NAME_SERVER = 5, // Name Server\r
- PXEBC_DHCP4_TAG_DNS_SERVER = 6, // Domain Name Server\r
- PXEBC_DHCP4_TAG_HOSTNAME = 12, // Host Name\r
- PXEBC_DHCP4_TAG_BOOTFILE_LEN = 13, // Boot File Size\r
- PXEBC_DHCP4_TAG_DUMP = 14, // Merit Dump File\r
- PXEBC_DHCP4_TAG_DOMAINNAME = 15, // Domain Name\r
- PXEBC_DHCP4_TAG_ROOTPATH = 17, // Root path\r
- PXEBC_DHCP4_TAG_EXTEND_PATH = 18, // Extensions Path\r
- PXEBC_DHCP4_TAG_EMTU = 22, // Maximum Datagram Reassembly Size\r
- PXEBC_DHCP4_TAG_TTL = 23, // Default IP Time-to-live\r
- PXEBC_DHCP4_TAG_BROADCAST = 28, // Broadcast Address\r
- PXEBC_DHCP4_TAG_NIS_DOMAIN = 40, // Network Information Service Domain\r
- PXEBC_DHCP4_TAG_NIS_SERVER = 41, // Network Information Servers\r
- PXEBC_DHCP4_TAG_NTP_SERVER = 42, // Network Time Protocol Servers\r
- PXEBC_DHCP4_TAG_VENDOR = 43, // Vendor Specific Information\r
- PXEBC_DHCP4_TAG_REQUEST_IP = 50, // Requested IP Address\r
- PXEBC_DHCP4_TAG_LEASE = 51, // IP Address Lease Time\r
- PXEBC_DHCP4_TAG_OVERLOAD = 52, // Option Overload\r
- PXEBC_DHCP4_TAG_MSG_TYPE = 53, // DHCP Message Type\r
- PXEBC_DHCP4_TAG_SERVER_ID = 54, // Server Identifier\r
- PXEBC_DHCP4_TAG_PARA_LIST = 55, // Parameter Request List\r
- PXEBC_DHCP4_TAG_MAXMSG = 57, // Maximum DHCP Message Size\r
- PXEBC_DHCP4_TAG_T1 = 58, // Renewal (T1) Time Value\r
- PXEBC_DHCP4_TAG_T2 = 59, // Rebinding (T2) Time Value\r
- PXEBC_DHCP4_TAG_CLASS_ID = 60, // Vendor class identifier\r
- PXEBC_DHCP4_TAG_CLIENT_ID = 61, // Client-identifier\r
- PXEBC_DHCP4_TAG_TFTP = 66, // TFTP server name\r
- PXEBC_DHCP4_TAG_BOOTFILE = 67, // Bootfile name\r
- PXEBC_PXE_DHCP4_TAG_ARCH = 93,\r
- PXEBC_PXE_DHCP4_TAG_UNDI = 94,\r
- PXEBC_PXE_DHCP4_TAG_UUID = 97,\r
- //\r
- // Sub-Options in Dhcp Vendor Option\r
- //\r
- PXEBC_VENDOR_TAG_MTFTP_IP = 1,\r
- PXEBC_VENDOR_TAG_MTFTP_CPORT = 2,\r
- PXEBC_VENDOR_TAG_MTFTP_SPORT = 3,\r
- PXEBC_VENDOR_TAG_MTFTP_TIMEOUT = 4,\r
- PXEBC_VENDOR_TAG_MTFTP_DELAY = 5,\r
- PXEBC_VENDOR_TAG_DISCOVER_CTRL = 6,\r
- PXEBC_VENDOR_TAG_DISCOVER_MCAST = 7,\r
- PXEBC_VENDOR_TAG_BOOT_SERVERS = 8,\r
- PXEBC_VENDOR_TAG_BOOT_MENU = 9,\r
- PXEBC_VENDOR_TAG_MENU_PROMPT = 10,\r
- PXEBC_VENDOR_TAG_MCAST_ALLOC = 11,\r
- PXEBC_VENDOR_TAG_CREDENTIAL_TYPES = 12,\r
- PXEBC_VENDOR_TAG_BOOT_ITEM = 71,\r
-\r
- PXEBC_DHCP4_DISCOVER_INIT_TIMEOUT = 4,\r
- PXEBC_DHCP4_DISCOVER_RETRIES = 4,\r
-\r
- PXEBC_MAX_MENU_NUM = 24,\r
- PXEBC_MAX_OFFER_NUM = 16,\r
-\r
- PXEBC_BOOT_REQUEST_TIMEOUT = 1,\r
- PXEBC_BOOT_REQUEST_RETRIES = 4,\r
-\r
- PXEBC_DHCP4_OVERLOAD_FILE = 1,\r
- PXEBC_DHCP4_OVERLOAD_SERVER_NAME = 2\r
-} PXEBC_ENUM_TYPES;\r
+#define PXEBC_DHCP4_MAX_OPTION_NUM 16\r
+#define PXEBC_DHCP4_MAX_OPTION_SIZE 312\r
+#define PXEBC_DHCP4_MAX_PACKET_SIZE 1472\r
+\r
+#define PXEBC_DHCP4_S_PORT 67\r
+#define PXEBC_DHCP4_C_PORT 68\r
+#define PXEBC_BS_DOWNLOAD_PORT 69\r
+#define PXEBC_BS_DISCOVER_PORT 4011\r
+\r
+#define PXEBC_DHCP4_OPCODE_REQUEST 1\r
+#define PXEBC_DHCP4_OPCODE_REPLY 2\r
+#define PXEBC_DHCP4_MSG_TYPE_REQUEST 3\r
+#define PXEBC_DHCP4_MAGIC 0x63538263 // network byte order\r
+//\r
+// Dhcp Options\r
+//\r
+#define PXEBC_DHCP4_TAG_PAD 0 // Pad Option\r
+#define PXEBC_DHCP4_TAG_EOP 255 // End Option\r
+#define PXEBC_DHCP4_TAG_NETMASK 1 // Subnet Mask\r
+#define PXEBC_DHCP4_TAG_TIME_OFFSET 2 // Time Offset from UTC\r
+#define PXEBC_DHCP4_TAG_ROUTER 3 // Router option,\r
+#define PXEBC_DHCP4_TAG_TIME_SERVER 4 // Time Server\r
+#define PXEBC_DHCP4_TAG_NAME_SERVER 5 // Name Server\r
+#define PXEBC_DHCP4_TAG_DNS_SERVER 6 // Domain Name Server\r
+#define PXEBC_DHCP4_TAG_HOSTNAME 12 // Host Name\r
+#define PXEBC_DHCP4_TAG_BOOTFILE_LEN 13 // Boot File Size\r
+#define PXEBC_DHCP4_TAG_DUMP 14 // Merit Dump File\r
+#define PXEBC_DHCP4_TAG_DOMAINNAME 15 // Domain Name\r
+#define PXEBC_DHCP4_TAG_ROOTPATH 17 // Root path\r
+#define PXEBC_DHCP4_TAG_EXTEND_PATH 18 // Extensions Path\r
+#define PXEBC_DHCP4_TAG_EMTU 22 // Maximum Datagram Reassembly Size\r
+#define PXEBC_DHCP4_TAG_TTL 23 // Default IP Time-to-live\r
+#define PXEBC_DHCP4_TAG_BROADCAST 28 // Broadcast Address\r
+#define PXEBC_DHCP4_TAG_NIS_DOMAIN 40 // Network Information Service Domain\r
+#define PXEBC_DHCP4_TAG_NIS_SERVER 41 // Network Information Servers\r
+#define PXEBC_DHCP4_TAG_NTP_SERVER 42 // Network Time Protocol Servers\r
+#define PXEBC_DHCP4_TAG_VENDOR 43 // Vendor Specific Information\r
+#define PXEBC_DHCP4_TAG_REQUEST_IP 50 // Requested IP Address\r
+#define PXEBC_DHCP4_TAG_LEASE 51 // IP Address Lease Time\r
+#define PXEBC_DHCP4_TAG_OVERLOAD 52 // Option Overload\r
+#define PXEBC_DHCP4_TAG_MSG_TYPE 53 // DHCP Message Type\r
+#define PXEBC_DHCP4_TAG_SERVER_ID 54 // Server Identifier\r
+#define PXEBC_DHCP4_TAG_PARA_LIST 55 // Parameter Request List\r
+#define PXEBC_DHCP4_TAG_MAXMSG 57 // Maximum DHCP Message Size\r
+#define PXEBC_DHCP4_TAG_T1 58 // Renewal (T1) Time Value\r
+#define PXEBC_DHCP4_TAG_T2 59 // Rebinding (T2) Time Value\r
+#define PXEBC_DHCP4_TAG_CLASS_ID 60 // Vendor class identifier\r
+#define PXEBC_DHCP4_TAG_CLIENT_ID 61 // Client-identifier\r
+#define PXEBC_DHCP4_TAG_TFTP 66 // TFTP server name\r
+#define PXEBC_DHCP4_TAG_BOOTFILE 67 // Bootfile name\r
+#define PXEBC_PXE_DHCP4_TAG_ARCH 93\r
+#define PXEBC_PXE_DHCP4_TAG_UNDI 94\r
+#define PXEBC_PXE_DHCP4_TAG_UUID 97\r
+//\r
+// Sub-Options in Dhcp Vendor Option\r
+//\r
+#define PXEBC_VENDOR_TAG_MTFTP_IP 1\r
+#define PXEBC_VENDOR_TAG_MTFTP_CPORT 2\r
+#define PXEBC_VENDOR_TAG_MTFTP_SPORT 3\r
+#define PXEBC_VENDOR_TAG_MTFTP_TIMEOUT 4\r
+#define PXEBC_VENDOR_TAG_MTFTP_DELAY 5\r
+#define PXEBC_VENDOR_TAG_DISCOVER_CTRL 6\r
+#define PXEBC_VENDOR_TAG_DISCOVER_MCAST 7\r
+#define PXEBC_VENDOR_TAG_BOOT_SERVERS 8\r
+#define PXEBC_VENDOR_TAG_BOOT_MENU 9\r
+#define PXEBC_VENDOR_TAG_MENU_PROMPT 10\r
+#define PXEBC_VENDOR_TAG_MCAST_ALLOC 11\r
+#define PXEBC_VENDOR_TAG_CREDENTIAL_TYPES 12\r
+#define PXEBC_VENDOR_TAG_BOOT_ITEM 71\r
+\r
+#define PXEBC_DHCP4_DISCOVER_INIT_TIMEOUT 4\r
+#define PXEBC_DHCP4_DISCOVER_RETRIES 4\r
+\r
+#define PXEBC_MAX_MENU_NUM 24\r
+#define PXEBC_MAX_OFFER_NUM 16\r
+\r
+#define PXEBC_BOOT_REQUEST_TIMEOUT 1\r
+#define PXEBC_BOOT_REQUEST_RETRIES 4\r
+\r
+#define PXEBC_DHCP4_OVERLOAD_FILE 1\r
+#define PXEBC_DHCP4_OVERLOAD_SERVER_NAME 2\r
\r
//\r
// The array index of the DHCP4 option tag interested\r
//\r
-typedef enum {\r
- PXEBC_DHCP4_TAG_INDEX_BOOTFILE_LEN,\r
- PXEBC_DHCP4_TAG_INDEX_VENDOR,\r
- PXEBC_DHCP4_TAG_INDEX_OVERLOAD,\r
- PXEBC_DHCP4_TAG_INDEX_MSG_TYPE,\r
- PXEBC_DHCP4_TAG_INDEX_SERVER_ID,\r
- PXEBC_DHCP4_TAG_INDEX_CLASS_ID,\r
- PXEBC_DHCP4_TAG_INDEX_BOOTFILE,\r
- PXEBC_DHCP4_TAG_INDEX_MAX\r
-} PXEBC_DHCP4_TAG_INDEX_ENUM_TYPES;\r
+#define PXEBC_DHCP4_TAG_INDEX_BOOTFILE_LEN 0\r
+#define PXEBC_DHCP4_TAG_INDEX_VENDOR 1\r
+#define PXEBC_DHCP4_TAG_INDEX_OVERLOAD 2\r
+#define PXEBC_DHCP4_TAG_INDEX_MSG_TYPE 3\r
+#define PXEBC_DHCP4_TAG_INDEX_SERVER_ID 4\r
+#define PXEBC_DHCP4_TAG_INDEX_CLASS_ID 5\r
+#define PXEBC_DHCP4_TAG_INDEX_BOOTFILE 6\r
+#define PXEBC_DHCP4_TAG_INDEX_MAX 7\r
\r
//\r
// The type of DHCP OFFER, arranged by priority, PXE10 has the highest priority.\r
//\r
-typedef enum {\r
- DHCP4_PACKET_TYPE_PXE10,\r
- DHCP4_PACKET_TYPE_WFM11A,\r
- DHCP4_PACKET_TYPE_BINL,\r
- DHCP4_PACKET_TYPE_DHCP_ONLY,\r
- DHCP4_PACKET_TYPE_MAX,\r
- DHCP4_PACKET_TYPE_BOOTP = DHCP4_PACKET_TYPE_MAX\r
-} DHCP4_PACKET_TYPE_ENUM_TYPES;\r
+#define DHCP4_PACKET_TYPE_PXE10 0\r
+#define DHCP4_PACKET_TYPE_WFM11A 1\r
+#define DHCP4_PACKET_TYPE_BINL 2\r
+#define DHCP4_PACKET_TYPE_DHCP_ONLY 3\r
+#define DHCP4_PACKET_TYPE_MAX 4\r
+#define DHCP4_PACKET_TYPE_BOOTP DHCP4_PACKET_TYPE_MAX\r
\r
#define BIT(x) (1 << x)\r
#define CTRL(x) (0x1F & (x))\r
\r
#define PXEBC_CACHED_DHCP4_PACKET_MAX_SIZE (OFFSET_OF (EFI_DHCP4_PACKET, Dhcp4) + PXEBC_DHCP4_MAX_PACKET_SIZE)\r
\r
-typedef struct {\r
- union {\r
- EFI_DHCP4_PACKET Offer;\r
- EFI_DHCP4_PACKET Ack;\r
- UINT8 Buffer[PXEBC_CACHED_DHCP4_PACKET_MAX_SIZE];\r
- } Packet;\r
+typedef union {\r
+ EFI_DHCP4_PACKET Offer;\r
+ EFI_DHCP4_PACKET Ack;\r
+ UINT8 Buffer[PXEBC_CACHED_DHCP4_PACKET_MAX_SIZE];\r
+} PXEBC_DHCP4_PACKET;\r
\r
+typedef struct {\r
+ PXEBC_DHCP4_PACKET Packet;\r
BOOLEAN IsPxeOffer;\r
UINT8 OfferType;\r
EFI_DHCP4_PACKET_OPTION *Dhcp4Option[PXEBC_DHCP4_TAG_INDEX_MAX];\r
@param Seed Pointer to the message instance of the DHCP4 packet.\r
@param Udp4 Pointer to the EFI_UDP4_PROTOCOL instance.\r
\r
- @return none.\r
-\r
**/\r
VOID\r
PxeBcInitSeedPacket (\r
\r
\r
/**\r
- Create the boot options\r
+ Create the boot options.\r
\r
@param OptList Pointer to the list of the options\r
@param Type the type of option\r
@param Layer the layer of the boot options \r
@param OptLen length of opotion\r
\r
- @return None.\r
-\r
**/\r
VOID\r
PxeBcCreateBootOptions (\r