1*f439973dSWarner Losh /** @file 2*f439973dSWarner Losh EFI ARP Protocol Definition 3*f439973dSWarner Losh 4*f439973dSWarner Losh The EFI ARP Service Binding Protocol is used to locate EFI 5*f439973dSWarner Losh ARP Protocol drivers to create and destroy child of the 6*f439973dSWarner Losh driver to communicate with other host using ARP protocol. 7*f439973dSWarner Losh The EFI ARP Protocol provides services to map IP network 8*f439973dSWarner Losh address to hardware address used by a data link protocol. 9*f439973dSWarner Losh 10*f439973dSWarner Losh Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.<BR> 11*f439973dSWarner Losh SPDX-License-Identifier: BSD-2-Clause-Patent 12*f439973dSWarner Losh 13*f439973dSWarner Losh @par Revision Reference: 14*f439973dSWarner Losh This Protocol was introduced in UEFI Specification 2.0. 15*f439973dSWarner Losh 16*f439973dSWarner Losh **/ 17*f439973dSWarner Losh 18*f439973dSWarner Losh #ifndef __EFI_ARP_PROTOCOL_H__ 19*f439973dSWarner Losh #define __EFI_ARP_PROTOCOL_H__ 20*f439973dSWarner Losh 21*f439973dSWarner Losh #define EFI_ARP_SERVICE_BINDING_PROTOCOL_GUID \ 22*f439973dSWarner Losh { \ 23*f439973dSWarner Losh 0xf44c00ee, 0x1f2c, 0x4a00, {0xaa, 0x9, 0x1c, 0x9f, 0x3e, 0x8, 0x0, 0xa3 } \ 24*f439973dSWarner Losh } 25*f439973dSWarner Losh 26*f439973dSWarner Losh #define EFI_ARP_PROTOCOL_GUID \ 27*f439973dSWarner Losh { \ 28*f439973dSWarner Losh 0xf4b427bb, 0xba21, 0x4f16, {0xbc, 0x4e, 0x43, 0xe4, 0x16, 0xab, 0x61, 0x9c } \ 29*f439973dSWarner Losh } 30*f439973dSWarner Losh 31*f439973dSWarner Losh typedef struct _EFI_ARP_PROTOCOL EFI_ARP_PROTOCOL; 32*f439973dSWarner Losh 33*f439973dSWarner Losh typedef struct { 34*f439973dSWarner Losh /// 35*f439973dSWarner Losh /// Length in bytes of this entry. 36*f439973dSWarner Losh /// 37*f439973dSWarner Losh UINT32 Size; 38*f439973dSWarner Losh 39*f439973dSWarner Losh /// 40*f439973dSWarner Losh /// Set to TRUE if this entry is a "deny" entry. 41*f439973dSWarner Losh /// Set to FALSE if this entry is a "normal" entry. 42*f439973dSWarner Losh /// 43*f439973dSWarner Losh BOOLEAN DenyFlag; 44*f439973dSWarner Losh 45*f439973dSWarner Losh /// 46*f439973dSWarner Losh /// Set to TRUE if this entry will not time out. 47*f439973dSWarner Losh /// Set to FALSE if this entry will time out. 48*f439973dSWarner Losh /// 49*f439973dSWarner Losh BOOLEAN StaticFlag; 50*f439973dSWarner Losh 51*f439973dSWarner Losh /// 52*f439973dSWarner Losh /// 16-bit ARP hardware identifier number. 53*f439973dSWarner Losh /// 54*f439973dSWarner Losh UINT16 HwAddressType; 55*f439973dSWarner Losh 56*f439973dSWarner Losh /// 57*f439973dSWarner Losh /// 16-bit protocol type number. 58*f439973dSWarner Losh /// 59*f439973dSWarner Losh UINT16 SwAddressType; 60*f439973dSWarner Losh 61*f439973dSWarner Losh /// 62*f439973dSWarner Losh /// The length of the hardware address. 63*f439973dSWarner Losh /// 64*f439973dSWarner Losh UINT8 HwAddressLength; 65*f439973dSWarner Losh 66*f439973dSWarner Losh /// 67*f439973dSWarner Losh /// The length of the protocol address. 68*f439973dSWarner Losh /// 69*f439973dSWarner Losh UINT8 SwAddressLength; 70*f439973dSWarner Losh } EFI_ARP_FIND_DATA; 71*f439973dSWarner Losh 72*f439973dSWarner Losh typedef struct { 73*f439973dSWarner Losh /// 74*f439973dSWarner Losh /// 16-bit protocol type number in host byte order. 75*f439973dSWarner Losh /// 76*f439973dSWarner Losh UINT16 SwAddressType; 77*f439973dSWarner Losh 78*f439973dSWarner Losh /// 79*f439973dSWarner Losh /// The length in bytes of the station's protocol address to register. 80*f439973dSWarner Losh /// 81*f439973dSWarner Losh UINT8 SwAddressLength; 82*f439973dSWarner Losh 83*f439973dSWarner Losh /// 84*f439973dSWarner Losh /// The pointer to the first byte of the protocol address to register. For 85*f439973dSWarner Losh /// example, if SwAddressType is 0x0800 (IP), then 86*f439973dSWarner Losh /// StationAddress points to the first byte of this station's IP 87*f439973dSWarner Losh /// address stored in network byte order. 88*f439973dSWarner Losh /// 89*f439973dSWarner Losh VOID *StationAddress; 90*f439973dSWarner Losh 91*f439973dSWarner Losh /// 92*f439973dSWarner Losh /// The timeout value in 100-ns units that is associated with each 93*f439973dSWarner Losh /// new dynamic ARP cache entry. If it is set to zero, the value is 94*f439973dSWarner Losh /// implementation-specific. 95*f439973dSWarner Losh /// 96*f439973dSWarner Losh UINT32 EntryTimeOut; 97*f439973dSWarner Losh 98*f439973dSWarner Losh /// 99*f439973dSWarner Losh /// The number of retries before a MAC address is resolved. If it is 100*f439973dSWarner Losh /// set to zero, the value is implementation-specific. 101*f439973dSWarner Losh /// 102*f439973dSWarner Losh UINT32 RetryCount; 103*f439973dSWarner Losh 104*f439973dSWarner Losh /// 105*f439973dSWarner Losh /// The timeout value in 100-ns units that is used to wait for the ARP 106*f439973dSWarner Losh /// reply packet or the timeout value between two retries. Set to zero 107*f439973dSWarner Losh /// to use implementation-specific value. 108*f439973dSWarner Losh /// 109*f439973dSWarner Losh UINT32 RetryTimeOut; 110*f439973dSWarner Losh } EFI_ARP_CONFIG_DATA; 111*f439973dSWarner Losh 112*f439973dSWarner Losh /** 113*f439973dSWarner Losh This function is used to assign a station address to the ARP cache for this instance 114*f439973dSWarner Losh of the ARP driver. 115*f439973dSWarner Losh 116*f439973dSWarner Losh Each ARP instance has one station address. The EFI_ARP_PROTOCOL driver will 117*f439973dSWarner Losh respond to ARP requests that match this registered station address. A call to 118*f439973dSWarner Losh this function with the ConfigData field set to NULL will reset this ARP instance. 119*f439973dSWarner Losh 120*f439973dSWarner Losh Once a protocol type and station address have been assigned to this ARP instance, 121*f439973dSWarner Losh all the following ARP functions will use this information. Attempting to change 122*f439973dSWarner Losh the protocol type or station address to a configured ARP instance will result in errors. 123*f439973dSWarner Losh 124*f439973dSWarner Losh @param This The pointer to the EFI_ARP_PROTOCOL instance. 125*f439973dSWarner Losh @param ConfigData The pointer to the EFI_ARP_CONFIG_DATA structure. 126*f439973dSWarner Losh 127*f439973dSWarner Losh @retval EFI_SUCCESS The new station address was successfully 128*f439973dSWarner Losh registered. 129*f439973dSWarner Losh @retval EFI_INVALID_PARAMETER One or more of the following conditions is TRUE: 130*f439973dSWarner Losh * This is NULL. 131*f439973dSWarner Losh * SwAddressLength is zero when ConfigData is not NULL. 132*f439973dSWarner Losh * StationAddress is NULL when ConfigData is not NULL. 133*f439973dSWarner Losh @retval EFI_ACCESS_DENIED The SwAddressType, SwAddressLength, or 134*f439973dSWarner Losh StationAddress is different from the one that is 135*f439973dSWarner Losh already registered. 136*f439973dSWarner Losh @retval EFI_OUT_OF_RESOURCES Storage for the new StationAddress could not be 137*f439973dSWarner Losh allocated. 138*f439973dSWarner Losh 139*f439973dSWarner Losh **/ 140*f439973dSWarner Losh typedef 141*f439973dSWarner Losh EFI_STATUS 142*f439973dSWarner Losh (EFIAPI *EFI_ARP_CONFIGURE)( 143*f439973dSWarner Losh IN EFI_ARP_PROTOCOL *This, 144*f439973dSWarner Losh IN EFI_ARP_CONFIG_DATA *ConfigData OPTIONAL 145*f439973dSWarner Losh ); 146*f439973dSWarner Losh 147*f439973dSWarner Losh /** 148*f439973dSWarner Losh This function is used to insert entries into the ARP cache. 149*f439973dSWarner Losh 150*f439973dSWarner Losh ARP cache entries are typically inserted and updated by network protocol drivers 151*f439973dSWarner Losh as network traffic is processed. Most ARP cache entries will time out and be 152*f439973dSWarner Losh deleted if the network traffic stops. ARP cache entries that were inserted 153*f439973dSWarner Losh by the Add() function may be static (will not time out) or dynamic (will time out). 154*f439973dSWarner Losh Default ARP cache timeout values are not covered in most network protocol 155*f439973dSWarner Losh specifications (although RFC 1122 comes pretty close) and will only be 156*f439973dSWarner Losh discussed in general terms in this specification. The timeout values that are 157*f439973dSWarner Losh used in the EFI Sample Implementation should be used only as a guideline. 158*f439973dSWarner Losh Final product implementations of the EFI network stack should be tuned for 159*f439973dSWarner Losh their expected network environments. 160*f439973dSWarner Losh 161*f439973dSWarner Losh @param This Pointer to the EFI_ARP_PROTOCOL instance. 162*f439973dSWarner Losh @param DenyFlag Set to TRUE if this entry is a deny entry. Set to 163*f439973dSWarner Losh FALSE if this entry is a normal entry. 164*f439973dSWarner Losh @param TargetSwAddress Pointer to a protocol address to add (or deny). 165*f439973dSWarner Losh May be set to NULL if DenyFlag is TRUE. 166*f439973dSWarner Losh @param TargetHwAddress Pointer to a hardware address to add (or deny). 167*f439973dSWarner Losh May be set to NULL if DenyFlag is TRUE. 168*f439973dSWarner Losh @param TimeoutValue Time in 100-ns units that this entry will remain 169*f439973dSWarner Losh in the ARP cache. A value of zero means that the 170*f439973dSWarner Losh entry is permanent. A nonzero value will override 171*f439973dSWarner Losh the one given by Configure() if the entry to be 172*f439973dSWarner Losh added is a dynamic entry. 173*f439973dSWarner Losh @param Overwrite If TRUE, the matching cache entry will be 174*f439973dSWarner Losh overwritten with the supplied parameters. If 175*f439973dSWarner Losh FALSE, EFI_ACCESS_DENIED is returned if the 176*f439973dSWarner Losh corresponding cache entry already exists. 177*f439973dSWarner Losh 178*f439973dSWarner Losh @retval EFI_SUCCESS The entry has been added or updated. 179*f439973dSWarner Losh @retval EFI_INVALID_PARAMETER One or more of the following conditions is TRUE: 180*f439973dSWarner Losh * This is NULL. 181*f439973dSWarner Losh * DenyFlag is FALSE and TargetHwAddress is NULL. 182*f439973dSWarner Losh * DenyFlag is FALSE and TargetSwAddress is NULL. 183*f439973dSWarner Losh * TargetHwAddress is NULL and TargetSwAddress is NULL. 184*f439973dSWarner Losh * Neither TargetSwAddress nor TargetHwAddress are NULL when DenyFlag is 185*f439973dSWarner Losh TRUE. 186*f439973dSWarner Losh @retval EFI_OUT_OF_RESOURCES The new ARP cache entry could not be allocated. 187*f439973dSWarner Losh @retval EFI_ACCESS_DENIED The ARP cache entry already exists and Overwrite 188*f439973dSWarner Losh is not true. 189*f439973dSWarner Losh @retval EFI_NOT_STARTED The ARP driver instance has not been configured. 190*f439973dSWarner Losh 191*f439973dSWarner Losh **/ 192*f439973dSWarner Losh typedef 193*f439973dSWarner Losh EFI_STATUS 194*f439973dSWarner Losh (EFIAPI *EFI_ARP_ADD)( 195*f439973dSWarner Losh IN EFI_ARP_PROTOCOL *This, 196*f439973dSWarner Losh IN BOOLEAN DenyFlag, 197*f439973dSWarner Losh IN VOID *TargetSwAddress OPTIONAL, 198*f439973dSWarner Losh IN VOID *TargetHwAddress OPTIONAL, 199*f439973dSWarner Losh IN UINT32 TimeoutValue, 200*f439973dSWarner Losh IN BOOLEAN Overwrite 201*f439973dSWarner Losh ); 202*f439973dSWarner Losh 203*f439973dSWarner Losh /** 204*f439973dSWarner Losh This function searches the ARP cache for matching entries and allocates a buffer into 205*f439973dSWarner Losh which those entries are copied. 206*f439973dSWarner Losh 207*f439973dSWarner Losh The first part of the allocated buffer is EFI_ARP_FIND_DATA, following which 208*f439973dSWarner Losh are protocol address pairs and hardware address pairs. 209*f439973dSWarner Losh When finding a specific protocol address (BySwAddress is TRUE and AddressBuffer 210*f439973dSWarner Losh is not NULL), the ARP cache timeout for the found entry is reset if Refresh is 211*f439973dSWarner Losh set to TRUE. If the found ARP cache entry is a permanent entry, it is not 212*f439973dSWarner Losh affected by Refresh. 213*f439973dSWarner Losh 214*f439973dSWarner Losh @param This The pointer to the EFI_ARP_PROTOCOL instance. 215*f439973dSWarner Losh @param BySwAddress Set to TRUE to look for matching software protocol 216*f439973dSWarner Losh addresses. Set to FALSE to look for matching 217*f439973dSWarner Losh hardware protocol addresses. 218*f439973dSWarner Losh @param AddressBuffer The pointer to the address buffer. Set to NULL 219*f439973dSWarner Losh to match all addresses. 220*f439973dSWarner Losh @param EntryLength The size of an entry in the entries buffer. 221*f439973dSWarner Losh @param EntryCount The number of ARP cache entries that are found by 222*f439973dSWarner Losh the specified criteria. 223*f439973dSWarner Losh @param Entries The pointer to the buffer that will receive the ARP 224*f439973dSWarner Losh cache entries. 225*f439973dSWarner Losh @param Refresh Set to TRUE to refresh the timeout value of the 226*f439973dSWarner Losh matching ARP cache entry. 227*f439973dSWarner Losh 228*f439973dSWarner Losh @retval EFI_SUCCESS The requested ARP cache entries were copied into 229*f439973dSWarner Losh the buffer. 230*f439973dSWarner Losh @retval EFI_INVALID_PARAMETER One or more of the following conditions is TRUE: 231*f439973dSWarner Losh This is NULL. Both EntryCount and EntryLength are 232*f439973dSWarner Losh NULL, when Refresh is FALSE. 233*f439973dSWarner Losh @retval EFI_NOT_FOUND No matching entries were found. 234*f439973dSWarner Losh @retval EFI_NOT_STARTED The ARP driver instance has not been configured. 235*f439973dSWarner Losh 236*f439973dSWarner Losh **/ 237*f439973dSWarner Losh typedef 238*f439973dSWarner Losh EFI_STATUS 239*f439973dSWarner Losh (EFIAPI *EFI_ARP_FIND)( 240*f439973dSWarner Losh IN EFI_ARP_PROTOCOL *This, 241*f439973dSWarner Losh IN BOOLEAN BySwAddress, 242*f439973dSWarner Losh IN VOID *AddressBuffer OPTIONAL, 243*f439973dSWarner Losh OUT UINT32 *EntryLength OPTIONAL, 244*f439973dSWarner Losh OUT UINT32 *EntryCount OPTIONAL, 245*f439973dSWarner Losh OUT EFI_ARP_FIND_DATA **Entries OPTIONAL, 246*f439973dSWarner Losh IN BOOLEAN Refresh 247*f439973dSWarner Losh ); 248*f439973dSWarner Losh 249*f439973dSWarner Losh /** 250*f439973dSWarner Losh This function removes specified ARP cache entries. 251*f439973dSWarner Losh 252*f439973dSWarner Losh @param This The pointer to the EFI_ARP_PROTOCOL instance. 253*f439973dSWarner Losh @param BySwAddress Set to TRUE to delete matching protocol addresses. 254*f439973dSWarner Losh Set to FALSE to delete matching hardware 255*f439973dSWarner Losh addresses. 256*f439973dSWarner Losh @param AddressBuffer The pointer to the address buffer that is used as a 257*f439973dSWarner Losh key to look for the cache entry. Set to NULL to 258*f439973dSWarner Losh delete all entries. 259*f439973dSWarner Losh 260*f439973dSWarner Losh @retval EFI_SUCCESS The entry was removed from the ARP cache. 261*f439973dSWarner Losh @retval EFI_INVALID_PARAMETER This is NULL. 262*f439973dSWarner Losh @retval EFI_NOT_FOUND The specified deletion key was not found. 263*f439973dSWarner Losh @retval EFI_NOT_STARTED The ARP driver instance has not been configured. 264*f439973dSWarner Losh 265*f439973dSWarner Losh **/ 266*f439973dSWarner Losh typedef 267*f439973dSWarner Losh EFI_STATUS 268*f439973dSWarner Losh (EFIAPI *EFI_ARP_DELETE)( 269*f439973dSWarner Losh IN EFI_ARP_PROTOCOL *This, 270*f439973dSWarner Losh IN BOOLEAN BySwAddress, 271*f439973dSWarner Losh IN VOID *AddressBuffer OPTIONAL 272*f439973dSWarner Losh ); 273*f439973dSWarner Losh 274*f439973dSWarner Losh /** 275*f439973dSWarner Losh This function delete all dynamic entries from the ARP cache that match the specified 276*f439973dSWarner Losh software protocol type. 277*f439973dSWarner Losh 278*f439973dSWarner Losh @param This The pointer to the EFI_ARP_PROTOCOL instance. 279*f439973dSWarner Losh 280*f439973dSWarner Losh @retval EFI_SUCCESS The cache has been flushed. 281*f439973dSWarner Losh @retval EFI_INVALID_PARAMETER This is NULL. 282*f439973dSWarner Losh @retval EFI_NOT_FOUND There are no matching dynamic cache entries. 283*f439973dSWarner Losh @retval EFI_NOT_STARTED The ARP driver instance has not been configured. 284*f439973dSWarner Losh 285*f439973dSWarner Losh **/ 286*f439973dSWarner Losh typedef 287*f439973dSWarner Losh EFI_STATUS 288*f439973dSWarner Losh (EFIAPI *EFI_ARP_FLUSH)( 289*f439973dSWarner Losh IN EFI_ARP_PROTOCOL *This 290*f439973dSWarner Losh ); 291*f439973dSWarner Losh 292*f439973dSWarner Losh /** 293*f439973dSWarner Losh This function tries to resolve the TargetSwAddress and optionally returns a 294*f439973dSWarner Losh TargetHwAddress if it already exists in the ARP cache. 295*f439973dSWarner Losh 296*f439973dSWarner Losh @param This The pointer to the EFI_ARP_PROTOCOL instance. 297*f439973dSWarner Losh @param TargetSwAddress The pointer to the protocol address to resolve. 298*f439973dSWarner Losh @param ResolvedEvent The pointer to the event that will be signaled when 299*f439973dSWarner Losh the address is resolved or some error occurs. 300*f439973dSWarner Losh @param TargetHwAddress The pointer to the buffer for the resolved hardware 301*f439973dSWarner Losh address in network byte order. 302*f439973dSWarner Losh 303*f439973dSWarner Losh @retval EFI_SUCCESS The data is copied from the ARP cache into the 304*f439973dSWarner Losh TargetHwAddress buffer. 305*f439973dSWarner Losh @retval EFI_INVALID_PARAMETER One or more of the following conditions is TRUE: 306*f439973dSWarner Losh This is NULL. TargetHwAddress is NULL. 307*f439973dSWarner Losh @retval EFI_ACCESS_DENIED The requested address is not present in the normal 308*f439973dSWarner Losh ARP cache but is present in the deny address list. 309*f439973dSWarner Losh Outgoing traffic to that address is forbidden. 310*f439973dSWarner Losh @retval EFI_NOT_STARTED The ARP driver instance has not been configured. 311*f439973dSWarner Losh @retval EFI_NOT_READY The request has been started and is not finished. 312*f439973dSWarner Losh 313*f439973dSWarner Losh **/ 314*f439973dSWarner Losh typedef 315*f439973dSWarner Losh EFI_STATUS 316*f439973dSWarner Losh (EFIAPI *EFI_ARP_REQUEST)( 317*f439973dSWarner Losh IN EFI_ARP_PROTOCOL *This, 318*f439973dSWarner Losh IN VOID *TargetSwAddress OPTIONAL, 319*f439973dSWarner Losh IN EFI_EVENT ResolvedEvent OPTIONAL, 320*f439973dSWarner Losh OUT VOID *TargetHwAddress 321*f439973dSWarner Losh ); 322*f439973dSWarner Losh 323*f439973dSWarner Losh /** 324*f439973dSWarner Losh This function aborts the previous ARP request (identified by This, TargetSwAddress 325*f439973dSWarner Losh and ResolvedEvent) that is issued by EFI_ARP_PROTOCOL.Request(). 326*f439973dSWarner Losh 327*f439973dSWarner Losh If the request is in the internal ARP request queue, the request is aborted 328*f439973dSWarner Losh immediately and its ResolvedEvent is signaled. Only an asynchronous address 329*f439973dSWarner Losh request needs to be canceled. If TargeSwAddress and ResolveEvent are both 330*f439973dSWarner Losh NULL, all the pending asynchronous requests that have been issued by This 331*f439973dSWarner Losh instance will be cancelled and their corresponding events will be signaled. 332*f439973dSWarner Losh 333*f439973dSWarner Losh @param This The pointer to the EFI_ARP_PROTOCOL instance. 334*f439973dSWarner Losh @param TargetSwAddress The pointer to the protocol address in previous 335*f439973dSWarner Losh request session. 336*f439973dSWarner Losh @param ResolvedEvent Pointer to the event that is used as the 337*f439973dSWarner Losh notification event in previous request session. 338*f439973dSWarner Losh 339*f439973dSWarner Losh @retval EFI_SUCCESS The pending request session(s) is/are aborted and 340*f439973dSWarner Losh corresponding event(s) is/are signaled. 341*f439973dSWarner Losh @retval EFI_INVALID_PARAMETER One or more of the following conditions is TRUE: 342*f439973dSWarner Losh This is NULL. TargetSwAddress is not NULL and 343*f439973dSWarner Losh ResolvedEvent is NULL. TargetSwAddress is NULL and 344*f439973dSWarner Losh ResolvedEvent is not NULL. 345*f439973dSWarner Losh @retval EFI_NOT_STARTED The ARP driver instance has not been configured. 346*f439973dSWarner Losh @retval EFI_NOT_FOUND The request is not issued by 347*f439973dSWarner Losh EFI_ARP_PROTOCOL.Request(). 348*f439973dSWarner Losh 349*f439973dSWarner Losh 350*f439973dSWarner Losh **/ 351*f439973dSWarner Losh typedef 352*f439973dSWarner Losh EFI_STATUS 353*f439973dSWarner Losh (EFIAPI *EFI_ARP_CANCEL)( 354*f439973dSWarner Losh IN EFI_ARP_PROTOCOL *This, 355*f439973dSWarner Losh IN VOID *TargetSwAddress OPTIONAL, 356*f439973dSWarner Losh IN EFI_EVENT ResolvedEvent OPTIONAL 357*f439973dSWarner Losh ); 358*f439973dSWarner Losh 359*f439973dSWarner Losh /// 360*f439973dSWarner Losh /// ARP is used to resolve local network protocol addresses into 361*f439973dSWarner Losh /// network hardware addresses. 362*f439973dSWarner Losh /// 363*f439973dSWarner Losh struct _EFI_ARP_PROTOCOL { 364*f439973dSWarner Losh EFI_ARP_CONFIGURE Configure; 365*f439973dSWarner Losh EFI_ARP_ADD Add; 366*f439973dSWarner Losh EFI_ARP_FIND Find; 367*f439973dSWarner Losh EFI_ARP_DELETE Delete; 368*f439973dSWarner Losh EFI_ARP_FLUSH Flush; 369*f439973dSWarner Losh EFI_ARP_REQUEST Request; 370*f439973dSWarner Losh EFI_ARP_CANCEL Cancel; 371*f439973dSWarner Losh }; 372*f439973dSWarner Losh 373*f439973dSWarner Losh extern EFI_GUID gEfiArpServiceBindingProtocolGuid; 374*f439973dSWarner Losh extern EFI_GUID gEfiArpProtocolGuid; 375*f439973dSWarner Losh 376*f439973dSWarner Losh #endif 377