1 /*++ 2 3 Copyright (c) 2006, Intel Corporation. All rights reserved.<BR> 4 This program and the accompanying materials 5 are licensed and made available under the terms and conditions of the BSD License 6 which accompanies this distribution. The full text of the license may be found at 7 http://opensource.org/licenses/bsd-license.php 8 9 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, 10 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. 11 12 Module Name: 13 14 Arp.h 15 16 Abstract: 17 18 UEFI Arp protocol definition. 19 20 --*/ 21 22 #ifndef _ARP_H_ 23 #define _ARP_H_ 24 25 #include EFI_PROTOCOL_DEFINITION (ServiceBinding) 26 27 #define EFI_ARP_SERVICE_BINDING_PROTOCOL_GUID \ 28 { 0xf44c00ee, 0x1f2c, 0x4a00, {0xaa, 0x9, 0x1c, 0x9f, 0x3e, 0x8, 0x0, 0xa3} } 29 30 #define EFI_ARP_PROTOCOL_GUID \ 31 { 0xf4b427bb, 0xba21, 0x4f16, {0xbc, 0x4e, 0x43, 0xe4, 0x16, 0xab, 0x61, 0x9c} } 32 33 EFI_FORWARD_DECLARATION (EFI_ARP_PROTOCOL); 34 35 typedef struct _EFI_ARP_FIND_DATA { 36 UINT32 Size; 37 BOOLEAN DenyFlag; 38 BOOLEAN StaticFlag; 39 UINT16 HwAddressType; 40 UINT16 SwAddressType; 41 UINT8 HwAddressLength; 42 UINT8 SwAddressLength; 43 } EFI_ARP_FIND_DATA; 44 45 46 //**************************************************** 47 // EFI_ARP_CONFIG_DATA 48 //**************************************************** 49 typedef struct EFI_ARP_CONFIG_DATA { 50 UINT16 SwAddressType; // Host byte order 51 UINT8 SwAddressLength; 52 VOID *StationAddress; // Network byte order 53 UINT32 EntryTimeOut; 54 UINT32 RetryCount; 55 UINT32 RetryTimeOut; 56 } EFI_ARP_CONFIG_DATA; 57 58 59 typedef 60 EFI_STATUS 61 (EFIAPI *EFI_ARP_CONFIGURE) ( 62 IN EFI_ARP_PROTOCOL *This, 63 IN EFI_ARP_CONFIG_DATA *ConfigData OPTIONAL 64 ); 65 66 67 typedef 68 EFI_STATUS 69 (EFIAPI *EFI_ARP_ADD) ( 70 IN EFI_ARP_PROTOCOL *This, 71 IN BOOLEAN DenyFlag, 72 IN VOID *TargetSwAddress OPTIONAL, 73 IN VOID *TargetHwAddress OPTIONAL, 74 IN UINT32 TimeoutValue, 75 IN BOOLEAN Overwrite 76 ); 77 78 typedef 79 EFI_STATUS 80 (EFIAPI *EFI_ARP_FIND) ( 81 IN EFI_ARP_PROTOCOL *This, 82 IN BOOLEAN BySwAddress, 83 IN VOID *AddressBuffer OPTIONAL, 84 OUT UINT32 *EntryLength OPTIONAL, 85 OUT UINT32 *EntryCount OPTIONAL, 86 OUT EFI_ARP_FIND_DATA **Entries OPTIONAL, 87 IN BOOLEAN Refresh 88 ); 89 90 91 typedef 92 EFI_STATUS 93 (EFIAPI *EFI_ARP_DELETE) ( 94 IN EFI_ARP_PROTOCOL *This, 95 IN BOOLEAN BySwAddress, 96 IN VOID *AddressBuffer OPTIONAL 97 ); 98 99 typedef 100 EFI_STATUS 101 (EFIAPI *EFI_ARP_FLUSH) ( 102 IN EFI_ARP_PROTOCOL *This 103 ); 104 105 typedef 106 EFI_STATUS 107 (EFIAPI *EFI_ARP_REQUEST) ( 108 IN EFI_ARP_PROTOCOL *This, 109 IN VOID *TargetSwAddress OPTIONAL, 110 IN EFI_EVENT ResolvedEvent OPTIONAL, 111 OUT VOID *TargetHwAddress 112 ); 113 114 typedef 115 EFI_STATUS 116 (EFIAPI *EFI_ARP_CANCEL) ( 117 IN EFI_ARP_PROTOCOL *This, 118 IN VOID *TargetSwAddress OPTIONAL, 119 IN EFI_EVENT ResolvedEvent OPTIONAL 120 ); 121 122 struct _EFI_ARP_PROTOCOL { 123 EFI_ARP_CONFIGURE Configure; 124 EFI_ARP_ADD Add; 125 EFI_ARP_FIND Find; 126 EFI_ARP_DELETE Delete; 127 EFI_ARP_FLUSH Flush; 128 EFI_ARP_REQUEST Request; 129 EFI_ARP_CANCEL Cancel; 130 }; 131 132 133 extern EFI_GUID gEfiArpServiceBindingProtocolGuid; 134 extern EFI_GUID gEfiArpProtocolGuid; 135 136 #endif 137