resolved: move DNS RR/key/answer/question/packet tools to shared/

We want to reuse these generic DNS concepts in resolved hook
implementations, hence move them to shared code.

(This also enables us to immediately remove som SVCB record handling
duplicate definitions.)

No real code changes, just some moving around of things.
This commit is contained in:
Lennart Poettering
2025-10-20 10:35:23 +02:00
parent 226e050a0d
commit 5751b236a5
64 changed files with 212 additions and 240 deletions
@@ -6,25 +6,6 @@
#include "sd-forward.h"
#include "socket-netlink.h"
/* https://www.iana.org/assignments/dns-svcb/dns-svcb.xhtml#dns-svcparamkeys */
enum {
DNS_SVC_PARAM_KEY_MANDATORY = 0, /* RFC 9460 § 8 */
DNS_SVC_PARAM_KEY_ALPN = 1, /* RFC 9460 § 7.1 */
DNS_SVC_PARAM_KEY_NO_DEFAULT_ALPN = 2, /* RFC 9460 § 7.1 */
DNS_SVC_PARAM_KEY_PORT = 3, /* RFC 9460 § 7.2 */
DNS_SVC_PARAM_KEY_IPV4HINT = 4, /* RFC 9460 § 7.3 */
DNS_SVC_PARAM_KEY_ECH = 5, /* RFC 9460 */
DNS_SVC_PARAM_KEY_IPV6HINT = 6, /* RFC 9460 § 7.3 */
DNS_SVC_PARAM_KEY_DOHPATH = 7, /* RFC 9461 */
DNS_SVC_PARAM_KEY_OHTTP = 8,
_DNS_SVC_PARAM_KEY_MAX_DEFINED,
DNS_SVC_PARAM_KEY_INVALID = 65535 /* RFC 9460 */
};
const char* dns_svc_param_key_to_string(int i) _const_;
const char* format_dns_svc_param_key(uint16_t i, char buf[static DECIMAL_STR_MAX(uint16_t)+3]);
#define FORMAT_DNS_SVC_PARAM_KEY(i) format_dns_svc_param_key(i, (char [DECIMAL_STR_MAX(uint16_t)+3]) {})
/* Represents a "designated resolver" */
/* typedef struct sd_dns_resolver sd_dns_resolver; */
typedef struct sd_dns_resolver {
+1
View File
@@ -8,6 +8,7 @@
#include "alloc-util.h"
#include "dns-def.h"
#include "dns-domain.h"
#include "dns-packet.h"
#include "dns-resolver-internal.h"
#include "ether-addr-util.h"
#include "hash-funcs.h"
+1 -23
View File
@@ -1,6 +1,7 @@
/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include "alloc-util.h"
#include "dns-packet.h"
#include "dns-resolver-internal.h"
#include "errno-util.h"
#include "siphash24.h"
@@ -154,29 +155,6 @@ void siphash24_compress_resolver(const sd_dns_resolver *res, struct siphash *sta
siphash24_compress_typesafe(*addr, state);
}
static const char* const dns_svc_param_key_table[_DNS_SVC_PARAM_KEY_MAX_DEFINED] = {
[DNS_SVC_PARAM_KEY_MANDATORY] = "mandatory",
[DNS_SVC_PARAM_KEY_ALPN] = "alpn",
[DNS_SVC_PARAM_KEY_NO_DEFAULT_ALPN] = "no-default-alpn",
[DNS_SVC_PARAM_KEY_PORT] = "port",
[DNS_SVC_PARAM_KEY_IPV4HINT] = "ipv4hint",
[DNS_SVC_PARAM_KEY_ECH] = "ech",
[DNS_SVC_PARAM_KEY_IPV6HINT] = "ipv6hint",
[DNS_SVC_PARAM_KEY_DOHPATH] = "dohpath",
[DNS_SVC_PARAM_KEY_OHTTP] = "ohttp",
};
DEFINE_STRING_TABLE_LOOKUP_TO_STRING(dns_svc_param_key, int);
const char* format_dns_svc_param_key(uint16_t i, char buf[static DECIMAL_STR_MAX(uint16_t)+3]) {
assert(buf);
const char *p = dns_svc_param_key_to_string(i);
if (p)
return p;
return snprintf_ok(buf, DECIMAL_STR_MAX(uint16_t)+3, "key%i", i);
}
int dns_resolver_transports_to_strv(sd_dns_alpn_flags transports, char ***ret) {
_cleanup_strv_free_ char **ans = NULL;
+1 -1
View File
@@ -1,7 +1,7 @@
/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include "dns-packet.h"
#include "fuzz.h"
#include "resolved-dns-packet.h"
int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
_cleanup_(dns_packet_unrefp) DnsPacket *p = NULL;
+2 -2
View File
@@ -2,10 +2,10 @@
#include "sd-json.h"
#include "dns-packet.h"
#include "dns-rr.h"
#include "fuzz.h"
#include "memstream-util.h"
#include "resolved-dns-packet.h"
#include "resolved-dns-rr.h"
#include "string-util.h"
int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
+2 -39
View File
@@ -8,19 +8,14 @@ systemd_resolved_sources = files(
'resolved.c',
)
systemd_resolved_extract_sources = files(
'dns-type.c',
'resolved-bus.c',
'resolved-conf.c',
'resolved-dns-answer.c',
'resolved-dns-browse-services.c',
'resolved-dns-cache.c',
'resolved-dns-delegate.c',
'resolved-dns-delegate-bus.c',
'resolved-dns-dnssec.c',
'resolved-dns-packet.c',
'resolved-dns-query.c',
'resolved-dns-question.c',
'resolved-dns-rr.c',
'resolved-dns-scope.c',
'resolved-dns-search-domain.c',
'resolved-dns-server.c',
@@ -46,38 +41,6 @@ systemd_resolved_extract_sources = files(
############################################################
dns_type_list_txt = custom_target(
input : ['generate-dns_type-list.sed', 'dns-type.h'],
output : 'dns_type-list.txt',
command : [sed, '-n', '-r', '-f', '@INPUT0@', '@INPUT1@'],
capture : true)
gperf_file = custom_target(
input : dns_type_list_txt,
output : 'dns_type-from-name.gperf',
command : [files('generate-dns_type-gperf.py'),
'dns_type',
'DNS_TYPE_',
'@INPUT@'],
capture : true)
dns_type_from_name_inc = custom_target(
input : gperf_file,
output : 'dns_type-from-name.inc',
command : [gperf,
'-L', 'ANSI-C', '-t', '--ignore-case',
'-N', 'lookup_dns_type',
'-H', 'hash_dns_type_name',
'-p', '-C',
'@INPUT@'],
capture : true)
dns_type_to_name_inc = custom_target(
input : ['dns_type-to-name.awk', dns_type_list_txt],
output : 'dns_type-to-name.inc',
command : [awk, '-f', '@INPUT0@', '@INPUT1@'],
capture : true)
resolved_gperf_c = custom_target(
input : 'resolved-gperf.gperf',
output : 'resolved-gperf.c',
@@ -93,8 +56,8 @@ resolved_dns_delegate_gperf_c = custom_target(
output : 'resolved-dns-delegate-gperf.c',
command : [gperf, '@INPUT@', '--output-file', '@OUTPUT@'])
generated_sources += [dns_type_from_name_inc, dns_type_to_name_inc, resolved_gperf_c, resolved_dnssd_gperf_c, resolved_dns_delegate_gperf_c]
systemd_resolved_extract_sources += [dns_type_from_name_inc, dns_type_to_name_inc, resolved_gperf_c, resolved_dnssd_gperf_c, resolved_dns_delegate_gperf_c]
generated_sources += [resolved_gperf_c, resolved_dnssd_gperf_c, resolved_dns_delegate_gperf_c]
systemd_resolved_extract_sources += [resolved_gperf_c, resolved_dnssd_gperf_c, resolved_dns_delegate_gperf_c]
if conf.get('ENABLE_DNS_OVER_TLS') == 1
systemd_resolved_extract_sources += files(
+2 -2
View File
@@ -22,6 +22,8 @@
#include "bus-message-util.h"
#include "bus-util.h"
#include "dns-domain.h"
#include "dns-packet.h"
#include "dns-rr.h"
#include "errno-list.h"
#include "errno-util.h"
#include "escape.h"
@@ -42,8 +44,6 @@
#include "resolve-util.h"
#include "resolvectl.h"
#include "resolved-def.h"
#include "resolved-dns-packet.h"
#include "resolved-dns-rr.h"
#include "resolved-util.h"
#include "socket-netlink.h"
#include "sort-util.h"
+7 -7
View File
@@ -11,20 +11,20 @@
#include "bus-object.h"
#include "bus-polkit.h"
#include "bus-util.h"
#include "dns-answer.h"
#include "dns-domain.h"
#include "dns-packet.h"
#include "dns-question.h"
#include "dns-rr.h"
#include "format-util.h"
#include "path-util.h"
#include "resolve-util.h"
#include "resolved-bus.h"
#include "resolved-def.h"
#include "resolved-dns-answer.h"
#include "resolved-dns-delegate.h"
#include "resolved-dns-delegate-bus.h"
#include "resolved-dns-delegate.h"
#include "resolved-dns-dnssec.h"
#include "resolved-dns-packet.h"
#include "resolved-dns-query.h"
#include "resolved-dns-question.h"
#include "resolved-dns-rr.h"
#include "resolved-dns-scope.h"
#include "resolved-dns-search-domain.h"
#include "resolved-dns-server.h"
@@ -32,10 +32,10 @@
#include "resolved-dns-stub.h"
#include "resolved-dns-synthesize.h"
#include "resolved-dns-transaction.h"
#include "resolved-dnssd.h"
#include "resolved-dnssd-bus.h"
#include "resolved-link.h"
#include "resolved-dnssd.h"
#include "resolved-link-bus.h"
#include "resolved-link.h"
#include "resolved-manager.h"
#include "resolved-resolv-conf.h"
#include "set.h"
+3 -3
View File
@@ -2,15 +2,15 @@
#include "af-list.h"
#include "alloc-util.h"
#include "event-util.h"
#include "dns-domain.h"
#include "dns-question.h"
#include "dns-rr.h"
#include "event-util.h"
#include "log.h"
#include "random-util.h"
#include "resolved-dns-browse-services.h"
#include "resolved-dns-cache.h"
#include "resolved-dns-question.h"
#include "resolved-dns-query.h"
#include "resolved-dns-rr.h"
#include "resolved-dns-scope.h"
#include "resolved-manager.h"
#include "string-table.h"
+4 -3
View File
@@ -2,9 +2,10 @@
#pragma once
#include "sd-varlink.h"
#include "resolved-dns-answer.h"
#include "resolved-dns-question.h"
#include "resolved-dns-rr.h"
#include "dns-answer.h"
#include "dns-question.h"
#include "dns-rr.h"
typedef struct DnsServiceBrowser DnsServiceBrowser;
typedef struct DnssdDiscoveredService DnssdDiscoveredService;
+3 -3
View File
@@ -5,16 +5,16 @@
#include "af-list.h"
#include "alloc-util.h"
#include "bitmap.h"
#include "dns-answer.h"
#include "dns-domain.h"
#include "dns-packet.h"
#include "dns-rr.h"
#include "format-ifname.h"
#include "log.h"
#include "prioq.h"
#include "resolve-util.h"
#include "resolved-dns-answer.h"
#include "resolved-dns-cache.h"
#include "resolved-dns-dnssec.h"
#include "resolved-dns-packet.h"
#include "resolved-dns-rr.h"
#include "string-util.h"
#include "time-util.h"
+2 -28
View File
@@ -2,16 +2,16 @@
#include "alloc-util.h"
#include "bitmap.h"
#include "dns-answer.h"
#include "dns-domain.h"
#include "dns-rr.h"
#include "dns-type.h"
#include "hexdecoct.h"
#include "log.h"
#include "memory-util.h"
#include "memstream-util.h"
#include "openssl-util.h"
#include "resolved-dns-answer.h"
#include "resolved-dns-dnssec.h"
#include "resolved-dns-rr.h"
#include "sort-util.h"
#include "string-table.h"
#include "string-util.h"
@@ -45,32 +45,6 @@ REENABLE_WARNING;
* Normal RR → RRSIG/DNSKEY+ → DS → RRSIG/DNSKEY+ → DS → ... → DS → RRSIG/DNSKEY+ → DS
*/
uint16_t dnssec_keytag(DnsResourceRecord *dnskey, bool mask_revoke) {
const uint8_t *p;
uint32_t sum, f;
/* The algorithm from RFC 4034, Appendix B. */
assert(dnskey);
assert(dnskey->key->type == DNS_TYPE_DNSKEY);
f = (uint32_t) dnskey->dnskey.flags;
if (mask_revoke)
f &= ~DNSKEY_FLAG_REVOKE;
sum = f + ((((uint32_t) dnskey->dnskey.protocol) << 8) + (uint32_t) dnskey->dnskey.algorithm);
p = dnskey->dnskey.key;
for (size_t i = 0; i < dnskey->dnskey.key_size; i++)
sum += (i & 1) == 0 ? (uint32_t) p[i] << 8 : (uint32_t) p[i];
sum += (sum >> 16) & UINT32_C(0xFFFF);
return sum & UINT32_C(0xFFFF);
}
#if HAVE_OPENSSL
static int rr_compare(DnsResourceRecord * const *a, DnsResourceRecord * const *b) {
-2
View File
@@ -59,8 +59,6 @@ int dnssec_verify_dnskey_by_ds_search(DnsResourceRecord *dnskey, DnsAnswer *vali
int dnssec_has_rrsig(DnsAnswer *a, const DnsResourceKey *key);
uint16_t dnssec_keytag(DnsResourceRecord *dnskey, bool mask_revoke);
int dnssec_nsec3_hash(DnsResourceRecord *nsec3, const char *name, void *ret);
typedef enum DnssecNsecResult {
+4 -4
View File
@@ -4,16 +4,16 @@
#include "sd-varlink.h"
#include "alloc-util.h"
#include "dns-answer.h"
#include "dns-domain.h"
#include "dns-packet.h"
#include "dns-question.h"
#include "dns-rr.h"
#include "dns-type.h"
#include "event-util.h"
#include "glyph-util.h"
#include "log.h"
#include "resolved-dns-answer.h"
#include "resolved-dns-packet.h"
#include "resolved-dns-query.h"
#include "resolved-dns-question.h"
#include "resolved-dns-rr.h"
#include "resolved-dns-scope.h"
#include "resolved-dns-search-domain.h"
#include "resolved-dns-synthesize.h"
+1 -1
View File
@@ -1,10 +1,10 @@
/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include "dns-packet.h"
#include "in-addr-util.h"
#include "list.h"
#include "resolved-dns-browse-services.h"
#include "resolved-dns-packet.h"
#include "resolved-dns-transaction.h"
#include "resolved-forward.h"
+4 -4
View File
@@ -7,20 +7,20 @@
#include "af-list.h"
#include "alloc-util.h"
#include "dns-answer.h"
#include "dns-domain.h"
#include "dns-packet.h"
#include "dns-question.h"
#include "dns-rr.h"
#include "dns-type.h"
#include "errno-util.h"
#include "fd-util.h"
#include "hostname-util.h"
#include "log.h"
#include "random-util.h"
#include "resolved-dns-answer.h"
#include "resolved-dns-browse-services.h"
#include "resolved-dns-delegate.h"
#include "resolved-dns-packet.h"
#include "resolved-dns-query.h"
#include "resolved-dns-question.h"
#include "resolved-dns-rr.h"
#include "resolved-dns-scope.h"
#include "resolved-dns-search-domain.h"
#include "resolved-dns-server.h"
+1 -1
View File
@@ -2,11 +2,11 @@
#pragma once
#include "dns-def.h"
#include "dns-packet.h"
#include "list.h"
#include "ratelimit.h"
#include "resolve-util.h"
#include "resolved-dns-cache.h"
#include "resolved-dns-packet.h"
#include "resolved-dns-zone.h"
#include "resolved-forward.h"
+1 -1
View File
@@ -5,6 +5,7 @@
#include "alloc-util.h"
#include "dns-domain.h"
#include "dns-packet.h"
#include "errno-util.h"
#include "extract-word.h"
#include "fd-util.h"
@@ -13,7 +14,6 @@
#include "resolved-bus.h"
#include "resolved-dns-cache.h"
#include "resolved-dns-delegate.h"
#include "resolved-dns-packet.h"
#include "resolved-dns-scope.h"
#include "resolved-dns-search-domain.h"
#include "resolved-dns-server.h"
+1 -1
View File
@@ -5,13 +5,13 @@
#include "sd-event.h"
#include "alloc-util.h"
#include "dns-packet.h"
#include "errno-util.h"
#include "fd-util.h"
#include "iovec-util.h"
#include "log.h"
#include "missing-network.h"
#include "ordered-set.h"
#include "resolved-dns-packet.h"
#include "resolved-dns-server.h"
#include "resolved-dns-stream.h"
#include "resolved-manager.h"
+1 -1
View File
@@ -1,8 +1,8 @@
/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include "dns-packet.h"
#include "list.h"
#include "resolved-dns-packet.h"
#include "resolved-dnstls.h"
#include "resolved-forward.h"
#include "socket-util.h"
+4 -4
View File
@@ -7,17 +7,17 @@
#include "alloc-util.h"
#include "capability-util.h"
#include "dns-answer.h"
#include "dns-packet.h"
#include "dns-question.h"
#include "dns-rr.h"
#include "dns-type.h"
#include "errno-util.h"
#include "fd-util.h"
#include "log.h"
#include "missing-network.h"
#include "resolve-util.h"
#include "resolved-dns-answer.h"
#include "resolved-dns-packet.h"
#include "resolved-dns-query.h"
#include "resolved-dns-question.h"
#include "resolved-dns-rr.h"
#include "resolved-dns-stream.h"
#include "resolved-dns-stub.h"
#include "resolved-dns-transaction.h"
+4 -4
View File
@@ -1,7 +1,11 @@
/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include "alloc-util.h"
#include "dns-answer.h"
#include "dns-domain.h"
#include "dns-packet.h"
#include "dns-question.h"
#include "dns-rr.h"
#include "dns-type.h"
#include "env-util.h"
#include "hostname-util.h"
@@ -9,10 +13,6 @@
#include "log.h"
#include "missing-network.h"
#include "resolved-def.h"
#include "resolved-dns-answer.h"
#include "resolved-dns-packet.h"
#include "resolved-dns-question.h"
#include "resolved-dns-rr.h"
#include "resolved-dns-synthesize.h"
#include "resolved-manager.h"
#include "socket-util.h"
+4 -4
View File
@@ -5,19 +5,19 @@
#include "af-list.h"
#include "alloc-util.h"
#include "dns-answer.h"
#include "dns-domain.h"
#include "dns-packet.h"
#include "dns-question.h"
#include "dns-rr.h"
#include "errno-list.h"
#include "errno-util.h"
#include "fd-util.h"
#include "glyph-util.h"
#include "log.h"
#include "random-util.h"
#include "resolved-dns-answer.h"
#include "resolved-dns-cache.h"
#include "resolved-dns-packet.h"
#include "resolved-dns-query.h"
#include "resolved-dns-question.h"
#include "resolved-dns-rr.h"
#include "resolved-dns-scope.h"
#include "resolved-dns-server.h"
#include "resolved-dns-stream.h"
+2 -2
View File
@@ -5,7 +5,9 @@
#include "alloc-util.h"
#include "conf-files.h"
#include "constants.h"
#include "dns-answer.h"
#include "dns-domain.h"
#include "dns-rr.h"
#include "extract-word.h"
#include "fd-util.h"
#include "fileio.h"
@@ -13,9 +15,7 @@
#include "log.h"
#include "nulstr-util.h"
#include "parse-util.h"
#include "resolved-dns-answer.h"
#include "resolved-dns-dnssec.h"
#include "resolved-dns-rr.h"
#include "resolved-dns-trust-anchor.h"
#include "set.h"
#include "string-util.h"
+3 -3
View File
@@ -3,12 +3,12 @@
#include <stdio.h>
#include "alloc-util.h"
#include "dns-answer.h"
#include "dns-domain.h"
#include "dns-packet.h"
#include "dns-rr.h"
#include "list.h"
#include "log.h"
#include "resolved-dns-answer.h"
#include "resolved-dns-packet.h"
#include "resolved-dns-rr.h"
#include "resolved-dns-scope.h"
#include "resolved-dns-transaction.h"
#include "resolved-dns-zone.h"
+1 -1
View File
@@ -7,12 +7,12 @@
#include "conf-parser.h"
#include "constants.h"
#include "dns-domain.h"
#include "dns-rr.h"
#include "extract-word.h"
#include "hashmap.h"
#include "hexdecoct.h"
#include "path-util.h"
#include "resolved-conf.h"
#include "resolved-dns-rr.h"
#include "resolved-dns-zone.h"
#include "resolved-dnssd.h"
#include "resolved-manager.h"
+3 -3
View File
@@ -4,15 +4,15 @@
#include "sd-event.h"
#include "alloc-util.h"
#include "dns-answer.h"
#include "dns-domain.h"
#include "dns-question.h"
#include "dns-rr.h"
#include "extract-word.h"
#include "fd-util.h"
#include "fileio.h"
#include "hostname-util.h"
#include "log.h"
#include "resolved-dns-answer.h"
#include "resolved-dns-question.h"
#include "resolved-dns-rr.h"
#include "resolved-etc-hosts.h"
#include "resolved-manager.h"
#include "set.h"
+2 -2
View File
@@ -8,6 +8,8 @@
#include "alloc-util.h"
#include "dns-domain.h"
#include "dns-packet.h"
#include "dns-rr.h"
#include "env-file.h"
#include "extract-word.h"
#include "fd-util.h"
@@ -18,8 +20,6 @@
#include "netif-util.h"
#include "parse-util.h"
#include "resolved-dns-browse-services.h"
#include "resolved-dns-packet.h"
#include "resolved-dns-rr.h"
#include "resolved-dns-scope.h"
#include "resolved-dns-search-domain.h"
#include "resolved-dns-server.h"
+1 -1
View File
@@ -5,11 +5,11 @@
#include "sd-event.h"
#include "dns-packet.h"
#include "errno-util.h"
#include "fd-util.h"
#include "hashmap.h"
#include "log.h"
#include "resolved-dns-packet.h"
#include "resolved-dns-scope.h"
#include "resolved-dns-transaction.h"
#include "resolved-link.h"
+4 -4
View File
@@ -14,7 +14,11 @@
#include "alloc-util.h"
#include "daemon-util.h"
#include "dirent-util.h"
#include "dns-answer.h"
#include "dns-domain.h"
#include "dns-packet.h"
#include "dns-question.h"
#include "dns-rr.h"
#include "errno-util.h"
#include "event-util.h"
#include "fd-util.h"
@@ -30,12 +34,8 @@
#include "random-util.h"
#include "resolved-bus.h"
#include "resolved-conf.h"
#include "resolved-dns-answer.h"
#include "resolved-dns-delegate.h"
#include "resolved-dns-packet.h"
#include "resolved-dns-query.h"
#include "resolved-dns-question.h"
#include "resolved-dns-rr.h"
#include "resolved-dns-scope.h"
#include "resolved-dns-search-domain.h"
#include "resolved-dns-server.h"
+4 -4
View File
@@ -5,13 +5,13 @@
#include "sd-event.h"
#include "alloc-util.h"
#include "dns-answer.h"
#include "dns-domain.h"
#include "dns-packet.h"
#include "dns-question.h"
#include "dns-rr.h"
#include "fd-util.h"
#include "log.h"
#include "resolved-dns-answer.h"
#include "resolved-dns-packet.h"
#include "resolved-dns-question.h"
#include "resolved-dns-rr.h"
#include "resolved-dns-scope.h"
#include "resolved-dns-transaction.h"
#include "resolved-link.h"
+4 -4
View File
@@ -4,19 +4,19 @@
#include "alloc-util.h"
#include "bus-polkit.h"
#include "dns-answer.h"
#include "dns-domain.h"
#include "dns-packet.h"
#include "dns-question.h"
#include "dns-rr.h"
#include "dns-type.h"
#include "errno-util.h"
#include "in-addr-util.h"
#include "iovec-util.h"
#include "json-util.h"
#include "resolved-dns-answer.h"
#include "resolved-dns-browse-services.h"
#include "resolved-dns-dnssec.h"
#include "resolved-dns-packet.h"
#include "resolved-dns-query.h"
#include "resolved-dns-question.h"
#include "resolved-dns-rr.h"
#include "resolved-dns-scope.h"
#include "resolved-dns-search-domain.h"
#include "resolved-dns-server.h"
+2 -2
View File
@@ -1,9 +1,9 @@
/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include "dns-answer.h"
#include "dns-rr.h"
#include "dns-type.h"
#include "memstream-util.h"
#include "resolved-dns-answer.h"
#include "resolved-dns-rr.h"
#include "strv.h"
#include "tests.h"
+3 -3
View File
@@ -6,16 +6,16 @@
#include "sd-json.h"
#include "dns-answer.h"
#include "dns-packet.h"
#include "dns-rr.h"
#include "dns-type.h"
#include "fd-util.h"
#include "fileio.h"
#include "resolve-util.h"
#include "resolved-def.h"
#include "resolved-dns-answer.h"
#include "resolved-dns-cache.h"
#include "resolved-dns-dnssec.h"
#include "resolved-dns-packet.h"
#include "resolved-dns-rr.h"
#include "tests.h"
#include "time-util.h"
#include "tmpfile-util.h"
+4 -4
View File
@@ -1,12 +1,12 @@
/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include "dns-answer.h"
#include "dns-packet.h"
#include "dns-question.h"
#include "dns-rr.h"
#include "dns-type.h"
#include "list.h"
#include "log.h"
#include "resolved-dns-answer.h"
#include "resolved-dns-packet.h"
#include "resolved-dns-question.h"
#include "resolved-dns-rr.h"
#include "tests.h"
#define BIT_QR (1 << 7)
+4 -4
View File
@@ -1,10 +1,10 @@
/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include "dns-answer.h"
#include "dns-packet.h"
#include "dns-question.h"
#include "dns-rr.h"
#include "dns-type.h"
#include "resolved-dns-answer.h"
#include "resolved-dns-packet.h"
#include "resolved-dns-question.h"
#include "resolved-dns-rr.h"
#include "tests.h"
#define BIT_QR (1 << 7)
+2 -2
View File
@@ -3,11 +3,11 @@
#include "sd-id128.h"
#include "alloc-util.h"
#include "dns-packet.h"
#include "dns-rr.h"
#include "fileio.h"
#include "glob-util.h"
#include "log.h"
#include "resolved-dns-packet.h"
#include "resolved-dns-rr.h"
#include "siphash24.h"
#include "strv.h"
#include "tests.h"
+4 -4
View File
@@ -2,11 +2,11 @@
#include "sd-event.h"
#include "resolved-dns-answer.h"
#include "resolved-dns-packet.h"
#include "dns-answer.h"
#include "dns-packet.h"
#include "dns-question.h"
#include "dns-rr.h"
#include "resolved-dns-query.h"
#include "resolved-dns-question.h"
#include "resolved-dns-rr.h"
#include "resolved-dns-scope.h"
#include "resolved-dns-search-domain.h"
#include "resolved-dns-server.h"
+2 -2
View File
@@ -1,10 +1,10 @@
/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include "dns-question.h"
#include "dns-rr.h"
#include "dns-type.h"
#include "in-addr-util.h"
#include "memstream-util.h"
#include "resolved-dns-question.h"
#include "resolved-dns-rr.h"
#include "tests.h"
/* ================================================================
+2 -2
View File
@@ -2,9 +2,9 @@
#include "sd-json.h"
#include "dns-packet.h"
#include "dns-rr.h"
#include "dns-type.h"
#include "resolved-dns-packet.h"
#include "resolved-dns-rr.h"
#include "tests.h"
/* ================================================================
+4 -4
View File
@@ -1,9 +1,9 @@
/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include "resolved-dns-answer.h"
#include "resolved-dns-packet.h"
#include "resolved-dns-question.h"
#include "resolved-dns-rr.h"
#include "dns-answer.h"
#include "dns-packet.h"
#include "dns-question.h"
#include "dns-rr.h"
#include "resolved-dns-synthesize.h"
#include "resolved-manager.h"
#include "tests.h"
+3 -3
View File
@@ -1,9 +1,9 @@
/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include "dns-answer.h"
#include "dns-packet.h"
#include "dns-rr.h"
#include "dns-type.h"
#include "resolved-dns-answer.h"
#include "resolved-dns-packet.h"
#include "resolved-dns-rr.h"
#include "resolved-dns-scope.h"
#include "resolved-dns-zone.h"
#include "resolved-manager.h"
+2 -2
View File
@@ -5,10 +5,10 @@
#include "alloc-util.h"
#include "bitmap.h"
#include "dns-answer.h"
#include "dns-rr.h"
#include "hexdecoct.h"
#include "resolved-dns-answer.h"
#include "resolved-dns-dnssec.h"
#include "resolved-dns-rr.h"
#include "string-util.h"
#include "tests.h"
#include "time-util.h"
+1 -1
View File
@@ -1,8 +1,8 @@
/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include "dns-packet.h"
#include "dns-type.h"
#include "resolved-dns-dnssec.h"
#include "resolved-dns-packet.h"
#include "test-tables.h"
#include "tests.h"
+2 -2
View File
@@ -3,14 +3,14 @@
#include "sd-daemon.h"
#include "sd-event.h"
#include "dns-packet.h"
#include "dns-question.h"
#include "dns-type.h"
#include "errno-util.h"
#include "fd-util.h"
#include "iovec-util.h"
#include "log.h"
#include "main-func.h"
#include "resolved-dns-packet.h"
#include "resolved-dns-question.h"
#include "resolved-manager.h"
#include "socket-netlink.h"
#include "socket-util.h"
+1 -1
View File
@@ -5,8 +5,8 @@
#include "sd-event.h"
#include "sd-netlink.h"
#include "dns-packet.h"
#include "netlink-internal.h"
#include "resolved-dns-packet.h"
#include "resolved-dns-scope.h"
#include "resolved-dns-server.h"
#include "resolved-link.h"
+3 -3
View File
@@ -2,11 +2,11 @@
#include "sd-json.h"
#include "dns-answer.h"
#include "dns-packet.h"
#include "dns-rr.h"
#include "hexdecoct.h"
#include "log.h"
#include "resolved-dns-answer.h"
#include "resolved-dns-packet.h"
#include "resolved-dns-rr.h"
#include "tests.h"
TEST(dns_packet_new) {
+3 -3
View File
@@ -13,14 +13,14 @@
#include "sd-event.h"
#include "dns-packet.h"
#include "dns-question.h"
#include "dns-rr.h"
#include "fd-util.h"
#include "log.h"
#include "path-util.h"
#include "process-util.h"
#include "random-util.h"
#include "resolved-dns-packet.h"
#include "resolved-dns-question.h"
#include "resolved-dns-rr.h"
#include "resolved-dns-server.h"
#include "resolved-dns-stream.h"
#include "resolved-dnstls.h"
@@ -3,11 +3,11 @@
#include <stdio.h>
#include "alloc-util.h"
#include "dns-answer.h"
#include "dns-domain.h"
#include "dns-rr.h"
#include "log.h"
#include "random-util.h"
#include "resolved-dns-answer.h"
#include "resolved-dns-rr.h"
#include "siphash24.h"
#include "string-util.h"
@@ -2,7 +2,7 @@
#pragma once
#include "ordered-set.h"
#include "resolved-forward.h"
#include "shared-forward.h"
/* A simple array of resource records. We keep track of the originating ifindex for each RR where that makes
* sense, so that we can qualify A and AAAA RRs referring to a local link with the right ifindex.
@@ -2,14 +2,14 @@
#include "alloc-util.h"
#include "bitmap.h"
#include "dns-answer.h"
#include "dns-domain.h"
#include "dns-packet.h"
#include "dns-question.h"
#include "dns-rr.h"
#include "escape.h"
#include "log.h"
#include "memory-util.h"
#include "resolved-dns-answer.h"
#include "resolved-dns-packet.h"
#include "resolved-dns-question.h"
#include "resolved-dns-rr.h"
#include "set.h"
#include "siphash24.h"
#include "stdio-util.h"
@@ -8,7 +8,7 @@
#include "in-addr-util.h"
#include "memory-util.h"
#include "resolved-def.h"
#include "resolved-forward.h"
#include "shared-forward.h"
#include "sparse-endian.h"
typedef enum DnsProtocol {
@@ -4,9 +4,9 @@
#include "alloc-util.h"
#include "dns-domain.h"
#include "dns-question.h"
#include "dns-rr.h"
#include "dns-type.h"
#include "resolved-dns-question.h"
#include "resolved-dns-rr.h"
#include "socket-util.h"
#include "string-util.h"
@@ -1,7 +1,7 @@
/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include "resolved-forward.h"
#include "shared-forward.h"
/* A simple array of resource keys */
@@ -4,17 +4,16 @@
#include "alloc-util.h"
#include "bitmap.h"
#include "dns-answer.h"
#include "dns-domain.h"
#include "dns-packet.h"
#include "dns-rr.h"
#include "dns-type.h"
#include "escape.h"
#include "hash-funcs.h"
#include "hexdecoct.h"
#include "json-util.h"
#include "memory-util.h"
#include "resolved-dns-answer.h"
#include "resolved-dns-dnssec.h"
#include "resolved-dns-packet.h"
#include "resolved-dns-rr.h"
#include "siphash24.h"
#include "string-table.h"
#include "string-util.h"
@@ -977,6 +976,32 @@ static char *format_svc_params(DnsSvcParam *first) {
return strv_join(params, " ");
}
uint16_t dnssec_keytag(DnsResourceRecord *dnskey, bool mask_revoke) {
const uint8_t *p;
uint32_t sum, f;
/* The algorithm from RFC 4034, Appendix B. */
assert(dnskey);
assert(dnskey->key->type == DNS_TYPE_DNSKEY);
f = (uint32_t) dnskey->dnskey.flags;
if (mask_revoke)
f &= ~DNSKEY_FLAG_REVOKE;
sum = f + ((((uint32_t) dnskey->dnskey.protocol) << 8) + (uint32_t) dnskey->dnskey.algorithm);
p = dnskey->dnskey.key;
for (size_t i = 0; i < dnskey->dnskey.key_size; i++)
sum += (i & 1) == 0 ? (uint32_t) p[i] << 8 : (uint32_t) p[i];
sum += (sum >> 16) & UINT32_C(0xFFFF);
return sum & UINT32_C(0xFFFF);
}
const char* dns_resource_record_to_string(DnsResourceRecord *rr) {
_cleanup_free_ char *s = NULL, *t = NULL;
char k[DNS_RESOURCE_KEY_STRING_MAX];
@@ -6,7 +6,7 @@
#include "dns-def.h"
#include "dns-type.h"
#include "list.h"
#include "resolved-forward.h"
#include "shared-forward.h"
/* DNSKEY RR flags */
#define DNSKEY_FLAG_SEP (UINT16_C(1) << 0)
@@ -427,6 +427,8 @@ int dns_resource_key_compare_func(const DnsResourceKey *x, const DnsResourceKey
void dns_resource_record_hash_func(const DnsResourceRecord *i, struct siphash *state);
int dns_resource_record_compare_func(const DnsResourceRecord *x, const DnsResourceRecord *y);
uint16_t dnssec_keytag(DnsResourceRecord *dnskey, bool mask_revoke);
extern const struct hash_ops dns_resource_key_hash_ops;
extern const struct hash_ops dns_resource_record_hash_ops;
extern const struct hash_ops dns_resource_record_hash_ops_by_key;
+40
View File
@@ -61,7 +61,12 @@ shared_sources = files(
'discover-image.c',
'dissect-image.c',
'dm-util.c',
'dns-answer.c',
'dns-domain.c',
'dns-packet.c',
'dns-question.c',
'dns-rr.c',
'dns-type.c',
'dropin.c',
'edit-util.c',
'efi-api.c',
@@ -313,6 +318,41 @@ ethtool_link_mode_xml = custom_target(
capture : true)
man_page_depends += ethtool_link_mode_xml
dns_type_list_txt = custom_target(
input : ['generate-dns_type-list.sed', 'dns-type.h'],
output : 'dns_type-list.txt',
command : [sed, '-n', '-r', '-f', '@INPUT0@', '@INPUT1@'],
capture : true)
gperf_file = custom_target(
input : dns_type_list_txt,
output : 'dns_type-from-name.gperf',
command : [files('generate-dns_type-gperf.py'),
'dns_type',
'DNS_TYPE_',
'@INPUT@'],
capture : true)
dns_type_from_name_inc = custom_target(
input : gperf_file,
output : 'dns_type-from-name.inc',
command : [gperf,
'-L', 'ANSI-C', '-t', '--ignore-case',
'-N', 'lookup_dns_type',
'-H', 'hash_dns_type_name',
'-p', '-C',
'@INPUT@'],
capture : true)
dns_type_to_name_inc = custom_target(
input : ['dns_type-to-name.awk', dns_type_list_txt],
output : 'dns_type-to-name.inc',
command : [awk, '-f', '@INPUT0@', '@INPUT1@'],
capture : true)
generated_sources += [dns_type_from_name_inc, dns_type_to_name_inc]
shared_sources += [dns_type_from_name_inc, dns_type_to_name_inc]
libshared_name = 'systemd-shared-@0@'.format(shared_lib_tag)
libshared_deps = [threads,
@@ -1,7 +1,7 @@
/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include "resolved-forward.h"
#include "shared-forward.h"
#include "time-util.h"
/* Input + Output: The various protocols we can use */
+9
View File
@@ -18,8 +18,10 @@ typedef enum BusPrintPropertyFlags BusPrintPropertyFlags;
typedef enum BusTransport BusTransport;
typedef enum CatFlags CatFlags;
typedef enum CertificateSourceType CertificateSourceType;
typedef enum DnsAnswerFlags DnsAnswerFlags;
typedef enum DnsCacheMode DnsCacheMode;
typedef enum DnsOverTlsMode DnsOverTlsMode;
typedef enum DnsProtocol DnsProtocol;
typedef enum DnssecMode DnssecMode;
typedef enum Fido2EnrollFlags Fido2EnrollFlags;
typedef enum KeySourceType KeySourceType;
@@ -50,6 +52,13 @@ typedef struct Condition Condition;
typedef struct ConfigSection ConfigSection;
typedef struct ConfigTableItem ConfigTableItem;
typedef struct CPUSet CPUSet;
typedef struct DnsAnswer DnsAnswer;
typedef struct DnsPacket DnsPacket;
typedef struct DnsQuestion DnsQuestion;
typedef struct DnsResourceKey DnsResourceKey;
typedef struct DnsResourceRecord DnsResourceRecord;
typedef struct DnsSvcParam DnsSvcParam;
typedef struct DnsTxtItem DnsTxtItem;
typedef struct FDSet FDSet;
typedef struct Fido2HmacSalt Fido2HmacSalt;
typedef struct GroupRecord GroupRecord;