1 1.1 jakllsch /* $NetBSD: efiudp.h,v 1.1.1.1 2014/04/01 16:16:07 jakllsch Exp $ */ 2 1.1 jakllsch 3 1.1 jakllsch #ifndef _EFI_UDP_H 4 1.1 jakllsch #define _EFI_UDP_H 5 1.1 jakllsch 6 1.1 jakllsch 7 1.1 jakllsch /*++ 8 1.1 jakllsch Copyright (c) 2013 Intel Corporation 9 1.1 jakllsch 10 1.1 jakllsch --*/ 11 1.1 jakllsch 12 1.1 jakllsch #define EFI_UDP4_SERVICE_BINDING_PROTOCOL \ 13 1.1 jakllsch { 0x83f01464, 0x99bd, 0x45e5, {0xb3, 0x83, 0xaf, 0x63, 0x05, 0xd8, 0xe9, 0xe6} } 14 1.1 jakllsch 15 1.1 jakllsch #define EFI_UDP4_PROTOCOL \ 16 1.1 jakllsch { 0x3ad9df29, 0x4501, 0x478d, {0xb1, 0xf8, 0x7f, 0x7f, 0xe7, 0x0e, 0x50, 0xf3} } 17 1.1 jakllsch 18 1.1 jakllsch #define EFI_UDP6_SERVICE_BINDING_PROTOCOL \ 19 1.1 jakllsch { 0x66ed4721, 0x3c98, 0x4d3e, {0x81, 0xe3, 0xd0, 0x3d, 0xd3, 0x9a, 0x72, 0x54} } 20 1.1 jakllsch 21 1.1 jakllsch #define EFI_UDP6_PROTOCOL \ 22 1.1 jakllsch { 0x4f948815, 0xb4b9, 0x43cb, {0x8a, 0x33, 0x90, 0xe0, 0x60, 0xb3,0x49, 0x55} } 23 1.1 jakllsch 24 1.1 jakllsch INTERFACE_DECL(_EFI_UDP4); 25 1.1 jakllsch INTERFACE_DECL(_EFI_UDP6); 26 1.1 jakllsch 27 1.1 jakllsch typedef struct { 28 1.1 jakllsch BOOLEAN AcceptBroadcast; 29 1.1 jakllsch BOOLEAN AcceptPromiscuous; 30 1.1 jakllsch BOOLEAN AcceptAnyPort; 31 1.1 jakllsch BOOLEAN AllowDuplicatePort; 32 1.1 jakllsch UINT8 TypeOfService; 33 1.1 jakllsch UINT8 TimeToLive; 34 1.1 jakllsch BOOLEAN DoNotFragment; 35 1.1 jakllsch UINT32 ReceiveTimeout; 36 1.1 jakllsch UINT32 TransmitTimeout; 37 1.1 jakllsch BOOLEAN UseDefaultAddress; 38 1.1 jakllsch EFI_IPv4_ADDRESS StationAddress; 39 1.1 jakllsch EFI_IPv4_ADDRESS SubnetMask; 40 1.1 jakllsch UINT16 StationPort; 41 1.1 jakllsch EFI_IPv4_ADDRESS RemoteAddress; 42 1.1 jakllsch UINT16 RemotePort; 43 1.1 jakllsch } EFI_UDP4_CONFIG_DATA; 44 1.1 jakllsch 45 1.1 jakllsch typedef 46 1.1 jakllsch EFI_STATUS 47 1.1 jakllsch (EFIAPI *EFI_UDP4_GET_MODE_DATA) ( 48 1.1 jakllsch IN struct _EFI_UDP4 *This, 49 1.1 jakllsch OUT EFI_UDP4_CONFIG_DATA *Udp4ConfigData OPTIONAL, 50 1.1 jakllsch OUT EFI_IP4_MODE_DATA *Ip4ModeData OPTIONAL, 51 1.1 jakllsch OUT EFI_MANAGED_NETWORK_CONFIG_DATA *MnpConfigData OPTIONAL, 52 1.1 jakllsch OUT EFI_SIMPLE_NETWORK_MODE *SnpModeData OPTIONAL 53 1.1 jakllsch ); 54 1.1 jakllsch 55 1.1 jakllsch typedef 56 1.1 jakllsch EFI_STATUS 57 1.1 jakllsch (EFIAPI *EFI_UDP4_CONFIGURE) ( 58 1.1 jakllsch IN struct _EFI_UDP4 *This, 59 1.1 jakllsch IN EFI_UDP4_CONFIG_DATA *UdpConfigData OPTIONAL 60 1.1 jakllsch ); 61 1.1 jakllsch 62 1.1 jakllsch typedef 63 1.1 jakllsch EFI_STATUS 64 1.1 jakllsch (EFIAPI *EFI_UDP4_GROUPS) ( 65 1.1 jakllsch IN struct _EFI_UDP4 *This, 66 1.1 jakllsch IN BOOLEAN JoinFlag, 67 1.1 jakllsch IN EFI_IPv4_ADDRESS *MulticastAddress OPTIONAL 68 1.1 jakllsch ); 69 1.1 jakllsch 70 1.1 jakllsch typedef 71 1.1 jakllsch EFI_STATUS 72 1.1 jakllsch (EFIAPI *EFI_UDP4_ROUTES) ( 73 1.1 jakllsch IN struct _EFI_UDP4 *This, 74 1.1 jakllsch IN BOOLEAN DeleteRoute, 75 1.1 jakllsch IN EFI_IPv4_ADDRESS *SubnetAddress, 76 1.1 jakllsch IN EFI_IPv4_ADDRESS *SubnetMask, 77 1.1 jakllsch IN EFI_IPv4_ADDRESS *GatewayAddress 78 1.1 jakllsch ); 79 1.1 jakllsch 80 1.1 jakllsch #define EFI_NETWORK_UNREACHABLE EFIERR(100) 81 1.1 jakllsch #define EFI_HOST_UNREACHABLE EFIERR(101) 82 1.1 jakllsch #define EFI_PROTOCOL_UNREACHABLE EFIERR(102) 83 1.1 jakllsch #define EFI_PORT_UNREACHABLE EFIERR(103) 84 1.1 jakllsch 85 1.1 jakllsch typedef struct { 86 1.1 jakllsch EFI_IPv4_ADDRESS SourceAddress; 87 1.1 jakllsch UINT16 SourcePort; 88 1.1 jakllsch EFI_IPv4_ADDRESS DestinationAddress; 89 1.1 jakllsch UINT16 DestinationPort; 90 1.1 jakllsch } EFI_UDP4_SESSION_DATA; 91 1.1 jakllsch 92 1.1 jakllsch typedef struct { 93 1.1 jakllsch UINT32 FragmentLength; 94 1.1 jakllsch VOID *FragmentBuffer; 95 1.1 jakllsch } EFI_UDP4_FRAGMENT_DATA; 96 1.1 jakllsch 97 1.1 jakllsch typedef struct { 98 1.1 jakllsch EFI_TIME TimeStamp; 99 1.1 jakllsch EFI_EVENT RecycleSignal; 100 1.1 jakllsch EFI_UDP4_SESSION_DATA UdpSession; 101 1.1 jakllsch UINT32 DataLength; 102 1.1 jakllsch UINT32 FragmentCount; 103 1.1 jakllsch EFI_UDP4_FRAGMENT_DATA FragmentTable[1]; 104 1.1 jakllsch } EFI_UDP4_RECEIVE_DATA; 105 1.1 jakllsch 106 1.1 jakllsch typedef struct { 107 1.1 jakllsch EFI_UDP4_SESSION_DATA *UdpSessionData; 108 1.1 jakllsch EFI_IPv4_ADDRESS *GatewayAddress; 109 1.1 jakllsch UINT32 DataLength; 110 1.1 jakllsch UINT32 FragmentCount; 111 1.1 jakllsch EFI_UDP4_FRAGMENT_DATA FragmentTable[1]; 112 1.1 jakllsch } EFI_UDP4_TRANSMIT_DATA; 113 1.1 jakllsch 114 1.1 jakllsch typedef struct { 115 1.1 jakllsch EFI_EVENT Event; 116 1.1 jakllsch EFI_STATUS Status; 117 1.1 jakllsch union { 118 1.1 jakllsch EFI_UDP4_RECEIVE_DATA *RxData; 119 1.1 jakllsch EFI_UDP4_TRANSMIT_DATA *TxData; 120 1.1 jakllsch } Packet; 121 1.1 jakllsch } EFI_UDP4_COMPLETION_TOKEN; 122 1.1 jakllsch 123 1.1 jakllsch typedef 124 1.1 jakllsch EFI_STATUS 125 1.1 jakllsch (EFIAPI *EFI_UDP4_TRANSMIT) ( 126 1.1 jakllsch IN struct _EFI_UDP4 *This, 127 1.1 jakllsch IN EFI_UDP4_COMPLETION_TOKEN *Token 128 1.1 jakllsch ); 129 1.1 jakllsch 130 1.1 jakllsch typedef 131 1.1 jakllsch EFI_STATUS 132 1.1 jakllsch (EFIAPI *EFI_UDP4_RECEIVE) ( 133 1.1 jakllsch IN struct _EFI_UDP4 *This, 134 1.1 jakllsch IN EFI_UDP4_COMPLETION_TOKEN *Token 135 1.1 jakllsch ); 136 1.1 jakllsch 137 1.1 jakllsch typedef 138 1.1 jakllsch EFI_STATUS 139 1.1 jakllsch (EFIAPI *EFI_UDP4_CANCEL)( 140 1.1 jakllsch IN struct _EFI_UDP4 *This, 141 1.1 jakllsch IN EFI_UDP4_COMPLETION_TOKEN *Token OPTIONAL 142 1.1 jakllsch ); 143 1.1 jakllsch 144 1.1 jakllsch typedef 145 1.1 jakllsch EFI_STATUS 146 1.1 jakllsch (EFIAPI *EFI_UDP4_POLL) ( 147 1.1 jakllsch IN struct _EFI_UDP4 *This 148 1.1 jakllsch ); 149 1.1 jakllsch 150 1.1 jakllsch typedef struct _EFI_UDP4 { 151 1.1 jakllsch EFI_UDP4_GET_MODE_DATA GetModeData; 152 1.1 jakllsch EFI_UDP4_CONFIGURE Configure; 153 1.1 jakllsch EFI_UDP4_GROUPS Groups; 154 1.1 jakllsch EFI_UDP4_ROUTES Routes; 155 1.1 jakllsch EFI_UDP4_TRANSMIT Transmit; 156 1.1 jakllsch EFI_UDP4_RECEIVE Receive; 157 1.1 jakllsch EFI_UDP4_CANCEL Cancel; 158 1.1 jakllsch EFI_UDP4_POLL Poll; 159 1.1 jakllsch } EFI_UDP4; 160 1.1 jakllsch 161 1.1 jakllsch typedef struct { 162 1.1 jakllsch BOOLEAN AcceptPromiscuous; 163 1.1 jakllsch BOOLEAN AcceptAnyPort; 164 1.1 jakllsch BOOLEAN AllowDuplicatePort; 165 1.1 jakllsch UINT8 TrafficClass; 166 1.1 jakllsch UINT8 HopLimit; 167 1.1 jakllsch UINT32 ReceiveTimeout; 168 1.1 jakllsch UINT32 TransmitTimeout; 169 1.1 jakllsch EFI_IPv6_ADDRESS StationAddress; 170 1.1 jakllsch UINT16 StationPort; 171 1.1 jakllsch EFI_IPv6_ADDRESS RemoteAddress; 172 1.1 jakllsch UINT16 RemotePort; 173 1.1 jakllsch } EFI_UDP6_CONFIG_DATA; 174 1.1 jakllsch 175 1.1 jakllsch typedef 176 1.1 jakllsch EFI_STATUS 177 1.1 jakllsch (EFIAPI *EFI_UDP6_GET_MODE_DATA) ( 178 1.1 jakllsch IN struct _EFI_UDP6 *This, 179 1.1 jakllsch OUT EFI_UDP6_CONFIG_DATA *Udp6ConfigData OPTIONAL, 180 1.1 jakllsch OUT EFI_IP6_MODE_DATA *Ip6ModeData OPTIONAL, 181 1.1 jakllsch OUT EFI_MANAGED_NETWORK_CONFIG_DATA *MnpConfigData OPTIONAL, 182 1.1 jakllsch OUT EFI_SIMPLE_NETWORK_MODE *SnpModeData OPTIONAL 183 1.1 jakllsch ); 184 1.1 jakllsch 185 1.1 jakllsch typedef 186 1.1 jakllsch EFI_STATUS 187 1.1 jakllsch (EFIAPI *EFI_UDP6_CONFIGURE) ( 188 1.1 jakllsch IN struct _EFI_UDP6 *This, 189 1.1 jakllsch IN EFI_UDP6_CONFIG_DATA *UdpConfigData OPTIONAL 190 1.1 jakllsch ); 191 1.1 jakllsch 192 1.1 jakllsch typedef 193 1.1 jakllsch EFI_STATUS 194 1.1 jakllsch (EFIAPI *EFI_UDP6_GROUPS) ( 195 1.1 jakllsch IN struct _EFI_UDP6 *This, 196 1.1 jakllsch IN BOOLEAN JoinFlag, 197 1.1 jakllsch IN EFI_IPv6_ADDRESS *MulticastAddress OPTIONAL 198 1.1 jakllsch ); 199 1.1 jakllsch 200 1.1 jakllsch typedef struct { 201 1.1 jakllsch EFI_IPv6_ADDRESS SourceAddress; 202 1.1 jakllsch UINT16 SourcePort; 203 1.1 jakllsch EFI_IPv6_ADDRESS DestinationAddress; 204 1.1 jakllsch UINT16 DestinationPort; 205 1.1 jakllsch } EFI_UDP6_SESSION_DATA; 206 1.1 jakllsch 207 1.1 jakllsch typedef struct { 208 1.1 jakllsch UINT32 FragmentLength; 209 1.1 jakllsch VOID *FragmentBuffer; 210 1.1 jakllsch } EFI_UDP6_FRAGMENT_DATA; 211 1.1 jakllsch 212 1.1 jakllsch typedef struct { 213 1.1 jakllsch EFI_TIME TimeStamp; 214 1.1 jakllsch EFI_EVENT RecycleSignal; 215 1.1 jakllsch EFI_UDP6_SESSION_DATA UdpSession; 216 1.1 jakllsch UINT32 DataLength; 217 1.1 jakllsch UINT32 FragmentCount; 218 1.1 jakllsch EFI_UDP6_FRAGMENT_DATA FragmentTable[1]; 219 1.1 jakllsch } EFI_UDP6_RECEIVE_DATA; 220 1.1 jakllsch 221 1.1 jakllsch typedef struct { 222 1.1 jakllsch EFI_UDP6_SESSION_DATA *UdpSessionData; 223 1.1 jakllsch UINT32 DataLength; 224 1.1 jakllsch UINT32 FragmentCount; 225 1.1 jakllsch EFI_UDP6_FRAGMENT_DATA FragmentTable[1]; 226 1.1 jakllsch } EFI_UDP6_TRANSMIT_DATA; 227 1.1 jakllsch 228 1.1 jakllsch typedef struct { 229 1.1 jakllsch EFI_EVENT Event; 230 1.1 jakllsch EFI_STATUS Status; 231 1.1 jakllsch union { 232 1.1 jakllsch EFI_UDP6_RECEIVE_DATA *RxData; 233 1.1 jakllsch EFI_UDP6_TRANSMIT_DATA *TxData; 234 1.1 jakllsch } Packet; 235 1.1 jakllsch } EFI_UDP6_COMPLETION_TOKEN; 236 1.1 jakllsch 237 1.1 jakllsch typedef 238 1.1 jakllsch EFI_STATUS 239 1.1 jakllsch (EFIAPI *EFI_UDP6_TRANSMIT) ( 240 1.1 jakllsch IN struct _EFI_UDP6 *This, 241 1.1 jakllsch IN EFI_UDP6_COMPLETION_TOKEN *Token 242 1.1 jakllsch ); 243 1.1 jakllsch 244 1.1 jakllsch typedef 245 1.1 jakllsch EFI_STATUS 246 1.1 jakllsch (EFIAPI *EFI_UDP6_RECEIVE) ( 247 1.1 jakllsch IN struct _EFI_UDP6 *This, 248 1.1 jakllsch IN EFI_UDP6_COMPLETION_TOKEN *Token 249 1.1 jakllsch ); 250 1.1 jakllsch 251 1.1 jakllsch typedef 252 1.1 jakllsch EFI_STATUS 253 1.1 jakllsch (EFIAPI *EFI_UDP6_CANCEL)( 254 1.1 jakllsch IN struct _EFI_UDP6 *This, 255 1.1 jakllsch IN EFI_UDP6_COMPLETION_TOKEN *Token OPTIONAL 256 1.1 jakllsch ); 257 1.1 jakllsch 258 1.1 jakllsch typedef 259 1.1 jakllsch EFI_STATUS 260 1.1 jakllsch (EFIAPI *EFI_UDP6_POLL) ( 261 1.1 jakllsch IN struct _EFI_UDP6 *This 262 1.1 jakllsch ); 263 1.1 jakllsch 264 1.1 jakllsch typedef struct _EFI_UDP6 { 265 1.1 jakllsch EFI_UDP6_GET_MODE_DATA GetModeData; 266 1.1 jakllsch EFI_UDP6_CONFIGURE Configure; 267 1.1 jakllsch EFI_UDP6_GROUPS Groups; 268 1.1 jakllsch EFI_UDP6_TRANSMIT Transmit; 269 1.1 jakllsch EFI_UDP6_RECEIVE Receive; 270 1.1 jakllsch EFI_UDP6_CANCEL Cancel; 271 1.1 jakllsch EFI_UDP6_POLL Poll; 272 1.1 jakllsch } EFI_UDP6; 273 1.1 jakllsch 274 1.1 jakllsch #endif /* _EFI_UDP_H */ 275