X-Git-Url: http://git.meshlink.io/?a=blobdiff_plain;f=utcp_priv.h;h=9331cd2d617653aaaa40f5353a06b02d75245e5a;hb=refs%2Fheads%2Ffeature%2Fefficent-buffers;hp=69f1b0da5347371649da4dbaa92973cfed0617eb;hpb=fb2d3fbb1fe0538ef0f137ed88322f5b3de4707f;p=utcp diff --git a/utcp_priv.h b/utcp_priv.h index 69f1b0d..9331cd2 100644 --- a/utcp_priv.h +++ b/utcp_priv.h @@ -30,12 +30,25 @@ #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 #define DEFAULT_RCVBUFSIZE 0 #define DEFAULT_MAXRCVBUFSIZE 131072 +#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 + struct hdr { uint16_t src; // Source port uint16_t dst; // Destination port @@ -76,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; @@ -89,6 +103,7 @@ struct sack { struct utcp_connection { void *priv; struct utcp *utcp; + uint32_t flags; bool reapable; @@ -125,6 +140,8 @@ struct utcp_connection { struct timeval conn_timeout; struct timeval rtrx_timeout; + struct timeval rtt_start; + uint32_t rtt_seq; // Buffers @@ -136,6 +153,7 @@ struct utcp_connection { bool nodelay; bool keepalive; + bool shut_wr; // Congestion avoidance state @@ -152,10 +170,20 @@ struct utcp { utcp_pre_accept_t pre_accept; utcp_send_t send; + // Packet buffer + + void *pkt; + // Global socket options uint16_t mtu; - int timeout; + int timeout; // sec + + // RTT variables + + uint32_t srtt; // usec + uint32_t rttvar; // usec + uint32_t rto; // usec // Connection management