1342742Stsoome/* $FreeBSD: stable/11/stand/efi/include/efiudp.h 346482 2019-04-21 04:26:02Z kevans $ */ 2342742Stsoome#ifndef _EFI_UDP_H 3342742Stsoome#define _EFI_UDP_H 4342742Stsoome 5342742Stsoome 6342742Stsoome/*++ 7342742StsoomeCopyright (c) 2013 Intel Corporation 8342742Stsoome 9342742Stsoome--*/ 10342742Stsoome 11342742Stsoome#define EFI_UDP4_SERVICE_BINDING_PROTOCOL \ 12342742Stsoome { 0x83f01464, 0x99bd, 0x45e5, {0xb3, 0x83, 0xaf, 0x63, 0x05, 0xd8, 0xe9, 0xe6} } 13342742Stsoome 14342742Stsoome#define EFI_UDP4_PROTOCOL \ 15342742Stsoome { 0x3ad9df29, 0x4501, 0x478d, {0xb1, 0xf8, 0x7f, 0x7f, 0xe7, 0x0e, 0x50, 0xf3} } 16342742Stsoome 17342742Stsoome#define EFI_UDP6_SERVICE_BINDING_PROTOCOL \ 18342742Stsoome { 0x66ed4721, 0x3c98, 0x4d3e, {0x81, 0xe3, 0xd0, 0x3d, 0xd3, 0x9a, 0x72, 0x54} } 19342742Stsoome 20342742Stsoome#define EFI_UDP6_PROTOCOL \ 21342742Stsoome { 0x4f948815, 0xb4b9, 0x43cb, {0x8a, 0x33, 0x90, 0xe0, 0x60, 0xb3,0x49, 0x55} } 22342742Stsoome 23342742StsoomeINTERFACE_DECL(_EFI_UDP4); 24342742StsoomeINTERFACE_DECL(_EFI_UDP6); 25342742Stsoome 26342742Stsoometypedef struct { 27342742Stsoome BOOLEAN AcceptBroadcast; 28342742Stsoome BOOLEAN AcceptPromiscuous; 29342742Stsoome BOOLEAN AcceptAnyPort; 30342742Stsoome BOOLEAN AllowDuplicatePort; 31342742Stsoome UINT8 TypeOfService; 32342742Stsoome UINT8 TimeToLive; 33342742Stsoome BOOLEAN DoNotFragment; 34342742Stsoome UINT32 ReceiveTimeout; 35342742Stsoome UINT32 TransmitTimeout; 36342742Stsoome BOOLEAN UseDefaultAddress; 37342742Stsoome EFI_IPv4_ADDRESS StationAddress; 38342742Stsoome EFI_IPv4_ADDRESS SubnetMask; 39342742Stsoome UINT16 StationPort; 40342742Stsoome EFI_IPv4_ADDRESS RemoteAddress; 41342742Stsoome UINT16 RemotePort; 42342742Stsoome} EFI_UDP4_CONFIG_DATA; 43342742Stsoome 44342742Stsoometypedef 45342742StsoomeEFI_STATUS 46342742Stsoome(EFIAPI *EFI_UDP4_GET_MODE_DATA) ( 47342742Stsoome IN struct _EFI_UDP4 *This, 48342742Stsoome OUT EFI_UDP4_CONFIG_DATA *Udp4ConfigData OPTIONAL, 49342742Stsoome OUT EFI_IP4_MODE_DATA *Ip4ModeData OPTIONAL, 50342742Stsoome OUT EFI_MANAGED_NETWORK_CONFIG_DATA *MnpConfigData OPTIONAL, 51342742Stsoome OUT EFI_SIMPLE_NETWORK_MODE *SnpModeData OPTIONAL 52342742Stsoome ); 53342742Stsoome 54342742Stsoometypedef 55342742StsoomeEFI_STATUS 56342742Stsoome(EFIAPI *EFI_UDP4_CONFIGURE) ( 57342742Stsoome IN struct _EFI_UDP4 *This, 58342742Stsoome IN EFI_UDP4_CONFIG_DATA *UdpConfigData OPTIONAL 59342742Stsoome ); 60342742Stsoome 61342742Stsoometypedef 62342742StsoomeEFI_STATUS 63342742Stsoome(EFIAPI *EFI_UDP4_GROUPS) ( 64342742Stsoome IN struct _EFI_UDP4 *This, 65342742Stsoome IN BOOLEAN JoinFlag, 66342742Stsoome IN EFI_IPv4_ADDRESS *MulticastAddress OPTIONAL 67342742Stsoome ); 68342742Stsoome 69342742Stsoometypedef 70342742StsoomeEFI_STATUS 71342742Stsoome(EFIAPI *EFI_UDP4_ROUTES) ( 72342742Stsoome IN struct _EFI_UDP4 *This, 73342742Stsoome IN BOOLEAN DeleteRoute, 74342742Stsoome IN EFI_IPv4_ADDRESS *SubnetAddress, 75342742Stsoome IN EFI_IPv4_ADDRESS *SubnetMask, 76342742Stsoome IN EFI_IPv4_ADDRESS *GatewayAddress 77342742Stsoome ); 78342742Stsoome 79342742Stsoome#define EFI_NETWORK_UNREACHABLE EFIERR(100) 80342742Stsoome#define EFI_HOST_UNREACHABLE EFIERR(101) 81342742Stsoome#define EFI_PROTOCOL_UNREACHABLE EFIERR(102) 82342742Stsoome#define EFI_PORT_UNREACHABLE EFIERR(103) 83342742Stsoome 84342742Stsoometypedef struct { 85342742Stsoome EFI_IPv4_ADDRESS SourceAddress; 86342742Stsoome UINT16 SourcePort; 87342742Stsoome EFI_IPv4_ADDRESS DestinationAddress; 88342742Stsoome UINT16 DestinationPort; 89342742Stsoome} EFI_UDP4_SESSION_DATA; 90342742Stsoome 91342742Stsoometypedef struct { 92342742Stsoome UINT32 FragmentLength; 93342742Stsoome VOID *FragmentBuffer; 94342742Stsoome} EFI_UDP4_FRAGMENT_DATA; 95342742Stsoome 96342742Stsoometypedef struct { 97342742Stsoome EFI_TIME TimeStamp; 98342742Stsoome EFI_EVENT RecycleSignal; 99342742Stsoome EFI_UDP4_SESSION_DATA UdpSession; 100342742Stsoome UINT32 DataLength; 101342742Stsoome UINT32 FragmentCount; 102342742Stsoome EFI_UDP4_FRAGMENT_DATA FragmentTable[1]; 103342742Stsoome} EFI_UDP4_RECEIVE_DATA; 104342742Stsoome 105342742Stsoometypedef struct { 106342742Stsoome EFI_UDP4_SESSION_DATA *UdpSessionData; 107342742Stsoome EFI_IPv4_ADDRESS *GatewayAddress; 108342742Stsoome UINT32 DataLength; 109342742Stsoome UINT32 FragmentCount; 110342742Stsoome EFI_UDP4_FRAGMENT_DATA FragmentTable[1]; 111342742Stsoome} EFI_UDP4_TRANSMIT_DATA; 112342742Stsoome 113342742Stsoometypedef struct { 114342742Stsoome EFI_EVENT Event; 115342742Stsoome EFI_STATUS Status; 116342742Stsoome union { 117342742Stsoome EFI_UDP4_RECEIVE_DATA *RxData; 118342742Stsoome EFI_UDP4_TRANSMIT_DATA *TxData; 119342742Stsoome } Packet; 120342742Stsoome} EFI_UDP4_COMPLETION_TOKEN; 121342742Stsoome 122342742Stsoometypedef 123342742StsoomeEFI_STATUS 124342742Stsoome(EFIAPI *EFI_UDP4_TRANSMIT) ( 125342742Stsoome IN struct _EFI_UDP4 *This, 126342742Stsoome IN EFI_UDP4_COMPLETION_TOKEN *Token 127342742Stsoome ); 128342742Stsoome 129342742Stsoometypedef 130342742StsoomeEFI_STATUS 131342742Stsoome(EFIAPI *EFI_UDP4_RECEIVE) ( 132342742Stsoome IN struct _EFI_UDP4 *This, 133342742Stsoome IN EFI_UDP4_COMPLETION_TOKEN *Token 134342742Stsoome ); 135342742Stsoome 136342742Stsoometypedef 137342742StsoomeEFI_STATUS 138342742Stsoome(EFIAPI *EFI_UDP4_CANCEL)( 139342742Stsoome IN struct _EFI_UDP4 *This, 140342742Stsoome IN EFI_UDP4_COMPLETION_TOKEN *Token OPTIONAL 141342742Stsoome ); 142342742Stsoome 143342742Stsoometypedef 144342742StsoomeEFI_STATUS 145342742Stsoome(EFIAPI *EFI_UDP4_POLL) ( 146342742Stsoome IN struct _EFI_UDP4 *This 147342742Stsoome ); 148342742Stsoome 149342742Stsoometypedef struct _EFI_UDP4 { 150342742Stsoome EFI_UDP4_GET_MODE_DATA GetModeData; 151342742Stsoome EFI_UDP4_CONFIGURE Configure; 152342742Stsoome EFI_UDP4_GROUPS Groups; 153342742Stsoome EFI_UDP4_ROUTES Routes; 154342742Stsoome EFI_UDP4_TRANSMIT Transmit; 155342742Stsoome EFI_UDP4_RECEIVE Receive; 156342742Stsoome EFI_UDP4_CANCEL Cancel; 157342742Stsoome EFI_UDP4_POLL Poll; 158342742Stsoome} EFI_UDP4; 159342742Stsoome 160342742Stsoometypedef struct { 161342742Stsoome BOOLEAN AcceptPromiscuous; 162342742Stsoome BOOLEAN AcceptAnyPort; 163342742Stsoome BOOLEAN AllowDuplicatePort; 164342742Stsoome UINT8 TrafficClass; 165342742Stsoome UINT8 HopLimit; 166342742Stsoome UINT32 ReceiveTimeout; 167342742Stsoome UINT32 TransmitTimeout; 168342742Stsoome EFI_IPv6_ADDRESS StationAddress; 169342742Stsoome UINT16 StationPort; 170342742Stsoome EFI_IPv6_ADDRESS RemoteAddress; 171342742Stsoome UINT16 RemotePort; 172342742Stsoome} EFI_UDP6_CONFIG_DATA; 173342742Stsoome 174342742Stsoometypedef 175342742StsoomeEFI_STATUS 176342742Stsoome(EFIAPI *EFI_UDP6_GET_MODE_DATA) ( 177342742Stsoome IN struct _EFI_UDP6 *This, 178342742Stsoome OUT EFI_UDP6_CONFIG_DATA *Udp6ConfigData OPTIONAL, 179342742Stsoome OUT EFI_IP6_MODE_DATA *Ip6ModeData OPTIONAL, 180342742Stsoome OUT EFI_MANAGED_NETWORK_CONFIG_DATA *MnpConfigData OPTIONAL, 181342742Stsoome OUT EFI_SIMPLE_NETWORK_MODE *SnpModeData OPTIONAL 182342742Stsoome ); 183342742Stsoome 184342742Stsoometypedef 185342742StsoomeEFI_STATUS 186342742Stsoome(EFIAPI *EFI_UDP6_CONFIGURE) ( 187342742Stsoome IN struct _EFI_UDP6 *This, 188342742Stsoome IN EFI_UDP6_CONFIG_DATA *UdpConfigData OPTIONAL 189342742Stsoome ); 190342742Stsoome 191342742Stsoometypedef 192342742StsoomeEFI_STATUS 193342742Stsoome(EFIAPI *EFI_UDP6_GROUPS) ( 194342742Stsoome IN struct _EFI_UDP6 *This, 195342742Stsoome IN BOOLEAN JoinFlag, 196342742Stsoome IN EFI_IPv6_ADDRESS *MulticastAddress OPTIONAL 197342742Stsoome ); 198342742Stsoome 199342742Stsoometypedef struct { 200342742Stsoome EFI_IPv6_ADDRESS SourceAddress; 201342742Stsoome UINT16 SourcePort; 202342742Stsoome EFI_IPv6_ADDRESS DestinationAddress; 203342742Stsoome UINT16 DestinationPort; 204342742Stsoome} EFI_UDP6_SESSION_DATA; 205342742Stsoome 206342742Stsoometypedef struct { 207342742Stsoome UINT32 FragmentLength; 208342742Stsoome VOID *FragmentBuffer; 209342742Stsoome} EFI_UDP6_FRAGMENT_DATA; 210342742Stsoome 211342742Stsoometypedef struct { 212342742Stsoome EFI_TIME TimeStamp; 213342742Stsoome EFI_EVENT RecycleSignal; 214342742Stsoome EFI_UDP6_SESSION_DATA UdpSession; 215342742Stsoome UINT32 DataLength; 216342742Stsoome UINT32 FragmentCount; 217342742Stsoome EFI_UDP6_FRAGMENT_DATA FragmentTable[1]; 218342742Stsoome} EFI_UDP6_RECEIVE_DATA; 219342742Stsoome 220342742Stsoometypedef struct { 221342742Stsoome EFI_UDP6_SESSION_DATA *UdpSessionData; 222342742Stsoome UINT32 DataLength; 223342742Stsoome UINT32 FragmentCount; 224342742Stsoome EFI_UDP6_FRAGMENT_DATA FragmentTable[1]; 225342742Stsoome} EFI_UDP6_TRANSMIT_DATA; 226342742Stsoome 227342742Stsoometypedef struct { 228342742Stsoome EFI_EVENT Event; 229342742Stsoome EFI_STATUS Status; 230342742Stsoome union { 231342742Stsoome EFI_UDP6_RECEIVE_DATA *RxData; 232342742Stsoome EFI_UDP6_TRANSMIT_DATA *TxData; 233342742Stsoome } Packet; 234342742Stsoome} EFI_UDP6_COMPLETION_TOKEN; 235342742Stsoome 236342742Stsoometypedef 237342742StsoomeEFI_STATUS 238342742Stsoome(EFIAPI *EFI_UDP6_TRANSMIT) ( 239342742Stsoome IN struct _EFI_UDP6 *This, 240342742Stsoome IN EFI_UDP6_COMPLETION_TOKEN *Token 241342742Stsoome ); 242342742Stsoome 243342742Stsoometypedef 244342742StsoomeEFI_STATUS 245342742Stsoome(EFIAPI *EFI_UDP6_RECEIVE) ( 246342742Stsoome IN struct _EFI_UDP6 *This, 247342742Stsoome IN EFI_UDP6_COMPLETION_TOKEN *Token 248342742Stsoome ); 249342742Stsoome 250342742Stsoometypedef 251342742StsoomeEFI_STATUS 252342742Stsoome(EFIAPI *EFI_UDP6_CANCEL)( 253342742Stsoome IN struct _EFI_UDP6 *This, 254342742Stsoome IN EFI_UDP6_COMPLETION_TOKEN *Token OPTIONAL 255342742Stsoome ); 256342742Stsoome 257342742Stsoometypedef 258342742StsoomeEFI_STATUS 259342742Stsoome(EFIAPI *EFI_UDP6_POLL) ( 260342742Stsoome IN struct _EFI_UDP6 *This 261342742Stsoome ); 262342742Stsoome 263342742Stsoometypedef struct _EFI_UDP6 { 264342742Stsoome EFI_UDP6_GET_MODE_DATA GetModeData; 265342742Stsoome EFI_UDP6_CONFIGURE Configure; 266342742Stsoome EFI_UDP6_GROUPS Groups; 267342742Stsoome EFI_UDP6_TRANSMIT Transmit; 268342742Stsoome EFI_UDP6_RECEIVE Receive; 269342742Stsoome EFI_UDP6_CANCEL Cancel; 270342742Stsoome EFI_UDP6_POLL Poll; 271342742Stsoome} EFI_UDP6; 272342742Stsoome 273342742Stsoome#endif /* _EFI_UDP_H */ 274