Home | History | Annotate | Download | only in UefiPxeBcDxe
      1 /** @file
      2   Boot functions declaration for UefiPxeBc Driver.
      3 
      4   Copyright (c) 2009 - 2012, 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_BOOT_H__
     17 #define __EFI_PXEBC_BOOT_H__
     18 
     19 #define PXEBC_DISPLAY_MAX_LINE             70
     20 #define PXEBC_DEFAULT_UDP_OVERHEAD_SIZE    8
     21 #define PXEBC_DEFAULT_TFTP_OVERHEAD_SIZE   4
     22 
     23 #define PXEBC_IS_SIZE_OVERFLOWED(x)   ((sizeof (UINTN) < sizeof (UINT64)) && ((x) > 0xFFFFFFFF))
     24 
     25 
     26 /**
     27   Extract the discover information and boot server entry from the
     28   cached packets if unspecified.
     29 
     30   @param[in]      Private      Pointer to PxeBc private data.
     31   @param[in]      Type         The type of bootstrap to perform.
     32   @param[in, out] DiscoverInfo Pointer to EFI_PXE_BASE_CODE_DISCOVER_INFO.
     33   @param[out]     BootEntry    Pointer to PXEBC_BOOT_SVR_ENTRY.
     34   @param[out]     SrvList      Pointer to EFI_PXE_BASE_CODE_SRVLIST.
     35 
     36   @retval EFI_SUCCESS       Successfully extracted the information.
     37   @retval EFI_DEVICE_ERROR  Failed to extract the information.
     38 
     39 **/
     40 EFI_STATUS
     41 PxeBcExtractDiscoverInfo (
     42   IN     PXEBC_PRIVATE_DATA               *Private,
     43   IN     UINT16                           Type,
     44   IN OUT EFI_PXE_BASE_CODE_DISCOVER_INFO  **DiscoverInfo,
     45      OUT PXEBC_BOOT_SVR_ENTRY             **BootEntry,
     46      OUT EFI_PXE_BASE_CODE_SRVLIST        **SrvList
     47   );
     48 
     49 
     50 /**
     51   Build the discover packet and send out for boot.
     52 
     53   @param[in]  Private               Pointer to PxeBc private data.
     54   @param[in]  Type                  PxeBc option boot item type.
     55   @param[in]  Layer                 Pointer to option boot item layer.
     56   @param[in]  UseBis                Use BIS or not.
     57   @param[in]  DestIp                Pointer to the server address.
     58   @param[in]  IpCount               The total count of the server address.
     59   @param[in]  SrvList               Pointer to the server address list.
     60 
     61   @retval     EFI_SUCCESS           Successfully discovered boot file.
     62   @retval     EFI_OUT_OF_RESOURCES  Failed to allocate resources.
     63   @retval     EFI_NOT_FOUND         Can't get the PXE reply packet.
     64   @retval     Others                Failed to discover boot file.
     65 
     66 **/
     67 EFI_STATUS
     68 PxeBcDiscoverBootServer (
     69   IN  PXEBC_PRIVATE_DATA                *Private,
     70   IN  UINT16                            Type,
     71   IN  UINT16                            *Layer,
     72   IN  BOOLEAN                           UseBis,
     73   IN  EFI_IP_ADDRESS                    *DestIp,
     74   IN  UINT16                            IpCount,
     75   IN  EFI_PXE_BASE_CODE_SRVLIST         *SrvList
     76   );
     77 
     78 
     79 /**
     80   Load boot file into user buffer.
     81 
     82   @param[in]      Private           Pointer to PxeBc private data.
     83   @param[in, out] BufferSize        Size of user buffer for input;
     84                                     required buffer size for output.
     85   @param[in]      Buffer            Pointer to user buffer.
     86 
     87   @retval EFI_SUCCESS          Successfully obtained all the boot information.
     88   @retval EFI_BUFFER_TOO_SMALL The buffer size is not enough for boot file.
     89   @retval EFI_ABORTED          User cancelled the current operation.
     90   @retval Others               Failed to parse out the boot information.
     91 
     92 **/
     93 EFI_STATUS
     94 PxeBcLoadBootFile (
     95   IN     PXEBC_PRIVATE_DATA           *Private,
     96   IN OUT UINTN                        *BufferSize,
     97   IN     VOID                         *Buffer         OPTIONAL
     98   );
     99 
    100 #endif
    101