// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
// 	protoc-gen-go v1.36.10
// 	protoc        v6.33.2
// source: envoy/extensions/filters/network/sni_dynamic_forward_proxy/v3/sni_dynamic_forward_proxy.proto

package sni_dynamic_forward_proxyv3

import (
	_ "github.com/cncf/xds/go/udpa/annotations"
	v3 "github.com/envoyproxy/go-control-plane/envoy/extensions/common/dynamic_forward_proxy/v3"
	_ "github.com/envoyproxy/protoc-gen-validate/validate"
	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
	reflect "reflect"
	sync "sync"
	unsafe "unsafe"
)

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

// Configuration for the SNI-based dynamic forward proxy filter. See the
// :ref:`architecture overview <arch_overview_http_dynamic_forward_proxy>` for
// more information. Note this filter must be configured along with
// :ref:`TLS inspector listener filter <config_listener_filters_tls_inspector>`
// to work.
// [#extension: envoy.filters.network.sni_dynamic_forward_proxy]
type FilterConfig struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// The DNS cache configuration that the filter will attach to. Note this
	// configuration must match that of associated :ref:`dynamic forward proxy
	// cluster configuration
	// <envoy_v3_api_field_extensions.clusters.dynamic_forward_proxy.v3.ClusterConfig.dns_cache_config>`.
	DnsCacheConfig *v3.DnsCacheConfig `protobuf:"bytes,1,opt,name=dns_cache_config,json=dnsCacheConfig,proto3" json:"dns_cache_config,omitempty"`
	// Types that are valid to be assigned to PortSpecifier:
	//
	//	*FilterConfig_PortValue
	PortSpecifier isFilterConfig_PortSpecifier `protobuf_oneof:"port_specifier"`
	// When this flag is set, the filter will add the resolved upstream address in the filter
	// state. The state should be saved with key
	// “envoy.stream.upstream_address“ (See
	// :repo:`upstream_address.h<source/common/stream_info/upstream_address.h>`).
	SaveUpstreamAddress bool `protobuf:"varint,3,opt,name=save_upstream_address,json=saveUpstreamAddress,proto3" json:"save_upstream_address,omitempty"`
	unknownFields       protoimpl.UnknownFields
	sizeCache           protoimpl.SizeCache
}

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

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

func (*FilterConfig) ProtoMessage() {}

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

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

func (x *FilterConfig) GetDnsCacheConfig() *v3.DnsCacheConfig {
	if x != nil {
		return x.DnsCacheConfig
	}
	return nil
}

func (x *FilterConfig) GetPortSpecifier() isFilterConfig_PortSpecifier {
	if x != nil {
		return x.PortSpecifier
	}
	return nil
}

func (x *FilterConfig) GetPortValue() uint32 {
	if x != nil {
		if x, ok := x.PortSpecifier.(*FilterConfig_PortValue); ok {
			return x.PortValue
		}
	}
	return 0
}

func (x *FilterConfig) GetSaveUpstreamAddress() bool {
	if x != nil {
		return x.SaveUpstreamAddress
	}
	return false
}

type isFilterConfig_PortSpecifier interface {
	isFilterConfig_PortSpecifier()
}

type FilterConfig_PortValue struct {
	// The port number to connect to the upstream.
	PortValue uint32 `protobuf:"varint,2,opt,name=port_value,json=portValue,proto3,oneof"`
}

func (*FilterConfig_PortValue) isFilterConfig_PortSpecifier() {}

var File_envoy_extensions_filters_network_sni_dynamic_forward_proxy_v3_sni_dynamic_forward_proxy_proto protoreflect.FileDescriptor

const file_envoy_extensions_filters_network_sni_dynamic_forward_proxy_v3_sni_dynamic_forward_proxy_proto_rawDesc = "" +
	"\n" +
	"]envoy/extensions/filters/network/sni_dynamic_forward_proxy/v3/sni_dynamic_forward_proxy.proto\x12=envoy.extensions.filters.network.sni_dynamic_forward_proxy.v3\x1a@envoy/extensions/common/dynamic_forward_proxy/v3/dns_cache.proto\x1a\x1dudpa/annotations/status.proto\x1a\x17validate/validate.proto\"\xf8\x01\n" +
	"\fFilterConfig\x12t\n" +
	"\x10dns_cache_config\x18\x01 \x01(\v2@.envoy.extensions.common.dynamic_forward_proxy.v3.DnsCacheConfigB\b\xfaB\x05\x8a\x01\x02\x10\x01R\x0ednsCacheConfig\x12,\n" +
	"\n" +
	"port_value\x18\x02 \x01(\rB\v\xfaB\b*\x06\x18\xff\xff\x03 \x00H\x00R\tportValue\x122\n" +
	"\x15save_upstream_address\x18\x03 \x01(\bR\x13saveUpstreamAddressB\x10\n" +
	"\x0eport_specifierB\xf7\x01\xba\x80\xc8\xd1\x06\x02\x10\x02\n" +
	"Kio.envoyproxy.envoy.extensions.filters.network.sni_dynamic_forward_proxy.v3B\x1bSniDynamicForwardProxyProtoP\x01Z\x80\x01github.com/envoyproxy/go-control-plane/envoy/extensions/filters/network/sni_dynamic_forward_proxy/v3;sni_dynamic_forward_proxyv3b\x06proto3"

var (
	file_envoy_extensions_filters_network_sni_dynamic_forward_proxy_v3_sni_dynamic_forward_proxy_proto_rawDescOnce sync.Once
	file_envoy_extensions_filters_network_sni_dynamic_forward_proxy_v3_sni_dynamic_forward_proxy_proto_rawDescData []byte
)

func file_envoy_extensions_filters_network_sni_dynamic_forward_proxy_v3_sni_dynamic_forward_proxy_proto_rawDescGZIP() []byte {
	file_envoy_extensions_filters_network_sni_dynamic_forward_proxy_v3_sni_dynamic_forward_proxy_proto_rawDescOnce.Do(func() {
		file_envoy_extensions_filters_network_sni_dynamic_forward_proxy_v3_sni_dynamic_forward_proxy_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_envoy_extensions_filters_network_sni_dynamic_forward_proxy_v3_sni_dynamic_forward_proxy_proto_rawDesc), len(file_envoy_extensions_filters_network_sni_dynamic_forward_proxy_v3_sni_dynamic_forward_proxy_proto_rawDesc)))
	})
	return file_envoy_extensions_filters_network_sni_dynamic_forward_proxy_v3_sni_dynamic_forward_proxy_proto_rawDescData
}

var file_envoy_extensions_filters_network_sni_dynamic_forward_proxy_v3_sni_dynamic_forward_proxy_proto_msgTypes = make([]protoimpl.MessageInfo, 1)
var file_envoy_extensions_filters_network_sni_dynamic_forward_proxy_v3_sni_dynamic_forward_proxy_proto_goTypes = []any{
	(*FilterConfig)(nil),      // 0: envoy.extensions.filters.network.sni_dynamic_forward_proxy.v3.FilterConfig
	(*v3.DnsCacheConfig)(nil), // 1: envoy.extensions.common.dynamic_forward_proxy.v3.DnsCacheConfig
}
var file_envoy_extensions_filters_network_sni_dynamic_forward_proxy_v3_sni_dynamic_forward_proxy_proto_depIdxs = []int32{
	1, // 0: envoy.extensions.filters.network.sni_dynamic_forward_proxy.v3.FilterConfig.dns_cache_config:type_name -> envoy.extensions.common.dynamic_forward_proxy.v3.DnsCacheConfig
	1, // [1:1] is the sub-list for method output_type
	1, // [1:1] is the sub-list for method input_type
	1, // [1:1] is the sub-list for extension type_name
	1, // [1:1] is the sub-list for extension extendee
	0, // [0:1] is the sub-list for field type_name
}

func init() {
	file_envoy_extensions_filters_network_sni_dynamic_forward_proxy_v3_sni_dynamic_forward_proxy_proto_init()
}
func file_envoy_extensions_filters_network_sni_dynamic_forward_proxy_v3_sni_dynamic_forward_proxy_proto_init() {
	if File_envoy_extensions_filters_network_sni_dynamic_forward_proxy_v3_sni_dynamic_forward_proxy_proto != nil {
		return
	}
	file_envoy_extensions_filters_network_sni_dynamic_forward_proxy_v3_sni_dynamic_forward_proxy_proto_msgTypes[0].OneofWrappers = []any{
		(*FilterConfig_PortValue)(nil),
	}
	type x struct{}
	out := protoimpl.TypeBuilder{
		File: protoimpl.DescBuilder{
			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
			RawDescriptor: unsafe.Slice(unsafe.StringData(file_envoy_extensions_filters_network_sni_dynamic_forward_proxy_v3_sni_dynamic_forward_proxy_proto_rawDesc), len(file_envoy_extensions_filters_network_sni_dynamic_forward_proxy_v3_sni_dynamic_forward_proxy_proto_rawDesc)),
			NumEnums:      0,
			NumMessages:   1,
			NumExtensions: 0,
			NumServices:   0,
		},
		GoTypes:           file_envoy_extensions_filters_network_sni_dynamic_forward_proxy_v3_sni_dynamic_forward_proxy_proto_goTypes,
		DependencyIndexes: file_envoy_extensions_filters_network_sni_dynamic_forward_proxy_v3_sni_dynamic_forward_proxy_proto_depIdxs,
		MessageInfos:      file_envoy_extensions_filters_network_sni_dynamic_forward_proxy_v3_sni_dynamic_forward_proxy_proto_msgTypes,
	}.Build()
	File_envoy_extensions_filters_network_sni_dynamic_forward_proxy_v3_sni_dynamic_forward_proxy_proto = out.File
	file_envoy_extensions_filters_network_sni_dynamic_forward_proxy_v3_sni_dynamic_forward_proxy_proto_goTypes = nil
	file_envoy_extensions_filters_network_sni_dynamic_forward_proxy_v3_sni_dynamic_forward_proxy_proto_depIdxs = nil
}
