void dns_rdataset_trimttl(dns_rdataset_t *rdataset, dns_rdataset_t *sigrdataset, dns_rdata_rrsig_t *rrsig, isc_stdtime_t now, isc_boolean_t acceptexpired) { isc_uint32_t ttl = 0; REQUIRE(DNS_RDATASET_VALID(rdataset)); REQUIRE(DNS_RDATASET_VALID(sigrdataset)); REQUIRE(rrsig != NULL); /* * If we accept expired RRsets keep them for no more than 120 seconds. */ if (acceptexpired && (isc_serial_le(rrsig->timeexpire, ((now + 120) & 0xffffffff)) || isc_serial_le(rrsig->timeexpire, now))) ttl = 120; else if (isc_serial_ge(rrsig->timeexpire, now)) ttl = rrsig->timeexpire - now; ttl = ISC_MIN(ISC_MIN(rdataset->ttl, sigrdataset->ttl), ISC_MIN(rrsig->originalttl, ttl)); rdataset->ttl = ttl; sigrdataset->ttl = ttl; }
int main () { isc_uint32_t a, b; char buf[1024]; char *s, *e; while (fgets (buf, sizeof (buf), stdin) != NULL) { buf[sizeof (buf) - 1] = '\0'; s = buf; a = strtoul (s, &e, 0); if (s == e) continue; s = e; b = strtoul (s, &e, 0); if (s == e) continue; fprintf (stdout, "%u %u gt:%d lt:%d ge:%d le:%d eq:%d ne:%d\n", a, b, isc_serial_gt (a, b), isc_serial_lt (a, b), isc_serial_ge (a, b), isc_serial_le (a, b), isc_serial_eq (a, b), isc_serial_ne (a, b)); } return (0); }