/** Store RTT in infra cache */ static void do_infra_rtt(struct replay_runtime* runtime) { struct replay_moment* now = runtime->now; int rto = infra_rtt_update(runtime->infra, &now->addr, now->addrlen, atoi(now->string), -1, runtime->now_secs); log_addr(0, "INFRA_RTT for", &now->addr, now->addrlen); log_info("INFRA_RTT(roundtrip %d): rto of %d", atoi(now->string), rto); if(rto == 0) fatal_exit("infra_rtt_update failed"); }
/** perform exponential backoff on the timout */ static void expon_timeout_backoff(struct replay_runtime* runtime) { struct fake_pending* p = runtime->pending_list; int rtt, vs; uint8_t edns_lame_known; int last_rtt, rto; if(!p) return; /* no pending packet to backoff */ if(!infra_host(runtime->infra, &p->addr, p->addrlen, p->zone, p->zonelen, runtime->now_secs, &vs, &edns_lame_known, &rtt)) return; last_rtt = rtt; rto = infra_rtt_update(runtime->infra, &p->addr, p->addrlen, p->zone, p->zonelen, p->qtype, -1, last_rtt, runtime->now_secs); log_info("infra_rtt_update returned rto %d", rto); }
/** Store RTT in infra cache */ static void do_infra_rtt(struct replay_runtime* runtime) { struct replay_moment* now = runtime->now; int rto; size_t dplen = 0; uint8_t* dp = sldns_str2wire_dname(now->variable, &dplen); if(!dp) fatal_exit("cannot parse %s", now->variable); rto = infra_rtt_update(runtime->infra, &now->addr, now->addrlen, dp, dplen, LDNS_RR_TYPE_A, atoi(now->string), -1, runtime->now_secs); log_addr(0, "INFRA_RTT for", &now->addr, now->addrlen); log_info("INFRA_RTT(%s roundtrip %d): rto of %d", now->variable, atoi(now->string), rto); if(rto == 0) fatal_exit("infra_rtt_update failed"); free(dp); }