// Code generated by protoc-gen-go. DO NOT EDIT.
// source: envoy/api/v2/cds.proto

package envoy_api_v2

import (
	context "context"
	fmt "fmt"
	auth "github.com/envoyproxy/go-control-plane/envoy/api/v2/auth"
	cluster "github.com/envoyproxy/go-control-plane/envoy/api/v2/cluster"
	core "github.com/envoyproxy/go-control-plane/envoy/api/v2/core"
	_type "github.com/envoyproxy/go-control-plane/envoy/type"
	_ "github.com/envoyproxy/protoc-gen-validate/validate"
	proto "github.com/golang/protobuf/proto"
	any "github.com/golang/protobuf/ptypes/any"
	duration "github.com/golang/protobuf/ptypes/duration"
	_struct "github.com/golang/protobuf/ptypes/struct"
	wrappers "github.com/golang/protobuf/ptypes/wrappers"
	_ "google.golang.org/genproto/googleapis/api/annotations"
	grpc "google.golang.org/grpc"
	codes "google.golang.org/grpc/codes"
	status "google.golang.org/grpc/status"
	math "math"
)

// 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.ProtoPackageIsVersion3 // please upgrade the proto package

type Cluster_DiscoveryType int32

const (
	Cluster_STATIC       Cluster_DiscoveryType = 0
	Cluster_STRICT_DNS   Cluster_DiscoveryType = 1
	Cluster_LOGICAL_DNS  Cluster_DiscoveryType = 2
	Cluster_EDS          Cluster_DiscoveryType = 3
	Cluster_ORIGINAL_DST Cluster_DiscoveryType = 4
)

var Cluster_DiscoveryType_name = map[int32]string{
	0: "STATIC",
	1: "STRICT_DNS",
	2: "LOGICAL_DNS",
	3: "EDS",
	4: "ORIGINAL_DST",
}

var Cluster_DiscoveryType_value = map[string]int32{
	"STATIC":       0,
	"STRICT_DNS":   1,
	"LOGICAL_DNS":  2,
	"EDS":          3,
	"ORIGINAL_DST": 4,
}

func (x Cluster_DiscoveryType) String() string {
	return proto.EnumName(Cluster_DiscoveryType_name, int32(x))
}

func (Cluster_DiscoveryType) EnumDescriptor() ([]byte, []int) {
	return fileDescriptor_e73f50fbb1daa302, []int{0, 0}
}

type Cluster_LbPolicy int32

const (
	Cluster_ROUND_ROBIN                  Cluster_LbPolicy = 0
	Cluster_LEAST_REQUEST                Cluster_LbPolicy = 1
	Cluster_RING_HASH                    Cluster_LbPolicy = 2
	Cluster_RANDOM                       Cluster_LbPolicy = 3
	Cluster_ORIGINAL_DST_LB              Cluster_LbPolicy = 4 // Deprecated: Do not use.
	Cluster_MAGLEV                       Cluster_LbPolicy = 5
	Cluster_CLUSTER_PROVIDED             Cluster_LbPolicy = 6
	Cluster_LOAD_BALANCING_POLICY_CONFIG Cluster_LbPolicy = 7
)

var Cluster_LbPolicy_name = map[int32]string{
	0: "ROUND_ROBIN",
	1: "LEAST_REQUEST",
	2: "RING_HASH",
	3: "RANDOM",
	4: "ORIGINAL_DST_LB",
	5: "MAGLEV",
	6: "CLUSTER_PROVIDED",
	7: "LOAD_BALANCING_POLICY_CONFIG",
}

var Cluster_LbPolicy_value = map[string]int32{
	"ROUND_ROBIN":                  0,
	"LEAST_REQUEST":                1,
	"RING_HASH":                    2,
	"RANDOM":                       3,
	"ORIGINAL_DST_LB":              4,
	"MAGLEV":                       5,
	"CLUSTER_PROVIDED":             6,
	"LOAD_BALANCING_POLICY_CONFIG": 7,
}

func (x Cluster_LbPolicy) String() string {
	return proto.EnumName(Cluster_LbPolicy_name, int32(x))
}

func (Cluster_LbPolicy) EnumDescriptor() ([]byte, []int) {
	return fileDescriptor_e73f50fbb1daa302, []int{0, 1}
}

type Cluster_DnsLookupFamily int32

const (
	Cluster_AUTO    Cluster_DnsLookupFamily = 0
	Cluster_V4_ONLY Cluster_DnsLookupFamily = 1
	Cluster_V6_ONLY Cluster_DnsLookupFamily = 2
)

var Cluster_DnsLookupFamily_name = map[int32]string{
	0: "AUTO",
	1: "V4_ONLY",
	2: "V6_ONLY",
}

var Cluster_DnsLookupFamily_value = map[string]int32{
	"AUTO":    0,
	"V4_ONLY": 1,
	"V6_ONLY": 2,
}

func (x Cluster_DnsLookupFamily) String() string {
	return proto.EnumName(Cluster_DnsLookupFamily_name, int32(x))
}

func (Cluster_DnsLookupFamily) EnumDescriptor() ([]byte, []int) {
	return fileDescriptor_e73f50fbb1daa302, []int{0, 2}
}

type Cluster_ClusterProtocolSelection int32

const (
	Cluster_USE_CONFIGURED_PROTOCOL Cluster_ClusterProtocolSelection = 0
	Cluster_USE_DOWNSTREAM_PROTOCOL Cluster_ClusterProtocolSelection = 1
)

var Cluster_ClusterProtocolSelection_name = map[int32]string{
	0: "USE_CONFIGURED_PROTOCOL",
	1: "USE_DOWNSTREAM_PROTOCOL",
}

var Cluster_ClusterProtocolSelection_value = map[string]int32{
	"USE_CONFIGURED_PROTOCOL": 0,
	"USE_DOWNSTREAM_PROTOCOL": 1,
}

func (x Cluster_ClusterProtocolSelection) String() string {
	return proto.EnumName(Cluster_ClusterProtocolSelection_name, int32(x))
}

func (Cluster_ClusterProtocolSelection) EnumDescriptor() ([]byte, []int) {
	return fileDescriptor_e73f50fbb1daa302, []int{0, 3}
}

type Cluster_LbSubsetConfig_LbSubsetFallbackPolicy int32

const (
	Cluster_LbSubsetConfig_NO_FALLBACK    Cluster_LbSubsetConfig_LbSubsetFallbackPolicy = 0
	Cluster_LbSubsetConfig_ANY_ENDPOINT   Cluster_LbSubsetConfig_LbSubsetFallbackPolicy = 1
	Cluster_LbSubsetConfig_DEFAULT_SUBSET Cluster_LbSubsetConfig_LbSubsetFallbackPolicy = 2
)

var Cluster_LbSubsetConfig_LbSubsetFallbackPolicy_name = map[int32]string{
	0: "NO_FALLBACK",
	1: "ANY_ENDPOINT",
	2: "DEFAULT_SUBSET",
}

var Cluster_LbSubsetConfig_LbSubsetFallbackPolicy_value = map[string]int32{
	"NO_FALLBACK":    0,
	"ANY_ENDPOINT":   1,
	"DEFAULT_SUBSET": 2,
}

func (x Cluster_LbSubsetConfig_LbSubsetFallbackPolicy) String() string {
	return proto.EnumName(Cluster_LbSubsetConfig_LbSubsetFallbackPolicy_name, int32(x))
}

func (Cluster_LbSubsetConfig_LbSubsetFallbackPolicy) EnumDescriptor() ([]byte, []int) {
	return fileDescriptor_e73f50fbb1daa302, []int{0, 3, 0}
}

type Cluster_LbSubsetConfig_LbSubsetSelector_LbSubsetSelectorFallbackPolicy int32

const (
	Cluster_LbSubsetConfig_LbSubsetSelector_NOT_DEFINED    Cluster_LbSubsetConfig_LbSubsetSelector_LbSubsetSelectorFallbackPolicy = 0
	Cluster_LbSubsetConfig_LbSubsetSelector_NO_FALLBACK    Cluster_LbSubsetConfig_LbSubsetSelector_LbSubsetSelectorFallbackPolicy = 1
	Cluster_LbSubsetConfig_LbSubsetSelector_ANY_ENDPOINT   Cluster_LbSubsetConfig_LbSubsetSelector_LbSubsetSelectorFallbackPolicy = 2
	Cluster_LbSubsetConfig_LbSubsetSelector_DEFAULT_SUBSET Cluster_LbSubsetConfig_LbSubsetSelector_LbSubsetSelectorFallbackPolicy = 3
)

var Cluster_LbSubsetConfig_LbSubsetSelector_LbSubsetSelectorFallbackPolicy_name = map[int32]string{
	0: "NOT_DEFINED",
	1: "NO_FALLBACK",
	2: "ANY_ENDPOINT",
	3: "DEFAULT_SUBSET",
}

var Cluster_LbSubsetConfig_LbSubsetSelector_LbSubsetSelectorFallbackPolicy_value = map[string]int32{
	"NOT_DEFINED":    0,
	"NO_FALLBACK":    1,
	"ANY_ENDPOINT":   2,
	"DEFAULT_SUBSET": 3,
}

func (x Cluster_LbSubsetConfig_LbSubsetSelector_LbSubsetSelectorFallbackPolicy) String() string {
	return proto.EnumName(Cluster_LbSubsetConfig_LbSubsetSelector_LbSubsetSelectorFallbackPolicy_name, int32(x))
}

func (Cluster_LbSubsetConfig_LbSubsetSelector_LbSubsetSelectorFallbackPolicy) EnumDescriptor() ([]byte, []int) {
	return fileDescriptor_e73f50fbb1daa302, []int{0, 3, 0, 0}
}

type Cluster_RingHashLbConfig_HashFunction int32

const (
	Cluster_RingHashLbConfig_XX_HASH       Cluster_RingHashLbConfig_HashFunction = 0
	Cluster_RingHashLbConfig_MURMUR_HASH_2 Cluster_RingHashLbConfig_HashFunction = 1
)

var Cluster_RingHashLbConfig_HashFunction_name = map[int32]string{
	0: "XX_HASH",
	1: "MURMUR_HASH_2",
}

var Cluster_RingHashLbConfig_HashFunction_value = map[string]int32{
	"XX_HASH":       0,
	"MURMUR_HASH_2": 1,
}

func (x Cluster_RingHashLbConfig_HashFunction) String() string {
	return proto.EnumName(Cluster_RingHashLbConfig_HashFunction_name, int32(x))
}

func (Cluster_RingHashLbConfig_HashFunction) EnumDescriptor() ([]byte, []int) {
	return fileDescriptor_e73f50fbb1daa302, []int{0, 5, 0}
}

type Cluster struct {
	TransportSocketMatches []*Cluster_TransportSocketMatch `protobuf:"bytes,43,rep,name=transport_socket_matches,json=transportSocketMatches,proto3" json:"transport_socket_matches,omitempty"`
	Name                   string                          `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
	AltStatName            string                          `protobuf:"bytes,28,opt,name=alt_stat_name,json=altStatName,proto3" json:"alt_stat_name,omitempty"`
	// Types that are valid to be assigned to ClusterDiscoveryType:
	//	*Cluster_Type
	//	*Cluster_ClusterType
	ClusterDiscoveryType          isCluster_ClusterDiscoveryType `protobuf_oneof:"cluster_discovery_type"`
	EdsClusterConfig              *Cluster_EdsClusterConfig      `protobuf:"bytes,3,opt,name=eds_cluster_config,json=edsClusterConfig,proto3" json:"eds_cluster_config,omitempty"`
	ConnectTimeout                *duration.Duration             `protobuf:"bytes,4,opt,name=connect_timeout,json=connectTimeout,proto3" json:"connect_timeout,omitempty"`
	PerConnectionBufferLimitBytes *wrappers.UInt32Value          `protobuf:"bytes,5,opt,name=per_connection_buffer_limit_bytes,json=perConnectionBufferLimitBytes,proto3" json:"per_connection_buffer_limit_bytes,omitempty"`
	LbPolicy                      Cluster_LbPolicy               `protobuf:"varint,6,opt,name=lb_policy,json=lbPolicy,proto3,enum=envoy.api.v2.Cluster_LbPolicy" json:"lb_policy,omitempty"`
	Hosts                         []*core.Address                `protobuf:"bytes,7,rep,name=hosts,proto3" json:"hosts,omitempty"`
	LoadAssignment                *ClusterLoadAssignment         `protobuf:"bytes,33,opt,name=load_assignment,json=loadAssignment,proto3" json:"load_assignment,omitempty"`
	HealthChecks                  []*core.HealthCheck            `protobuf:"bytes,8,rep,name=health_checks,json=healthChecks,proto3" json:"health_checks,omitempty"`
	MaxRequestsPerConnection      *wrappers.UInt32Value          `protobuf:"bytes,9,opt,name=max_requests_per_connection,json=maxRequestsPerConnection,proto3" json:"max_requests_per_connection,omitempty"`
	CircuitBreakers               *cluster.CircuitBreakers       `protobuf:"bytes,10,opt,name=circuit_breakers,json=circuitBreakers,proto3" json:"circuit_breakers,omitempty"`
	TlsContext                    *auth.UpstreamTlsContext       `protobuf:"bytes,11,opt,name=tls_context,json=tlsContext,proto3" json:"tls_context,omitempty"` // Deprecated: Do not use.
	CommonHttpProtocolOptions     *core.HttpProtocolOptions      `protobuf:"bytes,29,opt,name=common_http_protocol_options,json=commonHttpProtocolOptions,proto3" json:"common_http_protocol_options,omitempty"`
	HttpProtocolOptions           *core.Http1ProtocolOptions     `protobuf:"bytes,13,opt,name=http_protocol_options,json=httpProtocolOptions,proto3" json:"http_protocol_options,omitempty"`
	Http2ProtocolOptions          *core.Http2ProtocolOptions     `protobuf:"bytes,14,opt,name=http2_protocol_options,json=http2ProtocolOptions,proto3" json:"http2_protocol_options,omitempty"`
	ExtensionProtocolOptions      map[string]*_struct.Struct     `protobuf:"bytes,35,rep,name=extension_protocol_options,json=extensionProtocolOptions,proto3" json:"extension_protocol_options,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` // Deprecated: Do not use.
	TypedExtensionProtocolOptions map[string]*any.Any            `protobuf:"bytes,36,rep,name=typed_extension_protocol_options,json=typedExtensionProtocolOptions,proto3" json:"typed_extension_protocol_options,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
	DnsRefreshRate                *duration.Duration             `protobuf:"bytes,16,opt,name=dns_refresh_rate,json=dnsRefreshRate,proto3" json:"dns_refresh_rate,omitempty"`
	DnsFailureRefreshRate         *Cluster_RefreshRate           `protobuf:"bytes,44,opt,name=dns_failure_refresh_rate,json=dnsFailureRefreshRate,proto3" json:"dns_failure_refresh_rate,omitempty"`
	RespectDnsTtl                 bool                           `protobuf:"varint,39,opt,name=respect_dns_ttl,json=respectDnsTtl,proto3" json:"respect_dns_ttl,omitempty"`
	DnsLookupFamily               Cluster_DnsLookupFamily        `protobuf:"varint,17,opt,name=dns_lookup_family,json=dnsLookupFamily,proto3,enum=envoy.api.v2.Cluster_DnsLookupFamily" json:"dns_lookup_family,omitempty"`
	DnsResolvers                  []*core.Address                `protobuf:"bytes,18,rep,name=dns_resolvers,json=dnsResolvers,proto3" json:"dns_resolvers,omitempty"`
	OutlierDetection              *cluster.OutlierDetection      `protobuf:"bytes,19,opt,name=outlier_detection,json=outlierDetection,proto3" json:"outlier_detection,omitempty"`
	CleanupInterval               *duration.Duration             `protobuf:"bytes,20,opt,name=cleanup_interval,json=cleanupInterval,proto3" json:"cleanup_interval,omitempty"`
	UpstreamBindConfig            *core.BindConfig               `protobuf:"bytes,21,opt,name=upstream_bind_config,json=upstreamBindConfig,proto3" json:"upstream_bind_config,omitempty"`
	LbSubsetConfig                *Cluster_LbSubsetConfig        `protobuf:"bytes,22,opt,name=lb_subset_config,json=lbSubsetConfig,proto3" json:"lb_subset_config,omitempty"`
	// Types that are valid to be assigned to LbConfig:
	//	*Cluster_RingHashLbConfig_
	//	*Cluster_OriginalDstLbConfig_
	//	*Cluster_LeastRequestLbConfig_
	LbConfig                            isCluster_LbConfig               `protobuf_oneof:"lb_config"`
	CommonLbConfig                      *Cluster_CommonLbConfig          `protobuf:"bytes,27,opt,name=common_lb_config,json=commonLbConfig,proto3" json:"common_lb_config,omitempty"`
	TransportSocket                     *core.TransportSocket            `protobuf:"bytes,24,opt,name=transport_socket,json=transportSocket,proto3" json:"transport_socket,omitempty"`
	Metadata                            *core.Metadata                   `protobuf:"bytes,25,opt,name=metadata,proto3" json:"metadata,omitempty"`
	ProtocolSelection                   Cluster_ClusterProtocolSelection `protobuf:"varint,26,opt,name=protocol_selection,json=protocolSelection,proto3,enum=envoy.api.v2.Cluster_ClusterProtocolSelection" json:"protocol_selection,omitempty"`
	UpstreamConnectionOptions           *UpstreamConnectionOptions       `protobuf:"bytes,30,opt,name=upstream_connection_options,json=upstreamConnectionOptions,proto3" json:"upstream_connection_options,omitempty"`
	CloseConnectionsOnHostHealthFailure bool                             `protobuf:"varint,31,opt,name=close_connections_on_host_health_failure,json=closeConnectionsOnHostHealthFailure,proto3" json:"close_connections_on_host_health_failure,omitempty"`
	DrainConnectionsOnHostRemoval       bool                             `protobuf:"varint,32,opt,name=drain_connections_on_host_removal,json=drainConnectionsOnHostRemoval,proto3" json:"drain_connections_on_host_removal,omitempty"`
	Filters                             []*cluster.Filter                `protobuf:"bytes,40,rep,name=filters,proto3" json:"filters,omitempty"`
	LoadBalancingPolicy                 *LoadBalancingPolicy             `protobuf:"bytes,41,opt,name=load_balancing_policy,json=loadBalancingPolicy,proto3" json:"load_balancing_policy,omitempty"`
	LrsServer                           *core.ConfigSource               `protobuf:"bytes,42,opt,name=lrs_server,json=lrsServer,proto3" json:"lrs_server,omitempty"`
	XXX_NoUnkeyedLiteral                struct{}                         `json:"-"`
	XXX_unrecognized                    []byte                           `json:"-"`
	XXX_sizecache                       int32                            `json:"-"`
}

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

func (m *Cluster) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_Cluster.Unmarshal(m, b)
}
func (m *Cluster) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_Cluster.Marshal(b, m, deterministic)
}
func (m *Cluster) XXX_Merge(src proto.Message) {
	xxx_messageInfo_Cluster.Merge(m, src)
}
func (m *Cluster) XXX_Size() int {
	return xxx_messageInfo_Cluster.Size(m)
}
func (m *Cluster) XXX_DiscardUnknown() {
	xxx_messageInfo_Cluster.DiscardUnknown(m)
}

var xxx_messageInfo_Cluster proto.InternalMessageInfo

func (m *Cluster) GetTransportSocketMatches() []*Cluster_TransportSocketMatch {
	if m != nil {
		return m.TransportSocketMatches
	}
	return nil
}

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

func (m *Cluster) GetAltStatName() string {
	if m != nil {
		return m.AltStatName
	}
	return ""
}

type isCluster_ClusterDiscoveryType interface {
	isCluster_ClusterDiscoveryType()
}

type Cluster_Type struct {
	Type Cluster_DiscoveryType `protobuf:"varint,2,opt,name=type,proto3,enum=envoy.api.v2.Cluster_DiscoveryType,oneof"`
}

type Cluster_ClusterType struct {
	ClusterType *Cluster_CustomClusterType `protobuf:"bytes,38,opt,name=cluster_type,json=clusterType,proto3,oneof"`
}

func (*Cluster_Type) isCluster_ClusterDiscoveryType() {}

func (*Cluster_ClusterType) isCluster_ClusterDiscoveryType() {}

func (m *Cluster) GetClusterDiscoveryType() isCluster_ClusterDiscoveryType {
	if m != nil {
		return m.ClusterDiscoveryType
	}
	return nil
}

func (m *Cluster) GetType() Cluster_DiscoveryType {
	if x, ok := m.GetClusterDiscoveryType().(*Cluster_Type); ok {
		return x.Type
	}
	return Cluster_STATIC
}

func (m *Cluster) GetClusterType() *Cluster_CustomClusterType {
	if x, ok := m.GetClusterDiscoveryType().(*Cluster_ClusterType); ok {
		return x.ClusterType
	}
	return nil
}

func (m *Cluster) GetEdsClusterConfig() *Cluster_EdsClusterConfig {
	if m != nil {
		return m.EdsClusterConfig
	}
	return nil
}

func (m *Cluster) GetConnectTimeout() *duration.Duration {
	if m != nil {
		return m.ConnectTimeout
	}
	return nil
}

func (m *Cluster) GetPerConnectionBufferLimitBytes() *wrappers.UInt32Value {
	if m != nil {
		return m.PerConnectionBufferLimitBytes
	}
	return nil
}

func (m *Cluster) GetLbPolicy() Cluster_LbPolicy {
	if m != nil {
		return m.LbPolicy
	}
	return Cluster_ROUND_ROBIN
}

func (m *Cluster) GetHosts() []*core.Address {
	if m != nil {
		return m.Hosts
	}
	return nil
}

func (m *Cluster) GetLoadAssignment() *ClusterLoadAssignment {
	if m != nil {
		return m.LoadAssignment
	}
	return nil
}

func (m *Cluster) GetHealthChecks() []*core.HealthCheck {
	if m != nil {
		return m.HealthChecks
	}
	return nil
}

func (m *Cluster) GetMaxRequestsPerConnection() *wrappers.UInt32Value {
	if m != nil {
		return m.MaxRequestsPerConnection
	}
	return nil
}

func (m *Cluster) GetCircuitBreakers() *cluster.CircuitBreakers {
	if m != nil {
		return m.CircuitBreakers
	}
	return nil
}

// Deprecated: Do not use.
func (m *Cluster) GetTlsContext() *auth.UpstreamTlsContext {
	if m != nil {
		return m.TlsContext
	}
	return nil
}

func (m *Cluster) GetCommonHttpProtocolOptions() *core.HttpProtocolOptions {
	if m != nil {
		return m.CommonHttpProtocolOptions
	}
	return nil
}

func (m *Cluster) GetHttpProtocolOptions() *core.Http1ProtocolOptions {
	if m != nil {
		return m.HttpProtocolOptions
	}
	return nil
}

func (m *Cluster) GetHttp2ProtocolOptions() *core.Http2ProtocolOptions {
	if m != nil {
		return m.Http2ProtocolOptions
	}
	return nil
}

// Deprecated: Do not use.
func (m *Cluster) GetExtensionProtocolOptions() map[string]*_struct.Struct {
	if m != nil {
		return m.ExtensionProtocolOptions
	}
	return nil
}

func (m *Cluster) GetTypedExtensionProtocolOptions() map[string]*any.Any {
	if m != nil {
		return m.TypedExtensionProtocolOptions
	}
	return nil
}

func (m *Cluster) GetDnsRefreshRate() *duration.Duration {
	if m != nil {
		return m.DnsRefreshRate
	}
	return nil
}

func (m *Cluster) GetDnsFailureRefreshRate() *Cluster_RefreshRate {
	if m != nil {
		return m.DnsFailureRefreshRate
	}
	return nil
}

func (m *Cluster) GetRespectDnsTtl() bool {
	if m != nil {
		return m.RespectDnsTtl
	}
	return false
}

func (m *Cluster) GetDnsLookupFamily() Cluster_DnsLookupFamily {
	if m != nil {
		return m.DnsLookupFamily
	}
	return Cluster_AUTO
}

func (m *Cluster) GetDnsResolvers() []*core.Address {
	if m != nil {
		return m.DnsResolvers
	}
	return nil
}

func (m *Cluster) GetOutlierDetection() *cluster.OutlierDetection {
	if m != nil {
		return m.OutlierDetection
	}
	return nil
}

func (m *Cluster) GetCleanupInterval() *duration.Duration {
	if m != nil {
		return m.CleanupInterval
	}
	return nil
}

func (m *Cluster) GetUpstreamBindConfig() *core.BindConfig {
	if m != nil {
		return m.UpstreamBindConfig
	}
	return nil
}

func (m *Cluster) GetLbSubsetConfig() *Cluster_LbSubsetConfig {
	if m != nil {
		return m.LbSubsetConfig
	}
	return nil
}

type isCluster_LbConfig interface {
	isCluster_LbConfig()
}

type Cluster_RingHashLbConfig_ struct {
	RingHashLbConfig *Cluster_RingHashLbConfig `protobuf:"bytes,23,opt,name=ring_hash_lb_config,json=ringHashLbConfig,proto3,oneof"`
}

type Cluster_OriginalDstLbConfig_ struct {
	OriginalDstLbConfig *Cluster_OriginalDstLbConfig `protobuf:"bytes,34,opt,name=original_dst_lb_config,json=originalDstLbConfig,proto3,oneof"`
}

type Cluster_LeastRequestLbConfig_ struct {
	LeastRequestLbConfig *Cluster_LeastRequestLbConfig `protobuf:"bytes,37,opt,name=least_request_lb_config,json=leastRequestLbConfig,proto3,oneof"`
}

func (*Cluster_RingHashLbConfig_) isCluster_LbConfig() {}

func (*Cluster_OriginalDstLbConfig_) isCluster_LbConfig() {}

func (*Cluster_LeastRequestLbConfig_) isCluster_LbConfig() {}

func (m *Cluster) GetLbConfig() isCluster_LbConfig {
	if m != nil {
		return m.LbConfig
	}
	return nil
}

func (m *Cluster) GetRingHashLbConfig() *Cluster_RingHashLbConfig {
	if x, ok := m.GetLbConfig().(*Cluster_RingHashLbConfig_); ok {
		return x.RingHashLbConfig
	}
	return nil
}

func (m *Cluster) GetOriginalDstLbConfig() *Cluster_OriginalDstLbConfig {
	if x, ok := m.GetLbConfig().(*Cluster_OriginalDstLbConfig_); ok {
		return x.OriginalDstLbConfig
	}
	return nil
}

func (m *Cluster) GetLeastRequestLbConfig() *Cluster_LeastRequestLbConfig {
	if x, ok := m.GetLbConfig().(*Cluster_LeastRequestLbConfig_); ok {
		return x.LeastRequestLbConfig
	}
	return nil
}

func (m *Cluster) GetCommonLbConfig() *Cluster_CommonLbConfig {
	if m != nil {
		return m.CommonLbConfig
	}
	return nil
}

func (m *Cluster) GetTransportSocket() *core.TransportSocket {
	if m != nil {
		return m.TransportSocket
	}
	return nil
}

func (m *Cluster) GetMetadata() *core.Metadata {
	if m != nil {
		return m.Metadata
	}
	return nil
}

func (m *Cluster) GetProtocolSelection() Cluster_ClusterProtocolSelection {
	if m != nil {
		return m.ProtocolSelection
	}
	return Cluster_USE_CONFIGURED_PROTOCOL
}

func (m *Cluster) GetUpstreamConnectionOptions() *UpstreamConnectionOptions {
	if m != nil {
		return m.UpstreamConnectionOptions
	}
	return nil
}

func (m *Cluster) GetCloseConnectionsOnHostHealthFailure() bool {
	if m != nil {
		return m.CloseConnectionsOnHostHealthFailure
	}
	return false
}

func (m *Cluster) GetDrainConnectionsOnHostRemoval() bool {
	if m != nil {
		return m.DrainConnectionsOnHostRemoval
	}
	return false
}

func (m *Cluster) GetFilters() []*cluster.Filter {
	if m != nil {
		return m.Filters
	}
	return nil
}

func (m *Cluster) GetLoadBalancingPolicy() *LoadBalancingPolicy {
	if m != nil {
		return m.LoadBalancingPolicy
	}
	return nil
}

func (m *Cluster) GetLrsServer() *core.ConfigSource {
	if m != nil {
		return m.LrsServer
	}
	return nil
}

// XXX_OneofWrappers is for the internal use of the proto package.
func (*Cluster) XXX_OneofWrappers() []interface{} {
	return []interface{}{
		(*Cluster_Type)(nil),
		(*Cluster_ClusterType)(nil),
		(*Cluster_RingHashLbConfig_)(nil),
		(*Cluster_OriginalDstLbConfig_)(nil),
		(*Cluster_LeastRequestLbConfig_)(nil),
	}
}

type Cluster_TransportSocketMatch struct {
	Name                 string                `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
	Match                *_struct.Struct       `protobuf:"bytes,2,opt,name=match,proto3" json:"match,omitempty"`
	TransportSocket      *core.TransportSocket `protobuf:"bytes,3,opt,name=transport_socket,json=transportSocket,proto3" json:"transport_socket,omitempty"`
	XXX_NoUnkeyedLiteral struct{}              `json:"-"`
	XXX_unrecognized     []byte                `json:"-"`
	XXX_sizecache        int32                 `json:"-"`
}

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

func (m *Cluster_TransportSocketMatch) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_Cluster_TransportSocketMatch.Unmarshal(m, b)
}
func (m *Cluster_TransportSocketMatch) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_Cluster_TransportSocketMatch.Marshal(b, m, deterministic)
}
func (m *Cluster_TransportSocketMatch) XXX_Merge(src proto.Message) {
	xxx_messageInfo_Cluster_TransportSocketMatch.Merge(m, src)
}
func (m *Cluster_TransportSocketMatch) XXX_Size() int {
	return xxx_messageInfo_Cluster_TransportSocketMatch.Size(m)
}
func (m *Cluster_TransportSocketMatch) XXX_DiscardUnknown() {
	xxx_messageInfo_Cluster_TransportSocketMatch.DiscardUnknown(m)
}

var xxx_messageInfo_Cluster_TransportSocketMatch proto.InternalMessageInfo

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

func (m *Cluster_TransportSocketMatch) GetMatch() *_struct.Struct {
	if m != nil {
		return m.Match
	}
	return nil
}

func (m *Cluster_TransportSocketMatch) GetTransportSocket() *core.TransportSocket {
	if m != nil {
		return m.TransportSocket
	}
	return nil
}

type Cluster_CustomClusterType struct {
	Name                 string   `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
	TypedConfig          *any.Any `protobuf:"bytes,2,opt,name=typed_config,json=typedConfig,proto3" json:"typed_config,omitempty"`
	XXX_NoUnkeyedLiteral struct{} `json:"-"`
	XXX_unrecognized     []byte   `json:"-"`
	XXX_sizecache        int32    `json:"-"`
}

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

func (m *Cluster_CustomClusterType) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_Cluster_CustomClusterType.Unmarshal(m, b)
}
func (m *Cluster_CustomClusterType) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_Cluster_CustomClusterType.Marshal(b, m, deterministic)
}
func (m *Cluster_CustomClusterType) XXX_Merge(src proto.Message) {
	xxx_messageInfo_Cluster_CustomClusterType.Merge(m, src)
}
func (m *Cluster_CustomClusterType) XXX_Size() int {
	return xxx_messageInfo_Cluster_CustomClusterType.Size(m)
}
func (m *Cluster_CustomClusterType) XXX_DiscardUnknown() {
	xxx_messageInfo_Cluster_CustomClusterType.DiscardUnknown(m)
}

var xxx_messageInfo_Cluster_CustomClusterType proto.InternalMessageInfo

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

func (m *Cluster_CustomClusterType) GetTypedConfig() *any.Any {
	if m != nil {
		return m.TypedConfig
	}
	return nil
}

type Cluster_EdsClusterConfig struct {
	EdsConfig            *core.ConfigSource `protobuf:"bytes,1,opt,name=eds_config,json=edsConfig,proto3" json:"eds_config,omitempty"`
	ServiceName          string             `protobuf:"bytes,2,opt,name=service_name,json=serviceName,proto3" json:"service_name,omitempty"`
	XXX_NoUnkeyedLiteral struct{}           `json:"-"`
	XXX_unrecognized     []byte             `json:"-"`
	XXX_sizecache        int32              `json:"-"`
}

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

func (m *Cluster_EdsClusterConfig) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_Cluster_EdsClusterConfig.Unmarshal(m, b)
}
func (m *Cluster_EdsClusterConfig) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_Cluster_EdsClusterConfig.Marshal(b, m, deterministic)
}
func (m *Cluster_EdsClusterConfig) XXX_Merge(src proto.Message) {
	xxx_messageInfo_Cluster_EdsClusterConfig.Merge(m, src)
}
func (m *Cluster_EdsClusterConfig) XXX_Size() int {
	return xxx_messageInfo_Cluster_EdsClusterConfig.Size(m)
}
func (m *Cluster_EdsClusterConfig) XXX_DiscardUnknown() {
	xxx_messageInfo_Cluster_EdsClusterConfig.DiscardUnknown(m)
}

var xxx_messageInfo_Cluster_EdsClusterConfig proto.InternalMessageInfo

func (m *Cluster_EdsClusterConfig) GetEdsConfig() *core.ConfigSource {
	if m != nil {
		return m.EdsConfig
	}
	return nil
}

func (m *Cluster_EdsClusterConfig) GetServiceName() string {
	if m != nil {
		return m.ServiceName
	}
	return ""
}

type Cluster_LbSubsetConfig struct {
	FallbackPolicy       Cluster_LbSubsetConfig_LbSubsetFallbackPolicy `protobuf:"varint,1,opt,name=fallback_policy,json=fallbackPolicy,proto3,enum=envoy.api.v2.Cluster_LbSubsetConfig_LbSubsetFallbackPolicy" json:"fallback_policy,omitempty"`
	DefaultSubset        *_struct.Struct                               `protobuf:"bytes,2,opt,name=default_subset,json=defaultSubset,proto3" json:"default_subset,omitempty"`
	SubsetSelectors      []*Cluster_LbSubsetConfig_LbSubsetSelector    `protobuf:"bytes,3,rep,name=subset_selectors,json=subsetSelectors,proto3" json:"subset_selectors,omitempty"`
	LocalityWeightAware  bool                                          `protobuf:"varint,4,opt,name=locality_weight_aware,json=localityWeightAware,proto3" json:"locality_weight_aware,omitempty"`
	ScaleLocalityWeight  bool                                          `protobuf:"varint,5,opt,name=scale_locality_weight,json=scaleLocalityWeight,proto3" json:"scale_locality_weight,omitempty"`
	PanicModeAny         bool                                          `protobuf:"varint,6,opt,name=panic_mode_any,json=panicModeAny,proto3" json:"panic_mode_any,omitempty"`
	ListAsAny            bool                                          `protobuf:"varint,7,opt,name=list_as_any,json=listAsAny,proto3" json:"list_as_any,omitempty"`
	XXX_NoUnkeyedLiteral struct{}                                      `json:"-"`
	XXX_unrecognized     []byte                                        `json:"-"`
	XXX_sizecache        int32                                         `json:"-"`
}

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

func (m *Cluster_LbSubsetConfig) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_Cluster_LbSubsetConfig.Unmarshal(m, b)
}
func (m *Cluster_LbSubsetConfig) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_Cluster_LbSubsetConfig.Marshal(b, m, deterministic)
}
func (m *Cluster_LbSubsetConfig) XXX_Merge(src proto.Message) {
	xxx_messageInfo_Cluster_LbSubsetConfig.Merge(m, src)
}
func (m *Cluster_LbSubsetConfig) XXX_Size() int {
	return xxx_messageInfo_Cluster_LbSubsetConfig.Size(m)
}
func (m *Cluster_LbSubsetConfig) XXX_DiscardUnknown() {
	xxx_messageInfo_Cluster_LbSubsetConfig.DiscardUnknown(m)
}

var xxx_messageInfo_Cluster_LbSubsetConfig proto.InternalMessageInfo

func (m *Cluster_LbSubsetConfig) GetFallbackPolicy() Cluster_LbSubsetConfig_LbSubsetFallbackPolicy {
	if m != nil {
		return m.FallbackPolicy
	}
	return Cluster_LbSubsetConfig_NO_FALLBACK
}

func (m *Cluster_LbSubsetConfig) GetDefaultSubset() *_struct.Struct {
	if m != nil {
		return m.DefaultSubset
	}
	return nil
}

func (m *Cluster_LbSubsetConfig) GetSubsetSelectors() []*Cluster_LbSubsetConfig_LbSubsetSelector {
	if m != nil {
		return m.SubsetSelectors
	}
	return nil
}

func (m *Cluster_LbSubsetConfig) GetLocalityWeightAware() bool {
	if m != nil {
		return m.LocalityWeightAware
	}
	return false
}

func (m *Cluster_LbSubsetConfig) GetScaleLocalityWeight() bool {
	if m != nil {
		return m.ScaleLocalityWeight
	}
	return false
}

func (m *Cluster_LbSubsetConfig) GetPanicModeAny() bool {
	if m != nil {
		return m.PanicModeAny
	}
	return false
}

func (m *Cluster_LbSubsetConfig) GetListAsAny() bool {
	if m != nil {
		return m.ListAsAny
	}
	return false
}

type Cluster_LbSubsetConfig_LbSubsetSelector struct {
	Keys                 []string                                                               `protobuf:"bytes,1,rep,name=keys,proto3" json:"keys,omitempty"`
	FallbackPolicy       Cluster_LbSubsetConfig_LbSubsetSelector_LbSubsetSelectorFallbackPolicy `protobuf:"varint,2,opt,name=fallback_policy,json=fallbackPolicy,proto3,enum=envoy.api.v2.Cluster_LbSubsetConfig_LbSubsetSelector_LbSubsetSelectorFallbackPolicy" json:"fallback_policy,omitempty"`
	XXX_NoUnkeyedLiteral struct{}                                                               `json:"-"`
	XXX_unrecognized     []byte                                                                 `json:"-"`
	XXX_sizecache        int32                                                                  `json:"-"`
}

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

func (m *Cluster_LbSubsetConfig_LbSubsetSelector) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_Cluster_LbSubsetConfig_LbSubsetSelector.Unmarshal(m, b)
}
func (m *Cluster_LbSubsetConfig_LbSubsetSelector) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_Cluster_LbSubsetConfig_LbSubsetSelector.Marshal(b, m, deterministic)
}
func (m *Cluster_LbSubsetConfig_LbSubsetSelector) XXX_Merge(src proto.Message) {
	xxx_messageInfo_Cluster_LbSubsetConfig_LbSubsetSelector.Merge(m, src)
}
func (m *Cluster_LbSubsetConfig_LbSubsetSelector) XXX_Size() int {
	return xxx_messageInfo_Cluster_LbSubsetConfig_LbSubsetSelector.Size(m)
}
func (m *Cluster_LbSubsetConfig_LbSubsetSelector) XXX_DiscardUnknown() {
	xxx_messageInfo_Cluster_LbSubsetConfig_LbSubsetSelector.DiscardUnknown(m)
}

var xxx_messageInfo_Cluster_LbSubsetConfig_LbSubsetSelector proto.InternalMessageInfo

func (m *Cluster_LbSubsetConfig_LbSubsetSelector) GetKeys() []string {
	if m != nil {
		return m.Keys
	}
	return nil
}

func (m *Cluster_LbSubsetConfig_LbSubsetSelector) GetFallbackPolicy() Cluster_LbSubsetConfig_LbSubsetSelector_LbSubsetSelectorFallbackPolicy {
	if m != nil {
		return m.FallbackPolicy
	}
	return Cluster_LbSubsetConfig_LbSubsetSelector_NOT_DEFINED
}

type Cluster_LeastRequestLbConfig struct {
	ChoiceCount          *wrappers.UInt32Value `protobuf:"bytes,1,opt,name=choice_count,json=choiceCount,proto3" json:"choice_count,omitempty"`
	XXX_NoUnkeyedLiteral struct{}              `json:"-"`
	XXX_unrecognized     []byte                `json:"-"`
	XXX_sizecache        int32                 `json:"-"`
}

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

func (m *Cluster_LeastRequestLbConfig) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_Cluster_LeastRequestLbConfig.Unmarshal(m, b)
}
func (m *Cluster_LeastRequestLbConfig) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_Cluster_LeastRequestLbConfig.Marshal(b, m, deterministic)
}
func (m *Cluster_LeastRequestLbConfig) XXX_Merge(src proto.Message) {
	xxx_messageInfo_Cluster_LeastRequestLbConfig.Merge(m, src)
}
func (m *Cluster_LeastRequestLbConfig) XXX_Size() int {
	return xxx_messageInfo_Cluster_LeastRequestLbConfig.Size(m)
}
func (m *Cluster_LeastRequestLbConfig) XXX_DiscardUnknown() {
	xxx_messageInfo_Cluster_LeastRequestLbConfig.DiscardUnknown(m)
}

var xxx_messageInfo_Cluster_LeastRequestLbConfig proto.InternalMessageInfo

func (m *Cluster_LeastRequestLbConfig) GetChoiceCount() *wrappers.UInt32Value {
	if m != nil {
		return m.ChoiceCount
	}
	return nil
}

type Cluster_RingHashLbConfig struct {
	MinimumRingSize      *wrappers.UInt64Value                 `protobuf:"bytes,1,opt,name=minimum_ring_size,json=minimumRingSize,proto3" json:"minimum_ring_size,omitempty"`
	HashFunction         Cluster_RingHashLbConfig_HashFunction `protobuf:"varint,3,opt,name=hash_function,json=hashFunction,proto3,enum=envoy.api.v2.Cluster_RingHashLbConfig_HashFunction" json:"hash_function,omitempty"`
	MaximumRingSize      *wrappers.UInt64Value                 `protobuf:"bytes,4,opt,name=maximum_ring_size,json=maximumRingSize,proto3" json:"maximum_ring_size,omitempty"`
	XXX_NoUnkeyedLiteral struct{}                              `json:"-"`
	XXX_unrecognized     []byte                                `json:"-"`
	XXX_sizecache        int32                                 `json:"-"`
}

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

func (m *Cluster_RingHashLbConfig) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_Cluster_RingHashLbConfig.Unmarshal(m, b)
}
func (m *Cluster_RingHashLbConfig) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_Cluster_RingHashLbConfig.Marshal(b, m, deterministic)
}
func (m *Cluster_RingHashLbConfig) XXX_Merge(src proto.Message) {
	xxx_messageInfo_Cluster_RingHashLbConfig.Merge(m, src)
}
func (m *Cluster_RingHashLbConfig) XXX_Size() int {
	return xxx_messageInfo_Cluster_RingHashLbConfig.Size(m)
}
func (m *Cluster_RingHashLbConfig) XXX_DiscardUnknown() {
	xxx_messageInfo_Cluster_RingHashLbConfig.DiscardUnknown(m)
}

var xxx_messageInfo_Cluster_RingHashLbConfig proto.InternalMessageInfo

func (m *Cluster_RingHashLbConfig) GetMinimumRingSize() *wrappers.UInt64Value {
	if m != nil {
		return m.MinimumRingSize
	}
	return nil
}

func (m *Cluster_RingHashLbConfig) GetHashFunction() Cluster_RingHashLbConfig_HashFunction {
	if m != nil {
		return m.HashFunction
	}
	return Cluster_RingHashLbConfig_XX_HASH
}

func (m *Cluster_RingHashLbConfig) GetMaximumRingSize() *wrappers.UInt64Value {
	if m != nil {
		return m.MaximumRingSize
	}
	return nil
}

type Cluster_OriginalDstLbConfig struct {
	UseHttpHeader        bool     `protobuf:"varint,1,opt,name=use_http_header,json=useHttpHeader,proto3" json:"use_http_header,omitempty"`
	XXX_NoUnkeyedLiteral struct{} `json:"-"`
	XXX_unrecognized     []byte   `json:"-"`
	XXX_sizecache        int32    `json:"-"`
}

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

func (m *Cluster_OriginalDstLbConfig) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_Cluster_OriginalDstLbConfig.Unmarshal(m, b)
}
func (m *Cluster_OriginalDstLbConfig) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_Cluster_OriginalDstLbConfig.Marshal(b, m, deterministic)
}
func (m *Cluster_OriginalDstLbConfig) XXX_Merge(src proto.Message) {
	xxx_messageInfo_Cluster_OriginalDstLbConfig.Merge(m, src)
}
func (m *Cluster_OriginalDstLbConfig) XXX_Size() int {
	return xxx_messageInfo_Cluster_OriginalDstLbConfig.Size(m)
}
func (m *Cluster_OriginalDstLbConfig) XXX_DiscardUnknown() {
	xxx_messageInfo_Cluster_OriginalDstLbConfig.DiscardUnknown(m)
}

var xxx_messageInfo_Cluster_OriginalDstLbConfig proto.InternalMessageInfo

func (m *Cluster_OriginalDstLbConfig) GetUseHttpHeader() bool {
	if m != nil {
		return m.UseHttpHeader
	}
	return false
}

type Cluster_CommonLbConfig struct {
	HealthyPanicThreshold *_type.Percent `protobuf:"bytes,1,opt,name=healthy_panic_threshold,json=healthyPanicThreshold,proto3" json:"healthy_panic_threshold,omitempty"`
	// Types that are valid to be assigned to LocalityConfigSpecifier:
	//	*Cluster_CommonLbConfig_ZoneAwareLbConfig_
	//	*Cluster_CommonLbConfig_LocalityWeightedLbConfig_
	LocalityConfigSpecifier         isCluster_CommonLbConfig_LocalityConfigSpecifier `protobuf_oneof:"locality_config_specifier"`
	UpdateMergeWindow               *duration.Duration                               `protobuf:"bytes,4,opt,name=update_merge_window,json=updateMergeWindow,proto3" json:"update_merge_window,omitempty"`
	IgnoreNewHostsUntilFirstHc      bool                                             `protobuf:"varint,5,opt,name=ignore_new_hosts_until_first_hc,json=ignoreNewHostsUntilFirstHc,proto3" json:"ignore_new_hosts_until_first_hc,omitempty"`
	CloseConnectionsOnHostSetChange bool                                             `protobuf:"varint,6,opt,name=close_connections_on_host_set_change,json=closeConnectionsOnHostSetChange,proto3" json:"close_connections_on_host_set_change,omitempty"`
	XXX_NoUnkeyedLiteral            struct{}                                         `json:"-"`
	XXX_unrecognized                []byte                                           `json:"-"`
	XXX_sizecache                   int32                                            `json:"-"`
}

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

func (m *Cluster_CommonLbConfig) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_Cluster_CommonLbConfig.Unmarshal(m, b)
}
func (m *Cluster_CommonLbConfig) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_Cluster_CommonLbConfig.Marshal(b, m, deterministic)
}
func (m *Cluster_CommonLbConfig) XXX_Merge(src proto.Message) {
	xxx_messageInfo_Cluster_CommonLbConfig.Merge(m, src)
}
func (m *Cluster_CommonLbConfig) XXX_Size() int {
	return xxx_messageInfo_Cluster_CommonLbConfig.Size(m)
}
func (m *Cluster_CommonLbConfig) XXX_DiscardUnknown() {
	xxx_messageInfo_Cluster_CommonLbConfig.DiscardUnknown(m)
}

var xxx_messageInfo_Cluster_CommonLbConfig proto.InternalMessageInfo

func (m *Cluster_CommonLbConfig) GetHealthyPanicThreshold() *_type.Percent {
	if m != nil {
		return m.HealthyPanicThreshold
	}
	return nil
}

type isCluster_CommonLbConfig_LocalityConfigSpecifier interface {
	isCluster_CommonLbConfig_LocalityConfigSpecifier()
}

type Cluster_CommonLbConfig_ZoneAwareLbConfig_ struct {
	ZoneAwareLbConfig *Cluster_CommonLbConfig_ZoneAwareLbConfig `protobuf:"bytes,2,opt,name=zone_aware_lb_config,json=zoneAwareLbConfig,proto3,oneof"`
}

type Cluster_CommonLbConfig_LocalityWeightedLbConfig_ struct {
	LocalityWeightedLbConfig *Cluster_CommonLbConfig_LocalityWeightedLbConfig `protobuf:"bytes,3,opt,name=locality_weighted_lb_config,json=localityWeightedLbConfig,proto3,oneof"`
}

func (*Cluster_CommonLbConfig_ZoneAwareLbConfig_) isCluster_CommonLbConfig_LocalityConfigSpecifier() {}

func (*Cluster_CommonLbConfig_LocalityWeightedLbConfig_) isCluster_CommonLbConfig_LocalityConfigSpecifier() {
}

func (m *Cluster_CommonLbConfig) GetLocalityConfigSpecifier() isCluster_CommonLbConfig_LocalityConfigSpecifier {
	if m != nil {
		return m.LocalityConfigSpecifier
	}
	return nil
}

func (m *Cluster_CommonLbConfig) GetZoneAwareLbConfig() *Cluster_CommonLbConfig_ZoneAwareLbConfig {
	if x, ok := m.GetLocalityConfigSpecifier().(*Cluster_CommonLbConfig_ZoneAwareLbConfig_); ok {
		return x.ZoneAwareLbConfig
	}
	return nil
}

func (m *Cluster_CommonLbConfig) GetLocalityWeightedLbConfig() *Cluster_CommonLbConfig_LocalityWeightedLbConfig {
	if x, ok := m.GetLocalityConfigSpecifier().(*Cluster_CommonLbConfig_LocalityWeightedLbConfig_); ok {
		return x.LocalityWeightedLbConfig
	}
	return nil
}

func (m *Cluster_CommonLbConfig) GetUpdateMergeWindow() *duration.Duration {
	if m != nil {
		return m.UpdateMergeWindow
	}
	return nil
}

func (m *Cluster_CommonLbConfig) GetIgnoreNewHostsUntilFirstHc() bool {
	if m != nil {
		return m.IgnoreNewHostsUntilFirstHc
	}
	return false
}

func (m *Cluster_CommonLbConfig) GetCloseConnectionsOnHostSetChange() bool {
	if m != nil {
		return m.CloseConnectionsOnHostSetChange
	}
	return false
}

// XXX_OneofWrappers is for the internal use of the proto package.
func (*Cluster_CommonLbConfig) XXX_OneofWrappers() []interface{} {
	return []interface{}{
		(*Cluster_CommonLbConfig_ZoneAwareLbConfig_)(nil),
		(*Cluster_CommonLbConfig_LocalityWeightedLbConfig_)(nil),
	}
}

type Cluster_CommonLbConfig_ZoneAwareLbConfig struct {
	RoutingEnabled       *_type.Percent        `protobuf:"bytes,1,opt,name=routing_enabled,json=routingEnabled,proto3" json:"routing_enabled,omitempty"`
	MinClusterSize       *wrappers.UInt64Value `protobuf:"bytes,2,opt,name=min_cluster_size,json=minClusterSize,proto3" json:"min_cluster_size,omitempty"`
	FailTrafficOnPanic   bool                  `protobuf:"varint,3,opt,name=fail_traffic_on_panic,json=failTrafficOnPanic,proto3" json:"fail_traffic_on_panic,omitempty"`
	XXX_NoUnkeyedLiteral struct{}              `json:"-"`
	XXX_unrecognized     []byte                `json:"-"`
	XXX_sizecache        int32                 `json:"-"`
}

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

func (m *Cluster_CommonLbConfig_ZoneAwareLbConfig) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_Cluster_CommonLbConfig_ZoneAwareLbConfig.Unmarshal(m, b)
}
func (m *Cluster_CommonLbConfig_ZoneAwareLbConfig) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_Cluster_CommonLbConfig_ZoneAwareLbConfig.Marshal(b, m, deterministic)
}
func (m *Cluster_CommonLbConfig_ZoneAwareLbConfig) XXX_Merge(src proto.Message) {
	xxx_messageInfo_Cluster_CommonLbConfig_ZoneAwareLbConfig.Merge(m, src)
}
func (m *Cluster_CommonLbConfig_ZoneAwareLbConfig) XXX_Size() int {
	return xxx_messageInfo_Cluster_CommonLbConfig_ZoneAwareLbConfig.Size(m)
}
func (m *Cluster_CommonLbConfig_ZoneAwareLbConfig) XXX_DiscardUnknown() {
	xxx_messageInfo_Cluster_CommonLbConfig_ZoneAwareLbConfig.DiscardUnknown(m)
}

var xxx_messageInfo_Cluster_CommonLbConfig_ZoneAwareLbConfig proto.InternalMessageInfo

func (m *Cluster_CommonLbConfig_ZoneAwareLbConfig) GetRoutingEnabled() *_type.Percent {
	if m != nil {
		return m.RoutingEnabled
	}
	return nil
}

func (m *Cluster_CommonLbConfig_ZoneAwareLbConfig) GetMinClusterSize() *wrappers.UInt64Value {
	if m != nil {
		return m.MinClusterSize
	}
	return nil
}

func (m *Cluster_CommonLbConfig_ZoneAwareLbConfig) GetFailTrafficOnPanic() bool {
	if m != nil {
		return m.FailTrafficOnPanic
	}
	return false
}

type Cluster_CommonLbConfig_LocalityWeightedLbConfig struct {
	XXX_NoUnkeyedLiteral struct{} `json:"-"`
	XXX_unrecognized     []byte   `json:"-"`
	XXX_sizecache        int32    `json:"-"`
}

func (m *Cluster_CommonLbConfig_LocalityWeightedLbConfig) Reset() {
	*m = Cluster_CommonLbConfig_LocalityWeightedLbConfig{}
}
func (m *Cluster_CommonLbConfig_LocalityWeightedLbConfig) String() string {
	return proto.CompactTextString(m)
}
func (*Cluster_CommonLbConfig_LocalityWeightedLbConfig) ProtoMessage() {}
func (*Cluster_CommonLbConfig_LocalityWeightedLbConfig) Descriptor() ([]byte, []int) {
	return fileDescriptor_e73f50fbb1daa302, []int{0, 7, 1}
}

func (m *Cluster_CommonLbConfig_LocalityWeightedLbConfig) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_Cluster_CommonLbConfig_LocalityWeightedLbConfig.Unmarshal(m, b)
}
func (m *Cluster_CommonLbConfig_LocalityWeightedLbConfig) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_Cluster_CommonLbConfig_LocalityWeightedLbConfig.Marshal(b, m, deterministic)
}
func (m *Cluster_CommonLbConfig_LocalityWeightedLbConfig) XXX_Merge(src proto.Message) {
	xxx_messageInfo_Cluster_CommonLbConfig_LocalityWeightedLbConfig.Merge(m, src)
}
func (m *Cluster_CommonLbConfig_LocalityWeightedLbConfig) XXX_Size() int {
	return xxx_messageInfo_Cluster_CommonLbConfig_LocalityWeightedLbConfig.Size(m)
}
func (m *Cluster_CommonLbConfig_LocalityWeightedLbConfig) XXX_DiscardUnknown() {
	xxx_messageInfo_Cluster_CommonLbConfig_LocalityWeightedLbConfig.DiscardUnknown(m)
}

var xxx_messageInfo_Cluster_CommonLbConfig_LocalityWeightedLbConfig proto.InternalMessageInfo

type Cluster_RefreshRate struct {
	BaseInterval         *duration.Duration `protobuf:"bytes,1,opt,name=base_interval,json=baseInterval,proto3" json:"base_interval,omitempty"`
	MaxInterval          *duration.Duration `protobuf:"bytes,2,opt,name=max_interval,json=maxInterval,proto3" json:"max_interval,omitempty"`
	XXX_NoUnkeyedLiteral struct{}           `json:"-"`
	XXX_unrecognized     []byte             `json:"-"`
	XXX_sizecache        int32              `json:"-"`
}

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

func (m *Cluster_RefreshRate) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_Cluster_RefreshRate.Unmarshal(m, b)
}
func (m *Cluster_RefreshRate) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_Cluster_RefreshRate.Marshal(b, m, deterministic)
}
func (m *Cluster_RefreshRate) XXX_Merge(src proto.Message) {
	xxx_messageInfo_Cluster_RefreshRate.Merge(m, src)
}
func (m *Cluster_RefreshRate) XXX_Size() int {
	return xxx_messageInfo_Cluster_RefreshRate.Size(m)
}
func (m *Cluster_RefreshRate) XXX_DiscardUnknown() {
	xxx_messageInfo_Cluster_RefreshRate.DiscardUnknown(m)
}

var xxx_messageInfo_Cluster_RefreshRate proto.InternalMessageInfo

func (m *Cluster_RefreshRate) GetBaseInterval() *duration.Duration {
	if m != nil {
		return m.BaseInterval
	}
	return nil
}

func (m *Cluster_RefreshRate) GetMaxInterval() *duration.Duration {
	if m != nil {
		return m.MaxInterval
	}
	return nil
}

type LoadBalancingPolicy struct {
	Policies             []*LoadBalancingPolicy_Policy `protobuf:"bytes,1,rep,name=policies,proto3" json:"policies,omitempty"`
	XXX_NoUnkeyedLiteral struct{}                      `json:"-"`
	XXX_unrecognized     []byte                        `json:"-"`
	XXX_sizecache        int32                         `json:"-"`
}

func (m *LoadBalancingPolicy) Reset()         { *m = LoadBalancingPolicy{} }
func (m *LoadBalancingPolicy) String() string { return proto.CompactTextString(m) }
func (*LoadBalancingPolicy) ProtoMessage()    {}
func (*LoadBalancingPolicy) Descriptor() ([]byte, []int) {
	return fileDescriptor_e73f50fbb1daa302, []int{1}
}

func (m *LoadBalancingPolicy) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_LoadBalancingPolicy.Unmarshal(m, b)
}
func (m *LoadBalancingPolicy) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_LoadBalancingPolicy.Marshal(b, m, deterministic)
}
func (m *LoadBalancingPolicy) XXX_Merge(src proto.Message) {
	xxx_messageInfo_LoadBalancingPolicy.Merge(m, src)
}
func (m *LoadBalancingPolicy) XXX_Size() int {
	return xxx_messageInfo_LoadBalancingPolicy.Size(m)
}
func (m *LoadBalancingPolicy) XXX_DiscardUnknown() {
	xxx_messageInfo_LoadBalancingPolicy.DiscardUnknown(m)
}

var xxx_messageInfo_LoadBalancingPolicy proto.InternalMessageInfo

func (m *LoadBalancingPolicy) GetPolicies() []*LoadBalancingPolicy_Policy {
	if m != nil {
		return m.Policies
	}
	return nil
}

type LoadBalancingPolicy_Policy struct {
	Name                 string          `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
	Config               *_struct.Struct `protobuf:"bytes,2,opt,name=config,proto3" json:"config,omitempty"` // Deprecated: Do not use.
	TypedConfig          *any.Any        `protobuf:"bytes,3,opt,name=typed_config,json=typedConfig,proto3" json:"typed_config,omitempty"`
	XXX_NoUnkeyedLiteral struct{}        `json:"-"`
	XXX_unrecognized     []byte          `json:"-"`
	XXX_sizecache        int32           `json:"-"`
}

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

func (m *LoadBalancingPolicy_Policy) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_LoadBalancingPolicy_Policy.Unmarshal(m, b)
}
func (m *LoadBalancingPolicy_Policy) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_LoadBalancingPolicy_Policy.Marshal(b, m, deterministic)
}
func (m *LoadBalancingPolicy_Policy) XXX_Merge(src proto.Message) {
	xxx_messageInfo_LoadBalancingPolicy_Policy.Merge(m, src)
}
func (m *LoadBalancingPolicy_Policy) XXX_Size() int {
	return xxx_messageInfo_LoadBalancingPolicy_Policy.Size(m)
}
func (m *LoadBalancingPolicy_Policy) XXX_DiscardUnknown() {
	xxx_messageInfo_LoadBalancingPolicy_Policy.DiscardUnknown(m)
}

var xxx_messageInfo_LoadBalancingPolicy_Policy proto.InternalMessageInfo

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

// Deprecated: Do not use.
func (m *LoadBalancingPolicy_Policy) GetConfig() *_struct.Struct {
	if m != nil {
		return m.Config
	}
	return nil
}

func (m *LoadBalancingPolicy_Policy) GetTypedConfig() *any.Any {
	if m != nil {
		return m.TypedConfig
	}
	return nil
}

type UpstreamBindConfig struct {
	SourceAddress        *core.Address `protobuf:"bytes,1,opt,name=source_address,json=sourceAddress,proto3" json:"source_address,omitempty"`
	XXX_NoUnkeyedLiteral struct{}      `json:"-"`
	XXX_unrecognized     []byte        `json:"-"`
	XXX_sizecache        int32         `json:"-"`
}

func (m *UpstreamBindConfig) Reset()         { *m = UpstreamBindConfig{} }
func (m *UpstreamBindConfig) String() string { return proto.CompactTextString(m) }
func (*UpstreamBindConfig) ProtoMessage()    {}
func (*UpstreamBindConfig) Descriptor() ([]byte, []int) {
	return fileDescriptor_e73f50fbb1daa302, []int{2}
}

func (m *UpstreamBindConfig) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_UpstreamBindConfig.Unmarshal(m, b)
}
func (m *UpstreamBindConfig) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_UpstreamBindConfig.Marshal(b, m, deterministic)
}
func (m *UpstreamBindConfig) XXX_Merge(src proto.Message) {
	xxx_messageInfo_UpstreamBindConfig.Merge(m, src)
}
func (m *UpstreamBindConfig) XXX_Size() int {
	return xxx_messageInfo_UpstreamBindConfig.Size(m)
}
func (m *UpstreamBindConfig) XXX_DiscardUnknown() {
	xxx_messageInfo_UpstreamBindConfig.DiscardUnknown(m)
}

var xxx_messageInfo_UpstreamBindConfig proto.InternalMessageInfo

func (m *UpstreamBindConfig) GetSourceAddress() *core.Address {
	if m != nil {
		return m.SourceAddress
	}
	return nil
}

type UpstreamConnectionOptions struct {
	TcpKeepalive         *core.TcpKeepalive `protobuf:"bytes,1,opt,name=tcp_keepalive,json=tcpKeepalive,proto3" json:"tcp_keepalive,omitempty"`
	XXX_NoUnkeyedLiteral struct{}           `json:"-"`
	XXX_unrecognized     []byte             `json:"-"`
	XXX_sizecache        int32              `json:"-"`
}

func (m *UpstreamConnectionOptions) Reset()         { *m = UpstreamConnectionOptions{} }
func (m *UpstreamConnectionOptions) String() string { return proto.CompactTextString(m) }
func (*UpstreamConnectionOptions) ProtoMessage()    {}
func (*UpstreamConnectionOptions) Descriptor() ([]byte, []int) {
	return fileDescriptor_e73f50fbb1daa302, []int{3}
}

func (m *UpstreamConnectionOptions) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_UpstreamConnectionOptions.Unmarshal(m, b)
}
func (m *UpstreamConnectionOptions) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_UpstreamConnectionOptions.Marshal(b, m, deterministic)
}
func (m *UpstreamConnectionOptions) XXX_Merge(src proto.Message) {
	xxx_messageInfo_UpstreamConnectionOptions.Merge(m, src)
}
func (m *UpstreamConnectionOptions) XXX_Size() int {
	return xxx_messageInfo_UpstreamConnectionOptions.Size(m)
}
func (m *UpstreamConnectionOptions) XXX_DiscardUnknown() {
	xxx_messageInfo_UpstreamConnectionOptions.DiscardUnknown(m)
}

var xxx_messageInfo_UpstreamConnectionOptions proto.InternalMessageInfo

func (m *UpstreamConnectionOptions) GetTcpKeepalive() *core.TcpKeepalive {
	if m != nil {
		return m.TcpKeepalive
	}
	return nil
}

func init() {
	proto.RegisterEnum("envoy.api.v2.Cluster_DiscoveryType", Cluster_DiscoveryType_name, Cluster_DiscoveryType_value)
	proto.RegisterEnum("envoy.api.v2.Cluster_LbPolicy", Cluster_LbPolicy_name, Cluster_LbPolicy_value)
	proto.RegisterEnum("envoy.api.v2.Cluster_DnsLookupFamily", Cluster_DnsLookupFamily_name, Cluster_DnsLookupFamily_value)
	proto.RegisterEnum("envoy.api.v2.Cluster_ClusterProtocolSelection", Cluster_ClusterProtocolSelection_name, Cluster_ClusterProtocolSelection_value)
	proto.RegisterEnum("envoy.api.v2.Cluster_LbSubsetConfig_LbSubsetFallbackPolicy", Cluster_LbSubsetConfig_LbSubsetFallbackPolicy_name, Cluster_LbSubsetConfig_LbSubsetFallbackPolicy_value)
	proto.RegisterEnum("envoy.api.v2.Cluster_LbSubsetConfig_LbSubsetSelector_LbSubsetSelectorFallbackPolicy", Cluster_LbSubsetConfig_LbSubsetSelector_LbSubsetSelectorFallbackPolicy_name, Cluster_LbSubsetConfig_LbSubsetSelector_LbSubsetSelectorFallbackPolicy_value)
	proto.RegisterEnum("envoy.api.v2.Cluster_RingHashLbConfig_HashFunction", Cluster_RingHashLbConfig_HashFunction_name, Cluster_RingHashLbConfig_HashFunction_value)
	proto.RegisterType((*Cluster)(nil), "envoy.api.v2.Cluster")
	proto.RegisterMapType((map[string]*_struct.Struct)(nil), "envoy.api.v2.Cluster.ExtensionProtocolOptionsEntry")
	proto.RegisterMapType((map[string]*any.Any)(nil), "envoy.api.v2.Cluster.TypedExtensionProtocolOptionsEntry")
	proto.RegisterType((*Cluster_TransportSocketMatch)(nil), "envoy.api.v2.Cluster.TransportSocketMatch")
	proto.RegisterType((*Cluster_CustomClusterType)(nil), "envoy.api.v2.Cluster.CustomClusterType")
	proto.RegisterType((*Cluster_EdsClusterConfig)(nil), "envoy.api.v2.Cluster.EdsClusterConfig")
	proto.RegisterType((*Cluster_LbSubsetConfig)(nil), "envoy.api.v2.Cluster.LbSubsetConfig")
	proto.RegisterType((*Cluster_LbSubsetConfig_LbSubsetSelector)(nil), "envoy.api.v2.Cluster.LbSubsetConfig.LbSubsetSelector")
	proto.RegisterType((*Cluster_LeastRequestLbConfig)(nil), "envoy.api.v2.Cluster.LeastRequestLbConfig")
	proto.RegisterType((*Cluster_RingHashLbConfig)(nil), "envoy.api.v2.Cluster.RingHashLbConfig")
	proto.RegisterType((*Cluster_OriginalDstLbConfig)(nil), "envoy.api.v2.Cluster.OriginalDstLbConfig")
	proto.RegisterType((*Cluster_CommonLbConfig)(nil), "envoy.api.v2.Cluster.CommonLbConfig")
	proto.RegisterType((*Cluster_CommonLbConfig_ZoneAwareLbConfig)(nil), "envoy.api.v2.Cluster.CommonLbConfig.ZoneAwareLbConfig")
	proto.RegisterType((*Cluster_CommonLbConfig_LocalityWeightedLbConfig)(nil), "envoy.api.v2.Cluster.CommonLbConfig.LocalityWeightedLbConfig")
	proto.RegisterType((*Cluster_RefreshRate)(nil), "envoy.api.v2.Cluster.RefreshRate")
	proto.RegisterType((*LoadBalancingPolicy)(nil), "envoy.api.v2.LoadBalancingPolicy")
	proto.RegisterType((*LoadBalancingPolicy_Policy)(nil), "envoy.api.v2.LoadBalancingPolicy.Policy")
	proto.RegisterType((*UpstreamBindConfig)(nil), "envoy.api.v2.UpstreamBindConfig")
	proto.RegisterType((*UpstreamConnectionOptions)(nil), "envoy.api.v2.UpstreamConnectionOptions")
}

func init() { proto.RegisterFile("envoy/api/v2/cds.proto", fileDescriptor_e73f50fbb1daa302) }

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

// Reference imports to suppress errors if they are not otherwise used.
var _ context.Context
var _ grpc.ClientConn

// This is a compile-time assertion to ensure that this generated file
// is compatible with the grpc package it is being compiled against.
const _ = grpc.SupportPackageIsVersion4

// ClusterDiscoveryServiceClient is the client API for ClusterDiscoveryService service.
//
// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream.
type ClusterDiscoveryServiceClient interface {
	StreamClusters(ctx context.Context, opts ...grpc.CallOption) (ClusterDiscoveryService_StreamClustersClient, error)
	DeltaClusters(ctx context.Context, opts ...grpc.CallOption) (ClusterDiscoveryService_DeltaClustersClient, error)
	FetchClusters(ctx context.Context, in *DiscoveryRequest, opts ...grpc.CallOption) (*DiscoveryResponse, error)
}

type clusterDiscoveryServiceClient struct {
	cc *grpc.ClientConn
}

func NewClusterDiscoveryServiceClient(cc *grpc.ClientConn) ClusterDiscoveryServiceClient {
	return &clusterDiscoveryServiceClient{cc}
}

func (c *clusterDiscoveryServiceClient) StreamClusters(ctx context.Context, opts ...grpc.CallOption) (ClusterDiscoveryService_StreamClustersClient, error) {
	stream, err := c.cc.NewStream(ctx, &_ClusterDiscoveryService_serviceDesc.Streams[0], "/envoy.api.v2.ClusterDiscoveryService/StreamClusters", opts...)
	if err != nil {
		return nil, err
	}
	x := &clusterDiscoveryServiceStreamClustersClient{stream}
	return x, nil
}

type ClusterDiscoveryService_StreamClustersClient interface {
	Send(*DiscoveryRequest) error
	Recv() (*DiscoveryResponse, error)
	grpc.ClientStream
}

type clusterDiscoveryServiceStreamClustersClient struct {
	grpc.ClientStream
}

func (x *clusterDiscoveryServiceStreamClustersClient) Send(m *DiscoveryRequest) error {
	return x.ClientStream.SendMsg(m)
}

func (x *clusterDiscoveryServiceStreamClustersClient) Recv() (*DiscoveryResponse, error) {
	m := new(DiscoveryResponse)
	if err := x.ClientStream.RecvMsg(m); err != nil {
		return nil, err
	}
	return m, nil
}

func (c *clusterDiscoveryServiceClient) DeltaClusters(ctx context.Context, opts ...grpc.CallOption) (ClusterDiscoveryService_DeltaClustersClient, error) {
	stream, err := c.cc.NewStream(ctx, &_ClusterDiscoveryService_serviceDesc.Streams[1], "/envoy.api.v2.ClusterDiscoveryService/DeltaClusters", opts...)
	if err != nil {
		return nil, err
	}
	x := &clusterDiscoveryServiceDeltaClustersClient{stream}
	return x, nil
}

type ClusterDiscoveryService_DeltaClustersClient interface {
	Send(*DeltaDiscoveryRequest) error
	Recv() (*DeltaDiscoveryResponse, error)
	grpc.ClientStream
}

type clusterDiscoveryServiceDeltaClustersClient struct {
	grpc.ClientStream
}

func (x *clusterDiscoveryServiceDeltaClustersClient) Send(m *DeltaDiscoveryRequest) error {
	return x.ClientStream.SendMsg(m)
}

func (x *clusterDiscoveryServiceDeltaClustersClient) Recv() (*DeltaDiscoveryResponse, error) {
	m := new(DeltaDiscoveryResponse)
	if err := x.ClientStream.RecvMsg(m); err != nil {
		return nil, err
	}
	return m, nil
}

func (c *clusterDiscoveryServiceClient) FetchClusters(ctx context.Context, in *DiscoveryRequest, opts ...grpc.CallOption) (*DiscoveryResponse, error) {
	out := new(DiscoveryResponse)
	err := c.cc.Invoke(ctx, "/envoy.api.v2.ClusterDiscoveryService/FetchClusters", in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

// ClusterDiscoveryServiceServer is the server API for ClusterDiscoveryService service.
type ClusterDiscoveryServiceServer interface {
	StreamClusters(ClusterDiscoveryService_StreamClustersServer) error
	DeltaClusters(ClusterDiscoveryService_DeltaClustersServer) error
	FetchClusters(context.Context, *DiscoveryRequest) (*DiscoveryResponse, error)
}

// UnimplementedClusterDiscoveryServiceServer can be embedded to have forward compatible implementations.
type UnimplementedClusterDiscoveryServiceServer struct {
}

func (*UnimplementedClusterDiscoveryServiceServer) StreamClusters(srv ClusterDiscoveryService_StreamClustersServer) error {
	return status.Errorf(codes.Unimplemented, "method StreamClusters not implemented")
}
func (*UnimplementedClusterDiscoveryServiceServer) DeltaClusters(srv ClusterDiscoveryService_DeltaClustersServer) error {
	return status.Errorf(codes.Unimplemented, "method DeltaClusters not implemented")
}
func (*UnimplementedClusterDiscoveryServiceServer) FetchClusters(ctx context.Context, req *DiscoveryRequest) (*DiscoveryResponse, error) {
	return nil, status.Errorf(codes.Unimplemented, "method FetchClusters not implemented")
}

func RegisterClusterDiscoveryServiceServer(s *grpc.Server, srv ClusterDiscoveryServiceServer) {
	s.RegisterService(&_ClusterDiscoveryService_serviceDesc, srv)
}

func _ClusterDiscoveryService_StreamClusters_Handler(srv interface{}, stream grpc.ServerStream) error {
	return srv.(ClusterDiscoveryServiceServer).StreamClusters(&clusterDiscoveryServiceStreamClustersServer{stream})
}

type ClusterDiscoveryService_StreamClustersServer interface {
	Send(*DiscoveryResponse) error
	Recv() (*DiscoveryRequest, error)
	grpc.ServerStream
}

type clusterDiscoveryServiceStreamClustersServer struct {
	grpc.ServerStream
}

func (x *clusterDiscoveryServiceStreamClustersServer) Send(m *DiscoveryResponse) error {
	return x.ServerStream.SendMsg(m)
}

func (x *clusterDiscoveryServiceStreamClustersServer) Recv() (*DiscoveryRequest, error) {
	m := new(DiscoveryRequest)
	if err := x.ServerStream.RecvMsg(m); err != nil {
		return nil, err
	}
	return m, nil
}

func _ClusterDiscoveryService_DeltaClusters_Handler(srv interface{}, stream grpc.ServerStream) error {
	return srv.(ClusterDiscoveryServiceServer).DeltaClusters(&clusterDiscoveryServiceDeltaClustersServer{stream})
}

type ClusterDiscoveryService_DeltaClustersServer interface {
	Send(*DeltaDiscoveryResponse) error
	Recv() (*DeltaDiscoveryRequest, error)
	grpc.ServerStream
}

type clusterDiscoveryServiceDeltaClustersServer struct {
	grpc.ServerStream
}

func (x *clusterDiscoveryServiceDeltaClustersServer) Send(m *DeltaDiscoveryResponse) error {
	return x.ServerStream.SendMsg(m)
}

func (x *clusterDiscoveryServiceDeltaClustersServer) Recv() (*DeltaDiscoveryRequest, error) {
	m := new(DeltaDiscoveryRequest)
	if err := x.ServerStream.RecvMsg(m); err != nil {
		return nil, err
	}
	return m, nil
}

func _ClusterDiscoveryService_FetchClusters_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(DiscoveryRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(ClusterDiscoveryServiceServer).FetchClusters(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/envoy.api.v2.ClusterDiscoveryService/FetchClusters",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(ClusterDiscoveryServiceServer).FetchClusters(ctx, req.(*DiscoveryRequest))
	}
	return interceptor(ctx, in, info, handler)
}

var _ClusterDiscoveryService_serviceDesc = grpc.ServiceDesc{
	ServiceName: "envoy.api.v2.ClusterDiscoveryService",
	HandlerType: (*ClusterDiscoveryServiceServer)(nil),
	Methods: []grpc.MethodDesc{
		{
			MethodName: "FetchClusters",
			Handler:    _ClusterDiscoveryService_FetchClusters_Handler,
		},
	},
	Streams: []grpc.StreamDesc{
		{
			StreamName:    "StreamClusters",
			Handler:       _ClusterDiscoveryService_StreamClusters_Handler,
			ServerStreams: true,
			ClientStreams: true,
		},
		{
			StreamName:    "DeltaClusters",
			Handler:       _ClusterDiscoveryService_DeltaClusters_Handler,
			ServerStreams: true,
			ClientStreams: true,
		},
	},
	Metadata: "envoy/api/v2/cds.proto",
}
