1*4a5d661aSToomas Soome #ifndef _EFI_TCP_H 2*4a5d661aSToomas Soome #define _EFI_TCP_H 3*4a5d661aSToomas Soome 4*4a5d661aSToomas Soome /*++ 5*4a5d661aSToomas Soome Copyright (c) 2013 Intel Corporation 6*4a5d661aSToomas Soome 7*4a5d661aSToomas Soome --*/ 8*4a5d661aSToomas Soome 9*4a5d661aSToomas Soome #define EFI_TCP4_SERVICE_BINDING_PROTOCOL \ 10*4a5d661aSToomas Soome { 0x00720665, 0x67eb, 0x4a99, {0xba, 0xf7, 0xd3, 0xc3, 0x3a, 0x1c,0x7c, 0xc9}} 11*4a5d661aSToomas Soome 12*4a5d661aSToomas Soome #define EFI_TCP4_PROTOCOL \ 13*4a5d661aSToomas Soome { 0x65530bc7, 0xa359, 0x410f, {0xb0, 0x10, 0x5a, 0xad, 0xc7, 0xec, 0x2b, 0x62}} 14*4a5d661aSToomas Soome 15*4a5d661aSToomas Soome #define EFI_TCP6_SERVICE_BINDING_PROTOCOL \ 16*4a5d661aSToomas Soome { 0xec20eb79, 0x6c1a, 0x4664, {0x9a, 0xd, 0xd2, 0xe4, 0xcc, 0x16, 0xd6, 0x64}} 17*4a5d661aSToomas Soome 18*4a5d661aSToomas Soome #define EFI_TCP6_PROTOCOL \ 19*4a5d661aSToomas Soome { 0x46e44855, 0xbd60, 0x4ab7, {0xab, 0xd, 0xa6, 0x79, 0xb9, 0x44, 0x7d, 0x77}} 20*4a5d661aSToomas Soome 21*4a5d661aSToomas Soome INTERFACE_DECL(_EFI_TCP4); 22*4a5d661aSToomas Soome INTERFACE_DECL(_EFI_TCP6); 23*4a5d661aSToomas Soome 24*4a5d661aSToomas Soome typedef struct { 25*4a5d661aSToomas Soome BOOLEAN UseDefaultAddress; 26*4a5d661aSToomas Soome EFI_IPv4_ADDRESS StationAddress; 27*4a5d661aSToomas Soome EFI_IPv4_ADDRESS SubnetMask; 28*4a5d661aSToomas Soome UINT16 StationPort; 29*4a5d661aSToomas Soome EFI_IPv4_ADDRESS RemoteAddress; 30*4a5d661aSToomas Soome UINT16 RemotePort; 31*4a5d661aSToomas Soome BOOLEAN ActiveFlag; 32*4a5d661aSToomas Soome } EFI_TCP4_ACCESS_POINT; 33*4a5d661aSToomas Soome 34*4a5d661aSToomas Soome typedef struct { 35*4a5d661aSToomas Soome UINT32 ReceiveBufferSize; 36*4a5d661aSToomas Soome UINT32 SendBufferSize; 37*4a5d661aSToomas Soome UINT32 MaxSynBackLog; 38*4a5d661aSToomas Soome UINT32 ConnectionTimeout; 39*4a5d661aSToomas Soome UINT32 DataRetries; 40*4a5d661aSToomas Soome UINT32 FinTimeout; 41*4a5d661aSToomas Soome UINT32 TimeWaitTimeout; 42*4a5d661aSToomas Soome UINT32 KeepAliveProbes; 43*4a5d661aSToomas Soome UINT32 KeepAliveTime; 44*4a5d661aSToomas Soome UINT32 KeepAliveInterval; 45*4a5d661aSToomas Soome BOOLEAN EnableNagle; 46*4a5d661aSToomas Soome BOOLEAN EnableTimeStamp; 47*4a5d661aSToomas Soome BOOLEAN EnableWindowScaling; 48*4a5d661aSToomas Soome BOOLEAN EnableSelectiveAck; 49*4a5d661aSToomas Soome BOOLEAN EnablePAthMtuDiscovery; 50*4a5d661aSToomas Soome } EFI_TCP4_OPTION; 51*4a5d661aSToomas Soome 52*4a5d661aSToomas Soome typedef struct { 53*4a5d661aSToomas Soome // Receiving Filters 54*4a5d661aSToomas Soome // I/O parameters 55*4a5d661aSToomas Soome UINT8 TypeOfService; 56*4a5d661aSToomas Soome UINT8 TimeToLive; 57*4a5d661aSToomas Soome 58*4a5d661aSToomas Soome // Access Point 59*4a5d661aSToomas Soome EFI_TCP4_ACCESS_POINT AccessPoint; 60*4a5d661aSToomas Soome 61*4a5d661aSToomas Soome // TCP Control Options 62*4a5d661aSToomas Soome EFI_TCP4_OPTION *ControlOption; 63*4a5d661aSToomas Soome } EFI_TCP4_CONFIG_DATA; 64*4a5d661aSToomas Soome 65*4a5d661aSToomas Soome typedef enum { 66*4a5d661aSToomas Soome Tcp4StateClosed = 0, 67*4a5d661aSToomas Soome Tcp4StateListen = 1, 68*4a5d661aSToomas Soome Tcp4StateSynSent = 2, 69*4a5d661aSToomas Soome Tcp4StateSynReceived = 3, 70*4a5d661aSToomas Soome Tcp4StateEstablished = 4, 71*4a5d661aSToomas Soome Tcp4StateFinWait1 = 5, 72*4a5d661aSToomas Soome Tcp4StateFinWait2 = 6, 73*4a5d661aSToomas Soome Tcp4StateClosing = 7, 74*4a5d661aSToomas Soome Tcp4StateTimeWait = 8, 75*4a5d661aSToomas Soome Tcp4StateCloseWait = 9, 76*4a5d661aSToomas Soome Tcp4StateLastAck = 10 77*4a5d661aSToomas Soome } EFI_TCP4_CONNECTION_STATE; 78*4a5d661aSToomas Soome 79*4a5d661aSToomas Soome typedef 80*4a5d661aSToomas Soome EFI_STATUS 81*4a5d661aSToomas Soome (EFIAPI *EFI_TCP4_GET_MODE_DATA) ( 82*4a5d661aSToomas Soome IN struct _EFI_TCP4 *This, 83*4a5d661aSToomas Soome OUT EFI_TCP4_CONNECTION_STATE *Tcp4State OPTIONAL, 84*4a5d661aSToomas Soome OUT EFI_TCP4_CONFIG_DATA *Tcp4ConfigData OPTIONAL, 85*4a5d661aSToomas Soome OUT EFI_IP4_MODE_DATA *Ip4ModeData OPTIONAL, 86*4a5d661aSToomas Soome OUT EFI_MANAGED_NETWORK_CONFIG_DATA *MnpConfigData OPTIONAL, 87*4a5d661aSToomas Soome OUT EFI_SIMPLE_NETWORK_MODE *SnpModeData OPTIONAL 88*4a5d661aSToomas Soome ); 89*4a5d661aSToomas Soome 90*4a5d661aSToomas Soome typedef 91*4a5d661aSToomas Soome EFI_STATUS 92*4a5d661aSToomas Soome (EFIAPI *EFI_TCP4_CONFIGURE) ( 93*4a5d661aSToomas Soome IN struct _EFI_TCP4 *This, 94*4a5d661aSToomas Soome IN EFI_TCP4_CONFIG_DATA *TcpConfigData OPTIONAL 95*4a5d661aSToomas Soome ); 96*4a5d661aSToomas Soome 97*4a5d661aSToomas Soome typedef 98*4a5d661aSToomas Soome EFI_STATUS 99*4a5d661aSToomas Soome (EFIAPI *EFI_TCP4_ROUTES) ( 100*4a5d661aSToomas Soome IN struct _EFI_TCP4 *This, 101*4a5d661aSToomas Soome IN BOOLEAN DeleteRoute, 102*4a5d661aSToomas Soome IN EFI_IPv4_ADDRESS *SubnetAddress, 103*4a5d661aSToomas Soome IN EFI_IPv4_ADDRESS *SubnetMask, 104*4a5d661aSToomas Soome IN EFI_IPv4_ADDRESS *GatewayAddress 105*4a5d661aSToomas Soome ); 106*4a5d661aSToomas Soome 107*4a5d661aSToomas Soome typedef struct { 108*4a5d661aSToomas Soome EFI_EVENT Event; 109*4a5d661aSToomas Soome EFI_STATUS Status; 110*4a5d661aSToomas Soome } EFI_TCP4_COMPLETION_TOKEN; 111*4a5d661aSToomas Soome 112*4a5d661aSToomas Soome typedef struct { 113*4a5d661aSToomas Soome EFI_TCP4_COMPLETION_TOKEN CompletionToken; 114*4a5d661aSToomas Soome } EFI_TCP4_CONNECTION_TOKEN; 115*4a5d661aSToomas Soome 116*4a5d661aSToomas Soome typedef 117*4a5d661aSToomas Soome EFI_STATUS 118*4a5d661aSToomas Soome (EFIAPI *EFI_TCP4_CONNECT) ( 119*4a5d661aSToomas Soome IN struct _EFI_TCP4 *This, 120*4a5d661aSToomas Soome IN EFI_TCP4_CONNECTION_TOKEN *ConnectionToken 121*4a5d661aSToomas Soome ); 122*4a5d661aSToomas Soome 123*4a5d661aSToomas Soome typedef struct { 124*4a5d661aSToomas Soome EFI_TCP4_COMPLETION_TOKEN CompletionToken; 125*4a5d661aSToomas Soome EFI_HANDLE NewChildHandle; 126*4a5d661aSToomas Soome } EFI_TCP4_LISTEN_TOKEN; 127*4a5d661aSToomas Soome 128*4a5d661aSToomas Soome typedef 129*4a5d661aSToomas Soome EFI_STATUS 130*4a5d661aSToomas Soome (EFIAPI *EFI_TCP4_ACCEPT) ( 131*4a5d661aSToomas Soome IN struct _EFI_TCP4 *This, 132*4a5d661aSToomas Soome IN EFI_TCP4_LISTEN_TOKEN *ListenToken 133*4a5d661aSToomas Soome ); 134*4a5d661aSToomas Soome 135*4a5d661aSToomas Soome #define EFI_CONNECTION_FIN EFIERR(104) 136*4a5d661aSToomas Soome #define EFI_CONNECTION_RESET EFIERR(105) 137*4a5d661aSToomas Soome #define EFI_CONNECTION_REFUSED EFIERR(106) 138*4a5d661aSToomas Soome 139*4a5d661aSToomas Soome typedef struct { 140*4a5d661aSToomas Soome UINT32 FragmentLength; 141*4a5d661aSToomas Soome VOID *FragmentBuffer; 142*4a5d661aSToomas Soome } EFI_TCP4_FRAGMENT_DATA; 143*4a5d661aSToomas Soome 144*4a5d661aSToomas Soome typedef struct { 145*4a5d661aSToomas Soome BOOLEAN UrgentFlag; 146*4a5d661aSToomas Soome UINT32 DataLength; 147*4a5d661aSToomas Soome UINT32 FragmentCount; 148*4a5d661aSToomas Soome EFI_TCP4_FRAGMENT_DATA FragmentTable[1]; 149*4a5d661aSToomas Soome } EFI_TCP4_RECEIVE_DATA; 150*4a5d661aSToomas Soome 151*4a5d661aSToomas Soome typedef struct { 152*4a5d661aSToomas Soome BOOLEAN Push; 153*4a5d661aSToomas Soome BOOLEAN Urgent; 154*4a5d661aSToomas Soome UINT32 DataLength; 155*4a5d661aSToomas Soome UINT32 FragmentCount; 156*4a5d661aSToomas Soome EFI_TCP4_FRAGMENT_DATA FragmentTable[1]; 157*4a5d661aSToomas Soome } EFI_TCP4_TRANSMIT_DATA; 158*4a5d661aSToomas Soome 159*4a5d661aSToomas Soome typedef struct { 160*4a5d661aSToomas Soome EFI_TCP4_COMPLETION_TOKEN CompletionToken; 161*4a5d661aSToomas Soome union { 162*4a5d661aSToomas Soome EFI_TCP4_RECEIVE_DATA *RxData; 163*4a5d661aSToomas Soome EFI_TCP4_TRANSMIT_DATA *TxData; 164*4a5d661aSToomas Soome } Packet; 165*4a5d661aSToomas Soome } EFI_TCP4_IO_TOKEN; 166*4a5d661aSToomas Soome 167*4a5d661aSToomas Soome typedef 168*4a5d661aSToomas Soome EFI_STATUS 169*4a5d661aSToomas Soome (EFIAPI *EFI_TCP4_TRANSMIT) ( 170*4a5d661aSToomas Soome IN struct _EFI_TCP4 *This, 171*4a5d661aSToomas Soome IN EFI_TCP4_IO_TOKEN *Token 172*4a5d661aSToomas Soome ); 173*4a5d661aSToomas Soome 174*4a5d661aSToomas Soome typedef 175*4a5d661aSToomas Soome EFI_STATUS 176*4a5d661aSToomas Soome (EFIAPI *EFI_TCP4_RECEIVE) ( 177*4a5d661aSToomas Soome IN struct _EFI_TCP4 *This, 178*4a5d661aSToomas Soome IN EFI_TCP4_IO_TOKEN *Token 179*4a5d661aSToomas Soome ); 180*4a5d661aSToomas Soome 181*4a5d661aSToomas Soome typedef struct { 182*4a5d661aSToomas Soome EFI_TCP4_COMPLETION_TOKEN CompletionToken; 183*4a5d661aSToomas Soome BOOLEAN AbortOnClose; 184*4a5d661aSToomas Soome } EFI_TCP4_CLOSE_TOKEN; 185*4a5d661aSToomas Soome 186*4a5d661aSToomas Soome typedef 187*4a5d661aSToomas Soome EFI_STATUS 188*4a5d661aSToomas Soome (EFIAPI *EFI_TCP4_CLOSE)( 189*4a5d661aSToomas Soome IN struct _EFI_TCP4 *This, 190*4a5d661aSToomas Soome IN EFI_TCP4_CLOSE_TOKEN *CloseToken 191*4a5d661aSToomas Soome ); 192*4a5d661aSToomas Soome 193*4a5d661aSToomas Soome typedef 194*4a5d661aSToomas Soome EFI_STATUS 195*4a5d661aSToomas Soome (EFIAPI *EFI_TCP4_CANCEL)( 196*4a5d661aSToomas Soome IN struct _EFI_TCP4 *This, 197*4a5d661aSToomas Soome IN EFI_TCP4_COMPLETION_TOKEN *Token OPTIONAL 198*4a5d661aSToomas Soome ); 199*4a5d661aSToomas Soome 200*4a5d661aSToomas Soome typedef 201*4a5d661aSToomas Soome EFI_STATUS 202*4a5d661aSToomas Soome (EFIAPI *EFI_TCP4_POLL) ( 203*4a5d661aSToomas Soome IN struct _EFI_TCP4 *This 204*4a5d661aSToomas Soome ); 205*4a5d661aSToomas Soome 206*4a5d661aSToomas Soome typedef struct _EFI_TCP4 { 207*4a5d661aSToomas Soome EFI_TCP4_GET_MODE_DATA GetModeData; 208*4a5d661aSToomas Soome EFI_TCP4_CONFIGURE Configure; 209*4a5d661aSToomas Soome EFI_TCP4_ROUTES Routes; 210*4a5d661aSToomas Soome EFI_TCP4_CONNECT Connect; 211*4a5d661aSToomas Soome EFI_TCP4_ACCEPT Accept; 212*4a5d661aSToomas Soome EFI_TCP4_TRANSMIT Transmit; 213*4a5d661aSToomas Soome EFI_TCP4_RECEIVE Receive; 214*4a5d661aSToomas Soome EFI_TCP4_CLOSE Close; 215*4a5d661aSToomas Soome EFI_TCP4_CANCEL Cancel; 216*4a5d661aSToomas Soome EFI_TCP4_POLL Poll; 217*4a5d661aSToomas Soome } EFI_TCP4; 218*4a5d661aSToomas Soome 219*4a5d661aSToomas Soome typedef enum { 220*4a5d661aSToomas Soome Tcp6StateClosed = 0, 221*4a5d661aSToomas Soome Tcp6StateListen = 1, 222*4a5d661aSToomas Soome Tcp6StateSynSent = 2, 223*4a5d661aSToomas Soome Tcp6StateSynReceived = 3, 224*4a5d661aSToomas Soome Tcp6StateEstablished = 4, 225*4a5d661aSToomas Soome Tcp6StateFinWait1 = 5, 226*4a5d661aSToomas Soome Tcp6StateFinWait2 = 6, 227*4a5d661aSToomas Soome Tcp6StateClosing = 7, 228*4a5d661aSToomas Soome Tcp6StateTimeWait = 8, 229*4a5d661aSToomas Soome Tcp6StateCloseWait = 9, 230*4a5d661aSToomas Soome Tcp6StateLastAck = 10 231*4a5d661aSToomas Soome } EFI_TCP6_CONNECTION_STATE; 232*4a5d661aSToomas Soome 233*4a5d661aSToomas Soome typedef struct { 234*4a5d661aSToomas Soome EFI_IPv6_ADDRESS StationAddress; 235*4a5d661aSToomas Soome UINT16 StationPort; 236*4a5d661aSToomas Soome EFI_IPv6_ADDRESS RemoteAddress; 237*4a5d661aSToomas Soome UINT16 RemotePort; 238*4a5d661aSToomas Soome BOOLEAN ActiveFlag; 239*4a5d661aSToomas Soome } EFI_TCP6_ACCESS_POINT; 240*4a5d661aSToomas Soome 241*4a5d661aSToomas Soome typedef struct { 242*4a5d661aSToomas Soome UINT32 ReceiveBufferSize; 243*4a5d661aSToomas Soome UINT32 SendBufferSize; 244*4a5d661aSToomas Soome UINT32 MaxSynBackLog; 245*4a5d661aSToomas Soome UINT32 ConnectionTimeout; 246*4a5d661aSToomas Soome UINT32 DataRetries; 247*4a5d661aSToomas Soome UINT32 FinTimeout; 248*4a5d661aSToomas Soome UINT32 TimeWaitTimeout; 249*4a5d661aSToomas Soome UINT32 KeepAliveProbes; 250*4a5d661aSToomas Soome UINT32 KeepAliveTime; 251*4a5d661aSToomas Soome UINT32 KeepAliveInterval; 252*4a5d661aSToomas Soome BOOLEAN EnableNagle; 253*4a5d661aSToomas Soome BOOLEAN EnableTimeStamp; 254*4a5d661aSToomas Soome BOOLEAN EnableWindbowScaling; 255*4a5d661aSToomas Soome BOOLEAN EnableSelectiveAck; 256*4a5d661aSToomas Soome BOOLEAN EnablePathMtuDiscovery; 257*4a5d661aSToomas Soome } EFI_TCP6_OPTION; 258*4a5d661aSToomas Soome 259*4a5d661aSToomas Soome typedef struct { 260*4a5d661aSToomas Soome UINT8 TrafficClass; 261*4a5d661aSToomas Soome UINT8 HopLimit; 262*4a5d661aSToomas Soome EFI_TCP6_ACCESS_POINT AccessPoint; 263*4a5d661aSToomas Soome EFI_TCP6_OPTION *ControlOption; 264*4a5d661aSToomas Soome } EFI_TCP6_CONFIG_DATA; 265*4a5d661aSToomas Soome 266*4a5d661aSToomas Soome typedef 267*4a5d661aSToomas Soome EFI_STATUS 268*4a5d661aSToomas Soome (EFIAPI *EFI_TCP6_GET_MODE_DATA) ( 269*4a5d661aSToomas Soome IN struct _EFI_TCP6 *This, 270*4a5d661aSToomas Soome OUT EFI_TCP6_CONNECTION_STATE *Tcp6State OPTIONAL, 271*4a5d661aSToomas Soome OUT EFI_TCP6_CONFIG_DATA *Tcp6ConfigData OPTIONAL, 272*4a5d661aSToomas Soome OUT EFI_IP6_MODE_DATA *Ip6ModeData OPTIONAL, 273*4a5d661aSToomas Soome OUT EFI_MANAGED_NETWORK_CONFIG_DATA *MnpConfigData OPTIONAL, 274*4a5d661aSToomas Soome OUT EFI_SIMPLE_NETWORK_MODE *SnpModeData OPTIONAL 275*4a5d661aSToomas Soome ); 276*4a5d661aSToomas Soome 277*4a5d661aSToomas Soome typedef 278*4a5d661aSToomas Soome EFI_STATUS 279*4a5d661aSToomas Soome (EFIAPI *EFI_TCP6_CONFIGURE) ( 280*4a5d661aSToomas Soome IN struct _EFI_TCP6 *This, 281*4a5d661aSToomas Soome IN EFI_TCP6_CONFIG_DATA *Tcp6ConfigData OPTIONAL 282*4a5d661aSToomas Soome ); 283*4a5d661aSToomas Soome 284*4a5d661aSToomas Soome typedef struct { 285*4a5d661aSToomas Soome EFI_EVENT Event; 286*4a5d661aSToomas Soome EFI_STATUS Status; 287*4a5d661aSToomas Soome } EFI_TCP6_COMPLETION_TOKEN; 288*4a5d661aSToomas Soome 289*4a5d661aSToomas Soome typedef struct { 290*4a5d661aSToomas Soome EFI_TCP6_COMPLETION_TOKEN CompletionToken; 291*4a5d661aSToomas Soome } EFI_TCP6_CONNECTION_TOKEN; 292*4a5d661aSToomas Soome 293*4a5d661aSToomas Soome typedef 294*4a5d661aSToomas Soome EFI_STATUS 295*4a5d661aSToomas Soome (EFIAPI *EFI_TCP6_CONNECT) ( 296*4a5d661aSToomas Soome IN struct _EFI_TCP6 *This, 297*4a5d661aSToomas Soome IN EFI_TCP6_CONNECTION_TOKEN *ConnectionToken 298*4a5d661aSToomas Soome ); 299*4a5d661aSToomas Soome 300*4a5d661aSToomas Soome typedef struct { 301*4a5d661aSToomas Soome EFI_TCP6_COMPLETION_TOKEN CompletionToken; 302*4a5d661aSToomas Soome EFI_HANDLE NewChildHandle; 303*4a5d661aSToomas Soome } EFI_TCP6_LISTEN_TOKEN; 304*4a5d661aSToomas Soome 305*4a5d661aSToomas Soome typedef 306*4a5d661aSToomas Soome EFI_STATUS 307*4a5d661aSToomas Soome (EFIAPI *EFI_TCP6_ACCEPT) ( 308*4a5d661aSToomas Soome IN struct _EFI_TCP6 *This, 309*4a5d661aSToomas Soome IN EFI_TCP6_LISTEN_TOKEN *ListenToken 310*4a5d661aSToomas Soome ); 311*4a5d661aSToomas Soome 312*4a5d661aSToomas Soome typedef struct { 313*4a5d661aSToomas Soome UINT32 FragmentLength; 314*4a5d661aSToomas Soome VOID *FragmentBuffer; 315*4a5d661aSToomas Soome } EFI_TCP6_FRAGMENT_DATA; 316*4a5d661aSToomas Soome 317*4a5d661aSToomas Soome typedef struct { 318*4a5d661aSToomas Soome BOOLEAN UrgentFlag; 319*4a5d661aSToomas Soome UINT32 DataLength; 320*4a5d661aSToomas Soome UINT32 FragmentCount; 321*4a5d661aSToomas Soome EFI_TCP6_FRAGMENT_DATA FragmentTable[1]; 322*4a5d661aSToomas Soome } EFI_TCP6_RECEIVE_DATA; 323*4a5d661aSToomas Soome 324*4a5d661aSToomas Soome typedef struct { 325*4a5d661aSToomas Soome BOOLEAN Push; 326*4a5d661aSToomas Soome BOOLEAN Urgent; 327*4a5d661aSToomas Soome UINT32 DataLength; 328*4a5d661aSToomas Soome UINT32 FragmentCount; 329*4a5d661aSToomas Soome EFI_TCP6_FRAGMENT_DATA FragmentTable[1]; 330*4a5d661aSToomas Soome } EFI_TCP6_TRANSMIT_DATA; 331*4a5d661aSToomas Soome 332*4a5d661aSToomas Soome typedef struct { 333*4a5d661aSToomas Soome EFI_TCP6_COMPLETION_TOKEN CompletionToken; 334*4a5d661aSToomas Soome union { 335*4a5d661aSToomas Soome EFI_TCP6_RECEIVE_DATA *RxData; 336*4a5d661aSToomas Soome EFI_TCP6_TRANSMIT_DATA *TxData; 337*4a5d661aSToomas Soome } Packet; 338*4a5d661aSToomas Soome } EFI_TCP6_IO_TOKEN; 339*4a5d661aSToomas Soome 340*4a5d661aSToomas Soome typedef 341*4a5d661aSToomas Soome EFI_STATUS 342*4a5d661aSToomas Soome (EFIAPI *EFI_TCP6_TRANSMIT) ( 343*4a5d661aSToomas Soome IN struct _EFI_TCP6 *This, 344*4a5d661aSToomas Soome IN EFI_TCP6_IO_TOKEN *Token 345*4a5d661aSToomas Soome ); 346*4a5d661aSToomas Soome 347*4a5d661aSToomas Soome typedef 348*4a5d661aSToomas Soome EFI_STATUS 349*4a5d661aSToomas Soome (EFIAPI *EFI_TCP6_RECEIVE) ( 350*4a5d661aSToomas Soome IN struct _EFI_TCP6 *This, 351*4a5d661aSToomas Soome IN EFI_TCP6_IO_TOKEN *Token 352*4a5d661aSToomas Soome ); 353*4a5d661aSToomas Soome 354*4a5d661aSToomas Soome typedef struct { 355*4a5d661aSToomas Soome EFI_TCP6_COMPLETION_TOKEN CompletionToken; 356*4a5d661aSToomas Soome BOOLEAN AbortOnClose; 357*4a5d661aSToomas Soome } EFI_TCP6_CLOSE_TOKEN; 358*4a5d661aSToomas Soome 359*4a5d661aSToomas Soome typedef 360*4a5d661aSToomas Soome EFI_STATUS 361*4a5d661aSToomas Soome (EFIAPI *EFI_TCP6_CLOSE)( 362*4a5d661aSToomas Soome IN struct _EFI_TCP6 *This, 363*4a5d661aSToomas Soome IN EFI_TCP6_CLOSE_TOKEN *CloseToken 364*4a5d661aSToomas Soome ); 365*4a5d661aSToomas Soome 366*4a5d661aSToomas Soome typedef 367*4a5d661aSToomas Soome EFI_STATUS 368*4a5d661aSToomas Soome (EFIAPI *EFI_TCP6_CANCEL)( 369*4a5d661aSToomas Soome IN struct _EFI_TCP6 *This, 370*4a5d661aSToomas Soome IN EFI_TCP6_COMPLETION_TOKEN *Token OPTIONAL 371*4a5d661aSToomas Soome ); 372*4a5d661aSToomas Soome 373*4a5d661aSToomas Soome typedef 374*4a5d661aSToomas Soome EFI_STATUS 375*4a5d661aSToomas Soome (EFIAPI *EFI_TCP6_POLL) ( 376*4a5d661aSToomas Soome IN struct _EFI_TCP6 *This 377*4a5d661aSToomas Soome ); 378*4a5d661aSToomas Soome 379*4a5d661aSToomas Soome typedef struct _EFI_TCP6 { 380*4a5d661aSToomas Soome EFI_TCP6_GET_MODE_DATA GetModeData; 381*4a5d661aSToomas Soome EFI_TCP6_CONFIGURE Configure; 382*4a5d661aSToomas Soome EFI_TCP6_CONNECT Connect; 383*4a5d661aSToomas Soome EFI_TCP6_ACCEPT Accept; 384*4a5d661aSToomas Soome EFI_TCP6_TRANSMIT Transmit; 385*4a5d661aSToomas Soome EFI_TCP6_RECEIVE Receive; 386*4a5d661aSToomas Soome EFI_TCP6_CLOSE Close; 387*4a5d661aSToomas Soome EFI_TCP6_CANCEL Cancel; 388*4a5d661aSToomas Soome EFI_TCP6_POLL Poll; 389*4a5d661aSToomas Soome } EFI_TCP6; 390*4a5d661aSToomas Soome 391*4a5d661aSToomas Soome #endif /* _EFI_TCP_H */ 392