summaryrefslogtreecommitdiff
path: root/src/resolve/resolved-dns-answer.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/resolve/resolved-dns-answer.h')
-rw-r--r--src/resolve/resolved-dns-answer.h17
1 files changed, 17 insertions, 0 deletions
diff --git a/src/resolve/resolved-dns-answer.h b/src/resolve/resolved-dns-answer.h
index 044d73b19c..b5b1ad56ba 100644
--- a/src/resolve/resolved-dns-answer.h
+++ b/src/resolve/resolved-dns-answer.h
@@ -58,3 +58,20 @@ void dns_answer_order_by_scope(DnsAnswer *a, bool prefer_link_local);
int dns_answer_reserve(DnsAnswer **a, unsigned n_free);
DEFINE_TRIVIAL_CLEANUP_FUNC(DnsAnswer*, dns_answer_unref);
+
+#define DNS_ANSWER_FOREACH(kk, a) \
+ for (unsigned _i = ({ \
+ (kk) = ((a) && (a)->n_rrs > 0 ? (a)->items[0].rr : NULL); \
+ 0; \
+ }); \
+ (a) && ((_i) < (a)->n_rrs); \
+ _i++, (kk) = (_i < (a)->n_rrs ? (a)->items[_i].rr : NULL))
+
+#define DNS_ANSWER_FOREACH_IFINDEX(kk, ifindex, a) \
+ for (unsigned _i = ({ \
+ (kk) = ((a) && (a)->n_rrs > 0 ? (a)->items[0].rr : NULL); \
+ (ifindex) = ((a) && (a)->n_rrs > 0 ? (a)->items[0].ifindex : 0); \
+ 0; \
+ }); \
+ (a) && ((_i) < (a)->n_rrs); \
+ _i++, (kk) = (_i < (a)->n_rrs ? (a)->items[_i].rr : NULL), (ifindex) = (_i < (a)->n_rrs ? (a)->items[_i].ifindex : 0))