+/**\r
+ Update the component name for the Tcp4 child handle.\r
+\r
+ @param Tcp4[in] A pointer to the EFI_TCP4_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
+UpdateTcp4Name (\r
+ IN EFI_TCP4_PROTOCOL *Tcp4\r
+ )\r
+{\r
+ EFI_STATUS Status;\r
+ CHAR16 HandleName[80];\r
+ EFI_TCP4_CONFIG_DATA Tcp4ConfigData;\r
+\r
+ if (Tcp4 == NULL) {\r
+ return EFI_INVALID_PARAMETER;\r
+ }\r
+\r
+ //\r
+ // Format the child name into the string buffer as:\r
+ // TCPv4 (SrcPort=59, DestPort=60, ActiveFlag=TRUE)\r
+ //\r
+ Status = Tcp4->GetModeData (Tcp4, NULL, &Tcp4ConfigData, NULL, NULL, NULL);\r
+ if (!EFI_ERROR (Status)) {\r
+ UnicodeSPrint (HandleName, sizeof (HandleName),\r
+ L"TCPv4 (SrcPort=%d, DestPort=&d, ActiveFlag=%s)",\r
+ Tcp4ConfigData.AccessPoint.StationPort,\r
+ Tcp4ConfigData.AccessPoint.RemotePort,\r
+ (Tcp4ConfigData.AccessPoint.ActiveFlag ? L"TRUE" : L"FALSE")\r
+ );\r
+ } if (Status == EFI_NOT_STARTED) {\r
+ UnicodeSPrint (\r
+ HandleName,\r
+ sizeof (HandleName),\r
+ L"TCPv4 (Not started)"\r
+ );\r
+ } else {\r
+ return Status;\r
+ }\r
+\r
+ if (gTcpControllerNameTable != NULL) {\r
+ FreeUnicodeStringTable (gTcpControllerNameTable);\r
+ gTcpControllerNameTable = NULL;\r
+ }\r
+ \r
+ Status = AddUnicodeString2 (\r
+ "eng",\r
+ gTcpComponentName.SupportedLanguages,\r
+ &gTcpControllerNameTable,\r
+ HandleName,\r
+ TRUE\r
+ );\r
+ if (EFI_ERROR (Status)) {\r
+ return Status;\r
+ }\r
+ \r
+ return AddUnicodeString2 (\r
+ "en",\r
+ gTcpComponentName2.SupportedLanguages,\r
+ &gTcpControllerNameTable,\r
+ HandleName,\r
+ FALSE\r
+ );\r
+}\r
+\r
+/**\r
+ Update the component name for the Tcp6 child handle.\r
+\r
+ @param Tcp6[in] A pointer to the EFI_TCP6_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
+UpdateTcp6Name (\r
+ IN EFI_TCP6_PROTOCOL *Tcp6\r
+ )\r
+{\r
+ EFI_STATUS Status;\r
+ CHAR16 HandleName[80];\r
+ EFI_TCP6_CONFIG_DATA Tcp6ConfigData;\r
+\r
+ if (Tcp6 == NULL) {\r
+ return EFI_INVALID_PARAMETER;\r
+ }\r
+\r
+ //\r
+ // Format the child name into the string buffer.\r
+ //\r
+ Status = Tcp6->GetModeData (Tcp6, NULL, &Tcp6ConfigData, NULL, NULL, NULL);\r
+ if (!EFI_ERROR (Status)) {\r
+ UnicodeSPrint (HandleName, sizeof (HandleName),\r
+ L"TCPv6(SrcPort=%d, DestPort=%d, ActiveFlag=%d)",\r
+ Tcp6ConfigData.AccessPoint.StationPort,\r
+ Tcp6ConfigData.AccessPoint.RemotePort,\r
+ Tcp6ConfigData.AccessPoint.ActiveFlag\r
+ );\r
+ } else if (Status == EFI_NOT_STARTED) {\r
+ UnicodeSPrint (HandleName, sizeof (HandleName), L"TCPv6(Not started)");\r
+ } else {\r
+ return Status;\r
+ }\r
+\r
+\r
+ if (gTcpControllerNameTable != NULL) {\r
+ FreeUnicodeStringTable (gTcpControllerNameTable);\r
+ gTcpControllerNameTable = NULL;\r
+ }\r
+ \r
+ Status = AddUnicodeString2 (\r
+ "eng",\r
+ gTcpComponentName.SupportedLanguages,\r
+ &gTcpControllerNameTable,\r
+ HandleName,\r
+ TRUE\r
+ );\r
+ if (EFI_ERROR (Status)) {\r
+ return Status;\r
+ }\r
+ \r
+ return AddUnicodeString2 (\r
+ "en",\r
+ gTcpComponentName2.SupportedLanguages,\r
+ &gTcpControllerNameTable,\r
+ HandleName,\r
+ FALSE\r
+ );\r
+}\r
+\r