31#define ARP_ETHER_PROTO_TYPE 0x0806
32#define IPV4_ETHER_PROTO_TYPE 0x0800
33#define IPV6_ETHER_PROTO_TYPE 0x86DD
38#define ARP_OPCODE_REQUEST 0x0001
39#define ARP_OPCODE_REPLY 0x0002
44#define ARP_DEFAULT_TIMEOUT_VALUE (400 * TICKS_PER_SECOND)
45#define ARP_DEFAULT_RETRY_COUNT 2
46#define ARP_DEFAULT_RETRY_INTERVAL (5 * TICKS_PER_MS)
47#define ARP_PERIODIC_TIMER_INTERVAL (500 * TICKS_PER_MS)
67 UINT8 *SenderProtoAddr;
69 UINT8 *TargetProtoAddr;
72#define MATCH_SW_ADDRESS 0x1
73#define MATCH_HW_ADDRESS 0x2
81 ByProtoAddress = MATCH_SW_ADDRESS,
82 ByHwAddress = MATCH_HW_ADDRESS,
83 ByBoth = MATCH_SW_ADDRESS | MATCH_HW_ADDRESS
86#define ARP_INSTANCE_DATA_SIGNATURE SIGNATURE_32('A', 'R', 'P', 'I')
98#define ARP_INSTANCE_DATA_FROM_THIS(a) \
103 ARP_INSTANCE_DATA_SIGNATURE \
122#define ARP_SERVICE_DATA_SIGNATURE SIGNATURE_32('A', 'R', 'P', 'S')
134#define ARP_SERVICE_DATA_FROM_THIS(a) \
139 ARP_SERVICE_DATA_SIGNATURE \
159 UINTN ChildrenNumber;
176 VOID *UserHwAddrBuffer;
179#define ARP_MAX_PROTOCOL_ADDRESS_LEN sizeof(EFI_IP_ADDRESS)
180#define ARP_MAX_HARDWARE_ADDRESS_LEN sizeof(EFI_MAC_ADDRESS)
183 UINT8 ProtoAddress[ARP_MAX_PROTOCOL_ADDRESS_LEN];
184 UINT8 HwAddress[ARP_MAX_HARDWARE_ADDRESS_LEN];
212 UINT32 DefaultDecayTime;
214 UINT32 NextRetryTime;
306 IN VOID *TargetSwAddress OPTIONAL,
307 IN VOID *TargetHwAddress OPTIONAL,
308 IN UINT32 TimeoutValue,
350 IN BOOLEAN BySwAddress,
351 IN VOID *AddressBuffer OPTIONAL,
352 OUT UINT32 *EntryLength OPTIONAL,
353 OUT UINT32 *EntryCount OPTIONAL,
379 IN BOOLEAN BySwAddress,
380 IN VOID *AddressBuffer OPTIONAL
427 IN VOID *TargetSwAddress OPTIONAL,
429 OUT VOID *TargetHwAddress
463 IN VOID *TargetSwAddress OPTIONAL,
526 IN FIND_OPTYPE FindOpType,
595 IN BOOLEAN BySwAddress,
596 IN UINT8 *AddressBuffer OPTIONAL,
731 IN VOID *TargetSwAddress OPTIONAL,
761 IN BOOLEAN BySwAddress,
762 IN VOID *AddressBuffer OPTIONAL,
763 OUT UINT32 *EntryLength OPTIONAL,
764 OUT UINT32 *EntryCount OPTIONAL,
EFI_STATUS ArpConfigureInstance(IN ARP_INSTANCE_DATA *Instance, IN EFI_ARP_CONFIG_DATA *ConfigData OPTIONAL)
VOID ArpSendFrame(IN ARP_INSTANCE_DATA *Instance, IN ARP_CACHE_ENTRY *CacheEntry, IN UINT16 ArpOpCode)
UINTN ArpDeleteCacheEntry(IN ARP_INSTANCE_DATA *Instance, IN BOOLEAN BySwAddress, IN UINT8 *AddressBuffer OPTIONAL, IN BOOLEAN Force)
ARP_CACHE_ENTRY * ArpFindNextCacheEntryInTable(IN LIST_ENTRY *CacheTable, IN LIST_ENTRY *StartEntry, IN FIND_OPTYPE FindOpType, IN NET_ARP_ADDRESS *ProtocolAddress OPTIONAL, IN NET_ARP_ADDRESS *HardwareAddress OPTIONAL)
EFI_STATUS EFIAPI ArpCancel(IN EFI_ARP_PROTOCOL *This, IN VOID *TargetSwAddress OPTIONAL, IN EFI_EVENT ResolvedEvent OPTIONAL)
UINTN ArpAddressResolved(IN ARP_CACHE_ENTRY *CacheEntry, IN ARP_INSTANCE_DATA *Instance OPTIONAL, IN EFI_EVENT UserEvent OPTIONAL)
VOID EFIAPI ArpOnFrameRcvd(IN EFI_EVENT Event, IN VOID *Context)
VOID EFIAPI ArpOnFrameRcvdDpc(IN VOID *Context)
VOID EFIAPI ArpOnFrameSentDpc(IN VOID *Context)
VOID EFIAPI ArpOnFrameSent(IN EFI_EVENT Event, IN VOID *Context)
EFI_STATUS ArpFindCacheEntry(IN ARP_INSTANCE_DATA *Instance, 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)
EFI_STATUS EFIAPI ArpRequest(IN EFI_ARP_PROTOCOL *This, IN VOID *TargetSwAddress OPTIONAL, IN EFI_EVENT ResolvedEvent OPTIONAL, OUT VOID *TargetHwAddress)
EFI_STATUS EFIAPI ArpConfigure(IN EFI_ARP_PROTOCOL *This, IN EFI_ARP_CONFIG_DATA *ConfigData OPTIONAL)
EFI_STATUS EFIAPI ArpFind(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)
VOID EFIAPI ArpTimerHandler(IN EFI_EVENT Event, IN VOID *Context)
UINTN ArpCancelRequest(IN ARP_INSTANCE_DATA *Instance, IN VOID *TargetSwAddress OPTIONAL, IN EFI_EVENT UserEvent OPTIONAL)
EFI_STATUS EFIAPI ArpAdd(IN EFI_ARP_PROTOCOL *This, IN BOOLEAN DenyFlag, IN VOID *TargetSwAddress OPTIONAL, IN VOID *TargetHwAddress OPTIONAL, IN UINT32 TimeoutValue, IN BOOLEAN Overwrite)
EFI_STATUS EFIAPI ArpDelete(IN EFI_ARP_PROTOCOL *This, IN BOOLEAN BySwAddress, IN VOID *AddressBuffer OPTIONAL)
ARP_CACHE_ENTRY * ArpAllocCacheEntry(IN ARP_INSTANCE_DATA *Instance)
VOID ArpFillAddressInCacheEntry(IN ARP_CACHE_ENTRY *CacheEntry, IN NET_ARP_ADDRESS *HwAddr OPTIONAL, IN NET_ARP_ADDRESS *SwAddr OPTIONAL)
EFI_STATUS EFIAPI ArpFlush(IN EFI_ARP_PROTOCOL *This)
VOID ArpInitInstance(IN ARP_SERVICE_DATA *ArpService, OUT ARP_INSTANCE_DATA *Instance)
ARP_CACHE_ENTRY * ArpFindDeniedCacheEntry(IN ARP_SERVICE_DATA *ArpService, IN NET_ARP_ADDRESS *ProtocolAddress OPTIONAL, IN NET_ARP_ADDRESS *HardwareAddress OPTIONAL)