/** @file\r
The implementation of EFI IPv6 Configuration Protocol.\r
\r
- Copyright (c) 2009 - 2010, Intel Corporation. All rights reserved.<BR>\r
+ Copyright (c) 2009 - 2014, 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
DataRecord = &Variable->DataRecord[Variable->DataRecordCount];\r
DataRecord->DataType = (EFI_IP6_CONFIG_DATA_TYPE) Index;\r
- DataRecord->DataSize = DataItem->DataSize;\r
+ DataRecord->DataSize = (UINT32) DataItem->DataSize;\r
DataRecord->Offset = (UINT16) (Heap - (CHAR8 *) Variable);\r
\r
Variable->DataRecordCount++;\r
on a tentative address. A value of ZERO indicates that Duplicate Address Detection\r
will not be performed on a tentative address.\r
\r
- @param[in] The Instance Pointer to the IP6 config instance data.\r
+ @param[in] Instance The Instance Pointer to the IP6 config instance data.\r
@param[in] DataSize Size of the buffer pointed to by Data in bytes.\r
@param[in] Data The data buffer to set.\r
\r
128\r
);\r
\r
+ //\r
+ // If the new address's prefix length is not specified, just use the previous configured\r
+ // prefix length for this address.\r
+ //\r
+ if (NewAddress->PrefixLength == 0) {\r
+ NewAddress->PrefixLength = CurrentAddrInfo->PrefixLength;\r
+ }\r
+\r
//\r
// This manual address is already in use, see whether prefix length is changed.\r
//\r
//\r
// Decline those duplicates.\r
//\r
- Instance->Dhcp6->Decline (\r
- Instance->Dhcp6,\r
- Instance->DeclineAddressCount,\r
- Instance->DeclineAddress\r
- );\r
+ if (Instance->Dhcp6 != NULL) {\r
+ Instance->Dhcp6->Decline (\r
+ Instance->Dhcp6,\r
+ Instance->DeclineAddressCount,\r
+ Instance->DeclineAddress\r
+ );\r
+ }\r
}\r
\r
if (Instance->DeclineAddress != NULL) {\r
}\r
\r
/**\r
- Destory the Dhcp6 child in IP6_CONFIG_INSTANCE and release the resources.\r
+ Destroy the Dhcp6 child in IP6_CONFIG_INSTANCE and release the resources.\r
\r
@param[in, out] Instance The buffer of IP6_CONFIG_INSTANCE to be freed.\r
\r
@retval EFI_SUCCESS The child was successfully destroyed.\r
- @retval Others Failed to destory the child.\r
+ @retval Others Failed to destroy the child.\r
\r
**/\r
EFI_STATUS\r