/** @file\r
+ IP4 option support functions.\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
-Module Name:\r
-\r
- Ip4Option.c\r
-\r
-Abstract:\r
-\r
- IP4 option support functions\r
-\r
+Copyright (c) 2005 - 2018, Intel Corporation. All rights reserved.<BR>\r
+SPDX-License-Identifier: BSD-2-Clause-Patent\r
\r
**/\r
\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
+ and will transmit.\r
\r
- @param Option The first byte of the option\r
- @param OptionLen The length of the whole option\r
- @param Rcvd The option is from the packet we received if TRUE,\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
UINT32 Cur;\r
UINT32 Len;\r
UINT32 Point;\r
- volatile UINT8 IcmpType;\r
- volatile UINT8 IcmpCode;\r
- volatile UINT32 IcmpPoint;\r
-\r
- IcmpType = ICMP_PARAMETER_PROBLEM;\r
- IcmpCode = 0;\r
- IcmpPoint = 0;\r
\r
Cur = 0;\r
\r
// SRR/RR options are formatted as |Type|Len|Point|Ip1|Ip2|...\r
//\r
if ((OptionLen - Cur < Len) || (Len < 3) || ((Len - 3) % 4 != 0)) {\r
- IcmpPoint = Cur + 1;\r
return FALSE;\r
}\r
\r
if ((Point > Len + 1) || (Point % 4 != 0)) {\r
- IcmpPoint = Cur + 2;\r
return FALSE;\r
}\r
\r
if ((Option[Cur] != IP4_OPTION_RR) &&\r
((Rcvd && (Point != Len + 1)) || (!Rcvd && (Point != 4)))) {\r
\r
- IcmpType = ICMP_DEST_UNREACHABLE;\r
- IcmpCode = ICMP_SOURCEROUTE_FAILED;\r
return FALSE;\r
}\r
\r
Len = Option[Cur + 1];\r
\r
if ((OptionLen - Cur < Len) || (Len < 2)) {\r
- IcmpPoint = Cur + 1;\r
return FALSE;\r
}\r
\r
fragments.\r
2. Pad the options copied over to aligned to 4 bytes.\r
\r
- @param Option The original option to copy from\r
- @param OptionLen The length of the original option\r
- @param FirstFragment Whether it is the first fragment\r
- @param Buf The buffer to copy options to. NULL \r
- @param BufLen The length of the buffer\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