// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
// 	protoc-gen-go v1.36.7
// 	protoc        v5.27.5
// source: github.com/cloudprober/cloudprober/probes/dns/proto/config.proto

package proto

import (
	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
	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)
)

// DNS query types from https://en.wikipedia.org/wiki/List_of_DNS_record_types
type QueryType int32

const (
	QueryType_NONE       QueryType = 0
	QueryType_A          QueryType = 1
	QueryType_NS         QueryType = 2
	QueryType_CNAME      QueryType = 5
	QueryType_SOA        QueryType = 6
	QueryType_PTR        QueryType = 12
	QueryType_MX         QueryType = 15
	QueryType_TXT        QueryType = 16
	QueryType_RP         QueryType = 17
	QueryType_AFSDB      QueryType = 18
	QueryType_SIG        QueryType = 24
	QueryType_KEY        QueryType = 25
	QueryType_AAAA       QueryType = 28
	QueryType_LOC        QueryType = 29
	QueryType_SRV        QueryType = 33
	QueryType_NAPTR      QueryType = 35
	QueryType_KX         QueryType = 36
	QueryType_CERT       QueryType = 37
	QueryType_DNAME      QueryType = 39
	QueryType_APL        QueryType = 42
	QueryType_DS         QueryType = 43
	QueryType_SSHFP      QueryType = 44
	QueryType_IPSECKEY   QueryType = 45
	QueryType_RRSIG      QueryType = 46
	QueryType_NSEC       QueryType = 47
	QueryType_DNSKEY     QueryType = 48
	QueryType_DHCID      QueryType = 49
	QueryType_NSEC3      QueryType = 50
	QueryType_NSEC3PARAM QueryType = 51
	QueryType_TLSA       QueryType = 52
	QueryType_HIP        QueryType = 55
	QueryType_CDS        QueryType = 59
	QueryType_CDNSKEY    QueryType = 60
	QueryType_OPENPGPKEY QueryType = 61
	QueryType_TKEY       QueryType = 249
	QueryType_TSIG       QueryType = 250
	QueryType_URI        QueryType = 256
	QueryType_CAA        QueryType = 257
	QueryType_TA         QueryType = 32768
	QueryType_DLV        QueryType = 32769
)

// Enum value maps for QueryType.
var (
	QueryType_name = map[int32]string{
		0:     "NONE",
		1:     "A",
		2:     "NS",
		5:     "CNAME",
		6:     "SOA",
		12:    "PTR",
		15:    "MX",
		16:    "TXT",
		17:    "RP",
		18:    "AFSDB",
		24:    "SIG",
		25:    "KEY",
		28:    "AAAA",
		29:    "LOC",
		33:    "SRV",
		35:    "NAPTR",
		36:    "KX",
		37:    "CERT",
		39:    "DNAME",
		42:    "APL",
		43:    "DS",
		44:    "SSHFP",
		45:    "IPSECKEY",
		46:    "RRSIG",
		47:    "NSEC",
		48:    "DNSKEY",
		49:    "DHCID",
		50:    "NSEC3",
		51:    "NSEC3PARAM",
		52:    "TLSA",
		55:    "HIP",
		59:    "CDS",
		60:    "CDNSKEY",
		61:    "OPENPGPKEY",
		249:   "TKEY",
		250:   "TSIG",
		256:   "URI",
		257:   "CAA",
		32768: "TA",
		32769: "DLV",
	}
	QueryType_value = map[string]int32{
		"NONE":       0,
		"A":          1,
		"NS":         2,
		"CNAME":      5,
		"SOA":        6,
		"PTR":        12,
		"MX":         15,
		"TXT":        16,
		"RP":         17,
		"AFSDB":      18,
		"SIG":        24,
		"KEY":        25,
		"AAAA":       28,
		"LOC":        29,
		"SRV":        33,
		"NAPTR":      35,
		"KX":         36,
		"CERT":       37,
		"DNAME":      39,
		"APL":        42,
		"DS":         43,
		"SSHFP":      44,
		"IPSECKEY":   45,
		"RRSIG":      46,
		"NSEC":       47,
		"DNSKEY":     48,
		"DHCID":      49,
		"NSEC3":      50,
		"NSEC3PARAM": 51,
		"TLSA":       52,
		"HIP":        55,
		"CDS":        59,
		"CDNSKEY":    60,
		"OPENPGPKEY": 61,
		"TKEY":       249,
		"TSIG":       250,
		"URI":        256,
		"CAA":        257,
		"TA":         32768,
		"DLV":        32769,
	}
)

func (x QueryType) Enum() *QueryType {
	p := new(QueryType)
	*p = x
	return p
}

func (x QueryType) String() string {
	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}

func (QueryType) Descriptor() protoreflect.EnumDescriptor {
	return file_github_com_cloudprober_cloudprober_probes_dns_proto_config_proto_enumTypes[0].Descriptor()
}

func (QueryType) Type() protoreflect.EnumType {
	return &file_github_com_cloudprober_cloudprober_probes_dns_proto_config_proto_enumTypes[0]
}

func (x QueryType) Number() protoreflect.EnumNumber {
	return protoreflect.EnumNumber(x)
}

// Deprecated: Do not use.
func (x *QueryType) UnmarshalJSON(b []byte) error {
	num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)
	if err != nil {
		return err
	}
	*x = QueryType(num)
	return nil
}

// Deprecated: Use QueryType.Descriptor instead.
func (QueryType) EnumDescriptor() ([]byte, []int) {
	return file_github_com_cloudprober_cloudprober_probes_dns_proto_config_proto_rawDescGZIP(), []int{0}
}

// DNS query classes https://datatracker.ietf.org/doc/html/rfc1035#section-3.2.4
type QueryClass int32

const (
	QueryClass_IN QueryClass = 1
	QueryClass_CH QueryClass = 3
)

// Enum value maps for QueryClass.
var (
	QueryClass_name = map[int32]string{
		1: "IN",
		3: "CH",
	}
	QueryClass_value = map[string]int32{
		"IN": 1,
		"CH": 3,
	}
)

func (x QueryClass) Enum() *QueryClass {
	p := new(QueryClass)
	*p = x
	return p
}

func (x QueryClass) String() string {
	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}

func (QueryClass) Descriptor() protoreflect.EnumDescriptor {
	return file_github_com_cloudprober_cloudprober_probes_dns_proto_config_proto_enumTypes[1].Descriptor()
}

func (QueryClass) Type() protoreflect.EnumType {
	return &file_github_com_cloudprober_cloudprober_probes_dns_proto_config_proto_enumTypes[1]
}

func (x QueryClass) Number() protoreflect.EnumNumber {
	return protoreflect.EnumNumber(x)
}

// Deprecated: Do not use.
func (x *QueryClass) UnmarshalJSON(b []byte) error {
	num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)
	if err != nil {
		return err
	}
	*x = QueryClass(num)
	return nil
}

// Deprecated: Use QueryClass.Descriptor instead.
func (QueryClass) EnumDescriptor() ([]byte, []int) {
	return file_github_com_cloudprober_cloudprober_probes_dns_proto_config_proto_rawDescGZIP(), []int{1}
}

type DNSProto int32

const (
	DNSProto_UDP     DNSProto = 0
	DNSProto_TCP     DNSProto = 1
	DNSProto_TCP_TLS DNSProto = 2
)

// Enum value maps for DNSProto.
var (
	DNSProto_name = map[int32]string{
		0: "UDP",
		1: "TCP",
		2: "TCP_TLS",
	}
	DNSProto_value = map[string]int32{
		"UDP":     0,
		"TCP":     1,
		"TCP_TLS": 2,
	}
)

func (x DNSProto) Enum() *DNSProto {
	p := new(DNSProto)
	*p = x
	return p
}

func (x DNSProto) String() string {
	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}

func (DNSProto) Descriptor() protoreflect.EnumDescriptor {
	return file_github_com_cloudprober_cloudprober_probes_dns_proto_config_proto_enumTypes[2].Descriptor()
}

func (DNSProto) Type() protoreflect.EnumType {
	return &file_github_com_cloudprober_cloudprober_probes_dns_proto_config_proto_enumTypes[2]
}

func (x DNSProto) Number() protoreflect.EnumNumber {
	return protoreflect.EnumNumber(x)
}

// Deprecated: Do not use.
func (x *DNSProto) UnmarshalJSON(b []byte) error {
	num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)
	if err != nil {
		return err
	}
	*x = DNSProto(num)
	return nil
}

// Deprecated: Use DNSProto.Descriptor instead.
func (DNSProto) EnumDescriptor() ([]byte, []int) {
	return file_github_com_cloudprober_cloudprober_probes_dns_proto_config_proto_rawDescGZIP(), []int{2}
}

type ProbeConf struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Domain to use when making DNS queries
	ResolvedDomain *string `protobuf:"bytes,1,opt,name=resolved_domain,json=resolvedDomain,def=www.google.com." json:"resolved_domain,omitempty"`
	// DNS Query Type
	QueryType *QueryType `protobuf:"varint,3,opt,name=query_type,json=queryType,enum=cloudprober.probes.dns.QueryType,def=15" json:"query_type,omitempty"`
	// Minimum number of answers expected. Default behavior is to return success
	// if DNS response status is NOERROR.
	MinAnswers *uint32 `protobuf:"varint,4,opt,name=min_answers,json=minAnswers,def=0" json:"min_answers,omitempty"`
	// Whether to resolve the target (target is DNS server here) before making
	// the request. If set to false, we hand over the target directly to the DNS
	// client. Otherwise, we resolve the target first to an IP address.  By
	// default we resolve first if it's a discovered resource, e.g., a k8s
	// endpoint.
	ResolveFirst *bool `protobuf:"varint,5,opt,name=resolve_first,json=resolveFirst" json:"resolve_first,omitempty"`
	// DNS Query QueryClass
	QueryClass *QueryClass `protobuf:"varint,96,opt,name=query_class,json=queryClass,enum=cloudprober.probes.dns.QueryClass,def=1" json:"query_class,omitempty"`
	// Which DNS protocol is used for resolution.
	DnsProto *DNSProto `protobuf:"varint,97,opt,name=dns_proto,json=dnsProto,enum=cloudprober.probes.dns.DNSProto,def=0" json:"dns_proto,omitempty"`
	// Requests per probe.
	// Number of DNS requests per probe. Requests are executed concurrently and
	// each DNS request contributes to probe results. For example, if you run two
	// requests per probe, "total" counter will be incremented by 2.
	RequestsPerProbe *int32 `protobuf:"varint,98,opt,name=requests_per_probe,json=requestsPerProbe,def=1" json:"requests_per_probe,omitempty"`
	// How long to wait between two requests to the same target. Only relevant
	// if requests_per_probe is also configured.
	//
	// This value should be less than (interval - timeout) / requests_per_probe.
	// This is to ensure that all requests are executed within one probe interval
	// and all of them get sufficient time. For example, if probe interval is 2s,
	// timeout is 1s, and requests_per_probe is 10,  requests_interval_msec
	// should be less than 10ms.
	RequestsIntervalMsec *int32 `protobuf:"varint,99,opt,name=requests_interval_msec,json=requestsIntervalMsec,def=0" json:"requests_interval_msec,omitempty"`
	unknownFields        protoimpl.UnknownFields
	sizeCache            protoimpl.SizeCache
}

// Default values for ProbeConf fields.
const (
	Default_ProbeConf_ResolvedDomain       = string("www.google.com.")
	Default_ProbeConf_QueryType            = QueryType_MX
	Default_ProbeConf_MinAnswers           = uint32(0)
	Default_ProbeConf_QueryClass           = QueryClass_IN
	Default_ProbeConf_DnsProto             = DNSProto_UDP
	Default_ProbeConf_RequestsPerProbe     = int32(1)
	Default_ProbeConf_RequestsIntervalMsec = int32(0)
)

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

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

func (*ProbeConf) ProtoMessage() {}

func (x *ProbeConf) ProtoReflect() protoreflect.Message {
	mi := &file_github_com_cloudprober_cloudprober_probes_dns_proto_config_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 ProbeConf.ProtoReflect.Descriptor instead.
func (*ProbeConf) Descriptor() ([]byte, []int) {
	return file_github_com_cloudprober_cloudprober_probes_dns_proto_config_proto_rawDescGZIP(), []int{0}
}

func (x *ProbeConf) GetResolvedDomain() string {
	if x != nil && x.ResolvedDomain != nil {
		return *x.ResolvedDomain
	}
	return Default_ProbeConf_ResolvedDomain
}

func (x *ProbeConf) GetQueryType() QueryType {
	if x != nil && x.QueryType != nil {
		return *x.QueryType
	}
	return Default_ProbeConf_QueryType
}

func (x *ProbeConf) GetMinAnswers() uint32 {
	if x != nil && x.MinAnswers != nil {
		return *x.MinAnswers
	}
	return Default_ProbeConf_MinAnswers
}

func (x *ProbeConf) GetResolveFirst() bool {
	if x != nil && x.ResolveFirst != nil {
		return *x.ResolveFirst
	}
	return false
}

func (x *ProbeConf) GetQueryClass() QueryClass {
	if x != nil && x.QueryClass != nil {
		return *x.QueryClass
	}
	return Default_ProbeConf_QueryClass
}

func (x *ProbeConf) GetDnsProto() DNSProto {
	if x != nil && x.DnsProto != nil {
		return *x.DnsProto
	}
	return Default_ProbeConf_DnsProto
}

func (x *ProbeConf) GetRequestsPerProbe() int32 {
	if x != nil && x.RequestsPerProbe != nil {
		return *x.RequestsPerProbe
	}
	return Default_ProbeConf_RequestsPerProbe
}

func (x *ProbeConf) GetRequestsIntervalMsec() int32 {
	if x != nil && x.RequestsIntervalMsec != nil {
		return *x.RequestsIntervalMsec
	}
	return Default_ProbeConf_RequestsIntervalMsec
}

var File_github_com_cloudprober_cloudprober_probes_dns_proto_config_proto protoreflect.FileDescriptor

const file_github_com_cloudprober_cloudprober_probes_dns_proto_config_proto_rawDesc = "" +
	"\n" +
	"@github.com/cloudprober/cloudprober/probes/dns/proto/config.proto\x12\x16cloudprober.probes.dns\"\xcb\x03\n" +
	"\tProbeConf\x128\n" +
	"\x0fresolved_domain\x18\x01 \x01(\t:\x0fwww.google.com.R\x0eresolvedDomain\x12D\n" +
	"\n" +
	"query_type\x18\x03 \x01(\x0e2!.cloudprober.probes.dns.QueryType:\x02MXR\tqueryType\x12\"\n" +
	"\vmin_answers\x18\x04 \x01(\r:\x010R\n" +
	"minAnswers\x12#\n" +
	"\rresolve_first\x18\x05 \x01(\bR\fresolveFirst\x12G\n" +
	"\vquery_class\x18` \x01(\x0e2\".cloudprober.probes.dns.QueryClass:\x02INR\n" +
	"queryClass\x12B\n" +
	"\tdns_proto\x18a \x01(\x0e2 .cloudprober.probes.dns.DNSProto:\x03UDPR\bdnsProto\x12/\n" +
	"\x12requests_per_probe\x18b \x01(\x05:\x011R\x10requestsPerProbe\x127\n" +
	"\x16requests_interval_msec\x18c \x01(\x05:\x010R\x14requestsIntervalMsec*\xa4\x03\n" +
	"\tQueryType\x12\b\n" +
	"\x04NONE\x10\x00\x12\x05\n" +
	"\x01A\x10\x01\x12\x06\n" +
	"\x02NS\x10\x02\x12\t\n" +
	"\x05CNAME\x10\x05\x12\a\n" +
	"\x03SOA\x10\x06\x12\a\n" +
	"\x03PTR\x10\f\x12\x06\n" +
	"\x02MX\x10\x0f\x12\a\n" +
	"\x03TXT\x10\x10\x12\x06\n" +
	"\x02RP\x10\x11\x12\t\n" +
	"\x05AFSDB\x10\x12\x12\a\n" +
	"\x03SIG\x10\x18\x12\a\n" +
	"\x03KEY\x10\x19\x12\b\n" +
	"\x04AAAA\x10\x1c\x12\a\n" +
	"\x03LOC\x10\x1d\x12\a\n" +
	"\x03SRV\x10!\x12\t\n" +
	"\x05NAPTR\x10#\x12\x06\n" +
	"\x02KX\x10$\x12\b\n" +
	"\x04CERT\x10%\x12\t\n" +
	"\x05DNAME\x10'\x12\a\n" +
	"\x03APL\x10*\x12\x06\n" +
	"\x02DS\x10+\x12\t\n" +
	"\x05SSHFP\x10,\x12\f\n" +
	"\bIPSECKEY\x10-\x12\t\n" +
	"\x05RRSIG\x10.\x12\b\n" +
	"\x04NSEC\x10/\x12\n" +
	"\n" +
	"\x06DNSKEY\x100\x12\t\n" +
	"\x05DHCID\x101\x12\t\n" +
	"\x05NSEC3\x102\x12\x0e\n" +
	"\n" +
	"NSEC3PARAM\x103\x12\b\n" +
	"\x04TLSA\x104\x12\a\n" +
	"\x03HIP\x107\x12\a\n" +
	"\x03CDS\x10;\x12\v\n" +
	"\aCDNSKEY\x10<\x12\x0e\n" +
	"\n" +
	"OPENPGPKEY\x10=\x12\t\n" +
	"\x04TKEY\x10\xf9\x01\x12\t\n" +
	"\x04TSIG\x10\xfa\x01\x12\b\n" +
	"\x03URI\x10\x80\x02\x12\b\n" +
	"\x03CAA\x10\x81\x02\x12\b\n" +
	"\x02TA\x10\x80\x80\x02\x12\t\n" +
	"\x03DLV\x10\x81\x80\x02*\x1c\n" +
	"\n" +
	"QueryClass\x12\x06\n" +
	"\x02IN\x10\x01\x12\x06\n" +
	"\x02CH\x10\x03*)\n" +
	"\bDNSProto\x12\a\n" +
	"\x03UDP\x10\x00\x12\a\n" +
	"\x03TCP\x10\x01\x12\v\n" +
	"\aTCP_TLS\x10\x02B5Z3github.com/cloudprober/cloudprober/probes/dns/proto"

var (
	file_github_com_cloudprober_cloudprober_probes_dns_proto_config_proto_rawDescOnce sync.Once
	file_github_com_cloudprober_cloudprober_probes_dns_proto_config_proto_rawDescData []byte
)

func file_github_com_cloudprober_cloudprober_probes_dns_proto_config_proto_rawDescGZIP() []byte {
	file_github_com_cloudprober_cloudprober_probes_dns_proto_config_proto_rawDescOnce.Do(func() {
		file_github_com_cloudprober_cloudprober_probes_dns_proto_config_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_github_com_cloudprober_cloudprober_probes_dns_proto_config_proto_rawDesc), len(file_github_com_cloudprober_cloudprober_probes_dns_proto_config_proto_rawDesc)))
	})
	return file_github_com_cloudprober_cloudprober_probes_dns_proto_config_proto_rawDescData
}

var file_github_com_cloudprober_cloudprober_probes_dns_proto_config_proto_enumTypes = make([]protoimpl.EnumInfo, 3)
var file_github_com_cloudprober_cloudprober_probes_dns_proto_config_proto_msgTypes = make([]protoimpl.MessageInfo, 1)
var file_github_com_cloudprober_cloudprober_probes_dns_proto_config_proto_goTypes = []any{
	(QueryType)(0),    // 0: cloudprober.probes.dns.QueryType
	(QueryClass)(0),   // 1: cloudprober.probes.dns.QueryClass
	(DNSProto)(0),     // 2: cloudprober.probes.dns.DNSProto
	(*ProbeConf)(nil), // 3: cloudprober.probes.dns.ProbeConf
}
var file_github_com_cloudprober_cloudprober_probes_dns_proto_config_proto_depIdxs = []int32{
	0, // 0: cloudprober.probes.dns.ProbeConf.query_type:type_name -> cloudprober.probes.dns.QueryType
	1, // 1: cloudprober.probes.dns.ProbeConf.query_class:type_name -> cloudprober.probes.dns.QueryClass
	2, // 2: cloudprober.probes.dns.ProbeConf.dns_proto:type_name -> cloudprober.probes.dns.DNSProto
	3, // [3:3] is the sub-list for method output_type
	3, // [3:3] is the sub-list for method input_type
	3, // [3:3] is the sub-list for extension type_name
	3, // [3:3] is the sub-list for extension extendee
	0, // [0:3] is the sub-list for field type_name
}

func init() { file_github_com_cloudprober_cloudprober_probes_dns_proto_config_proto_init() }
func file_github_com_cloudprober_cloudprober_probes_dns_proto_config_proto_init() {
	if File_github_com_cloudprober_cloudprober_probes_dns_proto_config_proto != nil {
		return
	}
	type x struct{}
	out := protoimpl.TypeBuilder{
		File: protoimpl.DescBuilder{
			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
			RawDescriptor: unsafe.Slice(unsafe.StringData(file_github_com_cloudprober_cloudprober_probes_dns_proto_config_proto_rawDesc), len(file_github_com_cloudprober_cloudprober_probes_dns_proto_config_proto_rawDesc)),
			NumEnums:      3,
			NumMessages:   1,
			NumExtensions: 0,
			NumServices:   0,
		},
		GoTypes:           file_github_com_cloudprober_cloudprober_probes_dns_proto_config_proto_goTypes,
		DependencyIndexes: file_github_com_cloudprober_cloudprober_probes_dns_proto_config_proto_depIdxs,
		EnumInfos:         file_github_com_cloudprober_cloudprober_probes_dns_proto_config_proto_enumTypes,
		MessageInfos:      file_github_com_cloudprober_cloudprober_probes_dns_proto_config_proto_msgTypes,
	}.Build()
	File_github_com_cloudprober_cloudprober_probes_dns_proto_config_proto = out.File
	file_github_com_cloudprober_cloudprober_probes_dns_proto_config_proto_goTypes = nil
	file_github_com_cloudprober_cloudprober_probes_dns_proto_config_proto_depIdxs = nil
}
