/** @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 - 2016, 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
\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
#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
UINT8 Type;\r
UINT8 MajorVer;\r
UINT8 MinorVer;\r
- UINT8 Reserved;\r
} PXEBC_DHCP6_OPTION_UNDI;\r
\r
typedef struct {\r
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
/**\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
**/\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
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