package proto

import proto "github.com/golang/protobuf/proto"
import fmt "fmt"
import math "math"
import proto2 "github.com/google/cloudprober/metrics/proto"
import proto6 "github.com/google/cloudprober/probes/dns/proto"
import proto7 "github.com/google/cloudprober/probes/external/proto"
import proto5 "github.com/google/cloudprober/probes/http/proto"
import proto4 "github.com/google/cloudprober/probes/ping/proto"
import proto8 "github.com/google/cloudprober/probes/udp/proto"
import proto9 "github.com/google/cloudprober/probes/udplistener/proto"
import proto1 "github.com/google/cloudprober/targets/proto"
import proto3 "github.com/google/cloudprober/validators/proto"

var _ = proto.Marshal
var _ = fmt.Errorf
var _ = math.Inf

const _ = proto.ProtoPackageIsVersion2 

type ProbeDef_Type int32

const (
	ProbeDef_PING         ProbeDef_Type = 0
	ProbeDef_HTTP         ProbeDef_Type = 1
	ProbeDef_DNS          ProbeDef_Type = 2
	ProbeDef_EXTERNAL     ProbeDef_Type = 3
	ProbeDef_UDP          ProbeDef_Type = 4
	ProbeDef_UDP_LISTENER ProbeDef_Type = 5

	ProbeDef_EXTENSION ProbeDef_Type = 98

	ProbeDef_USER_DEFINED ProbeDef_Type = 99
)

var ProbeDef_Type_name = map[int32]string{
	0:  "PING",
	1:  "HTTP",
	2:  "DNS",
	3:  "EXTERNAL",
	4:  "UDP",
	5:  "UDP_LISTENER",
	98: "EXTENSION",
	99: "USER_DEFINED",
}
var ProbeDef_Type_value = map[string]int32{
	"PING":         0,
	"HTTP":         1,
	"DNS":          2,
	"EXTERNAL":     3,
	"UDP":          4,
	"UDP_LISTENER": 5,
	"EXTENSION":    98,
	"USER_DEFINED": 99,
}

func (x ProbeDef_Type) Enum() *ProbeDef_Type {
	p := new(ProbeDef_Type)
	*p = x
	return p
}
func (x ProbeDef_Type) String() string {
	return proto.EnumName(ProbeDef_Type_name, int32(x))
}
func (x *ProbeDef_Type) UnmarshalJSON(data []byte) error {
	value, err := proto.UnmarshalJSONEnum(ProbeDef_Type_value, data, "ProbeDef_Type")
	if err != nil {
		return err
	}
	*x = ProbeDef_Type(value)
	return nil
}
func (ProbeDef_Type) EnumDescriptor() ([]byte, []int) {
	return fileDescriptor_config_bc7e7fdd60af597a, []int{0, 0}
}

type ProbeDef struct {
	Name *string        `protobuf:"bytes,1,req,name=name" json:"name,omitempty"`
	Type *ProbeDef_Type `protobuf:"varint,2,req,name=type,enum=cloudprober.probes.ProbeDef_Type" json:"type,omitempty"`

	RunOn *string `protobuf:"bytes,3,opt,name=run_on,json=runOn" json:"run_on,omitempty"`

	IntervalMsec *int32 `protobuf:"varint,4,opt,name=interval_msec,json=intervalMsec,def=2000" json:"interval_msec,omitempty"`

	TimeoutMsec *int32 `protobuf:"varint,5,opt,name=timeout_msec,json=timeoutMsec,def=1000" json:"timeout_msec,omitempty"`

	Targets *proto1.TargetsDef `protobuf:"bytes,6,req,name=targets" json:"targets,omitempty"`

	LatencyDistribution *proto2.Dist `protobuf:"bytes,7,opt,name=latency_distribution,json=latencyDistribution" json:"latency_distribution,omitempty"`

	LatencyUnit *string `protobuf:"bytes,8,opt,name=latency_unit,json=latencyUnit,def=us" json:"latency_unit,omitempty"`

	Validator []*proto3.Validator `protobuf:"bytes,9,rep,name=validator" json:"validator,omitempty"`

	SourceIpConfig isProbeDef_SourceIpConfig `protobuf_oneof:"source_ip_config"`

	Probe                        isProbeDef_Probe `protobuf_oneof:"probe"`
	DebugOptions                 *DebugOptions    `protobuf:"bytes,100,opt,name=debug_options,json=debugOptions" json:"debug_options,omitempty"`
	XXX_NoUnkeyedLiteral         struct{}         `json:"-"`
	proto.XXX_InternalExtensions `json:"-"`
	XXX_unrecognized             []byte `json:"-"`
	XXX_sizecache                int32  `json:"-"`
}

func (m *ProbeDef) Reset()         { *m = ProbeDef{} }
func (m *ProbeDef) String() string { return proto.CompactTextString(m) }
func (*ProbeDef) ProtoMessage()    {}
func (*ProbeDef) Descriptor() ([]byte, []int) {
	return fileDescriptor_config_bc7e7fdd60af597a, []int{0}
}

var extRange_ProbeDef = []proto.ExtensionRange{
	{Start: 200, End: 536870911},
}

func (*ProbeDef) ExtensionRangeArray() []proto.ExtensionRange {
	return extRange_ProbeDef
}
func (m *ProbeDef) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_ProbeDef.Unmarshal(m, b)
}
func (m *ProbeDef) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_ProbeDef.Marshal(b, m, deterministic)
}
func (dst *ProbeDef) XXX_Merge(src proto.Message) {
	xxx_messageInfo_ProbeDef.Merge(dst, src)
}
func (m *ProbeDef) XXX_Size() int {
	return xxx_messageInfo_ProbeDef.Size(m)
}
func (m *ProbeDef) XXX_DiscardUnknown() {
	xxx_messageInfo_ProbeDef.DiscardUnknown(m)
}

var xxx_messageInfo_ProbeDef proto.InternalMessageInfo

const Default_ProbeDef_IntervalMsec int32 = 2000
const Default_ProbeDef_TimeoutMsec int32 = 1000
const Default_ProbeDef_LatencyUnit string = "us"

func (m *ProbeDef) GetName() string {
	if m != nil && m.Name != nil {
		return *m.Name
	}
	return ""
}

func (m *ProbeDef) GetType() ProbeDef_Type {
	if m != nil && m.Type != nil {
		return *m.Type
	}
	return ProbeDef_PING
}

func (m *ProbeDef) GetRunOn() string {
	if m != nil && m.RunOn != nil {
		return *m.RunOn
	}
	return ""
}

func (m *ProbeDef) GetIntervalMsec() int32 {
	if m != nil && m.IntervalMsec != nil {
		return *m.IntervalMsec
	}
	return Default_ProbeDef_IntervalMsec
}

func (m *ProbeDef) GetTimeoutMsec() int32 {
	if m != nil && m.TimeoutMsec != nil {
		return *m.TimeoutMsec
	}
	return Default_ProbeDef_TimeoutMsec
}

func (m *ProbeDef) GetTargets() *proto1.TargetsDef {
	if m != nil {
		return m.Targets
	}
	return nil
}

func (m *ProbeDef) GetLatencyDistribution() *proto2.Dist {
	if m != nil {
		return m.LatencyDistribution
	}
	return nil
}

func (m *ProbeDef) GetLatencyUnit() string {
	if m != nil && m.LatencyUnit != nil {
		return *m.LatencyUnit
	}
	return Default_ProbeDef_LatencyUnit
}

func (m *ProbeDef) GetValidator() []*proto3.Validator {
	if m != nil {
		return m.Validator
	}
	return nil
}

type isProbeDef_SourceIpConfig interface {
	isProbeDef_SourceIpConfig()
}

type ProbeDef_SourceIp struct {
	SourceIp string `protobuf:"bytes,10,opt,name=source_ip,json=sourceIp,oneof"`
}

type ProbeDef_SourceInterface struct {
	SourceInterface string `protobuf:"bytes,11,opt,name=source_interface,json=sourceInterface,oneof"`
}

func (*ProbeDef_SourceIp) isProbeDef_SourceIpConfig() {}

func (*ProbeDef_SourceInterface) isProbeDef_SourceIpConfig() {}

func (m *ProbeDef) GetSourceIpConfig() isProbeDef_SourceIpConfig {
	if m != nil {
		return m.SourceIpConfig
	}
	return nil
}

func (m *ProbeDef) GetSourceIp() string {
	if x, ok := m.GetSourceIpConfig().(*ProbeDef_SourceIp); ok {
		return x.SourceIp
	}
	return ""
}

func (m *ProbeDef) GetSourceInterface() string {
	if x, ok := m.GetSourceIpConfig().(*ProbeDef_SourceInterface); ok {
		return x.SourceInterface
	}
	return ""
}

type isProbeDef_Probe interface {
	isProbeDef_Probe()
}

type ProbeDef_PingProbe struct {
	PingProbe *proto4.ProbeConf `protobuf:"bytes,20,opt,name=ping_probe,json=pingProbe,oneof"`
}

type ProbeDef_HttpProbe struct {
	HttpProbe *proto5.ProbeConf `protobuf:"bytes,21,opt,name=http_probe,json=httpProbe,oneof"`
}

type ProbeDef_DnsProbe struct {
	DnsProbe *proto6.ProbeConf `protobuf:"bytes,22,opt,name=dns_probe,json=dnsProbe,oneof"`
}

type ProbeDef_ExternalProbe struct {
	ExternalProbe *proto7.ProbeConf `protobuf:"bytes,23,opt,name=external_probe,json=externalProbe,oneof"`
}

type ProbeDef_UdpProbe struct {
	UdpProbe *proto8.ProbeConf `protobuf:"bytes,24,opt,name=udp_probe,json=udpProbe,oneof"`
}

type ProbeDef_UdpListenerProbe struct {
	UdpListenerProbe *proto9.ProbeConf `protobuf:"bytes,25,opt,name=udp_listener_probe,json=udpListenerProbe,oneof"`
}

type ProbeDef_UserDefinedProbe struct {
	UserDefinedProbe string `protobuf:"bytes,99,opt,name=user_defined_probe,json=userDefinedProbe,oneof"`
}

func (*ProbeDef_PingProbe) isProbeDef_Probe() {}

func (*ProbeDef_HttpProbe) isProbeDef_Probe() {}

func (*ProbeDef_DnsProbe) isProbeDef_Probe() {}

func (*ProbeDef_ExternalProbe) isProbeDef_Probe() {}

func (*ProbeDef_UdpProbe) isProbeDef_Probe() {}

func (*ProbeDef_UdpListenerProbe) isProbeDef_Probe() {}

func (*ProbeDef_UserDefinedProbe) isProbeDef_Probe() {}

func (m *ProbeDef) GetProbe() isProbeDef_Probe {
	if m != nil {
		return m.Probe
	}
	return nil
}

func (m *ProbeDef) GetPingProbe() *proto4.ProbeConf {
	if x, ok := m.GetProbe().(*ProbeDef_PingProbe); ok {
		return x.PingProbe
	}
	return nil
}

func (m *ProbeDef) GetHttpProbe() *proto5.ProbeConf {
	if x, ok := m.GetProbe().(*ProbeDef_HttpProbe); ok {
		return x.HttpProbe
	}
	return nil
}

func (m *ProbeDef) GetDnsProbe() *proto6.ProbeConf {
	if x, ok := m.GetProbe().(*ProbeDef_DnsProbe); ok {
		return x.DnsProbe
	}
	return nil
}

func (m *ProbeDef) GetExternalProbe() *proto7.ProbeConf {
	if x, ok := m.GetProbe().(*ProbeDef_ExternalProbe); ok {
		return x.ExternalProbe
	}
	return nil
}

func (m *ProbeDef) GetUdpProbe() *proto8.ProbeConf {
	if x, ok := m.GetProbe().(*ProbeDef_UdpProbe); ok {
		return x.UdpProbe
	}
	return nil
}

func (m *ProbeDef) GetUdpListenerProbe() *proto9.ProbeConf {
	if x, ok := m.GetProbe().(*ProbeDef_UdpListenerProbe); ok {
		return x.UdpListenerProbe
	}
	return nil
}

func (m *ProbeDef) GetUserDefinedProbe() string {
	if x, ok := m.GetProbe().(*ProbeDef_UserDefinedProbe); ok {
		return x.UserDefinedProbe
	}
	return ""
}

func (m *ProbeDef) GetDebugOptions() *DebugOptions {
	if m != nil {
		return m.DebugOptions
	}
	return nil
}

func (*ProbeDef) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) {
	return _ProbeDef_OneofMarshaler, _ProbeDef_OneofUnmarshaler, _ProbeDef_OneofSizer, []interface{}{
		(*ProbeDef_SourceIp)(nil),
		(*ProbeDef_SourceInterface)(nil),
		(*ProbeDef_PingProbe)(nil),
		(*ProbeDef_HttpProbe)(nil),
		(*ProbeDef_DnsProbe)(nil),
		(*ProbeDef_ExternalProbe)(nil),
		(*ProbeDef_UdpProbe)(nil),
		(*ProbeDef_UdpListenerProbe)(nil),
		(*ProbeDef_UserDefinedProbe)(nil),
	}
}

func _ProbeDef_OneofMarshaler(msg proto.Message, b *proto.Buffer) error {
	m := msg.(*ProbeDef)

	switch x := m.SourceIpConfig.(type) {
	case *ProbeDef_SourceIp:
		b.EncodeVarint(10<<3 | proto.WireBytes)
		b.EncodeStringBytes(x.SourceIp)
	case *ProbeDef_SourceInterface:
		b.EncodeVarint(11<<3 | proto.WireBytes)
		b.EncodeStringBytes(x.SourceInterface)
	case nil:
	default:
		return fmt.Errorf("ProbeDef.SourceIpConfig has unexpected type %T", x)
	}

	switch x := m.Probe.(type) {
	case *ProbeDef_PingProbe:
		b.EncodeVarint(20<<3 | proto.WireBytes)
		if err := b.EncodeMessage(x.PingProbe); err != nil {
			return err
		}
	case *ProbeDef_HttpProbe:
		b.EncodeVarint(21<<3 | proto.WireBytes)
		if err := b.EncodeMessage(x.HttpProbe); err != nil {
			return err
		}
	case *ProbeDef_DnsProbe:
		b.EncodeVarint(22<<3 | proto.WireBytes)
		if err := b.EncodeMessage(x.DnsProbe); err != nil {
			return err
		}
	case *ProbeDef_ExternalProbe:
		b.EncodeVarint(23<<3 | proto.WireBytes)
		if err := b.EncodeMessage(x.ExternalProbe); err != nil {
			return err
		}
	case *ProbeDef_UdpProbe:
		b.EncodeVarint(24<<3 | proto.WireBytes)
		if err := b.EncodeMessage(x.UdpProbe); err != nil {
			return err
		}
	case *ProbeDef_UdpListenerProbe:
		b.EncodeVarint(25<<3 | proto.WireBytes)
		if err := b.EncodeMessage(x.UdpListenerProbe); err != nil {
			return err
		}
	case *ProbeDef_UserDefinedProbe:
		b.EncodeVarint(99<<3 | proto.WireBytes)
		b.EncodeStringBytes(x.UserDefinedProbe)
	case nil:
	default:
		return fmt.Errorf("ProbeDef.Probe has unexpected type %T", x)
	}
	return nil
}

func _ProbeDef_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) {
	m := msg.(*ProbeDef)
	switch tag {
	case 10: 
		if wire != proto.WireBytes {
			return true, proto.ErrInternalBadWireType
		}
		x, err := b.DecodeStringBytes()
		m.SourceIpConfig = &ProbeDef_SourceIp{x}
		return true, err
	case 11: 
		if wire != proto.WireBytes {
			return true, proto.ErrInternalBadWireType
		}
		x, err := b.DecodeStringBytes()
		m.SourceIpConfig = &ProbeDef_SourceInterface{x}
		return true, err
	case 20: 
		if wire != proto.WireBytes {
			return true, proto.ErrInternalBadWireType
		}
		msg := new(proto4.ProbeConf)
		err := b.DecodeMessage(msg)
		m.Probe = &ProbeDef_PingProbe{msg}
		return true, err
	case 21: 
		if wire != proto.WireBytes {
			return true, proto.ErrInternalBadWireType
		}
		msg := new(proto5.ProbeConf)
		err := b.DecodeMessage(msg)
		m.Probe = &ProbeDef_HttpProbe{msg}
		return true, err
	case 22: 
		if wire != proto.WireBytes {
			return true, proto.ErrInternalBadWireType
		}
		msg := new(proto6.ProbeConf)
		err := b.DecodeMessage(msg)
		m.Probe = &ProbeDef_DnsProbe{msg}
		return true, err
	case 23: 
		if wire != proto.WireBytes {
			return true, proto.ErrInternalBadWireType
		}
		msg := new(proto7.ProbeConf)
		err := b.DecodeMessage(msg)
		m.Probe = &ProbeDef_ExternalProbe{msg}
		return true, err
	case 24: 
		if wire != proto.WireBytes {
			return true, proto.ErrInternalBadWireType
		}
		msg := new(proto8.ProbeConf)
		err := b.DecodeMessage(msg)
		m.Probe = &ProbeDef_UdpProbe{msg}
		return true, err
	case 25: 
		if wire != proto.WireBytes {
			return true, proto.ErrInternalBadWireType
		}
		msg := new(proto9.ProbeConf)
		err := b.DecodeMessage(msg)
		m.Probe = &ProbeDef_UdpListenerProbe{msg}
		return true, err
	case 99: 
		if wire != proto.WireBytes {
			return true, proto.ErrInternalBadWireType
		}
		x, err := b.DecodeStringBytes()
		m.Probe = &ProbeDef_UserDefinedProbe{x}
		return true, err
	default:
		return false, nil
	}
}

func _ProbeDef_OneofSizer(msg proto.Message) (n int) {
	m := msg.(*ProbeDef)

	switch x := m.SourceIpConfig.(type) {
	case *ProbeDef_SourceIp:
		n += 1 
		n += proto.SizeVarint(uint64(len(x.SourceIp)))
		n += len(x.SourceIp)
	case *ProbeDef_SourceInterface:
		n += 1 
		n += proto.SizeVarint(uint64(len(x.SourceInterface)))
		n += len(x.SourceInterface)
	case nil:
	default:
		panic(fmt.Sprintf("proto: unexpected type %T in oneof", x))
	}

	switch x := m.Probe.(type) {
	case *ProbeDef_PingProbe:
		s := proto.Size(x.PingProbe)
		n += 2 
		n += proto.SizeVarint(uint64(s))
		n += s
	case *ProbeDef_HttpProbe:
		s := proto.Size(x.HttpProbe)
		n += 2 
		n += proto.SizeVarint(uint64(s))
		n += s
	case *ProbeDef_DnsProbe:
		s := proto.Size(x.DnsProbe)
		n += 2 
		n += proto.SizeVarint(uint64(s))
		n += s
	case *ProbeDef_ExternalProbe:
		s := proto.Size(x.ExternalProbe)
		n += 2 
		n += proto.SizeVarint(uint64(s))
		n += s
	case *ProbeDef_UdpProbe:
		s := proto.Size(x.UdpProbe)
		n += 2 
		n += proto.SizeVarint(uint64(s))
		n += s
	case *ProbeDef_UdpListenerProbe:
		s := proto.Size(x.UdpListenerProbe)
		n += 2 
		n += proto.SizeVarint(uint64(s))
		n += s
	case *ProbeDef_UserDefinedProbe:
		n += 2 
		n += proto.SizeVarint(uint64(len(x.UserDefinedProbe)))
		n += len(x.UserDefinedProbe)
	case nil:
	default:
		panic(fmt.Sprintf("proto: unexpected type %T in oneof", x))
	}
	return n
}

type DebugOptions struct {

	LogMetrics           *bool    `protobuf:"varint,1,opt,name=log_metrics,json=logMetrics" json:"log_metrics,omitempty"`
	XXX_NoUnkeyedLiteral struct{} `json:"-"`
	XXX_unrecognized     []byte   `json:"-"`
	XXX_sizecache        int32    `json:"-"`
}

func (m *DebugOptions) Reset()         { *m = DebugOptions{} }
func (m *DebugOptions) String() string { return proto.CompactTextString(m) }
func (*DebugOptions) ProtoMessage()    {}
func (*DebugOptions) Descriptor() ([]byte, []int) {
	return fileDescriptor_config_bc7e7fdd60af597a, []int{1}
}
func (m *DebugOptions) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_DebugOptions.Unmarshal(m, b)
}
func (m *DebugOptions) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_DebugOptions.Marshal(b, m, deterministic)
}
func (dst *DebugOptions) XXX_Merge(src proto.Message) {
	xxx_messageInfo_DebugOptions.Merge(dst, src)
}
func (m *DebugOptions) XXX_Size() int {
	return xxx_messageInfo_DebugOptions.Size(m)
}
func (m *DebugOptions) XXX_DiscardUnknown() {
	xxx_messageInfo_DebugOptions.DiscardUnknown(m)
}

var xxx_messageInfo_DebugOptions proto.InternalMessageInfo

func (m *DebugOptions) GetLogMetrics() bool {
	if m != nil && m.LogMetrics != nil {
		return *m.LogMetrics
	}
	return false
}

func init() {
	proto.RegisterType((*ProbeDef)(nil), "cloudprober.probes.ProbeDef")
	proto.RegisterType((*DebugOptions)(nil), "cloudprober.probes.DebugOptions")
	proto.RegisterEnum("cloudprober.probes.ProbeDef_Type", ProbeDef_Type_name, ProbeDef_Type_value)
}

func init() {
	proto.RegisterFile("github.com/google/cloudprober/probes/proto/config.proto", fileDescriptor_config_bc7e7fdd60af597a)
}

var fileDescriptor_config_bc7e7fdd60af597a = []byte{

	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x94, 0x51, 0x6f, 0xdb, 0x36,
	0x10, 0xc7, 0x2b, 0xc7, 0x6e, 0x24, 0xda, 0xe9, 0x04, 0xae, 0xdd, 0xd4, 0x00, 0x43, 0xb5, 0x00,
	0xdb, 0xd4, 0x0d, 0x90, 0xb3, 0x00, 0xdb, 0xd0, 0x6e, 0xc0, 0xba, 0x46, 0xda, 0x62, 0x20, 0x75,
	0x0c, 0xd9, 0x19, 0xb6, 0x27, 0x41, 0x16, 0x69, 0x95, 0x80, 0x4c, 0x0a, 0x12, 0x59, 0x2c, 0x6f,
	0xfe, 0x72, 0x03, 0xf6, 0xb1, 0x06, 0x8a, 0x64, 0x63, 0x77, 0x4a, 0x60, 0xec, 0x49, 0xe4, 0xdd,
	0xff, 0x7e, 0xbc, 0xe3, 0xf1, 0x04, 0x7e, 0x28, 0x08, 0x7f, 0x2b, 0x96, 0x61, 0xce, 0xd6, 0xe3,
	0x82, 0xb1, 0xa2, 0xc4, 0xe3, 0xbc, 0x64, 0x02, 0x55, 0x35, 0x5b, 0xe2, 0x7a, 0xdc, 0x7e, 0x1a,
	0xf9, 0xe1, 0x6c, 0x9c, 0x33, 0xba, 0x22, 0x45, 0xd8, 0x6e, 0x20, 0xdc, 0x92, 0x85, 0x4a, 0x76,
	0xfc, 0xfd, 0xfd, 0xb0, 0x35, 0xe6, 0x35, 0xc9, 0x0d, 0x0d, 0x91, 0x86, 0x2b, 0xd6, 0xf1, 0x8f,
	0x7b, 0x25, 0x81, 0x68, 0x57, 0x22, 0xc7, 0xaf, 0xf6, 0x0a, 0xc6, 0x7f, 0x71, 0x5c, 0xd3, 0xac,
	0xec, 0x22, 0xfc, 0xb4, 0x17, 0xe1, 0x2d, 0xe7, 0xd5, 0xff, 0x8f, 0xae, 0x08, 0x2d, 0xba, 0xa2,
	0xf7, 0x2b, 0x5d, 0xa0, 0xce, 0xa3, 0xcf, 0xf7, 0x0d, 0x2e, 0x49, 0xc3, 0x31, 0x55, 0xa6, 0x0f,
	0x21, 0x2f, 0xee, 0x87, 0xf0, 0xac, 0x2e, 0x30, 0x37, 0x37, 0xaf, 0x77, 0xfb, 0x25, 0xff, 0x2e,
	0x2b, 0x09, 0xca, 0x38, 0xab, 0xbb, 0xfa, 0x76, 0xf2, 0xb7, 0x03, 0xec, 0x99, 0x14, 0x46, 0x78,
	0x05, 0x21, 0xe8, 0xd3, 0x6c, 0x8d, 0x3d, 0xcb, 0xef, 0x05, 0x4e, 0xd2, 0xae, 0xe1, 0x77, 0xa0,
	0xcf, 0x6f, 0x2a, 0xec, 0xf5, 0xfc, 0x5e, 0xf0, 0xe8, 0xec, 0xf3, 0xf0, 0xbf, 0x0f, 0x2e, 0x34,
	0xf1, 0xe1, 0xe2, 0xa6, 0xc2, 0x49, 0x2b, 0x87, 0x4f, 0xc0, 0xc3, 0x5a, 0xd0, 0x94, 0x51, 0xef,
	0xc0, 0xb7, 0x02, 0x27, 0x19, 0xd4, 0x82, 0x5e, 0x51, 0xf8, 0x1c, 0x1c, 0x11, 0xca, 0x71, 0xfd,
	0x2e, 0x2b, 0xd3, 0x75, 0x83, 0x73, 0xaf, 0xef, 0x5b, 0xc1, 0xe0, 0x65, 0xff, 0xec, 0xf4, 0xf4,
	0x34, 0x19, 0x19, 0xd7, 0x9b, 0x06, 0xe7, 0xf0, 0x2b, 0x30, 0xe2, 0x64, 0x8d, 0x99, 0xe0, 0x4a,
	0x39, 0x50, 0xca, 0x6f, 0xa5, 0x72, 0xa8, 0x3d, 0xad, 0xf0, 0x05, 0x38, 0xd4, 0x17, 0xe2, 0x3d,
	0xf4, 0x7b, 0xc1, 0xf0, 0xec, 0xd9, 0x4e, 0x92, 0xe6, 0xb2, 0x16, 0xea, 0x1b, 0xe1, 0x55, 0x62,
	0xf4, 0xf0, 0x12, 0x3c, 0x2e, 0x33, 0x8e, 0x69, 0x7e, 0x93, 0xca, 0x41, 0xa8, 0xc9, 0x52, 0x70,
	0xc2, 0xa8, 0x77, 0xe8, 0x5b, 0xc1, 0xf0, 0xec, 0xe9, 0x0e, 0x47, 0xcf, 0x4d, 0x18, 0x91, 0x86,
	0x27, 0x1f, 0xeb, 0xb0, 0x68, 0x2b, 0x0a, 0x7e, 0x01, 0x46, 0x86, 0x26, 0x28, 0xe1, 0x9e, 0x2d,
	0x2b, 0x7f, 0xd9, 0x13, 0x4d, 0x32, 0xd4, 0xf6, 0x6b, 0x4a, 0x38, 0xfc, 0x19, 0x38, 0xef, 0x7b,
	0xe2, 0x39, 0xfe, 0x41, 0x30, 0xfc, 0xe0, 0x5a, 0x6f, 0x3b, 0x16, 0xfe, 0x6e, 0x96, 0xc9, 0x6d,
	0x0c, 0xfc, 0x0c, 0x38, 0x0d, 0x13, 0x75, 0x8e, 0x53, 0x52, 0x79, 0x40, 0x1e, 0x72, 0xf1, 0x20,
	0xb1, 0x95, 0x69, 0x52, 0xc1, 0x6f, 0x80, 0x6b, 0xdc, 0xf2, 0x3e, 0x57, 0x59, 0x8e, 0xbd, 0xa1,
	0x56, 0x7d, 0xa4, 0x55, 0xc6, 0x01, 0xcf, 0x01, 0x90, 0x43, 0x91, 0xb6, 0x47, 0x7b, 0x8f, 0xdb,
	0xba, 0x4f, 0xba, 0x9a, 0x2c, 0x55, 0xaa, 0xd3, 0xe7, 0x8c, 0xae, 0x2e, 0xac, 0xc4, 0x91, 0x96,
	0xd6, 0x20, 0x21, 0x72, 0x2e, 0x35, 0xe4, 0xc9, 0xdd, 0x10, 0xa9, 0xda, 0x85, 0x48, 0x8b, 0x82,
	0xbc, 0x02, 0x0e, 0xa2, 0x8d, 0x66, 0x7c, 0xd2, 0x32, 0x3a, 0x5f, 0x1b, 0xa2, 0xcd, 0x0e, 0xc2,
	0x46, 0xb4, 0x51, 0x84, 0x2b, 0xf0, 0xc8, 0xfc, 0x60, 0x34, 0xe6, 0xd3, 0x16, 0xf3, 0x65, 0x17,
	0xc6, 0x28, 0x77, 0x58, 0x47, 0xc6, 0xfa, 0x3e, 0x25, 0x81, 0x4c, 0x59, 0xde, 0xdd, 0x29, 0x09,
	0xb4, 0x5b, 0x95, 0x2d, 0x90, 0x2e, 0xea, 0x4f, 0x00, 0x25, 0xc1, 0x4c, 0xbe, 0x46, 0x3d, 0x6d,
	0x51, 0xcf, 0xef, 0x40, 0x19, 0xf1, 0x0e, 0xd2, 0x15, 0xa8, 0xba, 0xd4, 0x0e, 0x85, 0x0e, 0x01,
	0x14, 0x0d, 0xae, 0x53, 0x84, 0x57, 0x84, 0x62, 0xa4, 0xd1, 0x79, 0xdb, 0x68, 0xa9, 0x6f, 0x70,
	0x1d, 0x29, 0x97, 0xd2, 0xc7, 0xe0, 0x08, 0xe1, 0xa5, 0x28, 0x52, 0x56, 0xc9, 0xd7, 0xda, 0x78,
	0xa8, 0xcd, 0xc2, 0xef, 0xca, 0x22, 0x92, 0xc2, 0x2b, 0xa5, 0x4b, 0x46, 0x68, 0x6b, 0x77, 0xb2,
	0x06, 0x7d, 0x39, 0xe6, 0xd0, 0x06, 0xfd, 0xd9, 0x64, 0xfa, 0x9b, 0xfb, 0x40, 0xae, 0x2e, 0x16,
	0x8b, 0x99, 0x6b, 0xc1, 0x43, 0x70, 0x10, 0x4d, 0xe7, 0x6e, 0x0f, 0x8e, 0x80, 0x1d, 0xff, 0xb1,
	0x88, 0x93, 0xe9, 0x2f, 0x97, 0xee, 0x81, 0x34, 0x5f, 0x47, 0x33, 0xb7, 0x0f, 0x5d, 0x30, 0xba,
	0x8e, 0x66, 0xe9, 0xe5, 0x64, 0xbe, 0x88, 0xa7, 0x71, 0xe2, 0x0e, 0xe0, 0x11, 0x70, 0xa4, 0x70,
	0x3a, 0x9f, 0x5c, 0x4d, 0xdd, 0x65, 0x2b, 0x98, 0xc7, 0x49, 0x1a, 0xc5, 0xbf, 0x4e, 0xa6, 0x71,
	0xe4, 0xe6, 0x5f, 0x3b, 0xf6, 0x3f, 0x96, 0xbb, 0xd9, 0x6c, 0x36, 0xbd, 0xd7, 0xf0, 0xf6, 0x5d,
	0x57, 0xa9, 0xfa, 0x89, 0xbd, 0x3e, 0x04, 0x83, 0x36, 0xe5, 0x93, 0x31, 0x18, 0x6d, 0x27, 0x0d,
	0x9f, 0x81, 0x61, 0xc9, 0x8a, 0x54, 0x0f, 0xad, 0x67, 0xf9, 0x56, 0x60, 0x27, 0xa0, 0x64, 0xc5,
	0x1b, 0x65, 0xf9, 0x37, 0x00, 0x00, 0xff, 0xff, 0xae, 0x13, 0x3b, 0x44, 0x73, 0x07, 0x00, 0x00,
}
// Code generated by protoc-gen-go. DO NOT EDIT.
// source: github.com/google/cloudprober/probes/proto/config.proto

package proto

import proto "github.com/golang/protobuf/proto"
import fmt "fmt"
import math "math"
import proto2 "github.com/google/cloudprober/metrics/proto"
import proto6 "github.com/google/cloudprober/probes/dns/proto"
import proto7 "github.com/google/cloudprober/probes/external/proto"
import proto5 "github.com/google/cloudprober/probes/http/proto"
import proto4 "github.com/google/cloudprober/probes/ping/proto"
import proto8 "github.com/google/cloudprober/probes/udp/proto"
import proto9 "github.com/google/cloudprober/probes/udplistener/proto"
import proto1 "github.com/google/cloudprober/targets/proto"
import proto3 "github.com/google/cloudprober/validators/proto"

// Reference imports to suppress errors if they are not otherwise used.
var _ = proto.Marshal
var _ = fmt.Errorf
var _ = math.Inf

// This is a compile-time assertion to ensure that this generated file
// is compatible with the proto package it is being compiled against.
// A compilation error at this line likely means your copy of the
// proto package needs to be updated.
const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package

type ProbeDef_Type int32

const (
	ProbeDef_PING         ProbeDef_Type = 0
	ProbeDef_HTTP         ProbeDef_Type = 1
	ProbeDef_DNS          ProbeDef_Type = 2
	ProbeDef_EXTERNAL     ProbeDef_Type = 3
	ProbeDef_UDP          ProbeDef_Type = 4
	ProbeDef_UDP_LISTENER ProbeDef_Type = 5
	// One of the extension probe types. See "extensions" below for more
	// details.
	ProbeDef_EXTENSION ProbeDef_Type = 98
	// USER_DEFINED probe type is for a one off probe that you want to compile
	// into cloudprober, but you don't expect it to be reused. If you expect
	// it to be reused, you should consider adding it using the extensions
	// mechanism.
	ProbeDef_USER_DEFINED ProbeDef_Type = 99
)

var ProbeDef_Type_name = map[int32]string{
	0:  "PING",
	1:  "HTTP",
	2:  "DNS",
	3:  "EXTERNAL",
	4:  "UDP",
	5:  "UDP_LISTENER",
	98: "EXTENSION",
	99: "USER_DEFINED",
}
var ProbeDef_Type_value = map[string]int32{
	"PING":         0,
	"HTTP":         1,
	"DNS":          2,
	"EXTERNAL":     3,
	"UDP":          4,
	"UDP_LISTENER": 5,
	"EXTENSION":    98,
	"USER_DEFINED": 99,
}

func (x ProbeDef_Type) Enum() *ProbeDef_Type {
	p := new(ProbeDef_Type)
	*p = x
	return p
}
func (x ProbeDef_Type) String() string {
	return proto.EnumName(ProbeDef_Type_name, int32(x))
}
func (x *ProbeDef_Type) UnmarshalJSON(data []byte) error {
	value, err := proto.UnmarshalJSONEnum(ProbeDef_Type_value, data, "ProbeDef_Type")
	if err != nil {
		return err
	}
	*x = ProbeDef_Type(value)
	return nil
}
func (ProbeDef_Type) EnumDescriptor() ([]byte, []int) {
	return fileDescriptor_config_bc7e7fdd60af597a, []int{0, 0}
}

type ProbeDef struct {
	Name *string        `protobuf:"bytes,1,req,name=name" json:"name,omitempty"`
	Type *ProbeDef_Type `protobuf:"varint,2,req,name=type,enum=cloudprober.probes.ProbeDef_Type" json:"type,omitempty"`
	// Which machines this probe should run on. If defined, cloudprober will run
	// this probe only if machine's hostname matches this value.
	RunOn *string `protobuf:"bytes,3,opt,name=run_on,json=runOn" json:"run_on,omitempty"`
	// Interval between two probes
	IntervalMsec *int32 `protobuf:"varint,4,opt,name=interval_msec,json=intervalMsec,def=2000" json:"interval_msec,omitempty"`
	// Timeout for each probe
	TimeoutMsec *int32 `protobuf:"varint,5,opt,name=timeout_msec,json=timeoutMsec,def=1000" json:"timeout_msec,omitempty"`
	// Targets for the probe
	Targets *proto1.TargetsDef `protobuf:"bytes,6,req,name=targets" json:"targets,omitempty"`
	// Latency distribution. If specified, latency is stored as a distribution.
	LatencyDistribution *proto2.Dist `protobuf:"bytes,7,opt,name=latency_distribution,json=latencyDistribution" json:"latency_distribution,omitempty"`
	// Latency unit. Any string that's parseable by time.ParseDuration.
	// Valid values: "ns", "us" (or "µs"), "ms", "s", "m", "h".
	LatencyUnit *string `protobuf:"bytes,8,opt,name=latency_unit,json=latencyUnit,def=us" json:"latency_unit,omitempty"`
	// Validators are in experimental phase right now and can change at any time.
	// NOTE: Only PING, HTTP and DNS probes support validators.
	Validator []*proto3.Validator `protobuf:"bytes,9,rep,name=validator" json:"validator,omitempty"`
	// Set the source IP to send packets from, either by providing an IP address
	// directly, or a network interface.
	// NOTE: Only PING and HTTP probes support this field right now.
	//
	// Types that are valid to be assigned to SourceIpConfig:
	//	*ProbeDef_SourceIp
	//	*ProbeDef_SourceInterface
	SourceIpConfig isProbeDef_SourceIpConfig `protobuf_oneof:"source_ip_config"`
	// Types that are valid to be assigned to Probe:
	//	*ProbeDef_PingProbe
	//	*ProbeDef_HttpProbe
	//	*ProbeDef_DnsProbe
	//	*ProbeDef_ExternalProbe
	//	*ProbeDef_UdpProbe
	//	*ProbeDef_UdpListenerProbe
	//	*ProbeDef_UserDefinedProbe
	Probe                        isProbeDef_Probe `protobuf_oneof:"probe"`
	DebugOptions                 *DebugOptions    `protobuf:"bytes,100,opt,name=debug_options,json=debugOptions" json:"debug_options,omitempty"`
	XXX_NoUnkeyedLiteral         struct{}         `json:"-"`
	proto.XXX_InternalExtensions `json:"-"`
	XXX_unrecognized             []byte `json:"-"`
	XXX_sizecache                int32  `json:"-"`
}

func (m *ProbeDef) Reset()         { *m = ProbeDef{} }
func (m *ProbeDef) String() string { return proto.CompactTextString(m) }
func (*ProbeDef) ProtoMessage()    {}
func (*ProbeDef) Descriptor() ([]byte, []int) {
	return fileDescriptor_config_bc7e7fdd60af597a, []int{0}
}

var extRange_ProbeDef = []proto.ExtensionRange{
	{Start: 200, End: 536870911},
}

func (*ProbeDef) ExtensionRangeArray() []proto.ExtensionRange {
	return extRange_ProbeDef
}
func (m *ProbeDef) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_ProbeDef.Unmarshal(m, b)
}
func (m *ProbeDef) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_ProbeDef.Marshal(b, m, deterministic)
}
func (dst *ProbeDef) XXX_Merge(src proto.Message) {
	xxx_messageInfo_ProbeDef.Merge(dst, src)
}
func (m *ProbeDef) XXX_Size() int {
	return xxx_messageInfo_ProbeDef.Size(m)
}
func (m *ProbeDef) XXX_DiscardUnknown() {
	xxx_messageInfo_ProbeDef.DiscardUnknown(m)
}

var xxx_messageInfo_ProbeDef proto.InternalMessageInfo

const Default_ProbeDef_IntervalMsec int32 = 2000
const Default_ProbeDef_TimeoutMsec int32 = 1000
const Default_ProbeDef_LatencyUnit string = "us"

func (m *ProbeDef) GetName() string {
	if m != nil && m.Name != nil {
		return *m.Name
	}
	return ""
}

func (m *ProbeDef) GetType() ProbeDef_Type {
	if m != nil && m.Type != nil {
		return *m.Type
	}
	return ProbeDef_PING
}

func (m *ProbeDef) GetRunOn() string {
	if m != nil && m.RunOn != nil {
		return *m.RunOn
	}
	return ""
}

func (m *ProbeDef) GetIntervalMsec() int32 {
	if m != nil && m.IntervalMsec != nil {
		return *m.IntervalMsec
	}
	return Default_ProbeDef_IntervalMsec
}

func (m *ProbeDef) GetTimeoutMsec() int32 {
	if m != nil && m.TimeoutMsec != nil {
		return *m.TimeoutMsec
	}
	return Default_ProbeDef_TimeoutMsec
}

func (m *ProbeDef) GetTargets() *proto1.TargetsDef {
	if m != nil {
		return m.Targets
	}
	return nil
}

func (m *ProbeDef) GetLatencyDistribution() *proto2.Dist {
	if m != nil {
		return m.LatencyDistribution
	}
	return nil
}

func (m *ProbeDef) GetLatencyUnit() string {
	if m != nil && m.LatencyUnit != nil {
		return *m.LatencyUnit
	}
	return Default_ProbeDef_LatencyUnit
}

func (m *ProbeDef) GetValidator() []*proto3.Validator {
	if m != nil {
		return m.Validator
	}
	return nil
}

type isProbeDef_SourceIpConfig interface {
	isProbeDef_SourceIpConfig()
}

type ProbeDef_SourceIp struct {
	SourceIp string `protobuf:"bytes,10,opt,name=source_ip,json=sourceIp,oneof"`
}

type ProbeDef_SourceInterface struct {
	SourceInterface string `protobuf:"bytes,11,opt,name=source_interface,json=sourceInterface,oneof"`
}

func (*ProbeDef_SourceIp) isProbeDef_SourceIpConfig() {}

func (*ProbeDef_SourceInterface) isProbeDef_SourceIpConfig() {}

func (m *ProbeDef) GetSourceIpConfig() isProbeDef_SourceIpConfig {
	if m != nil {
		return m.SourceIpConfig
	}
	return nil
}

func (m *ProbeDef) GetSourceIp() string {
	if x, ok := m.GetSourceIpConfig().(*ProbeDef_SourceIp); ok {
		return x.SourceIp
	}
	return ""
}

func (m *ProbeDef) GetSourceInterface() string {
	if x, ok := m.GetSourceIpConfig().(*ProbeDef_SourceInterface); ok {
		return x.SourceInterface
	}
	return ""
}

type isProbeDef_Probe interface {
	isProbeDef_Probe()
}

type ProbeDef_PingProbe struct {
	PingProbe *proto4.ProbeConf `protobuf:"bytes,20,opt,name=ping_probe,json=pingProbe,oneof"`
}

type ProbeDef_HttpProbe struct {
	HttpProbe *proto5.ProbeConf `protobuf:"bytes,21,opt,name=http_probe,json=httpProbe,oneof"`
}

type ProbeDef_DnsProbe struct {
	DnsProbe *proto6.ProbeConf `protobuf:"bytes,22,opt,name=dns_probe,json=dnsProbe,oneof"`
}

type ProbeDef_ExternalProbe struct {
	ExternalProbe *proto7.ProbeConf `protobuf:"bytes,23,opt,name=external_probe,json=externalProbe,oneof"`
}

type ProbeDef_UdpProbe struct {
	UdpProbe *proto8.ProbeConf `protobuf:"bytes,24,opt,name=udp_probe,json=udpProbe,oneof"`
}

type ProbeDef_UdpListenerProbe struct {
	UdpListenerProbe *proto9.ProbeConf `protobuf:"bytes,25,opt,name=udp_listener_probe,json=udpListenerProbe,oneof"`
}

type ProbeDef_UserDefinedProbe struct {
	UserDefinedProbe string `protobuf:"bytes,99,opt,name=user_defined_probe,json=userDefinedProbe,oneof"`
}

func (*ProbeDef_PingProbe) isProbeDef_Probe() {}

func (*ProbeDef_HttpProbe) isProbeDef_Probe() {}

func (*ProbeDef_DnsProbe) isProbeDef_Probe() {}

func (*ProbeDef_ExternalProbe) isProbeDef_Probe() {}

func (*ProbeDef_UdpProbe) isProbeDef_Probe() {}

func (*ProbeDef_UdpListenerProbe) isProbeDef_Probe() {}

func (*ProbeDef_UserDefinedProbe) isProbeDef_Probe() {}

func (m *ProbeDef) GetProbe() isProbeDef_Probe {
	if m != nil {
		return m.Probe
	}
	return nil
}

func (m *ProbeDef) GetPingProbe() *proto4.ProbeConf {
	if x, ok := m.GetProbe().(*ProbeDef_PingProbe); ok {
		return x.PingProbe
	}
	return nil
}

func (m *ProbeDef) GetHttpProbe() *proto5.ProbeConf {
	if x, ok := m.GetProbe().(*ProbeDef_HttpProbe); ok {
		return x.HttpProbe
	}
	return nil
}

func (m *ProbeDef) GetDnsProbe() *proto6.ProbeConf {
	if x, ok := m.GetProbe().(*ProbeDef_DnsProbe); ok {
		return x.DnsProbe
	}
	return nil
}

func (m *ProbeDef) GetExternalProbe() *proto7.ProbeConf {
	if x, ok := m.GetProbe().(*ProbeDef_ExternalProbe); ok {
		return x.ExternalProbe
	}
	return nil
}

func (m *ProbeDef) GetUdpProbe() *proto8.ProbeConf {
	if x, ok := m.GetProbe().(*ProbeDef_UdpProbe); ok {
		return x.UdpProbe
	}
	return nil
}

func (m *ProbeDef) GetUdpListenerProbe() *proto9.ProbeConf {
	if x, ok := m.GetProbe().(*ProbeDef_UdpListenerProbe); ok {
		return x.UdpListenerProbe
	}
	return nil
}

func (m *ProbeDef) GetUserDefinedProbe() string {
	if x, ok := m.GetProbe().(*ProbeDef_UserDefinedProbe); ok {
		return x.UserDefinedProbe
	}
	return ""
}

func (m *ProbeDef) GetDebugOptions() *DebugOptions {
	if m != nil {
		return m.DebugOptions
	}
	return nil
}

// XXX_OneofFuncs is for the internal use of the proto package.
func (*ProbeDef) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) {
	return _ProbeDef_OneofMarshaler, _ProbeDef_OneofUnmarshaler, _ProbeDef_OneofSizer, []interface{}{
		(*ProbeDef_SourceIp)(nil),
		(*ProbeDef_SourceInterface)(nil),
		(*ProbeDef_PingProbe)(nil),
		(*ProbeDef_HttpProbe)(nil),
		(*ProbeDef_DnsProbe)(nil),
		(*ProbeDef_ExternalProbe)(nil),
		(*ProbeDef_UdpProbe)(nil),
		(*ProbeDef_UdpListenerProbe)(nil),
		(*ProbeDef_UserDefinedProbe)(nil),
	}
}

func _ProbeDef_OneofMarshaler(msg proto.Message, b *proto.Buffer) error {
	m := msg.(*ProbeDef)
	// source_ip_config
	switch x := m.SourceIpConfig.(type) {
	case *ProbeDef_SourceIp:
		b.EncodeVarint(10<<3 | proto.WireBytes)
		b.EncodeStringBytes(x.SourceIp)
	case *ProbeDef_SourceInterface:
		b.EncodeVarint(11<<3 | proto.WireBytes)
		b.EncodeStringBytes(x.SourceInterface)
	case nil:
	default:
		return fmt.Errorf("ProbeDef.SourceIpConfig has unexpected type %T", x)
	}
	// probe
	switch x := m.Probe.(type) {
	case *ProbeDef_PingProbe:
		b.EncodeVarint(20<<3 | proto.WireBytes)
		if err := b.EncodeMessage(x.PingProbe); err != nil {
			return err
		}
	case *ProbeDef_HttpProbe:
		b.EncodeVarint(21<<3 | proto.WireBytes)
		if err := b.EncodeMessage(x.HttpProbe); err != nil {
			return err
		}
	case *ProbeDef_DnsProbe:
		b.EncodeVarint(22<<3 | proto.WireBytes)
		if err := b.EncodeMessage(x.DnsProbe); err != nil {
			return err
		}
	case *ProbeDef_ExternalProbe:
		b.EncodeVarint(23<<3 | proto.WireBytes)
		if err := b.EncodeMessage(x.ExternalProbe); err != nil {
			return err
		}
	case *ProbeDef_UdpProbe:
		b.EncodeVarint(24<<3 | proto.WireBytes)
		if err := b.EncodeMessage(x.UdpProbe); err != nil {
			return err
		}
	case *ProbeDef_UdpListenerProbe:
		b.EncodeVarint(25<<3 | proto.WireBytes)
		if err := b.EncodeMessage(x.UdpListenerProbe); err != nil {
			return err
		}
	case *ProbeDef_UserDefinedProbe:
		b.EncodeVarint(99<<3 | proto.WireBytes)
		b.EncodeStringBytes(x.UserDefinedProbe)
	case nil:
	default:
		return fmt.Errorf("ProbeDef.Probe has unexpected type %T", x)
	}
	return nil
}

func _ProbeDef_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) {
	m := msg.(*ProbeDef)
	switch tag {
	case 10: // source_ip_config.source_ip
		if wire != proto.WireBytes {
			return true, proto.ErrInternalBadWireType
		}
		x, err := b.DecodeStringBytes()
		m.SourceIpConfig = &ProbeDef_SourceIp{x}
		return true, err
	case 11: // source_ip_config.source_interface
		if wire != proto.WireBytes {
			return true, proto.ErrInternalBadWireType
		}
		x, err := b.DecodeStringBytes()
		m.SourceIpConfig = &ProbeDef_SourceInterface{x}
		return true, err
	case 20: // probe.ping_probe
		if wire != proto.WireBytes {
			return true, proto.ErrInternalBadWireType
		}
		msg := new(proto4.ProbeConf)
		err := b.DecodeMessage(msg)
		m.Probe = &ProbeDef_PingProbe{msg}
		return true, err
	case 21: // probe.http_probe
		if wire != proto.WireBytes {
			return true, proto.ErrInternalBadWireType
		}
		msg := new(proto5.ProbeConf)
		err := b.DecodeMessage(msg)
		m.Probe = &ProbeDef_HttpProbe{msg}
		return true, err
	case 22: // probe.dns_probe
		if wire != proto.WireBytes {
			return true, proto.ErrInternalBadWireType
		}
		msg := new(proto6.ProbeConf)
		err := b.DecodeMessage(msg)
		m.Probe = &ProbeDef_DnsProbe{msg}
		return true, err
	case 23: // probe.external_probe
		if wire != proto.WireBytes {
			return true, proto.ErrInternalBadWireType
		}
		msg := new(proto7.ProbeConf)
		err := b.DecodeMessage(msg)
		m.Probe = &ProbeDef_ExternalProbe{msg}
		return true, err
	case 24: // probe.udp_probe
		if wire != proto.WireBytes {
			return true, proto.ErrInternalBadWireType
		}
		msg := new(proto8.ProbeConf)
		err := b.DecodeMessage(msg)
		m.Probe = &ProbeDef_UdpProbe{msg}
		return true, err
	case 25: // probe.udp_listener_probe
		if wire != proto.WireBytes {
			return true, proto.ErrInternalBadWireType
		}
		msg := new(proto9.ProbeConf)
		err := b.DecodeMessage(msg)
		m.Probe = &ProbeDef_UdpListenerProbe{msg}
		return true, err
	case 99: // probe.user_defined_probe
		if wire != proto.WireBytes {
			return true, proto.ErrInternalBadWireType
		}
		x, err := b.DecodeStringBytes()
		m.Probe = &ProbeDef_UserDefinedProbe{x}
		return true, err
	default:
		return false, nil
	}
}

func _ProbeDef_OneofSizer(msg proto.Message) (n int) {
	m := msg.(*ProbeDef)
	// source_ip_config
	switch x := m.SourceIpConfig.(type) {
	case *ProbeDef_SourceIp:
		n += 1 // tag and wire
		n += proto.SizeVarint(uint64(len(x.SourceIp)))
		n += len(x.SourceIp)
	case *ProbeDef_SourceInterface:
		n += 1 // tag and wire
		n += proto.SizeVarint(uint64(len(x.SourceInterface)))
		n += len(x.SourceInterface)
	case nil:
	default:
		panic(fmt.Sprintf("proto: unexpected type %T in oneof", x))
	}
	// probe
	switch x := m.Probe.(type) {
	case *ProbeDef_PingProbe:
		s := proto.Size(x.PingProbe)
		n += 2 // tag and wire
		n += proto.SizeVarint(uint64(s))
		n += s
	case *ProbeDef_HttpProbe:
		s := proto.Size(x.HttpProbe)
		n += 2 // tag and wire
		n += proto.SizeVarint(uint64(s))
		n += s
	case *ProbeDef_DnsProbe:
		s := proto.Size(x.DnsProbe)
		n += 2 // tag and wire
		n += proto.SizeVarint(uint64(s))
		n += s
	case *ProbeDef_ExternalProbe:
		s := proto.Size(x.ExternalProbe)
		n += 2 // tag and wire
		n += proto.SizeVarint(uint64(s))
		n += s
	case *ProbeDef_UdpProbe:
		s := proto.Size(x.UdpProbe)
		n += 2 // tag and wire
		n += proto.SizeVarint(uint64(s))
		n += s
	case *ProbeDef_UdpListenerProbe:
		s := proto.Size(x.UdpListenerProbe)
		n += 2 // tag and wire
		n += proto.SizeVarint(uint64(s))
		n += s
	case *ProbeDef_UserDefinedProbe:
		n += 2 // tag and wire
		n += proto.SizeVarint(uint64(len(x.UserDefinedProbe)))
		n += len(x.UserDefinedProbe)
	case nil:
	default:
		panic(fmt.Sprintf("proto: unexpected type %T in oneof", x))
	}
	return n
}

type DebugOptions struct {
	// Whether to log metrics or not.
	LogMetrics           *bool    `protobuf:"varint,1,opt,name=log_metrics,json=logMetrics" json:"log_metrics,omitempty"`
	XXX_NoUnkeyedLiteral struct{} `json:"-"`
	XXX_unrecognized     []byte   `json:"-"`
	XXX_sizecache        int32    `json:"-"`
}

func (m *DebugOptions) Reset()         { *m = DebugOptions{} }
func (m *DebugOptions) String() string { return proto.CompactTextString(m) }
func (*DebugOptions) ProtoMessage()    {}
func (*DebugOptions) Descriptor() ([]byte, []int) {
	return fileDescriptor_config_bc7e7fdd60af597a, []int{1}
}
func (m *DebugOptions) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_DebugOptions.Unmarshal(m, b)
}
func (m *DebugOptions) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_DebugOptions.Marshal(b, m, deterministic)
}
func (dst *DebugOptions) XXX_Merge(src proto.Message) {
	xxx_messageInfo_DebugOptions.Merge(dst, src)
}
func (m *DebugOptions) XXX_Size() int {
	return xxx_messageInfo_DebugOptions.Size(m)
}
func (m *DebugOptions) XXX_DiscardUnknown() {
	xxx_messageInfo_DebugOptions.DiscardUnknown(m)
}

var xxx_messageInfo_DebugOptions proto.InternalMessageInfo

func (m *DebugOptions) GetLogMetrics() bool {
	if m != nil && m.LogMetrics != nil {
		return *m.LogMetrics
	}
	return false
}

func init() {
	proto.RegisterType((*ProbeDef)(nil), "cloudprober.probes.ProbeDef")
	proto.RegisterType((*DebugOptions)(nil), "cloudprober.probes.DebugOptions")
	proto.RegisterEnum("cloudprober.probes.ProbeDef_Type", ProbeDef_Type_name, ProbeDef_Type_value)
}

func init() {
	proto.RegisterFile("github.com/google/cloudprober/probes/proto/config.proto", fileDescriptor_config_bc7e7fdd60af597a)
}

var fileDescriptor_config_bc7e7fdd60af597a = []byte{
	// 784 bytes of a gzipped FileDescriptorProto
	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x94, 0x51, 0x6f, 0xdb, 0x36,
	0x10, 0xc7, 0x2b, 0xc7, 0x6e, 0x24, 0xda, 0xe9, 0x04, 0xae, 0xdd, 0xd4, 0x00, 0x43, 0xb5, 0x00,
	0xdb, 0xd4, 0x0d, 0x90, 0xb3, 0x00, 0xdb, 0xd0, 0x6e, 0xc0, 0xba, 0x46, 0xda, 0x62, 0x20, 0x75,
	0x0c, 0xd9, 0x19, 0xb6, 0x27, 0x41, 0x16, 0x69, 0x95, 0x80, 0x4c, 0x0a, 0x12, 0x59, 0x2c, 0x6f,
	0xfe, 0x72, 0x03, 0xf6, 0xb1, 0x06, 0x8a, 0x64, 0x63, 0x77, 0x4a, 0x60, 0xec, 0x49, 0xe4, 0xdd,
	0xff, 0x7e, 0xbc, 0xe3, 0xf1, 0x04, 0x7e, 0x28, 0x08, 0x7f, 0x2b, 0x96, 0x61, 0xce, 0xd6, 0xe3,
	0x82, 0xb1, 0xa2, 0xc4, 0xe3, 0xbc, 0x64, 0x02, 0x55, 0x35, 0x5b, 0xe2, 0x7a, 0xdc, 0x7e, 0x1a,
	0xf9, 0xe1, 0x6c, 0x9c, 0x33, 0xba, 0x22, 0x45, 0xd8, 0x6e, 0x20, 0xdc, 0x92, 0x85, 0x4a, 0x76,
	0xfc, 0xfd, 0xfd, 0xb0, 0x35, 0xe6, 0x35, 0xc9, 0x0d, 0x0d, 0x91, 0x86, 0x2b, 0xd6, 0xf1, 0x8f,
	0x7b, 0x25, 0x81, 0x68, 0x57, 0x22, 0xc7, 0xaf, 0xf6, 0x0a, 0xc6, 0x7f, 0x71, 0x5c, 0xd3, 0xac,
	0xec, 0x22, 0xfc, 0xb4, 0x17, 0xe1, 0x2d, 0xe7, 0xd5, 0xff, 0x8f, 0xae, 0x08, 0x2d, 0xba, 0xa2,
	0xf7, 0x2b, 0x5d, 0xa0, 0xce, 0xa3, 0xcf, 0xf7, 0x0d, 0x2e, 0x49, 0xc3, 0x31, 0x55, 0xa6, 0x0f,
	0x21, 0x2f, 0xee, 0x87, 0xf0, 0xac, 0x2e, 0x30, 0x37, 0x37, 0xaf, 0x77, 0xfb, 0x25, 0xff, 0x2e,
	0x2b, 0x09, 0xca, 0x38, 0xab, 0xbb, 0xfa, 0x76, 0xf2, 0xb7, 0x03, 0xec, 0x99, 0x14, 0x46, 0x78,
	0x05, 0x21, 0xe8, 0xd3, 0x6c, 0x8d, 0x3d, 0xcb, 0xef, 0x05, 0x4e, 0xd2, 0xae, 0xe1, 0x77, 0xa0,
	0xcf, 0x6f, 0x2a, 0xec, 0xf5, 0xfc, 0x5e, 0xf0, 0xe8, 0xec, 0xf3, 0xf0, 0xbf, 0x0f, 0x2e, 0x34,
	0xf1, 0xe1, 0xe2, 0xa6, 0xc2, 0x49, 0x2b, 0x87, 0x4f, 0xc0, 0xc3, 0x5a, 0xd0, 0x94, 0x51, 0xef,
	0xc0, 0xb7, 0x02, 0x27, 0x19, 0xd4, 0x82, 0x5e, 0x51, 0xf8, 0x1c, 0x1c, 0x11, 0xca, 0x71, 0xfd,
	0x2e, 0x2b, 0xd3, 0x75, 0x83, 0x73, 0xaf, 0xef, 0x5b, 0xc1, 0xe0, 0x65, 0xff, 0xec, 0xf4, 0xf4,
	0x34, 0x19, 0x19, 0xd7, 0x9b, 0x06, 0xe7, 0xf0, 0x2b, 0x30, 0xe2, 0x64, 0x8d, 0x99, 0xe0, 0x4a,
	0x39, 0x50, 0xca, 0x6f, 0xa5, 0x72, 0xa8, 0x3d, 0xad, 0xf0, 0x05, 0x38, 0xd4, 0x17, 0xe2, 0x3d,
	0xf4, 0x7b, 0xc1, 0xf0, 0xec, 0xd9, 0x4e, 0x92, 0xe6, 0xb2, 0x16, 0xea, 0x1b, 0xe1, 0x55, 0x62,
	0xf4, 0xf0, 0x12, 0x3c, 0x2e, 0x33, 0x8e, 0x69, 0x7e, 0x93, 0xca, 0x41, 0xa8, 0xc9, 0x52, 0x70,
	0xc2, 0xa8, 0x77, 0xe8, 0x5b, 0xc1, 0xf0, 0xec, 0xe9, 0x0e, 0x47, 0xcf, 0x4d, 0x18, 0x91, 0x86,
	0x27, 0x1f, 0xeb, 0xb0, 0x68, 0x2b, 0x0a, 0x7e, 0x01, 0x46, 0x86, 0x26, 0x28, 0xe1, 0x9e, 0x2d,
	0x2b, 0x7f, 0xd9, 0x13, 0x4d, 0x32, 0xd4, 0xf6, 0x6b, 0x4a, 0x38, 0xfc, 0x19, 0x38, 0xef, 0x7b,
	0xe2, 0x39, 0xfe, 0x41, 0x30, 0xfc, 0xe0, 0x5a, 0x6f, 0x3b, 0x16, 0xfe, 0x6e, 0x96, 0xc9, 0x6d,
	0x0c, 0xfc, 0x0c, 0x38, 0x0d, 0x13, 0x75, 0x8e, 0x53, 0x52, 0x79, 0x40, 0x1e, 0x72, 0xf1, 0x20,
	0xb1, 0x95, 0x69, 0x52, 0xc1, 0x6f, 0x80, 0x6b, 0xdc, 0xf2, 0x3e, 0x57, 0x59, 0x8e, 0xbd, 0xa1,
	0x56, 0x7d, 0xa4, 0x55, 0xc6, 0x01, 0xcf, 0x01, 0x90, 0x43, 0x91, 0xb6, 0x47, 0x7b, 0x8f, 0xdb,
	0xba, 0x4f, 0xba, 0x9a, 0x2c, 0x55, 0xaa, 0xd3, 0xe7, 0x8c, 0xae, 0x2e, 0xac, 0xc4, 0x91, 0x96,
	0xd6, 0x20, 0x21, 0x72, 0x2e, 0x35, 0xe4, 0xc9, 0xdd, 0x10, 0xa9, 0xda, 0x85, 0x48, 0x8b, 0x82,
	0xbc, 0x02, 0x0e, 0xa2, 0x8d, 0x66, 0x7c, 0xd2, 0x32, 0x3a, 0x5f, 0x1b, 0xa2, 0xcd, 0x0e, 0xc2,
	0x46, 0xb4, 0x51, 0x84, 0x2b, 0xf0, 0xc8, 0xfc, 0x60, 0x34, 0xe6, 0xd3, 0x16, 0xf3, 0x65, 0x17,
	0xc6, 0x28, 0x77, 0x58, 0x47, 0xc6, 0xfa, 0x3e, 0x25, 0x81, 0x4c, 0x59, 0xde, 0xdd, 0x29, 0x09,
	0xb4, 0x5b, 0x95, 0x2d, 0x90, 0x2e, 0xea, 0x4f, 0x00, 0x25, 0xc1, 0x4c, 0xbe, 0x46, 0x3d, 0x6d,
	0x51, 0xcf, 0xef, 0x40, 0x19, 0xf1, 0x0e, 0xd2, 0x15, 0xa8, 0xba, 0xd4, 0x0e, 0x85, 0x0e, 0x01,
	0x14, 0x0d, 0xae, 0x53, 0x84, 0x57, 0x84, 0x62, 0xa4, 0xd1, 0x79, 0xdb, 0x68, 0xa9, 0x6f, 0x70,
	0x1d, 0x29, 0x97, 0xd2, 0xc7, 0xe0, 0x08, 0xe1, 0xa5, 0x28, 0x52, 0x56, 0xc9, 0xd7, 0xda, 0x78,
	0xa8, 0xcd, 0xc2, 0xef, 0xca, 0x22, 0x92, 0xc2, 0x2b, 0xa5, 0x4b, 0x46, 0x68, 0x6b, 0x77, 0xb2,
	0x06, 0x7d, 0x39, 0xe6, 0xd0, 0x06, 0xfd, 0xd9, 0x64, 0xfa, 0x9b, 0xfb, 0x40, 0xae, 0x2e, 0x16,
	0x8b, 0x99, 0x6b, 0xc1, 0x43, 0x70, 0x10, 0x4d, 0xe7, 0x6e, 0x0f, 0x8e, 0x80, 0x1d, 0xff, 0xb1,
	0x88, 0x93, 0xe9, 0x2f, 0x97, 0xee, 0x81, 0x34, 0x5f, 0x47, 0x33, 0xb7, 0x0f, 0x5d, 0x30, 0xba,
	0x8e, 0x66, 0xe9, 0xe5, 0x64, 0xbe, 0x88, 0xa7, 0x71, 0xe2, 0x0e, 0xe0, 0x11, 0x70, 0xa4, 0x70,
	0x3a, 0x9f, 0x5c, 0x4d, 0xdd, 0x65, 0x2b, 0x98, 0xc7, 0x49, 0x1a, 0xc5, 0xbf, 0x4e, 0xa6, 0x71,
	0xe4, 0xe6, 0x5f, 0x3b, 0xf6, 0x3f, 0x96, 0xbb, 0xd9, 0x6c, 0x36, 0xbd, 0xd7, 0xf0, 0xf6, 0x5d,
	0x57, 0xa9, 0xfa, 0x89, 0xbd, 0x3e, 0x04, 0x83, 0x36, 0xe5, 0x93, 0x31, 0x18, 0x6d, 0x27, 0x0d,
	0x9f, 0x81, 0x61, 0xc9, 0x8a, 0x54, 0x0f, 0xad, 0x67, 0xf9, 0x56, 0x60, 0x27, 0xa0, 0x64, 0xc5,
	0x1b, 0x65, 0xf9, 0x37, 0x00, 0x00, 0xff, 0xff, 0xae, 0x13, 0x3b, 0x44, 0x73, 0x07, 0x00, 0x00,
}
