chiark / gitweb /
resolve: reject empty TXT records
[elogind.git] / src / resolve / resolved-dns-scope.h
index 67a6ba2901196f231926b211873f1b52cf274a1e..f05648e5a5c1dfbda2b967110a6d207dca2cbc38 100644 (file)
 
 typedef struct DnsScope DnsScope;
 
 
 typedef struct DnsScope DnsScope;
 
-#include "resolved.h"
-#include "resolved-link.h"
 #include "resolved-dns-server.h"
 #include "resolved-dns-packet.h"
 #include "resolved-dns-query.h"
 #include "resolved-dns-cache.h"
 #include "resolved-dns-zone.h"
 #include "resolved-dns-stream.h"
 #include "resolved-dns-server.h"
 #include "resolved-dns-packet.h"
 #include "resolved-dns-query.h"
 #include "resolved-dns-cache.h"
 #include "resolved-dns-zone.h"
 #include "resolved-dns-stream.h"
+#include "resolved-manager.h"
+#include "resolved-link.h"
 
 typedef enum DnsScopeMatch {
         DNS_SCOPE_NO,
 
 typedef enum DnsScopeMatch {
         DNS_SCOPE_NO,
@@ -55,6 +55,11 @@ struct DnsScope {
         DnsCache cache;
         DnsZone zone;
 
         DnsCache cache;
         DnsZone zone;
 
+        OrderedHashmap *conflict_queue;
+        sd_event_source *conflict_event_source;
+
+        RateLimit ratelimit;
+
         LIST_HEAD(DnsTransaction, transactions);
 
         LIST_FIELDS(DnsScope, scopes);
         LIST_HEAD(DnsTransaction, transactions);
 
         LIST_FIELDS(DnsScope, scopes);
@@ -63,18 +68,21 @@ struct DnsScope {
 int dns_scope_new(Manager *m, DnsScope **ret, Link *l, DnsProtocol p, int family);
 DnsScope* dns_scope_free(DnsScope *s);
 
 int dns_scope_new(Manager *m, DnsScope **ret, Link *l, DnsProtocol p, int family);
 DnsScope* dns_scope_free(DnsScope *s);
 
-int dns_scope_send(DnsScope *s, DnsPacket *p);
+int dns_scope_emit(DnsScope *s, DnsPacket *p);
 int dns_scope_tcp_socket(DnsScope *s, int family, const union in_addr_union *address, uint16_t port);
 
 int dns_scope_tcp_socket(DnsScope *s, int family, const union in_addr_union *address, uint16_t port);
 
-DnsScopeMatch dns_scope_good_domain(DnsScope *s, const char *domain);
+DnsScopeMatch dns_scope_good_domain(DnsScope *s, int ifindex, uint64_t flags, const char *domain);
 int dns_scope_good_key(DnsScope *s, DnsResourceKey *key);
 int dns_scope_good_dns_server(DnsScope *s, int family, const union in_addr_union *address);
 
 int dns_scope_good_key(DnsScope *s, DnsResourceKey *key);
 int dns_scope_good_dns_server(DnsScope *s, int family, const union in_addr_union *address);
 
-DnsServer *dns_scope_get_server(DnsScope *s);
+DnsServer *dns_scope_get_dns_server(DnsScope *s);
 void dns_scope_next_dns_server(DnsScope *s);
 
 int dns_scope_llmnr_membership(DnsScope *s, bool b);
 
 void dns_scope_process_query(DnsScope *s, DnsStream *stream, DnsPacket *p);
 
 void dns_scope_next_dns_server(DnsScope *s);
 
 int dns_scope_llmnr_membership(DnsScope *s, bool b);
 
 void dns_scope_process_query(DnsScope *s, DnsStream *stream, DnsPacket *p);
 
-DnsTransaction *dns_scope_find_transaction(DnsScope *scope, DnsQuestion *question);
+DnsTransaction *dns_scope_find_transaction(DnsScope *scope, DnsQuestion *question, bool cache_ok);
+
+int dns_scope_notify_conflict(DnsScope *scope, DnsResourceRecord *rr);
+void dns_scope_check_conflicts(DnsScope *scope, DnsPacket *p);