]> git.proxmox.com Git - mirror_edk2.git/blobdiff - MdeModulePkg/Universal/Network/Tcp4Dxe/Tcp4Option.h
MdeModulePkg: Update Api from NetLibDetectMedia to NetLibDetectMediaWaitTimeout.
[mirror_edk2.git] / MdeModulePkg / Universal / Network / Tcp4Dxe / Tcp4Option.h
index faa4ffa587638f4db4bc36bf1eae4f3127f3806f..9676df015d5fa58bd03d7435c1f8b64efda3bfe9 100644 (file)
 /** @file\r
-\r
-Copyright (c) 2005 - 2006, Intel Corporation\r
-All rights reserved. This program and the accompanying materials\r
+  Tcp option's routine header file.\r
+    \r
+Copyright (c) 2005 - 2009, 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.h\r
+#ifndef _TCP4_OPTION_H_\r
+#define _TCP4_OPTION_H_\r
 \r
-Abstract:\r
+///\r
+/// The structure to store the parse option value.\r
+/// ParseOption only parse the options, don't process them.\r
+///\r
+typedef struct _TCP_OPTION {\r
+  UINT8   Flag;     ///< Flag such as TCP_OPTION_RCVD_MSS\r
+  UINT8   WndScale; ///< The WndScale received\r
+  UINT16  Mss;      ///< The Mss received\r
+  UINT32  TSVal;    ///< The TSVal field in a timestamp option\r
+  UINT32  TSEcr;    ///< The TSEcr field in a timestamp option\r
+} TCP_OPTION;\r
 \r
+//\r
+// supported TCP option type and their length\r
+//\r
+#define TCP_OPTION_EOP             0  ///< End Of oPtion\r
+#define TCP_OPTION_NOP             1  ///< No-Option.\r
+#define TCP_OPTION_MSS             2  ///< Maximum Segment Size\r
+#define TCP_OPTION_WS              3  ///< Window scale\r
+#define TCP_OPTION_TS              8  ///< Timestamp\r
+#define TCP_OPTION_MSS_LEN         4  ///< Length of MSS option\r
+#define TCP_OPTION_WS_LEN          3  ///< Length of window scale option\r
+#define TCP_OPTION_TS_LEN          10 ///< Length of timestamp option\r
+#define TCP_OPTION_WS_ALIGNED_LEN  4  ///< Length of window scale option, aligned\r
+#define TCP_OPTION_TS_ALIGNED_LEN  12 ///< Length of timestamp option, aligned\r
 \r
-**/\r
+//\r
+// recommend format of timestamp window scale\r
+// option for fast process.\r
+//\r
+#define TCP_OPTION_TS_FAST ((TCP_OPTION_NOP << 24) | \\r
+                            (TCP_OPTION_NOP << 16) | \\r
+                            (TCP_OPTION_TS << 8)   | \\r
+                            (TCP_OPTION_TS_LEN))\r
 \r
-#ifndef _TCP4_OPTION_H_\r
-#define _TCP4_OPTION_H_\r
+#define TCP_OPTION_WS_FAST   ((TCP_OPTION_NOP << 24) | \\r
+                              (TCP_OPTION_WS << 16)  | \\r
+                              (TCP_OPTION_WS_LEN << 8))\r
+\r
+#define TCP_OPTION_MSS_FAST  ((TCP_OPTION_MSS << 24) | (TCP_OPTION_MSS_LEN << 16))\r
 \r
 //\r
-// The structure to store the parse option value.\r
-// ParseOption only parse the options, don't process them.\r
+// Other misc definations\r
 //\r
-typedef struct s_TCP_OPTION {\r
-  UINT8   Flag;     // flag such as TCP_OPTION_RCVD_MSS\r
-  UINT8   WndScale; // the WndScale received\r
-  UINT16  Mss;      // the Mss received\r
-  UINT32  TSVal;    // the TSVal field in a timestamp option\r
-  UINT32  TSEcr;    // the TSEcr field in a timestamp option\r
-} TCP_OPTION;\r
+#define TCP_OPTION_RCVD_MSS        0x01\r
+#define TCP_OPTION_RCVD_WS         0x02\r
+#define TCP_OPTION_RCVD_TS         0x04\r
+#define TCP_OPTION_MAX_WS          14      ///< Maxium window scale value\r
+#define TCP_OPTION_MAX_WIN         0xffff  ///< Max window size in TCP header\r
+\r
+\r
+/**\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
-typedef enum {\r
-\r
-  //\r
-  // supported TCP option type and their length\r
-  //\r
-  TCP_OPTION_EOP            = 0,  // End Of oPtion\r
-  TCP_OPTION_NOP            = 1,  // No-Option.\r
-  TCP_OPTION_MSS            = 2,  // Maximum Segment Size\r
-  TCP_OPTION_WS             = 3,  // Window scale\r
-  TCP_OPTION_TS             = 8,  // Timestamp\r
-  TCP_OPTION_MSS_LEN        = 4,  // length of MSS option\r
-  TCP_OPTION_WS_LEN         = 3,  // length of window scale option\r
-  TCP_OPTION_TS_LEN         = 10, // length of timestamp option\r
-  TCP_OPTION_WS_ALIGNED_LEN = 4,  // length of window scale option, aligned\r
-  TCP_OPTION_TS_ALIGNED_LEN = 12, // length of timestamp option, aligned\r
-\r
-  //\r
-  // recommend format of timestamp window scale\r
-  // option for fast process.\r
-  //\r
-  TCP_OPTION_TS_FAST = ((TCP_OPTION_NOP << 24) |\r
-                        (TCP_OPTION_NOP << 16) |\r
-                        (TCP_OPTION_TS << 8) |\r
-                        TCP_OPTION_TS_LEN),\r
-\r
-  TCP_OPTION_WS_FAST = ((TCP_OPTION_NOP << 24) |\r
-                        (TCP_OPTION_WS << 16) |\r
-                        (TCP_OPTION_WS_LEN << 8)),\r
-\r
-  TCP_OPTION_MSS_FAST = ((TCP_OPTION_MSS << 24) |\r
-                         (TCP_OPTION_MSS_LEN << 16)),\r
-\r
-  //\r
-  // Other misc definations\r
-  //\r
-  TCP_OPTION_RCVD_MSS       = 0x01,\r
-  TCP_OPTION_RCVD_WS        = 0x02,\r
-  TCP_OPTION_RCVD_TS        = 0x04,\r
-  TCP_OPTION_MAX_WS         = 14,     // Maxium window scale value\r
-  TCP_OPTION_MAX_WIN        = 0xffff  // max window size in TCP header\r
-} TCP_OPTION_TYPE;\r
+  @return  The scale value.\r
 \r
+**/\r
 UINT8\r
 TcpComputeScale (\r
   IN TCP_CB *Tcb\r
   );\r
 \r
+/**\r
+  Build the TCP option in three-way handshake.\r
+\r
+  @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
+\r
+**/\r
 UINT16\r
 TcpSynBuildOption (\r
   IN TCP_CB  *Tcb,\r
-  IN NET_BUF *Buf\r
+  IN NET_BUF *Nbuf\r
   );\r
 \r
+/**\r
+  Build the TCP option in synchronized states.\r
+\r
+  @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
+\r
+**/\r
 UINT16\r
 TcpBuildOption (\r
   IN TCP_CB  *Tcb,\r
-  IN NET_BUF *Buf\r
+  IN NET_BUF *Nbuf\r
   );\r
 \r
+/**\r
+  Parse the supported options.\r
+\r
+  @param  Tcp     Pointer to the TCP_CB of this TCP instance.\r
+  @param  Option  Pointer to the TCP_OPTION used to store the successfully pasrsed\r
+                  options.\r
+\r
+  @retval 0       The options are successfully pasrsed.\r
+  @retval -1      Ilegal option was found.\r
+\r
+**/\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
+/**\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