// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
// 	protoc-gen-go v1.36.10
// 	protoc        v7.35.1
// source: envoy/extensions/network/dns_resolver/hickory/v3/hickory_dns_resolver.proto

package hickoryv3

import (
	_ "github.com/cncf/xds/go/udpa/annotations"
	v3 "github.com/envoyproxy/go-control-plane/envoy/config/core/v3"
	_ "github.com/envoyproxy/protoc-gen-validate/validate"
	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
	durationpb "google.golang.org/protobuf/types/known/durationpb"
	wrapperspb "google.golang.org/protobuf/types/known/wrapperspb"
	reflect "reflect"
	sync "sync"
	unsafe "unsafe"
)

const (
	// Verify that this generated code is sufficiently up-to-date.
	_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
	// Verify that runtime/protoimpl is sufficiently up-to-date.
	_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
)

// Configuration for DNS-over-TLS (DoT) servers.
type DnsOverTlsConfig struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// The list of DNS-over-TLS server addresses. The port should typically be 853.
	Servers []*v3.Address `protobuf:"bytes,1,rep,name=servers,proto3" json:"servers,omitempty"`
	// The SNI hostname to use for TLS verification. Required when “servers“ are specified.
	TlsServerName string `protobuf:"bytes,2,opt,name=tls_server_name,json=tlsServerName,proto3" json:"tls_server_name,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *DnsOverTlsConfig) Reset() {
	*x = DnsOverTlsConfig{}
	mi := &file_envoy_extensions_network_dns_resolver_hickory_v3_hickory_dns_resolver_proto_msgTypes[0]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *DnsOverTlsConfig) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*DnsOverTlsConfig) ProtoMessage() {}

func (x *DnsOverTlsConfig) ProtoReflect() protoreflect.Message {
	mi := &file_envoy_extensions_network_dns_resolver_hickory_v3_hickory_dns_resolver_proto_msgTypes[0]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use DnsOverTlsConfig.ProtoReflect.Descriptor instead.
func (*DnsOverTlsConfig) Descriptor() ([]byte, []int) {
	return file_envoy_extensions_network_dns_resolver_hickory_v3_hickory_dns_resolver_proto_rawDescGZIP(), []int{0}
}

func (x *DnsOverTlsConfig) GetServers() []*v3.Address {
	if x != nil {
		return x.Servers
	}
	return nil
}

func (x *DnsOverTlsConfig) GetTlsServerName() string {
	if x != nil {
		return x.TlsServerName
	}
	return ""
}

// Configuration for DNS-over-HTTPS (DoH) servers.
type DnsOverHttpsConfig struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// The list of DNS-over-HTTPS endpoint URLs (e.g., “https://dns.google/dns-query“).
	ServerUrls    []string `protobuf:"bytes,1,rep,name=server_urls,json=serverUrls,proto3" json:"server_urls,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *DnsOverHttpsConfig) Reset() {
	*x = DnsOverHttpsConfig{}
	mi := &file_envoy_extensions_network_dns_resolver_hickory_v3_hickory_dns_resolver_proto_msgTypes[1]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *DnsOverHttpsConfig) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*DnsOverHttpsConfig) ProtoMessage() {}

func (x *DnsOverHttpsConfig) ProtoReflect() protoreflect.Message {
	mi := &file_envoy_extensions_network_dns_resolver_hickory_v3_hickory_dns_resolver_proto_msgTypes[1]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use DnsOverHttpsConfig.ProtoReflect.Descriptor instead.
func (*DnsOverHttpsConfig) Descriptor() ([]byte, []int) {
	return file_envoy_extensions_network_dns_resolver_hickory_v3_hickory_dns_resolver_proto_rawDescGZIP(), []int{1}
}

func (x *DnsOverHttpsConfig) GetServerUrls() []string {
	if x != nil {
		return x.ServerUrls
	}
	return nil
}

// Configuration for the Hickory DNS resolver. This resolver uses the Hickory DNS library,
// a pure Rust DNS implementation, for DNS resolution. It supports standard DNS (UDP/TCP),
// DNS-over-TLS (DoT), DNS-over-HTTPS (DoH), and “DNSSEC“ validation.
//
// The resolver runs asynchronously on its own “Tokio“ runtime threads, separate from Envoy's
// event loop threads. Results are delivered back to the calling dispatcher thread.
// [#next-free-field: 10]
type HickoryDnsResolverConfig struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// A list of DNS resolver addresses for standard UDP/TCP resolution.
	// If not specified and “use_system_config“ is not explicitly set to “false“, the system
	// configuration (“/etc/resolv.conf“ on Unix) will be used.
	Resolvers []*v3.Address `protobuf:"bytes,1,rep,name=resolvers,proto3" json:"resolvers,omitempty"`
	// Configuration for DNS-over-TLS (DoT). When specified, queries will be sent over TLS
	// to the configured servers.
	DnsOverTls *DnsOverTlsConfig `protobuf:"bytes,2,opt,name=dns_over_tls,json=dnsOverTls,proto3" json:"dns_over_tls,omitempty"`
	// Configuration for DNS-over-HTTPS (DoH). When specified, queries will be sent over
	// HTTPS to the configured endpoints.
	DnsOverHttps *DnsOverHttpsConfig `protobuf:"bytes,3,opt,name=dns_over_https,json=dnsOverHttps,proto3" json:"dns_over_https,omitempty"`
	// Enables “DNSSEC“ validation for DNS responses. When enabled, the resolver will validate
	// “DNSSEC“ signatures and reject responses that fail validation.
	//
	// Defaults to “false“.
	EnableDnssec bool `protobuf:"varint,4,opt,name=enable_dnssec,json=enableDnssec,proto3" json:"enable_dnssec,omitempty"`
	// Maximum number of entries in the DNS response cache. The cache uses an LRU eviction
	// policy and supports negative caching (caching of “NXDOMAIN“/“NODATA“ responses).
	//
	// Defaults to “1024“.
	CacheSize *wrapperspb.UInt32Value `protobuf:"bytes,5,opt,name=cache_size,json=cacheSize,proto3" json:"cache_size,omitempty"`
	// Number of threads in the “Tokio“ runtime used for asynchronous DNS resolution.
	// Each resolver instance runs its own “Tokio“ runtime.
	//
	// Defaults to “2“. Maximum is “16“.
	NumResolverThreads *wrapperspb.UInt32Value `protobuf:"bytes,6,opt,name=num_resolver_threads,json=numResolverThreads,proto3" json:"num_resolver_threads,omitempty"`
	// If “true“, read the system DNS configuration (“/etc/resolv.conf“ on Unix) for name server
	// addresses and search domains. When “resolvers“ are also specified, they take precedence
	// over the system configuration.
	//
	// If not specified, defaults to “true“ when no “resolvers“, “dns_over_tls“, or
	// “dns_over_https“ are configured.
	UseSystemConfig *wrapperspb.BoolValue `protobuf:"bytes,7,opt,name=use_system_config,json=useSystemConfig,proto3" json:"use_system_config,omitempty"`
	// Timeout for each individual DNS query attempt.
	//
	// Defaults to “5“ seconds.
	QueryTimeout *durationpb.Duration `protobuf:"bytes,8,opt,name=query_timeout,json=queryTimeout,proto3" json:"query_timeout,omitempty"`
	// Maximum number of query attempts before the resolver gives up. Each attempt may use
	// a different name server.
	//
	// Defaults to “3“.
	QueryTries    *wrapperspb.UInt32Value `protobuf:"bytes,9,opt,name=query_tries,json=queryTries,proto3" json:"query_tries,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *HickoryDnsResolverConfig) Reset() {
	*x = HickoryDnsResolverConfig{}
	mi := &file_envoy_extensions_network_dns_resolver_hickory_v3_hickory_dns_resolver_proto_msgTypes[2]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *HickoryDnsResolverConfig) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*HickoryDnsResolverConfig) ProtoMessage() {}

func (x *HickoryDnsResolverConfig) ProtoReflect() protoreflect.Message {
	mi := &file_envoy_extensions_network_dns_resolver_hickory_v3_hickory_dns_resolver_proto_msgTypes[2]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use HickoryDnsResolverConfig.ProtoReflect.Descriptor instead.
func (*HickoryDnsResolverConfig) Descriptor() ([]byte, []int) {
	return file_envoy_extensions_network_dns_resolver_hickory_v3_hickory_dns_resolver_proto_rawDescGZIP(), []int{2}
}

func (x *HickoryDnsResolverConfig) GetResolvers() []*v3.Address {
	if x != nil {
		return x.Resolvers
	}
	return nil
}

func (x *HickoryDnsResolverConfig) GetDnsOverTls() *DnsOverTlsConfig {
	if x != nil {
		return x.DnsOverTls
	}
	return nil
}

func (x *HickoryDnsResolverConfig) GetDnsOverHttps() *DnsOverHttpsConfig {
	if x != nil {
		return x.DnsOverHttps
	}
	return nil
}

func (x *HickoryDnsResolverConfig) GetEnableDnssec() bool {
	if x != nil {
		return x.EnableDnssec
	}
	return false
}

func (x *HickoryDnsResolverConfig) GetCacheSize() *wrapperspb.UInt32Value {
	if x != nil {
		return x.CacheSize
	}
	return nil
}

func (x *HickoryDnsResolverConfig) GetNumResolverThreads() *wrapperspb.UInt32Value {
	if x != nil {
		return x.NumResolverThreads
	}
	return nil
}

func (x *HickoryDnsResolverConfig) GetUseSystemConfig() *wrapperspb.BoolValue {
	if x != nil {
		return x.UseSystemConfig
	}
	return nil
}

func (x *HickoryDnsResolverConfig) GetQueryTimeout() *durationpb.Duration {
	if x != nil {
		return x.QueryTimeout
	}
	return nil
}

func (x *HickoryDnsResolverConfig) GetQueryTries() *wrapperspb.UInt32Value {
	if x != nil {
		return x.QueryTries
	}
	return nil
}

var File_envoy_extensions_network_dns_resolver_hickory_v3_hickory_dns_resolver_proto protoreflect.FileDescriptor

const file_envoy_extensions_network_dns_resolver_hickory_v3_hickory_dns_resolver_proto_rawDesc = "" +
	"\n" +
	"Kenvoy/extensions/network/dns_resolver/hickory/v3/hickory_dns_resolver.proto\x120envoy.extensions.network.dns_resolver.hickory.v3\x1a\"envoy/config/core/v3/address.proto\x1a\x1egoogle/protobuf/duration.proto\x1a\x1egoogle/protobuf/wrappers.proto\x1a\x1dudpa/annotations/status.proto\x1a\x17validate/validate.proto\"|\n" +
	"\x10DnsOverTlsConfig\x127\n" +
	"\aservers\x18\x01 \x03(\v2\x1d.envoy.config.core.v3.AddressR\aservers\x12/\n" +
	"\x0ftls_server_name\x18\x02 \x01(\tB\a\xfaB\x04r\x02\x10\x01R\rtlsServerName\"C\n" +
	"\x12DnsOverHttpsConfig\x12-\n" +
	"\vserver_urls\x18\x01 \x03(\tB\f\xfaB\t\x92\x01\x06\"\x04r\x02\x10\x01R\n" +
	"serverUrls\"\xc4\x05\n" +
	"\x18HickoryDnsResolverConfig\x12;\n" +
	"\tresolvers\x18\x01 \x03(\v2\x1d.envoy.config.core.v3.AddressR\tresolvers\x12d\n" +
	"\fdns_over_tls\x18\x02 \x01(\v2B.envoy.extensions.network.dns_resolver.hickory.v3.DnsOverTlsConfigR\n" +
	"dnsOverTls\x12j\n" +
	"\x0edns_over_https\x18\x03 \x01(\v2D.envoy.extensions.network.dns_resolver.hickory.v3.DnsOverHttpsConfigR\fdnsOverHttps\x12#\n" +
	"\renable_dnssec\x18\x04 \x01(\bR\fenableDnssec\x12;\n" +
	"\n" +
	"cache_size\x18\x05 \x01(\v2\x1c.google.protobuf.UInt32ValueR\tcacheSize\x12Y\n" +
	"\x14num_resolver_threads\x18\x06 \x01(\v2\x1c.google.protobuf.UInt32ValueB\t\xfaB\x06*\x04\x18\x10(\x01R\x12numResolverThreads\x12F\n" +
	"\x11use_system_config\x18\a \x01(\v2\x1a.google.protobuf.BoolValueR\x0fuseSystemConfig\x12L\n" +
	"\rquery_timeout\x18\b \x01(\v2\x19.google.protobuf.DurationB\f\xfaB\t\xaa\x01\x062\x04\x10\xc0\x84=R\fqueryTimeout\x12F\n" +
	"\vquery_tries\x18\t \x01(\v2\x1c.google.protobuf.UInt32ValueB\a\xfaB\x04*\x02(\x01R\n" +
	"queryTriesB\xc6\x01\xba\x80\xc8\xd1\x06\x02\x10\x02\n" +
	">io.envoyproxy.envoy.extensions.network.dns_resolver.hickory.v3B\x17HickoryDnsResolverProtoP\x01Zagithub.com/envoyproxy/go-control-plane/envoy/extensions/network/dns_resolver/hickory/v3;hickoryv3b\x06proto3"

var (
	file_envoy_extensions_network_dns_resolver_hickory_v3_hickory_dns_resolver_proto_rawDescOnce sync.Once
	file_envoy_extensions_network_dns_resolver_hickory_v3_hickory_dns_resolver_proto_rawDescData []byte
)

func file_envoy_extensions_network_dns_resolver_hickory_v3_hickory_dns_resolver_proto_rawDescGZIP() []byte {
	file_envoy_extensions_network_dns_resolver_hickory_v3_hickory_dns_resolver_proto_rawDescOnce.Do(func() {
		file_envoy_extensions_network_dns_resolver_hickory_v3_hickory_dns_resolver_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_envoy_extensions_network_dns_resolver_hickory_v3_hickory_dns_resolver_proto_rawDesc), len(file_envoy_extensions_network_dns_resolver_hickory_v3_hickory_dns_resolver_proto_rawDesc)))
	})
	return file_envoy_extensions_network_dns_resolver_hickory_v3_hickory_dns_resolver_proto_rawDescData
}

var file_envoy_extensions_network_dns_resolver_hickory_v3_hickory_dns_resolver_proto_msgTypes = make([]protoimpl.MessageInfo, 3)
var file_envoy_extensions_network_dns_resolver_hickory_v3_hickory_dns_resolver_proto_goTypes = []any{
	(*DnsOverTlsConfig)(nil),         // 0: envoy.extensions.network.dns_resolver.hickory.v3.DnsOverTlsConfig
	(*DnsOverHttpsConfig)(nil),       // 1: envoy.extensions.network.dns_resolver.hickory.v3.DnsOverHttpsConfig
	(*HickoryDnsResolverConfig)(nil), // 2: envoy.extensions.network.dns_resolver.hickory.v3.HickoryDnsResolverConfig
	(*v3.Address)(nil),               // 3: envoy.config.core.v3.Address
	(*wrapperspb.UInt32Value)(nil),   // 4: google.protobuf.UInt32Value
	(*wrapperspb.BoolValue)(nil),     // 5: google.protobuf.BoolValue
	(*durationpb.Duration)(nil),      // 6: google.protobuf.Duration
}
var file_envoy_extensions_network_dns_resolver_hickory_v3_hickory_dns_resolver_proto_depIdxs = []int32{
	3, // 0: envoy.extensions.network.dns_resolver.hickory.v3.DnsOverTlsConfig.servers:type_name -> envoy.config.core.v3.Address
	3, // 1: envoy.extensions.network.dns_resolver.hickory.v3.HickoryDnsResolverConfig.resolvers:type_name -> envoy.config.core.v3.Address
	0, // 2: envoy.extensions.network.dns_resolver.hickory.v3.HickoryDnsResolverConfig.dns_over_tls:type_name -> envoy.extensions.network.dns_resolver.hickory.v3.DnsOverTlsConfig
	1, // 3: envoy.extensions.network.dns_resolver.hickory.v3.HickoryDnsResolverConfig.dns_over_https:type_name -> envoy.extensions.network.dns_resolver.hickory.v3.DnsOverHttpsConfig
	4, // 4: envoy.extensions.network.dns_resolver.hickory.v3.HickoryDnsResolverConfig.cache_size:type_name -> google.protobuf.UInt32Value
	4, // 5: envoy.extensions.network.dns_resolver.hickory.v3.HickoryDnsResolverConfig.num_resolver_threads:type_name -> google.protobuf.UInt32Value
	5, // 6: envoy.extensions.network.dns_resolver.hickory.v3.HickoryDnsResolverConfig.use_system_config:type_name -> google.protobuf.BoolValue
	6, // 7: envoy.extensions.network.dns_resolver.hickory.v3.HickoryDnsResolverConfig.query_timeout:type_name -> google.protobuf.Duration
	4, // 8: envoy.extensions.network.dns_resolver.hickory.v3.HickoryDnsResolverConfig.query_tries:type_name -> google.protobuf.UInt32Value
	9, // [9:9] is the sub-list for method output_type
	9, // [9:9] is the sub-list for method input_type
	9, // [9:9] is the sub-list for extension type_name
	9, // [9:9] is the sub-list for extension extendee
	0, // [0:9] is the sub-list for field type_name
}

func init() { file_envoy_extensions_network_dns_resolver_hickory_v3_hickory_dns_resolver_proto_init() }
func file_envoy_extensions_network_dns_resolver_hickory_v3_hickory_dns_resolver_proto_init() {
	if File_envoy_extensions_network_dns_resolver_hickory_v3_hickory_dns_resolver_proto != nil {
		return
	}
	type x struct{}
	out := protoimpl.TypeBuilder{
		File: protoimpl.DescBuilder{
			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
			RawDescriptor: unsafe.Slice(unsafe.StringData(file_envoy_extensions_network_dns_resolver_hickory_v3_hickory_dns_resolver_proto_rawDesc), len(file_envoy_extensions_network_dns_resolver_hickory_v3_hickory_dns_resolver_proto_rawDesc)),
			NumEnums:      0,
			NumMessages:   3,
			NumExtensions: 0,
			NumServices:   0,
		},
		GoTypes:           file_envoy_extensions_network_dns_resolver_hickory_v3_hickory_dns_resolver_proto_goTypes,
		DependencyIndexes: file_envoy_extensions_network_dns_resolver_hickory_v3_hickory_dns_resolver_proto_depIdxs,
		MessageInfos:      file_envoy_extensions_network_dns_resolver_hickory_v3_hickory_dns_resolver_proto_msgTypes,
	}.Build()
	File_envoy_extensions_network_dns_resolver_hickory_v3_hickory_dns_resolver_proto = out.File
	file_envoy_extensions_network_dns_resolver_hickory_v3_hickory_dns_resolver_proto_goTypes = nil
	file_envoy_extensions_network_dns_resolver_hickory_v3_hickory_dns_resolver_proto_depIdxs = nil
}
