]> git.proxmox.com Git - mirror_edk2.git/blobdiff - NetworkPkg/UefiPxeBcDxe/PxeBcDhcp6.h
NetworkPkg: Replace BSD License with BSD+Patent License
[mirror_edk2.git] / NetworkPkg / UefiPxeBcDxe / PxeBcDhcp6.h
index bf4839c493b8c23a4460c9be0b0997447c9d48f5..ca40fdc9d336aca855ad17f4169af51094a687bd 100644 (file)
@@ -1,15 +1,9 @@
 /** @file\r
   Functions declaration related with DHCPv6 for UefiPxeBc Driver.\r
 \r
-  Copyright (c) 2009 - 2010, 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
-  which accompanies this distribution.  The full text of the license may be found at\r
-  http://opensource.org/licenses/bsd-license.php.\r
-\r
-  THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
-  WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+  SPDX-License-Identifier: BSD-2-Clause-Patent\r
 \r
 **/\r
 \r
 \r
 #define PXEBC_DHCP6_OPTION_MAX_NUM        16\r
 #define PXEBC_DHCP6_OPTION_MAX_SIZE       312\r
-#define PXEBC_DHCP6_PACKET_MAX_SIZE       1472\r
-#define PXEBC_DHCP6_MAPPING_TIMEOUT       50000000   // 5 seconds, unit is 10nanosecond.\r
+#define PXEBC_DHCP6_PACKET_MAX_SIZE       (sizeof (EFI_PXE_BASE_CODE_PACKET))\r
 #define PXEBC_IP6_POLICY_MAX              0xff\r
+#define PXEBC_IP6_ROUTE_TABLE_TIMEOUT     10\r
 \r
 #define PXEBC_DHCP6_S_PORT                547\r
 #define PXEBC_DHCP6_C_PORT                546\r
 \r
-#define PXEBC_DHCP6_OPT_CLIENT_ID         1\r
-#define PXEBC_DHCP6_OPT_SERVER_ID         2\r
-#define PXEBC_DHCP6_OPT_IA_NA             3\r
-#define PXEBC_DHCP6_OPT_IA_TA             4\r
-#define PXEBC_DHCP6_OPT_IAADDR            5\r
-#define PXEBC_DHCP6_OPT_ORO               6\r
-#define PXEBC_DHCP6_OPT_PREFERENCE        7\r
-#define PXEBC_DHCP6_OPT_ELAPSED_TIME      8\r
-#define PXEBC_DHCP6_OPT_REPLAY_MSG        9\r
-#define PXEBC_DHCP6_OPT_AUTH              11\r
-#define PXEBC_DHCP6_OPT_UNICAST           12\r
-#define PXEBC_DHCP6_OPT_STATUS_CODE       13\r
-#define PXEBC_DHCP6_OPT_RAPID_COMMIT      14\r
-#define PXEBC_DHCP6_OPT_USER_CLASS        15\r
-#define PXEBC_DHCP6_OPT_VENDOR_CLASS      16\r
-#define PXEBC_DHCP6_OPT_VENDOR_OPTS       17\r
-#define PXEBC_DHCP6_OPT_INTERFACE_ID      18\r
-#define PXEBC_DHCP6_OPT_RECONFIG_MSG      19\r
-#define PXEBC_DHCP6_OPT_RECONFIG_ACCEPT   20\r
-#define PXEBC_DHCP6_OPT_BOOT_FILE_URL     59    // Assigned by IANA, RFC 5970\r
-#define PXEBC_DHCP6_OPT_BOOT_FILE_PARAM   60    // Assigned by IANA, RFC 5970\r
-#define PXEBC_DHCP6_OPT_ARCH              61    // Assigned by IANA, RFC 5970\r
-#define PXEBC_DHCP6_OPT_UNDI              62    // Assigned by IANA, RFC 5970\r
 #define PXEBC_DHCP6_ENTERPRISE_NUM        343   // TODO: IANA TBD: temporarily using Intel's\r
 #define PXEBC_DHCP6_MAX_BOOT_FILE_SIZE    65535 //   It's a limitation of bit length, 65535*512 bytes.\r
 \r
@@ -56,7 +27,8 @@
 #define PXEBC_DHCP6_IDX_BOOT_FILE_URL     1\r
 #define PXEBC_DHCP6_IDX_BOOT_FILE_PARAM   2\r
 #define PXEBC_DHCP6_IDX_VENDOR_CLASS      3\r
-#define PXEBC_DHCP6_IDX_MAX               4\r
+#define PXEBC_DHCP6_IDX_DNS_SERVER        4\r
+#define PXEBC_DHCP6_IDX_MAX               5\r
 \r
 #define PXEBC_DHCP6_BOOT_FILE_URL_PREFIX  "tftp://"\r
 #define PXEBC_TFTP_URL_SEPARATOR          '/'\r
@@ -123,10 +95,12 @@ typedef struct {
   UINT8                   Precedence;\r
 } PXEBC_DHCP6_OPTION_NODE;\r
 \r
+#define PXEBC_CACHED_DHCP6_PACKET_MAX_SIZE  (OFFSET_OF (EFI_DHCP6_PACKET, Dhcp6) + PXEBC_DHCP6_PACKET_MAX_SIZE)\r
+\r
 typedef union {\r
   EFI_DHCP6_PACKET        Offer;\r
   EFI_DHCP6_PACKET        Ack;\r
-  UINT8                   Buffer[PXEBC_DHCP6_PACKET_MAX_SIZE];\r
+  UINT8                   Buffer[PXEBC_CACHED_DHCP6_PACKET_MAX_SIZE];\r
 } PXEBC_DHCP6_PACKET;\r
 \r
 typedef struct {\r
@@ -136,21 +110,12 @@ typedef struct {
 } PXEBC_DHCP6_PACKET_CACHE;\r
 \r
 \r
-/**\r
-  Free all the nodes in the boot file list.\r
-\r
-  @param[in]  Head            The pointer to the head of the list.\r
-\r
-**/\r
-VOID\r
-PxeBcFreeBootFileOption (\r
-  IN LIST_ENTRY               *Head\r
-  );\r
 \r
 \r
 /**\r
   Parse the Boot File URL option.\r
 \r
+  @param[in]      Private             Pointer to PxeBc private data.\r
   @param[out]     FileName     The pointer to the boot file name.\r
   @param[in, out] SrvAddr      The pointer to the boot server address.\r
   @param[in]      BootFile     The pointer to the boot file URL option data.\r
@@ -163,6 +128,7 @@ PxeBcFreeBootFileOption (
 **/\r
 EFI_STATUS\r
 PxeBcExtractBootFileUrl (\r
+  IN PXEBC_PRIVATE_DATA      *Private,\r
      OUT UINT8               **FileName,\r
   IN OUT EFI_IPv6_ADDRESS    *SrvAddr,\r
   IN     CHAR8               *BootFile,\r
@@ -255,6 +221,33 @@ PxeBcDhcp6Discover (
   IN  EFI_IP_ADDRESS                *DestIp\r
   );\r
 \r
+/**\r
+  Set the IP6 policy to Automatic.\r
+\r
+  @param[in]  Private             The pointer to PXEBC_PRIVATE_DATA.\r
+\r
+  @retval     EFI_SUCCESS         Switch the IP policy succesfully.\r
+  @retval     Others              Unexpect error happened.\r
+\r
+**/\r
+EFI_STATUS\r
+PxeBcSetIp6Policy (\r
+  IN PXEBC_PRIVATE_DATA            *Private\r
+  );\r
+\r
+/**\r
+  This function will register the station IP address and flush IP instance to start using the new IP address.\r
+\r
+  @param[in]  Private             The pointer to PXEBC_PRIVATE_DATA.\r
+\r
+  @retval     EFI_SUCCESS         The new IP address has been configured successfully.\r
+  @retval     Others              Failed to configure the address.\r
+\r
+**/\r
+EFI_STATUS\r
+PxeBcSetIp6Address (\r
+  IN  PXEBC_PRIVATE_DATA              *Private\r
+  );\r
 \r
 /**\r
   Start the DHCPv6 S.A.R.R. process to acquire the IPv6 address and other PXE boot information.\r