/** @file\r
- Copyright (c) 2006, Intel Corporation \r
+ \r
+ EFI ARP Protocol Definition\r
+ \r
+ The EFI ARP Service Binding Protocol is used to locate EFI\r
+ ARP Protocol drivers to create and destroy child of the\r
+ driver to communicate with other host using ARP protocol.\r
+ \r
+ The EFI ARP Protocol provides services to map IP network\r
+ address to hardware address used by a data link protocol.\r
+ \r
+ Copyright (c) 2006 - 2008, Intel Corporation \r
All rights reserved. This program and the accompanying materials \r
are licensed and made available under the terms and conditions of the BSD License \r
which accompanies this distribution. The full text of the license may be found at \r
THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, \r
WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. \r
\r
- Module Name: Arp.h\r
- \r
**/\r
\r
#ifndef __EFI_ARP_PROTOCOL_H__\r
typedef struct _EFI_ARP_PROTOCOL EFI_ARP_PROTOCOL;\r
\r
typedef struct {\r
-UINT32 Size;\r
-BOOLEAN DenyFlag;\r
-BOOLEAN StaticFlag;\r
-UINT16 HwAddressType;\r
-UINT16 SwAddressType;\r
-UINT8 HwAddressLength;\r
-UINT8 SwAddressLength;\r
+ UINT32 Size;\r
+ BOOLEAN DenyFlag;\r
+ BOOLEAN StaticFlag;\r
+ UINT16 HwAddressType;\r
+ UINT16 SwAddressType;\r
+ UINT8 HwAddressLength;\r
+ UINT8 SwAddressLength;\r
} EFI_ARP_FIND_DATA;\r
\r
typedef struct {\r
- UINT16 SwAddressType; // Host byte order\r
+ UINT16 SwAddressType; ///< Host byte order\r
UINT8 SwAddressLength;\r
- VOID *StationAddress; // Network byte order\r
+ VOID *StationAddress; ///< Network byte order\r
UINT32 EntryTimeOut;\r
UINT32 RetryCount;\r
UINT32 RetryTimeOut;\r
/**\r
Assigns a station address (protocol type and network address) to this instance of the ARP cache.\r
\r
- @param This A pointer to the EFI_ARP_PROTOCOL instance.\r
- @param ConfigData A pointer to the EFI_ARP_CONFIG_DATA structure.Buffer\r
+ @param This A pointer to the EFI_ARP_PROTOCOL instance.\r
+ @param ConfigData A pointer to the EFI_ARP_CONFIG_DATA structure.Buffer\r
\r
@retval EFI_SUCCESS The new station address was successfully registered.\r
@retval EFI_INVALID_PARAMETER One or more of the following conditions is TRUE:\r
**/\r
typedef \r
EFI_STATUS\r
-(EFIAPI *EFI_ARP_CONFIGURE) (\r
+(EFIAPI *EFI_ARP_CONFIGURE)(\r
IN EFI_ARP_PROTOCOL *This,\r
IN EFI_ARP_CONFIG_DATA *ConfigData OPTIONAL\r
- )\r
-; \r
+ ); \r
\r
/**\r
Inserts an entry to the ARP cache.\r
nonzero value will override the one given by Configure() if\r
the entry to be added is dynamic entry.\r
@param Overwrite If TRUE, the matching cache entry will be overwritten with the\r
- supplied parameters. If FALSE, EFI_ACCESS_DENIED\r
+ supplied parameters. If FALSE, EFI_ACCESS_DENIED is returned \r
+ if the corresponding cache entry already exists.\r
\r
@retval EFI_SUCCESS The entry has been added or updated.\r
@retval EFI_INVALID_PARAMETER One or more of the following conditions is TRUE:\r
+ This is NULL. DenyFlag is FALSE and TargetHwAddress is NULL.\r
+ DenyFlag is FALSE and TargetSwAddress is NULL. TargetHwAddress is NULL and TargetSwAddress is NULL. \r
+ Both TargetSwAddress and TargetHwAddress are not NULL when DenyFlag is TRUE.\r
@retval EFI_OUT_OF_RESOURCES The new ARP cache entry could not be allocated.\r
@retval EFI_ACCESS_DENIED The ARP cache entry already exists and Overwrite is not true.\r
@retval EFI_NOT_STARTED The ARP driver instance has not been configured.\r
**/\r
typedef\r
EFI_STATUS\r
-(EFIAPI *EFI_ARP_ADD) (\r
+(EFIAPI *EFI_ARP_ADD)(\r
IN EFI_ARP_PROTOCOL *This,\r
IN BOOLEAN DenyFlag,\r
IN VOID *TargetSwAddress OPTIONAL,\r
IN VOID *TargetHwAddress OPTIONAL,\r
IN UINT32 TimeoutValue,\r
IN BOOLEAN Overwrite\r
- )\r
-; \r
+ ); \r
\r
/**\r
Locates one or more entries in the ARP cache.\r
\r
@retval EFI_SUCCESS The requested ARP cache entries were copied into the buffer.\r
@retval EFI_INVALID_PARAMETER One or more of the following conditions is TRUE:\r
+ This is NULL. Both EntryCount and EntryLength are NULL, \r
+ when Refresh is FALSE.\r
@retval EFI_NOT_FOUND No matching entries were found.\r
@retval EFI_NOT_STARTED The ARP driver instance has not been configured.\r
\r
**/\r
typedef \r
EFI_STATUS\r
-(EFIAPI *EFI_ARP_FIND) (\r
+(EFIAPI *EFI_ARP_FIND)(\r
IN EFI_ARP_PROTOCOL *This,\r
IN BOOLEAN BySwAddress,\r
IN VOID *AddressBuffer OPTIONAL,\r
OUT UINT32 *EntryCount OPTIONAL,\r
OUT EFI_ARP_FIND_DATA **Entries OPTIONAL,\r
IN BOOLEAN Refresh\r
- )\r
-; \r
+ ); \r
\r
\r
/**\r
**/\r
typedef\r
EFI_STATUS\r
-(EFIAPI *EFI_ARP_DELETE) (\r
+(EFIAPI *EFI_ARP_DELETE)(\r
IN EFI_ARP_PROTOCOL *This,\r
IN BOOLEAN BySwAddress,\r
IN VOID *AddressBuffer OPTIONAL\r
- )\r
-; \r
+ ); \r
\r
/**\r
Removes all dynamic ARP cache entries that were added by this interface.\r
\r
- @param This A pointer to the EFI_ARP_PROTOCOL instance.\r
+ @param This A pointer to the EFI_ARP_PROTOCOL instance.\r
\r
@retval EFI_SUCCESS The cache has been flushed.\r
@retval EFI_INVALID_PARAMETER This is NULL.\r
**/\r
typedef\r
EFI_STATUS\r
-(EFIAPI *EFI_ARP_FLUSH) (\r
+(EFIAPI *EFI_ARP_FLUSH)(\r
IN EFI_ARP_PROTOCOL *This\r
- )\r
-; \r
+ ); \r
\r
/**\r
Starts an ARP request session.\r
**/\r
typedef\r
EFI_STATUS\r
-(EFIAPI *EFI_ARP_REQUEST) (\r
+(EFIAPI *EFI_ARP_REQUEST)(\r
IN EFI_ARP_PROTOCOL *This, \r
IN VOID *TargetSwAddress OPTIONAL,\r
IN EFI_EVENT ResolvedEvent OPTIONAL,\r
OUT VOID *TargetHwAddress \r
- )\r
-; \r
+ ); \r
\r
/**\r
Cancels an ARP request session.\r
**/\r
typedef\r
EFI_STATUS\r
-(EFIAPI *EFI_ARP_CANCEL) (\r
+(EFIAPI *EFI_ARP_CANCEL)(\r
IN EFI_ARP_PROTOCOL *This, \r
IN VOID *TargetSwAddress OPTIONAL,\r
IN EFI_EVENT ResolvedEvent OPTIONAL\r
- )\r
-; \r
+ ); \r
\r
+///\r
+/// ARP is used to resolve local network protocol addresses into \r
+/// network hardware addresses.\r
+///\r
struct _EFI_ARP_PROTOCOL {\r
EFI_ARP_CONFIGURE Configure;\r
EFI_ARP_ADD Add;\r