]> git.proxmox.com Git - mirror_edk2.git/blobdiff - MdeModulePkg/Universal/Network/Ip4Dxe/Ip4Option.h
BaseTools:Change the path of the file that Binary Cache
[mirror_edk2.git] / MdeModulePkg / Universal / Network / Ip4Dxe / Ip4Option.h
index 830962ee2479d117f9ed59916c9a6b911084b689..57a5a58725f0e8ed417417f3fb7e2533a1423977 100644 (file)
@@ -1,52 +1,66 @@
 /** @file\r
-\r
-Copyright (c) 2005 - 2006, Intel Corporation\r
-All rights reserved. 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
-\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
-Module Name:\r
-\r
-  Ip4Option.h\r
-\r
-Abstract:\r
-\r
   IP4 option support routines.\r
 \r
+Copyright (c) 2005 - 2018, Intel Corporation. All rights reserved.<BR>\r
+SPDX-License-Identifier: BSD-2-Clause-Patent\r
 \r
 **/\r
 \r
 #ifndef __EFI_IP4_OPTION_H__\r
 #define __EFI_IP4_OPTION_H__\r
 \r
-enum {\r
-  IP4_OPTION_EOP       = 0,\r
-  IP4_OPTION_NOP       = 1,\r
-  IP4_OPTION_LSRR      = 131,  // Loss source and record routing,   10000011\r
-  IP4_OPTION_SSRR      = 137,  // Strict source and record routing, 10001001\r
-  IP4_OPTION_RR        = 7,    // Record routing, 00000111\r
+#define IP4_OPTION_EOP        0\r
+#define IP4_OPTION_NOP        1\r
+#define IP4_OPTION_LSRR       131  // Loss source and record routing,   10000011\r
+#define IP4_OPTION_SSRR       137  // Strict source and record routing, 10001001\r
+#define IP4_OPTION_RR         7    // Record routing, 00000111\r
+\r
+#define IP4_OPTION_COPY_MASK  0x80\r
 \r
-  IP4_OPTION_COPY_MASK = 0x80\r
-};\r
+/**\r
+  Validate the IP4 option format for both the packets we received\r
+  and will transmit. It will compute the ICMP error message fields\r
+  if the option is mal-formated. But this information isn't used.\r
 \r
+  @param[in]  Option            The first byte of the option\r
+  @param[in]  OptionLen         The length of the whole option\r
+  @param[in]  Rcvd              The option is from the packet we received if TRUE,\r
+                                otherwise the option we wants to transmit.\r
+\r
+  @retval TRUE     The option is properly formatted\r
+  @retval FALSE    The option is mal-formated\r
+\r
+**/\r
 BOOLEAN\r
 Ip4OptionIsValid (\r
   IN UINT8                  *Option,\r
-  IN UINT32                 OptLen,\r
+  IN UINT32                 OptionLen,\r
   IN BOOLEAN                Rcvd\r
   );\r
 \r
+/**\r
+  Copy the option from the original option to buffer. It\r
+  handles the details such as:\r
+  1. whether copy the single IP4 option to the first/non-first\r
+     fragments.\r
+  2. Pad the options copied over to aligned to 4 bytes.\r
+\r
+  @param[in]       Option            The original option to copy from\r
+  @param[in]       OptionLen         The length of the original option\r
+  @param[in]       FirstFragment     Whether it is the first fragment\r
+  @param[in, out]  Buf               The buffer to copy options to. NULL\r
+  @param[in, out]  BufLen            The length of the buffer\r
+\r
+  @retval EFI_SUCCESS           The options are copied over\r
+  @retval EFI_BUFFER_TOO_SMALL  Buf is NULL or BufLen provided is too small.\r
+\r
+**/\r
 EFI_STATUS\r
 Ip4CopyOption (\r
-  IN UINT8                  *Option,\r
-  IN UINT32                 OptLen,\r
-  IN BOOLEAN                Fragment,\r
-  IN UINT8                  *Buf,     OPTIONAL\r
+  IN     UINT8              *Option,\r
+  IN     UINT32             OptionLen,\r
+  IN     BOOLEAN            FirstFragment,\r
+  IN OUT UINT8              *Buf,           OPTIONAL\r
   IN OUT UINT32             *BufLen\r
   );\r
 #endif\r