/* * Definitions for RTT timing. */ #include "systype.h" #include #ifdef BSD #include #include #endif #ifdef SYS5 #include /* requires */ #include /* need the definition of HZ */ #define TICKS HZ /* see times(2); usually 60 or 100 */ #endif /* * Structure to contain everything needed for RTT timing. * One of these required per socket being timed. * The caller allocates this structure, then passes its address to * all the rtt_XXX() functions. */ struct rtt_struct { float rtt_rtt; /* most recent round-trip time (RTT), seconds */ float rtt_srtt; /* smoothed round-trip time (SRTT), seconds */ float rtt_rttdev; /* smoothed mean deviation, seconds */ short rtt_nrexmt; /* #times retransmitted: 0, 1, 2, ... */ short rtt_currto; /* current retransmit timeout (RTO), seconds */ short rtt_nxtrto; /* retransmit timeout for next packet, if nonzero */ #ifdef BSD struct timeval time_start; /* for elapsed time */ struct timeval time_stop; /* for elapsed time */ #endif #ifdef SYS5 long time_start; /* for elapsed time */ long time_stop; /* for elapsed time */ struct tms tms_start; /* arg to times(2), but not used */ struct tms tms_stop; /* arg to times(2), but not used */ #endif }; #define RTT_RXTMIN 2 /* min retransmit timeout value, seconds */ #define RTT_RXTMAX 120 /* max retransmit timeout value, seconds */ #define RTT_MAXNREXMT 4 /* max #times to retransmit: must also change exp_backoff[] if this changes */ #ifdef SYS5 long times(); /* the system call */ #endif extern int rtt_d_flag; /* can be set nonzero by caller for addl info */