X-Git-Url: http://git.meshlink.io/?a=blobdiff_plain;f=utcp_priv.h;h=184e3386bf00e8c3a3addabd1c39bd9086f5d40a;hb=d5888c10a181d6247e407f480524d36be6319b3e;hp=24ae4cc4655a0b3d440369f042dc4eb6d705d843;hpb=aae57951f85ef517f85788ff7f66fe82cf8b2ad0;p=utcp diff --git a/utcp_priv.h b/utcp_priv.h index 24ae4cc..184e338 100644 --- a/utcp_priv.h +++ b/utcp_priv.h @@ -74,22 +74,27 @@ static const char *strstate[] __attribute__((unused)) = { struct utcp_connection { void *priv; struct utcp *utcp; + bool reapable; - bool nodelay; - bool keepalive; + // Callbacks + + utcp_recv_t recv; + + // TCP State uint16_t src; uint16_t dst; enum state state; - // The following two structures form the TCB - struct { uint32_t una; uint32_t nxt; uint32_t wnd; uint32_t iss; + + uint32_t last; + uint32_t cwnd; } snd; struct { @@ -98,26 +103,47 @@ struct utcp_connection { uint32_t irs; } rcv; - utcp_recv_t recv; + int dupack; + + // Timers struct timeval conn_timeout; struct timeval rtrx_timeout; + // Send buffer + char *sndbuf; + uint32_t sndbufused; uint32_t sndbufsize; uint32_t maxsndbufsize; + + // Per-socket options + + bool nodelay; + bool keepalive; + + // Congestion avoidance state + + struct timeval tlast; + uint64_t bandwidth; }; struct utcp { void *priv; + // Callbacks + utcp_accept_t accept; utcp_pre_accept_t pre_accept; utcp_send_t send; + // Global socket options + uint16_t mtu; int timeout; + // Connection management + struct utcp_connection **connections; int nconnections; int nallocated;