123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110 |
- /** @file
- Routines to process MTFTP4 options.
- Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.<BR>
- SPDX-License-Identifier: BSD-2-Clause-Patent
- **/
- #ifndef __EFI_MTFTP4_OPTION_H__
- #define __EFI_MTFTP4_OPTION_H__
- #define MTFTP4_SUPPORTED_OPTIONS 5
- #define MTFTP4_OPCODE_LEN 2
- #define MTFTP4_ERRCODE_LEN 2
- #define MTFTP4_BLKNO_LEN 2
- #define MTFTP4_DATA_HEAD_LEN 4
- #define MTFTP4_BLKSIZE_EXIST 0x01
- #define MTFTP4_TIMEOUT_EXIST 0x02
- #define MTFTP4_TSIZE_EXIST 0x04
- #define MTFTP4_MCAST_EXIST 0x08
- #define MTFTP4_WINDOWSIZE_EXIST 0x10
- typedef struct {
- UINT16 BlkSize;
- UINT16 WindowSize;
- UINT8 Timeout;
- UINT32 Tsize;
- IP4_ADDR McastIp;
- UINT16 McastPort;
- BOOLEAN Master;
- UINT32 Exist;
- } MTFTP4_OPTION;
- /**
- Allocate and fill in a array of Mtftp options from the Packet.
- It first calls Mtftp4FillOption to get the option number, then allocate
- the array, at last, call Mtftp4FillOption again to save the options.
- @param Packet The packet to parse
- @param PacketLen The length of the packet
- @param OptionCount The number of options in the packet
- @param OptionList The point to get the option array.
- @retval EFI_INVALID_PARAMETER The parametera are invalid or packet isn't a
- well-formatted OACK packet.
- @retval EFI_SUCCESS The option array is build
- @retval EFI_OUT_OF_RESOURCES Failed to allocate memory for the array
- **/
- EFI_STATUS
- Mtftp4ExtractOptions (
- IN EFI_MTFTP4_PACKET *Packet,
- IN UINT32 PacketLen,
- OUT UINT32 *OptionCount,
- OUT EFI_MTFTP4_OPTION **OptionList OPTIONAL
- );
- /**
- Parse the option in Options array to MTFTP4_OPTION which program
- can access directly.
- @param Options The option array, which contains addresses of each
- option's name/value string.
- @param Count The number of options in the Options
- @param Request Whether this is a request or OACK. The format of
- multicast is different according to this setting.
- @param Operation The current performed operation.
- @param MtftpOption The MTFTP4_OPTION for easy access.
- @retval EFI_INVALID_PARAMETER The option is malformatted
- @retval EFI_UNSUPPORTED Some option isn't supported
- @retval EFI_SUCCESS The option are OK and has been parsed.
- **/
- EFI_STATUS
- Mtftp4ParseOption (
- IN EFI_MTFTP4_OPTION *Options,
- IN UINT32 Count,
- IN BOOLEAN Request,
- IN UINT16 Operation,
- OUT MTFTP4_OPTION *MtftpOption
- );
- /**
- Parse the options in the OACK packet to MTFTP4_OPTION which program
- can access directly.
- @param Packet The OACK packet to parse
- @param PacketLen The length of the packet
- @param Operation The current performed operation.
- @param MtftpOption The MTFTP_OPTION for easy access.
- @retval EFI_INVALID_PARAMETER The packet option is malformatted
- @retval EFI_UNSUPPORTED Some option isn't supported
- @retval EFI_SUCCESS The option are OK and has been parsed.
- **/
- EFI_STATUS
- Mtftp4ParseOptionOack (
- IN EFI_MTFTP4_PACKET *Packet,
- IN UINT32 PacketLen,
- IN UINT16 Operation,
- OUT MTFTP4_OPTION *MtftpOption
- );
- extern CHAR8 *mMtftp4SupportedOptions[MTFTP4_SUPPORTED_OPTIONS];
- #endif
|