DnsResourceRecord *rr,
int ifindex,
DnsAnswerFlags flags,
- DnsResourceRecord *rrsig) {
+ DnsResourceRecord *rrsig,
+ usec_t until) {
_cleanup_(dns_answer_item_unrefp) DnsAnswerItem *item = NULL;
int r;
.rr = dns_resource_record_ref(rr),
.ifindex = ifindex,
.flags = flags,
+ .until = until,
.rrsig = dns_resource_record_ref(rrsig),
};
item->rr,
item->ifindex,
item->flags,
- item->rrsig);
+ item->rrsig,
+ /* until= */ USEC_INFINITY);
if (r < 0)
return r;
}
return 0;
}
-int dns_answer_add(
+int dns_answer_add_full(
DnsAnswer *a,
DnsResourceRecord *rr,
int ifindex,
DnsAnswerFlags flags,
- DnsResourceRecord *rrsig) {
+ DnsResourceRecord *rrsig,
+ usec_t until) {
DnsAnswerItem tmp, *exist;
return 0;
}
- return dns_answer_add_raw(a, rr, ifindex, flags, rrsig);
+ return dns_answer_add_raw(a, rr, ifindex, flags, rrsig, until);
}
static int dns_answer_add_all(DnsAnswer *a, DnsAnswer *b) {
return 0;
}
-int dns_answer_add_extend(
+int dns_answer_add_extend_full(
DnsAnswer **a,
DnsResourceRecord *rr,
int ifindex,
DnsAnswerFlags flags,
- DnsResourceRecord *rrsig) {
+ DnsResourceRecord *rrsig,
+ usec_t until) {
int r;
if (r < 0)
return r;
- return dns_answer_add(*a, rr, ifindex, flags, rrsig);
+ return dns_answer_add_full(*a, rr, ifindex, flags, rrsig, until);
}
int dns_answer_add_soa(DnsAnswer *a, const char *name, uint32_t ttl, int ifindex) {
DnsResourceRecord *rrsig; /* Optionally, also store RRSIG RR that successfully validates this item */
int ifindex;
DnsAnswerFlags flags;
+ usec_t until;
} DnsAnswerItem;
typedef struct DnsAnswer {
*_a = _b; \
} while(0)
-int dns_answer_add(DnsAnswer *a, DnsResourceRecord *rr, int ifindex, DnsAnswerFlags flags, DnsResourceRecord *rrsig);
-int dns_answer_add_extend(DnsAnswer **a, DnsResourceRecord *rr, int ifindex, DnsAnswerFlags flags, DnsResourceRecord *rrsig);
+int dns_answer_add_full(DnsAnswer *a, DnsResourceRecord *rr, int ifindex, DnsAnswerFlags flags, DnsResourceRecord *rrsig, usec_t until);
+int dns_answer_add_extend_full(DnsAnswer **a, DnsResourceRecord *rr, int ifindex, DnsAnswerFlags flags, DnsResourceRecord *rrsig, usec_t until);
int dns_answer_add_soa(DnsAnswer *a, const char *name, uint32_t ttl, int ifindex);
int dns_answer_match_key(DnsAnswer *a, const DnsResourceKey *key, DnsAnswerFlags *ret_flags);
int dns_answer_has_dname_for_cname(DnsAnswer *a, DnsResourceRecord *cname);
+static inline int dns_answer_add_extend(DnsAnswer **a, DnsResourceRecord *rr,
+ int ifindex, DnsAnswerFlags flags, DnsResourceRecord *rrsig) {
+ return dns_answer_add_extend_full(a, rr, ifindex, flags, rrsig, /* until= */ USEC_INFINITY);
+}
+
+static inline int dns_answer_add(DnsAnswer *a, DnsResourceRecord *rr,
+ int ifindex, DnsAnswerFlags flags, DnsResourceRecord *rrsig) {
+ return dns_answer_add_full(a, rr, ifindex, flags, rrsig, /* until= */ USEC_INFINITY);
+}
+
static inline size_t dns_answer_size(DnsAnswer *a) {
return a ? ordered_set_size(a->items) : 0;
}