package caresv3

import "github.com/envoyproxy/go-control-plane/envoy/extensions/network/dns_resolver/cares/v3"

Index

Variables

var File_envoy_extensions_network_dns_resolver_cares_v3_cares_dns_resolver_proto protoreflect.FileDescriptor

Types

type CaresDnsResolverConfig

type CaresDnsResolverConfig struct {

	// A list of DNS resolver addresses.
	// :ref:`use_resolvers_as_fallback <envoy_v3_api_field_extensions.network.dns_resolver.cares.v3.CaresDnsResolverConfig.use_resolvers_as_fallback>`
	// below dictates if the DNS client should override system defaults or only use the provided
	// resolvers if the system defaults are not available, i.e., as a fallback.
	Resolvers []*v3.Address `protobuf:"bytes,1,rep,name=resolvers,proto3" json:"resolvers,omitempty"`
	// If true use the resolvers listed in the
	// :ref:`resolvers <envoy_v3_api_field_extensions.network.dns_resolver.cares.v3.CaresDnsResolverConfig.resolvers>`
	// field only if c-ares is unable to obtain a
	// nameserver from the system (e.g., “/etc/resolv.conf“).
	// Otherwise, the resolvers listed in the resolvers list will override the default system
	// resolvers. Defaults to false.
	UseResolversAsFallback bool `protobuf:"varint,3,opt,name=use_resolvers_as_fallback,json=useResolversAsFallback,proto3" json:"use_resolvers_as_fallback,omitempty"`
	// The resolver will query available network interfaces and determine if there are no available
	// interfaces for a given IP family. It will then filter these addresses from the results it
	// presents. e.g., if there are no available IPv4 network interfaces, the resolver will not
	// provide IPv4 addresses.
	FilterUnroutableFamilies bool `protobuf:"varint,4,opt,name=filter_unroutable_families,json=filterUnroutableFamilies,proto3" json:"filter_unroutable_families,omitempty"`
	// Configuration of DNS resolver option flags which control the behavior of the DNS resolver.
	DnsResolverOptions *v3.DnsResolverOptions `protobuf:"bytes,2,opt,name=dns_resolver_options,json=dnsResolverOptions,proto3" json:"dns_resolver_options,omitempty"`
	// This option allows the number of UDP based DNS queries to be capped.
	//
	// .. note::
	//
	//	This is only applicable to c-ares DNS resolver currently.
	UdpMaxQueries *wrapperspb.UInt32Value `protobuf:"bytes,5,opt,name=udp_max_queries,json=udpMaxQueries,proto3" json:"udp_max_queries,omitempty"`
	// The number of seconds each name server is given to respond to a query on the first try of any given server.
	//
	// .. note::
	//
	//	While the c-ares library defaults to 2 seconds, Envoy's default (if this field is unset) is 5 seconds.
	//	This adjustment was made to maintain the previous behavior after users reported an increase in DNS resolution times.
	QueryTimeoutSeconds *wrapperspb.UInt64Value `protobuf:"bytes,6,opt,name=query_timeout_seconds,json=queryTimeoutSeconds,proto3" json:"query_timeout_seconds,omitempty"`
	// The maximum number of query attempts the resolver will make before giving up.
	// Each attempt may use a different name server.
	//
	// .. note::
	//
	//	While the c-ares library defaults to 3 attempts, Envoy's default (if this field is unset) is 4 attempts.
	//	This adjustment was made to maintain the previous behavior after users reported an increase in DNS resolution times.
	QueryTries *wrapperspb.UInt32Value `protobuf:"bytes,7,opt,name=query_tries,json=queryTries,proto3" json:"query_tries,omitempty"`
	// Enable round-robin selection of name servers for DNS resolution. When enabled, the resolver will cycle through the
	// list of name servers for each resolution request. This can help distribute the query load across multiple name
	// servers. If disabled (default), the resolver will try name servers in the order they are configured.
	//
	// .. note::
	//
	//	This setting overrides any system configuration for name server rotation.
	RotateNameservers bool `protobuf:"varint,8,opt,name=rotate_nameservers,json=rotateNameservers,proto3" json:"rotate_nameservers,omitempty"`
	// Maximum EDNS0 UDP payload size in bytes.
	// If set, c-ares will include EDNS0 in DNS queries and use this value as the maximum UDP response size.
	//
	// Recommended values:
	//
	// * **1232**: Safe default (avoids fragmentation).
	// * **4096**: Maximum allowed.
	//
	// If unset, c-ares uses its internal default (usually 1232).
	Edns0MaxPayloadSize *wrapperspb.UInt32Value `protobuf:"bytes,9,opt,name=edns0_max_payload_size,json=edns0MaxPayloadSize,proto3" json:"edns0_max_payload_size,omitempty"`
	// The maximum duration for which a UDP channel will be kept alive before being refreshed.
	//
	// If set, the DNS resolver will periodically reinitialize its c-ares channel after the
	// specified duration. This can help with avoiding stale socket states, and providing
	// better load distribution across UDP ports.
	//
	// If not specified, no periodic refresh will be performed.
	MaxUdpChannelDuration *durationpb.Duration `protobuf:"bytes,10,opt,name=max_udp_channel_duration,json=maxUdpChannelDuration,proto3" json:"max_udp_channel_duration,omitempty"`
	// If true, reinitialize the c-ares channel when a DNS query fails with “ARES_ETIMEOUT“.
	//
	// This can help recover from rare cases where the UDP sockets held by the c-ares
	// channel become unusable after timeouts, causing subsequent queries to fail or
	// Envoy to keep serving stale DNS results. When enabled, a timeout-triggered
	// reinitialization attempts to restore healthy state quickly. In environments
	// where timeouts are caused by intermittent network issues, enabling this may
	// increase channel churn; consider using
	// :ref:`max_udp_channel_duration <envoy_v3_api_field_extensions.network.dns_resolver.cares.v3.CaresDnsResolverConfig.max_udp_channel_duration>`
	// for periodic refresh instead.
	//
	// Default is false.
	ReinitChannelOnTimeout bool `protobuf:"varint,11,opt,name=reinit_channel_on_timeout,json=reinitChannelOnTimeout,proto3" json:"reinit_channel_on_timeout,omitempty"`
	// contains filtered or unexported fields
}

Configuration for c-ares DNS resolver. [#next-free-field: 12]

func (*CaresDnsResolverConfig) Descriptor

func (*CaresDnsResolverConfig) Descriptor() ([]byte, []int)

Deprecated: Use CaresDnsResolverConfig.ProtoReflect.Descriptor instead.

func (*CaresDnsResolverConfig) GetDnsResolverOptions

func (x *CaresDnsResolverConfig) GetDnsResolverOptions() *v3.DnsResolverOptions

func (*CaresDnsResolverConfig) GetEdns0MaxPayloadSize

func (x *CaresDnsResolverConfig) GetEdns0MaxPayloadSize() *wrapperspb.UInt32Value

func (*CaresDnsResolverConfig) GetFilterUnroutableFamilies

func (x *CaresDnsResolverConfig) GetFilterUnroutableFamilies() bool

func (*CaresDnsResolverConfig) GetMaxUdpChannelDuration

func (x *CaresDnsResolverConfig) GetMaxUdpChannelDuration() *durationpb.Duration

func (*CaresDnsResolverConfig) GetQueryTimeoutSeconds

func (x *CaresDnsResolverConfig) GetQueryTimeoutSeconds() *wrapperspb.UInt64Value

func (*CaresDnsResolverConfig) GetQueryTries

func (x *CaresDnsResolverConfig) GetQueryTries() *wrapperspb.UInt32Value

func (*CaresDnsResolverConfig) GetReinitChannelOnTimeout

func (x *CaresDnsResolverConfig) GetReinitChannelOnTimeout() bool

func (*CaresDnsResolverConfig) GetResolvers

func (x *CaresDnsResolverConfig) GetResolvers() []*v3.Address

func (*CaresDnsResolverConfig) GetRotateNameservers

func (x *CaresDnsResolverConfig) GetRotateNameservers() bool

func (*CaresDnsResolverConfig) GetUdpMaxQueries

func (x *CaresDnsResolverConfig) GetUdpMaxQueries() *wrapperspb.UInt32Value

func (*CaresDnsResolverConfig) GetUseResolversAsFallback

func (x *CaresDnsResolverConfig) GetUseResolversAsFallback() bool

func (*CaresDnsResolverConfig) ProtoMessage

func (*CaresDnsResolverConfig) ProtoMessage()

func (*CaresDnsResolverConfig) ProtoReflect

func (x *CaresDnsResolverConfig) ProtoReflect() protoreflect.Message

func (*CaresDnsResolverConfig) Reset

func (x *CaresDnsResolverConfig) Reset()

func (*CaresDnsResolverConfig) String

func (x *CaresDnsResolverConfig) String() string

func (*CaresDnsResolverConfig) Validate

func (m *CaresDnsResolverConfig) Validate() error

Validate checks the field values on CaresDnsResolverConfig with the rules defined in the proto definition for this message. If any rules are violated, the first error encountered is returned, or nil if there are no violations.

func (*CaresDnsResolverConfig) ValidateAll

func (m *CaresDnsResolverConfig) ValidateAll() error

ValidateAll checks the field values on CaresDnsResolverConfig with the rules defined in the proto definition for this message. If any rules are violated, the result is a list of violation errors wrapped in CaresDnsResolverConfigMultiError, or nil if none found.

type CaresDnsResolverConfigMultiError

type CaresDnsResolverConfigMultiError []error

CaresDnsResolverConfigMultiError is an error wrapping multiple validation errors returned by CaresDnsResolverConfig.ValidateAll() if the designated constraints aren't met.

func (CaresDnsResolverConfigMultiError) AllErrors

func (m CaresDnsResolverConfigMultiError) AllErrors() []error

AllErrors returns a list of validation violation errors.

func (CaresDnsResolverConfigMultiError) Error

Error returns a concatenation of all the error messages it wraps.

type CaresDnsResolverConfigValidationError

type CaresDnsResolverConfigValidationError struct {
	// contains filtered or unexported fields
}

CaresDnsResolverConfigValidationError is the validation error returned by CaresDnsResolverConfig.Validate if the designated constraints aren't met.

func (CaresDnsResolverConfigValidationError) Cause

Cause function returns cause value.

func (CaresDnsResolverConfigValidationError) Error

Error satisfies the builtin error interface

func (CaresDnsResolverConfigValidationError) ErrorName

ErrorName returns error name.

func (CaresDnsResolverConfigValidationError) Field

Field function returns field value.

func (CaresDnsResolverConfigValidationError) Key

Key function returns key value.

func (CaresDnsResolverConfigValidationError) Reason

Reason function returns reason value.

Source Files

cares_dns_resolver.pb.go cares_dns_resolver.pb.validate.go

Version
v1.37.0 (latest)
Published
Jan 13, 2026
Platform
linux/amd64
Imports
22 packages
Last checked
1 hour ago

Tools for package owners.