IP4_OPTION_COPY_MASK = 0x80\r
} IP4_OPTION_ENUM_TYPES;\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 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
+ 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 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
+\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