1 /* SPDX-License-Identifier: LGPL-2.1+ */
5 This file is part of systemd.
7 Copyright 2014 Lennart Poettering
12 typedef struct DnsZone
{
17 typedef struct DnsZoneItem DnsZoneItem
;
18 typedef enum DnsZoneItemState DnsZoneItemState
;
20 #include "resolved-dns-answer.h"
21 #include "resolved-dns-question.h"
22 #include "resolved-dns-rr.h"
23 #include "resolved-dns-transaction.h"
25 /* RFC 4795 Section 2.8. suggests a TTL of 30s by default */
26 #define LLMNR_DEFAULT_TTL (30)
28 /* RFC 6762 Section 10. suggests a TTL of 120s by default */
29 #define MDNS_DEFAULT_TTL (120)
31 enum DnsZoneItemState
{
32 DNS_ZONE_ITEM_PROBING
,
33 DNS_ZONE_ITEM_ESTABLISHED
,
34 DNS_ZONE_ITEM_VERIFYING
,
35 DNS_ZONE_ITEM_WITHDRAWN
,
40 DnsResourceRecord
*rr
;
42 DnsZoneItemState state
;
48 LIST_FIELDS(DnsZoneItem
, by_key
);
49 LIST_FIELDS(DnsZoneItem
, by_name
);
51 DnsTransaction
*probe_transaction
;
54 void dns_zone_flush(DnsZone
*z
);
56 int dns_zone_put(DnsZone
*z
, DnsScope
*s
, DnsResourceRecord
*rr
, bool probe
);
57 DnsZoneItem
* dns_zone_get(DnsZone
*z
, DnsResourceRecord
*rr
);
58 void dns_zone_remove_rr(DnsZone
*z
, DnsResourceRecord
*rr
);
59 int dns_zone_remove_rrs_by_key(DnsZone
*z
, DnsResourceKey
*key
);
61 int dns_zone_lookup(DnsZone
*z
, DnsResourceKey
*key
, int ifindex
, DnsAnswer
**answer
, DnsAnswer
**soa
, bool *tentative
);
63 void dns_zone_item_conflict(DnsZoneItem
*i
);
64 void dns_zone_item_notify(DnsZoneItem
*i
);
66 int dns_zone_check_conflicts(DnsZone
*zone
, DnsResourceRecord
*rr
);
67 int dns_zone_verify_conflicts(DnsZone
*zone
, DnsResourceKey
*key
);
69 void dns_zone_verify_all(DnsZone
*zone
);
71 void dns_zone_item_probe_stop(DnsZoneItem
*i
);
73 void dns_zone_dump(DnsZone
*zone
, FILE *f
);
74 bool dns_zone_is_empty(DnsZone
*zone
);
75 bool dns_zone_contains_name(DnsZone
*z
, const char *name
);