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 1e53df51cf0..c8221421d1e 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 d66f3d235ee..c61543fef86 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 e7f69da202b..f2283f00474 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 27a196cb8f9..f696cb4cf9c 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 8d0817493db..d3469f6d166 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 8dc3bb45705..6944f6eb7fc 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 7f9cc33436d..8f8124d5bf8 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 7a6f1c55b05..53d2de274fa 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 e763c46c1a1..3fd2bd2f119 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 0262cee714b..87e68b7a216 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 5429cefdcda..5540ce5c059 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 321aa0816e4..537370f0a9c 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 cd2e92f20e5..0139e7f7008 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 4e11ad87bf5..79a008bfb74 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 9473fb81821..d3bed930840 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 a81f9f1936b..6f8d0fdcfe2 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 3ecc2183df1..16c28eb9a30 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 a177c323e2b..787ffccc784 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 60d2b831c79..b4591365fdc 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 83bbd11eab5..60cae3f51f1 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 655a6c5da12..b2cfa4a998b 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 882bacc97a2..8ce9204e0c6 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 05088082fd3..973ea08f432 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 3c4d7efdc59..e29a9d23258 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 bb30c5a6f70..c0053429589 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 93168c8c3d2..1c090f9b611 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 0ef33651f18..e9100de5229 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 e3640aa9c36..59b6dc942b9 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 812ef947f6b..13e4382b4ab 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 d58026f48d7..7e6c074c11a 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 98539eac6f7..fb20ba9cd02 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 af469bde908..0a73e419619 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 06dec47ee09..242309069df 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 a60daab5c63..705878422e0 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 99bf0b7615b..eaffc57184e 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 9b67a6a93fc..dfbfd832f2b 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 5e818106e88..d6be66c55bb 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 3c0917332f3..64114f5abc7 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 303c300e0c0..7cf58424de3 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 a69c2120d13..c679e45beeb 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 14f7a5156ab..64b79df45eb 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 3f449cbfcf8..b9ee18fd22a 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 32aaa4c0db2..eaa4ef99598 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 ec660379f44..15b9f4e11c5 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 21556d57fa8..6ba03914908 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 e0cb6006adc..f3afe467d83 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 b11358a7d7d..1ce7aa65ad4 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 82d8f292532..a952239d53d 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 37e2ba11006..7ebbf8795dc 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 5f4a54c5567..059f896b86f 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 e091d4273b6..4dba0983ab9 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 8095807805b..33f2ca3c54b 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 0749fbcfd94..d6466e07936 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 40084f482f3..4dd3b27713a 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 16dda0e9799..c86714a6076 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 8c7c257026a..48f77d33268 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 023ca48fffb..15763d4c65e 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 d2e3d0fea60..e00bd204d70 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 a15e2769af5..9fa7a7ce73e 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; -- 2.47.3