]> git.proxmox.com Git - mirror_edk2.git/blobdiff - NetworkPkg/UefiPxeBcDxe/PxeBcDhcp4.h
FmpDevicePkg FmpDxe: Return UNSUPPORTED if device has been locked
[mirror_edk2.git] / NetworkPkg / UefiPxeBcDxe / PxeBcDhcp4.h
index 8e4e101806b4e8875b3e9082b2a9de164f4f4b6c..742fdde5e772c5990a537a952cbba5fc1a2786c6 100644 (file)
@@ -1,7 +1,7 @@
 /** @file\r
   Functions declaration related with DHCPv4 for UefiPxeBc Driver.\r
 \r
-  Copyright (c) 2009 - 2014, Intel Corporation. All rights reserved.<BR>\r
+  Copyright (c) 2009 - 2018, Intel Corporation. All rights reserved.<BR>\r
 \r
   This program and the accompanying materials\r
   are licensed and made available under the terms and conditions of the BSD License\r
@@ -18,7 +18,7 @@
 \r
 #define PXEBC_DHCP4_OPTION_MAX_NUM         16\r
 #define PXEBC_DHCP4_OPTION_MAX_SIZE        312\r
-#define PXEBC_DHCP4_PACKET_MAX_SIZE        1472\r
+#define PXEBC_DHCP4_PACKET_MAX_SIZE        (sizeof (EFI_PXE_BASE_CODE_PACKET))\r
 #define PXEBC_DHCP4_S_PORT                 67\r
 #define PXEBC_DHCP4_C_PORT                 68\r
 #define PXEBC_BS_DOWNLOAD_PORT             69\r
 #define PXEBC_DHCP4_MSG_TYPE_REQUEST       3\r
 #define PXEBC_DHCP4_MAGIC                  0x63538263 // network byte order\r
 \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
@@ -148,7 +108,7 @@ typedef enum {
 \r
 #define IS_VALID_BOOT_SERVERS(x) \\r
   ((((x)[0]) & BIT (PXEBC_VENDOR_TAG_BOOT_SERVERS)) \\r
-   == BIT (PXEBC_VENDOR_TAG_BOOT_SERVERS))  \r
+   == BIT (PXEBC_VENDOR_TAG_BOOT_SERVERS))\r
 \r
 #define IS_VALID_BOOT_PROMPT(x) \\r
   ((((x)[0]) & BIT (PXEBC_VENDOR_TAG_MENU_PROMPT)) \\r
@@ -303,10 +263,12 @@ typedef struct {
   UINT8                 CredTypeLen;\r
 } PXEBC_VENDOR_OPTION;\r
 \r
+#define PXEBC_CACHED_DHCP4_PACKET_MAX_SIZE  (OFFSET_OF (EFI_DHCP4_PACKET, Dhcp4) + PXEBC_DHCP4_PACKET_MAX_SIZE)\r
+\r
 typedef union {\r
   EFI_DHCP4_PACKET        Offer;\r
   EFI_DHCP4_PACKET        Ack;\r
-  UINT8                   Buffer[PXEBC_DHCP4_PACKET_MAX_SIZE];\r
+  UINT8                   Buffer[PXEBC_CACHED_DHCP4_PACKET_MAX_SIZE];\r
 } PXEBC_DHCP4_PACKET;\r
 \r
 typedef struct {\r
@@ -374,6 +336,20 @@ PxeBcDhcp4Discover (
   IN  EFI_PXE_BASE_CODE_SRVLIST       *SrvList\r
   );\r
 \r
+/**\r
+  Switch the Ip4 policy to static.\r
+\r
+  @param[in]  Private             The pointer to PXEBC_PRIVATE_DATA.\r
+\r
+  @retval     EFI_SUCCESS         The policy is already configured to static.\r
+  @retval     Others              Other error as indicated..\r
+\r
+**/\r
+EFI_STATUS\r
+PxeBcSetIp4Policy (\r
+  IN PXEBC_PRIVATE_DATA            *Private\r
+  );\r
+\r
 \r
 /**\r
   Start the D.O.R.A DHCPv4 process to acquire the IPv4 address and other PXE boot information.\r