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