4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/** @file
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Functions declaration related with Mtftp for UefiPxeBc Driver.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Copyright (c) 2007 - 2010, Intel Corporation. All rights reserved.<BR>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync This program and the accompanying materials
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync are licensed and made available under the terms and conditions of the BSD License
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync which accompanies this distribution. The full text of the license may be found at
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync http://opensource.org/licenses/bsd-license.php.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync**/
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#ifndef __EFI_PXEBC_MTFTP_H__
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define __EFI_PXEBC_MTFTP_H__
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define PXE_MTFTP_OPTION_BLKSIZE_INDEX 0
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define PXE_MTFTP_OPTION_TIMEOUT_INDEX 1
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define PXE_MTFTP_OPTION_TSIZE_INDEX 2
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define PXE_MTFTP_OPTION_MULTICAST_INDEX 3
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define PXE_MTFTP_OPTION_MAXIMUM_INDEX 4
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define PXE_MTFTP_ERROR_STRING_LENGTH 127 // refer to definition of struct EFI_PXE_BASE_CODE_TFTP_ERROR.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define PXE_MTFTP_DEFAULT_BLOCK_SIZE 512 // refer to rfc-1350.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/**
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync This function is wrapper to get the file size using TFTP.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[in] Private Pointer to PxeBc private data.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[in] Config Pointer to configure data.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[in] Filename Pointer to boot file name.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[in] BlockSize Pointer to required block size.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[in, out] BufferSize Pointer to buffer size.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval EFI_SUCCESS Successfully obtained the size of file.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval EFI_NOT_FOUND Parse the tftp ptions failed.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval EFI_DEVICE_ERROR The network device encountered an error during this operation.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval Others Did not obtain the size of the file.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync**/
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncEFI_STATUS
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncPxeBcTftpGetFileSize (
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN PXEBC_PRIVATE_DATA *Private,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN VOID *Config,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN UINT8 *Filename,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN UINTN *BlockSize,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN OUT UINT64 *BufferSize
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync );
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/**
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync This function is a wrapper to get a file using TFTP.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[in] Private Pointer to PxeBc private data.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[in] Config Pointer to config data.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[in] Filename Pointer to boot file name.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[in] BlockSize Pointer to required block size.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[in] BufferPtr Pointer to buffer.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[in, out] BufferSize Pointer to buffer size.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[in] DontUseBuffer Indicates whether to use a receive buffer.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval EFI_SUCCESS Successfully read the data from the special file.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval EFI_DEVICE_ERROR The network device encountered an error during this operation.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval Others Read data from file failed.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync**/
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncEFI_STATUS
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncPxeBcTftpReadFile (
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN PXEBC_PRIVATE_DATA *Private,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN VOID *Config,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN UINT8 *Filename,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN UINTN *BlockSize,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN UINT8 *BufferPtr,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN OUT UINT64 *BufferSize,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN BOOLEAN DontUseBuffer
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync );
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/**
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync This function is a wrapper to put file with TFTP.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[in] Private Pointer to PxeBc private data.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[in] Config Pointer to config data.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[in] Filename Pointer to boot file name.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[in] Overwrite Indicates whether to use an overwrite attribute.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[in] BlockSize Pointer to required block size.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[in] BufferPtr Pointer to buffer.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[in, out] BufferSize Pointer to buffer size.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval EFI_SUCCESS Successfully wrote the data into the special file.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval EFI_DEVICE_ERROR The network device encountered an error during this operation.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval other Write data into file failed.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync**/
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncEFI_STATUS
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncPxeBcTftpWriteFile (
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN PXEBC_PRIVATE_DATA *Private,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN VOID *Config,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN UINT8 *Filename,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN BOOLEAN Overwrite,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN UINTN *BlockSize,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN UINT8 *BufferPtr,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN OUT UINT64 *BufferSize
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync );
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/**
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync This function is a wrapper to get the data (file) from a directory using TFTP.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[in] Private Pointer to PxeBc private data.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[in] Config Pointer to config data.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[in] Filename Pointer to boot file name.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[in] BlockSize Pointer to required block size.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[in] BufferPtr Pointer to buffer.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[in, out] BufferSize Pointer to buffer size.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[in] DontUseBuffer Indicates whether with a receive buffer.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval EFI_SUCCES Successfully obtained the data from the file included in directory.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval EFI_DEVICE_ERROR The network device encountered an error during this operation.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval Others Operation failed.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync**/
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncEFI_STATUS
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncPxeBcTftpReadDirectory (
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN PXEBC_PRIVATE_DATA *Private,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN VOID *Config,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN UINT8 *Filename,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN UINTN *BlockSize,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN UINT8 *BufferPtr,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN OUT UINT64 *BufferSize,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN BOOLEAN DontUseBuffer
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync );
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#endif