1199767fToomas Soome#ifndef _EFI_TCP_H 2199767fToomas Soome#define _EFI_TCP_H 3199767fToomas Soome 4199767fToomas Soome/*++ 5199767fToomas SoomeCopyright (c) 2013 Intel Corporation 6199767fToomas Soome 7199767fToomas Soome--*/ 8199767fToomas Soome 9199767fToomas Soome#define EFI_TCP4_SERVICE_BINDING_PROTOCOL \ 10199767fToomas Soome { 0x00720665, 0x67eb, 0x4a99, {0xba, 0xf7, 0xd3, 0xc3, 0x3a, 0x1c,0x7c, 0xc9}} 11199767fToomas Soome 12199767fToomas Soome#define EFI_TCP4_PROTOCOL \ 13199767fToomas Soome { 0x65530bc7, 0xa359, 0x410f, {0xb0, 0x10, 0x5a, 0xad, 0xc7, 0xec, 0x2b, 0x62}} 14199767fToomas Soome 15199767fToomas Soome#define EFI_TCP6_SERVICE_BINDING_PROTOCOL \ 16199767fToomas Soome { 0xec20eb79, 0x6c1a, 0x4664, {0x9a, 0xd, 0xd2, 0xe4, 0xcc, 0x16, 0xd6, 0x64}} 17199767fToomas Soome 18199767fToomas Soome#define EFI_TCP6_PROTOCOL \ 19199767fToomas Soome { 0x46e44855, 0xbd60, 0x4ab7, {0xab, 0xd, 0xa6, 0x79, 0xb9, 0x44, 0x7d, 0x77}} 20199767fToomas Soome 21199767fToomas SoomeINTERFACE_DECL(_EFI_TCP4); 22199767fToomas SoomeINTERFACE_DECL(_EFI_TCP6); 23199767fToomas Soome 24199767fToomas Soometypedef struct { 25199767fToomas Soome BOOLEAN UseDefaultAddress; 26199767fToomas Soome EFI_IPv4_ADDRESS StationAddress; 27199767fToomas Soome EFI_IPv4_ADDRESS SubnetMask; 28199767fToomas Soome UINT16 StationPort; 29199767fToomas Soome EFI_IPv4_ADDRESS RemoteAddress; 30199767fToomas Soome UINT16 RemotePort; 31199767fToomas Soome BOOLEAN ActiveFlag; 32199767fToomas Soome} EFI_TCP4_ACCESS_POINT; 33199767fToomas Soome 34199767fToomas Soometypedef struct { 35199767fToomas Soome UINT32 ReceiveBufferSize; 36199767fToomas Soome UINT32 SendBufferSize; 37199767fToomas Soome UINT32 MaxSynBackLog; 38199767fToomas Soome UINT32 ConnectionTimeout; 39199767fToomas Soome UINT32 DataRetries; 40199767fToomas Soome UINT32 FinTimeout; 41199767fToomas Soome UINT32 TimeWaitTimeout; 42199767fToomas Soome UINT32 KeepAliveProbes; 43199767fToomas Soome UINT32 KeepAliveTime; 44199767fToomas Soome UINT32 KeepAliveInterval; 45199767fToomas Soome BOOLEAN EnableNagle; 46199767fToomas Soome BOOLEAN EnableTimeStamp; 47199767fToomas Soome BOOLEAN EnableWindowScaling; 48199767fToomas Soome BOOLEAN EnableSelectiveAck; 49199767fToomas Soome BOOLEAN EnablePAthMtuDiscovery; 50199767fToomas Soome} EFI_TCP4_OPTION; 51199767fToomas Soome 52199767fToomas Soometypedef struct { 53199767fToomas Soome // Receiving Filters 54199767fToomas Soome // I/O parameters 55199767fToomas Soome UINT8 TypeOfService; 56199767fToomas Soome UINT8 TimeToLive; 57199767fToomas Soome 58199767fToomas Soome // Access Point 59199767fToomas Soome EFI_TCP4_ACCESS_POINT AccessPoint; 60199767fToomas Soome 61199767fToomas Soome // TCP Control Options 62199767fToomas Soome EFI_TCP4_OPTION *ControlOption; 63199767fToomas Soome} EFI_TCP4_CONFIG_DATA; 64199767fToomas Soome 65199767fToomas Soometypedef enum { 66199767fToomas Soome Tcp4StateClosed = 0, 67199767fToomas Soome Tcp4StateListen = 1, 68199767fToomas Soome Tcp4StateSynSent = 2, 69199767fToomas Soome Tcp4StateSynReceived = 3, 70199767fToomas Soome Tcp4StateEstablished = 4, 71199767fToomas Soome Tcp4StateFinWait1 = 5, 72199767fToomas Soome Tcp4StateFinWait2 = 6, 73199767fToomas Soome Tcp4StateClosing = 7, 74199767fToomas Soome Tcp4StateTimeWait = 8, 75199767fToomas Soome Tcp4StateCloseWait = 9, 76199767fToomas Soome Tcp4StateLastAck = 10 77199767fToomas Soome} EFI_TCP4_CONNECTION_STATE; 78199767fToomas Soome 79199767fToomas Soometypedef 80199767fToomas SoomeEFI_STATUS 81199767fToomas Soome(EFIAPI *EFI_TCP4_GET_MODE_DATA) ( 82199767fToomas Soome IN struct _EFI_TCP4 *This, 83199767fToomas Soome OUT EFI_TCP4_CONNECTION_STATE *Tcp4State OPTIONAL, 84199767fToomas Soome OUT EFI_TCP4_CONFIG_DATA *Tcp4ConfigData OPTIONAL, 85199767fToomas Soome OUT EFI_IP4_MODE_DATA *Ip4ModeData OPTIONAL, 86199767fToomas Soome OUT EFI_MANAGED_NETWORK_CONFIG_DATA *MnpConfigData OPTIONAL, 87199767fToomas Soome OUT EFI_SIMPLE_NETWORK_MODE *SnpModeData OPTIONAL 88199767fToomas Soome ); 89199767fToomas Soome 90199767fToomas Soometypedef 91199767fToomas SoomeEFI_STATUS 92199767fToomas Soome(EFIAPI *EFI_TCP4_CONFIGURE) ( 93199767fToomas Soome IN struct _EFI_TCP4 *This, 94199767fToomas Soome IN EFI_TCP4_CONFIG_DATA *TcpConfigData OPTIONAL 95199767fToomas Soome ); 96199767fToomas Soome 97199767fToomas Soometypedef 98199767fToomas SoomeEFI_STATUS 99199767fToomas Soome(EFIAPI *EFI_TCP4_ROUTES) ( 100199767fToomas Soome IN struct _EFI_TCP4 *This, 101199767fToomas Soome IN BOOLEAN DeleteRoute, 102199767fToomas Soome IN EFI_IPv4_ADDRESS *SubnetAddress, 103199767fToomas Soome IN EFI_IPv4_ADDRESS *SubnetMask, 104199767fToomas Soome IN EFI_IPv4_ADDRESS *GatewayAddress 105199767fToomas Soome); 106199767fToomas Soome 107199767fToomas Soometypedef struct { 108199767fToomas Soome EFI_EVENT Event; 109199767fToomas Soome EFI_STATUS Status; 110199767fToomas Soome} EFI_TCP4_COMPLETION_TOKEN; 111199767fToomas Soome 112199767fToomas Soometypedef struct { 113199767fToomas Soome EFI_TCP4_COMPLETION_TOKEN CompletionToken; 114199767fToomas Soome} EFI_TCP4_CONNECTION_TOKEN; 115199767fToomas Soome 116199767fToomas Soometypedef 117199767fToomas SoomeEFI_STATUS 118199767fToomas Soome(EFIAPI *EFI_TCP4_CONNECT) ( 119199767fToomas Soome IN struct _EFI_TCP4 *This, 120199767fToomas Soome IN EFI_TCP4_CONNECTION_TOKEN *ConnectionToken 121199767fToomas Soome ); 122199767fToomas Soome 123199767fToomas Soometypedef struct { 124199767fToomas Soome EFI_TCP4_COMPLETION_TOKEN CompletionToken; 125199767fToomas Soome EFI_HANDLE NewChildHandle; 126199767fToomas Soome} EFI_TCP4_LISTEN_TOKEN; 127199767fToomas Soome 128199767fToomas Soometypedef 129199767fToomas SoomeEFI_STATUS 130199767fToomas Soome(EFIAPI *EFI_TCP4_ACCEPT) ( 131199767fToomas Soome IN struct _EFI_TCP4 *This, 132199767fToomas Soome IN EFI_TCP4_LISTEN_TOKEN *ListenToken 133199767fToomas Soome ); 134199767fToomas Soome 135199767fToomas Soome#define EFI_CONNECTION_FIN EFIERR(104) 136199767fToomas Soome#define EFI_CONNECTION_RESET EFIERR(105) 137199767fToomas Soome#define EFI_CONNECTION_REFUSED EFIERR(106) 138199767fToomas Soome 139199767fToomas Soometypedef struct { 140199767fToomas Soome UINT32 FragmentLength; 141199767fToomas Soome VOID *FragmentBuffer; 142199767fToomas Soome} EFI_TCP4_FRAGMENT_DATA; 143199767fToomas Soome 144199767fToomas Soometypedef struct { 145199767fToomas Soome BOOLEAN UrgentFlag; 146199767fToomas Soome UINT32 DataLength; 147199767fToomas Soome UINT32 FragmentCount; 148199767fToomas Soome EFI_TCP4_FRAGMENT_DATA FragmentTable[1]; 149199767fToomas Soome} EFI_TCP4_RECEIVE_DATA; 150199767fToomas Soome 151199767fToomas Soometypedef struct { 152199767fToomas Soome BOOLEAN Push; 153199767fToomas Soome BOOLEAN Urgent; 154199767fToomas Soome UINT32 DataLength; 155199767fToomas Soome UINT32 FragmentCount; 156199767fToomas Soome EFI_TCP4_FRAGMENT_DATA FragmentTable[1]; 157199767fToomas Soome} EFI_TCP4_TRANSMIT_DATA; 158199767fToomas Soome 159199767fToomas Soometypedef struct { 160199767fToomas Soome EFI_TCP4_COMPLETION_TOKEN CompletionToken; 161199767fToomas Soome union { 162199767fToomas Soome EFI_TCP4_RECEIVE_DATA *RxData; 163199767fToomas Soome EFI_TCP4_TRANSMIT_DATA *TxData; 164199767fToomas Soome } Packet; 165199767fToomas Soome} EFI_TCP4_IO_TOKEN; 166199767fToomas Soome 167199767fToomas Soometypedef 168199767fToomas SoomeEFI_STATUS 169199767fToomas Soome(EFIAPI *EFI_TCP4_TRANSMIT) ( 170199767fToomas Soome IN struct _EFI_TCP4 *This, 171199767fToomas Soome IN EFI_TCP4_IO_TOKEN *Token 172199767fToomas Soome ); 173199767fToomas Soome 174199767fToomas Soometypedef 175199767fToomas SoomeEFI_STATUS 176199767fToomas Soome(EFIAPI *EFI_TCP4_RECEIVE) ( 177199767fToomas Soome IN struct _EFI_TCP4 *This, 178199767fToomas Soome IN EFI_TCP4_IO_TOKEN *Token 179199767fToomas Soome ); 180199767fToomas Soome 181199767fToomas Soometypedef struct { 182199767fToomas Soome EFI_TCP4_COMPLETION_TOKEN CompletionToken; 183199767fToomas Soome BOOLEAN AbortOnClose; 184199767fToomas Soome} EFI_TCP4_CLOSE_TOKEN; 185199767fToomas Soome 186199767fToomas Soometypedef 187199767fToomas SoomeEFI_STATUS 188199767fToomas Soome(EFIAPI *EFI_TCP4_CLOSE)( 189199767fToomas Soome IN struct _EFI_TCP4 *This, 190199767fToomas Soome IN EFI_TCP4_CLOSE_TOKEN *CloseToken 191199767fToomas Soome ); 192199767fToomas Soome 193199767fToomas Soometypedef 194199767fToomas SoomeEFI_STATUS 195199767fToomas Soome(EFIAPI *EFI_TCP4_CANCEL)( 196199767fToomas Soome IN struct _EFI_TCP4 *This, 197199767fToomas Soome IN EFI_TCP4_COMPLETION_TOKEN *Token OPTIONAL 198199767fToomas Soome); 199199767fToomas Soome 200199767fToomas Soometypedef 201199767fToomas SoomeEFI_STATUS 202199767fToomas Soome(EFIAPI *EFI_TCP4_POLL) ( 203199767fToomas Soome IN struct _EFI_TCP4 *This 204199767fToomas Soome ); 205199767fToomas Soome 206199767fToomas Soometypedef struct _EFI_TCP4 { 207199767fToomas Soome EFI_TCP4_GET_MODE_DATA GetModeData; 208199767fToomas Soome EFI_TCP4_CONFIGURE Configure; 209199767fToomas Soome EFI_TCP4_ROUTES Routes; 210199767fToomas Soome EFI_TCP4_CONNECT Connect; 211199767fToomas Soome EFI_TCP4_ACCEPT Accept; 212199767fToomas Soome EFI_TCP4_TRANSMIT Transmit; 213199767fToomas Soome EFI_TCP4_RECEIVE Receive; 214199767fToomas Soome EFI_TCP4_CLOSE Close; 215199767fToomas Soome EFI_TCP4_CANCEL Cancel; 216199767fToomas Soome EFI_TCP4_POLL Poll; 217199767fToomas Soome} EFI_TCP4; 218199767fToomas Soome 219199767fToomas Soometypedef enum { 220199767fToomas Soome Tcp6StateClosed = 0, 221199767fToomas Soome Tcp6StateListen = 1, 222199767fToomas Soome Tcp6StateSynSent = 2, 223199767fToomas Soome Tcp6StateSynReceived = 3, 224199767fToomas Soome Tcp6StateEstablished = 4, 225199767fToomas Soome Tcp6StateFinWait1 = 5, 226199767fToomas Soome Tcp6StateFinWait2 = 6, 227199767fToomas Soome Tcp6StateClosing = 7, 228199767fToomas Soome Tcp6StateTimeWait = 8, 229199767fToomas Soome Tcp6StateCloseWait = 9, 230199767fToomas Soome Tcp6StateLastAck = 10 231199767fToomas Soome} EFI_TCP6_CONNECTION_STATE; 232199767fToomas Soome 233199767fToomas Soometypedef struct { 234199767fToomas Soome EFI_IPv6_ADDRESS StationAddress; 235199767fToomas Soome UINT16 StationPort; 236199767fToomas Soome EFI_IPv6_ADDRESS RemoteAddress; 237199767fToomas Soome UINT16 RemotePort; 238199767fToomas Soome BOOLEAN ActiveFlag; 239199767fToomas Soome} EFI_TCP6_ACCESS_POINT; 240199767fToomas Soome 241199767fToomas Soometypedef struct { 242199767fToomas Soome UINT32 ReceiveBufferSize; 243199767fToomas Soome UINT32 SendBufferSize; 244199767fToomas Soome UINT32 MaxSynBackLog; 245199767fToomas Soome UINT32 ConnectionTimeout; 246199767fToomas Soome UINT32 DataRetries; 247199767fToomas Soome UINT32 FinTimeout; 248199767fToomas Soome UINT32 TimeWaitTimeout; 249199767fToomas Soome UINT32 KeepAliveProbes; 250199767fToomas Soome UINT32 KeepAliveTime; 251199767fToomas Soome UINT32 KeepAliveInterval; 252199767fToomas Soome BOOLEAN EnableNagle; 253199767fToomas Soome BOOLEAN EnableTimeStamp; 254199767fToomas Soome BOOLEAN EnableWindbowScaling; 255199767fToomas Soome BOOLEAN EnableSelectiveAck; 256199767fToomas Soome BOOLEAN EnablePathMtuDiscovery; 257199767fToomas Soome} EFI_TCP6_OPTION; 258199767fToomas Soome 259199767fToomas Soometypedef struct { 260199767fToomas Soome UINT8 TrafficClass; 261199767fToomas Soome UINT8 HopLimit; 262199767fToomas Soome EFI_TCP6_ACCESS_POINT AccessPoint; 263199767fToomas Soome EFI_TCP6_OPTION *ControlOption; 264199767fToomas Soome} EFI_TCP6_CONFIG_DATA; 265199767fToomas Soome 266199767fToomas Soometypedef 267199767fToomas SoomeEFI_STATUS 268199767fToomas Soome(EFIAPI *EFI_TCP6_GET_MODE_DATA) ( 269199767fToomas Soome IN struct _EFI_TCP6 *This, 270199767fToomas Soome OUT EFI_TCP6_CONNECTION_STATE *Tcp6State OPTIONAL, 271199767fToomas Soome OUT EFI_TCP6_CONFIG_DATA *Tcp6ConfigData OPTIONAL, 272199767fToomas Soome OUT EFI_IP6_MODE_DATA *Ip6ModeData OPTIONAL, 273199767fToomas Soome OUT EFI_MANAGED_NETWORK_CONFIG_DATA *MnpConfigData OPTIONAL, 274199767fToomas Soome OUT EFI_SIMPLE_NETWORK_MODE *SnpModeData OPTIONAL 275199767fToomas Soome ); 276199767fToomas Soome 277199767fToomas Soometypedef 278199767fToomas SoomeEFI_STATUS 279199767fToomas Soome(EFIAPI *EFI_TCP6_CONFIGURE) ( 280199767fToomas Soome IN struct _EFI_TCP6 *This, 281199767fToomas Soome IN EFI_TCP6_CONFIG_DATA *Tcp6ConfigData OPTIONAL 282199767fToomas Soome ); 283199767fToomas Soome 284199767fToomas Soometypedef struct { 285199767fToomas Soome EFI_EVENT Event; 286199767fToomas Soome EFI_STATUS Status; 287199767fToomas Soome} EFI_TCP6_COMPLETION_TOKEN; 288199767fToomas Soome 289199767fToomas Soometypedef struct { 290199767fToomas Soome EFI_TCP6_COMPLETION_TOKEN CompletionToken; 291199767fToomas Soome} EFI_TCP6_CONNECTION_TOKEN; 292199767fToomas Soome 293199767fToomas Soometypedef 294199767fToomas SoomeEFI_STATUS 295199767fToomas Soome(EFIAPI *EFI_TCP6_CONNECT) ( 296199767fToomas Soome IN struct _EFI_TCP6 *This, 297199767fToomas Soome IN EFI_TCP6_CONNECTION_TOKEN *ConnectionToken 298199767fToomas Soome ); 299199767fToomas Soome 300199767fToomas Soometypedef struct { 301199767fToomas Soome EFI_TCP6_COMPLETION_TOKEN CompletionToken; 302199767fToomas Soome EFI_HANDLE NewChildHandle; 303199767fToomas Soome} EFI_TCP6_LISTEN_TOKEN; 304199767fToomas Soome 305199767fToomas Soometypedef 306199767fToomas SoomeEFI_STATUS 307199767fToomas Soome(EFIAPI *EFI_TCP6_ACCEPT) ( 308199767fToomas Soome IN struct _EFI_TCP6 *This, 309199767fToomas Soome IN EFI_TCP6_LISTEN_TOKEN *ListenToken 310199767fToomas Soome ); 311199767fToomas Soome 312199767fToomas Soometypedef struct { 313199767fToomas Soome UINT32 FragmentLength; 314199767fToomas Soome VOID *FragmentBuffer; 315199767fToomas Soome} EFI_TCP6_FRAGMENT_DATA; 316199767fToomas Soome 317199767fToomas Soometypedef struct { 318199767fToomas Soome BOOLEAN UrgentFlag; 319199767fToomas Soome UINT32 DataLength; 320199767fToomas Soome UINT32 FragmentCount; 321199767fToomas Soome EFI_TCP6_FRAGMENT_DATA FragmentTable[1]; 322199767fToomas Soome} EFI_TCP6_RECEIVE_DATA; 323199767fToomas Soome 324199767fToomas Soometypedef struct { 325199767fToomas Soome BOOLEAN Push; 326199767fToomas Soome BOOLEAN Urgent; 327199767fToomas Soome UINT32 DataLength; 328199767fToomas Soome UINT32 FragmentCount; 329199767fToomas Soome EFI_TCP6_FRAGMENT_DATA FragmentTable[1]; 330199767fToomas Soome} EFI_TCP6_TRANSMIT_DATA; 331199767fToomas Soome 332199767fToomas Soometypedef struct { 333199767fToomas Soome EFI_TCP6_COMPLETION_TOKEN CompletionToken; 334199767fToomas Soome union { 335199767fToomas Soome EFI_TCP6_RECEIVE_DATA *RxData; 336199767fToomas Soome EFI_TCP6_TRANSMIT_DATA *TxData; 337199767fToomas Soome } Packet; 338199767fToomas Soome} EFI_TCP6_IO_TOKEN; 339199767fToomas Soome 340199767fToomas Soometypedef 341199767fToomas SoomeEFI_STATUS 342199767fToomas Soome(EFIAPI *EFI_TCP6_TRANSMIT) ( 343199767fToomas Soome IN struct _EFI_TCP6 *This, 344199767fToomas Soome IN EFI_TCP6_IO_TOKEN *Token 345199767fToomas Soome ); 346199767fToomas Soome 347199767fToomas Soometypedef 348199767fToomas SoomeEFI_STATUS 349199767fToomas Soome(EFIAPI *EFI_TCP6_RECEIVE) ( 350199767fToomas Soome IN struct _EFI_TCP6 *This, 351199767fToomas Soome IN EFI_TCP6_IO_TOKEN *Token 352199767fToomas Soome ); 353199767fToomas Soome 354199767fToomas Soometypedef struct { 355199767fToomas Soome EFI_TCP6_COMPLETION_TOKEN CompletionToken; 356199767fToomas Soome BOOLEAN AbortOnClose; 357199767fToomas Soome} EFI_TCP6_CLOSE_TOKEN; 358199767fToomas Soome 359199767fToomas Soometypedef 360199767fToomas SoomeEFI_STATUS 361199767fToomas Soome(EFIAPI *EFI_TCP6_CLOSE)( 362199767fToomas Soome IN struct _EFI_TCP6 *This, 363199767fToomas Soome IN EFI_TCP6_CLOSE_TOKEN *CloseToken 364199767fToomas Soome ); 365199767fToomas Soome 366199767fToomas Soometypedef 367199767fToomas SoomeEFI_STATUS 368199767fToomas Soome(EFIAPI *EFI_TCP6_CANCEL)( 369199767fToomas Soome IN struct _EFI_TCP6 *This, 370199767fToomas Soome IN EFI_TCP6_COMPLETION_TOKEN *Token OPTIONAL 371199767fToomas Soome ); 372199767fToomas Soome 373199767fToomas Soometypedef 374199767fToomas SoomeEFI_STATUS 375199767fToomas Soome(EFIAPI *EFI_TCP6_POLL) ( 376199767fToomas Soome IN struct _EFI_TCP6 *This 377199767fToomas Soome ); 378199767fToomas Soome 379199767fToomas Soometypedef struct _EFI_TCP6 { 380199767fToomas Soome EFI_TCP6_GET_MODE_DATA GetModeData; 381199767fToomas Soome EFI_TCP6_CONFIGURE Configure; 382199767fToomas Soome EFI_TCP6_CONNECT Connect; 383199767fToomas Soome EFI_TCP6_ACCEPT Accept; 384199767fToomas Soome EFI_TCP6_TRANSMIT Transmit; 385199767fToomas Soome EFI_TCP6_RECEIVE Receive; 386199767fToomas Soome EFI_TCP6_CLOSE Close; 387199767fToomas Soome EFI_TCP6_CANCEL Cancel; 388199767fToomas Soome EFI_TCP6_POLL Poll; 389199767fToomas Soome} EFI_TCP6; 390199767fToomas Soome 391199767fToomas Soome#endif /* _EFI_TCP_H */ 392