]> git.proxmox.com Git - mirror_edk2.git/blobdiff - MdeModulePkg/Universal/Network/Tcp4Dxe/Tcp4Option.c
BaseTools/tools_def ARM: use softfloat target for CLANG3x
[mirror_edk2.git] / MdeModulePkg / Universal / Network / Tcp4Dxe / Tcp4Option.c
index 7326067532a66996af3144e48ea6717dc18ba2cf..e84310f6c6936ae79893a8a2a0d0cac79f4f8d17 100644 (file)
@@ -1,78 +1,79 @@
 /** @file\r
+  Routines to process TCP option.\r
 \r
-Copyright (c) 2005 - 2006, Intel Corporation\r
-All rights reserved. This program and the accompanying materials\r
+Copyright (c) 2005 - 2018, Intel Corporation. All rights reserved.<BR>\r
+This program and the accompanying materials\r
 are licensed and made available under the terms and conditions of the BSD License\r
 which accompanies this distribution.  The full text of the license may be found at\r
-http://opensource.org/licenses/bsd-license.php\r
+http://opensource.org/licenses/bsd-license.php<BR>\r
 \r
 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
 \r
-Module Name:\r
+**/\r
 \r
-  Tcp4Option.c\r
+#include "Tcp4Main.h"\r
 \r
-Abstract:\r
+/**\r
+    Get a UINT16 value from buffer.\r
 \r
-  Routines to process TCP option.\r
+    @param Buf                  Pointer to input buffer.\r
 \r
+    @return                     The UINT16 value get from buffer.\r
 \r
 **/\r
-\r
-#include "Tcp4Main.h"\r
-\r
-STATIC\r
 UINT16\r
 TcpGetUint16 (\r
   IN UINT8 *Buf\r
   )\r
 {\r
   UINT16  Value;\r
-  NetCopyMem (&Value, Buf, sizeof (UINT16));\r
+  CopyMem (&Value, Buf, sizeof (UINT16));\r
   return NTOHS (Value);\r
 }\r
 \r
-VOID\r
-TcpPutUint16 (\r
-  IN UINT8  *Buf,\r
-  IN UINT16 Data\r
-  )\r
-{\r
-  Data = HTONS (Data);\r
-  NetCopyMem (Buf, &Data, sizeof (UINT16));\r
-}\r
+/**\r
+    Get a UINT32 value from buffer.\r
+\r
+    @param Buf                  Pointer to input buffer.\r
+\r
+    @return                     The UINT32 value get from buffer.\r
 \r
-STATIC\r
+**/\r
 UINT32\r
 TcpGetUint32 (\r
   IN UINT8 *Buf\r
   )\r
 {\r
   UINT32  Value;\r
-  NetCopyMem (&Value, Buf, sizeof (UINT32));\r
+  CopyMem (&Value, Buf, sizeof (UINT32));\r
   return NTOHL (Value);\r
 }\r
 \r
-STATIC\r
+/**\r
+    Put a UINT32 value in buffer.\r
+\r
+    @param Buf                  Pointer to the buffer.\r
+    @param Data                 The UINT32 Date to put in buffer\r
+\r
+**/\r
 VOID\r
 TcpPutUint32 (\r
-  IN UINT8  *Buf,\r
-  IN UINT32 Data\r
+     OUT UINT8  *Buf,\r
+  IN     UINT32 Data\r
   )\r
 {\r
   Data = HTONL (Data);\r
-  NetCopyMem (Buf, &Data, sizeof (UINT32));\r
+  CopyMem (Buf, &Data, sizeof (UINT32));\r
 }\r
 \r
 \r
 /**\r
-  Compute the window scale value according to the given\r
-  buffer size.\r
+  Compute the window scale value according to the given buffer size.\r
 \r
   @param  Tcb     Pointer to the TCP_CB of this TCP instance.\r
 \r
-  @retval UINT8   The scale value.\r
+  @return         The scale value.\r
 \r
 **/\r
 UINT8\r
@@ -83,7 +84,7 @@ TcpComputeScale (
   UINT8   Scale;\r
   UINT32  BufSize;\r
 \r
-  ASSERT (Tcb && Tcb->Sk);\r
+  ASSERT ((Tcb != NULL) && (Tcb->Sk != NULL));\r
 \r
   BufSize = GET_RCV_BUFFSIZE (Tcb->Sk);\r
 \r
@@ -104,7 +105,7 @@ TcpComputeScale (
   @param  Tcb     Pointer to the TCP_CB of this TCP instance.\r
   @param  Nbuf    Pointer to the buffer to store the options.\r
 \r
-  @return The total length of the TCP option field.\r
+  @return         The total length of the TCP option field.\r
 \r
 **/\r
 UINT16\r
@@ -116,7 +117,7 @@ TcpSynBuildOption (
   UINT8   *Data;\r
   UINT16  Len;\r
 \r
-  ASSERT (Tcb && Nbuf && !Nbuf->Tcp);\r
+  ASSERT ((Tcb != NULL) && (Nbuf != NULL) && (Nbuf->Tcp == NULL));\r
 \r
   Len = 0;\r
 \r
@@ -127,7 +128,7 @@ TcpSynBuildOption (
   //\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
+        TCP_FLG_ON (Tcb->CtrlFlag, TCP_CTRL_RCVD_TS))) {\r
 \r
     Data = NetbufAllocSpace (\r
             Nbuf,\r
@@ -135,7 +136,7 @@ TcpSynBuildOption (
             NET_BUF_HEAD\r
             );\r
 \r
-    ASSERT (Data);\r
+    ASSERT (Data != NULL);\r
     Len += TCP_OPTION_TS_ALIGNED_LEN;\r
 \r
     TcpPutUint32 (Data, TCP_OPTION_TS_FAST);\r
@@ -150,7 +151,7 @@ TcpSynBuildOption (
   //\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
+        TCP_FLG_ON (Tcb->CtrlFlag, TCP_CTRL_RCVD_WS))) {\r
 \r
     Data = NetbufAllocSpace (\r
             Nbuf,\r
@@ -158,7 +159,7 @@ TcpSynBuildOption (
             NET_BUF_HEAD\r
             );\r
 \r
-    ASSERT (Data);\r
+    ASSERT (Data != NULL);\r
 \r
     Len += TCP_OPTION_WS_ALIGNED_LEN;\r
     TcpPutUint32 (Data, TCP_OPTION_WS_FAST | TcpComputeScale (Tcb));\r
@@ -168,7 +169,7 @@ TcpSynBuildOption (
   // Build MSS option\r
   //\r
   Data = NetbufAllocSpace (Nbuf, TCP_OPTION_MSS_LEN, 1);\r
-  ASSERT (Data);\r
+  ASSERT (Data != NULL);\r
 \r
   Len += TCP_OPTION_MSS_LEN;\r
   TcpPutUint32 (Data, TCP_OPTION_MSS_FAST | Tcb->RcvMss);\r
@@ -183,7 +184,7 @@ TcpSynBuildOption (
   @param  Tcb     Pointer to the TCP_CB of this TCP instance.\r
   @param  Nbuf    Pointer to the buffer to store the options.\r
 \r
-  @return The total length of the TCP option field.\r
+  @return         The total length of the TCP option field.\r
 \r
 **/\r
 UINT16\r
@@ -195,7 +196,7 @@ TcpBuildOption (
   UINT8   *Data;\r
   UINT16  Len;\r
 \r
-  ASSERT (Tcb && Nbuf && !Nbuf->Tcp);\r
+  ASSERT ((Tcb != NULL) && (Nbuf != NULL) && (Nbuf->Tcp == NULL));\r
   Len = 0;\r
 \r
   //\r
@@ -210,7 +211,7 @@ TcpBuildOption (
             NET_BUF_HEAD\r
             );\r
 \r
-    ASSERT (Data);\r
+    ASSERT (Data != NULL);\r
     Len += TCP_OPTION_TS_ALIGNED_LEN;\r
 \r
     TcpPutUint32 (Data, TCP_OPTION_TS_FAST);\r
@@ -235,8 +236,8 @@ TcpBuildOption (
 **/\r
 INTN\r
 TcpParseOption (\r
-  IN TCP_HEAD   *Tcp,\r
-  IN TCP_OPTION *Option\r
+  IN     TCP_HEAD   *Tcp,\r
+  IN OUT TCP_OPTION *Option\r
   )\r
 {\r
   UINT8 *Head;\r
@@ -245,11 +246,11 @@ TcpParseOption (
   UINT8 Type;\r
   UINT8 Len;\r
 \r
-  ASSERT (Tcp && Option);\r
+  ASSERT ((Tcp != NULL) && (Option != NULL));\r
 \r
   Option->Flag  = 0;\r
 \r
-  TotalLen      = (Tcp->HeadLen << 2) - sizeof (TCP_HEAD);\r
+  TotalLen      = (UINT8) ((Tcp->HeadLen << 2) - sizeof (TCP_HEAD));\r
   if (TotalLen <= 0) {\r
     return 0;\r
   }\r
@@ -302,7 +303,7 @@ TcpParseOption (
         return -1;\r
       }\r
 \r
-      Option->WndScale = (UINT8) NET_MIN (14, Head[Cur + 2]);\r
+      Option->WndScale = (UINT8) MIN (14, Head[Cur + 2]);\r
       TCP_SET_FLG (Option->Flag, TCP_OPTION_RCVD_WS);\r
 \r
       Cur += TCP_OPTION_WS_LEN;\r
@@ -335,7 +336,7 @@ TcpParseOption (
     default:\r
       Len = Head[Cur + 1];\r
 \r
-      if (TotalLen - Cur < Len || Len < 2) {\r
+      if ((TotalLen - Cur) < Len || Len < 2) {\r
         return -1;\r
       }\r
 \r
@@ -349,31 +350,3 @@ TcpParseOption (
 }\r
 \r
 \r
-/**\r
-  Check the segment against PAWS.\r
-\r
-  @param  Tcb     Pointer to the TCP_CB of this TCP instance.\r
-  @param  TSVal   The timestamp value.\r
-\r
-  @retval 1       The segment passed the PAWS check.\r
-  @retval 0       The segment failed to pass the PAWS check.\r
-\r
-**/\r
-UINT32\r
-TcpPawsOK (\r
-  IN TCP_CB *Tcb,\r
-  IN UINT32 TSVal\r
-  )\r
-{\r
-  //\r
-  // PAWS as defined in RFC1323, buggy...\r
-  //\r
-  if (TCP_TIME_LT (TSVal, Tcb->TsRecent) &&\r
-      TCP_TIME_LT (Tcb->TsRecentAge + TCP_PAWS_24DAY, mTcpTick)) {\r
-\r
-    return 0;\r
-\r
-  }\r
-\r
-  return 1;\r
-}\r