X-Git-Url: http://git.meshlink.io/?a=blobdiff_plain;f=utcp_priv.h;h=0b2efe4e1efd9c8e81b5981554f29b8a8bc8f6cd;hb=97f8b67ac77d0623e536d302eb1e08666be7d411;hp=143ed60191746d36cc39b39ee5a27f7b8420ba7b;hpb=ab52e5aeafdda3721a3843f489f2c43c05c45033;p=utcp diff --git a/utcp_priv.h b/utcp_priv.h index 143ed60..0b2efe4 100644 --- a/utcp_priv.h +++ b/utcp_priv.h @@ -30,6 +30,11 @@ #define FIN 4 #define RST 8 +#define AUX_INIT 1 +#define AUX_FRAME 2 +#define AUX_SAK 3 +#define AUX_TIMESTAMP 4 + #define NSACKS 4 #define DEFAULT_SNDBUFSIZE 4096 #define DEFAULT_MAXSNDBUFSIZE 131072 @@ -38,11 +43,11 @@ #define DEFAULT_MTU 1000 -#define USEC_PER_SEC 1000000 -#define DEFAULT_USER_TIMEOUT 60 // sec -#define CLOCK_GRANULARITY 1000 // usec -#define START_RTO 1000000 // usec -#define MAX_RTO 3000000 // usec +static const long USEC_PER_SEC = 1000000; +static const long NSEC_PER_SEC = 1000000000; +static const int DEFAULT_USER_TIMEOUT = 60; // sec +static const long START_RTO = 1 * USEC_PER_SEC; // usec +static const long MAX_RTO = 3 * USEC_PER_SEC; // usec struct hdr { uint16_t src; // Source port @@ -84,6 +89,7 @@ static const char *strstate[] __attribute__((unused)) = { struct buffer { char *data; + uint32_t offset; uint32_t used; uint32_t size; uint32_t maxsize; @@ -97,8 +103,10 @@ struct sack { struct utcp_connection { void *priv; struct utcp *utcp; + uint32_t flags; bool reapable; + bool do_poll; // Callbacks @@ -119,11 +127,11 @@ struct utcp_connection { uint32_t last; uint32_t cwnd; + uint32_t ssthresh; } snd; struct { uint32_t nxt; - uint32_t wnd; uint32_t irs; } rcv; @@ -131,13 +139,14 @@ struct utcp_connection { // Timers - struct timeval conn_timeout; - struct timeval rtrx_timeout; - struct timeval rtt_start; + struct timespec conn_timeout; + struct timespec rtrx_timeout; + struct timespec rtt_start; uint32_t rtt_seq; // Buffers + uint32_t prev_free; struct buffer sndbuf; struct buffer rcvbuf; struct sack sacks[NSACKS]; @@ -146,10 +155,11 @@ struct utcp_connection { bool nodelay; bool keepalive; + bool shut_wr; // Congestion avoidance state - struct timeval tlast; + struct timespec tlast; uint64_t bandwidth; }; @@ -162,9 +172,14 @@ struct utcp { utcp_pre_accept_t pre_accept; utcp_send_t send; + // Packet buffer + + void *pkt; + // Global socket options - uint16_t mtu; + uint16_t mtu; // The maximum size of a UTCP packet, including headers. + uint16_t mss; // The maximum size of the payload of a UTCP packet. int timeout; // sec // RTT variables