49 rto = *srtt +
max(
G,
K*(*rtt_var));
53 *rtt_var = (1 -
beta) * (*rtt_var) +
beta * fabs(*srtt - R);
55 rto = *srtt +
max(
G,
K*(*rtt_var));
#define fnNetSimError(x,...)
static void handle_rto_timer_for_ctrl(PNETSIM_SOCKET s)
static void Backoff_RTO(double *rto)
double calculate_RTO(double R, double *srtt, double *rtt_var)
void add_timeout_event(PNETSIM_SOCKET s, NetSim_PACKET *packet)
void restart_rto_timer(PNETSIM_SOCKET s)
int fnDeleteEvent(unsigned long long int nEventId)
EXPORTED struct stru_NetSim_EventDetails * pstruEventDetails
bool isAnySegmentInQueue(PTCP_QUEUE queue)
NetSim_PACKET * get_earliest_copy_segment_from_queue(PTCP_QUEUE queue)
void add_packet_to_queue(PTCP_QUEUE queue, NetSim_PACKET *packet, double time)
void resend_syn(PNETSIM_SOCKET s)
void print_tcp_log(char *format,...)
bool isSynbitSet(NetSim_PACKET *packet)
void resend_segment(PNETSIM_SOCKET s, NetSim_PACKET *expired)
PNETSIM_SOCKET find_socket_at_source(NetSim_PACKET *packet)
#define fn_NetSim_Packet_CopyPacket(pstruPacket)
#define fn_NetSim_Packet_FreePacket(pstruPacket)
#define fnpAddEvent(pstruEvent)
struct stru_NetSim_Packet * pPacket
struct stru_NetSim_Packet_AppLayer * pstruAppData
unsigned int nControlDataType
struct stru_NetSim_Packet_TransportLayer * pstruTransportData
NetSim_PACKET * eventPacketptr
void(* rto_expired)(PNETSIM_SOCKET)
TCP_QUEUE retransmissionQueue