#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_MTU 1000
-#define DEFAULT_USER_TIMEOUT 60 // s
-#define CLOCK_GRANULARITY 1000 // us
-#define START_RTO 1000000 // us
-#define MAX_RTO 3000000 // us
+#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
struct utcp_connection {
void *priv;
struct utcp *utcp;
+ uint32_t flags;
bool reapable;
uint32_t last;
uint32_t cwnd;
+ uint32_t ssthresh;
} snd;
struct {
uint32_t nxt;
- uint32_t wnd;
uint32_t irs;
} rcv;
bool nodelay;
bool keepalive;
+ bool shut_wr;
// Congestion avoidance state
// Global socket options
- uint16_t mtu;
- int timeout; // s
+ 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
- uint32_t srtt; // us
- uint32_t rttvar; // us
- uint32_t rto; // us
+ uint32_t srtt; // usec
+ uint32_t rttvar; // usec
+ uint32_t rto; // usec
// Connection management