@param Rcvd The option is from the packet we received if TRUE,\r
otherwise the option we wants to transmit.\r
\r
- @return TRUE: The option is properly formated\r
- @return FALSE: The option is mal-formated\r
+ @retval TRUE The option is properly formatted\r
+ @retval FALSE The option is mal-formated\r
\r
**/\r
BOOLEAN\r
Point = Option[Cur + 2];\r
\r
//\r
- // SRR/RR options are formated as |Type|Len|Point|Ip1|Ip2|...\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
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 aligened to 4 bytes.\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\r
+ @param Buf The buffer to copy options to. NULL \r
@param BufLen The length of the buffer\r
\r
@retval EFI_SUCCESS The options are copied over\r
- @retval EFI_BUFFER_TOO_SMALL The buffer caller provided is too small.\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 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
{\r
//\r
// don't copy options that is only valid for the first fragment\r
//\r
- if (FirstFragment || (Type & IP4_OPTION_COPY_MASK)) {\r
+ if (FirstFragment || (Type & IP4_OPTION_COPY_MASK) != 0) {\r
CopyMem (OptBuf + Next, Option + Cur, Len);\r
Next += Len;\r
}\r