Home | History | Annotate | Download | only in UefiPxeBcDxe
      1 /** @file
      2   Functions declaration related with Mtftp for UefiPxeBc Driver.
      3 
      4   Copyright (c) 2007 - 2015, Intel Corporation. All rights reserved.<BR>
      5 
      6   This program and the accompanying materials
      7   are licensed and made available under the terms and conditions of the BSD License
      8   which accompanies this distribution.  The full text of the license may be found at
      9   http://opensource.org/licenses/bsd-license.php.
     10 
     11   THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
     12   WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
     13 
     14 **/
     15 
     16 #ifndef __EFI_PXEBC_MTFTP_H__
     17 #define __EFI_PXEBC_MTFTP_H__
     18 
     19 #define PXE_MTFTP_OPTION_BLKSIZE_INDEX     0
     20 #define PXE_MTFTP_OPTION_TIMEOUT_INDEX     1
     21 #define PXE_MTFTP_OPTION_TSIZE_INDEX       2
     22 #define PXE_MTFTP_OPTION_MULTICAST_INDEX   3
     23 #define PXE_MTFTP_OPTION_MAXIMUM_INDEX     4
     24 #define PXE_MTFTP_OPTBUF_MAXNUM_INDEX      128
     25 
     26 #define PXE_MTFTP_ERROR_STRING_LENGTH      127   // refer to definition of struct EFI_PXE_BASE_CODE_TFTP_ERROR.
     27 #define PXE_MTFTP_DEFAULT_BLOCK_SIZE       512   // refer to rfc-1350.
     28 
     29 
     30 /**
     31   This function is wrapper to get the file size using TFTP.
     32 
     33   @param[in]      Private        Pointer to PxeBc private data.
     34   @param[in]      Config         Pointer to configure data.
     35   @param[in]      Filename       Pointer to boot file name.
     36   @param[in]      BlockSize      Pointer to required block size.
     37   @param[in, out] BufferSize     Pointer to buffer size.
     38 
     39   @retval EFI_SUCCESS        Successfully obtained the size of file.
     40   @retval EFI_NOT_FOUND      Parse the tftp ptions failed.
     41   @retval EFI_DEVICE_ERROR   The network device encountered an error during this operation.
     42   @retval Others             Did not obtain the size of the file.
     43 
     44 **/
     45 EFI_STATUS
     46 PxeBcTftpGetFileSize (
     47   IN     PXEBC_PRIVATE_DATA         *Private,
     48   IN     VOID                       *Config,
     49   IN     UINT8                      *Filename,
     50   IN     UINTN                      *BlockSize,
     51   IN OUT UINT64                     *BufferSize
     52   );
     53 
     54 
     55 /**
     56   This function is a wrapper to get a file using TFTP.
     57 
     58   @param[in]      Private        Pointer to PxeBc private data.
     59   @param[in]      Config         Pointer to config data.
     60   @param[in]      Filename       Pointer to boot file name.
     61   @param[in]      BlockSize      Pointer to required block size.
     62   @param[in]      BufferPtr      Pointer to buffer.
     63   @param[in, out] BufferSize     Pointer to buffer size.
     64   @param[in]      DontUseBuffer  Indicates whether to use a receive buffer.
     65 
     66   @retval EFI_SUCCESS        Successfully read the data from the special file.
     67   @retval EFI_DEVICE_ERROR   The network device encountered an error during this operation.
     68   @retval Others             Read data from file failed.
     69 
     70 **/
     71 EFI_STATUS
     72 PxeBcTftpReadFile (
     73   IN     PXEBC_PRIVATE_DATA         *Private,
     74   IN     VOID                       *Config,
     75   IN     UINT8                      *Filename,
     76   IN     UINTN                      *BlockSize,
     77   IN     UINT8                      *BufferPtr,
     78   IN OUT UINT64                     *BufferSize,
     79   IN     BOOLEAN                    DontUseBuffer
     80   );
     81 
     82 
     83 /**
     84   This function is a wrapper to put file with TFTP.
     85 
     86   @param[in]       Private        Pointer to PxeBc private data.
     87   @param[in]       Config         Pointer to config data.
     88   @param[in]       Filename       Pointer to boot file name.
     89   @param[in]       Overwrite      Indicates whether to use an overwrite attribute.
     90   @param[in]       BlockSize      Pointer to required block size.
     91   @param[in]       BufferPtr      Pointer to buffer.
     92   @param[in, out]  BufferSize     Pointer to buffer size.
     93 
     94   @retval EFI_SUCCESS        Successfully wrote the data into the special file.
     95   @retval EFI_DEVICE_ERROR   The network device encountered an error during this operation.
     96   @retval other              Write data into file failed.
     97 
     98 **/
     99 EFI_STATUS
    100 PxeBcTftpWriteFile (
    101   IN     PXEBC_PRIVATE_DATA         *Private,
    102   IN     VOID                       *Config,
    103   IN     UINT8                      *Filename,
    104   IN     BOOLEAN                    Overwrite,
    105   IN     UINTN                      *BlockSize,
    106   IN     UINT8                      *BufferPtr,
    107   IN OUT UINT64                     *BufferSize
    108   );
    109 
    110 
    111 /**
    112   This function is a wrapper to get the data (file) from a directory using TFTP.
    113 
    114   @param[in]       Private        Pointer to PxeBc private data.
    115   @param[in]       Config         Pointer to config data.
    116   @param[in]       Filename       Pointer to boot file name.
    117   @param[in]       BlockSize      Pointer to required block size.
    118   @param[in]       BufferPtr      Pointer to buffer.
    119   @param[in, out]  BufferSize     Pointer to buffer size.
    120   @param[in]       DontUseBuffer  Indicates whether with a receive buffer.
    121 
    122   @retval EFI_SUCCES         Successfully obtained the data from the file included in directory.
    123   @retval EFI_DEVICE_ERROR   The network device encountered an error during this operation.
    124   @retval Others             Operation failed.
    125 
    126 **/
    127 EFI_STATUS
    128 PxeBcTftpReadDirectory (
    129   IN     PXEBC_PRIVATE_DATA            *Private,
    130   IN     VOID                          *Config,
    131   IN     UINT8                         *Filename,
    132   IN     UINTN                         *BlockSize,
    133   IN     UINT8                         *BufferPtr,
    134   IN OUT UINT64                        *BufferSize,
    135   IN     BOOLEAN                       DontUseBuffer
    136   );
    137 #endif
    138