Andrew Boyson / net

Dependents:   oldheating gps motorhome heating

Committer:
andrewboyson
Date:
Thu Nov 15 16:55:29 2018 +0000
Revision:
80:4ef1500fca1d
Parent:
79:f50e02fb5c94
Child:
82:20781198d26d
Used local ip scope to determine the local address used in TCP.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
andrewboyson 74:c3756bfa960e 1 #ifndef TCB_H
andrewboyson 74:c3756bfa960e 2 #define TCB_H
andrewboyson 74:c3756bfa960e 3
andrewboyson 61:aad055f1b0d1 4 #include <stdint.h>
andrewboyson 61:aad055f1b0d1 5 #include <stdbool.h>
andrewboyson 61:aad055f1b0d1 6
andrewboyson 74:c3756bfa960e 7 #define TCB_EMPTY 0
andrewboyson 74:c3756bfa960e 8 #define TCB_SYN_RECEIVED 1
andrewboyson 74:c3756bfa960e 9 #define TCB_ESTABLISHED 2
andrewboyson 74:c3756bfa960e 10 #define TCB_CLOSE_FIN_WAIT 3
andrewboyson 10:f0854784e960 11
andrewboyson 10:f0854784e960 12 struct tcb
andrewboyson 10:f0854784e960 13 {
andrewboyson 10:f0854784e960 14 int state;
andrewboyson 79:f50e02fb5c94 15 uint32_t timeSendsBeingAcked; //Used for RTO
andrewboyson 79:f50e02fb5c94 16 uint32_t timeLastRcvd; //Used for detect idle links
andrewboyson 74:c3756bfa960e 17 int ipType;
andrewboyson 80:4ef1500fca1d 18 int remArIndex; //Unique per remote ip when taken with the ipType
andrewboyson 80:4ef1500fca1d 19 int locIpScope; //Unique per local ip
andrewboyson 74:c3756bfa960e 20 uint16_t remPort;
andrewboyson 74:c3756bfa960e 21 uint16_t locPort;
andrewboyson 74:c3756bfa960e 22 uint32_t remMss;
andrewboyson 74:c3756bfa960e 23 uint32_t window;
andrewboyson 74:c3756bfa960e 24
andrewboyson 74:c3756bfa960e 25 uint32_t remIsn;
andrewboyson 74:c3756bfa960e 26 uint32_t bytesRcvdFromRem;
andrewboyson 74:c3756bfa960e 27 uint32_t bytesAckdToRem;
andrewboyson 74:c3756bfa960e 28 bool rcvdFin;
andrewboyson 74:c3756bfa960e 29
andrewboyson 54:84ef2b29cf7e 30 int32_t todo;
andrewboyson 74:c3756bfa960e 31
andrewboyson 74:c3756bfa960e 32 uint32_t locIsn;
andrewboyson 74:c3756bfa960e 33 uint32_t bytesSentToRem;
andrewboyson 74:c3756bfa960e 34 uint32_t bytesAckdByRem;
andrewboyson 74:c3756bfa960e 35 bool sentFin;
andrewboyson 10:f0854784e960 36 };
andrewboyson 10:f0854784e960 37
andrewboyson 52:fbc5a46b5e16 38 extern uint32_t TcbElapsed;
andrewboyson 61:aad055f1b0d1 39 extern uint32_t TcbGetIsn(void);
andrewboyson 80:4ef1500fca1d 40 extern struct tcb* TcbGetExisting(int ipType, int remArIndex, int locIpScope, uint16_t remPort, uint16_t locPort);
andrewboyson 61:aad055f1b0d1 41 extern struct tcb* TcbGetEmpty(void);
andrewboyson 78:9d8fc88df405 42 extern void TcbGetNext(struct tcb** ppTcb);
andrewboyson 61:aad055f1b0d1 43 extern void TcbMain(void);
andrewboyson 74:c3756bfa960e 44 extern void TcbInit(void);
andrewboyson 74:c3756bfa960e 45
andrewboyson 74:c3756bfa960e 46 #endif