#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 {
#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"
/* 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"
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;
/* 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;
#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) {
'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',
############################################################
-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',
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(
#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"
#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"
#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"
#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"
#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;
#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"
#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"
* 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) {
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 {
#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"
/* 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"
#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"
#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"
#include "alloc-util.h"
#include "dns-domain.h"
+#include "dns-packet.h"
#include "errno-util.h"
#include "extract-word.h"
#include "fd-util.h"
#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"
#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"
/* 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"
#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"
/* 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"
#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"
#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"
#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"
#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"
#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"
#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"
#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"
#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"
#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"
#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"
#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"
#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"
#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"
/* 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"
#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"
/* 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)
/* 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)
#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"
#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"
/* 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"
/* ================================================================
#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"
/* ================================================================
/* 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"
/* 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"
#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"
/* 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"
#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"
#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"
#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) {
#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"
#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"
#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.
#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"
#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 {
#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"
/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
-#include "resolved-forward.h"
+#include "shared-forward.h"
/* A simple array of resource keys */
#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"
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];
#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)
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;
'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',
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,
/* 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 */
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;
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;