]> git.proxmox.com Git - mirror_edk2.git/blobdiff - MdeModulePkg/Universal/Network/Ip4Dxe/Ip4Option.h
MdeModulePkg: Fix issue about current Ip4Dxe implementation for DHCP DORA process
[mirror_edk2.git] / MdeModulePkg / Universal / Network / Ip4Dxe / Ip4Option.h
index 6af885f25b41aa24f2e5cebe6e3d36c8652ed3d7..f9c65d026d6b34344152060a7fb025fbfc2d5a44 100644 (file)
@@ -1,52 +1,72 @@
-/** @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:
-
-  Ip4Option.h
-
-Abstract:
-
-  IP4 option support routines.
-
-
-**/
-
-#ifndef __EFI_IP4_OPTION_H__
-#define __EFI_IP4_OPTION_H__
-
-enum {
-  IP4_OPTION_EOP       = 0,
-  IP4_OPTION_NOP       = 1,
-  IP4_OPTION_LSRR      = 131,  // Loss source and record routing,   10000011
-  IP4_OPTION_SSRR      = 137,  // Strict source and record routing, 10001001
-  IP4_OPTION_RR        = 7,    // Record routing, 00000111
-
-  IP4_OPTION_COPY_MASK = 0x80,
-};
-
-BOOLEAN
-Ip4OptionIsValid (
-  IN UINT8                  *Option,
-  IN UINT32                 OptLen,
-  IN BOOLEAN                Rcvd
-  );
-
-EFI_STATUS
-Ip4CopyOption (
-  IN UINT8                  *Option,
-  IN UINT32                 OptLen,
-  IN BOOLEAN                Fragment,
-  IN UINT8                  *Buf,     OPTIONAL
-  IN OUT UINT32             *BufLen
-  );
-#endif
+/** @file\r
+  IP4 option support routines.\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
+\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 __EFI_IP4_OPTION_H__\r
+#define __EFI_IP4_OPTION_H__\r
+\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
+/**\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                 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             OptionLen,\r
+  IN     BOOLEAN            FirstFragment,\r
+  IN OUT UINT8              *Buf,           OPTIONAL\r
+  IN OUT UINT32             *BufLen\r
+  );\r
+#endif\r