1241675Suqs/* $NetBSD$ */ 2241675Suqs 3241675Suqs#ifndef _EFI_UDP_H 4241675Suqs#define _EFI_UDP_H 5241675Suqs 6241675Suqs 7241675Suqs/*++ 8241675SuqsCopyright (c) 2013 Intel Corporation 9241675Suqs 10241675Suqs--*/ 11241675Suqs 12241675Suqs#define EFI_UDP4_SERVICE_BINDING_PROTOCOL \ 13241675Suqs { 0x83f01464, 0x99bd, 0x45e5, {0xb3, 0x83, 0xaf, 0x63, 0x05, 0xd8, 0xe9, 0xe6} } 14241675Suqs 15241675Suqs#define EFI_UDP4_PROTOCOL \ 16241675Suqs { 0x3ad9df29, 0x4501, 0x478d, {0xb1, 0xf8, 0x7f, 0x7f, 0xe7, 0x0e, 0x50, 0xf3} } 17241675Suqs 18241675Suqs#define EFI_UDP6_SERVICE_BINDING_PROTOCOL \ 19241675Suqs { 0x66ed4721, 0x3c98, 0x4d3e, {0x81, 0xe3, 0xd0, 0x3d, 0xd3, 0x9a, 0x72, 0x54} } 20241675Suqs 21241675Suqs#define EFI_UDP6_PROTOCOL \ 22241675Suqs { 0x4f948815, 0xb4b9, 0x43cb, {0x8a, 0x33, 0x90, 0xe0, 0x60, 0xb3,0x49, 0x55} } 23241675Suqs 24241675SuqsINTERFACE_DECL(_EFI_UDP4); 25241675SuqsINTERFACE_DECL(_EFI_UDP6); 26241675Suqs 27241675Suqstypedef struct { 28241675Suqs BOOLEAN AcceptBroadcast; 29241675Suqs BOOLEAN AcceptPromiscuous; 30241675Suqs BOOLEAN AcceptAnyPort; 31241675Suqs BOOLEAN AllowDuplicatePort; 32241675Suqs UINT8 TypeOfService; 33241675Suqs UINT8 TimeToLive; 34241675Suqs BOOLEAN DoNotFragment; 35241675Suqs UINT32 ReceiveTimeout; 36241675Suqs UINT32 TransmitTimeout; 37241675Suqs BOOLEAN UseDefaultAddress; 38241675Suqs EFI_IPv4_ADDRESS StationAddress; 39241675Suqs EFI_IPv4_ADDRESS SubnetMask; 40241675Suqs UINT16 StationPort; 41241675Suqs EFI_IPv4_ADDRESS RemoteAddress; 42241675Suqs UINT16 RemotePort; 43241675Suqs} EFI_UDP4_CONFIG_DATA; 44241675Suqs 45241675Suqstypedef 46241675SuqsEFI_STATUS 47241675Suqs(EFIAPI *EFI_UDP4_GET_MODE_DATA) ( 48241675Suqs IN struct _EFI_UDP4 *This, 49241675Suqs OUT EFI_UDP4_CONFIG_DATA *Udp4ConfigData OPTIONAL, 50241675Suqs OUT EFI_IP4_MODE_DATA *Ip4ModeData OPTIONAL, 51241675Suqs OUT EFI_MANAGED_NETWORK_CONFIG_DATA *MnpConfigData OPTIONAL, 52241675Suqs OUT EFI_SIMPLE_NETWORK_MODE *SnpModeData OPTIONAL 53241675Suqs ); 54241675Suqs 55241675Suqstypedef 56241675SuqsEFI_STATUS 57241675Suqs(EFIAPI *EFI_UDP4_CONFIGURE) ( 58241675Suqs IN struct _EFI_UDP4 *This, 59241675Suqs IN EFI_UDP4_CONFIG_DATA *UdpConfigData OPTIONAL 60241675Suqs ); 61241675Suqs 62241675Suqstypedef 63241675SuqsEFI_STATUS 64241675Suqs(EFIAPI *EFI_UDP4_GROUPS) ( 65241675Suqs IN struct _EFI_UDP4 *This, 66241675Suqs IN BOOLEAN JoinFlag, 67241675Suqs IN EFI_IPv4_ADDRESS *MulticastAddress OPTIONAL 68241675Suqs ); 69241675Suqs 70241675Suqstypedef 71241675SuqsEFI_STATUS 72241675Suqs(EFIAPI *EFI_UDP4_ROUTES) ( 73241675Suqs IN struct _EFI_UDP4 *This, 74241675Suqs IN BOOLEAN DeleteRoute, 75241675Suqs IN EFI_IPv4_ADDRESS *SubnetAddress, 76241675Suqs IN EFI_IPv4_ADDRESS *SubnetMask, 77241675Suqs IN EFI_IPv4_ADDRESS *GatewayAddress 78241675Suqs ); 79241675Suqs 80241675Suqs#define EFI_NETWORK_UNREACHABLE EFIERR(100) 81241675Suqs#define EFI_HOST_UNREACHABLE EFIERR(101) 82241675Suqs#define EFI_PROTOCOL_UNREACHABLE EFIERR(102) 83241675Suqs#define EFI_PORT_UNREACHABLE EFIERR(103) 84241675Suqs 85241675Suqstypedef struct { 86241675Suqs EFI_IPv4_ADDRESS SourceAddress; 87241675Suqs UINT16 SourcePort; 88241675Suqs EFI_IPv4_ADDRESS DestinationAddress; 89241675Suqs UINT16 DestinationPort; 90241675Suqs} EFI_UDP4_SESSION_DATA; 91241675Suqs 92241675Suqstypedef struct { 93241675Suqs UINT32 FragmentLength; 94241675Suqs VOID *FragmentBuffer; 95241675Suqs} EFI_UDP4_FRAGMENT_DATA; 96241675Suqs 97241675Suqstypedef struct { 98241675Suqs EFI_TIME TimeStamp; 99241675Suqs EFI_EVENT RecycleSignal; 100241675Suqs EFI_UDP4_SESSION_DATA UdpSession; 101241675Suqs UINT32 DataLength; 102241675Suqs UINT32 FragmentCount; 103241675Suqs EFI_UDP4_FRAGMENT_DATA FragmentTable[1]; 104241675Suqs} EFI_UDP4_RECEIVE_DATA; 105241675Suqs 106241675Suqstypedef struct { 107241675Suqs EFI_UDP4_SESSION_DATA *UdpSessionData; 108241675Suqs EFI_IPv4_ADDRESS *GatewayAddress; 109241675Suqs UINT32 DataLength; 110241675Suqs UINT32 FragmentCount; 111241675Suqs EFI_UDP4_FRAGMENT_DATA FragmentTable[1]; 112241675Suqs} EFI_UDP4_TRANSMIT_DATA; 113241675Suqs 114241675Suqstypedef struct { 115241675Suqs EFI_EVENT Event; 116241675Suqs EFI_STATUS Status; 117241675Suqs union { 118241675Suqs EFI_UDP4_RECEIVE_DATA *RxData; 119241675Suqs EFI_UDP4_TRANSMIT_DATA *TxData; 120241675Suqs } Packet; 121241675Suqs} EFI_UDP4_COMPLETION_TOKEN; 122241675Suqs 123241675Suqstypedef 124241675SuqsEFI_STATUS 125241675Suqs(EFIAPI *EFI_UDP4_TRANSMIT) ( 126241675Suqs IN struct _EFI_UDP4 *This, 127241675Suqs IN EFI_UDP4_COMPLETION_TOKEN *Token 128241675Suqs ); 129241675Suqs 130241675Suqstypedef 131241675SuqsEFI_STATUS 132241675Suqs(EFIAPI *EFI_UDP4_RECEIVE) ( 133241675Suqs IN struct _EFI_UDP4 *This, 134241675Suqs IN EFI_UDP4_COMPLETION_TOKEN *Token 135241675Suqs ); 136241675Suqs 137241675Suqstypedef 138241675SuqsEFI_STATUS 139241675Suqs(EFIAPI *EFI_UDP4_CANCEL)( 140241675Suqs IN struct _EFI_UDP4 *This, 141241675Suqs IN EFI_UDP4_COMPLETION_TOKEN *Token OPTIONAL 142241675Suqs ); 143241675Suqs 144241675Suqstypedef 145241675SuqsEFI_STATUS 146241675Suqs(EFIAPI *EFI_UDP4_POLL) ( 147241675Suqs IN struct _EFI_UDP4 *This 148241675Suqs ); 149241675Suqs 150241675Suqstypedef struct _EFI_UDP4 { 151241675Suqs EFI_UDP4_GET_MODE_DATA GetModeData; 152241675Suqs EFI_UDP4_CONFIGURE Configure; 153241675Suqs EFI_UDP4_GROUPS Groups; 154241675Suqs EFI_UDP4_ROUTES Routes; 155241675Suqs EFI_UDP4_TRANSMIT Transmit; 156241675Suqs EFI_UDP4_RECEIVE Receive; 157241675Suqs EFI_UDP4_CANCEL Cancel; 158241675Suqs EFI_UDP4_POLL Poll; 159241675Suqs} EFI_UDP4; 160241675Suqs 161241675Suqstypedef struct { 162241675Suqs BOOLEAN AcceptPromiscuous; 163241675Suqs BOOLEAN AcceptAnyPort; 164241675Suqs BOOLEAN AllowDuplicatePort; 165241675Suqs UINT8 TrafficClass; 166241675Suqs UINT8 HopLimit; 167241675Suqs UINT32 ReceiveTimeout; 168241675Suqs UINT32 TransmitTimeout; 169241675Suqs EFI_IPv6_ADDRESS StationAddress; 170241675Suqs UINT16 StationPort; 171241675Suqs EFI_IPv6_ADDRESS RemoteAddress; 172241675Suqs UINT16 RemotePort; 173241675Suqs} EFI_UDP6_CONFIG_DATA; 174241675Suqs 175241675Suqstypedef 176241675SuqsEFI_STATUS 177241675Suqs(EFIAPI *EFI_UDP6_GET_MODE_DATA) ( 178241675Suqs IN struct _EFI_UDP6 *This, 179241675Suqs OUT EFI_UDP6_CONFIG_DATA *Udp6ConfigData OPTIONAL, 180241675Suqs OUT EFI_IP6_MODE_DATA *Ip6ModeData OPTIONAL, 181241675Suqs OUT EFI_MANAGED_NETWORK_CONFIG_DATA *MnpConfigData OPTIONAL, 182241675Suqs OUT EFI_SIMPLE_NETWORK_MODE *SnpModeData OPTIONAL 183241675Suqs ); 184241675Suqs 185241675Suqstypedef 186241675SuqsEFI_STATUS 187241675Suqs(EFIAPI *EFI_UDP6_CONFIGURE) ( 188241675Suqs IN struct _EFI_UDP6 *This, 189241675Suqs IN EFI_UDP6_CONFIG_DATA *UdpConfigData OPTIONAL 190241675Suqs ); 191241675Suqs 192241675Suqstypedef 193241675SuqsEFI_STATUS 194241675Suqs(EFIAPI *EFI_UDP6_GROUPS) ( 195241675Suqs IN struct _EFI_UDP6 *This, 196241675Suqs IN BOOLEAN JoinFlag, 197241675Suqs IN EFI_IPv6_ADDRESS *MulticastAddress OPTIONAL 198241675Suqs ); 199241675Suqs 200241675Suqstypedef struct { 201241675Suqs EFI_IPv6_ADDRESS SourceAddress; 202241675Suqs UINT16 SourcePort; 203241675Suqs EFI_IPv6_ADDRESS DestinationAddress; 204241675Suqs UINT16 DestinationPort; 205241675Suqs} EFI_UDP6_SESSION_DATA; 206241675Suqs 207241675Suqstypedef struct { 208241675Suqs UINT32 FragmentLength; 209241675Suqs VOID *FragmentBuffer; 210241675Suqs} EFI_UDP6_FRAGMENT_DATA; 211241675Suqs 212241675Suqstypedef struct { 213241675Suqs EFI_TIME TimeStamp; 214241675Suqs EFI_EVENT RecycleSignal; 215241675Suqs EFI_UDP6_SESSION_DATA UdpSession; 216241675Suqs UINT32 DataLength; 217241675Suqs UINT32 FragmentCount; 218241675Suqs EFI_UDP6_FRAGMENT_DATA FragmentTable[1]; 219241675Suqs} EFI_UDP6_RECEIVE_DATA; 220241675Suqs 221241675Suqstypedef struct { 222241675Suqs EFI_UDP6_SESSION_DATA *UdpSessionData; 223241675Suqs UINT32 DataLength; 224241675Suqs UINT32 FragmentCount; 225241675Suqs EFI_UDP6_FRAGMENT_DATA FragmentTable[1]; 226241675Suqs} EFI_UDP6_TRANSMIT_DATA; 227241675Suqs 228241675Suqstypedef struct { 229241675Suqs EFI_EVENT Event; 230241675Suqs EFI_STATUS Status; 231241675Suqs union { 232241675Suqs EFI_UDP6_RECEIVE_DATA *RxData; 233241675Suqs EFI_UDP6_TRANSMIT_DATA *TxData; 234241675Suqs } Packet; 235241675Suqs} EFI_UDP6_COMPLETION_TOKEN; 236241675Suqs 237241675Suqstypedef 238241675SuqsEFI_STATUS 239241675Suqs(EFIAPI *EFI_UDP6_TRANSMIT) ( 240241675Suqs IN struct _EFI_UDP6 *This, 241241675Suqs IN EFI_UDP6_COMPLETION_TOKEN *Token 242241675Suqs ); 243241675Suqs 244241675Suqstypedef 245241675SuqsEFI_STATUS 246241675Suqs(EFIAPI *EFI_UDP6_RECEIVE) ( 247241675Suqs IN struct _EFI_UDP6 *This, 248241675Suqs IN EFI_UDP6_COMPLETION_TOKEN *Token 249241675Suqs ); 250241675Suqs 251241675Suqstypedef 252241675SuqsEFI_STATUS 253241675Suqs(EFIAPI *EFI_UDP6_CANCEL)( 254241675Suqs IN struct _EFI_UDP6 *This, 255241675Suqs IN EFI_UDP6_COMPLETION_TOKEN *Token OPTIONAL 256241675Suqs ); 257241675Suqs 258241675Suqstypedef 259241675SuqsEFI_STATUS 260241675Suqs(EFIAPI *EFI_UDP6_POLL) ( 261241675Suqs IN struct _EFI_UDP6 *This 262241675Suqs ); 263241675Suqs 264241675Suqstypedef struct _EFI_UDP6 { 265241675Suqs EFI_UDP6_GET_MODE_DATA GetModeData; 266241675Suqs EFI_UDP6_CONFIGURE Configure; 267241675Suqs EFI_UDP6_GROUPS Groups; 268241675Suqs EFI_UDP6_TRANSMIT Transmit; 269241675Suqs EFI_UDP6_RECEIVE Receive; 270241675Suqs EFI_UDP6_CANCEL Cancel; 271241675Suqs EFI_UDP6_POLL Poll; 272241675Suqs} EFI_UDP6; 273241675Suqs 274241675Suqs#endif /* _EFI_UDP_H */ 275241675Suqs