TCP (Transmission Control Protocol) More...

#include "net_config.h"
#include "core/ip.h"

Go to the source code of this file.

Data Structures

struct  _TcpQueueItem
 Retransmission queue item. More...
 
struct  _TcpSynQueueItem
 SYN queue item. More...
 
struct  TcpSackBlock
 SACK block. More...
 
struct  TcpTxBuffer
 Transmit buffer. More...
 
struct  TcpRxBuffer
 Receive buffer. More...
 

Macros

#define TCP_SUPPORT   ENABLED
 
#define TCP_TICK_INTERVAL   100
 
#define TCP_MAX_MSS   1430
 
#define TCP_MIN_MSS   64
 
#define TCP_DEFAULT_TX_BUFFER_SIZE   2860
 
#define TCP_MAX_TX_BUFFER_SIZE   22880
 
#define TCP_DEFAULT_RX_BUFFER_SIZE   2860
 
#define TCP_MAX_RX_BUFFER_SIZE   22880
 
#define TCP_DEFAULT_SYN_QUEUE_SIZE   4
 
#define TCP_MAX_SYN_QUEUE_SIZE   16
 
#define TCP_MAX_RETRIES   5
 
#define TCP_INITIAL_RTO   1000
 
#define TCP_MIN_RTO   1000
 
#define TCP_MAX_RTO   60000
 
#define TCP_SECURE_ISN_SUPPORT   DISABLED
 
#define TCP_CONGEST_CONTROL_SUPPORT   ENABLED
 
#define TCP_FAST_RETRANSMIT_THRES   3
 
#define TCP_INITIAL_WINDOW   3
 
#define TCP_LOSS_WINDOW   1
 
#define TCP_DEFAULT_PROBE_INTERVAL   1000
 
#define TCP_MAX_PROBE_INTERVAL   60000
 
#define TCP_OVERRIDE_TIMEOUT   500
 
#define TCP_FIN_WAIT_2_TIMER   4000
 
#define TCP_2MSL_TIMER   4000
 
#define TCP_KEEP_ALIVE_SUPPORT   DISABLED
 
#define TCP_DEFAULT_KEEP_ALIVE_IDLE   60000
 
#define TCP_DEFAULT_KEEP_ALIVE_INTERVAL   15000
 
#define TCP_DEFAULT_KEEP_ALIVE_PROBES   5
 
#define TCP_SACK_SUPPORT   DISABLED
 
#define TCP_MAX_SACK_BLOCKS   4
 
#define TCP_MAX_HEADER_LENGTH   60
 
#define TCP_DEFAULT_MSS   536
 
#define TCP_CMP_SEQ(a, b)   ((int32_t) ((a) - (b)))
 

Typedefs

struct {
   char_t   type
 
   uint32_t   dataStart
 
   uint32_t   dataLength
 
   uint8_t   nameLength
 
   char_t   name []
 
   uint8_t   tokenLen: 4
 
   uint8_t   type: 2
 
   uint8_t   version: 2
 
   uint8_t   code
 
   uint16_t   mid
 
   uint8_t   token []
 
   union {
      uint8_t   b [6]
 
      uint16_t   w [3]
 
   } 
 
   uint16_t   srcPort
 
   uint16_t   destPort
 
   uint32_t   seqNum
 
   uint32_t   ackNum
 
   uint8_t   reserved1: 4
 
   uint8_t   dataOffset: 4
 
   uint8_t   flags: 6
 
   uint8_t   reserved2: 2
 
   uint16_t   window
 
   uint16_t   checksum
 
   uint16_t   urgentPointer
 
   uint8_t   options []
 
   uint16_t   length
 
   uint8_t   data []
 
   uint8_t   op
 
   uint8_t   htype
 
   uint8_t   hlen
 
   uint8_t   hops
 
   uint32_t   xid
 
   uint16_t   secs
 
   uint16_t   flags
 
   Ipv4Addr   ciaddr
 
   Ipv4Addr   yiaddr
 
   Ipv4Addr   siaddr
 
   Ipv4Addr   giaddr
 
   MacAddr   chaddr
 
   uint8_t   unused [10]
 
   uint8_t   sname [64]
 
   uint8_t   file [128]
 
   uint32_t   magicCookie
 
   uint16_t   type
 
   uint16_t   hardwareType
 
   uint32_t   time
 
   MacAddr   linkLayerAddr
 
   uint16_t   id
 
   uint8_t   rd: 1
 
   uint8_t   tc: 1
 
   uint8_t   aa: 1
 
   uint8_t   opcode: 4
 
   uint8_t   qr: 1
 
   uint8_t   rcode: 4
 
   uint8_t   z: 3
 
   uint8_t   ra: 1
 
   uint16_t   qdcount
 
   uint16_t   ancount
 
   uint16_t   nscount
 
   uint16_t   arcount
 
   uint8_t   questions []
 
   uint16_t   controlWord
 
   uint16_t   byteCount
 
   uint8_t   bLength
 
   uint8_t   bDescriptorType
 
   uint16_t   bcdUsb
 
   uint8_t   bDeviceClass
 
   uint8_t   bDeviceSubClass
 
   uint8_t   bDeviceProtocol
 
   uint8_t   bMaxPacketSize0
 
   uint16_t   idVendor
 
   uint16_t   idProduct
 
   uint16_t   bcdDevice
 
   uint8_t   iManufacturer
 
   uint8_t   iProduct
 
   uint8_t   iSerialNumber
 
   uint8_t   bNumConfigurations
 
   uint8_t   maxRespTime
 
   Ipv4Addr   groupAddr
 
   uint16_t   hrd
 
   uint16_t   pro
 
   uint8_t   hln
 
   uint8_t   pln
 
   uint16_t   op
 
   MacAddr   sha
 
   Ipv4Addr   spa
 
   MacAddr   tha
 
   Ipv4Addr   tpa
 
   uint8_t   length
 
   uint8_t   value []
 
   uint16_t   first
 
   uint16_t   last
 
   uint16_t   next
 
   union {
      uint8_t   b [16]
 
      uint16_t   w [8]
 
      uint32_t   dw [4]
 
   } 
 
   uint16_t   maxRespDelay
 
   uint16_t   reserved
 
   Ipv6Addr   multicastAddr
 
   uint32_t   reserved
 
   uint16_t   pvid
 
   uint8_t   autoNegSupportStatus
 
   uint16_t   pmdAutoNegAdvCap
 
   uint16_t   operationalMauType
 
   uint16_t   capabilities
 
   uint8_t   deviceType
 
   uint8_t   lengthH: 1
 
   uint8_t   lengthL
 
   uint8_t   t: 1
 
   uint8_t   c: 1
 
   union {
      int32_t   integer
 
      uint8_t   octetString [1]
 
      uint8_t   oid [1]
 
      uint8_t   ipAddr [4]
 
      uint32_t   counter32
 
      uint32_t   gauge32
 
      uint32_t   unsigned32
 
      uint32_t   timeTicks
 
      uint64_t   counter64
 
   } 
 
   uint16_t   transactionId
 
   uint16_t   protocolId
 
   uint8_t   unitId
 
   uint8_t   pdu []
 
   uint8_t   retain: 1
 
   uint8_t   qos: 2
 
   uint8_t   dup: 1
 
   union {
      uint8_t   all
 
      struct {
         uint8_t   topicIdType: 2
 
         uint8_t   cleanSession: 1
 
         uint8_t   will: 1
 
         uint8_t   retain: 1
 
         uint8_t   qos: 2
 
         uint8_t   dup: 1
 
      } 
 
   } 
 
   uint8_t   b: 1
 
   uint8_t   identifier
 
   uint8_t   valueSize
 
   Ipv4Addr   srcIpAddr
 
   Ipv4Addr   destIpAddr
 
   Eui64   interfaceId
 
   uint16_t   mru
 
   uint8_t   peerIdLength
 
   uint8_t   peerId []
 
   uint32_t   seconds
 
   uint32_t   fraction
 
   uint16_t   opcode
 
   char_t   filename []
 
   uint8_t   reserved: 3
 
   uint8_t   fin: 1
 
   uint8_t   payloadLen: 7
 
   uint8_t   mask: 1
 
   uint8_t   extPayloadLen []
 
   uint32_t   length
 
   uint8_t   payload []
 
   uint8_t   protocolVersionId
 
   uint8_t   bpduType
 
   StpBridgeId   rootId
 
   uint32_t   rootPathCost
 
   StpBridgeId   bridgeId
 
   uint16_t   portId
 
   uint16_t   messageAge
 
   uint16_t   maxAge
 
   uint16_t   helloTime
 
   uint16_t   forwardDelay
 
   uint8_t   version1Length
 
   uint16_t   priority
 
   MacAddr   addr
 
TcpHeader
 TCP header. More...
 
struct {
   char_t   type
 
   uint32_t   dataStart
 
   uint32_t   dataLength
 
   uint8_t   nameLength
 
   uint8_t   length: 4
 
   uint8_t   delta: 4
 
   union {
      uint8_t   b [8]
 
      uint16_t   w [4]
 
      uint32_t   dw [2]
 
   } 
 
   uint8_t   kind
 
   uint8_t   value []
 
   uint8_t   code
 
   uint16_t   type
 
   uint32_t   enterpriseNumber
 
   uint8_t   identifier []
 
   uint16_t   qtype
 
   uint16_t   qclass
 
   uint16_t   statusWord
 
   uint16_t   byteCount
 
   uint8_t   bLength
 
   uint8_t   bDescriptorType
 
   uint16_t   wTotalLength
 
   uint8_t   bNumInterfaces
 
   uint8_t   bConfigurationValue
 
   uint8_t   iConfiguration
 
   uint8_t   bmAttributes
 
   uint8_t   bMaxPower
 
   uint8_t   type
 
   uint16_t   checksum
 
   uint8_t   parameter
 
   uint8_t   unused [3]
 
   uint8_t   data []
 
   uint32_t   parameter
 
   uint8_t   nextHeader
 
   uint8_t   hdrExtLen
 
   uint8_t   options []
 
   uint8_t   curHopLimit
 
   uint8_t   reserved: 2
 
   uint8_t   p: 1
 
   uint8_t   prf: 2
 
   uint8_t   h: 1
 
   uint8_t   o: 1
 
   uint8_t   m: 1
 
   uint16_t   routerLifetime
 
   uint32_t   reachableTime
 
   uint32_t   retransTimer
 
   uint8_t   flags
 
   uint16_t   ppvid
 
   uint8_t   mdiPowerSupport
 
   uint8_t   psePowerPair
 
   uint8_t   powerClass
 
   uint8_t   appType
 
   uint8_t   vlanIdH: 5
 
   uint8_t   x: 1
 
   uint8_t   t: 1
 
   uint8_t   u: 1
 
   uint8_t   l2PriorityH: 1
 
   uint8_t   vlanIdL: 7
 
   uint8_t   dscpValue: 6
 
   uint8_t   l2PriorityL: 2
 
   uint8_t   chassisIdSubtype
 
   uint8_t   chassisId []
 
   uint8_t   functionCode
 
   uint16_t   startingAddr
 
   uint16_t   quantityOfCoils
 
   uint16_t   length
 
   uint8_t   msgType
 
   uint16_t   flags
 
   Ipv4Addr   addr
 
   uint8_t   valueSize
 
   uint16_t   protocol
 
   uint32_t   accm
 
   uint8_t   msgLength
 
   uint8_t   message []
 
   uint8_t   mode: 3
 
   uint8_t   vn: 3
 
   uint8_t   li: 2
 
   uint8_t   stratum
 
   uint8_t   poll
 
   int8_t   precision
 
   uint32_t   rootDelay
 
   uint32_t   rootDispersion
 
   uint32_t   referenceId
 
   NtpTimestamp   referenceTimestamp
 
   NtpTimestamp   originateTimestamp
 
   NtpTimestamp   receiveTimestamp
 
   NtpTimestamp   transmitTimestamp
 
   uint16_t   opcode
 
   char_t   filename []
 
   uint16_t   value []
 
   uint16_t   group
 
   uint8_t   keyExchange []
 
   uint32_t   id
 
   uint32_t   dataLen
 
TcpOption
 TCP option. More...
 
typedef struct _TcpQueueItem TcpQueueItem
 Retransmission queue item. More...
 
typedef struct _TcpSynQueueItem TcpSynQueueItem
 SYN queue item. More...
 

Enumerations

enum  TcpState {
  TCP_STATE_CLOSED = 0, TCP_STATE_LISTEN = 1, TCP_STATE_SYN_SENT = 2, TCP_STATE_SYN_RECEIVED = 3,
  TCP_STATE_ESTABLISHED = 4, TCP_STATE_CLOSE_WAIT = 5, TCP_STATE_LAST_ACK = 6, TCP_STATE_FIN_WAIT_1 = 7,
  TCP_STATE_FIN_WAIT_2 = 8, TCP_STATE_CLOSING = 9, TCP_STATE_TIME_WAIT = 10
}
 TCP FSM states. More...
 
enum  TcpCongestState { TCP_CONGEST_STATE_IDLE = 0, TCP_CONGEST_STATE_RECOVERY = 1, TCP_CONGEST_STATE_LOSS_RECOVERY = 2 }
 TCP congestion states. More...
 
enum  TcpFlags {
  TCP_FLAG_FIN = 0x01, TCP_FLAG_SYN = 0x02, TCP_FLAG_RST = 0x04, TCP_FLAG_PSH = 0x08,
  TCP_FLAG_ACK = 0x10, TCP_FLAG_URG = 0x20
}
 TCP control flags. More...
 
enum  TcpOptionKind {
  TCP_OPTION_END = 0, TCP_OPTION_NOP = 1, TCP_OPTION_MAX_SEGMENT_SIZE = 2, TCP_OPTION_WINDOW_SCALE_FACTOR = 3,
  TCP_OPTION_SACK_PERMITTED = 4, TCP_OPTION_SACK = 5, TCP_OPTION_TIMESTAMP = 8
}
 TCP option types. More...
 

Functions

error_t tcpInit (void)
 TCP related initialization. More...
 
uint16_t tcpGetDynamicPort (void)
 Get an ephemeral port number. More...
 
error_t tcpConnect (Socket *socket, const IpAddr *remoteIpAddr, uint16_t remotePort)
 Establish a TCP connection. More...
 
error_t tcpListen (Socket *socket, uint_t backlog)
 Place a socket in the listening state. More...
 
SockettcpAccept (Socket *socket, IpAddr *clientIpAddr, uint16_t *clientPort)
 Permit an incoming connection attempt on a TCP socket. More...
 
error_t tcpSend (Socket *socket, const uint8_t *data, size_t length, size_t *written, uint_t flags)
 Send data to a connected socket. More...
 
error_t tcpReceive (Socket *socket, uint8_t *data, size_t size, size_t *received, uint_t flags)
 Receive data from a connected socket. More...
 
error_t tcpShutdown (Socket *socket, uint_t how)
 Shutdown gracefully reception, transmission, or both. More...
 
error_t tcpAbort (Socket *socket)
 Abort an existing TCP connection. More...
 
TcpState tcpGetState (Socket *socket)
 Get the current state of the TCP FSM. More...
 
SockettcpKillOldestConnection (void)
 Kill the oldest socket in the TIME-WAIT state. More...
 

Variables

systime_t tcpTickCounter
 

Detailed Description

TCP (Transmission Control Protocol)

License

SPDX-License-Identifier: GPL-2.0-or-later

Copyright (C) 2010-2023 Oryx Embedded SARL. All rights reserved.

This file is part of CycloneTCP Open.

This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.

Author
Oryx Embedded SARL (www.oryx-embedded.com)
Version
2.2.4

Definition in file tcp.h.

Macro Definition Documentation

◆ TCP_2MSL_TIMER

#define TCP_2MSL_TIMER   4000

Definition at line 201 of file tcp.h.

◆ TCP_CMP_SEQ

#define TCP_CMP_SEQ (   a,
  b 
)    ((int32_t) ((a) - (b)))

Definition at line 254 of file tcp.h.

◆ TCP_CONGEST_CONTROL_SUPPORT

#define TCP_CONGEST_CONTROL_SUPPORT   ENABLED

Definition at line 145 of file tcp.h.

◆ TCP_DEFAULT_KEEP_ALIVE_IDLE

#define TCP_DEFAULT_KEEP_ALIVE_IDLE   60000

Definition at line 215 of file tcp.h.

◆ TCP_DEFAULT_KEEP_ALIVE_INTERVAL

#define TCP_DEFAULT_KEEP_ALIVE_INTERVAL   15000

Definition at line 222 of file tcp.h.

◆ TCP_DEFAULT_KEEP_ALIVE_PROBES

#define TCP_DEFAULT_KEEP_ALIVE_PROBES   5

Definition at line 229 of file tcp.h.

◆ TCP_DEFAULT_MSS

#define TCP_DEFAULT_MSS   536

Definition at line 251 of file tcp.h.

◆ TCP_DEFAULT_PROBE_INTERVAL

#define TCP_DEFAULT_PROBE_INTERVAL   1000

Definition at line 173 of file tcp.h.

◆ TCP_DEFAULT_RX_BUFFER_SIZE

#define TCP_DEFAULT_RX_BUFFER_SIZE   2860

Definition at line 82 of file tcp.h.

◆ TCP_DEFAULT_SYN_QUEUE_SIZE

#define TCP_DEFAULT_SYN_QUEUE_SIZE   4

Definition at line 96 of file tcp.h.

◆ TCP_DEFAULT_TX_BUFFER_SIZE

#define TCP_DEFAULT_TX_BUFFER_SIZE   2860

Definition at line 68 of file tcp.h.

◆ TCP_FAST_RETRANSMIT_THRES

#define TCP_FAST_RETRANSMIT_THRES   3

Definition at line 152 of file tcp.h.

◆ TCP_FIN_WAIT_2_TIMER

#define TCP_FIN_WAIT_2_TIMER   4000

Definition at line 194 of file tcp.h.

◆ TCP_INITIAL_RTO

#define TCP_INITIAL_RTO   1000

Definition at line 117 of file tcp.h.

◆ TCP_INITIAL_WINDOW

#define TCP_INITIAL_WINDOW   3

Definition at line 159 of file tcp.h.

◆ TCP_KEEP_ALIVE_SUPPORT

#define TCP_KEEP_ALIVE_SUPPORT   DISABLED

Definition at line 208 of file tcp.h.

◆ TCP_LOSS_WINDOW

#define TCP_LOSS_WINDOW   1

Definition at line 166 of file tcp.h.

◆ TCP_MAX_HEADER_LENGTH

#define TCP_MAX_HEADER_LENGTH   60

Definition at line 249 of file tcp.h.

◆ TCP_MAX_MSS

#define TCP_MAX_MSS   1430

Definition at line 54 of file tcp.h.

◆ TCP_MAX_PROBE_INTERVAL

#define TCP_MAX_PROBE_INTERVAL   60000

Definition at line 180 of file tcp.h.

◆ TCP_MAX_RETRIES

#define TCP_MAX_RETRIES   5

Definition at line 110 of file tcp.h.

◆ TCP_MAX_RTO

#define TCP_MAX_RTO   60000

Definition at line 131 of file tcp.h.

◆ TCP_MAX_RX_BUFFER_SIZE

#define TCP_MAX_RX_BUFFER_SIZE   22880

Definition at line 89 of file tcp.h.

◆ TCP_MAX_SACK_BLOCKS

#define TCP_MAX_SACK_BLOCKS   4

Definition at line 243 of file tcp.h.

◆ TCP_MAX_SYN_QUEUE_SIZE

#define TCP_MAX_SYN_QUEUE_SIZE   16

Definition at line 103 of file tcp.h.

◆ TCP_MAX_TX_BUFFER_SIZE

#define TCP_MAX_TX_BUFFER_SIZE   22880

Definition at line 75 of file tcp.h.

◆ TCP_MIN_MSS

#define TCP_MIN_MSS   64

Definition at line 61 of file tcp.h.

◆ TCP_MIN_RTO

#define TCP_MIN_RTO   1000

Definition at line 124 of file tcp.h.

◆ TCP_OVERRIDE_TIMEOUT

#define TCP_OVERRIDE_TIMEOUT   500

Definition at line 187 of file tcp.h.

◆ TCP_SACK_SUPPORT

#define TCP_SACK_SUPPORT   DISABLED

Definition at line 236 of file tcp.h.

◆ TCP_SECURE_ISN_SUPPORT

#define TCP_SECURE_ISN_SUPPORT   DISABLED

Definition at line 138 of file tcp.h.

◆ TCP_SUPPORT

#define TCP_SUPPORT   ENABLED

Definition at line 40 of file tcp.h.

◆ TCP_TICK_INTERVAL

#define TCP_TICK_INTERVAL   100

Definition at line 47 of file tcp.h.

Typedef Documentation

◆ TcpHeader

typedef { ... } TcpHeader

TCP header.

◆ TcpOption

typedef { ... } TcpOption

TCP option.

◆ TcpQueueItem

typedef struct _TcpQueueItem TcpQueueItem

Retransmission queue item.

◆ TcpSynQueueItem

SYN queue item.

Enumeration Type Documentation

◆ TcpCongestState

TCP congestion states.

Enumerator
TCP_CONGEST_STATE_IDLE 
TCP_CONGEST_STATE_RECOVERY 
TCP_CONGEST_STATE_LOSS_RECOVERY 

Definition at line 286 of file tcp.h.

◆ TcpFlags

enum TcpFlags

TCP control flags.

Enumerator
TCP_FLAG_FIN 
TCP_FLAG_SYN 
TCP_FLAG_RST 
TCP_FLAG_PSH 
TCP_FLAG_ACK 
TCP_FLAG_URG 

Definition at line 298 of file tcp.h.

◆ TcpOptionKind

TCP option types.

Enumerator
TCP_OPTION_END 
TCP_OPTION_NOP 
TCP_OPTION_MAX_SEGMENT_SIZE 
TCP_OPTION_WINDOW_SCALE_FACTOR 
TCP_OPTION_SACK_PERMITTED 
TCP_OPTION_SACK 
TCP_OPTION_TIMESTAMP 

Definition at line 313 of file tcp.h.

◆ TcpState

enum TcpState

TCP FSM states.

Enumerator
TCP_STATE_CLOSED 
TCP_STATE_LISTEN 
TCP_STATE_SYN_SENT 
TCP_STATE_SYN_RECEIVED 
TCP_STATE_ESTABLISHED 
TCP_STATE_CLOSE_WAIT 
TCP_STATE_LAST_ACK 
TCP_STATE_FIN_WAIT_1 
TCP_STATE_FIN_WAIT_2 
TCP_STATE_CLOSING 
TCP_STATE_TIME_WAIT 

Definition at line 266 of file tcp.h.

Function Documentation

◆ tcpAbort()

error_t tcpAbort ( Socket socket)

Abort an existing TCP connection.

Parameters
[in]socketHandle identifying the socket to close
Returns
Error code

Definition at line 903 of file tcp.c.

◆ tcpAccept()

Socket* tcpAccept ( Socket socket,
IpAddr clientIpAddr,
uint16_t *  clientPort 
)

Permit an incoming connection attempt on a TCP socket.

Parameters
[in]socketHandle to a socket previously placed in a listening state
[out]clientIpAddrIP address of the client
[out]clientPortPort number used by the client
Returns
Handle to the socket in which the actual connection is made

Definition at line 268 of file tcp.c.

◆ tcpConnect()

error_t tcpConnect ( Socket socket,
const IpAddr remoteIpAddr,
uint16_t  remotePort 
)

Establish a TCP connection.

Parameters
[in]socketHandle to an unconnected socket
[in]remoteIpAddrIP address of the remote host
[in]remotePortRemote port number that will be used to establish the connection
Returns
Error code

Definition at line 116 of file tcp.c.

◆ tcpGetDynamicPort()

uint16_t tcpGetDynamicPort ( void  )

Get an ephemeral port number.

Returns
Ephemeral port

Definition at line 76 of file tcp.c.

◆ tcpGetState()

TcpState tcpGetState ( Socket socket)

Get the current state of the TCP FSM.

Parameters
[in]socketHandle identifying the socket
Returns
TCP FSM state

Definition at line 967 of file tcp.c.

◆ tcpInit()

error_t tcpInit ( void  )

TCP related initialization.

Returns
Error code

Definition at line 61 of file tcp.c.

◆ tcpKillOldestConnection()

Socket* tcpKillOldestConnection ( void  )

Kill the oldest socket in the TIME-WAIT state.

Returns
Handle identifying the oldest TCP connection in the TIME-WAIT state. NULL is returned if no socket is currently in the TIME-WAIT state

Definition at line 991 of file tcp.c.

◆ tcpListen()

error_t tcpListen ( Socket socket,
uint_t  backlog 
)

Place a socket in the listening state.

Place a socket in a state in which it is listening for an incoming connection

Parameters
[in]socketSocket to place in the listening state
[in]backlogbacklog The maximum length of the pending connection queue. If this parameter is zero, then the default backlog value is used instead
Returns
Error code

Definition at line 241 of file tcp.c.

◆ tcpReceive()

error_t tcpReceive ( Socket socket,
uint8_t *  data,
size_t  size,
size_t *  received,
uint_t  flags 
)

Receive data from a connected socket.

Parameters
[in]socketHandle that identifies a connected socket
[out]dataBuffer where to store the incoming data
[in]sizeMaximum number of bytes that can be received
[out]receivedNumber of bytes that have been received
[in]flagsSet of flags that influences the behavior of this function
Returns
Error code

Definition at line 604 of file tcp.c.

◆ tcpSend()

error_t tcpSend ( Socket socket,
const uint8_t *  data,
size_t  length,
size_t *  written,
uint_t  flags 
)

Send data to a connected socket.

Parameters
[in]socketHandle that identifies a connected socket
[in]dataPointer to a buffer containing the data to be transmitted
[in]lengthNumber of bytes to be transmitted
[out]writtenActual number of bytes written (optional parameter)
[in]flagsSet of flags that influences the behavior of this function
Returns
Error code

Definition at line 477 of file tcp.c.

◆ tcpShutdown()

error_t tcpShutdown ( Socket socket,
uint_t  how 
)

Shutdown gracefully reception, transmission, or both.

Note that socketShutdown() does not close the socket, and resources attached to the socket will not be freed until socketClose() is invoked

Parameters
[in]socketHandle to a socket
[in]howFlag that describes what types of operation will no longer be allowed
Returns
Error code

Definition at line 752 of file tcp.c.

Variable Documentation

◆ ackNum

uint32_t ackNum

Definition at line 340 of file tcp.h.

◆ checksum

uint16_t checksum

Definition at line 353 of file tcp.h.

◆ dataOffset

uint8_t dataOffset

Definition at line 348 of file tcp.h.

◆ destPort

uint16_t destPort

Definition at line 338 of file tcp.h.

◆ flags

uint8_t flags

Definition at line 349 of file tcp.h.

◆ kind

uint8_t kind

Definition at line 365 of file tcp.h.

◆ length

uint8_t length

Definition at line 366 of file tcp.h.

◆ options

uint8_t options[]

Definition at line 355 of file tcp.h.

◆ reserved1

uint8_t reserved1

Definition at line 347 of file tcp.h.

◆ reserved2

uint8_t reserved2

Definition at line 350 of file tcp.h.

◆ seqNum

uint32_t seqNum

Definition at line 339 of file tcp.h.

◆ srcPort

uint16_t srcPort

Definition at line 337 of file tcp.h.

◆ tcpTickCounter

systime_t tcpTickCounter
extern

Definition at line 50 of file tcp.c.

◆ urgentPointer

uint16_t urgentPointer

Definition at line 354 of file tcp.h.

◆ value

uint8_t value[]

Definition at line 367 of file tcp.h.

◆ window

uint16_t window

Definition at line 352 of file tcp.h.