File nut/net/tcpsm.c


Included Files


Preprocessor definitions

#define NUT_THREAD_TCPSMSTACK 256

#define TCP_RETRIES_MAX 7

#define TCP_COLLECT_INADV 8

#define TCP_COLLECT_SLIMIT 256

#define TCP_BACKLOG_MAX 8

#define TCP_BACKLOG_TIME 5


Global Variable tcp_in_rdy

HANDLE tcp_in_rdy
Visible in:   nut/net/tcpsm.c
Used in: NutTcpSm() nut/net/tcpsm.c
  NutTcpStateMachine() nut/net/tcpsm.c

Global Variable tcp_in_nbq

NETBUF* volatile tcp_in_nbq
Visible in:   nut/net/tcpsm.c
Used in: NutTcpSm() nut/net/tcpsm.c
  NutTcpStateMachine() nut/net/tcpsm.c

External Variables

tcpSocketList
extern TCPSOCKET* tcpSocketList

Local Variables

tcp_in_cnt
static uint16_t tcp_in_cnt
Used in: NutTcpSm()  
  NutTcpStateMachine()  

tcpThread
static HANDLE tcpThread

Used in: NutTcpInitStateMachine()  
  NutTcpStateMachine()  

tcp_backlog
static NETBUF* tcp_backlog[8]

Used in: NutTcpBacklogAdd()  
  NutTcpBacklogCheck()  
  NutTcpBacklogTimer()  

tcp_backlog_time
static uint_fast8_t tcp_backlog_time[8]

Used in: NutTcpBacklogAdd()  
  NutTcpBacklogCheck()  
  NutTcpBacklogTimer()  

tcp_adv_cnt
static size_t tcp_adv_cnt

Used in: NutTcpStateEstablished()  

tcp_adv_max
static size_t tcp_adv_max

Used in: NutTcpStateEstablished()  

tcp_run_gc
static int tcp_run_gc

Used in: NutTcpSm()  
  NutTcpStateChange()  

Global Function NutTcpAbortSocket()

int NutTcpAbortSocket ( TCPSOCKET* sock, uint16_t last_error )
Prototyped in: nut/include/sys/socket.h
Calls: NutSelectWakeup() nut/crt/select.c
  NutEventBroadcast(), NutTcpDiscardBuffers()
Called by: NutIcmpUnreach() nut/net/icmpin.c
  NutTcpStateActiveOpenEvent() nut/net/tcpsm.c
  NutTcpStateCloseWait() nut/net/tcpsm.c
  NutTcpStateEstablished() nut/net/tcpsm.c
  NutTcpStateRetranTimeout() nut/net/tcpsm.c
  NutTcpStateSynReceived() nut/net/tcpsm.c
  NutTcpStateSynSent() nut/net/tcpsm.c

Global Function NutTcpGarbadgeCollect()

void NutTcpGarbadgeCollect ( void )
Calls: NutTcpDestroySocket()
Called by: NutTcpSm() nut/net/tcpsm.c
References Variables: tcpSocketList

Global Function NutTcpInitStateMachine()

int NutTcpInitStateMachine ( void )
Prototyped in: nut/include/netinet/tcp_fsm.h
Calls: NutThreadCreate() nut/arch/cm3/os/context.c
References Functions: NutTcpSm() nut/net/tcpsm.c
References Variables: tcpThread nut/net/tcpsm.c

Global Function NutTcpSm()

void NutTcpSm ( void* arg )
Prototyped in: nut/net/tcpsm.c
Calls: NutTcpBacklogAdd() nut/net/tcpsm.c
  NutTcpBacklogTimer() nut/net/tcpsm.c
  NutTcpGarbadgeCollect() nut/net/tcpsm.c
  NutTcpInputOptions() nut/net/tcpsm.c
  NutTcpOutput() nut/net/tcpout.c
  NutTcpReject() nut/net/tcpout.c
  NutTcpStateChange() nut/net/tcpsm.c
  NutTcpStateProcess() nut/net/tcpsm.c
  NutTcpStateRetranTimeout() nut/net/tcpsm.c
  NutEventWait(), NutGetMillis(), NutTcpFindSocket(), NutThreadSetPriority()
Used in: NutTcpInitStateMachine() nut/net/tcpsm.c
References Variables: tcp_in_cnt nut/net/tcpsm.c
  tcp_in_nbq nut/net/tcpsm.c
  tcp_in_rdy nut/net/tcpsm.c
  tcp_run_gc nut/net/tcpsm.c
  tcpSocketList

Global Function NutTcpStateActiveOpenEvent()

int NutTcpStateActiveOpenEvent ( TCPSOCKET* sock )
Prototyped in: nut/include/netinet/tcp_fsm.h
Calls: NutTcpAbortSocket() nut/net/tcpsm.c
  NutTcpStateChange() nut/net/tcpsm.c
  NutEventWait()

Global Function NutTcpStateCloseEvent()

int NutTcpStateCloseEvent ( TCPSOCKET* sock )
Prototyped in: nut/include/netinet/tcp_fsm.h
Calls: NutTcpStateChange() nut/net/tcpsm.c
  NutThreadYield()

Global Function NutTcpStateMachine()

void NutTcpStateMachine ( NETBUF* nb )
Prototyped in: nut/include/netinet/tcp_fsm.h
Calls: NutNetBufFree() nut/dev/netbuf.c
  NutTcpReject() nut/net/tcpout.c
  NutEventPost(), NutHeapRootAvailable()
Called by: NutTcpInput() nut/net/tcpin.c
References Variables: tcpThread nut/net/tcpsm.c
  tcp_in_cnt nut/net/tcpsm.c
  tcp_in_nbq nut/net/tcpsm.c
  tcp_in_rdy nut/net/tcpsm.c

Global Function NutTcpStatePassiveOpenEvent()

int NutTcpStatePassiveOpenEvent ( TCPSOCKET* sock )
Prototyped in: nut/include/netinet/tcp_fsm.h
Calls: NutTcpBacklogCheck() nut/net/tcpsm.c
  NutTcpInputOptions() nut/net/tcpsm.c
  NutTcpStateChange() nut/net/tcpsm.c
  NutTcpStateProcess() nut/net/tcpsm.c
  NutEventWait()

Global Function NutTcpStateRetranTimeout()

int NutTcpStateRetranTimeout ( TCPSOCKET* sock )
Prototyped in: nut/include/netinet/tcp_fsm.h
Calls: NutIpOutput() nut/net/ipout.c
  NutTcpAbortSocket() nut/net/tcpsm.c
  NutGetMillis()
Called by: NutTcpProcessAck() nut/net/tcpsm.c
  NutTcpSm() nut/net/tcpsm.c

Global Function NutTcpStateWindowEvent()

int NutTcpStateWindowEvent ( TCPSOCKET* sock )
Prototyped in: nut/include/netinet/tcp_fsm.h
Calls: NutTcpOutput() nut/net/tcpout.c

Local Function NutTcpBacklogAdd()

static int NutTcpBacklogAdd ( NETBUF* nb )
Calls: NutNetBufFree() nut/dev/netbuf.c
Called by: NutTcpSm() nut/net/tcpsm.c
References Variables: tcp_backlog nut/net/tcpsm.c
  tcp_backlog_time nut/net/tcpsm.c

Local Function NutTcpBacklogCheck()

static NETBUF* NutTcpBacklogCheck ( uint16_t port )
Called by: NutTcpStatePassiveOpenEvent() nut/net/tcpsm.c
References Variables: tcp_backlog nut/net/tcpsm.c
  tcp_backlog_time nut/net/tcpsm.c

Local Function NutTcpBacklogTimer()

static NETBUF* NutTcpBacklogTimer ( void )
Called by: NutTcpSm() nut/net/tcpsm.c
References Variables: tcp_backlog nut/net/tcpsm.c
  tcp_backlog_time nut/net/tcpsm.c

Local Function NutTcpInputOptions()

static void NutTcpInputOptions ( TCPSOCKET* sock, NETBUF* nb )
Called by: NutTcpSm() nut/net/tcpsm.c
  NutTcpStatePassiveOpenEvent() nut/net/tcpsm.c

Local Function NutTcpProcessAck()

static int NutTcpProcessAck ( TCPSOCKET* sock, TCPHDR* th, uint16_t length )
Calls: NutNetBufFree() nut/dev/netbuf.c
  NutTcpStateRetranTimeout() nut/net/tcpsm.c
  __byte_swap2() nut/boot/appload/utils.c
  __byte_swap4() nut/boot/appload/utils.c
  NutGetMillis(), NutTcpCalcRtt()
Called by: NutTcpStateCloseWait() nut/net/tcpsm.c
  NutTcpStateClosing() nut/net/tcpsm.c
  NutTcpStateEstablished() nut/net/tcpsm.c
  NutTcpStateFinWait1() nut/net/tcpsm.c
  NutTcpStateFinWait2() nut/net/tcpsm.c
  NutTcpStateLastAck() nut/net/tcpsm.c
  NutTcpStateSynReceived() nut/net/tcpsm.c
  NutTcpStateSynSent() nut/net/tcpsm.c

Local Function NutTcpProcessAppData()

static void NutTcpProcessAppData ( TCPSOCKET* sock, NETBUF* nb )
Calls: NutNetBufCollect() nut/dev/netbuf.c
  NutTcpOutput() nut/net/tcpout.c
Called by: NutTcpStateEstablished() nut/net/tcpsm.c
  NutTcpStateFinWait1() nut/net/tcpsm.c
  NutTcpStateFinWait2() nut/net/tcpsm.c
  NutTcpStateSynReceived() nut/net/tcpsm.c

Local Function NutTcpProcessSyn()

static void NutTcpProcessSyn ( TCPSOCKET* sock, IPHDR* ih, TCPHDR* th )
Calls: NutIpRouteQuery() nut/net/route.c
  __byte_swap2() nut/boot/appload/utils.c
  __byte_swap4() nut/boot/appload/utils.c
Called by: NutTcpStateListen() nut/net/tcpsm.c
  NutTcpStateSynSent() nut/net/tcpsm.c

Local Function NutTcpStateChange()

static int NutTcpStateChange ( TCPSOCKET* sock, uint8_t state )
Calls: NutSelectWakeup() nut/crt/select.c
  NutTcpOutput() nut/net/tcpout.c
  NutEventBroadcast(), NutEventPostAsync()
Called by: NutTcpSm() nut/net/tcpsm.c
  NutTcpStateActiveOpenEvent() nut/net/tcpsm.c
  NutTcpStateCloseEvent() nut/net/tcpsm.c
  NutTcpStateClosing() nut/net/tcpsm.c
  NutTcpStateEstablished() nut/net/tcpsm.c
  NutTcpStateFinWait1() nut/net/tcpsm.c
  NutTcpStateFinWait2() nut/net/tcpsm.c
  NutTcpStateLastAck() nut/net/tcpsm.c
  NutTcpStateListen() nut/net/tcpsm.c
  NutTcpStatePassiveOpenEvent() nut/net/tcpsm.c
  NutTcpStateSynReceived() nut/net/tcpsm.c
  NutTcpStateSynSent() nut/net/tcpsm.c
References Variables: tcp_run_gc nut/net/tcpsm.c

Local Function NutTcpStateCloseWait()

static void NutTcpStateCloseWait ( TCPSOCKET* sock, uint8_t flags, TCPHDR* th, NETBUF* nb )
Calls: NutNetBufFree() nut/dev/netbuf.c
  NutTcpAbortSocket() nut/net/tcpsm.c
  NutTcpProcessAck() nut/net/tcpsm.c
  NutTcpReject() nut/net/tcpout.c
Called by: NutTcpStateProcess() nut/net/tcpsm.c

Local Function NutTcpStateClosing()

static void NutTcpStateClosing ( TCPSOCKET* sock, uint8_t flags, TCPHDR* th, NETBUF* nb )
Calls: NutNetBufFree() nut/dev/netbuf.c
  NutTcpProcessAck() nut/net/tcpsm.c
  NutTcpReject() nut/net/tcpout.c
  NutTcpStateChange() nut/net/tcpsm.c
Called by: NutTcpStateProcess() nut/net/tcpsm.c

Local Function NutTcpStateEstablished()

static void NutTcpStateEstablished ( TCPSOCKET* sock, uint8_t flags, TCPHDR* th, NETBUF* nb )
Calls: NutNetBufFree() nut/dev/netbuf.c
  NutSelectWakeup() nut/crt/select.c
  NutTcpAbortSocket() nut/net/tcpsm.c
  NutTcpOutput() nut/net/tcpout.c
  NutTcpProcessAck() nut/net/tcpsm.c
  NutTcpProcessAppData() nut/net/tcpsm.c
  NutTcpReject() nut/net/tcpout.c
  NutTcpStateChange() nut/net/tcpsm.c
  __byte_swap4() nut/boot/appload/utils.c
  NutEventPost()
Called by: NutTcpStateProcess() nut/net/tcpsm.c
References Variables: tcp_adv_cnt nut/net/tcpsm.c
  tcp_adv_max nut/net/tcpsm.c

Local Function NutTcpStateFinWait1()

static void NutTcpStateFinWait1 ( TCPSOCKET* sock, uint8_t flags, TCPHDR* th, NETBUF* nb )
Calls: NutNetBufFree() nut/dev/netbuf.c
  NutSelectWakeup() nut/crt/select.c
  NutTcpProcessAck() nut/net/tcpsm.c
  NutTcpProcessAppData() nut/net/tcpsm.c
  NutTcpReject() nut/net/tcpout.c
  NutTcpStateChange() nut/net/tcpsm.c
  NutEventPost()
Called by: NutTcpStateProcess() nut/net/tcpsm.c

Local Function NutTcpStateFinWait2()

static void NutTcpStateFinWait2 ( TCPSOCKET* sock, uint8_t flags, TCPHDR* th, NETBUF* nb )
Calls: NutNetBufFree() nut/dev/netbuf.c
  NutSelectWakeup() nut/crt/select.c
  NutTcpProcessAck() nut/net/tcpsm.c
  NutTcpProcessAppData() nut/net/tcpsm.c
  NutTcpReject() nut/net/tcpout.c
  NutTcpStateChange() nut/net/tcpsm.c
  NutEventPost()
Called by: NutTcpStateProcess() nut/net/tcpsm.c

Local Function NutTcpStateLastAck()

static void NutTcpStateLastAck ( TCPSOCKET* sock, uint8_t flags, TCPHDR* th, NETBUF* nb )
Calls: NutNetBufFree() nut/dev/netbuf.c
  NutTcpProcessAck() nut/net/tcpsm.c
  NutTcpReject() nut/net/tcpout.c
  NutTcpStateChange() nut/net/tcpsm.c
Called by: NutTcpStateProcess() nut/net/tcpsm.c

Local Function NutTcpStateListen()

static void NutTcpStateListen ( TCPSOCKET* sock, uint8_t flags, TCPHDR* th, NETBUF* nb )
Calls: NutNetBufFree() nut/dev/netbuf.c
  NutTcpProcessSyn() nut/net/tcpsm.c
  NutTcpReject() nut/net/tcpout.c
  NutTcpStateChange() nut/net/tcpsm.c
Called by: NutTcpStateProcess() nut/net/tcpsm.c

Local Function NutTcpStateProcess()

static void NutTcpStateProcess ( TCPSOCKET* sock, NETBUF* nb )
Prototyped in: nut/net/tcpsm.c
Calls: NutNetBufFree() nut/dev/netbuf.c
  NutSelectWakeup() nut/crt/select.c
  NutTcpReject() nut/net/tcpout.c
  NutTcpStateCloseWait() nut/net/tcpsm.c
  NutTcpStateClosing() nut/net/tcpsm.c
  NutTcpStateEstablished() nut/net/tcpsm.c
  NutTcpStateFinWait1() nut/net/tcpsm.c
  NutTcpStateFinWait2() nut/net/tcpsm.c
  NutTcpStateLastAck() nut/net/tcpsm.c
  NutTcpStateListen() nut/net/tcpsm.c
  NutTcpStateSynReceived() nut/net/tcpsm.c
  NutTcpStateSynSent() nut/net/tcpsm.c
  NutEventBroadcast()
Called by: NutTcpSm() nut/net/tcpsm.c
  NutTcpStatePassiveOpenEvent() nut/net/tcpsm.c

Local Function NutTcpStateSynReceived()

static void NutTcpStateSynReceived ( TCPSOCKET* sock, uint8_t flags, TCPHDR* th, NETBUF* nb )
Calls: NutNetBufFree() nut/dev/netbuf.c
  NutTcpAbortSocket() nut/net/tcpsm.c
  NutTcpProcessAck() nut/net/tcpsm.c
  NutTcpProcessAppData() nut/net/tcpsm.c
  NutTcpReject() nut/net/tcpout.c
  NutTcpStateChange() nut/net/tcpsm.c
  __byte_swap4() nut/boot/appload/utils.c
  NutEventPost(), NutTcpDiscardBuffers()
Called by: NutTcpStateProcess() nut/net/tcpsm.c

Local Function NutTcpStateSynSent()

static void NutTcpStateSynSent ( TCPSOCKET* sock, uint8_t flags, TCPHDR* th, NETBUF* nb )
Calls: NutNetBufFree() nut/dev/netbuf.c
  NutTcpAbortSocket() nut/net/tcpsm.c
  NutTcpProcessAck() nut/net/tcpsm.c
  NutTcpProcessSyn() nut/net/tcpsm.c
  NutTcpReject() nut/net/tcpout.c
  NutTcpStateChange() nut/net/tcpsm.c
  __byte_swap4() nut/boot/appload/utils.c
  NutEventPost()
Called by: NutTcpStateProcess() nut/net/tcpsm.c