- goto ON_EXIT;\r
- }\r
-\r
- *ChildHandle = Sock->SockHandle;\r
-\r
- //\r
- // Open the default Ip4 protocol of IP_IO BY_DRIVER.\r
- //\r
- Status = gBS->OpenProtocol (\r
- TcpServiceData->IpIo->ChildHandle,\r
- &gEfiIp4ProtocolGuid,\r
- (VOID **) &Ip4,\r
- TcpServiceData->DriverBindingHandle,\r
- Sock->SockHandle,\r
- EFI_OPEN_PROTOCOL_BY_CHILD_CONTROLLER\r
- );\r
- if (EFI_ERROR (Status)) {\r
- SockDestroyChild (Sock);\r
- goto ON_EXIT;\r
- }\r
-\r
- //\r
- // Open the device path on the handle where service binding resides on.\r
- //\r
- Status = gBS->OpenProtocol (\r
- TcpServiceData->ControllerHandle,\r
- &gEfiDevicePathProtocolGuid,\r
- (VOID **) &Sock->ParentDevicePath,\r
- TcpServiceData->DriverBindingHandle,\r
- Sock->SockHandle,\r
- EFI_OPEN_PROTOCOL_BY_CHILD_CONTROLLER\r
- );\r
- if (EFI_ERROR (Status)) {\r
- gBS->CloseProtocol (\r
- TcpServiceData->IpIo->ChildHandle,\r
- &gEfiIp4ProtocolGuid,\r
- TcpServiceData->DriverBindingHandle,\r
- Sock->SockHandle\r
- );\r
- SockDestroyChild (Sock);\r