From: Lennart Poettering Date: Mon, 15 Mar 2021 19:47:28 +0000 (+0100) Subject: resolved: add new helper dns_answer_min_ttl() X-Git-Tag: v248-rc4~10^2~11 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=1499a0a99a0765b4b1b56f56d6712324e740911f;p=thirdparty%2Fsystemd.git resolved: add new helper dns_answer_min_ttl() --- diff --git a/src/resolve/resolved-dns-answer.c b/src/resolve/resolved-dns-answer.c index a667ab5ede4..5fbff81c255 100644 --- a/src/resolve/resolved-dns-answer.c +++ b/src/resolve/resolved-dns-answer.c @@ -963,3 +963,22 @@ void dns_answer_randomize(DnsAnswer *a) { SWAP_TWO(a->items[i], a->items[k]); } } + +uint32_t dns_answer_min_ttl(DnsAnswer *a) { + uint32_t ttl = UINT32_MAX; + DnsResourceRecord *rr; + + /* Return the smallest TTL of all RRs in this answer */ + + DNS_ANSWER_FOREACH(rr, a) { + /* Don't consider OPT (where the TTL field is used for other purposes than an actual TTL) */ + + if (dns_type_is_pseudo(rr->key->type) || + dns_class_is_pseudo(rr->key->class)) + continue; + + ttl = MIN(ttl, rr->ttl); + } + + return ttl; +} diff --git a/src/resolve/resolved-dns-answer.h b/src/resolve/resolved-dns-answer.h index 7d19eee4e2b..447da5d6cc3 100644 --- a/src/resolve/resolved-dns-answer.h +++ b/src/resolve/resolved-dns-answer.h @@ -87,6 +87,8 @@ void dns_answer_dump(DnsAnswer *answer, FILE *f); void dns_answer_randomize(DnsAnswer *a); +uint32_t dns_answer_min_ttl(DnsAnswer *a); + DEFINE_TRIVIAL_CLEANUP_FUNC(DnsAnswer*, dns_answer_unref); #define _DNS_ANSWER_FOREACH(q, kk, a) \