REF: https://bugzilla.tianocore.org/show_bug.cgi?id=3737 Apply uncrustify changes to .c/.h files in the MdePkg 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: Liming Gao <gaoliming@byosoft.com.cn>
		
			
				
	
	
		
			317 lines
		
	
	
		
			14 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			317 lines
		
	
	
		
			14 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| /** @file
 | |
|   This file provides a definition of the EFI IPv4 Configuration II
 | |
|   Protocol.
 | |
| 
 | |
| Copyright (c) 2015 - 2018, Intel Corporation. All rights reserved.<BR>
 | |
| SPDX-License-Identifier: BSD-2-Clause-Patent
 | |
| 
 | |
| @par Revision Reference:
 | |
| This Protocol is introduced in UEFI Specification 2.5
 | |
| 
 | |
| **/
 | |
| 
 | |
| #ifndef __EFI_IP4CONFIG2_PROTOCOL_H__
 | |
| #define __EFI_IP4CONFIG2_PROTOCOL_H__
 | |
| 
 | |
| #include <Protocol/Ip4.h>
 | |
| 
 | |
| #define EFI_IP4_CONFIG2_PROTOCOL_GUID \
 | |
|   { \
 | |
|     0x5b446ed1, 0xe30b, 0x4faa, {0x87, 0x1a, 0x36, 0x54, 0xec, 0xa3, 0x60, 0x80 } \
 | |
|   }
 | |
| 
 | |
| typedef struct _EFI_IP4_CONFIG2_PROTOCOL EFI_IP4_CONFIG2_PROTOCOL;
 | |
| 
 | |
| ///
 | |
| /// EFI_IP4_CONFIG2_DATA_TYPE
 | |
| ///
 | |
| typedef enum {
 | |
|   ///
 | |
|   /// The interface information of the communication device this EFI
 | |
|   /// IPv4 Configuration II Protocol instance manages. This type of
 | |
|   /// data is read only. The corresponding Data is of type
 | |
|   /// EFI_IP4_CONFIG2_INTERFACE_INFO.
 | |
|   ///
 | |
|   Ip4Config2DataTypeInterfaceInfo,
 | |
|   ///
 | |
|   /// The general configuration policy for the EFI IPv4 network stack
 | |
|   /// running on the communication device this EFI IPv4
 | |
|   /// Configuration II Protocol instance manages. The policy will
 | |
|   /// affect other configuration settings. The corresponding Data is of
 | |
|   /// type EFI_IP4_CONFIG2_POLICY.
 | |
|   ///
 | |
|   Ip4Config2DataTypePolicy,
 | |
|   ///
 | |
|   /// The station addresses set manually for the EFI IPv4 network
 | |
|   /// stack. It is only configurable when the policy is
 | |
|   /// Ip4Config2PolicyStatic. The corresponding Data is of
 | |
|   /// type EFI_IP4_CONFIG2_MANUAL_ADDRESS. When DataSize
 | |
|   /// is 0 and Data is NULL, the existing configuration is cleared
 | |
|   /// from the EFI IPv4 Configuration II Protocol instance.
 | |
|   ///
 | |
|   Ip4Config2DataTypeManualAddress,
 | |
|   ///
 | |
|   /// The gateway addresses set manually for the EFI IPv4 network
 | |
|   /// stack running on the communication device this EFI IPv4
 | |
|   /// Configuration II Protocol manages. It is not configurable when
 | |
|   /// the policy is Ip4Config2PolicyDhcp. The gateway
 | |
|   /// addresses must be unicast IPv4 addresses. The corresponding
 | |
|   /// Data is a pointer to an array of EFI_IPv4_ADDRESS instances.
 | |
|   /// When DataSize is 0 and Data is NULL, the existing configuration
 | |
|   /// is cleared from the EFI IPv4 Configuration II Protocol instance.
 | |
|   ///
 | |
|   Ip4Config2DataTypeGateway,
 | |
|   ///
 | |
|   /// The DNS server list for the EFI IPv4 network stack running on
 | |
|   /// the communication device this EFI IPv4 Configuration II
 | |
|   /// Protocol manages. It is not configurable when the policy is
 | |
|   /// Ip4Config2PolicyDhcp. The DNS server addresses must be
 | |
|   /// unicast IPv4 addresses. The corresponding Data is a pointer to
 | |
|   /// an array of EFI_IPv4_ADDRESS instances. When DataSize
 | |
|   /// is 0 and Data is NULL, the existing configuration is cleared
 | |
|   /// from the EFI IPv4 Configuration II Protocol instance.
 | |
|   ///
 | |
|   Ip4Config2DataTypeDnsServer,
 | |
|   Ip4Config2DataTypeMaximum
 | |
| } EFI_IP4_CONFIG2_DATA_TYPE;
 | |
| 
 | |
| ///
 | |
| /// EFI_IP4_CONFIG2_INTERFACE_INFO related definitions
 | |
| ///
 | |
| #define EFI_IP4_CONFIG2_INTERFACE_INFO_NAME_SIZE  32
 | |
| 
 | |
| ///
 | |
| /// EFI_IP4_CONFIG2_INTERFACE_INFO
 | |
| ///
 | |
| typedef struct {
 | |
|   ///
 | |
|   /// The name of the interface. It is a NULL-terminated Unicode string.
 | |
|   ///
 | |
|   CHAR16              Name[EFI_IP4_CONFIG2_INTERFACE_INFO_NAME_SIZE];
 | |
|   ///
 | |
|   /// The interface type of the network interface. See RFC 1700,
 | |
|   /// section "Number Hardware Type".
 | |
|   ///
 | |
|   UINT8               IfType;
 | |
|   ///
 | |
|   /// The size, in bytes, of the network interface's hardware address.
 | |
|   ///
 | |
|   UINT32              HwAddressSize;
 | |
|   ///
 | |
|   /// The hardware address for the network interface.
 | |
|   ///
 | |
|   EFI_MAC_ADDRESS     HwAddress;
 | |
|   ///
 | |
|   /// The station IPv4 address of this EFI IPv4 network stack.
 | |
|   ///
 | |
|   EFI_IPv4_ADDRESS    StationAddress;
 | |
|   ///
 | |
|   /// The subnet address mask that is associated with the station address.
 | |
|   ///
 | |
|   EFI_IPv4_ADDRESS    SubnetMask;
 | |
|   ///
 | |
|   /// Size of the following RouteTable, in bytes. May be zero.
 | |
|   ///
 | |
|   UINT32              RouteTableSize;
 | |
|   ///
 | |
|   /// The route table of the IPv4 network stack runs on this interface.
 | |
|   /// Set to NULL if RouteTableSize is zero. Type EFI_IP4_ROUTE_TABLE is defined in
 | |
|   /// EFI_IP4_PROTOCOL.GetModeData().
 | |
|   ///
 | |
|   EFI_IP4_ROUTE_TABLE   *RouteTable     OPTIONAL;
 | |
| } EFI_IP4_CONFIG2_INTERFACE_INFO;
 | |
| 
 | |
| ///
 | |
| /// EFI_IP4_CONFIG2_POLICY
 | |
| ///
 | |
| typedef enum {
 | |
|   ///
 | |
|   /// Under this policy, the Ip4Config2DataTypeManualAddress,
 | |
|   /// Ip4Config2DataTypeGateway and Ip4Config2DataTypeDnsServer configuration
 | |
|   /// data are required to be set manually. The EFI IPv4 Protocol will get all
 | |
|   /// required configuration such as IPv4 address, subnet mask and
 | |
|   /// gateway settings from the EFI IPv4 Configuration II protocol.
 | |
|   ///
 | |
|   Ip4Config2PolicyStatic,
 | |
|   ///
 | |
|   /// Under this policy, the Ip4Config2DataTypeManualAddress,
 | |
|   /// Ip4Config2DataTypeGateway and Ip4Config2DataTypeDnsServer configuration data are
 | |
|   /// not allowed to set via SetData(). All of these configurations are retrieved from DHCP
 | |
|   /// server or other auto-configuration mechanism.
 | |
|   ///
 | |
|   Ip4Config2PolicyDhcp,
 | |
|   Ip4Config2PolicyMax
 | |
| } EFI_IP4_CONFIG2_POLICY;
 | |
| 
 | |
| ///
 | |
| /// EFI_IP4_CONFIG2_MANUAL_ADDRESS
 | |
| ///
 | |
| typedef struct {
 | |
|   ///
 | |
|   /// The IPv4 unicast address.
 | |
|   ///
 | |
|   EFI_IPv4_ADDRESS    Address;
 | |
|   ///
 | |
|   /// The subnet mask.
 | |
|   ///
 | |
|   EFI_IPv4_ADDRESS    SubnetMask;
 | |
| } EFI_IP4_CONFIG2_MANUAL_ADDRESS;
 | |
| 
 | |
| /**
 | |
|   Set the configuration for the EFI IPv4 network stack running on the communication device this EFI
 | |
|   IPv4 Configuration II Protocol instance manages.
 | |
| 
 | |
|   This function is used to set the configuration data of type DataType for the EFI IPv4 network stack
 | |
|   running on the communication device this EFI IPv4 Configuration II Protocol instance manages.
 | |
|   The successfully configured data is valid after system reset or power-off.
 | |
|   The DataSize is used to calculate the count of structure instances in the Data for some
 | |
|   DataType that multiple structure instances are allowed.
 | |
|   This function is always non-blocking. When setting some typeof configuration data, an
 | |
|   asynchronous process is invoked to check the correctness of the data, such as doing address conflict
 | |
|   detection on the manually set local IPv4 address. EFI_NOT_READY is returned immediately to
 | |
|   indicate that such an asynchronous process is invoked and the process is not finished yet. The caller
 | |
|   willing to get the result of the asynchronous process is required to call RegisterDataNotify()
 | |
|   to register an event on the specified configuration data. Once the event is signaled, the caller can call
 | |
|   GetData()to get back the configuration data in order to know the result. For other types of
 | |
|   configuration data that do not require an asynchronous configuration process, the result of the
 | |
|   operation is immediately returned.
 | |
| 
 | |
|   @param[in]   This               Pointer to the EFI_IP4_CONFIG2_PROTOCOL instance.
 | |
|   @param[in]   DataType           The type of data to set.
 | |
|   @param[in]   DataSize           Size of the buffer pointed to by Data in bytes.
 | |
|   @param[in]   Data               The data buffer to set. The type ofthe data buffer is associated
 | |
|                                   with the DataType.
 | |
| 
 | |
|   @retval EFI_SUCCESS             The specified configuration data for the EFI IPv4 network stack is set
 | |
|                                   successfully.
 | |
|   @retval EFI_INVALID_PARAMETER   One or more of the following are TRUE:
 | |
|                                   This is NULL.
 | |
|                                   One or more fields in Data and DataSize do not match the
 | |
|                                   requirement of the data type indicated by DataType.
 | |
|   @retval EFI_WRITE_PROTECTED     The specified configuration data is read-only or the specified configuration
 | |
|                                   data can not be set under the current policy.
 | |
|   @retval EFI_ACCESS_DENIED       Another set operation on the specified configuration data is already in process.
 | |
|   @retval EFI_NOT_READY           An asynchronous process is invoked to set the specified configuration data and
 | |
|                                   the process is not finished yet.
 | |
|   @retval EFI_BAD_BUFFER_SIZE     The DataSize does not match the size of the type indicated by DataType.
 | |
|   @retval EFI_UNSUPPORTED         This DataType is not supported.
 | |
|   @retval EFI_OUT_OF_RESOURCES    Required system resources could not be allocated.
 | |
|   @retval EFI_DEVICE_ERROR        An unexpected system error or network error occurred.
 | |
| **/
 | |
| typedef
 | |
| EFI_STATUS
 | |
| (EFIAPI *EFI_IP4_CONFIG2_SET_DATA)(
 | |
|   IN EFI_IP4_CONFIG2_PROTOCOL   *This,
 | |
|   IN EFI_IP4_CONFIG2_DATA_TYPE  DataType,
 | |
|   IN UINTN                      DataSize,
 | |
|   IN VOID                       *Data
 | |
|   );
 | |
| 
 | |
| /**
 | |
|   Get the configuration data for the EFI IPv4 network stack running on the communication device this
 | |
|   EFI IPv4 Configuration II Protocol instance manages.
 | |
| 
 | |
|   This function returns the configuration data of type DataType for the EFI IPv4 network stack
 | |
|   running on the communication device this EFI IPv4 Configuration II Protocol instance manages.
 | |
|   The caller is responsible for allocating the buffer usedto return the specified configuration data and
 | |
|   the required size will be returned to the caller if the size of the buffer is too small.
 | |
|   EFI_NOT_READY is returned if the specified configuration data is not ready due to an already in
 | |
|   progress asynchronous configuration process. The caller can call RegisterDataNotify() to
 | |
|   register an event on the specified configuration data. Once the asynchronous configuration process is
 | |
|   finished, the event will be signaled and a subsequent GetData() call will return the specified
 | |
|   configuration data.
 | |
| 
 | |
|   @param[in]   This               Pointer to the EFI_IP4_CONFIG2_PROTOCOL instance.
 | |
|   @param[in]   DataType           The type of data to get.
 | |
|   @param[out]  DataSize           On input, in bytes, the size of Data. On output, in bytes, the size
 | |
|                                   of buffer required to store the specified configuration data.
 | |
|   @param[in]   Data               The data buffer in which the configuration data is returned. The
 | |
|                                   type of the data buffer is associated with the DataType. Ignored
 | |
|                                   if DataSize is 0.
 | |
| 
 | |
|   @retval EFI_SUCCESS             The specified configuration data is got successfully.
 | |
|   @retval EFI_INVALID_PARAMETER   One or more of the followings are TRUE:
 | |
|                                   This is NULL.
 | |
|                                   DataSize is NULL.
 | |
|                                   Data is NULL if *DataSizeis not zero.
 | |
|   @retval EFI_BUFFER_TOO_SMALL    The size of Data is too small for the specified configuration data
 | |
|                                   and the required size is returned in DataSize.
 | |
|   @retval EFI_NOT_READY           The specified configuration data is not ready due to an already in
 | |
|                                   progress asynchronous configuration process.
 | |
|   @retval EFI_NOT_FOUND           The specified configuration data is not found.
 | |
| **/
 | |
| typedef
 | |
| EFI_STATUS
 | |
| (EFIAPI *EFI_IP4_CONFIG2_GET_DATA)(
 | |
|   IN EFI_IP4_CONFIG2_PROTOCOL     *This,
 | |
|   IN EFI_IP4_CONFIG2_DATA_TYPE    DataType,
 | |
|   IN OUT UINTN                    *DataSize,
 | |
|   IN VOID                         *Data        OPTIONAL
 | |
|   );
 | |
| 
 | |
| /**
 | |
|   Register an event that is to be signaled whenever a configuration process on the specified
 | |
|   configuration data is done.
 | |
| 
 | |
|   This function registers an event that is to be signaled whenever a configuration process on the
 | |
|   specified configuration data is done. An event can be registered for different DataType
 | |
|   simultaneously and the caller is responsible for determining which type of configuration data causes
 | |
|   the signaling of the event in such case.
 | |
| 
 | |
|   @param[in]   This               Pointer to the EFI_IP4_CONFIG2_PROTOCOL instance.
 | |
|   @param[in]   DataType           The type of data to unregister the event for.
 | |
|   @param[in]   Event              The event to register.
 | |
| 
 | |
|   @retval EFI_SUCCESS             The notification event for the specified configuration data is
 | |
|                                   registered.
 | |
|   @retval EFI_INVALID_PARAMETER   This is NULL or Event is NULL.
 | |
|   @retval EFI_UNSUPPORTED         The configuration data type specified by DataType is not supported.
 | |
|   @retval EFI_OUT_OF_RESOURCES    Required system resources could not be allocated.
 | |
|   @retval EFI_ACCESS_DENIED       The Event is already registered for the DataType.
 | |
| **/
 | |
| typedef
 | |
| EFI_STATUS
 | |
| (EFIAPI *EFI_IP4_CONFIG2_REGISTER_NOTIFY)(
 | |
|   IN EFI_IP4_CONFIG2_PROTOCOL     *This,
 | |
|   IN EFI_IP4_CONFIG2_DATA_TYPE    DataType,
 | |
|   IN EFI_EVENT                    Event
 | |
|   );
 | |
| 
 | |
| /**
 | |
|   Remove a previously registered event for the specified configuration data.
 | |
| 
 | |
|   This function removes a previously registeredevent for the specified configuration data.
 | |
| 
 | |
|   @param[in]   This               Pointer to the EFI_IP4_CONFIG2_PROTOCOL instance.
 | |
|   @param[in]   DataType           The type of data to remove the previously registered event for.
 | |
|   @param[in]   Event              The event to unregister.
 | |
| 
 | |
|   @retval EFI_SUCCESS             The event registered for the specified configuration data is removed.
 | |
|   @retval EFI_INVALID_PARAMETER   This is NULL or Event is NULL.
 | |
|   @retval EFI_NOT_FOUND           The Eventhas not been registered for the specified DataType.
 | |
| **/
 | |
| typedef
 | |
| EFI_STATUS
 | |
| (EFIAPI *EFI_IP4_CONFIG2_UNREGISTER_NOTIFY)(
 | |
|   IN EFI_IP4_CONFIG2_PROTOCOL     *This,
 | |
|   IN EFI_IP4_CONFIG2_DATA_TYPE    DataType,
 | |
|   IN EFI_EVENT                    Event
 | |
|   );
 | |
| 
 | |
| ///
 | |
| /// The EFI_IP4_CONFIG2_PROTOCOL is designed to be the central repository for the common
 | |
| /// configurations and the administrator configurable settings for the EFI IPv4 network stack.
 | |
| /// An EFI IPv4 Configuration II Protocol instance will be installed on each communication device that
 | |
| /// the EFI IPv4 network stack runs on.
 | |
| ///
 | |
| struct _EFI_IP4_CONFIG2_PROTOCOL {
 | |
|   EFI_IP4_CONFIG2_SET_DATA             SetData;
 | |
|   EFI_IP4_CONFIG2_GET_DATA             GetData;
 | |
|   EFI_IP4_CONFIG2_REGISTER_NOTIFY      RegisterDataNotify;
 | |
|   EFI_IP4_CONFIG2_UNREGISTER_NOTIFY    UnregisterDataNotify;
 | |
| };
 | |
| 
 | |
| extern EFI_GUID  gEfiIp4Config2ProtocolGuid;
 | |
| 
 | |
| #endif
 |