+/**\r
+ Update the component name for the IP6 child handle.\r
+\r
+ @param Ip6[in] A pointer to the EFI_IP6_PROTOCOL.\r
+\r
+ \r
+ @retval EFI_SUCCESS Update the ControllerNameTable of this instance successfully.\r
+ @retval EFI_INVALID_PARAMETER The input parameter is invalid.\r
+ \r
+**/\r
+EFI_STATUS\r
+UpdateName (\r
+ IN EFI_IP6_PROTOCOL *Ip6\r
+ )\r
+{\r
+ EFI_STATUS Status;\r
+ CHAR16 HandleName[128];\r
+ EFI_IP6_MODE_DATA Ip6ModeData;\r
+ UINTN Offset;\r
+ CHAR16 Address[sizeof"ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff"];\r
+\r
+ if (Ip6 == NULL) {\r
+ return EFI_INVALID_PARAMETER;\r
+ }\r
+\r
+ //\r
+ // Format the child name into the string buffer.\r
+ //\r
+ Offset = 0;\r
+ Status = Ip6->GetModeData (Ip6, &Ip6ModeData, NULL, NULL);\r
+ if (!EFI_ERROR (Status) && Ip6ModeData.IsStarted) {\r
+ Status = NetLibIp6ToStr (&Ip6ModeData.ConfigData.StationAddress, Address, sizeof(Address));\r
+ if (EFI_ERROR (Status)) {\r
+ return Status;\r
+ }\r
+ Offset += UnicodeSPrint (\r
+ HandleName,\r
+ sizeof(HandleName),\r
+ L"IPv6(StationAddress=%s, ",\r
+ Address\r
+ );\r
+ Status = NetLibIp6ToStr (&Ip6ModeData.ConfigData.DestinationAddress, Address, sizeof(Address));\r
+ if (EFI_ERROR (Status)) {\r
+ return Status;\r
+ }\r
+ UnicodeSPrint (\r
+ HandleName + Offset,\r
+ sizeof(HandleName) - Offset * sizeof (CHAR16),\r
+ L"DestinationAddress=%s)",\r
+ Address\r
+ );\r
+ } else if (!Ip6ModeData.IsStarted) {\r
+ UnicodeSPrint (HandleName, sizeof(HandleName), L"IPv6(Not started)");\r
+ } else {\r
+ UnicodeSPrint (HandleName, sizeof(HandleName), L"IPv6(%r)", Status);\r
+ }\r
+\r
+ if (gIp6ControllerNameTable != NULL) {\r
+ FreeUnicodeStringTable (gIp6ControllerNameTable);\r
+ gIp6ControllerNameTable = NULL;\r
+ }\r
+ \r
+ Status = AddUnicodeString2 (\r
+ "eng",\r
+ gIp6ComponentName.SupportedLanguages,\r
+ &gIp6ControllerNameTable,\r
+ HandleName,\r
+ TRUE\r
+ );\r
+ if (EFI_ERROR (Status)) {\r
+ return Status;\r
+ }\r
+ \r
+ return AddUnicodeString2 (\r
+ "en",\r
+ gIp6ComponentName2.SupportedLanguages,\r
+ &gIp6ControllerNameTable,\r
+ HandleName,\r
+ FALSE\r
+ );\r
+}\r
+\r