diff options
author | Lennart Poettering <lennart@poettering.net> | 2014-07-31 17:46:40 +0200 |
---|---|---|
committer | Lennart Poettering <lennart@poettering.net> | 2014-07-31 17:47:19 +0200 |
commit | ec2c5e4398f9d65e5dfe61530f2556224733d1e6 (patch) | |
tree | 396107863c59c3e949f69f4a8050185c360b7f70 /src/resolve/resolved-dns-zone.h | |
parent | b5df2eabf3fdd3e1663bc4c948812472084f3e96 (diff) |
resolved: implement LLMNR uniqueness verification
Diffstat (limited to 'src/resolve/resolved-dns-zone.h')
-rw-r--r-- | src/resolve/resolved-dns-zone.h | 38 |
1 files changed, 34 insertions, 4 deletions
diff --git a/src/resolve/resolved-dns-zone.h b/src/resolve/resolved-dns-zone.h index b2af028cfc..bf93ab43fb 100644 --- a/src/resolve/resolved-dns-zone.h +++ b/src/resolve/resolved-dns-zone.h @@ -28,16 +28,46 @@ typedef struct DnsZone { Hashmap *by_name; } DnsZone; +typedef struct DnsZoneItem DnsZoneItem; +typedef enum DnsZoneItemState DnsZoneItemState; + #include "resolved-dns-rr.h" #include "resolved-dns-question.h" #include "resolved-dns-answer.h" +#include "resolved-dns-transaction.h" + +/* RFC 4795 Section 2.8. suggests a TTL of 30s by default */ +#define LLMNR_DEFAULT_TTL (30) + +enum DnsZoneItemState { + DNS_ZONE_ITEM_PROBING, + DNS_ZONE_ITEM_ESTABLISHED, + DNS_ZONE_ITEM_VERIFYING, + DNS_ZONE_ITEM_WITHDRAWN, +}; + +struct DnsZoneItem { + DnsScope *scope; + DnsResourceRecord *rr; + + DnsZoneItemState state; + + unsigned block_ready; + + bool probing_enabled; + + LIST_FIELDS(DnsZoneItem, by_key); + LIST_FIELDS(DnsZoneItem, by_name); + + DnsTransaction *probe_transaction; +}; void dns_zone_flush(DnsZone *z); -int dns_zone_put(DnsZone *z, DnsResourceRecord *rr); +int dns_zone_put(DnsZone *z, DnsScope *s, DnsResourceRecord *rr, bool probe); void dns_zone_remove_rr(DnsZone *z, DnsResourceRecord *rr); -int dns_zone_lookup(DnsZone *z, DnsQuestion *q, DnsAnswer **answer, DnsAnswer **soa); +int dns_zone_lookup(DnsZone *z, DnsQuestion *q, DnsAnswer **answer, DnsAnswer **soa, bool *tentative); -/* RFC 4795 Section 2.8. suggests a TTL of 30s by default */ -#define LLMNR_DEFAULT_TTL (30) +void dns_zone_item_conflict(DnsZoneItem *i); +void dns_zone_item_ready(DnsZoneItem *i); |