summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorYu Watanabe <watanabe.yu+github@gmail.com>2022-02-22 23:50:30 +0100
committerYu Watanabe <watanabe.yu+github@gmail.com>2022-02-22 23:53:57 +0100
commit176a9a2cca47f7c1553d96f7dd51c2193a269dbc (patch)
tree33b41a5d7f34501fbab785ee11b31461f45c2056 /src
parentresolve: drop never matched condition (diff)
downloadsystemd-176a9a2cca47f7c1553d96f7dd51c2193a269dbc.tar.xz
systemd-176a9a2cca47f7c1553d96f7dd51c2193a269dbc.zip
resolve: make dns_scope_good_domain() take DnsQuery*
Diffstat (limited to '')
-rw-r--r--src/resolve/resolved-dns-query.c14
-rw-r--r--src/resolve/resolved-dns-scope.c21
-rw-r--r--src/resolve/resolved-dns-scope.h4
3 files changed, 21 insertions, 18 deletions
diff --git a/src/resolve/resolved-dns-query.c b/src/resolve/resolved-dns-query.c
index 7dc346794e..c0bb40937a 100644
--- a/src/resolve/resolved-dns-query.c
+++ b/src/resolve/resolved-dns-query.c
@@ -737,13 +737,8 @@ int dns_query_go(DnsQuery *q) {
LIST_FOREACH(scopes, s, q->manager->dns_scopes) {
DnsScopeMatch match;
- const char *name;
- name = dns_question_first_name(dns_query_question_for_protocol(q, s->protocol));
- if (!name)
- continue;
-
- match = dns_scope_good_domain(s, q->ifindex, q->flags, name);
+ match = dns_scope_good_domain(s, q);
assert(match >= 0);
if (match > found) { /* Does this match better? If so, remember how well it matched, and the first one
* that matches this well */
@@ -769,13 +764,8 @@ int dns_query_go(DnsQuery *q) {
LIST_FOREACH(scopes, s, first->scopes_next) {
DnsScopeMatch match;
- const char *name;
-
- name = dns_question_first_name(dns_query_question_for_protocol(q, s->protocol));
- if (!name)
- continue;
- match = dns_scope_good_domain(s, q->ifindex, q->flags, name);
+ match = dns_scope_good_domain(s, q);
assert(match >= 0);
if (match < found)
continue;
diff --git a/src/resolve/resolved-dns-scope.c b/src/resolve/resolved-dns-scope.c
index c3a2e2fc60..69101fb5a2 100644
--- a/src/resolve/resolved-dns-scope.c
+++ b/src/resolve/resolved-dns-scope.c
@@ -584,11 +584,13 @@ static DnsScopeMatch match_subnet_reverse_lookups(
DnsScopeMatch dns_scope_good_domain(
DnsScope *s,
- int ifindex,
- uint64_t flags,
- const char *domain) {
+ DnsQuery *q) {
+ DnsQuestion *question;
DnsSearchDomain *d;
+ const char *domain;
+ uint64_t flags;
+ int ifindex;
/* This returns the following return values:
*
@@ -602,7 +604,18 @@ DnsScopeMatch dns_scope_good_domain(
*/
assert(s);
- assert(domain);
+ assert(q);
+
+ question = dns_query_question_for_protocol(q, s->protocol);
+ if (!question)
+ return DNS_SCOPE_NO;
+
+ domain = dns_question_first_name(question);
+ if (!domain)
+ return DNS_SCOPE_NO;
+
+ ifindex = q->ifindex;
+ flags = q->flags;
/* Checks if the specified domain is something to look up on this scope. Note that this accepts
* non-qualified hostnames, i.e. those without any search path suffixed. */
diff --git a/src/resolve/resolved-dns-scope.h b/src/resolve/resolved-dns-scope.h
index a2b9546b38..1f9d22b7d1 100644
--- a/src/resolve/resolved-dns-scope.h
+++ b/src/resolve/resolved-dns-scope.h
@@ -10,7 +10,7 @@ typedef struct DnsScope DnsScope;
#include "resolved-dns-cache.h"
#include "resolved-dns-dnssec.h"
#include "resolved-dns-packet.h"
-
+#include "resolved-dns-query.h"
#include "resolved-dns-search-domain.h"
#include "resolved-dns-server.h"
#include "resolved-dns-stream.h"
@@ -76,7 +76,7 @@ int dns_scope_emit_udp(DnsScope *s, int fd, int af, DnsPacket *p);
int dns_scope_socket_tcp(DnsScope *s, int family, const union in_addr_union *address, DnsServer *server, uint16_t port, union sockaddr_union *ret_socket_address);
int dns_scope_socket_udp(DnsScope *s, DnsServer *server);
-DnsScopeMatch dns_scope_good_domain(DnsScope *s, int ifindex, uint64_t flags, const char *domain);
+DnsScopeMatch dns_scope_good_domain(DnsScope *s, DnsQuery *q);
bool dns_scope_good_key(DnsScope *s, const DnsResourceKey *key);
DnsServer *dns_scope_get_dns_server(DnsScope *s);