The mDNS probing is described in RFC 6762 chapter 8.1. The code will send an unsolicited mDNS query to network and will check if there are existing hosts with the same name. If there are, then the mDNS responder will not respond to queries it is configured to use. Fixes #84333 Signed-off-by: Jukka Rissanen <jukka.rissanen@nordicsemi.no>
355 lines
10 KiB
Plaintext
355 lines
10 KiB
Plaintext
# Copyright (c) 2016 Intel Corporation
|
|
# SPDX-License-Identifier: Apache-2.0
|
|
|
|
config DNS_RESOLVER
|
|
bool "DNS resolver"
|
|
depends on NET_NATIVE
|
|
select NET_SOCKETS
|
|
select NET_SOCKETS_SERVICE
|
|
select CRC
|
|
help
|
|
This option enables the DNS client side support for Zephyr
|
|
|
|
if DNS_RESOLVER
|
|
|
|
config DNS_RESOLVER_AUTO_INIT
|
|
bool "Automatically initialize the default DNS context"
|
|
default y
|
|
help
|
|
Automatically initialize the default DNS context so dns_resolve_init
|
|
does not need to be manually called.
|
|
|
|
config MDNS_RESOLVER
|
|
bool "MDNS support"
|
|
help
|
|
This option enables multicast DNS client side support.
|
|
See RFC 6762 for details.
|
|
|
|
config LLMNR_RESOLVER
|
|
bool "LLMNR support"
|
|
help
|
|
This option enables link local multicast name resolution client side
|
|
support. See RFC 4795 for details. LLMNR is typically used by Windows
|
|
hosts. If you enable this option, then the DNS requests are ONLY sent
|
|
to LLMNR well known multicast address 224.0.0.252:5355 or
|
|
[ff02::1:3]:5355 and other DNS server addresses are ignored.
|
|
|
|
config DNS_RESOLVER_ADDITIONAL_QUERIES
|
|
int "Additional DNS queries"
|
|
range 0 2
|
|
default 1
|
|
help
|
|
Number of additional DNS queries that the DNS resolver may
|
|
generate when the RR ANSWER only contains CNAME(s).
|
|
The maximum value of this variable is constrained to avoid
|
|
'alias loops'.
|
|
|
|
config DNS_RESOLVER_AI_MAX_ENTRIES
|
|
int "Maximum number of IP addresses for DNS name"
|
|
default 2
|
|
help
|
|
Defines the max number of IP addresses per domain name
|
|
resolution the DNS resolver can handle.
|
|
|
|
|
|
config DNS_RESOLVER_MAX_SERVERS
|
|
int "Number of DNS server addresses"
|
|
range 1 NET_MAX_CONTEXTS
|
|
default 1
|
|
help
|
|
Max number of DNS servers that we can connect to. Normally one
|
|
DNS server is enough. Each connection to DNS server will use one
|
|
network context.
|
|
|
|
config DNS_RESOLVER_MAX_QUERY_LEN
|
|
int "Max length of a DNS query"
|
|
range 1 $(UINT8_MAX)
|
|
default $(UINT8_MAX)
|
|
help
|
|
Max length of a DNS query that should be looked up including the
|
|
trailing 0. So e.g. "example.com" would have a query len of 12.
|
|
|
|
menuconfig DNS_SERVER_IP_ADDRESSES
|
|
bool "Set DNS server IP addresses"
|
|
help
|
|
Allow DNS IP addresses to be set in config file for
|
|
networking applications.
|
|
|
|
if DNS_SERVER_IP_ADDRESSES
|
|
|
|
config DNS_SERVER1
|
|
string "DNS server 1"
|
|
help
|
|
DNS server IP address 1. The address can be either IPv4 or IPv6
|
|
address. An optional port number can be given.
|
|
Following syntax is supported:
|
|
192.0.2.1
|
|
192.0.2.1:5353
|
|
2001:db8::1
|
|
[2001:db8::1]:5353
|
|
It is possible to bind the DNS connection via a certain network
|
|
interface by appending "%" and network interface name to the server
|
|
address. For example: 192.0.2.1%eth1 would bind the connection socket
|
|
to the network interface eth1. This is optional and by default the
|
|
resolver connects to server by selecting the output network interface
|
|
using normal IP routing.
|
|
It is not mandatory to use this Kconfig option at all.
|
|
The one calling dns_resolve_init() can use this option or not
|
|
to populate the server list. If the DNS server addresses are
|
|
set here, then we automatically create default DNS context
|
|
for the user.
|
|
|
|
config DNS_SERVER2
|
|
string "DNS server 2"
|
|
help
|
|
See help in "DNS server 1" option.
|
|
|
|
config DNS_SERVER3
|
|
string "DNS server 3"
|
|
help
|
|
See help in "DNS server 1" option.
|
|
|
|
config DNS_SERVER4
|
|
string "DNS server 4"
|
|
help
|
|
See help in "DNS server 1" option.
|
|
|
|
config DNS_SERVER5
|
|
string "DNS server 5"
|
|
help
|
|
See help in "DNS server 1" option.
|
|
|
|
endif # DNS_SERVER_IP_ADDRESSES
|
|
|
|
config DNS_NUM_CONCUR_QUERIES
|
|
int "Number of simultaneous DNS queries per one DNS context"
|
|
default 1
|
|
help
|
|
This defines how many concurrent DNS queries can be generated using
|
|
same DNS context. Normally 1 is a good default value.
|
|
|
|
module = DNS_RESOLVER
|
|
module-dep = NET_LOG
|
|
module-str = Log level for DNS resolver
|
|
module-help = Enables DNS resolver code to output debug messages.
|
|
source "subsys/net/Kconfig.template.log_config.net"
|
|
|
|
menuconfig DNS_RESOLVER_CACHE
|
|
bool "DNS resolver cache"
|
|
help
|
|
This option enables the dns resolver cache. DNS queries
|
|
will be cached based on TTL and delivered from cache
|
|
whenever possible. This reduces network usage.
|
|
|
|
if DNS_RESOLVER_CACHE
|
|
|
|
config DNS_RESOLVER_CACHE_MAX_ENTRIES
|
|
int "Number of cache entries supported by the dns cache"
|
|
default 6
|
|
help
|
|
This defines how many entries the DNS cache can hold. If
|
|
not enough entries for caching are available the oldest
|
|
entry gets replaced. Adjusting this value will affect
|
|
RAM usage.
|
|
|
|
endif # DNS_RESOLVER_CACHE
|
|
|
|
endif # DNS_RESOLVER
|
|
|
|
config MDNS_RESPONDER
|
|
bool "mDNS responder"
|
|
select NET_IPV4_IGMP if NET_IPV4
|
|
select NET_IPV6_MLD if NET_IPV6
|
|
select NET_MGMT
|
|
select NET_MGMT_EVENT
|
|
select NET_SOCKETS
|
|
select NET_SOCKETS_SERVICE
|
|
depends on NET_HOSTNAME_ENABLE
|
|
help
|
|
This option enables the mDNS responder support for Zephyr.
|
|
It will listen well-known address ff02::fb and 224.0.0.251.
|
|
Currently this only returns IP address information.
|
|
You must set CONFIG_NET_HOSTNAME to some meaningful value and
|
|
then mDNS will start to respond to <hostname>.local mDNS queries.
|
|
See RFC 6762 for more details about mDNS.
|
|
|
|
if MDNS_RESPONDER
|
|
|
|
config MDNS_RESPONDER_TTL
|
|
int "Time-to-Live of returned DNS name"
|
|
default 600
|
|
help
|
|
DNS answers will use the TTL (in seconds).
|
|
|
|
config MDNS_RESPONDER_INIT_PRIO
|
|
int "Startup priority for the mDNS responder init"
|
|
default 96
|
|
help
|
|
Note that if NET_CONFIG_AUTO_INIT is enabled, then this value
|
|
should be bigger than its value.
|
|
|
|
config MDNS_RESPONDER_PROBE
|
|
bool "mDNS probing support [EXPERIMENTAL]"
|
|
select NET_CONNECTION_MANAGER
|
|
select MDNS_RESOLVER
|
|
select DNS_RESOLVER
|
|
select EXPERIMENTAL
|
|
help
|
|
Note that for probing to work, the mDNS and DNS resolver need to
|
|
be enabled. The probing is made optional to allow smaller memory
|
|
usage.
|
|
|
|
config MDNS_WORKQ_STACK_SIZE
|
|
int "mDNS work queue thread stack size"
|
|
default 1200 if X86
|
|
default 1024
|
|
depends on MDNS_RESPONDER_PROBE
|
|
help
|
|
Set the mDNS work queue thread stack size in bytes.
|
|
|
|
config MDNS_WORKER_PRIO
|
|
int "Priority of the mDNS work queue"
|
|
default 2
|
|
depends on MDNS_RESPONDER_PROBE
|
|
help
|
|
Set the priority of the mDNS worker queue, that handles all
|
|
mDNS probing. Value 0 = highest priortity.
|
|
When CONFIG_NET_TC_THREAD_COOPERATIVE = y, lowest priority is
|
|
CONFIG_NUM_COOP_PRIORITIES-1 else lowest priority is
|
|
CONFIG_NUM_PREEMPT_PRIORITIES-1.
|
|
|
|
config MDNS_RESPONDER_DNS_SD
|
|
bool "DNS Service Discovery via mDNS"
|
|
default y
|
|
depends on DNS_SD
|
|
help
|
|
Selecting this option ensures that the MDNS Responder
|
|
processes PTR, SRV, and TXT records according to RFC 6763.
|
|
By doing so, Zephyr network services are discoverable
|
|
using e.g. 'avahi-browse -t -r _greybus._tcp'.
|
|
|
|
if MDNS_RESPONDER_DNS_SD
|
|
config MDNS_RESPONDER_DNS_SD_SERVICE_TYPE_ENUMERATION
|
|
bool "DNS SD Service Type Enumeration"
|
|
default y
|
|
help
|
|
Selecting this option ensures that the MDNS Responder
|
|
performs DNS-SD Service Type Enumeration according to RFC 6763,
|
|
Chapter 9. By doing so, Zephyr network services are discoverable
|
|
using e.g. 'avahi-browse -t -r _services._dns-sd._udp.local'.
|
|
endif # MDNS_RESPONDER_DNS_SD
|
|
|
|
module = MDNS_RESPONDER
|
|
module-dep = NET_LOG
|
|
module-str = Log level for mDNS responder
|
|
module-help = Enables mDNS responder code to output debug messages.
|
|
source "subsys/net/Kconfig.template.log_config.net"
|
|
|
|
config MDNS_RESOLVER_ADDITIONAL_BUF_CTR
|
|
int "Additional DNS buffers"
|
|
default 0
|
|
help
|
|
Number of additional buffers available for the mDNS responder.
|
|
|
|
endif # MDNS_RESPONDER
|
|
|
|
config LLMNR_RESPONDER
|
|
bool "LLMNR responder"
|
|
select NET_IPV4_IGMP if NET_IPV4
|
|
select NET_IPV6_MLD if NET_IPV6
|
|
select NET_MGMT
|
|
select NET_MGMT_EVENT
|
|
select NET_SOCKETS
|
|
select NET_SOCKETS_SERVICE
|
|
depends on NET_HOSTNAME_ENABLE
|
|
help
|
|
This option enables the LLMNR responder support for Zephyr.
|
|
It will listen well-known address ff02::1:3 and 224.0.0.252.
|
|
Currently this only returns IP address information.
|
|
You must set CONFIG_NET_HOSTNAME to some meaningful value and
|
|
then LLMNR will start to respond to <hostname> LLMNR queries.
|
|
Note that LLMNR queries should only contain single-label names
|
|
so there should be NO dot (".") in the name (RFC 4795 ch 3).
|
|
Current implementation does not support TCP.
|
|
See RFC 4795 for more details about LLMNR.
|
|
|
|
if LLMNR_RESPONDER
|
|
|
|
config LLMNR_RESPONDER_TTL
|
|
int "Time-to-Live of returned DNS name"
|
|
default 30
|
|
help
|
|
DNS answers will use the TTL (in seconds). A default value is 30
|
|
seconds as recommended by RFC 4795 chapter 2.8
|
|
|
|
config LLMNR_RESPONDER_INIT_PRIO
|
|
int "Startup priority for the LLMNR responder init"
|
|
default 96
|
|
help
|
|
Note that if NET_CONFIG_AUTO_INIT is enabled, then this value
|
|
should be bigger than its value.
|
|
|
|
module = LLMNR_RESPONDER
|
|
module-dep = NET_LOG
|
|
module-str = Log level for LLMNR responder
|
|
module-help = Enables LLMNR responder code to output debug messages.
|
|
source "subsys/net/Kconfig.template.log_config.net"
|
|
|
|
config LLMNR_RESOLVER_ADDITIONAL_BUF_CTR
|
|
int "Additional DNS buffers"
|
|
default 0
|
|
help
|
|
Number of additional buffers available for the LLMNR responder.
|
|
|
|
endif # LLMNR_RESPONDER
|
|
|
|
config DNS_SD
|
|
bool "DNS Service Discovery"
|
|
help
|
|
This option enables DNS Service Discovery for Zephyr. It can
|
|
be enabled for virtually any network service with only a few
|
|
lines of code and works for both Unicast and Multicast DNS.
|
|
See RFC 6763 for more details about DNS-SD.
|
|
|
|
if DNS_SD
|
|
|
|
module = DNS_SD
|
|
module-dep = NET_LOG
|
|
module-str = Log level for DNS-SD
|
|
module-help = Enables DNS Service Discovery code to output debug messages.
|
|
source "subsys/net/Kconfig.template.log_config.net"
|
|
|
|
endif # DNS_SD
|
|
|
|
# Note that we enable the DNS socket dispatcher always if either responder or
|
|
# resolver support is enabled to simplify things. Strictly speaking the
|
|
# dispatcher is really needed for supporting resolver and responder at the same
|
|
# time.
|
|
config DNS_SOCKET_DISPATCHER
|
|
bool
|
|
depends on (DNS_RESOLVER || MDNS_RESPONDER)
|
|
select NET_SOCKETS_SERVICE
|
|
default y
|
|
help
|
|
A DNS socket dispatcher that allows both the DNS resolver and
|
|
mDNS responder to be used at the same time.
|
|
|
|
if DNS_SOCKET_DISPATCHER
|
|
|
|
config DNS_RESOLVER_ADDITIONAL_BUF_CTR
|
|
int "Additional DNS buffers"
|
|
default 1
|
|
help
|
|
Number of additional buffers available for the DNS resolver.
|
|
The DNS resolver requires at least one buffer. This option
|
|
enables additional buffers required for multiple concurrent
|
|
DNS connections.
|
|
|
|
module = DNS_SOCKET_DISPATCHER
|
|
module-dep = NET_LOG
|
|
module-str = Log level for DNS socket dispatcher
|
|
module-help = Enables DNS socket dispatcher code to output debug messages.
|
|
source "subsys/net/Kconfig.template.log_config.net"
|
|
|
|
endif # DNS_SOCKET_DISPATCHER
|