\r
TcpRsvData = (TCP_RSV_DATA *) RcvBufEntry->ProtoData;\r
\r
- *IsUrg = ((TcpRsvData->UrgLen > 0) ? TRUE : FALSE);\r
+ *IsUrg = (BOOLEAN) ((TcpRsvData->UrgLen > 0) ? TRUE : FALSE);\r
\r
if (*IsUrg && TcpRsvData->UrgLen < RcvBufEntry->TotalSize) {\r
\r
- DataLen = NET_MIN (TcpRsvData->UrgLen, BufLen);\r
+ DataLen = MIN (TcpRsvData->UrgLen, BufLen);\r
\r
if (DataLen < TcpRsvData->UrgLen) {\r
TcpRsvData->UrgLen = TcpRsvData->UrgLen - DataLen;\r
\r
TcpRsvData = (TCP_RSV_DATA *) RcvBufEntry->ProtoData;\r
\r
- Urg = ((TcpRsvData->UrgLen > 0) ? TRUE : FALSE);\r
+ Urg = (BOOLEAN) ((TcpRsvData->UrgLen > 0) ? TRUE : FALSE);\r
\r
if (*IsUrg != Urg) {\r
break;\r
TcpRsvData->UrgLen = TcpRsvData->UrgLen - (BufLen - DataLen);\r
}\r
\r
- return NET_MIN (TcpRsvData->UrgLen + DataLen, BufLen);\r
+ return MIN (TcpRsvData->UrgLen + DataLen, BufLen);\r
\r
}\r
\r
RcvBufEntry = SockBufNext (SockBuffer, RcvBufEntry);\r
}\r
\r
- DataLen = NET_MIN (BufLen, DataLen);\r
+ DataLen = MIN (BufLen, DataLen);\r
return DataLen;\r
}\r
\r
for (Index = 0; (Index < RxData->FragmentCount) && (RcvdBytes > 0); Index++) {\r
\r
Fragment = &RxData->FragmentTable[Index];\r
- CopyBytes = NET_MIN (Fragment->FragmentLength, RcvdBytes);\r
+ CopyBytes = MIN ((UINT32) (Fragment->FragmentLength), RcvdBytes);\r
\r
NetbufQueCopy (\r
Sock->RcvBuffer.DataQueue,\r
TokenRcvdBytes = SockTcpDataToRcv (\r
&Sock->RcvBuffer,\r
&IsUrg,\r
- RxData->DataLength\r
+ (UINT32) RxData->DataLength\r
);\r
\r
//\r
//\r
SndData = NetbufFromExt (\r
(NET_FRAGMENT *) TxData->FragmentTable,\r
- TxData->FragmentCount,\r
+ (UINT32) TxData->FragmentCount,\r
0,\r
0,\r
SockFreeFoo,\r
SndToken = (SOCK_IO_TOKEN *) SockToken->Token;\r
TxData = SndToken->Packet.TxData;\r
\r
- DataLen = TxData->DataLength;\r
+ DataLen = (UINT32) TxData->DataLength;\r
Status = SockProcessTcpSndData (Sock, TxData);\r
\r
if (EFI_ERROR (Status)) {\r
\r
ASSERT (SockInitData && SockInitData->ProtoHandler);\r
ASSERT (SockInitData->Type == SOCK_STREAM);\r
+ ASSERT (SockInitData->ProtoData && (SockInitData->DataSize <= PROTO_RESERVED_LEN));\r
\r
Parent = SockInitData->Parent;\r
\r
return NULL;\r
}\r
\r
+ NetListInit (&Sock->Link);\r
NetListInit (&Sock->ConnectionList);\r
NetListInit (&Sock->ListenTokenList);\r
NetListInit (&Sock->RcvTokenList);\r
Sock->Type = SockInitData->Type;\r
Sock->DriverBinding = SockInitData->DriverBinding;\r
Sock->State = SockInitData->State;\r
+ Sock->CreateCallback = SockInitData->CreateCallback;\r
+ Sock->DestroyCallback = SockInitData->DestroyCallback;\r
+ Sock->Context = SockInitData->Context;\r
\r
Sock->SockError = EFI_ABORTED;\r
Sock->SndBuffer.LowWater = SOCK_BUFF_LOW_WATER;\r
sizeof (EFI_TCP4_PROTOCOL)\r
);\r
\r
+ //\r
+ // copy the protodata into socket\r
+ //\r
+ NetCopyMem (Sock->ProtoReserved, SockInitData->ProtoData, SockInitData->DataSize);\r
+\r
Status = gBS->InstallMultipleProtocolInterfaces (\r
&Sock->SockHandle,\r
&gEfiTcp4ProtocolGuid,\r
NetListInsertTail (&Parent->ConnectionList, &Sock->ConnectionList);\r
}\r
\r
+ if (Sock->CreateCallback != NULL) {\r
+ Status = Sock->CreateCallback (Sock, Sock->Context);\r
+ if (EFI_ERROR (Status)) {\r
+ goto OnError;\r
+ }\r
+ }\r
+\r
return Sock;\r
\r
OnError:\r
- if (NULL != Sock) {\r
\r
- if (NULL != Sock->SndBuffer.DataQueue) {\r
- NetbufQueFree (Sock->SndBuffer.DataQueue);\r
- }\r
+ if (Sock->SockHandle != NULL) {\r
+ gBS->UninstallMultipleProtocolInterfaces (\r
+ Sock->SockHandle,\r
+ &gEfiTcp4ProtocolGuid,\r
+ &(Sock->NetProtocol.TcpProtocol),\r
+ NULL\r
+ );\r
+ }\r
\r
- if (NULL != Sock->RcvBuffer.DataQueue) {\r
- NetbufQueFree (Sock->RcvBuffer.DataQueue);\r
- }\r
+ if (NULL != Sock->SndBuffer.DataQueue) {\r
+ NetbufQueFree (Sock->SndBuffer.DataQueue);\r
+ }\r
\r
- NetFreePool (Sock);\r
+ if (NULL != Sock->RcvBuffer.DataQueue) {\r
+ NetbufQueFree (Sock->RcvBuffer.DataQueue);\r
}\r
\r
+ NetFreePool (Sock);\r
+\r
return NULL;\r
}\r
\r
\r
ASSERT (SOCK_STREAM == Sock->Type);\r
\r
+ if (Sock->DestroyCallback != NULL) {\r
+ Sock->DestroyCallback (Sock, Sock->Context);\r
+ }\r
+\r
//\r
// Flush the completion token buffered\r
// by sock and rcv, snd buffer\r
InitData.SndBufferSize = Sock->SndBuffer.HighWater;\r
InitData.DriverBinding = Sock->DriverBinding;\r
InitData.Protocol = &(Sock->NetProtocol);\r
+ InitData.CreateCallback = Sock->CreateCallback;\r
+ InitData.DestroyCallback = Sock->DestroyCallback;\r
+ InitData.Context = Sock->Context;\r
+ InitData.ProtoData = Sock->ProtoReserved;\r
+ InitData.DataSize = sizeof (Sock->ProtoReserved);\r
\r
ClonedSock = SockCreate (&InitData);\r
\r
return NULL;\r
}\r
\r
- NetCopyMem (\r
- ClonedSock->ProtoReserved,\r
- Sock->ProtoReserved,\r
- PROTO_RESERVED_LEN\r
- );\r
-\r
SockSetState (ClonedSock, SO_CONNECTING);\r
ClonedSock->ConfigureState = Sock->ConfigureState;\r
\r