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