]> 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 cae0e885cffae72a5d6fcffd1a4dba9e6fd04a71..9676df015d5fa58bd03d7435c1f8b64efda3bfe9 100644 (file)
-/** @file
-
-Copyright (c) 2005 - 2006, Intel Corporation
-All rights reserved. This program and the accompanying materials
-are licensed and made available under the terms and conditions of the BSD License
-which accompanies this distribution.  The full text of the license may be found at
-http://opensource.org/licenses/bsd-license.php
-
-THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
-WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
-
-Module Name:
-
-  Tcp4Option.h
-
-Abstract:
-
-
-**/
-
-#ifndef _TCP4_OPTION_H_
-#define _TCP4_OPTION_H_
-
-//
-// The structure to store the parse option value.
-// ParseOption only parse the options, don't process them.
-//
-typedef struct s_TCP_OPTION {
-  UINT8   Flag;     // flag such as TCP_OPTION_RCVD_MSS
-  UINT8   WndScale; // the WndScale received
-  UINT16  Mss;      // the Mss received
-  UINT32  TSVal;    // the TSVal field in a timestamp option
-  UINT32  TSEcr;    // the TSEcr field in a timestamp option
-} TCP_OPTION;
-
-enum {
-
-  //
-  // supported TCP option type and their length
-  //
-  TCP_OPTION_EOP            = 0,  // End Of oPtion
-  TCP_OPTION_NOP            = 1,  // No-Option.
-  TCP_OPTION_MSS            = 2,  // Maximum Segment Size
-  TCP_OPTION_WS             = 3,  // Window scale
-  TCP_OPTION_TS             = 8,  // Timestamp
-  TCP_OPTION_MSS_LEN        = 4,  // length of MSS option
-  TCP_OPTION_WS_LEN         = 3,  // length of window scale option
-  TCP_OPTION_TS_LEN         = 10, // length of timestamp option
-  TCP_OPTION_WS_ALIGNED_LEN = 4,  // length of window scale option, aligned
-  TCP_OPTION_TS_ALIGNED_LEN = 12, // length of timestamp option, aligned
-
-  //
-  // recommend format of timestamp window scale
-  // option for fast process.
-  //
-  TCP_OPTION_TS_FAST = ((TCP_OPTION_NOP << 24) |
-                        (TCP_OPTION_NOP << 16) |
-                        (TCP_OPTION_TS << 8) |
-                        TCP_OPTION_TS_LEN),
-
-  TCP_OPTION_WS_FAST = ((TCP_OPTION_NOP << 24) |
-                        (TCP_OPTION_WS << 16) |
-                        (TCP_OPTION_WS_LEN << 8)),
-
-  TCP_OPTION_MSS_FAST = ((TCP_OPTION_MSS << 24) |
-                         (TCP_OPTION_MSS_LEN << 16)),
-
-  //
-  // Other misc definations
-  //
-  TCP_OPTION_MAX_WS         = 14,     // Maxium window scale value
-  TCP_OPTION_MAX_WIN        = 0xffff, // max window size in TCP header
-  TCP_OPTION_RCVD_MSS       = 0x01,
-  TCP_OPTION_RCVD_WS        = 0x02,
-  TCP_OPTION_RCVD_TS        = 0x04
-};
-
-UINT8
-TcpComputeScale (
-  IN TCP_CB *Tcb
-  );
-
-UINT16
-TcpSynBuildOption (
-  IN TCP_CB  *Tcb,
-  IN NET_BUF *Buf
-  );
-
-UINT16
-TcpBuildOption (
-  IN TCP_CB  *Tcb,
-  IN NET_BUF *Buf
-  );
-
-INTN
-TcpParseOption (
-  IN TCP_HEAD   *Tcp,
-  IN TCP_OPTION *Option
-  );
-
-UINT32
-TcpPawsOK (
-  IN TCP_CB *Tcb,
-  IN UINT32 TSVal
-  );
-
-#endif
+/** @file\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<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
+**/\r
+\r
+#ifndef _TCP4_OPTION_H_\r
+#define _TCP4_OPTION_H_\r
+\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
+// 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
+#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
+// Other misc definations\r
+//\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
+  @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 *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 *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 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
+  IN UINT32 TSVal\r
+  );\r
+\r
+#endif\r