package dnssvc

import (
	"net/netip"
	"time"
)

// Config is the AdGuard Home DNS service configuration structure.
//
// TODO(a.garipov): Add timeout for incoming requests.
type Config struct {
	// Addresses are the addresses on which to serve plain DNS queries.
	Addresses []netip.AddrPort

	// BootstrapServers are the addresses of DNS servers used for bootstrapping
	// the upstream DNS server addresses.
	BootstrapServers []string

	// UpstreamServers are the upstream DNS server addresses to use.
	UpstreamServers []string

	// DNS64Prefixes is a slice of NAT64 prefixes to be used for DNS64.  See
	// also [Config.UseDNS64].
	DNS64Prefixes []netip.Prefix

	// UpstreamTimeout is the timeout for upstream requests.
	UpstreamTimeout time.Duration

	// BootstrapPreferIPv6, if true, instructs the bootstrapper to prefer IPv6
	// addresses to IPv4 ones when bootstrapping.
	BootstrapPreferIPv6 bool

	// UseDNS64, if true, enables DNS64 protection for incoming requests.
	UseDNS64 bool
}
