1199767fToomas Soome#ifndef _EFI_UDP_H 2199767fToomas Soome#define _EFI_UDP_H 3199767fToomas Soome 4199767fToomas Soome 5199767fToomas Soome/*++ 6199767fToomas SoomeCopyright (c) 2013 Intel Corporation 7199767fToomas Soome 8199767fToomas Soome--*/ 9199767fToomas Soome 10199767fToomas Soome#define EFI_UDP4_SERVICE_BINDING_PROTOCOL \ 11199767fToomas Soome { 0x83f01464, 0x99bd, 0x45e5, {0xb3, 0x83, 0xaf, 0x63, 0x05, 0xd8, 0xe9, 0xe6} } 12199767fToomas Soome 13199767fToomas Soome#define EFI_UDP4_PROTOCOL \ 14199767fToomas Soome { 0x3ad9df29, 0x4501, 0x478d, {0xb1, 0xf8, 0x7f, 0x7f, 0xe7, 0x0e, 0x50, 0xf3} } 15199767fToomas Soome 16199767fToomas Soome#define EFI_UDP6_SERVICE_BINDING_PROTOCOL \ 17199767fToomas Soome { 0x66ed4721, 0x3c98, 0x4d3e, {0x81, 0xe3, 0xd0, 0x3d, 0xd3, 0x9a, 0x72, 0x54} } 18199767fToomas Soome 19199767fToomas Soome#define EFI_UDP6_PROTOCOL \ 20199767fToomas Soome { 0x4f948815, 0xb4b9, 0x43cb, {0x8a, 0x33, 0x90, 0xe0, 0x60, 0xb3,0x49, 0x55} } 21199767fToomas Soome 22199767fToomas SoomeINTERFACE_DECL(_EFI_UDP4); 23199767fToomas SoomeINTERFACE_DECL(_EFI_UDP6); 24199767fToomas Soome 25199767fToomas Soometypedef struct { 26199767fToomas Soome BOOLEAN AcceptBroadcast; 27199767fToomas Soome BOOLEAN AcceptPromiscuous; 28199767fToomas Soome BOOLEAN AcceptAnyPort; 29199767fToomas Soome BOOLEAN AllowDuplicatePort; 30199767fToomas Soome UINT8 TypeOfService; 31199767fToomas Soome UINT8 TimeToLive; 32199767fToomas Soome BOOLEAN DoNotFragment; 33199767fToomas Soome UINT32 ReceiveTimeout; 34199767fToomas Soome UINT32 TransmitTimeout; 35199767fToomas Soome BOOLEAN UseDefaultAddress; 36199767fToomas Soome EFI_IPv4_ADDRESS StationAddress; 37199767fToomas Soome EFI_IPv4_ADDRESS SubnetMask; 38199767fToomas Soome UINT16 StationPort; 39199767fToomas Soome EFI_IPv4_ADDRESS RemoteAddress; 40199767fToomas Soome UINT16 RemotePort; 41199767fToomas Soome} EFI_UDP4_CONFIG_DATA; 42199767fToomas Soome 43199767fToomas Soometypedef 44199767fToomas SoomeEFI_STATUS 45199767fToomas Soome(EFIAPI *EFI_UDP4_GET_MODE_DATA) ( 46199767fToomas Soome IN struct _EFI_UDP4 *This, 47199767fToomas Soome OUT EFI_UDP4_CONFIG_DATA *Udp4ConfigData OPTIONAL, 48199767fToomas Soome OUT EFI_IP4_MODE_DATA *Ip4ModeData OPTIONAL, 49199767fToomas Soome OUT EFI_MANAGED_NETWORK_CONFIG_DATA *MnpConfigData OPTIONAL, 50199767fToomas Soome OUT EFI_SIMPLE_NETWORK_MODE *SnpModeData OPTIONAL 51199767fToomas Soome ); 52199767fToomas Soome 53199767fToomas Soometypedef 54199767fToomas SoomeEFI_STATUS 55199767fToomas Soome(EFIAPI *EFI_UDP4_CONFIGURE) ( 56199767fToomas Soome IN struct _EFI_UDP4 *This, 57199767fToomas Soome IN EFI_UDP4_CONFIG_DATA *UdpConfigData OPTIONAL 58199767fToomas Soome ); 59199767fToomas Soome 60199767fToomas Soometypedef 61199767fToomas SoomeEFI_STATUS 62199767fToomas Soome(EFIAPI *EFI_UDP4_GROUPS) ( 63199767fToomas Soome IN struct _EFI_UDP4 *This, 64199767fToomas Soome IN BOOLEAN JoinFlag, 65199767fToomas Soome IN EFI_IPv4_ADDRESS *MulticastAddress OPTIONAL 66199767fToomas Soome ); 67199767fToomas Soome 68199767fToomas Soometypedef 69199767fToomas SoomeEFI_STATUS 70199767fToomas Soome(EFIAPI *EFI_UDP4_ROUTES) ( 71199767fToomas Soome IN struct _EFI_UDP4 *This, 72199767fToomas Soome IN BOOLEAN DeleteRoute, 73199767fToomas Soome IN EFI_IPv4_ADDRESS *SubnetAddress, 74199767fToomas Soome IN EFI_IPv4_ADDRESS *SubnetMask, 75199767fToomas Soome IN EFI_IPv4_ADDRESS *GatewayAddress 76199767fToomas Soome ); 77199767fToomas Soome 78199767fToomas Soome#define EFI_NETWORK_UNREACHABLE EFIERR(100) 79199767fToomas Soome#define EFI_HOST_UNREACHABLE EFIERR(101) 80199767fToomas Soome#define EFI_PROTOCOL_UNREACHABLE EFIERR(102) 81199767fToomas Soome#define EFI_PORT_UNREACHABLE EFIERR(103) 82199767fToomas Soome 83199767fToomas Soometypedef struct { 84199767fToomas Soome EFI_IPv4_ADDRESS SourceAddress; 85199767fToomas Soome UINT16 SourcePort; 86199767fToomas Soome EFI_IPv4_ADDRESS DestinationAddress; 87199767fToomas Soome UINT16 DestinationPort; 88199767fToomas Soome} EFI_UDP4_SESSION_DATA; 89199767fToomas Soome 90199767fToomas Soometypedef struct { 91199767fToomas Soome UINT32 FragmentLength; 92199767fToomas Soome VOID *FragmentBuffer; 93199767fToomas Soome} EFI_UDP4_FRAGMENT_DATA; 94199767fToomas Soome 95199767fToomas Soometypedef struct { 96199767fToomas Soome EFI_TIME TimeStamp; 97199767fToomas Soome EFI_EVENT RecycleSignal; 98199767fToomas Soome EFI_UDP4_SESSION_DATA UdpSession; 99199767fToomas Soome UINT32 DataLength; 100199767fToomas Soome UINT32 FragmentCount; 101199767fToomas Soome EFI_UDP4_FRAGMENT_DATA FragmentTable[1]; 102199767fToomas Soome} EFI_UDP4_RECEIVE_DATA; 103199767fToomas Soome 104199767fToomas Soometypedef struct { 105199767fToomas Soome EFI_UDP4_SESSION_DATA *UdpSessionData; 106199767fToomas Soome EFI_IPv4_ADDRESS *GatewayAddress; 107199767fToomas Soome UINT32 DataLength; 108199767fToomas Soome UINT32 FragmentCount; 109199767fToomas Soome EFI_UDP4_FRAGMENT_DATA FragmentTable[1]; 110199767fToomas Soome} EFI_UDP4_TRANSMIT_DATA; 111199767fToomas Soome 112199767fToomas Soometypedef struct { 113199767fToomas Soome EFI_EVENT Event; 114199767fToomas Soome EFI_STATUS Status; 115199767fToomas Soome union { 116199767fToomas Soome EFI_UDP4_RECEIVE_DATA *RxData; 117199767fToomas Soome EFI_UDP4_TRANSMIT_DATA *TxData; 118199767fToomas Soome } Packet; 119199767fToomas Soome} EFI_UDP4_COMPLETION_TOKEN; 120199767fToomas Soome 121199767fToomas Soometypedef 122199767fToomas SoomeEFI_STATUS 123199767fToomas Soome(EFIAPI *EFI_UDP4_TRANSMIT) ( 124199767fToomas Soome IN struct _EFI_UDP4 *This, 125199767fToomas Soome IN EFI_UDP4_COMPLETION_TOKEN *Token 126199767fToomas Soome ); 127199767fToomas Soome 128199767fToomas Soometypedef 129199767fToomas SoomeEFI_STATUS 130199767fToomas Soome(EFIAPI *EFI_UDP4_RECEIVE) ( 131199767fToomas Soome IN struct _EFI_UDP4 *This, 132199767fToomas Soome IN EFI_UDP4_COMPLETION_TOKEN *Token 133199767fToomas Soome ); 134199767fToomas Soome 135199767fToomas Soometypedef 136199767fToomas SoomeEFI_STATUS 137199767fToomas Soome(EFIAPI *EFI_UDP4_CANCEL)( 138199767fToomas Soome IN struct _EFI_UDP4 *This, 139199767fToomas Soome IN EFI_UDP4_COMPLETION_TOKEN *Token OPTIONAL 140199767fToomas Soome ); 141199767fToomas Soome 142199767fToomas Soometypedef 143199767fToomas SoomeEFI_STATUS 144199767fToomas Soome(EFIAPI *EFI_UDP4_POLL) ( 145199767fToomas Soome IN struct _EFI_UDP4 *This 146199767fToomas Soome ); 147199767fToomas Soome 148199767fToomas Soometypedef struct _EFI_UDP4 { 149199767fToomas Soome EFI_UDP4_GET_MODE_DATA GetModeData; 150199767fToomas Soome EFI_UDP4_CONFIGURE Configure; 151199767fToomas Soome EFI_UDP4_GROUPS Groups; 152199767fToomas Soome EFI_UDP4_ROUTES Routes; 153199767fToomas Soome EFI_UDP4_TRANSMIT Transmit; 154199767fToomas Soome EFI_UDP4_RECEIVE Receive; 155199767fToomas Soome EFI_UDP4_CANCEL Cancel; 156199767fToomas Soome EFI_UDP4_POLL Poll; 157199767fToomas Soome} EFI_UDP4; 158199767fToomas Soome 159199767fToomas Soometypedef struct { 160199767fToomas Soome BOOLEAN AcceptPromiscuous; 161199767fToomas Soome BOOLEAN AcceptAnyPort; 162199767fToomas Soome BOOLEAN AllowDuplicatePort; 163199767fToomas Soome UINT8 TrafficClass; 164199767fToomas Soome UINT8 HopLimit; 165199767fToomas Soome UINT32 ReceiveTimeout; 166199767fToomas Soome UINT32 TransmitTimeout; 167199767fToomas Soome EFI_IPv6_ADDRESS StationAddress; 168199767fToomas Soome UINT16 StationPort; 169199767fToomas Soome EFI_IPv6_ADDRESS RemoteAddress; 170199767fToomas Soome UINT16 RemotePort; 171199767fToomas Soome} EFI_UDP6_CONFIG_DATA; 172199767fToomas Soome 173199767fToomas Soometypedef 174199767fToomas SoomeEFI_STATUS 175199767fToomas Soome(EFIAPI *EFI_UDP6_GET_MODE_DATA) ( 176199767fToomas Soome IN struct _EFI_UDP6 *This, 177199767fToomas Soome OUT EFI_UDP6_CONFIG_DATA *Udp6ConfigData OPTIONAL, 178199767fToomas Soome OUT EFI_IP6_MODE_DATA *Ip6ModeData OPTIONAL, 179199767fToomas Soome OUT EFI_MANAGED_NETWORK_CONFIG_DATA *MnpConfigData OPTIONAL, 180199767fToomas Soome OUT EFI_SIMPLE_NETWORK_MODE *SnpModeData OPTIONAL 181199767fToomas Soome ); 182199767fToomas Soome 183199767fToomas Soometypedef 184199767fToomas SoomeEFI_STATUS 185199767fToomas Soome(EFIAPI *EFI_UDP6_CONFIGURE) ( 186199767fToomas Soome IN struct _EFI_UDP6 *This, 187199767fToomas Soome IN EFI_UDP6_CONFIG_DATA *UdpConfigData OPTIONAL 188199767fToomas Soome ); 189199767fToomas Soome 190199767fToomas Soometypedef 191199767fToomas SoomeEFI_STATUS 192199767fToomas Soome(EFIAPI *EFI_UDP6_GROUPS) ( 193199767fToomas Soome IN struct _EFI_UDP6 *This, 194199767fToomas Soome IN BOOLEAN JoinFlag, 195199767fToomas Soome IN EFI_IPv6_ADDRESS *MulticastAddress OPTIONAL 196199767fToomas Soome ); 197199767fToomas Soome 198199767fToomas Soometypedef struct { 199199767fToomas Soome EFI_IPv6_ADDRESS SourceAddress; 200199767fToomas Soome UINT16 SourcePort; 201199767fToomas Soome EFI_IPv6_ADDRESS DestinationAddress; 202199767fToomas Soome UINT16 DestinationPort; 203199767fToomas Soome} EFI_UDP6_SESSION_DATA; 204199767fToomas Soome 205199767fToomas Soometypedef struct { 206199767fToomas Soome UINT32 FragmentLength; 207199767fToomas Soome VOID *FragmentBuffer; 208199767fToomas Soome} EFI_UDP6_FRAGMENT_DATA; 209199767fToomas Soome 210199767fToomas Soometypedef struct { 211199767fToomas Soome EFI_TIME TimeStamp; 212199767fToomas Soome EFI_EVENT RecycleSignal; 213199767fToomas Soome EFI_UDP6_SESSION_DATA UdpSession; 214199767fToomas Soome UINT32 DataLength; 215199767fToomas Soome UINT32 FragmentCount; 216199767fToomas Soome EFI_UDP6_FRAGMENT_DATA FragmentTable[1]; 217199767fToomas Soome} EFI_UDP6_RECEIVE_DATA; 218199767fToomas Soome 219199767fToomas Soometypedef struct { 220199767fToomas Soome EFI_UDP6_SESSION_DATA *UdpSessionData; 221199767fToomas Soome UINT32 DataLength; 222199767fToomas Soome UINT32 FragmentCount; 223199767fToomas Soome EFI_UDP6_FRAGMENT_DATA FragmentTable[1]; 224199767fToomas Soome} EFI_UDP6_TRANSMIT_DATA; 225199767fToomas Soome 226199767fToomas Soometypedef struct { 227199767fToomas Soome EFI_EVENT Event; 228199767fToomas Soome EFI_STATUS Status; 229199767fToomas Soome union { 230199767fToomas Soome EFI_UDP6_RECEIVE_DATA *RxData; 231199767fToomas Soome EFI_UDP6_TRANSMIT_DATA *TxData; 232199767fToomas Soome } Packet; 233199767fToomas Soome} EFI_UDP6_COMPLETION_TOKEN; 234199767fToomas Soome 235199767fToomas Soometypedef 236199767fToomas SoomeEFI_STATUS 237199767fToomas Soome(EFIAPI *EFI_UDP6_TRANSMIT) ( 238199767fToomas Soome IN struct _EFI_UDP6 *This, 239199767fToomas Soome IN EFI_UDP6_COMPLETION_TOKEN *Token 240199767fToomas Soome ); 241199767fToomas Soome 242199767fToomas Soometypedef 243199767fToomas SoomeEFI_STATUS 244199767fToomas Soome(EFIAPI *EFI_UDP6_RECEIVE) ( 245199767fToomas Soome IN struct _EFI_UDP6 *This, 246199767fToomas Soome IN EFI_UDP6_COMPLETION_TOKEN *Token 247199767fToomas Soome ); 248199767fToomas Soome 249199767fToomas Soometypedef 250199767fToomas SoomeEFI_STATUS 251199767fToomas Soome(EFIAPI *EFI_UDP6_CANCEL)( 252199767fToomas Soome IN struct _EFI_UDP6 *This, 253199767fToomas Soome IN EFI_UDP6_COMPLETION_TOKEN *Token OPTIONAL 254199767fToomas Soome ); 255199767fToomas Soome 256199767fToomas Soometypedef 257199767fToomas SoomeEFI_STATUS 258199767fToomas Soome(EFIAPI *EFI_UDP6_POLL) ( 259199767fToomas Soome IN struct _EFI_UDP6 *This 260199767fToomas Soome ); 261199767fToomas Soome 262199767fToomas Soometypedef struct _EFI_UDP6 { 263199767fToomas Soome EFI_UDP6_GET_MODE_DATA GetModeData; 264199767fToomas Soome EFI_UDP6_CONFIGURE Configure; 265199767fToomas Soome EFI_UDP6_GROUPS Groups; 266199767fToomas Soome EFI_UDP6_TRANSMIT Transmit; 267199767fToomas Soome EFI_UDP6_RECEIVE Receive; 268199767fToomas Soome EFI_UDP6_CANCEL Cancel; 269199767fToomas Soome EFI_UDP6_POLL Poll; 270199767fToomas Soome} EFI_UDP6; 271199767fToomas Soome 272199767fToomas Soome#endif /* _EFI_UDP_H */ 273