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>
		
			
				
	
	
		
			377 lines
		
	
	
		
			15 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			377 lines
		
	
	
		
			15 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| /** @file
 | |
|   EFI ARP Protocol Definition
 | |
| 
 | |
|   The EFI ARP Service Binding Protocol is used to locate EFI
 | |
|   ARP Protocol drivers to create and destroy child of the
 | |
|   driver to communicate with other host using ARP protocol.
 | |
|   The EFI ARP Protocol provides services to map IP network
 | |
|   address to hardware address used by a data link protocol.
 | |
| 
 | |
| Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.<BR>
 | |
| SPDX-License-Identifier: BSD-2-Clause-Patent
 | |
| 
 | |
|   @par Revision Reference:
 | |
|   This Protocol was introduced in UEFI Specification 2.0.
 | |
| 
 | |
| **/
 | |
| 
 | |
| #ifndef __EFI_ARP_PROTOCOL_H__
 | |
| #define __EFI_ARP_PROTOCOL_H__
 | |
| 
 | |
| #define EFI_ARP_SERVICE_BINDING_PROTOCOL_GUID \
 | |
|   { \
 | |
|     0xf44c00ee, 0x1f2c, 0x4a00, {0xaa, 0x9, 0x1c, 0x9f, 0x3e, 0x8, 0x0, 0xa3 } \
 | |
|   }
 | |
| 
 | |
| #define EFI_ARP_PROTOCOL_GUID \
 | |
|   { \
 | |
|     0xf4b427bb, 0xba21, 0x4f16, {0xbc, 0x4e, 0x43, 0xe4, 0x16, 0xab, 0x61, 0x9c } \
 | |
|   }
 | |
| 
 | |
| typedef struct _EFI_ARP_PROTOCOL EFI_ARP_PROTOCOL;
 | |
| 
 | |
| typedef struct {
 | |
|   ///
 | |
|   /// Length in bytes of this entry.
 | |
|   ///
 | |
|   UINT32     Size;
 | |
| 
 | |
|   ///
 | |
|   /// Set to TRUE if this entry is a "deny" entry.
 | |
|   /// Set to FALSE if this entry is a "normal" entry.
 | |
|   ///
 | |
|   BOOLEAN    DenyFlag;
 | |
| 
 | |
|   ///
 | |
|   /// Set to TRUE if this entry will not time out.
 | |
|   /// Set to FALSE if this entry will time out.
 | |
|   ///
 | |
|   BOOLEAN    StaticFlag;
 | |
| 
 | |
|   ///
 | |
|   /// 16-bit ARP hardware identifier number.
 | |
|   ///
 | |
|   UINT16     HwAddressType;
 | |
| 
 | |
|   ///
 | |
|   /// 16-bit protocol type number.
 | |
|   ///
 | |
|   UINT16     SwAddressType;
 | |
| 
 | |
|   ///
 | |
|   /// The length of the hardware address.
 | |
|   ///
 | |
|   UINT8      HwAddressLength;
 | |
| 
 | |
|   ///
 | |
|   /// The length of the protocol address.
 | |
|   ///
 | |
|   UINT8      SwAddressLength;
 | |
| } EFI_ARP_FIND_DATA;
 | |
| 
 | |
| typedef struct {
 | |
|   ///
 | |
|   /// 16-bit protocol type number in host byte order.
 | |
|   ///
 | |
|   UINT16    SwAddressType;
 | |
| 
 | |
|   ///
 | |
|   /// The length in bytes of the station's protocol address to register.
 | |
|   ///
 | |
|   UINT8     SwAddressLength;
 | |
| 
 | |
|   ///
 | |
|   /// The pointer to the first byte of the protocol address to register. For
 | |
|   /// example, if SwAddressType is 0x0800 (IP), then
 | |
|   /// StationAddress points to the first byte of this station's IP
 | |
|   /// address stored in network byte order.
 | |
|   ///
 | |
|   VOID      *StationAddress;
 | |
| 
 | |
|   ///
 | |
|   /// The timeout value in 100-ns units that is associated with each
 | |
|   /// new dynamic ARP cache entry. If it is set to zero, the value is
 | |
|   /// implementation-specific.
 | |
|   ///
 | |
|   UINT32    EntryTimeOut;
 | |
| 
 | |
|   ///
 | |
|   /// The number of retries before a MAC address is resolved. If it is
 | |
|   /// set to zero, the value is implementation-specific.
 | |
|   ///
 | |
|   UINT32    RetryCount;
 | |
| 
 | |
|   ///
 | |
|   /// The timeout value in 100-ns units that is used to wait for the ARP
 | |
|   /// reply packet or the timeout value between two retries. Set to zero
 | |
|   /// to use implementation-specific value.
 | |
|   ///
 | |
|   UINT32    RetryTimeOut;
 | |
| } EFI_ARP_CONFIG_DATA;
 | |
| 
 | |
| /**
 | |
|   This function is used to assign a station address to the ARP cache for this instance
 | |
|   of the ARP driver.
 | |
| 
 | |
|   Each ARP instance has one station address. The EFI_ARP_PROTOCOL driver will
 | |
|   respond to ARP requests that match this registered station address. A call to
 | |
|   this function with the ConfigData field set to NULL will reset this ARP instance.
 | |
| 
 | |
|   Once a protocol type and station address have been assigned to this ARP instance,
 | |
|   all the following ARP functions will use this information. Attempting to change
 | |
|   the protocol type or station address to a configured ARP instance will result in errors.
 | |
| 
 | |
|   @param  This                   The pointer to the EFI_ARP_PROTOCOL instance.
 | |
|   @param  ConfigData             The pointer to the EFI_ARP_CONFIG_DATA structure.
 | |
| 
 | |
|   @retval EFI_SUCCESS            The new station address was successfully
 | |
|                                  registered.
 | |
|   @retval EFI_INVALID_PARAMETER  One or more of the following conditions is TRUE:
 | |
|                                  * This is NULL.
 | |
|                                  * SwAddressLength is zero when ConfigData is not NULL.
 | |
|                                  * StationAddress is NULL when ConfigData is not NULL.
 | |
|   @retval EFI_ACCESS_DENIED      The SwAddressType, SwAddressLength, or
 | |
|                                  StationAddress is different from the one that is
 | |
|                                  already registered.
 | |
|   @retval EFI_OUT_OF_RESOURCES   Storage for the new StationAddress could not be
 | |
|                                  allocated.
 | |
| 
 | |
| **/
 | |
| typedef
 | |
| EFI_STATUS
 | |
| (EFIAPI *EFI_ARP_CONFIGURE)(
 | |
|   IN EFI_ARP_PROTOCOL       *This,
 | |
|   IN EFI_ARP_CONFIG_DATA    *ConfigData   OPTIONAL
 | |
|   );
 | |
| 
 | |
| /**
 | |
|   This function is used to insert entries into the ARP cache.
 | |
| 
 | |
|   ARP cache entries are typically inserted and updated by network protocol drivers
 | |
|   as network traffic is processed. Most ARP cache entries will time out and be
 | |
|   deleted if the network traffic stops. ARP cache entries that were inserted
 | |
|   by the Add() function may be static (will not time out) or dynamic (will time out).
 | |
|   Default ARP cache timeout values are not covered in most network protocol
 | |
|   specifications (although RFC 1122 comes pretty close) and will only be
 | |
|   discussed in general terms in this specification. The timeout values that are
 | |
|   used in the EFI Sample Implementation should be used only as a guideline.
 | |
|   Final product implementations of the EFI network stack should be tuned for
 | |
|   their expected network environments.
 | |
| 
 | |
|   @param  This                   Pointer to the EFI_ARP_PROTOCOL instance.
 | |
|   @param  DenyFlag               Set to TRUE if this entry is a deny entry. Set to
 | |
|                                  FALSE if this  entry is a normal entry.
 | |
|   @param  TargetSwAddress        Pointer to a protocol address to add (or deny).
 | |
|                                  May be set to NULL if DenyFlag is TRUE.
 | |
|   @param  TargetHwAddress        Pointer to a hardware address to add (or deny).
 | |
|                                  May be set to NULL if DenyFlag is TRUE.
 | |
|   @param  TimeoutValue           Time in 100-ns units that this entry will remain
 | |
|                                  in the ARP cache. A value of zero means that the
 | |
|                                  entry is permanent. A nonzero value will override
 | |
|                                  the one given by Configure() if the entry to be
 | |
|                                  added is a dynamic entry.
 | |
|   @param  Overwrite              If TRUE, the matching cache entry will be
 | |
|                                  overwritten with the supplied parameters. If
 | |
|                                  FALSE, EFI_ACCESS_DENIED is returned if the
 | |
|                                  corresponding cache entry already exists.
 | |
| 
 | |
|   @retval EFI_SUCCESS            The entry has been added or updated.
 | |
|   @retval EFI_INVALID_PARAMETER  One or more of the following conditions is TRUE:
 | |
|                                  * This is NULL.
 | |
|                                  * DenyFlag is FALSE and TargetHwAddress is NULL.
 | |
|                                  * DenyFlag is FALSE and TargetSwAddress is NULL.
 | |
|                                  * TargetHwAddress is NULL and TargetSwAddress is NULL.
 | |
|                                  * Neither TargetSwAddress nor TargetHwAddress are NULL when DenyFlag is
 | |
|                                  TRUE.
 | |
|   @retval EFI_OUT_OF_RESOURCES   The new ARP cache entry could not be allocated.
 | |
|   @retval EFI_ACCESS_DENIED      The ARP cache entry already exists and Overwrite
 | |
|                                  is not true.
 | |
|   @retval EFI_NOT_STARTED        The ARP driver instance has not been configured.
 | |
| 
 | |
| **/
 | |
| typedef
 | |
| EFI_STATUS
 | |
| (EFIAPI *EFI_ARP_ADD)(
 | |
|   IN EFI_ARP_PROTOCOL       *This,
 | |
|   IN BOOLEAN                DenyFlag,
 | |
|   IN VOID                   *TargetSwAddress  OPTIONAL,
 | |
|   IN VOID                   *TargetHwAddress  OPTIONAL,
 | |
|   IN UINT32                 TimeoutValue,
 | |
|   IN BOOLEAN                Overwrite
 | |
|   );
 | |
| 
 | |
| /**
 | |
|   This function searches the ARP cache for matching entries and allocates a buffer into
 | |
|   which those entries are copied.
 | |
| 
 | |
|   The first part of the allocated buffer is EFI_ARP_FIND_DATA, following which
 | |
|   are protocol address pairs and hardware address pairs.
 | |
|   When finding a specific protocol address (BySwAddress is TRUE and AddressBuffer
 | |
|   is not NULL), the ARP cache timeout for the found entry is reset if Refresh is
 | |
|   set to TRUE. If the found ARP cache entry is a permanent entry, it is not
 | |
|   affected by Refresh.
 | |
| 
 | |
|   @param  This                   The pointer to the EFI_ARP_PROTOCOL instance.
 | |
|   @param  BySwAddress            Set to TRUE to look for matching software protocol
 | |
|                                  addresses. Set to FALSE to look for matching
 | |
|                                  hardware protocol addresses.
 | |
|   @param  AddressBuffer          The pointer to the address buffer. Set to NULL
 | |
|                                  to match all addresses.
 | |
|   @param  EntryLength            The size of an entry in the entries buffer.
 | |
|   @param  EntryCount             The number of ARP cache entries that are found by
 | |
|                                  the specified criteria.
 | |
|   @param  Entries                The pointer to the buffer that will receive the ARP
 | |
|                                  cache entries.
 | |
|   @param  Refresh                Set to TRUE to refresh the timeout value of the
 | |
|                                  matching ARP cache entry.
 | |
| 
 | |
|   @retval EFI_SUCCESS            The requested ARP cache entries were copied into
 | |
|                                  the buffer.
 | |
|   @retval EFI_INVALID_PARAMETER  One or more of the following conditions is TRUE:
 | |
|                                  This is NULL. Both EntryCount and EntryLength are
 | |
|                                  NULL, when Refresh is FALSE.
 | |
|   @retval EFI_NOT_FOUND          No matching entries were found.
 | |
|   @retval EFI_NOT_STARTED        The ARP driver instance has not been configured.
 | |
| 
 | |
| **/
 | |
| typedef
 | |
| EFI_STATUS
 | |
| (EFIAPI *EFI_ARP_FIND)(
 | |
|   IN EFI_ARP_PROTOCOL       *This,
 | |
|   IN BOOLEAN                BySwAddress,
 | |
|   IN VOID                   *AddressBuffer    OPTIONAL,
 | |
|   OUT UINT32                *EntryLength      OPTIONAL,
 | |
|   OUT UINT32                *EntryCount       OPTIONAL,
 | |
|   OUT EFI_ARP_FIND_DATA     **Entries         OPTIONAL,
 | |
|   IN BOOLEAN                Refresh
 | |
|   );
 | |
| 
 | |
| /**
 | |
|   This function removes specified ARP cache entries.
 | |
| 
 | |
|   @param  This                   The pointer to the EFI_ARP_PROTOCOL instance.
 | |
|   @param  BySwAddress            Set to TRUE to delete matching protocol addresses.
 | |
|                                  Set to FALSE to delete matching hardware
 | |
|                                  addresses.
 | |
|   @param  AddressBuffer          The pointer to the address buffer that is used as a
 | |
|                                  key to look for the cache entry. Set to NULL to
 | |
|                                  delete all entries.
 | |
| 
 | |
|   @retval EFI_SUCCESS            The entry was removed from the ARP cache.
 | |
|   @retval EFI_INVALID_PARAMETER  This is NULL.
 | |
|   @retval EFI_NOT_FOUND          The specified deletion key was not found.
 | |
|   @retval EFI_NOT_STARTED        The ARP driver instance has not been configured.
 | |
| 
 | |
| **/
 | |
| typedef
 | |
| EFI_STATUS
 | |
| (EFIAPI *EFI_ARP_DELETE)(
 | |
|   IN EFI_ARP_PROTOCOL       *This,
 | |
|   IN BOOLEAN                BySwAddress,
 | |
|   IN VOID                   *AddressBuffer   OPTIONAL
 | |
|   );
 | |
| 
 | |
| /**
 | |
|   This function delete all dynamic entries from the ARP cache that match the specified
 | |
|   software protocol type.
 | |
| 
 | |
|   @param  This                   The pointer to the EFI_ARP_PROTOCOL instance.
 | |
| 
 | |
|   @retval EFI_SUCCESS            The cache has been flushed.
 | |
|   @retval EFI_INVALID_PARAMETER  This is NULL.
 | |
|   @retval EFI_NOT_FOUND          There are no matching dynamic cache entries.
 | |
|   @retval EFI_NOT_STARTED        The ARP driver instance has not been configured.
 | |
| 
 | |
| **/
 | |
| typedef
 | |
| EFI_STATUS
 | |
| (EFIAPI *EFI_ARP_FLUSH)(
 | |
|   IN EFI_ARP_PROTOCOL       *This
 | |
|   );
 | |
| 
 | |
| /**
 | |
|   This function tries to resolve the TargetSwAddress and optionally returns a
 | |
|   TargetHwAddress if it already exists in the ARP cache.
 | |
| 
 | |
|   @param  This                   The pointer to the EFI_ARP_PROTOCOL instance.
 | |
|   @param  TargetSwAddress        The pointer to the protocol address to resolve.
 | |
|   @param  ResolvedEvent          The pointer to the event that will be signaled when
 | |
|                                  the address is resolved or some error occurs.
 | |
|   @param  TargetHwAddress        The pointer to the buffer for the resolved hardware
 | |
|                                  address in network byte order.
 | |
| 
 | |
|   @retval EFI_SUCCESS            The data is copied from the ARP cache into the
 | |
|                                  TargetHwAddress buffer.
 | |
|   @retval EFI_INVALID_PARAMETER  One or more of the following conditions is TRUE:
 | |
|                                  This is NULL. TargetHwAddress is NULL.
 | |
|   @retval EFI_ACCESS_DENIED      The requested address is not present in the normal
 | |
|                                  ARP cache but is present in the deny address list.
 | |
|                                  Outgoing traffic to that address is forbidden.
 | |
|   @retval EFI_NOT_STARTED        The ARP driver instance has not been configured.
 | |
|   @retval EFI_NOT_READY          The request has been started and is not finished.
 | |
| 
 | |
| **/
 | |
| typedef
 | |
| EFI_STATUS
 | |
| (EFIAPI *EFI_ARP_REQUEST)(
 | |
|   IN EFI_ARP_PROTOCOL       *This,
 | |
|   IN VOID                   *TargetSwAddress  OPTIONAL,
 | |
|   IN EFI_EVENT              ResolvedEvent     OPTIONAL,
 | |
|   OUT VOID                  *TargetHwAddress
 | |
|   );
 | |
| 
 | |
| /**
 | |
|   This function aborts the previous ARP request (identified by This, TargetSwAddress
 | |
|   and ResolvedEvent) that is issued by EFI_ARP_PROTOCOL.Request().
 | |
| 
 | |
|   If the request is in the internal ARP request queue, the request is aborted
 | |
|   immediately and its ResolvedEvent is signaled. Only an asynchronous address
 | |
|   request needs to be canceled. If TargeSwAddress and ResolveEvent are both
 | |
|   NULL, all the pending asynchronous requests that have been issued by This
 | |
|   instance will be cancelled and their corresponding events will be signaled.
 | |
| 
 | |
|   @param  This                   The pointer to the EFI_ARP_PROTOCOL instance.
 | |
|   @param  TargetSwAddress        The pointer to the protocol address in previous
 | |
|                                  request session.
 | |
|   @param  ResolvedEvent          Pointer to the event that is used as the
 | |
|                                  notification event in previous request session.
 | |
| 
 | |
|   @retval EFI_SUCCESS            The pending request session(s) is/are aborted and
 | |
|                                  corresponding event(s) is/are signaled.
 | |
|   @retval EFI_INVALID_PARAMETER  One or more of the following conditions is TRUE:
 | |
|                                  This is NULL. TargetSwAddress is not NULL and
 | |
|                                  ResolvedEvent is NULL. TargetSwAddress is NULL and
 | |
|                                  ResolvedEvent is not NULL.
 | |
|   @retval EFI_NOT_STARTED        The ARP driver instance has not been configured.
 | |
|   @retval EFI_NOT_FOUND          The request is not issued by
 | |
|                                  EFI_ARP_PROTOCOL.Request().
 | |
| 
 | |
| 
 | |
| **/
 | |
| typedef
 | |
| EFI_STATUS
 | |
| (EFIAPI *EFI_ARP_CANCEL)(
 | |
|   IN EFI_ARP_PROTOCOL       *This,
 | |
|   IN VOID                   *TargetSwAddress  OPTIONAL,
 | |
|   IN EFI_EVENT              ResolvedEvent     OPTIONAL
 | |
|   );
 | |
| 
 | |
| ///
 | |
| /// ARP is used to resolve local network protocol addresses into
 | |
| /// network hardware addresses.
 | |
| ///
 | |
| struct _EFI_ARP_PROTOCOL {
 | |
|   EFI_ARP_CONFIGURE    Configure;
 | |
|   EFI_ARP_ADD          Add;
 | |
|   EFI_ARP_FIND         Find;
 | |
|   EFI_ARP_DELETE       Delete;
 | |
|   EFI_ARP_FLUSH        Flush;
 | |
|   EFI_ARP_REQUEST      Request;
 | |
|   EFI_ARP_CANCEL       Cancel;
 | |
| };
 | |
| 
 | |
| extern EFI_GUID  gEfiArpServiceBindingProtocolGuid;
 | |
| extern EFI_GUID  gEfiArpProtocolGuid;
 | |
| 
 | |
| #endif
 |