\r
SOCK_INIT_DATA mTcp4DefaultSockData = {\r
SOCK_STREAM,\r
- 0,\r
+ (SOCK_STATE) 0,\r
NULL,\r
TCP_BACKLOG,\r
TCP_SND_BUF_SIZE,\r
mTcp4Timer.TimerEvent = NULL;\r
}\r
\r
-//@MT: EFI_DRIVER_ENTRY_POINT (Tcp4DriverEntryPoint)\r
\r
EFI_STATUS\r
EFIAPI\r
//\r
Seed = NetRandomInitSeed ();\r
mTcpGlobalIss = NET_RANDOM (Seed) % mTcpGlobalIss;\r
- mTcp4RandomPort = TCP4_PORT_KNOWN +\r
- (UINT16) (NET_RANDOM(Seed) % TCP4_PORT_KNOWN);\r
+ mTcp4RandomPort = (UINT16) ( TCP4_PORT_KNOWN +\r
+ (UINT16) (NET_RANDOM(Seed) % TCP4_PORT_KNOWN));\r
\r
return Status;\r
}\r
//\r
NetZeroMem (&OpenData, sizeof (IP_IO_OPEN_DATA));\r
\r
- OpenData.IpConfigData = mIpIoDefaultIpConfigData;\r
+ CopyMem (&OpenData.IpConfigData, &mIpIoDefaultIpConfigData, sizeof (OpenData.IpConfigData));\r
OpenData.IpConfigData.DefaultProtocol = EFI_IP_PROTO_TCP;\r
\r
OpenData.PktRcvdNotify = Tcp4RxCallback;\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
}\r
\r
ON_EXIT:\r
\r
Status = SockDestroyChild (Sock);\r
\r
+ //\r
+ // Close the device path protocol\r
+ //\r
+ gBS->CloseProtocol (\r
+ TcpServiceData->ControllerHandle,\r
+ &gEfiDevicePathProtocolGuid,\r
+ TcpServiceData->DriverBindingHandle,\r
+ ChildHandle\r
+ );\r
+\r
//\r
// Close the Ip4 protocol.\r
//\r