Lines Matching defs:rr

46         DnsResourceRecord *rr;
64 dns_resource_record_unref(i->rr);
92 static bool dns_cache_remove_by_rr(DnsCache *c, DnsResourceRecord *rr) {
96 first = hashmap_get(c->by_key, rr->key);
98 r = dns_resource_record_equal(i->rr, rr);
257 if (first->rr)
258 dns_resource_key_reduce(&first->rr->key, &i->key);
259 if (i->rr)
260 dns_resource_key_reduce(&i->rr->key, &i->key);
275 static DnsCacheItem* dns_cache_get(DnsCache *c, DnsResourceRecord *rr) {
279 assert(rr);
281 LIST_FOREACH(by_key, i, hashmap_get(c->by_key, rr->key))
282 if (i->rr && dns_resource_record_equal(i->rr, rr) > 0)
288 static usec_t calculate_until(DnsResourceRecord *rr, uint32_t nsec_ttl, usec_t timestamp, bool use_soa_minimum) {
292 assert(rr);
294 ttl = MIN(rr->ttl, nsec_ttl);
295 if (rr->key->type == DNS_TYPE_SOA && use_soa_minimum) {
302 if (ttl > rr->soa.minimum)
303 ttl = rr->soa.minimum;
310 if (rr->expiry != USEC_INFINITY) {
316 left = LESS_BY(rr->expiry, now(CLOCK_REALTIME));
327 DnsResourceRecord *rr,
337 assert(rr);
346 assert_se(hashmap_replace(c->by_key, rr->key, i) >= 0);
348 dns_resource_record_ref(rr);
349 dns_resource_record_unref(i->rr);
350 i->rr = rr;
353 i->key = dns_resource_key_ref(rr->key);
355 i->until = calculate_until(rr, (uint32_t) -1, timestamp, false);
369 DnsResourceRecord *rr,
383 assert(rr);
387 if (dns_class_is_pseudo(rr->key->class))
389 if (dns_type_is_pseudo(rr->key->type))
393 if (rr->ttl <= 0) {
394 k = dns_cache_remove_by_rr(c, rr);
397 r = dns_resource_key_to_string(rr->key, &key_str);
411 existing = dns_cache_get(c, rr);
416 rr,
438 i->key = dns_resource_key_ref(rr->key);
439 i->rr = dns_resource_record_ref(rr);
440 i->until = calculate_until(rr, (uint32_t) -1, timestamp, false);
562 DnsResourceRecord *rr;
576 DNS_ANSWER_FOREACH_FLAGS(rr, flags, answer) {
583 dns_cache_remove_by_key(c, rr->key);
587 static bool rr_eligible(DnsResourceRecord *rr) {
588 assert(rr);
594 switch (rr->key->type) {
597 return !bitmap_isset(rr->nsec.types, DNS_TYPE_NS) ||
598 bitmap_isset(rr->nsec.types, DNS_TYPE_SOA);
601 return !bitmap_isset(rr->nsec3.types, DNS_TYPE_NS) ||
602 bitmap_isset(rr->nsec3.types, DNS_TYPE_SOA);
620 DnsResourceRecord *soa = NULL, *rr;
661 DNS_ANSWER_FOREACH_FULL(rr, ifindex, flags, answer) {
665 r = rr_eligible(rr);
673 rr,
737 DNS_ANSWER_FOREACH_FLAGS(rr, flags, answer) {
741 dns_cache_remove_by_key(c, rr->key);
858 if (j->rr) {
859 if (j->rr->key->type == DNS_TYPE_NSEC)
892 if (!bitmap_isset(nsec->rr->nsec.types, key->type) &&
893 !bitmap_isset(nsec->rr->nsec.types, DNS_TYPE_CNAME) &&
894 !bitmap_isset(nsec->rr->nsec.types, DNS_TYPE_DNAME)) {
928 if (!j->rr)
931 r = dns_answer_add(answer, j->rr, j->ifindex, j->authenticated ? DNS_ANSWER_AUTHENTICATED : 0);
946 int dns_cache_check_conflicts(DnsCache *cache, DnsResourceRecord *rr, int owner_family, const union in_addr_union *owner_address) {
951 assert(rr);
957 first = hashmap_get(cache->by_key, rr->key);
975 if (dns_cache_get(cache, rr))
995 if (!j->rr)
1001 r = dns_packet_append_rr(p, j->rr, NULL, NULL);
1016 r = dns_packet_append_rr(p, j->rr, NULL, NULL);
1049 if (j->rr) {
1051 t = dns_resource_record_to_string(j->rr);