]> git.proxmox.com Git - mirror_edk2.git/blobdiff - MdeModulePkg/Universal/Network/Tcp4Dxe/Tcp4Misc.c
Sync the latest version from R8.
[mirror_edk2.git] / MdeModulePkg / Universal / Network / Tcp4Dxe / Tcp4Misc.c
index 41516a9ad80e5c570deffac75a915faa41007b43..3930539d77d1ec26e6010f5f199afb0dec224261 100644 (file)
@@ -426,6 +426,7 @@ TcpCloneTcb (
 {\r
   TCP_CB               *Clone;\r
   TCP4_SERVICE_DATA  *TcpService;\r
+  EFI_IP4_PROTOCOL   *Ip4;\r
 \r
   Clone = NetAllocatePool (sizeof (TCP_CB));\r
 \r
@@ -454,10 +455,13 @@ TcpCloneTcb (
 \r
   ((TCP4_PROTO_DATA *) (Clone->Sk->ProtoReserved))->TcpPcb = Clone;\r
 \r
+  TcpService = ((TCP4_PROTO_DATA *) (Clone->Sk->ProtoReserved))->TcpService;\r
+\r
+  NetListInsertTail (&TcpService->SocketList, &Clone->Sk->Link);\r
+\r
   //\r
   // Open the device path on the handle where service binding resides on.\r
   //\r
-  TcpService = ((TCP4_PROTO_DATA *) (Clone->Sk->ProtoReserved))->TcpService;\r
   gBS->OpenProtocol (\r
          TcpService->ControllerHandle,\r
          &gEfiDevicePathProtocolGuid,\r
@@ -467,6 +471,18 @@ TcpCloneTcb (
          EFI_OPEN_PROTOCOL_BY_CHILD_CONTROLLER\r
          );\r
 \r
+  //\r
+  // Open the ip protocol by child controller.\r
+  //\r
+  gBS->OpenProtocol (\r
+         TcpService->IpIo->ChildHandle,\r
+         &gEfiIp4ProtocolGuid,\r
+         (VOID **) &Ip4,\r
+         TcpService->DriverBindingHandle,\r
+         Clone->Sk->SockHandle,\r
+         EFI_OPEN_PROTOCOL_BY_CHILD_CONTROLLER\r
+         );\r
+\r
   return Clone;\r
 }\r
 \r