**/\r
UINT16\r
TcpGetUint16 (\r
- IN UINT8 *Buf\r
+ IN UINT8 *Buf\r
)\r
{\r
UINT16 Value;\r
+\r
CopyMem (&Value, Buf, sizeof (UINT16));\r
return NTOHS (Value);\r
}\r
**/\r
UINT32\r
TcpGetUint32 (\r
- IN UINT8 *Buf\r
+ IN UINT8 *Buf\r
)\r
{\r
UINT32 Value;\r
+\r
CopyMem (&Value, Buf, sizeof (UINT32));\r
return NTOHL (Value);\r
}\r
**/\r
VOID\r
TcpPutUint32 (\r
- OUT UINT8 *Buf,\r
- IN UINT32 Data\r
+ OUT UINT8 *Buf,\r
+ IN UINT32 Data\r
)\r
{\r
Data = HTONL (Data);\r
**/\r
UINT8\r
TcpComputeScale (\r
- IN TCP_CB *Tcb\r
+ IN TCP_CB *Tcb\r
)\r
{\r
UINT8 Scale;\r
\r
BufSize = GET_RCV_BUFFSIZE (Tcb->Sk);\r
\r
- Scale = 0;\r
- while ((Scale < TCP_OPTION_MAX_WS) && ((UINT32) (TCP_OPTION_MAX_WIN << Scale) < BufSize)) {\r
-\r
+ Scale = 0;\r
+ while ((Scale < TCP_OPTION_MAX_WS) && ((UINT32)(TCP_OPTION_MAX_WIN << Scale) < BufSize)) {\r
Scale++;\r
}\r
\r
**/\r
UINT16\r
TcpSynBuildOption (\r
- IN TCP_CB *Tcb,\r
- IN NET_BUF *Nbuf\r
+ IN TCP_CB *Tcb,\r
+ IN NET_BUF *Nbuf\r
)\r
{\r
UINT8 *Data;\r
//\r
if (!TCP_FLG_ON (Tcb->CtrlFlag, TCP_CTRL_NO_TS) &&\r
(!TCP_FLG_ON (TCPSEG_NETBUF (Nbuf)->Flag, TCP_FLG_ACK) ||\r
- TCP_FLG_ON (Tcb->CtrlFlag, TCP_CTRL_RCVD_TS))\r
- ) {\r
-\r
+ TCP_FLG_ON (Tcb->CtrlFlag, TCP_CTRL_RCVD_TS))\r
+ )\r
+ {\r
Data = NetbufAllocSpace (\r
Nbuf,\r
TCP_OPTION_TS_ALIGNED_LEN,\r
//\r
if (!TCP_FLG_ON (Tcb->CtrlFlag, TCP_CTRL_NO_WS) &&\r
(!TCP_FLG_ON (TCPSEG_NETBUF (Nbuf)->Flag, TCP_FLG_ACK) ||\r
- TCP_FLG_ON (Tcb->CtrlFlag, TCP_CTRL_RCVD_WS))\r
- ) {\r
-\r
+ TCP_FLG_ON (Tcb->CtrlFlag, TCP_CTRL_RCVD_WS))\r
+ )\r
+ {\r
Data = NetbufAllocSpace (\r
Nbuf,\r
TCP_OPTION_WS_ALIGNED_LEN,\r
**/\r
UINT16\r
TcpBuildOption (\r
- IN TCP_CB *Tcb,\r
- IN NET_BUF *Nbuf\r
+ IN TCP_CB *Tcb,\r
+ IN NET_BUF *Nbuf\r
)\r
{\r
UINT8 *Data;\r
//\r
if (TCP_FLG_ON (Tcb->CtrlFlag, TCP_CTRL_SND_TS) &&\r
!TCP_FLG_ON (TCPSEG_NETBUF (Nbuf)->Flag, TCP_FLG_RST)\r
- ) {\r
-\r
+ )\r
+ {\r
Data = NetbufAllocSpace (\r
- Nbuf,\r
- TCP_OPTION_TS_ALIGNED_LEN,\r
- NET_BUF_HEAD\r
- );\r
+ Nbuf,\r
+ TCP_OPTION_TS_ALIGNED_LEN,\r
+ NET_BUF_HEAD\r
+ );\r
\r
ASSERT (Data != NULL);\r
Len += TCP_OPTION_TS_ALIGNED_LEN;\r
**/\r
INTN\r
TcpParseOption (\r
- IN TCP_HEAD *Tcp,\r
- IN OUT TCP_OPTION *Option\r
+ IN TCP_HEAD *Tcp,\r
+ IN OUT TCP_OPTION *Option\r
)\r
{\r
- UINT8 *Head;\r
- UINT8 TotalLen;\r
- UINT8 Cur;\r
- UINT8 Type;\r
- UINT8 Len;\r
+ UINT8 *Head;\r
+ UINT8 TotalLen;\r
+ UINT8 Cur;\r
+ UINT8 Type;\r
+ UINT8 Len;\r
\r
ASSERT ((Tcp != NULL) && (Option != NULL));\r
\r
- Option->Flag = 0;\r
+ Option->Flag = 0;\r
\r
- TotalLen = (UINT8) ((Tcp->HeadLen << 2) - sizeof (TCP_HEAD));\r
+ TotalLen = (UINT8)((Tcp->HeadLen << 2) - sizeof (TCP_HEAD));\r
if (TotalLen <= 0) {\r
return 0;\r
}\r
\r
- Head = (UINT8 *) (Tcp + 1);\r
+ Head = (UINT8 *)(Tcp + 1);\r
\r
//\r
// Fast process of the timestamp option.\r
//\r
if ((TotalLen == TCP_OPTION_TS_ALIGNED_LEN) && (TcpGetUint32 (Head) == TCP_OPTION_TS_FAST)) {\r
-\r
Option->TSVal = TcpGetUint32 (Head + 4);\r
Option->TSEcr = TcpGetUint32 (Head + 8);\r
Option->Flag = TCP_OPTION_RCVD_TS;\r
\r
return 0;\r
}\r
+\r
//\r
// Slow path to process the options.\r
//\r
Type = Head[Cur];\r
\r
switch (Type) {\r
- case TCP_OPTION_MSS:\r
- Len = Head[Cur + 1];\r
+ case TCP_OPTION_MSS:\r
+ Len = Head[Cur + 1];\r
\r
- if ((Len != TCP_OPTION_MSS_LEN) || (TotalLen - Cur < TCP_OPTION_MSS_LEN)) {\r
+ if ((Len != TCP_OPTION_MSS_LEN) || (TotalLen - Cur < TCP_OPTION_MSS_LEN)) {\r
+ return -1;\r
+ }\r
\r
- return -1;\r
- }\r
+ Option->Mss = TcpGetUint16 (&Head[Cur + 2]);\r
+ TCP_SET_FLG (Option->Flag, TCP_OPTION_RCVD_MSS);\r
\r
- Option->Mss = TcpGetUint16 (&Head[Cur + 2]);\r
- TCP_SET_FLG (Option->Flag, TCP_OPTION_RCVD_MSS);\r
+ Cur += TCP_OPTION_MSS_LEN;\r
+ break;\r
\r
- Cur += TCP_OPTION_MSS_LEN;\r
- break;\r
+ case TCP_OPTION_WS:\r
+ Len = Head[Cur + 1];\r
\r
- case TCP_OPTION_WS:\r
- Len = Head[Cur + 1];\r
+ if ((Len != TCP_OPTION_WS_LEN) || (TotalLen - Cur < TCP_OPTION_WS_LEN)) {\r
+ return -1;\r
+ }\r
\r
- if ((Len != TCP_OPTION_WS_LEN) || (TotalLen - Cur < TCP_OPTION_WS_LEN)) {\r
+ Option->WndScale = (UINT8)MIN (14, Head[Cur + 2]);\r
+ TCP_SET_FLG (Option->Flag, TCP_OPTION_RCVD_WS);\r
\r
- return -1;\r
- }\r
+ Cur += TCP_OPTION_WS_LEN;\r
+ break;\r
\r
- Option->WndScale = (UINT8) MIN (14, Head[Cur + 2]);\r
- TCP_SET_FLG (Option->Flag, TCP_OPTION_RCVD_WS);\r
+ case TCP_OPTION_TS:\r
+ Len = Head[Cur + 1];\r
\r
- Cur += TCP_OPTION_WS_LEN;\r
- break;\r
+ if ((Len != TCP_OPTION_TS_LEN) || (TotalLen - Cur < TCP_OPTION_TS_LEN)) {\r
+ return -1;\r
+ }\r
\r
- case TCP_OPTION_TS:\r
- Len = Head[Cur + 1];\r
+ Option->TSVal = TcpGetUint32 (&Head[Cur + 2]);\r
+ Option->TSEcr = TcpGetUint32 (&Head[Cur + 6]);\r
+ TCP_SET_FLG (Option->Flag, TCP_OPTION_RCVD_TS);\r
\r
- if ((Len != TCP_OPTION_TS_LEN) || (TotalLen - Cur < TCP_OPTION_TS_LEN)) {\r
+ Cur += TCP_OPTION_TS_LEN;\r
+ break;\r
\r
- return -1;\r
- }\r
+ case TCP_OPTION_NOP:\r
+ Cur++;\r
+ break;\r
\r
- Option->TSVal = TcpGetUint32 (&Head[Cur + 2]);\r
- Option->TSEcr = TcpGetUint32 (&Head[Cur + 6]);\r
- TCP_SET_FLG (Option->Flag, TCP_OPTION_RCVD_TS);\r
+ case TCP_OPTION_EOP:\r
+ Cur = TotalLen;\r
+ break;\r
\r
- Cur += TCP_OPTION_TS_LEN;\r
- break;\r
+ default:\r
+ Len = Head[Cur + 1];\r
\r
- case TCP_OPTION_NOP:\r
- Cur++;\r
- break;\r
+ if (((TotalLen - Cur) < Len) || (Len < 2)) {\r
+ return -1;\r
+ }\r
\r
- case TCP_OPTION_EOP:\r
- Cur = TotalLen;\r
- break;\r
-\r
- default:\r
- Len = Head[Cur + 1];\r
-\r
- if ((TotalLen - Cur) < Len || Len < 2) {\r
- return -1;\r
- }\r
-\r
- Cur = (UINT8) (Cur + Len);\r
- break;\r
+ Cur = (UINT8)(Cur + Len);\r
+ break;\r
}\r
-\r
}\r
\r
return 0;\r