REF: https://bugzilla.tianocore.org/show_bug.cgi?id=3737 Apply uncrustify changes to .c/.h files in the NetworkPkg package Cc: Andrew Fish <afish@apple.com> Cc: Leif Lindholm <leif@nuviainc.com> Cc: Michael D Kinney <michael.d.kinney@intel.com> Signed-off-by: Michael Kubacki <michael.kubacki@microsoft.com> Reviewed-by: Maciej Rabeda <maciej.rabeda@linux.intel.com>
		
			
				
	
	
		
			259 lines
		
	
	
		
			7.7 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			259 lines
		
	
	
		
			7.7 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| /** @file
 | |
|   Functions declaration related with DHCPv6 for UefiPxeBc Driver.
 | |
| 
 | |
|   Copyright (c) 2009 - 2018, Intel Corporation. All rights reserved.<BR>
 | |
| 
 | |
|   SPDX-License-Identifier: BSD-2-Clause-Patent
 | |
| 
 | |
| **/
 | |
| 
 | |
| #ifndef __EFI_PXEBC_DHCP6_H__
 | |
| #define __EFI_PXEBC_DHCP6_H__
 | |
| 
 | |
| #define PXEBC_DHCP6_OPTION_MAX_NUM     16
 | |
| #define PXEBC_DHCP6_OPTION_MAX_SIZE    312
 | |
| #define PXEBC_DHCP6_PACKET_MAX_SIZE    (sizeof (EFI_PXE_BASE_CODE_PACKET))
 | |
| #define PXEBC_IP6_POLICY_MAX           0xff
 | |
| #define PXEBC_IP6_ROUTE_TABLE_TIMEOUT  10
 | |
| 
 | |
| #define PXEBC_DHCP6_S_PORT  547
 | |
| #define PXEBC_DHCP6_C_PORT  546
 | |
| 
 | |
| #define PXEBC_DHCP6_ENTERPRISE_NUM      343     // TODO: IANA TBD: temporarily using Intel's
 | |
| #define PXEBC_DHCP6_MAX_BOOT_FILE_SIZE  65535   //   It's a limitation of bit length, 65535*512 bytes.
 | |
| 
 | |
| #define PXEBC_DHCP6_IDX_IA_NA            0
 | |
| #define PXEBC_DHCP6_IDX_BOOT_FILE_URL    1
 | |
| #define PXEBC_DHCP6_IDX_BOOT_FILE_PARAM  2
 | |
| #define PXEBC_DHCP6_IDX_VENDOR_CLASS     3
 | |
| #define PXEBC_DHCP6_IDX_DNS_SERVER       4
 | |
| #define PXEBC_DHCP6_IDX_MAX              5
 | |
| 
 | |
| #define PXEBC_DHCP6_BOOT_FILE_URL_PREFIX  "tftp://"
 | |
| #define PXEBC_TFTP_URL_SEPARATOR          '/'
 | |
| #define PXEBC_ADDR_START_DELIMITER        '['
 | |
| #define PXEBC_ADDR_END_DELIMITER          ']'
 | |
| 
 | |
| #define GET_NEXT_DHCP6_OPTION(Opt) \
 | |
|   (EFI_DHCP6_PACKET_OPTION *) ((UINT8 *) (Opt) + \
 | |
|   sizeof (EFI_DHCP6_PACKET_OPTION) + (NTOHS ((Opt)->OpLen)) - 1)
 | |
| 
 | |
| #define GET_DHCP6_OPTION_SIZE(Pkt)  \
 | |
|   ((Pkt)->Length - sizeof (EFI_DHCP6_HEADER))
 | |
| 
 | |
| #define IS_PROXY_OFFER(Type) \
 | |
|   ((Type) == PxeOfferTypeProxyBinl || \
 | |
|    (Type) == PxeOfferTypeProxyPxe10 || \
 | |
|    (Type) == PxeOfferTypeProxyWfm11a)
 | |
| 
 | |
| #pragma pack(1)
 | |
| typedef struct {
 | |
|   UINT16    OpCode[256];
 | |
| } PXEBC_DHCP6_OPTION_ORO;
 | |
| 
 | |
| typedef struct {
 | |
|   UINT8    Type;
 | |
|   UINT8    MajorVer;
 | |
|   UINT8    MinorVer;
 | |
| } PXEBC_DHCP6_OPTION_UNDI;
 | |
| 
 | |
| typedef struct {
 | |
|   UINT16    Type;
 | |
| } PXEBC_DHCP6_OPTION_ARCH;
 | |
| 
 | |
| typedef struct {
 | |
|   UINT8    ClassIdentifier[10];
 | |
|   UINT8    ArchitecturePrefix[5];
 | |
|   UINT8    ArchitectureType[5];
 | |
|   UINT8    Lit3[1];
 | |
|   UINT8    InterfaceName[4];
 | |
|   UINT8    Lit4[1];
 | |
|   UINT8    UndiMajor[3];
 | |
|   UINT8    UndiMinor[3];
 | |
| } PXEBC_CLASS_ID;
 | |
| 
 | |
| typedef struct {
 | |
|   UINT32            Vendor;
 | |
|   UINT16            ClassLen;
 | |
|   PXEBC_CLASS_ID    ClassId;
 | |
| } PXEBC_DHCP6_OPTION_VENDOR_CLASS;
 | |
| 
 | |
| #pragma pack()
 | |
| 
 | |
| typedef union {
 | |
|   PXEBC_DHCP6_OPTION_ORO             *Oro;
 | |
|   PXEBC_DHCP6_OPTION_UNDI            *Undi;
 | |
|   PXEBC_DHCP6_OPTION_ARCH            *Arch;
 | |
|   PXEBC_DHCP6_OPTION_VENDOR_CLASS    *VendorClass;
 | |
| } PXEBC_DHCP6_OPTION_ENTRY;
 | |
| 
 | |
| typedef struct {
 | |
|   LIST_ENTRY                 Link;
 | |
|   EFI_DHCP6_PACKET_OPTION    *Option;
 | |
|   UINT8                      Precedence;
 | |
| } PXEBC_DHCP6_OPTION_NODE;
 | |
| 
 | |
| #define PXEBC_CACHED_DHCP6_PACKET_MAX_SIZE  (OFFSET_OF (EFI_DHCP6_PACKET, Dhcp6) + PXEBC_DHCP6_PACKET_MAX_SIZE)
 | |
| 
 | |
| typedef union {
 | |
|   EFI_DHCP6_PACKET    Offer;
 | |
|   EFI_DHCP6_PACKET    Ack;
 | |
|   UINT8               Buffer[PXEBC_CACHED_DHCP6_PACKET_MAX_SIZE];
 | |
| } PXEBC_DHCP6_PACKET;
 | |
| 
 | |
| typedef struct {
 | |
|   PXEBC_DHCP6_PACKET         Packet;
 | |
|   PXEBC_OFFER_TYPE           OfferType;
 | |
|   EFI_DHCP6_PACKET_OPTION    *OptList[PXEBC_DHCP6_IDX_MAX];
 | |
| } PXEBC_DHCP6_PACKET_CACHE;
 | |
| 
 | |
| /**
 | |
|   Parse the Boot File URL option.
 | |
| 
 | |
|   @param[in]      Private             Pointer to PxeBc private data.
 | |
|   @param[out]     FileName     The pointer to the boot file name.
 | |
|   @param[in, out] SrvAddr      The pointer to the boot server address.
 | |
|   @param[in]      BootFile     The pointer to the boot file URL option data.
 | |
|   @param[in]      Length       Length of the boot file URL option data.
 | |
| 
 | |
|   @retval EFI_ABORTED     User canceled the operation.
 | |
|   @retval EFI_SUCCESS     Selected the boot menu successfully.
 | |
|   @retval EFI_NOT_READY   Read the input key from the keyboard has not finish.
 | |
| 
 | |
| **/
 | |
| EFI_STATUS
 | |
| PxeBcExtractBootFileUrl (
 | |
|   IN PXEBC_PRIVATE_DATA    *Private,
 | |
|   OUT UINT8                **FileName,
 | |
|   IN OUT EFI_IPv6_ADDRESS  *SrvAddr,
 | |
|   IN     CHAR8             *BootFile,
 | |
|   IN     UINT16            Length
 | |
|   );
 | |
| 
 | |
| /**
 | |
|   Parse the Boot File Parameter option.
 | |
| 
 | |
|   @param[in]  BootFilePara      The pointer to the boot file parameter option data.
 | |
|   @param[out] BootFileSize      The pointer to the parsed boot file size.
 | |
| 
 | |
|   @retval EFI_SUCCESS     Successfully obtained the boot file size from parameter option.
 | |
|   @retval EFI_NOT_FOUND   Failed to extract the boot file size from parameter option.
 | |
| 
 | |
| **/
 | |
| EFI_STATUS
 | |
| PxeBcExtractBootFileParam (
 | |
|   IN  CHAR8   *BootFilePara,
 | |
|   OUT UINT16  *BootFileSize
 | |
|   );
 | |
| 
 | |
| /**
 | |
|   Parse the cached DHCPv6 packet, including all the options.
 | |
| 
 | |
|   @param[in]  Cache6           The pointer to a cached DHCPv6 packet.
 | |
| 
 | |
|   @retval     EFI_SUCCESS      Parsed the DHCPv6 packet successfully.
 | |
|   @retval     EFI_DEVICE_ERROR Failed to parse and invalid packet.
 | |
| 
 | |
| **/
 | |
| EFI_STATUS
 | |
| PxeBcParseDhcp6Packet (
 | |
|   IN PXEBC_DHCP6_PACKET_CACHE  *Cache6
 | |
|   );
 | |
| 
 | |
| /**
 | |
|   Register the ready address by Ip6Config protocol.
 | |
| 
 | |
|   @param[in]  Private             The pointer to the PxeBc private data.
 | |
|   @param[in]  Address             The pointer to the ready address.
 | |
| 
 | |
|   @retval     EFI_SUCCESS         Registered the address successfully.
 | |
|   @retval     Others              Failed to register the address.
 | |
| 
 | |
| **/
 | |
| EFI_STATUS
 | |
| PxeBcRegisterIp6Address (
 | |
|   IN PXEBC_PRIVATE_DATA  *Private,
 | |
|   IN EFI_IPv6_ADDRESS    *Address
 | |
|   );
 | |
| 
 | |
| /**
 | |
|   Unregister the address by Ip6Config protocol.
 | |
| 
 | |
|   @param[in]  Private             The pointer to the PxeBc private data.
 | |
| 
 | |
| **/
 | |
| VOID
 | |
| PxeBcUnregisterIp6Address (
 | |
|   IN PXEBC_PRIVATE_DATA  *Private
 | |
|   );
 | |
| 
 | |
| /**
 | |
|   Build and send out the request packet for the bootfile, and parse the reply.
 | |
| 
 | |
|   @param[in]  Private               The pointer to the PxeBc private data.
 | |
|   @param[in]  Type                  PxeBc option boot item type.
 | |
|   @param[in]  Layer                 The pointer to the option boot item layer.
 | |
|   @param[in]  UseBis                Use BIS or not.
 | |
|   @param[in]  DestIp                The pointer to the server address.
 | |
| 
 | |
|   @retval     EFI_SUCCESS           Successfully discovered theboot file.
 | |
|   @retval     EFI_OUT_OF_RESOURCES  Failed to allocate resource.
 | |
|   @retval     EFI_NOT_FOUND         Can't get the PXE reply packet.
 | |
|   @retval     Others                Failed to discover boot file.
 | |
| 
 | |
| **/
 | |
| EFI_STATUS
 | |
| PxeBcDhcp6Discover (
 | |
|   IN  PXEBC_PRIVATE_DATA  *Private,
 | |
|   IN  UINT16              Type,
 | |
|   IN  UINT16              *Layer,
 | |
|   IN  BOOLEAN             UseBis,
 | |
|   IN  EFI_IP_ADDRESS      *DestIp
 | |
|   );
 | |
| 
 | |
| /**
 | |
|   Set the IP6 policy to Automatic.
 | |
| 
 | |
|   @param[in]  Private             The pointer to PXEBC_PRIVATE_DATA.
 | |
| 
 | |
|   @retval     EFI_SUCCESS         Switch the IP policy successfully.
 | |
|   @retval     Others              Unexpected error happened.
 | |
| 
 | |
| **/
 | |
| EFI_STATUS
 | |
| PxeBcSetIp6Policy (
 | |
|   IN PXEBC_PRIVATE_DATA  *Private
 | |
|   );
 | |
| 
 | |
| /**
 | |
|   This function will register the station IP address and flush IP instance to start using the new IP address.
 | |
| 
 | |
|   @param[in]  Private             The pointer to PXEBC_PRIVATE_DATA.
 | |
| 
 | |
|   @retval     EFI_SUCCESS         The new IP address has been configured successfully.
 | |
|   @retval     Others              Failed to configure the address.
 | |
| 
 | |
| **/
 | |
| EFI_STATUS
 | |
| PxeBcSetIp6Address (
 | |
|   IN  PXEBC_PRIVATE_DATA  *Private
 | |
|   );
 | |
| 
 | |
| /**
 | |
|   Start the DHCPv6 S.A.R.R. process to acquire the IPv6 address and other PXE boot information.
 | |
| 
 | |
|   @param[in]  Private           The pointer to the PxeBc private data.
 | |
|   @param[in]  Dhcp6             The pointer to EFI_DHCP6_PROTOCOL.
 | |
| 
 | |
|   @retval EFI_SUCCESS           The S.A.R.R. process successfully finished.
 | |
|   @retval Others                Failed to finish the S.A.R.R. process.
 | |
| 
 | |
| **/
 | |
| EFI_STATUS
 | |
| PxeBcDhcp6Sarr (
 | |
|   IN PXEBC_PRIVATE_DATA  *Private,
 | |
|   IN EFI_DHCP6_PROTOCOL  *Dhcp6
 | |
|   );
 | |
| 
 | |
| #endif
 |