From 5751b236a5170db5f1a971ae10f28fa5e64b11ba Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Thu, 9 Oct 2025 22:59:58 +0200 Subject: [PATCH] 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. --- .../dns-resolver-internal.h | 19 --------- src/libsystemd-network/ndisc-option.c | 1 + src/libsystemd-network/sd-dns-resolver.c | 24 +---------- src/resolve/fuzz-dns-packet.c | 2 +- src/resolve/fuzz-resource-record.c | 4 +- src/resolve/meson.build | 41 +------------------ src/resolve/resolvectl.c | 4 +- src/resolve/resolved-bus.c | 14 +++---- src/resolve/resolved-dns-browse-services.c | 6 +-- src/resolve/resolved-dns-browse-services.h | 7 ++-- src/resolve/resolved-dns-cache.c | 6 +-- src/resolve/resolved-dns-dnssec.c | 30 +------------- src/resolve/resolved-dns-dnssec.h | 2 - src/resolve/resolved-dns-query.c | 8 ++-- src/resolve/resolved-dns-query.h | 2 +- src/resolve/resolved-dns-scope.c | 8 ++-- src/resolve/resolved-dns-scope.h | 2 +- src/resolve/resolved-dns-server.c | 2 +- src/resolve/resolved-dns-stream.c | 2 +- src/resolve/resolved-dns-stream.h | 2 +- src/resolve/resolved-dns-stub.c | 8 ++-- src/resolve/resolved-dns-synthesize.c | 8 ++-- src/resolve/resolved-dns-transaction.c | 8 ++-- src/resolve/resolved-dns-trust-anchor.c | 4 +- src/resolve/resolved-dns-zone.c | 6 +-- src/resolve/resolved-dnssd.c | 2 +- src/resolve/resolved-etc-hosts.c | 6 +-- src/resolve/resolved-link.c | 4 +- src/resolve/resolved-llmnr.c | 2 +- src/resolve/resolved-manager.c | 8 ++-- src/resolve/resolved-mdns.c | 8 ++-- src/resolve/resolved-varlink.c | 8 ++-- src/resolve/test-dns-answer.c | 4 +- src/resolve/test-dns-cache.c | 6 +-- src/resolve/test-dns-packet-append.c | 8 ++-- src/resolve/test-dns-packet-extract.c | 8 ++-- src/resolve/test-dns-packet.c | 4 +- src/resolve/test-dns-query.c | 8 ++-- src/resolve/test-dns-question.c | 4 +- src/resolve/test-dns-rr.c | 4 +- src/resolve/test-dns-synthesize.c | 8 ++-- src/resolve/test-dns-zone.c | 6 +-- src/resolve/test-dnssec.c | 4 +- src/resolve/test-resolve-tables.c | 2 +- src/resolve/test-resolved-dummy-server.c | 4 +- src/resolve/test-resolved-link.c | 2 +- src/resolve/test-resolved-packet.c | 6 +-- src/resolve/test-resolved-stream.c | 6 +-- .../dns-answer.c} | 4 +- .../dns-answer.h} | 2 +- .../dns-packet.c} | 8 ++-- .../dns-packet.h} | 2 +- .../dns-question.c} | 4 +- .../dns-question.h} | 2 +- .../resolved-dns-rr.c => shared/dns-rr.c} | 33 +++++++++++++-- .../resolved-dns-rr.h => shared/dns-rr.h} | 4 +- src/{resolve => shared}/dns-type.c | 0 src/{resolve => shared}/dns-type.h | 0 src/{resolve => shared}/dns_type-to-name.awk | 0 .../generate-dns_type-gperf.py | 0 .../generate-dns_type-list.sed | 0 src/shared/meson.build | 40 ++++++++++++++++++ src/{resolve => shared}/resolved-def.h | 2 +- src/shared/shared-forward.h | 9 ++++ 64 files changed, 212 insertions(+), 240 deletions(-) rename src/{resolve/resolved-dns-answer.c => shared/dns-answer.c} (99%) rename src/{resolve/resolved-dns-answer.h => shared/dns-answer.h} (99%) rename src/{resolve/resolved-dns-packet.c => shared/dns-packet.c} (99%) rename src/{resolve/resolved-dns-packet.h => shared/dns-packet.h} (99%) rename src/{resolve/resolved-dns-question.c => shared/dns-question.c} (99%) rename src/{resolve/resolved-dns-question.h => shared/dns-question.h} (99%) rename src/{resolve/resolved-dns-rr.c => shared/dns-rr.c} (99%) rename src/{resolve/resolved-dns-rr.h => shared/dns-rr.h} (99%) rename src/{resolve => shared}/dns-type.c (100%) rename src/{resolve => shared}/dns-type.h (100%) rename src/{resolve => shared}/dns_type-to-name.awk (100%) rename src/{resolve => shared}/generate-dns_type-gperf.py (100%) rename src/{resolve => shared}/generate-dns_type-list.sed (100%) rename src/{resolve => shared}/resolved-def.h (99%) diff --git a/src/libsystemd-network/dns-resolver-internal.h b/src/libsystemd-network/dns-resolver-internal.h index 1e53df51cf..c8221421d1 100644 --- a/src/libsystemd-network/dns-resolver-internal.h +++ b/src/libsystemd-network/dns-resolver-internal.h @@ -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 { diff --git a/src/libsystemd-network/ndisc-option.c b/src/libsystemd-network/ndisc-option.c index d66f3d235e..c61543fef8 100644 --- a/src/libsystemd-network/ndisc-option.c +++ b/src/libsystemd-network/ndisc-option.c @@ -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" diff --git a/src/libsystemd-network/sd-dns-resolver.c b/src/libsystemd-network/sd-dns-resolver.c index e7f69da202..f2283f0047 100644 --- a/src/libsystemd-network/sd-dns-resolver.c +++ b/src/libsystemd-network/sd-dns-resolver.c @@ -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; diff --git a/src/resolve/fuzz-dns-packet.c b/src/resolve/fuzz-dns-packet.c index 27a196cb8f..f696cb4cf9 100644 --- a/src/resolve/fuzz-dns-packet.c +++ b/src/resolve/fuzz-dns-packet.c @@ -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; diff --git a/src/resolve/fuzz-resource-record.c b/src/resolve/fuzz-resource-record.c index 8d0817493d..d3469f6d16 100644 --- a/src/resolve/fuzz-resource-record.c +++ b/src/resolve/fuzz-resource-record.c @@ -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) { diff --git a/src/resolve/meson.build b/src/resolve/meson.build index 8dc3bb4570..6944f6eb7f 100644 --- a/src/resolve/meson.build +++ b/src/resolve/meson.build @@ -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( diff --git a/src/resolve/resolvectl.c b/src/resolve/resolvectl.c index 7f9cc33436..8f8124d5bf 100644 --- a/src/resolve/resolvectl.c +++ b/src/resolve/resolvectl.c @@ -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" diff --git a/src/resolve/resolved-bus.c b/src/resolve/resolved-bus.c index 7a6f1c55b0..53d2de274f 100644 --- a/src/resolve/resolved-bus.c +++ b/src/resolve/resolved-bus.c @@ -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" diff --git a/src/resolve/resolved-dns-browse-services.c b/src/resolve/resolved-dns-browse-services.c index e763c46c1a..3fd2bd2f11 100644 --- a/src/resolve/resolved-dns-browse-services.c +++ b/src/resolve/resolved-dns-browse-services.c @@ -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" diff --git a/src/resolve/resolved-dns-browse-services.h b/src/resolve/resolved-dns-browse-services.h index 0262cee714..87e68b7a21 100644 --- a/src/resolve/resolved-dns-browse-services.h +++ b/src/resolve/resolved-dns-browse-services.h @@ -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; diff --git a/src/resolve/resolved-dns-cache.c b/src/resolve/resolved-dns-cache.c index 5429cefdcd..5540ce5c05 100644 --- a/src/resolve/resolved-dns-cache.c +++ b/src/resolve/resolved-dns-cache.c @@ -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" diff --git a/src/resolve/resolved-dns-dnssec.c b/src/resolve/resolved-dns-dnssec.c index 321aa0816e..537370f0a9 100644 --- a/src/resolve/resolved-dns-dnssec.c +++ b/src/resolve/resolved-dns-dnssec.c @@ -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) { diff --git a/src/resolve/resolved-dns-dnssec.h b/src/resolve/resolved-dns-dnssec.h index cd2e92f20e..0139e7f700 100644 --- a/src/resolve/resolved-dns-dnssec.h +++ b/src/resolve/resolved-dns-dnssec.h @@ -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 { diff --git a/src/resolve/resolved-dns-query.c b/src/resolve/resolved-dns-query.c index 4e11ad87bf..79a008bfb7 100644 --- a/src/resolve/resolved-dns-query.c +++ b/src/resolve/resolved-dns-query.c @@ -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" diff --git a/src/resolve/resolved-dns-query.h b/src/resolve/resolved-dns-query.h index 9473fb8182..d3bed93084 100644 --- a/src/resolve/resolved-dns-query.h +++ b/src/resolve/resolved-dns-query.h @@ -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" diff --git a/src/resolve/resolved-dns-scope.c b/src/resolve/resolved-dns-scope.c index a81f9f1936..6f8d0fdcfe 100644 --- a/src/resolve/resolved-dns-scope.c +++ b/src/resolve/resolved-dns-scope.c @@ -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" diff --git a/src/resolve/resolved-dns-scope.h b/src/resolve/resolved-dns-scope.h index 3ecc2183df..16c28eb9a3 100644 --- a/src/resolve/resolved-dns-scope.h +++ b/src/resolve/resolved-dns-scope.h @@ -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" diff --git a/src/resolve/resolved-dns-server.c b/src/resolve/resolved-dns-server.c index a177c323e2..787ffccc78 100644 --- a/src/resolve/resolved-dns-server.c +++ b/src/resolve/resolved-dns-server.c @@ -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" diff --git a/src/resolve/resolved-dns-stream.c b/src/resolve/resolved-dns-stream.c index 60d2b831c7..b4591365fd 100644 --- a/src/resolve/resolved-dns-stream.c +++ b/src/resolve/resolved-dns-stream.c @@ -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" diff --git a/src/resolve/resolved-dns-stream.h b/src/resolve/resolved-dns-stream.h index 83bbd11eab..60cae3f51f 100644 --- a/src/resolve/resolved-dns-stream.h +++ b/src/resolve/resolved-dns-stream.h @@ -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" diff --git a/src/resolve/resolved-dns-stub.c b/src/resolve/resolved-dns-stub.c index 655a6c5da1..b2cfa4a998 100644 --- a/src/resolve/resolved-dns-stub.c +++ b/src/resolve/resolved-dns-stub.c @@ -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" diff --git a/src/resolve/resolved-dns-synthesize.c b/src/resolve/resolved-dns-synthesize.c index 882bacc97a..8ce9204e0c 100644 --- a/src/resolve/resolved-dns-synthesize.c +++ b/src/resolve/resolved-dns-synthesize.c @@ -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" diff --git a/src/resolve/resolved-dns-transaction.c b/src/resolve/resolved-dns-transaction.c index 05088082fd..973ea08f43 100644 --- a/src/resolve/resolved-dns-transaction.c +++ b/src/resolve/resolved-dns-transaction.c @@ -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" diff --git a/src/resolve/resolved-dns-trust-anchor.c b/src/resolve/resolved-dns-trust-anchor.c index 3c4d7efdc5..e29a9d2325 100644 --- a/src/resolve/resolved-dns-trust-anchor.c +++ b/src/resolve/resolved-dns-trust-anchor.c @@ -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" diff --git a/src/resolve/resolved-dns-zone.c b/src/resolve/resolved-dns-zone.c index bb30c5a6f7..c005342958 100644 --- a/src/resolve/resolved-dns-zone.c +++ b/src/resolve/resolved-dns-zone.c @@ -3,12 +3,12 @@ #include #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" diff --git a/src/resolve/resolved-dnssd.c b/src/resolve/resolved-dnssd.c index 93168c8c3d..1c090f9b61 100644 --- a/src/resolve/resolved-dnssd.c +++ b/src/resolve/resolved-dnssd.c @@ -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" diff --git a/src/resolve/resolved-etc-hosts.c b/src/resolve/resolved-etc-hosts.c index 0ef33651f1..e9100de522 100644 --- a/src/resolve/resolved-etc-hosts.c +++ b/src/resolve/resolved-etc-hosts.c @@ -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" diff --git a/src/resolve/resolved-link.c b/src/resolve/resolved-link.c index e3640aa9c3..59b6dc942b 100644 --- a/src/resolve/resolved-link.c +++ b/src/resolve/resolved-link.c @@ -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" diff --git a/src/resolve/resolved-llmnr.c b/src/resolve/resolved-llmnr.c index 812ef947f6..13e4382b4a 100644 --- a/src/resolve/resolved-llmnr.c +++ b/src/resolve/resolved-llmnr.c @@ -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" diff --git a/src/resolve/resolved-manager.c b/src/resolve/resolved-manager.c index d58026f48d..7e6c074c11 100644 --- a/src/resolve/resolved-manager.c +++ b/src/resolve/resolved-manager.c @@ -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" diff --git a/src/resolve/resolved-mdns.c b/src/resolve/resolved-mdns.c index 98539eac6f..fb20ba9cd0 100644 --- a/src/resolve/resolved-mdns.c +++ b/src/resolve/resolved-mdns.c @@ -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" diff --git a/src/resolve/resolved-varlink.c b/src/resolve/resolved-varlink.c index af469bde90..0a73e41961 100644 --- a/src/resolve/resolved-varlink.c +++ b/src/resolve/resolved-varlink.c @@ -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" diff --git a/src/resolve/test-dns-answer.c b/src/resolve/test-dns-answer.c index 06dec47ee0..242309069d 100644 --- a/src/resolve/test-dns-answer.c +++ b/src/resolve/test-dns-answer.c @@ -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" diff --git a/src/resolve/test-dns-cache.c b/src/resolve/test-dns-cache.c index a60daab5c6..705878422e 100644 --- a/src/resolve/test-dns-cache.c +++ b/src/resolve/test-dns-cache.c @@ -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" diff --git a/src/resolve/test-dns-packet-append.c b/src/resolve/test-dns-packet-append.c index 99bf0b7615..eaffc57184 100644 --- a/src/resolve/test-dns-packet-append.c +++ b/src/resolve/test-dns-packet-append.c @@ -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) diff --git a/src/resolve/test-dns-packet-extract.c b/src/resolve/test-dns-packet-extract.c index 9b67a6a93f..dfbfd832f2 100644 --- a/src/resolve/test-dns-packet-extract.c +++ b/src/resolve/test-dns-packet-extract.c @@ -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) diff --git a/src/resolve/test-dns-packet.c b/src/resolve/test-dns-packet.c index 5e818106e8..d6be66c55b 100644 --- a/src/resolve/test-dns-packet.c +++ b/src/resolve/test-dns-packet.c @@ -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" diff --git a/src/resolve/test-dns-query.c b/src/resolve/test-dns-query.c index 3c0917332f..64114f5abc 100644 --- a/src/resolve/test-dns-query.c +++ b/src/resolve/test-dns-query.c @@ -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" diff --git a/src/resolve/test-dns-question.c b/src/resolve/test-dns-question.c index 303c300e0c..7cf58424de 100644 --- a/src/resolve/test-dns-question.c +++ b/src/resolve/test-dns-question.c @@ -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" /* ================================================================ diff --git a/src/resolve/test-dns-rr.c b/src/resolve/test-dns-rr.c index a69c2120d1..c679e45bee 100644 --- a/src/resolve/test-dns-rr.c +++ b/src/resolve/test-dns-rr.c @@ -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" /* ================================================================ diff --git a/src/resolve/test-dns-synthesize.c b/src/resolve/test-dns-synthesize.c index 14f7a5156a..64b79df45e 100644 --- a/src/resolve/test-dns-synthesize.c +++ b/src/resolve/test-dns-synthesize.c @@ -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" diff --git a/src/resolve/test-dns-zone.c b/src/resolve/test-dns-zone.c index 3f449cbfcf..b9ee18fd22 100644 --- a/src/resolve/test-dns-zone.c +++ b/src/resolve/test-dns-zone.c @@ -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" diff --git a/src/resolve/test-dnssec.c b/src/resolve/test-dnssec.c index 32aaa4c0db..eaa4ef9959 100644 --- a/src/resolve/test-dnssec.c +++ b/src/resolve/test-dnssec.c @@ -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" diff --git a/src/resolve/test-resolve-tables.c b/src/resolve/test-resolve-tables.c index ec660379f4..15b9f4e11c 100644 --- a/src/resolve/test-resolve-tables.c +++ b/src/resolve/test-resolve-tables.c @@ -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" diff --git a/src/resolve/test-resolved-dummy-server.c b/src/resolve/test-resolved-dummy-server.c index 21556d57fa..6ba0391490 100644 --- a/src/resolve/test-resolved-dummy-server.c +++ b/src/resolve/test-resolved-dummy-server.c @@ -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" diff --git a/src/resolve/test-resolved-link.c b/src/resolve/test-resolved-link.c index e0cb6006ad..f3afe467d8 100644 --- a/src/resolve/test-resolved-link.c +++ b/src/resolve/test-resolved-link.c @@ -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" diff --git a/src/resolve/test-resolved-packet.c b/src/resolve/test-resolved-packet.c index b11358a7d7..1ce7aa65ad 100644 --- a/src/resolve/test-resolved-packet.c +++ b/src/resolve/test-resolved-packet.c @@ -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) { diff --git a/src/resolve/test-resolved-stream.c b/src/resolve/test-resolved-stream.c index 82d8f29253..a952239d53 100644 --- a/src/resolve/test-resolved-stream.c +++ b/src/resolve/test-resolved-stream.c @@ -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" diff --git a/src/resolve/resolved-dns-answer.c b/src/shared/dns-answer.c similarity index 99% rename from src/resolve/resolved-dns-answer.c rename to src/shared/dns-answer.c index 37e2ba1100..7ebbf8795d 100644 --- a/src/resolve/resolved-dns-answer.c +++ b/src/shared/dns-answer.c @@ -3,11 +3,11 @@ #include #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" diff --git a/src/resolve/resolved-dns-answer.h b/src/shared/dns-answer.h similarity index 99% rename from src/resolve/resolved-dns-answer.h rename to src/shared/dns-answer.h index 5f4a54c556..059f896b86 100644 --- a/src/resolve/resolved-dns-answer.h +++ b/src/shared/dns-answer.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. diff --git a/src/resolve/resolved-dns-packet.c b/src/shared/dns-packet.c similarity index 99% rename from src/resolve/resolved-dns-packet.c rename to src/shared/dns-packet.c index e091d4273b..4dba0983ab 100644 --- a/src/resolve/resolved-dns-packet.c +++ b/src/shared/dns-packet.c @@ -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" diff --git a/src/resolve/resolved-dns-packet.h b/src/shared/dns-packet.h similarity index 99% rename from src/resolve/resolved-dns-packet.h rename to src/shared/dns-packet.h index 8095807805..33f2ca3c54 100644 --- a/src/resolve/resolved-dns-packet.h +++ b/src/shared/dns-packet.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 { diff --git a/src/resolve/resolved-dns-question.c b/src/shared/dns-question.c similarity index 99% rename from src/resolve/resolved-dns-question.c rename to src/shared/dns-question.c index 0749fbcfd9..d6466e0793 100644 --- a/src/resolve/resolved-dns-question.c +++ b/src/shared/dns-question.c @@ -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" diff --git a/src/resolve/resolved-dns-question.h b/src/shared/dns-question.h similarity index 99% rename from src/resolve/resolved-dns-question.h rename to src/shared/dns-question.h index 40084f482f..4dd3b27713 100644 --- a/src/resolve/resolved-dns-question.h +++ b/src/shared/dns-question.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 */ diff --git a/src/resolve/resolved-dns-rr.c b/src/shared/dns-rr.c similarity index 99% rename from src/resolve/resolved-dns-rr.c rename to src/shared/dns-rr.c index 16dda0e979..c86714a607 100644 --- a/src/resolve/resolved-dns-rr.c +++ b/src/shared/dns-rr.c @@ -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]; diff --git a/src/resolve/resolved-dns-rr.h b/src/shared/dns-rr.h similarity index 99% rename from src/resolve/resolved-dns-rr.h rename to src/shared/dns-rr.h index 8c7c257026..48f77d3326 100644 --- a/src/resolve/resolved-dns-rr.h +++ b/src/shared/dns-rr.h @@ -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; diff --git a/src/resolve/dns-type.c b/src/shared/dns-type.c similarity index 100% rename from src/resolve/dns-type.c rename to src/shared/dns-type.c diff --git a/src/resolve/dns-type.h b/src/shared/dns-type.h similarity index 100% rename from src/resolve/dns-type.h rename to src/shared/dns-type.h diff --git a/src/resolve/dns_type-to-name.awk b/src/shared/dns_type-to-name.awk similarity index 100% rename from src/resolve/dns_type-to-name.awk rename to src/shared/dns_type-to-name.awk diff --git a/src/resolve/generate-dns_type-gperf.py b/src/shared/generate-dns_type-gperf.py similarity index 100% rename from src/resolve/generate-dns_type-gperf.py rename to src/shared/generate-dns_type-gperf.py diff --git a/src/resolve/generate-dns_type-list.sed b/src/shared/generate-dns_type-list.sed similarity index 100% rename from src/resolve/generate-dns_type-list.sed rename to src/shared/generate-dns_type-list.sed diff --git a/src/shared/meson.build b/src/shared/meson.build index 023ca48fff..15763d4c65 100644 --- a/src/shared/meson.build +++ b/src/shared/meson.build @@ -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, diff --git a/src/resolve/resolved-def.h b/src/shared/resolved-def.h similarity index 99% rename from src/resolve/resolved-def.h rename to src/shared/resolved-def.h index d2e3d0fea6..e00bd204d7 100644 --- a/src/resolve/resolved-def.h +++ b/src/shared/resolved-def.h @@ -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 */ diff --git a/src/shared/shared-forward.h b/src/shared/shared-forward.h index a15e2769af..9fa7a7ce73 100644 --- a/src/shared/shared-forward.h +++ b/src/shared/shared-forward.h @@ -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;