// Configuration proto for GCE targets.

// 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/targets/gce/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)
)

type Instances_NetworkInterface_IPType int32

const (
	// Private IP address.
	Instances_NetworkInterface_PRIVATE Instances_NetworkInterface_IPType = 0
	// IP address of the first access config.
	Instances_NetworkInterface_PUBLIC Instances_NetworkInterface_IPType = 1
	// First IP address from the first Alias IP range. For example, for
	// alias IP range "192.168.12.0/24", 192.168.12.0 will be returned.
	Instances_NetworkInterface_ALIAS Instances_NetworkInterface_IPType = 2
)

// Enum value maps for Instances_NetworkInterface_IPType.
var (
	Instances_NetworkInterface_IPType_name = map[int32]string{
		0: "PRIVATE",
		1: "PUBLIC",
		2: "ALIAS",
	}
	Instances_NetworkInterface_IPType_value = map[string]int32{
		"PRIVATE": 0,
		"PUBLIC":  1,
		"ALIAS":   2,
	}
)

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

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

func (Instances_NetworkInterface_IPType) Descriptor() protoreflect.EnumDescriptor {
	return file_github_com_cloudprober_cloudprober_targets_gce_proto_config_proto_enumTypes[0].Descriptor()
}

func (Instances_NetworkInterface_IPType) Type() protoreflect.EnumType {
	return &file_github_com_cloudprober_cloudprober_targets_gce_proto_config_proto_enumTypes[0]
}

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

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

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

// TargetsConf represents GCE targets, e.g. instances, forwarding rules etc.
type TargetsConf struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// If running on GCE, this defaults to the local project.
	// Note: Multiple projects support in targets is experimental and may go away
	// with future iterations.
	Project []string `protobuf:"bytes,1,rep,name=project" json:"project,omitempty"`
	// Types that are valid to be assigned to Type:
	//
	//	*TargetsConf_Instances
	//	*TargetsConf_ForwardingRules
	Type          isTargetsConf_Type `protobuf_oneof:"type"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*TargetsConf) ProtoMessage() {}

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

func (x *TargetsConf) GetProject() []string {
	if x != nil {
		return x.Project
	}
	return nil
}

func (x *TargetsConf) GetType() isTargetsConf_Type {
	if x != nil {
		return x.Type
	}
	return nil
}

func (x *TargetsConf) GetInstances() *Instances {
	if x != nil {
		if x, ok := x.Type.(*TargetsConf_Instances); ok {
			return x.Instances
		}
	}
	return nil
}

func (x *TargetsConf) GetForwardingRules() *ForwardingRules {
	if x != nil {
		if x, ok := x.Type.(*TargetsConf_ForwardingRules); ok {
			return x.ForwardingRules
		}
	}
	return nil
}

type isTargetsConf_Type interface {
	isTargetsConf_Type()
}

type TargetsConf_Instances struct {
	Instances *Instances `protobuf:"bytes,2,opt,name=instances,oneof"`
}

type TargetsConf_ForwardingRules struct {
	ForwardingRules *ForwardingRules `protobuf:"bytes,3,opt,name=forwarding_rules,json=forwardingRules,oneof"`
}

func (*TargetsConf_Instances) isTargetsConf_Type() {}

func (*TargetsConf_ForwardingRules) isTargetsConf_Type() {}

// Represents GCE instances
type Instances struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Use DNS to resolve target names (instances). If set to false (default),
	// IP addresses specified in the compute.Instance resource is used. If set
	// to true all the other resolving options are ignored.
	UseDnsToResolve  *bool                       `protobuf:"varint,1,opt,name=use_dns_to_resolve,json=useDnsToResolve,def=0" json:"use_dns_to_resolve,omitempty"`
	NetworkInterface *Instances_NetworkInterface `protobuf:"bytes,2,opt,name=network_interface,json=networkInterface" json:"network_interface,omitempty"`
	// Labels to filter instances by ("key:value-regex" format).
	Label         []string `protobuf:"bytes,3,rep,name=label" json:"label,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

// Default values for Instances fields.
const (
	Default_Instances_UseDnsToResolve = bool(false)
)

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

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

func (*Instances) ProtoMessage() {}

func (x *Instances) ProtoReflect() protoreflect.Message {
	mi := &file_github_com_cloudprober_cloudprober_targets_gce_proto_config_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 Instances.ProtoReflect.Descriptor instead.
func (*Instances) Descriptor() ([]byte, []int) {
	return file_github_com_cloudprober_cloudprober_targets_gce_proto_config_proto_rawDescGZIP(), []int{1}
}

func (x *Instances) GetUseDnsToResolve() bool {
	if x != nil && x.UseDnsToResolve != nil {
		return *x.UseDnsToResolve
	}
	return Default_Instances_UseDnsToResolve
}

func (x *Instances) GetNetworkInterface() *Instances_NetworkInterface {
	if x != nil {
		return x.NetworkInterface
	}
	return nil
}

func (x *Instances) GetLabel() []string {
	if x != nil {
		return x.Label
	}
	return nil
}

// Represents GCE forwarding rules. Does not support multiple projects
type ForwardingRules struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Important: if multiple probes use forwarding_rules targets, only the
	// settings in the definition will take effect.
	// TODO(manugarg): Fix this behavior.
	//
	// For regional forwarding rules, regions to return forwarding rules for.
	// Default is to return forwarding rules from the region that the VM is
	// running in. To return forwarding rules from all regions, specify region as
	// "all".
	Region []string `protobuf:"bytes,1,rep,name=region" json:"region,omitempty"`
	// For global forwarding rules, if it is set to true,  it will ignore
	// the value for the above region property.
	GlobalRule    *bool `protobuf:"varint,2,opt,name=global_rule,json=globalRule,def=0" json:"global_rule,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

// Default values for ForwardingRules fields.
const (
	Default_ForwardingRules_GlobalRule = bool(false)
)

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

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

func (*ForwardingRules) ProtoMessage() {}

func (x *ForwardingRules) ProtoReflect() protoreflect.Message {
	mi := &file_github_com_cloudprober_cloudprober_targets_gce_proto_config_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 ForwardingRules.ProtoReflect.Descriptor instead.
func (*ForwardingRules) Descriptor() ([]byte, []int) {
	return file_github_com_cloudprober_cloudprober_targets_gce_proto_config_proto_rawDescGZIP(), []int{2}
}

func (x *ForwardingRules) GetRegion() []string {
	if x != nil {
		return x.Region
	}
	return nil
}

func (x *ForwardingRules) GetGlobalRule() bool {
	if x != nil && x.GlobalRule != nil {
		return *x.GlobalRule
	}
	return Default_ForwardingRules_GlobalRule
}

// Global GCE targets options. These options are independent of the per-probe
// targets which are defined by the "GCETargets" type above.
type GlobalOptions struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// How often targets should be evaluated/expanded
	ReEvalSec *int32 `protobuf:"varint,1,opt,name=re_eval_sec,json=reEvalSec,def=900" json:"re_eval_sec,omitempty"` // default 15 min
	// Compute API version.
	ApiVersion    *string `protobuf:"bytes,2,opt,name=api_version,json=apiVersion,def=v1" json:"api_version,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

// Default values for GlobalOptions fields.
const (
	Default_GlobalOptions_ReEvalSec  = int32(900)
	Default_GlobalOptions_ApiVersion = string("v1")
)

func (x *GlobalOptions) Reset() {
	*x = GlobalOptions{}
	mi := &file_github_com_cloudprober_cloudprober_targets_gce_proto_config_proto_msgTypes[3]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*GlobalOptions) ProtoMessage() {}

func (x *GlobalOptions) ProtoReflect() protoreflect.Message {
	mi := &file_github_com_cloudprober_cloudprober_targets_gce_proto_config_proto_msgTypes[3]
	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 GlobalOptions.ProtoReflect.Descriptor instead.
func (*GlobalOptions) Descriptor() ([]byte, []int) {
	return file_github_com_cloudprober_cloudprober_targets_gce_proto_config_proto_rawDescGZIP(), []int{3}
}

func (x *GlobalOptions) GetReEvalSec() int32 {
	if x != nil && x.ReEvalSec != nil {
		return *x.ReEvalSec
	}
	return Default_GlobalOptions_ReEvalSec
}

func (x *GlobalOptions) GetApiVersion() string {
	if x != nil && x.ApiVersion != nil {
		return *x.ApiVersion
	}
	return Default_GlobalOptions_ApiVersion
}

// Get the IP address from Network Interface
type Instances_NetworkInterface struct {
	state         protoimpl.MessageState             `protogen:"open.v1"`
	Index         *int32                             `protobuf:"varint,1,opt,name=index,def=0" json:"index,omitempty"`
	IpType        *Instances_NetworkInterface_IPType `protobuf:"varint,2,opt,name=ip_type,json=ipType,enum=cloudprober.targets.gce.Instances_NetworkInterface_IPType,def=0" json:"ip_type,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

// Default values for Instances_NetworkInterface fields.
const (
	Default_Instances_NetworkInterface_Index  = int32(0)
	Default_Instances_NetworkInterface_IpType = Instances_NetworkInterface_PRIVATE
)

func (x *Instances_NetworkInterface) Reset() {
	*x = Instances_NetworkInterface{}
	mi := &file_github_com_cloudprober_cloudprober_targets_gce_proto_config_proto_msgTypes[4]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*Instances_NetworkInterface) ProtoMessage() {}

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

func (x *Instances_NetworkInterface) GetIndex() int32 {
	if x != nil && x.Index != nil {
		return *x.Index
	}
	return Default_Instances_NetworkInterface_Index
}

func (x *Instances_NetworkInterface) GetIpType() Instances_NetworkInterface_IPType {
	if x != nil && x.IpType != nil {
		return *x.IpType
	}
	return Default_Instances_NetworkInterface_IpType
}

var File_github_com_cloudprober_cloudprober_targets_gce_proto_config_proto protoreflect.FileDescriptor

const file_github_com_cloudprober_cloudprober_targets_gce_proto_config_proto_rawDesc = "" +
	"\n" +
	"Agithub.com/cloudprober/cloudprober/targets/gce/proto/config.proto\x12\x17cloudprober.targets.gce\"\xca\x01\n" +
	"\vTargetsConf\x12\x18\n" +
	"\aproject\x18\x01 \x03(\tR\aproject\x12B\n" +
	"\tinstances\x18\x02 \x01(\v2\".cloudprober.targets.gce.InstancesH\x00R\tinstances\x12U\n" +
	"\x10forwarding_rules\x18\x03 \x01(\v2(.cloudprober.targets.gce.ForwardingRulesH\x00R\x0fforwardingRulesB\x06\n" +
	"\x04type\"\xf1\x02\n" +
	"\tInstances\x122\n" +
	"\x12use_dns_to_resolve\x18\x01 \x01(\b:\x05falseR\x0fuseDnsToResolve\x12`\n" +
	"\x11network_interface\x18\x02 \x01(\v23.cloudprober.targets.gce.Instances.NetworkInterfaceR\x10networkInterface\x12\x14\n" +
	"\x05label\x18\x03 \x03(\tR\x05label\x1a\xb7\x01\n" +
	"\x10NetworkInterface\x12\x17\n" +
	"\x05index\x18\x01 \x01(\x05:\x010R\x05index\x12\\\n" +
	"\aip_type\x18\x02 \x01(\x0e2:.cloudprober.targets.gce.Instances.NetworkInterface.IPType:\aPRIVATER\x06ipType\",\n" +
	"\x06IPType\x12\v\n" +
	"\aPRIVATE\x10\x00\x12\n" +
	"\n" +
	"\x06PUBLIC\x10\x01\x12\t\n" +
	"\x05ALIAS\x10\x02\"Q\n" +
	"\x0fForwardingRules\x12\x16\n" +
	"\x06region\x18\x01 \x03(\tR\x06region\x12&\n" +
	"\vglobal_rule\x18\x02 \x01(\b:\x05falseR\n" +
	"globalRule\"Y\n" +
	"\rGlobalOptions\x12#\n" +
	"\vre_eval_sec\x18\x01 \x01(\x05:\x03900R\treEvalSec\x12#\n" +
	"\vapi_version\x18\x02 \x01(\t:\x02v1R\n" +
	"apiVersionB6Z4github.com/cloudprober/cloudprober/targets/gce/proto"

var (
	file_github_com_cloudprober_cloudprober_targets_gce_proto_config_proto_rawDescOnce sync.Once
	file_github_com_cloudprober_cloudprober_targets_gce_proto_config_proto_rawDescData []byte
)

func file_github_com_cloudprober_cloudprober_targets_gce_proto_config_proto_rawDescGZIP() []byte {
	file_github_com_cloudprober_cloudprober_targets_gce_proto_config_proto_rawDescOnce.Do(func() {
		file_github_com_cloudprober_cloudprober_targets_gce_proto_config_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_github_com_cloudprober_cloudprober_targets_gce_proto_config_proto_rawDesc), len(file_github_com_cloudprober_cloudprober_targets_gce_proto_config_proto_rawDesc)))
	})
	return file_github_com_cloudprober_cloudprober_targets_gce_proto_config_proto_rawDescData
}

var file_github_com_cloudprober_cloudprober_targets_gce_proto_config_proto_enumTypes = make([]protoimpl.EnumInfo, 1)
var file_github_com_cloudprober_cloudprober_targets_gce_proto_config_proto_msgTypes = make([]protoimpl.MessageInfo, 5)
var file_github_com_cloudprober_cloudprober_targets_gce_proto_config_proto_goTypes = []any{
	(Instances_NetworkInterface_IPType)(0), // 0: cloudprober.targets.gce.Instances.NetworkInterface.IPType
	(*TargetsConf)(nil),                    // 1: cloudprober.targets.gce.TargetsConf
	(*Instances)(nil),                      // 2: cloudprober.targets.gce.Instances
	(*ForwardingRules)(nil),                // 3: cloudprober.targets.gce.ForwardingRules
	(*GlobalOptions)(nil),                  // 4: cloudprober.targets.gce.GlobalOptions
	(*Instances_NetworkInterface)(nil),     // 5: cloudprober.targets.gce.Instances.NetworkInterface
}
var file_github_com_cloudprober_cloudprober_targets_gce_proto_config_proto_depIdxs = []int32{
	2, // 0: cloudprober.targets.gce.TargetsConf.instances:type_name -> cloudprober.targets.gce.Instances
	3, // 1: cloudprober.targets.gce.TargetsConf.forwarding_rules:type_name -> cloudprober.targets.gce.ForwardingRules
	5, // 2: cloudprober.targets.gce.Instances.network_interface:type_name -> cloudprober.targets.gce.Instances.NetworkInterface
	0, // 3: cloudprober.targets.gce.Instances.NetworkInterface.ip_type:type_name -> cloudprober.targets.gce.Instances.NetworkInterface.IPType
	4, // [4:4] is the sub-list for method output_type
	4, // [4:4] is the sub-list for method input_type
	4, // [4:4] is the sub-list for extension type_name
	4, // [4:4] is the sub-list for extension extendee
	0, // [0:4] is the sub-list for field type_name
}

func init() { file_github_com_cloudprober_cloudprober_targets_gce_proto_config_proto_init() }
func file_github_com_cloudprober_cloudprober_targets_gce_proto_config_proto_init() {
	if File_github_com_cloudprober_cloudprober_targets_gce_proto_config_proto != nil {
		return
	}
	file_github_com_cloudprober_cloudprober_targets_gce_proto_config_proto_msgTypes[0].OneofWrappers = []any{
		(*TargetsConf_Instances)(nil),
		(*TargetsConf_ForwardingRules)(nil),
	}
	type x struct{}
	out := protoimpl.TypeBuilder{
		File: protoimpl.DescBuilder{
			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
			RawDescriptor: unsafe.Slice(unsafe.StringData(file_github_com_cloudprober_cloudprober_targets_gce_proto_config_proto_rawDesc), len(file_github_com_cloudprober_cloudprober_targets_gce_proto_config_proto_rawDesc)),
			NumEnums:      1,
			NumMessages:   5,
			NumExtensions: 0,
			NumServices:   0,
		},
		GoTypes:           file_github_com_cloudprober_cloudprober_targets_gce_proto_config_proto_goTypes,
		DependencyIndexes: file_github_com_cloudprober_cloudprober_targets_gce_proto_config_proto_depIdxs,
		EnumInfos:         file_github_com_cloudprober_cloudprober_targets_gce_proto_config_proto_enumTypes,
		MessageInfos:      file_github_com_cloudprober_cloudprober_targets_gce_proto_config_proto_msgTypes,
	}.Build()
	File_github_com_cloudprober_cloudprober_targets_gce_proto_config_proto = out.File
	file_github_com_cloudprober_cloudprober_targets_gce_proto_config_proto_goTypes = nil
	file_github_com_cloudprober_cloudprober_targets_gce_proto_config_proto_depIdxs = nil
}
