# SPDX-License-Identifier: GPL-2.0-only
#
# Configuration for DNS Resolver
#
config DNS_RESOLVER
	tristate "DNS Resolver support"
	depends on NET && KEYS
	help
	  Saying Y here will include support for the DNS Resolver key type
	  which can be used to make upcalls to perform DNS lookups in
	  userspace.

	  DNS Resolver is used to query DNS server for information.  Examples
	  being resolving a UNC hostname element to an IP address for CIFS or
	  performing a DNS query for AFSDB records so that AFS can locate a
	  cell's volume location database servers.

	  DNS Resolver is used by the CIFS and AFS modules, and would support
	  SMB2 later.  DNS Resolver is supported by the userspace upcall
	  helper "/sbin/dns.resolver" via /etc/request-key.conf.

	  See <file:Documentation/networking/dns_resolver.txt> for further
	  information.

	  To compile this as a module, choose M here: the module will be called
	  dnsresolver.

	  If unsure, say N.
