]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
resolved: move DNS RR/key/answer/question/packet tools to shared/
authorLennart Poettering <lennart@poettering.net>
Thu, 9 Oct 2025 20:59:58 +0000 (22:59 +0200)
committerLennart Poettering <lennart@poettering.net>
Mon, 20 Oct 2025 08:35:23 +0000 (10:35 +0200)
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.

64 files changed:
src/libsystemd-network/dns-resolver-internal.h
src/libsystemd-network/ndisc-option.c
src/libsystemd-network/sd-dns-resolver.c
src/resolve/fuzz-dns-packet.c
src/resolve/fuzz-resource-record.c
src/resolve/meson.build
src/resolve/resolvectl.c
src/resolve/resolved-bus.c
src/resolve/resolved-dns-browse-services.c
src/resolve/resolved-dns-browse-services.h
src/resolve/resolved-dns-cache.c
src/resolve/resolved-dns-dnssec.c
src/resolve/resolved-dns-dnssec.h
src/resolve/resolved-dns-query.c
src/resolve/resolved-dns-query.h
src/resolve/resolved-dns-scope.c
src/resolve/resolved-dns-scope.h
src/resolve/resolved-dns-server.c
src/resolve/resolved-dns-stream.c
src/resolve/resolved-dns-stream.h
src/resolve/resolved-dns-stub.c
src/resolve/resolved-dns-synthesize.c
src/resolve/resolved-dns-transaction.c
src/resolve/resolved-dns-trust-anchor.c
src/resolve/resolved-dns-zone.c
src/resolve/resolved-dnssd.c
src/resolve/resolved-etc-hosts.c
src/resolve/resolved-link.c
src/resolve/resolved-llmnr.c
src/resolve/resolved-manager.c
src/resolve/resolved-mdns.c
src/resolve/resolved-varlink.c
src/resolve/test-dns-answer.c
src/resolve/test-dns-cache.c
src/resolve/test-dns-packet-append.c
src/resolve/test-dns-packet-extract.c
src/resolve/test-dns-packet.c
src/resolve/test-dns-query.c
src/resolve/test-dns-question.c
src/resolve/test-dns-rr.c
src/resolve/test-dns-synthesize.c
src/resolve/test-dns-zone.c
src/resolve/test-dnssec.c
src/resolve/test-resolve-tables.c
src/resolve/test-resolved-dummy-server.c
src/resolve/test-resolved-link.c
src/resolve/test-resolved-packet.c
src/resolve/test-resolved-stream.c
src/shared/dns-answer.c [moved from src/resolve/resolved-dns-answer.c with 99% similarity]
src/shared/dns-answer.h [moved from src/resolve/resolved-dns-answer.h with 99% similarity]
src/shared/dns-packet.c [moved from src/resolve/resolved-dns-packet.c with 99% similarity]
src/shared/dns-packet.h [moved from src/resolve/resolved-dns-packet.h with 99% similarity]
src/shared/dns-question.c [moved from src/resolve/resolved-dns-question.c with 99% similarity]
src/shared/dns-question.h [moved from src/resolve/resolved-dns-question.h with 99% similarity]
src/shared/dns-rr.c [moved from src/resolve/resolved-dns-rr.c with 99% similarity]
src/shared/dns-rr.h [moved from src/resolve/resolved-dns-rr.h with 99% similarity]
src/shared/dns-type.c [moved from src/resolve/dns-type.c with 100% similarity]
src/shared/dns-type.h [moved from src/resolve/dns-type.h with 100% similarity]
src/shared/dns_type-to-name.awk [moved from src/resolve/dns_type-to-name.awk with 100% similarity]
src/shared/generate-dns_type-gperf.py [moved from src/resolve/generate-dns_type-gperf.py with 100% similarity]
src/shared/generate-dns_type-list.sed [moved from src/resolve/generate-dns_type-list.sed with 100% similarity]
src/shared/meson.build
src/shared/resolved-def.h [moved from src/resolve/resolved-def.h with 99% similarity]
src/shared/shared-forward.h

index 1e53df51cf061d70c4639dbd37c3d27c45438f02..c8221421d1e6d71c9d0f88f0c31a18e4f78c25da 100644 (file)
@@ -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 {
index d66f3d235eed8d3dd953fd22a2122621a532907e..c61543fef8694498c0d80831151bf2f800dfb457 100644 (file)
@@ -8,6 +8,7 @@
 #include "alloc-util.h"
 #include "dns-def.h"
 #include "dns-domain.h"
+#include "dns-packet.h"
 #include "dns-resolver-internal.h"
 #include "ether-addr-util.h"
 #include "hash-funcs.h"
index e7f69da202ba7f5cd0ee6fdc1615d867a9db7f65..f2283f004746b951a0dfa0c843ca8adcface962b 100644 (file)
@@ -1,6 +1,7 @@
 /* SPDX-License-Identifier: LGPL-2.1-or-later */
 
 #include "alloc-util.h"
+#include "dns-packet.h"
 #include "dns-resolver-internal.h"
 #include "errno-util.h"
 #include "siphash24.h"
@@ -154,29 +155,6 @@ void siphash24_compress_resolver(const sd_dns_resolver *res, struct siphash *sta
                 siphash24_compress_typesafe(*addr, state);
 }
 
-static const char* const dns_svc_param_key_table[_DNS_SVC_PARAM_KEY_MAX_DEFINED] = {
-        [DNS_SVC_PARAM_KEY_MANDATORY]       = "mandatory",
-        [DNS_SVC_PARAM_KEY_ALPN]            = "alpn",
-        [DNS_SVC_PARAM_KEY_NO_DEFAULT_ALPN] = "no-default-alpn",
-        [DNS_SVC_PARAM_KEY_PORT]            = "port",
-        [DNS_SVC_PARAM_KEY_IPV4HINT]        = "ipv4hint",
-        [DNS_SVC_PARAM_KEY_ECH]             = "ech",
-        [DNS_SVC_PARAM_KEY_IPV6HINT]        = "ipv6hint",
-        [DNS_SVC_PARAM_KEY_DOHPATH]         = "dohpath",
-        [DNS_SVC_PARAM_KEY_OHTTP]           = "ohttp",
-};
-DEFINE_STRING_TABLE_LOOKUP_TO_STRING(dns_svc_param_key, int);
-
-const char* format_dns_svc_param_key(uint16_t i, char buf[static DECIMAL_STR_MAX(uint16_t)+3]) {
-        assert(buf);
-
-        const char *p = dns_svc_param_key_to_string(i);
-        if (p)
-                return p;
-
-        return snprintf_ok(buf, DECIMAL_STR_MAX(uint16_t)+3, "key%i", i);
-}
-
 int dns_resolver_transports_to_strv(sd_dns_alpn_flags transports, char ***ret) {
         _cleanup_strv_free_ char **ans = NULL;
 
index 27a196cb8f904d6756a6b1ee8d6343da1223e6f2..f696cb4cf9c74b738579e5455030ca30151b7ffc 100644 (file)
@@ -1,7 +1,7 @@
 /* SPDX-License-Identifier: LGPL-2.1-or-later */
 
+#include "dns-packet.h"
 #include "fuzz.h"
-#include "resolved-dns-packet.h"
 
 int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
         _cleanup_(dns_packet_unrefp) DnsPacket *p = NULL;
index 8d0817493db7515d66837856ac9897af29fe859d..d3469f6d1663044e1b23122824676907f5f7ffc0 100644 (file)
@@ -2,10 +2,10 @@
 
 #include "sd-json.h"
 
+#include "dns-packet.h"
+#include "dns-rr.h"
 #include "fuzz.h"
 #include "memstream-util.h"
-#include "resolved-dns-packet.h"
-#include "resolved-dns-rr.h"
 #include "string-util.h"
 
 int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
index 8dc3bb45705543dcfed9673fd299ec1ed2a30251..6944f6eb7fc580e3aaf7551364224973b6f4bff2 100644 (file)
@@ -8,19 +8,14 @@ systemd_resolved_sources = files(
         'resolved.c',
 )
 systemd_resolved_extract_sources = files(
-        'dns-type.c',
         'resolved-bus.c',
         'resolved-conf.c',
-        'resolved-dns-answer.c',
         'resolved-dns-browse-services.c',
         'resolved-dns-cache.c',
         'resolved-dns-delegate.c',
         'resolved-dns-delegate-bus.c',
         'resolved-dns-dnssec.c',
-        'resolved-dns-packet.c',
         'resolved-dns-query.c',
-        'resolved-dns-question.c',
-        'resolved-dns-rr.c',
         'resolved-dns-scope.c',
         'resolved-dns-search-domain.c',
         'resolved-dns-server.c',
@@ -46,38 +41,6 @@ systemd_resolved_extract_sources = files(
 
 ############################################################
 
-dns_type_list_txt = custom_target(
-        input : ['generate-dns_type-list.sed', 'dns-type.h'],
-        output : 'dns_type-list.txt',
-        command : [sed, '-n', '-r', '-f', '@INPUT0@', '@INPUT1@'],
-        capture : true)
-
-gperf_file = custom_target(
-        input : dns_type_list_txt,
-        output : 'dns_type-from-name.gperf',
-        command : [files('generate-dns_type-gperf.py'),
-                   'dns_type',
-                   'DNS_TYPE_',
-                   '@INPUT@'],
-        capture : true)
-
-dns_type_from_name_inc = custom_target(
-        input : gperf_file,
-        output : 'dns_type-from-name.inc',
-        command : [gperf,
-                   '-L', 'ANSI-C', '-t', '--ignore-case',
-                   '-N', 'lookup_dns_type',
-                   '-H', 'hash_dns_type_name',
-                   '-p', '-C',
-                   '@INPUT@'],
-        capture : true)
-
-dns_type_to_name_inc = custom_target(
-        input : ['dns_type-to-name.awk', dns_type_list_txt],
-        output : 'dns_type-to-name.inc',
-        command : [awk, '-f', '@INPUT0@', '@INPUT1@'],
-        capture : true)
-
 resolved_gperf_c = custom_target(
         input : 'resolved-gperf.gperf',
         output : 'resolved-gperf.c',
@@ -93,8 +56,8 @@ resolved_dns_delegate_gperf_c = custom_target(
         output : 'resolved-dns-delegate-gperf.c',
         command : [gperf, '@INPUT@', '--output-file', '@OUTPUT@'])
 
-generated_sources += [dns_type_from_name_inc, dns_type_to_name_inc, resolved_gperf_c, resolved_dnssd_gperf_c, resolved_dns_delegate_gperf_c]
-systemd_resolved_extract_sources += [dns_type_from_name_inc, dns_type_to_name_inc, resolved_gperf_c, resolved_dnssd_gperf_c, resolved_dns_delegate_gperf_c]
+generated_sources += [resolved_gperf_c, resolved_dnssd_gperf_c, resolved_dns_delegate_gperf_c]
+systemd_resolved_extract_sources += [resolved_gperf_c, resolved_dnssd_gperf_c, resolved_dns_delegate_gperf_c]
 
 if conf.get('ENABLE_DNS_OVER_TLS') == 1
         systemd_resolved_extract_sources += files(
index 7f9cc33436d2583e9221c0c99a1eef0ec2c46a2d..8f8124d5bf8c222228f7137c26365419846ac037 100644 (file)
@@ -22,6 +22,8 @@
 #include "bus-message-util.h"
 #include "bus-util.h"
 #include "dns-domain.h"
+#include "dns-packet.h"
+#include "dns-rr.h"
 #include "errno-list.h"
 #include "errno-util.h"
 #include "escape.h"
@@ -42,8 +44,6 @@
 #include "resolve-util.h"
 #include "resolvectl.h"
 #include "resolved-def.h"
-#include "resolved-dns-packet.h"
-#include "resolved-dns-rr.h"
 #include "resolved-util.h"
 #include "socket-netlink.h"
 #include "sort-util.h"
index 7a6f1c55b0588149e1e322a22a30e585a9018011..53d2de274faa09553362c0b54bec089de30c1cec 100644 (file)
 #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"
 #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"
index e763c46c1a13c4cc80e8094dd6611320767bbfdc..3fd2bd2f119c669e710c9abf45a814a8b635872a 100644 (file)
@@ -2,15 +2,15 @@
 
 #include "af-list.h"
 #include "alloc-util.h"
-#include "event-util.h"
 #include "dns-domain.h"
+#include "dns-question.h"
+#include "dns-rr.h"
+#include "event-util.h"
 #include "log.h"
 #include "random-util.h"
 #include "resolved-dns-browse-services.h"
 #include "resolved-dns-cache.h"
-#include "resolved-dns-question.h"
 #include "resolved-dns-query.h"
-#include "resolved-dns-rr.h"
 #include "resolved-dns-scope.h"
 #include "resolved-manager.h"
 #include "string-table.h"
index 0262cee714bfb57948012d11daf6f9e56adc2b06..87e68b7a216491b73f67535b3b1d2f98f5db0861 100644 (file)
@@ -2,9 +2,10 @@
 #pragma once
 
 #include "sd-varlink.h"
-#include "resolved-dns-answer.h"
-#include "resolved-dns-question.h"
-#include "resolved-dns-rr.h"
+
+#include "dns-answer.h"
+#include "dns-question.h"
+#include "dns-rr.h"
 
 typedef struct DnsServiceBrowser DnsServiceBrowser;
 typedef struct DnssdDiscoveredService DnssdDiscoveredService;
index 5429cefdcdad9da1d86e478c45934e8eeac79b33..5540ce5c0593ddb9aca8ec5b26db0c297915ab66 100644 (file)
@@ -5,16 +5,16 @@
 #include "af-list.h"
 #include "alloc-util.h"
 #include "bitmap.h"
+#include "dns-answer.h"
 #include "dns-domain.h"
+#include "dns-packet.h"
+#include "dns-rr.h"
 #include "format-ifname.h"
 #include "log.h"
 #include "prioq.h"
 #include "resolve-util.h"
-#include "resolved-dns-answer.h"
 #include "resolved-dns-cache.h"
 #include "resolved-dns-dnssec.h"
-#include "resolved-dns-packet.h"
-#include "resolved-dns-rr.h"
 #include "string-util.h"
 #include "time-util.h"
 
index 321aa0816e4e0bab4bdbe4bf3825b889ceeb5623..537370f0a9c879078706a3001b5cfaee825dfe4e 100644 (file)
@@ -2,16 +2,16 @@
 
 #include "alloc-util.h"
 #include "bitmap.h"
+#include "dns-answer.h"
 #include "dns-domain.h"
+#include "dns-rr.h"
 #include "dns-type.h"
 #include "hexdecoct.h"
 #include "log.h"
 #include "memory-util.h"
 #include "memstream-util.h"
 #include "openssl-util.h"
-#include "resolved-dns-answer.h"
 #include "resolved-dns-dnssec.h"
-#include "resolved-dns-rr.h"
 #include "sort-util.h"
 #include "string-table.h"
 #include "string-util.h"
@@ -45,32 +45,6 @@ REENABLE_WARNING;
  *            Normal RR â†’ RRSIG/DNSKEY+ â†’ DS â†’ RRSIG/DNSKEY+ â†’ DS â†’ ... â†’ DS â†’ RRSIG/DNSKEY+ â†’ DS
  */
 
-uint16_t dnssec_keytag(DnsResourceRecord *dnskey, bool mask_revoke) {
-        const uint8_t *p;
-        uint32_t sum, f;
-
-        /* The algorithm from RFC 4034, Appendix B. */
-
-        assert(dnskey);
-        assert(dnskey->key->type == DNS_TYPE_DNSKEY);
-
-        f = (uint32_t) dnskey->dnskey.flags;
-
-        if (mask_revoke)
-                f &= ~DNSKEY_FLAG_REVOKE;
-
-        sum = f + ((((uint32_t) dnskey->dnskey.protocol) << 8) + (uint32_t) dnskey->dnskey.algorithm);
-
-        p = dnskey->dnskey.key;
-
-        for (size_t i = 0; i < dnskey->dnskey.key_size; i++)
-                sum += (i & 1) == 0 ? (uint32_t) p[i] << 8 : (uint32_t) p[i];
-
-        sum += (sum >> 16) & UINT32_C(0xFFFF);
-
-        return sum & UINT32_C(0xFFFF);
-}
-
 #if HAVE_OPENSSL
 
 static int rr_compare(DnsResourceRecord * const *a, DnsResourceRecord * const *b) {
index cd2e92f20e5c2787e9d52e3cf715b283fda0219a..0139e7f7008dde464d465f5eee68e8d89b77868f 100644 (file)
@@ -59,8 +59,6 @@ int dnssec_verify_dnskey_by_ds_search(DnsResourceRecord *dnskey, DnsAnswer *vali
 
 int dnssec_has_rrsig(DnsAnswer *a, const DnsResourceKey *key);
 
-uint16_t dnssec_keytag(DnsResourceRecord *dnskey, bool mask_revoke);
-
 int dnssec_nsec3_hash(DnsResourceRecord *nsec3, const char *name, void *ret);
 
 typedef enum DnssecNsecResult {
index 4e11ad87bf5454d78de333824ce20602aad5d089..79a008bfb746fb3bde6e09371089f8f921e3e2e2 100644 (file)
@@ -4,16 +4,16 @@
 #include "sd-varlink.h"
 
 #include "alloc-util.h"
+#include "dns-answer.h"
 #include "dns-domain.h"
+#include "dns-packet.h"
+#include "dns-question.h"
+#include "dns-rr.h"
 #include "dns-type.h"
 #include "event-util.h"
 #include "glyph-util.h"
 #include "log.h"
-#include "resolved-dns-answer.h"
-#include "resolved-dns-packet.h"
 #include "resolved-dns-query.h"
-#include "resolved-dns-question.h"
-#include "resolved-dns-rr.h"
 #include "resolved-dns-scope.h"
 #include "resolved-dns-search-domain.h"
 #include "resolved-dns-synthesize.h"
index 9473fb818210e6d406026d1a30601b8283a505d2..d3bed93084061b62d8267cdddfd9fb835a21c0ab 100644 (file)
@@ -1,10 +1,10 @@
 /* SPDX-License-Identifier: LGPL-2.1-or-later */
 #pragma once
 
+#include "dns-packet.h"
 #include "in-addr-util.h"
 #include "list.h"
 #include "resolved-dns-browse-services.h"
-#include "resolved-dns-packet.h"
 #include "resolved-dns-transaction.h"
 #include "resolved-forward.h"
 
index a81f9f1936bb4b0d7e5bdac0a2074b6a7049db56..6f8d0fdcfe213880e3cb7d283a36e4795f63c320 100644 (file)
@@ -7,20 +7,20 @@
 
 #include "af-list.h"
 #include "alloc-util.h"
+#include "dns-answer.h"
 #include "dns-domain.h"
+#include "dns-packet.h"
+#include "dns-question.h"
+#include "dns-rr.h"
 #include "dns-type.h"
 #include "errno-util.h"
 #include "fd-util.h"
 #include "hostname-util.h"
 #include "log.h"
 #include "random-util.h"
-#include "resolved-dns-answer.h"
 #include "resolved-dns-browse-services.h"
 #include "resolved-dns-delegate.h"
-#include "resolved-dns-packet.h"
 #include "resolved-dns-query.h"
-#include "resolved-dns-question.h"
-#include "resolved-dns-rr.h"
 #include "resolved-dns-scope.h"
 #include "resolved-dns-search-domain.h"
 #include "resolved-dns-server.h"
index 3ecc2183df1d4ea116c318cb7b95a862877916b5..16c28eb9a304420f54f8e09d2dac2cc148fdb676 100644 (file)
@@ -2,11 +2,11 @@
 #pragma once
 
 #include "dns-def.h"
+#include "dns-packet.h"
 #include "list.h"
 #include "ratelimit.h"
 #include "resolve-util.h"
 #include "resolved-dns-cache.h"
-#include "resolved-dns-packet.h"
 #include "resolved-dns-zone.h"
 #include "resolved-forward.h"
 
index a177c323e2bff58072f78e53a2e38d5a75059cab..787ffccc78470effef741c9336483e6645ce4e7c 100644 (file)
@@ -5,6 +5,7 @@
 
 #include "alloc-util.h"
 #include "dns-domain.h"
+#include "dns-packet.h"
 #include "errno-util.h"
 #include "extract-word.h"
 #include "fd-util.h"
@@ -13,7 +14,6 @@
 #include "resolved-bus.h"
 #include "resolved-dns-cache.h"
 #include "resolved-dns-delegate.h"
-#include "resolved-dns-packet.h"
 #include "resolved-dns-scope.h"
 #include "resolved-dns-search-domain.h"
 #include "resolved-dns-server.h"
index 60d2b831c79486eae21b6f5269b59e8ce680b483..b4591365fdc8478013fc33131df1a3a5e39f06b7 100644 (file)
@@ -5,13 +5,13 @@
 #include "sd-event.h"
 
 #include "alloc-util.h"
+#include "dns-packet.h"
 #include "errno-util.h"
 #include "fd-util.h"
 #include "iovec-util.h"
 #include "log.h"
 #include "missing-network.h"
 #include "ordered-set.h"
-#include "resolved-dns-packet.h"
 #include "resolved-dns-server.h"
 #include "resolved-dns-stream.h"
 #include "resolved-manager.h"
index 83bbd11eab5369c44adcc18c594fa38182953660..60cae3f51f100eca284de001b7180642c8d93e0f 100644 (file)
@@ -1,8 +1,8 @@
 /* SPDX-License-Identifier: LGPL-2.1-or-later */
 #pragma once
 
+#include "dns-packet.h"
 #include "list.h"
-#include "resolved-dns-packet.h"
 #include "resolved-dnstls.h"
 #include "resolved-forward.h"
 #include "socket-util.h"
index 655a6c5da12ae748dd270574e2f8fef875a881c5..b2cfa4a998b2bb961ed6cbe9c8aec602d7366a7a 100644 (file)
@@ -7,17 +7,17 @@
 
 #include "alloc-util.h"
 #include "capability-util.h"
+#include "dns-answer.h"
+#include "dns-packet.h"
+#include "dns-question.h"
+#include "dns-rr.h"
 #include "dns-type.h"
 #include "errno-util.h"
 #include "fd-util.h"
 #include "log.h"
 #include "missing-network.h"
 #include "resolve-util.h"
-#include "resolved-dns-answer.h"
-#include "resolved-dns-packet.h"
 #include "resolved-dns-query.h"
-#include "resolved-dns-question.h"
-#include "resolved-dns-rr.h"
 #include "resolved-dns-stream.h"
 #include "resolved-dns-stub.h"
 #include "resolved-dns-transaction.h"
index 882bacc97a24c0c0a57226e18ae7dbf87f2e03dc..8ce9204e0c6e45f313e1db323442cdc92cfc2d6f 100644 (file)
@@ -1,7 +1,11 @@
 /* SPDX-License-Identifier: LGPL-2.1-or-later */
 
 #include "alloc-util.h"
+#include "dns-answer.h"
 #include "dns-domain.h"
+#include "dns-packet.h"
+#include "dns-question.h"
+#include "dns-rr.h"
 #include "dns-type.h"
 #include "env-util.h"
 #include "hostname-util.h"
@@ -9,10 +13,6 @@
 #include "log.h"
 #include "missing-network.h"
 #include "resolved-def.h"
-#include "resolved-dns-answer.h"
-#include "resolved-dns-packet.h"
-#include "resolved-dns-question.h"
-#include "resolved-dns-rr.h"
 #include "resolved-dns-synthesize.h"
 #include "resolved-manager.h"
 #include "socket-util.h"
index 05088082fd38d01eb769ec4614a1131c854c505a..973ea08f4328001e9618b5a2e788855a20045c5d 100644 (file)
@@ -5,19 +5,19 @@
 
 #include "af-list.h"
 #include "alloc-util.h"
+#include "dns-answer.h"
 #include "dns-domain.h"
+#include "dns-packet.h"
+#include "dns-question.h"
+#include "dns-rr.h"
 #include "errno-list.h"
 #include "errno-util.h"
 #include "fd-util.h"
 #include "glyph-util.h"
 #include "log.h"
 #include "random-util.h"
-#include "resolved-dns-answer.h"
 #include "resolved-dns-cache.h"
-#include "resolved-dns-packet.h"
 #include "resolved-dns-query.h"
-#include "resolved-dns-question.h"
-#include "resolved-dns-rr.h"
 #include "resolved-dns-scope.h"
 #include "resolved-dns-server.h"
 #include "resolved-dns-stream.h"
index 3c4d7efdc594f2ba1f678deb38c7f647c6377c62..e29a9d23258b5bef2ef09e6a0da261897658f164 100644 (file)
@@ -5,7 +5,9 @@
 #include "alloc-util.h"
 #include "conf-files.h"
 #include "constants.h"
+#include "dns-answer.h"
 #include "dns-domain.h"
+#include "dns-rr.h"
 #include "extract-word.h"
 #include "fd-util.h"
 #include "fileio.h"
@@ -13,9 +15,7 @@
 #include "log.h"
 #include "nulstr-util.h"
 #include "parse-util.h"
-#include "resolved-dns-answer.h"
 #include "resolved-dns-dnssec.h"
-#include "resolved-dns-rr.h"
 #include "resolved-dns-trust-anchor.h"
 #include "set.h"
 #include "string-util.h"
index bb30c5a6f700abe9c6cee1e96362efc96ef8ed8e..c0053429589acff5c6a0fdb13922910069543ab0 100644 (file)
@@ -3,12 +3,12 @@
 #include <stdio.h>
 
 #include "alloc-util.h"
+#include "dns-answer.h"
 #include "dns-domain.h"
+#include "dns-packet.h"
+#include "dns-rr.h"
 #include "list.h"
 #include "log.h"
-#include "resolved-dns-answer.h"
-#include "resolved-dns-packet.h"
-#include "resolved-dns-rr.h"
 #include "resolved-dns-scope.h"
 #include "resolved-dns-transaction.h"
 #include "resolved-dns-zone.h"
index 93168c8c3d263feac1eb58dd87fc0c2b43a86291..1c090f9b61121663fcf201542e582103e88e4d3c 100644 (file)
@@ -7,12 +7,12 @@
 #include "conf-parser.h"
 #include "constants.h"
 #include "dns-domain.h"
+#include "dns-rr.h"
 #include "extract-word.h"
 #include "hashmap.h"
 #include "hexdecoct.h"
 #include "path-util.h"
 #include "resolved-conf.h"
-#include "resolved-dns-rr.h"
 #include "resolved-dns-zone.h"
 #include "resolved-dnssd.h"
 #include "resolved-manager.h"
index 0ef33651f18bfe8981d097b80766265c44c88ccf..e9100de5229d07d8643562fe40e7d53f5ad98ba8 100644 (file)
@@ -4,15 +4,15 @@
 #include "sd-event.h"
 
 #include "alloc-util.h"
+#include "dns-answer.h"
 #include "dns-domain.h"
+#include "dns-question.h"
+#include "dns-rr.h"
 #include "extract-word.h"
 #include "fd-util.h"
 #include "fileio.h"
 #include "hostname-util.h"
 #include "log.h"
-#include "resolved-dns-answer.h"
-#include "resolved-dns-question.h"
-#include "resolved-dns-rr.h"
 #include "resolved-etc-hosts.h"
 #include "resolved-manager.h"
 #include "set.h"
index e3640aa9c36581a336bba74e497a338d0857cef9..59b6dc942b98e922c68e101fb7296e7d46e07055 100644 (file)
@@ -8,6 +8,8 @@
 
 #include "alloc-util.h"
 #include "dns-domain.h"
+#include "dns-packet.h"
+#include "dns-rr.h"
 #include "env-file.h"
 #include "extract-word.h"
 #include "fd-util.h"
@@ -18,8 +20,6 @@
 #include "netif-util.h"
 #include "parse-util.h"
 #include "resolved-dns-browse-services.h"
-#include "resolved-dns-packet.h"
-#include "resolved-dns-rr.h"
 #include "resolved-dns-scope.h"
 #include "resolved-dns-search-domain.h"
 #include "resolved-dns-server.h"
index 812ef947f6b38651ff59f581b74d3dc273a8b38e..13e4382b4ab2bb5e0c7302e12c8078a23033f593 100644 (file)
@@ -5,11 +5,11 @@
 
 #include "sd-event.h"
 
+#include "dns-packet.h"
 #include "errno-util.h"
 #include "fd-util.h"
 #include "hashmap.h"
 #include "log.h"
-#include "resolved-dns-packet.h"
 #include "resolved-dns-scope.h"
 #include "resolved-dns-transaction.h"
 #include "resolved-link.h"
index d58026f48d77aa6b7a6b206f7a2bb4bb293664c3..7e6c074c11adf99acb8025ead7de3e41e3a829dc 100644 (file)
 #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"
 #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"
index 98539eac6f7271e02b1dfe8bfc8b2d981671795a..fb20ba9cd02868a3d5d5bf111434a8b4eaacde5a 100644 (file)
@@ -5,13 +5,13 @@
 #include "sd-event.h"
 
 #include "alloc-util.h"
+#include "dns-answer.h"
 #include "dns-domain.h"
+#include "dns-packet.h"
+#include "dns-question.h"
+#include "dns-rr.h"
 #include "fd-util.h"
 #include "log.h"
-#include "resolved-dns-answer.h"
-#include "resolved-dns-packet.h"
-#include "resolved-dns-question.h"
-#include "resolved-dns-rr.h"
 #include "resolved-dns-scope.h"
 #include "resolved-dns-transaction.h"
 #include "resolved-link.h"
index af469bde9080dda8acd159e671d19fb0baa391d0..0a73e41961932d642a48925e777e18bd3e47d1e5 100644 (file)
@@ -4,19 +4,19 @@
 
 #include "alloc-util.h"
 #include "bus-polkit.h"
+#include "dns-answer.h"
 #include "dns-domain.h"
+#include "dns-packet.h"
+#include "dns-question.h"
+#include "dns-rr.h"
 #include "dns-type.h"
 #include "errno-util.h"
 #include "in-addr-util.h"
 #include "iovec-util.h"
 #include "json-util.h"
-#include "resolved-dns-answer.h"
 #include "resolved-dns-browse-services.h"
 #include "resolved-dns-dnssec.h"
-#include "resolved-dns-packet.h"
 #include "resolved-dns-query.h"
-#include "resolved-dns-question.h"
-#include "resolved-dns-rr.h"
 #include "resolved-dns-scope.h"
 #include "resolved-dns-search-domain.h"
 #include "resolved-dns-server.h"
index 06dec47ee095558734a159b1ba3fbee13173aae6..242309069dfa0dfe2249b2c4717251369ee01624 100644 (file)
@@ -1,9 +1,9 @@
 /* SPDX-License-Identifier: LGPL-2.1-or-later */
 
+#include "dns-answer.h"
+#include "dns-rr.h"
 #include "dns-type.h"
 #include "memstream-util.h"
-#include "resolved-dns-answer.h"
-#include "resolved-dns-rr.h"
 #include "strv.h"
 #include "tests.h"
 
index a60daab5c631445b79384cd48eafbd6e144ead2c..705878422e081d0950b183d2e1c05d32719ec973 100644 (file)
@@ -6,16 +6,16 @@
 
 #include "sd-json.h"
 
+#include "dns-answer.h"
+#include "dns-packet.h"
+#include "dns-rr.h"
 #include "dns-type.h"
 #include "fd-util.h"
 #include "fileio.h"
 #include "resolve-util.h"
 #include "resolved-def.h"
-#include "resolved-dns-answer.h"
 #include "resolved-dns-cache.h"
 #include "resolved-dns-dnssec.h"
-#include "resolved-dns-packet.h"
-#include "resolved-dns-rr.h"
 #include "tests.h"
 #include "time-util.h"
 #include "tmpfile-util.h"
index 99bf0b7615baec7f7d9c8b73f4661a60dfcb4ae5..eaffc57184e9655c575e29cd81266a9f845c1151 100644 (file)
@@ -1,12 +1,12 @@
 /* SPDX-License-Identifier: LGPL-2.1-or-later */
 
+#include "dns-answer.h"
+#include "dns-packet.h"
+#include "dns-question.h"
+#include "dns-rr.h"
 #include "dns-type.h"
 #include "list.h"
 #include "log.h"
-#include "resolved-dns-answer.h"
-#include "resolved-dns-packet.h"
-#include "resolved-dns-question.h"
-#include "resolved-dns-rr.h"
 #include "tests.h"
 
 #define BIT_QR (1 << 7)
index 9b67a6a93fc85941b38368800539e967963790c0..dfbfd832f2b864cf5c09633733f10749563877ff 100644 (file)
@@ -1,10 +1,10 @@
 /* SPDX-License-Identifier: LGPL-2.1-or-later */
 
+#include "dns-answer.h"
+#include "dns-packet.h"
+#include "dns-question.h"
+#include "dns-rr.h"
 #include "dns-type.h"
-#include "resolved-dns-answer.h"
-#include "resolved-dns-packet.h"
-#include "resolved-dns-question.h"
-#include "resolved-dns-rr.h"
 #include "tests.h"
 
 #define BIT_QR (1 << 7)
index 5e818106e8889a4d43ab524297ae67cdd23c0ccf..d6be66c55bb33cd3aba5961c0aa477d8a0356a89 100644 (file)
@@ -3,11 +3,11 @@
 #include "sd-id128.h"
 
 #include "alloc-util.h"
+#include "dns-packet.h"
+#include "dns-rr.h"
 #include "fileio.h"
 #include "glob-util.h"
 #include "log.h"
-#include "resolved-dns-packet.h"
-#include "resolved-dns-rr.h"
 #include "siphash24.h"
 #include "strv.h"
 #include "tests.h"
index 3c0917332f3d38bda8a62e550f943f5f17ba9fe8..64114f5abc7cb2b7f013f4d847bdc37a8fc4bfae 100644 (file)
@@ -2,11 +2,11 @@
 
 #include "sd-event.h"
 
-#include "resolved-dns-answer.h"
-#include "resolved-dns-packet.h"
+#include "dns-answer.h"
+#include "dns-packet.h"
+#include "dns-question.h"
+#include "dns-rr.h"
 #include "resolved-dns-query.h"
-#include "resolved-dns-question.h"
-#include "resolved-dns-rr.h"
 #include "resolved-dns-scope.h"
 #include "resolved-dns-search-domain.h"
 #include "resolved-dns-server.h"
index 303c300e0c0d06472247208bdb7e5afcec6d1a38..7cf58424de389376a4baaae3c0df04b2e340b1ea 100644 (file)
@@ -1,10 +1,10 @@
 /* SPDX-License-Identifier: LGPL-2.1-or-later */
 
+#include "dns-question.h"
+#include "dns-rr.h"
 #include "dns-type.h"
 #include "in-addr-util.h"
 #include "memstream-util.h"
-#include "resolved-dns-question.h"
-#include "resolved-dns-rr.h"
 #include "tests.h"
 
 /* ================================================================
index a69c2120d13912178dd138392e4774b4bbe76509..c679e45beeb94b66d16793196a202002184b5942 100644 (file)
@@ -2,9 +2,9 @@
 
 #include "sd-json.h"
 
+#include "dns-packet.h"
+#include "dns-rr.h"
 #include "dns-type.h"
-#include "resolved-dns-packet.h"
-#include "resolved-dns-rr.h"
 #include "tests.h"
 
 /* ================================================================
index 14f7a5156ab228ae3cc708ff9a0aba096911d41a..64b79df45eb93616106c438235c5ae97b0bc813d 100644 (file)
@@ -1,9 +1,9 @@
 /* SPDX-License-Identifier: LGPL-2.1-or-later */
 
-#include "resolved-dns-answer.h"
-#include "resolved-dns-packet.h"
-#include "resolved-dns-question.h"
-#include "resolved-dns-rr.h"
+#include "dns-answer.h"
+#include "dns-packet.h"
+#include "dns-question.h"
+#include "dns-rr.h"
 #include "resolved-dns-synthesize.h"
 #include "resolved-manager.h"
 #include "tests.h"
index 3f449cbfcf8eb698bad99a0e5657bb25429b9def..b9ee18fd22af03d6c38116488b2509616294fd32 100644 (file)
@@ -1,9 +1,9 @@
 /* SPDX-License-Identifier: LGPL-2.1-or-later */
 
+#include "dns-answer.h"
+#include "dns-packet.h"
+#include "dns-rr.h"
 #include "dns-type.h"
-#include "resolved-dns-answer.h"
-#include "resolved-dns-packet.h"
-#include "resolved-dns-rr.h"
 #include "resolved-dns-scope.h"
 #include "resolved-dns-zone.h"
 #include "resolved-manager.h"
index 32aaa4c0db280dc4ed1a5ff0c213ec56e320e40f..eaa4ef9959850669d51efafaca8111db82ba9e01 100644 (file)
@@ -5,10 +5,10 @@
 
 #include "alloc-util.h"
 #include "bitmap.h"
+#include "dns-answer.h"
+#include "dns-rr.h"
 #include "hexdecoct.h"
-#include "resolved-dns-answer.h"
 #include "resolved-dns-dnssec.h"
-#include "resolved-dns-rr.h"
 #include "string-util.h"
 #include "tests.h"
 #include "time-util.h"
index ec660379f44b02dfa6cd1131af3f669f09a241ba..15b9f4e11c5b1014c7019234652660ff09f78672 100644 (file)
@@ -1,8 +1,8 @@
 /* SPDX-License-Identifier: LGPL-2.1-or-later */
 
+#include "dns-packet.h"
 #include "dns-type.h"
 #include "resolved-dns-dnssec.h"
-#include "resolved-dns-packet.h"
 #include "test-tables.h"
 #include "tests.h"
 
index 21556d57fa894eba5aa052f70acd2053af1d5233..6ba03914908019d19f4f297bccf64a4fdf659f96 100644 (file)
@@ -3,14 +3,14 @@
 #include "sd-daemon.h"
 #include "sd-event.h"
 
+#include "dns-packet.h"
+#include "dns-question.h"
 #include "dns-type.h"
 #include "errno-util.h"
 #include "fd-util.h"
 #include "iovec-util.h"
 #include "log.h"
 #include "main-func.h"
-#include "resolved-dns-packet.h"
-#include "resolved-dns-question.h"
 #include "resolved-manager.h"
 #include "socket-netlink.h"
 #include "socket-util.h"
index e0cb6006adca25670d7e00fcf50e00bdbe170819..f3afe467d8362d79408378631f84bc6a74c4769b 100644 (file)
@@ -5,8 +5,8 @@
 #include "sd-event.h"
 #include "sd-netlink.h"
 
+#include "dns-packet.h"
 #include "netlink-internal.h"
-#include "resolved-dns-packet.h"
 #include "resolved-dns-scope.h"
 #include "resolved-dns-server.h"
 #include "resolved-link.h"
index b11358a7d7d88fddc95febd84e3c34c5657faf57..1ce7aa65ad43c130b70cf43d3470f0b5e469471f 100644 (file)
@@ -2,11 +2,11 @@
 
 #include "sd-json.h"
 
+#include "dns-answer.h"
+#include "dns-packet.h"
+#include "dns-rr.h"
 #include "hexdecoct.h"
 #include "log.h"
-#include "resolved-dns-answer.h"
-#include "resolved-dns-packet.h"
-#include "resolved-dns-rr.h"
 #include "tests.h"
 
 TEST(dns_packet_new) {
index 82d8f2925323383a9a3a78d13c23dcd0f86cdd22..a952239d53d2ed3c8002dd6cc6fd1dbb1017c902 100644 (file)
 
 #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"
similarity index 99%
rename from src/resolve/resolved-dns-answer.c
rename to src/shared/dns-answer.c
index 37e2ba1100677cf41943a9e44a5afa82bd50b762..7ebbf8795dcd1b1f0af3c0d159fc558f19dbd3f3 100644 (file)
@@ -3,11 +3,11 @@
 #include <stdio.h>
 
 #include "alloc-util.h"
+#include "dns-answer.h"
 #include "dns-domain.h"
+#include "dns-rr.h"
 #include "log.h"
 #include "random-util.h"
-#include "resolved-dns-answer.h"
-#include "resolved-dns-rr.h"
 #include "siphash24.h"
 #include "string-util.h"
 
similarity index 99%
rename from src/resolve/resolved-dns-answer.h
rename to src/shared/dns-answer.h
index 5f4a54c55675950946eb3f4c6c9ebdfa53b5989a..059f896b86f2fa9137d7e8efa97e0902f5a040db 100644 (file)
@@ -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.
similarity index 99%
rename from src/resolve/resolved-dns-packet.c
rename to src/shared/dns-packet.c
index e091d4273b6f8f5578b6b22203e756345801757b..4dba0983ab97093242eb3a7691cc4e822bc00651 100644 (file)
@@ -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"
similarity index 99%
rename from src/resolve/resolved-dns-packet.h
rename to src/shared/dns-packet.h
index 8095807805bcd2035b8b827c8799f4b87702ced9..33f2ca3c54b6019a8e49df5eb51ac55cd537d222 100644 (file)
@@ -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 {
similarity index 99%
rename from src/resolve/resolved-dns-question.c
rename to src/shared/dns-question.c
index 0749fbcfd94196299d6ce35c81eab79c110643c3..d6466e07936e87d4cb4bbed93a6704707a918b7d 100644 (file)
@@ -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"
 
similarity index 99%
rename from src/resolve/resolved-dns-question.h
rename to src/shared/dns-question.h
index 40084f482f3c08b9c65625149150291018def6ee..4dd3b27713a1b618c302399dfaa6cb0c55960cd3 100644 (file)
@@ -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 */
 
similarity index 99%
rename from src/resolve/resolved-dns-rr.c
rename to src/shared/dns-rr.c
index 16dda0e97998cdf84292eb4ea597d89b5b6781a6..c86714a6076fb283798b5d5978efd3455b8cbe69 100644 (file)
@@ -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];
similarity index 99%
rename from src/resolve/resolved-dns-rr.h
rename to src/shared/dns-rr.h
index 8c7c257026adee2331d50f32b939a2f6a68e583b..48f77d3326872396f637a3ffd56f7e5c5e4a0104 100644 (file)
@@ -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;
similarity index 100%
rename from src/resolve/dns-type.c
rename to src/shared/dns-type.c
similarity index 100%
rename from src/resolve/dns-type.h
rename to src/shared/dns-type.h
index 023ca48fffb9607e4b00248c84fdf4dc0e9d8f45..15763d4c65ea39c94922ff777076b93d1d40028b 100644 (file)
@@ -61,7 +61,12 @@ shared_sources = files(
         'discover-image.c',
         'dissect-image.c',
         'dm-util.c',
+        'dns-answer.c',
         'dns-domain.c',
+        'dns-packet.c',
+        'dns-question.c',
+        'dns-rr.c',
+        'dns-type.c',
         'dropin.c',
         'edit-util.c',
         'efi-api.c',
@@ -313,6 +318,41 @@ ethtool_link_mode_xml = custom_target(
         capture : true)
 man_page_depends += ethtool_link_mode_xml
 
+dns_type_list_txt = custom_target(
+        input : ['generate-dns_type-list.sed', 'dns-type.h'],
+        output : 'dns_type-list.txt',
+        command : [sed, '-n', '-r', '-f', '@INPUT0@', '@INPUT1@'],
+        capture : true)
+
+gperf_file = custom_target(
+        input : dns_type_list_txt,
+        output : 'dns_type-from-name.gperf',
+        command : [files('generate-dns_type-gperf.py'),
+                   'dns_type',
+                   'DNS_TYPE_',
+                   '@INPUT@'],
+        capture : true)
+
+dns_type_from_name_inc = custom_target(
+        input : gperf_file,
+        output : 'dns_type-from-name.inc',
+        command : [gperf,
+                   '-L', 'ANSI-C', '-t', '--ignore-case',
+                   '-N', 'lookup_dns_type',
+                   '-H', 'hash_dns_type_name',
+                   '-p', '-C',
+                   '@INPUT@'],
+        capture : true)
+
+dns_type_to_name_inc = custom_target(
+        input : ['dns_type-to-name.awk', dns_type_list_txt],
+        output : 'dns_type-to-name.inc',
+        command : [awk, '-f', '@INPUT0@', '@INPUT1@'],
+        capture : true)
+
+generated_sources += [dns_type_from_name_inc, dns_type_to_name_inc]
+shared_sources += [dns_type_from_name_inc, dns_type_to_name_inc]
+
 libshared_name = 'systemd-shared-@0@'.format(shared_lib_tag)
 
 libshared_deps = [threads,
similarity index 99%
rename from src/resolve/resolved-def.h
rename to src/shared/resolved-def.h
index d2e3d0fea60559d1ae8e0419260f45d1deb3a74c..e00bd204d7046dee23ead0487ed61289f925bd69 100644 (file)
@@ -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 */
index a15e2769af5d89e656c073ce3a276f471a753953..9fa7a7ce73e38dc30070c637101d96d6cf75d278 100644 (file)
@@ -18,8 +18,10 @@ typedef enum BusPrintPropertyFlags BusPrintPropertyFlags;
 typedef enum BusTransport BusTransport;
 typedef enum CatFlags CatFlags;
 typedef enum CertificateSourceType CertificateSourceType;
+typedef enum DnsAnswerFlags DnsAnswerFlags;
 typedef enum DnsCacheMode DnsCacheMode;
 typedef enum DnsOverTlsMode DnsOverTlsMode;
+typedef enum DnsProtocol DnsProtocol;
 typedef enum DnssecMode DnssecMode;
 typedef enum Fido2EnrollFlags Fido2EnrollFlags;
 typedef enum KeySourceType KeySourceType;
@@ -50,6 +52,13 @@ typedef struct Condition Condition;
 typedef struct ConfigSection ConfigSection;
 typedef struct ConfigTableItem ConfigTableItem;
 typedef struct CPUSet CPUSet;
+typedef struct DnsAnswer DnsAnswer;
+typedef struct DnsPacket DnsPacket;
+typedef struct DnsQuestion DnsQuestion;
+typedef struct DnsResourceKey DnsResourceKey;
+typedef struct DnsResourceRecord DnsResourceRecord;
+typedef struct DnsSvcParam DnsSvcParam;
+typedef struct DnsTxtItem DnsTxtItem;
 typedef struct FDSet FDSet;
 typedef struct Fido2HmacSalt Fido2HmacSalt;
 typedef struct GroupRecord GroupRecord;