#define ACK 2
#define FIN 4
#define RST 8
+#define MF 16
#define AUX_INIT 1
#define AUX_FRAME 2
#define DEFAULT_RCVBUFSIZE 0
#define DEFAULT_MAXRCVBUFSIZE 131072
+#define MAX_UNRELIABLE_SIZE 65536
#define DEFAULT_MTU 1000
-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
+#define USEC_PER_SEC 1000000L
+#define NSEC_PER_SEC 1000000000L
+#define DEFAULT_USER_TIMEOUT 60
+#define START_RTO (1 * USEC_PER_SEC)
+#define MAX_RTO (3 * USEC_PER_SEC)
struct hdr {
uint16_t src; // Source port
uint32_t flags;
bool reapable;
+ bool do_poll;
// Callbacks
struct timespec rtt_start;
uint32_t rtt_seq;
+ // RTT variables
+
+ uint32_t srtt; // usec
+ uint32_t rttvar; // usec
+ uint32_t rto; // usec
+
// Buffers
+ uint32_t prev_free;
struct buffer sndbuf;
struct buffer rcvbuf;
struct sack sacks[NSACKS];
utcp_accept_t accept;
utcp_pre_accept_t pre_accept;
+ utcp_retransmit_t retransmit;
utcp_send_t send;
// Packet buffer
uint16_t mss; // The maximum size of the payload of a UTCP packet.
int timeout; // sec
- // RTT variables
-
- uint32_t srtt; // usec
- uint32_t rttvar; // usec
- uint32_t rto; // usec
-
// Connection management
struct utcp_connection **connections;