// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
// 	protoc-gen-go v1.36.10
// 	protoc        v6.33.2
// source: envoy/config/listener/v3/quic_config.proto

package listenerv3

import (
	_ "github.com/cncf/xds/go/udpa/annotations"
	_ "github.com/cncf/xds/go/xds/annotations/v3"
	v3 "github.com/envoyproxy/go-control-plane/envoy/config/core/v3"
	_ "github.com/envoyproxy/protoc-gen-validate/validate"
	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
	durationpb "google.golang.org/protobuf/types/known/durationpb"
	wrapperspb "google.golang.org/protobuf/types/known/wrapperspb"
	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 specific to the UDP QUIC listener.
// [#next-free-field: 15]
type QuicProtocolOptions struct {
	state               protoimpl.MessageState  `protogen:"open.v1"`
	QuicProtocolOptions *v3.QuicProtocolOptions `protobuf:"bytes,1,opt,name=quic_protocol_options,json=quicProtocolOptions,proto3" json:"quic_protocol_options,omitempty"`
	// Maximum number of milliseconds that connection will be alive when there is
	// no network activity.
	//
	// If it is less than 1ms, Envoy will use 1ms. 300000ms if not specified.
	IdleTimeout *durationpb.Duration `protobuf:"bytes,2,opt,name=idle_timeout,json=idleTimeout,proto3" json:"idle_timeout,omitempty"`
	// Connection timeout in milliseconds before the crypto handshake is finished.
	//
	// If it is less than 5000ms, Envoy will use 5000ms. 20000ms if not specified.
	CryptoHandshakeTimeout *durationpb.Duration `protobuf:"bytes,3,opt,name=crypto_handshake_timeout,json=cryptoHandshakeTimeout,proto3" json:"crypto_handshake_timeout,omitempty"`
	// Runtime flag that controls whether the listener is enabled or not. If not specified, defaults
	// to enabled.
	Enabled *v3.RuntimeFeatureFlag `protobuf:"bytes,4,opt,name=enabled,proto3" json:"enabled,omitempty"`
	// A multiplier to number of connections which is used to determine how many packets to read per
	// event loop. A reasonable number should allow the listener to process enough payload but not
	// starve TCP and other UDP sockets and also prevent long event loop duration.
	// The default value is 32. This means if there are N QUIC connections, the total number of
	// packets to read in each read event will be 32 * N.
	// The actual number of packets to read in total by the UDP listener is also
	// bound by 6000, regardless of this field or how many connections there are.
	PacketsToReadToConnectionCountRatio *wrapperspb.UInt32Value `protobuf:"bytes,5,opt,name=packets_to_read_to_connection_count_ratio,json=packetsToReadToConnectionCountRatio,proto3" json:"packets_to_read_to_connection_count_ratio,omitempty"`
	// Configure which implementation of “quic::QuicCryptoClientStreamBase“ to be used for this listener.
	// If not specified the :ref:`QUICHE default one configured by <envoy_v3_api_msg_extensions.quic.crypto_stream.v3.CryptoServerStreamConfig>` will be used.
	// [#extension-category: envoy.quic.server.crypto_stream]
	CryptoStreamConfig *v3.TypedExtensionConfig `protobuf:"bytes,6,opt,name=crypto_stream_config,json=cryptoStreamConfig,proto3" json:"crypto_stream_config,omitempty"`
	// Configure which implementation of “quic::ProofSource“ to be used for this listener.
	// If not specified the :ref:`default one configured by <envoy_v3_api_msg_extensions.quic.proof_source.v3.ProofSourceConfig>` will be used.
	// [#extension-category: envoy.quic.proof_source]
	ProofSourceConfig *v3.TypedExtensionConfig `protobuf:"bytes,7,opt,name=proof_source_config,json=proofSourceConfig,proto3" json:"proof_source_config,omitempty"`
	// Config which implementation of “quic::ConnectionIdGeneratorInterface“ to be used for this listener.
	// If not specified the :ref:`default one configured by <envoy_v3_api_msg_extensions.quic.connection_id_generator.v3.DeterministicConnectionIdGeneratorConfig>` will be used.
	// [#extension-category: envoy.quic.connection_id_generator]
	ConnectionIdGeneratorConfig *v3.TypedExtensionConfig `protobuf:"bytes,8,opt,name=connection_id_generator_config,json=connectionIdGeneratorConfig,proto3" json:"connection_id_generator_config,omitempty"`
	// Configure the server's preferred address to advertise so that client can migrate to it. See :ref:`example <envoy_v3_api_msg_extensions.quic.server_preferred_address.v3.FixedServerPreferredAddressConfig>` which configures a pair of v4 and v6 preferred addresses.
	// The current QUICHE implementation will advertise only one of the preferred IPv4 and IPv6 addresses based on the address family the client initially connects with.
	// If not specified, Envoy will not advertise any server's preferred address.
	// [#extension-category: envoy.quic.server_preferred_address]
	ServerPreferredAddressConfig *v3.TypedExtensionConfig `protobuf:"bytes,9,opt,name=server_preferred_address_config,json=serverPreferredAddressConfig,proto3" json:"server_preferred_address_config,omitempty"`
	// Configure the server to send transport parameter `disable_active_migration <https://www.rfc-editor.org/rfc/rfc9000#section-18.2-4.30.1>`_.
	// Defaults to false (do not send this transport parameter).
	SendDisableActiveMigration *wrapperspb.BoolValue `protobuf:"bytes,10,opt,name=send_disable_active_migration,json=sendDisableActiveMigration,proto3" json:"send_disable_active_migration,omitempty"`
	// Configure which implementation of “quic::QuicConnectionDebugVisitor“ to be used for this listener.
	// If not specified, no debug visitor will be attached to connections.
	// [#extension-category: envoy.quic.connection_debug_visitor]
	ConnectionDebugVisitorConfig *v3.TypedExtensionConfig `protobuf:"bytes,11,opt,name=connection_debug_visitor_config,json=connectionDebugVisitorConfig,proto3" json:"connection_debug_visitor_config,omitempty"`
	// Configure a type of UDP cmsg to pass to listener filters via QuicReceivedPacket.
	// Both level and type must be specified for cmsg to be saved.
	// Cmsg may be truncated or omitted if expected size is not set.
	// If not specified, no cmsg will be saved to QuicReceivedPacket.
	SaveCmsgConfig []*v3.SocketCmsgHeaders `protobuf:"bytes,12,rep,name=save_cmsg_config,json=saveCmsgConfig,proto3" json:"save_cmsg_config,omitempty"`
	// If true, the listener will reject connection-establishing packets at the
	// QUIC layer by replying with an empty version negotiation packet to the
	// client.
	RejectNewConnections bool `protobuf:"varint,13,opt,name=reject_new_connections,json=rejectNewConnections,proto3" json:"reject_new_connections,omitempty"`
	// Maximum number of QUIC sessions to create per event loop.
	// If not specified, the default value is 16.
	// This is an equivalent of the TCP listener option
	// max_connections_to_accept_per_socket_event.
	MaxSessionsPerEventLoop *wrapperspb.UInt32Value `protobuf:"bytes,14,opt,name=max_sessions_per_event_loop,json=maxSessionsPerEventLoop,proto3" json:"max_sessions_per_event_loop,omitempty"`
	unknownFields           protoimpl.UnknownFields
	sizeCache               protoimpl.SizeCache
}

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

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

func (*QuicProtocolOptions) ProtoMessage() {}

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

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

func (x *QuicProtocolOptions) GetQuicProtocolOptions() *v3.QuicProtocolOptions {
	if x != nil {
		return x.QuicProtocolOptions
	}
	return nil
}

func (x *QuicProtocolOptions) GetIdleTimeout() *durationpb.Duration {
	if x != nil {
		return x.IdleTimeout
	}
	return nil
}

func (x *QuicProtocolOptions) GetCryptoHandshakeTimeout() *durationpb.Duration {
	if x != nil {
		return x.CryptoHandshakeTimeout
	}
	return nil
}

func (x *QuicProtocolOptions) GetEnabled() *v3.RuntimeFeatureFlag {
	if x != nil {
		return x.Enabled
	}
	return nil
}

func (x *QuicProtocolOptions) GetPacketsToReadToConnectionCountRatio() *wrapperspb.UInt32Value {
	if x != nil {
		return x.PacketsToReadToConnectionCountRatio
	}
	return nil
}

func (x *QuicProtocolOptions) GetCryptoStreamConfig() *v3.TypedExtensionConfig {
	if x != nil {
		return x.CryptoStreamConfig
	}
	return nil
}

func (x *QuicProtocolOptions) GetProofSourceConfig() *v3.TypedExtensionConfig {
	if x != nil {
		return x.ProofSourceConfig
	}
	return nil
}

func (x *QuicProtocolOptions) GetConnectionIdGeneratorConfig() *v3.TypedExtensionConfig {
	if x != nil {
		return x.ConnectionIdGeneratorConfig
	}
	return nil
}

func (x *QuicProtocolOptions) GetServerPreferredAddressConfig() *v3.TypedExtensionConfig {
	if x != nil {
		return x.ServerPreferredAddressConfig
	}
	return nil
}

func (x *QuicProtocolOptions) GetSendDisableActiveMigration() *wrapperspb.BoolValue {
	if x != nil {
		return x.SendDisableActiveMigration
	}
	return nil
}

func (x *QuicProtocolOptions) GetConnectionDebugVisitorConfig() *v3.TypedExtensionConfig {
	if x != nil {
		return x.ConnectionDebugVisitorConfig
	}
	return nil
}

func (x *QuicProtocolOptions) GetSaveCmsgConfig() []*v3.SocketCmsgHeaders {
	if x != nil {
		return x.SaveCmsgConfig
	}
	return nil
}

func (x *QuicProtocolOptions) GetRejectNewConnections() bool {
	if x != nil {
		return x.RejectNewConnections
	}
	return false
}

func (x *QuicProtocolOptions) GetMaxSessionsPerEventLoop() *wrapperspb.UInt32Value {
	if x != nil {
		return x.MaxSessionsPerEventLoop
	}
	return nil
}

var File_envoy_config_listener_v3_quic_config_proto protoreflect.FileDescriptor

const file_envoy_config_listener_v3_quic_config_proto_rawDesc = "" +
	"\n" +
	"*envoy/config/listener/v3/quic_config.proto\x12\x18envoy.config.listener.v3\x1a\x1fenvoy/config/core/v3/base.proto\x1a$envoy/config/core/v3/extension.proto\x1a#envoy/config/core/v3/protocol.proto\x1a.envoy/config/core/v3/socket_cmsg_headers.proto\x1a\x1egoogle/protobuf/duration.proto\x1a\x1egoogle/protobuf/wrappers.proto\x1a\x1fxds/annotations/v3/status.proto\x1a\x1dudpa/annotations/status.proto\x1a!udpa/annotations/versioning.proto\x1a\x17validate/validate.proto\"\xee\n" +
	"\n" +
	"\x13QuicProtocolOptions\x12]\n" +
	"\x15quic_protocol_options\x18\x01 \x01(\v2).envoy.config.core.v3.QuicProtocolOptionsR\x13quicProtocolOptions\x12<\n" +
	"\fidle_timeout\x18\x02 \x01(\v2\x19.google.protobuf.DurationR\vidleTimeout\x12S\n" +
	"\x18crypto_handshake_timeout\x18\x03 \x01(\v2\x19.google.protobuf.DurationR\x16cryptoHandshakeTimeout\x12B\n" +
	"\aenabled\x18\x04 \x01(\v2(.envoy.config.core.v3.RuntimeFeatureFlagR\aenabled\x12}\n" +
	")packets_to_read_to_connection_count_ratio\x18\x05 \x01(\v2\x1c.google.protobuf.UInt32ValueB\a\xfaB\x04*\x02(\x01R#packetsToReadToConnectionCountRatio\x12\\\n" +
	"\x14crypto_stream_config\x18\x06 \x01(\v2*.envoy.config.core.v3.TypedExtensionConfigR\x12cryptoStreamConfig\x12Z\n" +
	"\x13proof_source_config\x18\a \x01(\v2*.envoy.config.core.v3.TypedExtensionConfigR\x11proofSourceConfig\x12o\n" +
	"\x1econnection_id_generator_config\x18\b \x01(\v2*.envoy.config.core.v3.TypedExtensionConfigR\x1bconnectionIdGeneratorConfig\x12{\n" +
	"\x1fserver_preferred_address_config\x18\t \x01(\v2*.envoy.config.core.v3.TypedExtensionConfigB\b\xd2Ƥ\xe1\x06\x02\b\x01R\x1cserverPreferredAddressConfig\x12]\n" +
	"\x1dsend_disable_active_migration\x18\n" +
	" \x01(\v2\x1a.google.protobuf.BoolValueR\x1asendDisableActiveMigration\x12q\n" +
	"\x1fconnection_debug_visitor_config\x18\v \x01(\v2*.envoy.config.core.v3.TypedExtensionConfigR\x1cconnectionDebugVisitorConfig\x12[\n" +
	"\x10save_cmsg_config\x18\f \x03(\v2'.envoy.config.core.v3.SocketCmsgHeadersB\b\xfaB\x05\x92\x01\x02\x10\x01R\x0esaveCmsgConfig\x124\n" +
	"\x16reject_new_connections\x18\r \x01(\bR\x14rejectNewConnections\x12c\n" +
	"\x1bmax_sessions_per_event_loop\x18\x0e \x01(\v2\x1c.google.protobuf.UInt32ValueB\a\xfaB\x04*\x02 \x00R\x17maxSessionsPerEventLoop:0\x9aň\x1e+\n" +
	")envoy.api.v2.listener.QuicProtocolOptionsB\x8f\x01\xba\x80\xc8\xd1\x06\x02\x10\x02\n" +
	"&io.envoyproxy.envoy.config.listener.v3B\x0fQuicConfigProtoP\x01ZJgithub.com/envoyproxy/go-control-plane/envoy/config/listener/v3;listenerv3b\x06proto3"

var (
	file_envoy_config_listener_v3_quic_config_proto_rawDescOnce sync.Once
	file_envoy_config_listener_v3_quic_config_proto_rawDescData []byte
)

func file_envoy_config_listener_v3_quic_config_proto_rawDescGZIP() []byte {
	file_envoy_config_listener_v3_quic_config_proto_rawDescOnce.Do(func() {
		file_envoy_config_listener_v3_quic_config_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_envoy_config_listener_v3_quic_config_proto_rawDesc), len(file_envoy_config_listener_v3_quic_config_proto_rawDesc)))
	})
	return file_envoy_config_listener_v3_quic_config_proto_rawDescData
}

var file_envoy_config_listener_v3_quic_config_proto_msgTypes = make([]protoimpl.MessageInfo, 1)
var file_envoy_config_listener_v3_quic_config_proto_goTypes = []any{
	(*QuicProtocolOptions)(nil),     // 0: envoy.config.listener.v3.QuicProtocolOptions
	(*v3.QuicProtocolOptions)(nil),  // 1: envoy.config.core.v3.QuicProtocolOptions
	(*durationpb.Duration)(nil),     // 2: google.protobuf.Duration
	(*v3.RuntimeFeatureFlag)(nil),   // 3: envoy.config.core.v3.RuntimeFeatureFlag
	(*wrapperspb.UInt32Value)(nil),  // 4: google.protobuf.UInt32Value
	(*v3.TypedExtensionConfig)(nil), // 5: envoy.config.core.v3.TypedExtensionConfig
	(*wrapperspb.BoolValue)(nil),    // 6: google.protobuf.BoolValue
	(*v3.SocketCmsgHeaders)(nil),    // 7: envoy.config.core.v3.SocketCmsgHeaders
}
var file_envoy_config_listener_v3_quic_config_proto_depIdxs = []int32{
	1,  // 0: envoy.config.listener.v3.QuicProtocolOptions.quic_protocol_options:type_name -> envoy.config.core.v3.QuicProtocolOptions
	2,  // 1: envoy.config.listener.v3.QuicProtocolOptions.idle_timeout:type_name -> google.protobuf.Duration
	2,  // 2: envoy.config.listener.v3.QuicProtocolOptions.crypto_handshake_timeout:type_name -> google.protobuf.Duration
	3,  // 3: envoy.config.listener.v3.QuicProtocolOptions.enabled:type_name -> envoy.config.core.v3.RuntimeFeatureFlag
	4,  // 4: envoy.config.listener.v3.QuicProtocolOptions.packets_to_read_to_connection_count_ratio:type_name -> google.protobuf.UInt32Value
	5,  // 5: envoy.config.listener.v3.QuicProtocolOptions.crypto_stream_config:type_name -> envoy.config.core.v3.TypedExtensionConfig
	5,  // 6: envoy.config.listener.v3.QuicProtocolOptions.proof_source_config:type_name -> envoy.config.core.v3.TypedExtensionConfig
	5,  // 7: envoy.config.listener.v3.QuicProtocolOptions.connection_id_generator_config:type_name -> envoy.config.core.v3.TypedExtensionConfig
	5,  // 8: envoy.config.listener.v3.QuicProtocolOptions.server_preferred_address_config:type_name -> envoy.config.core.v3.TypedExtensionConfig
	6,  // 9: envoy.config.listener.v3.QuicProtocolOptions.send_disable_active_migration:type_name -> google.protobuf.BoolValue
	5,  // 10: envoy.config.listener.v3.QuicProtocolOptions.connection_debug_visitor_config:type_name -> envoy.config.core.v3.TypedExtensionConfig
	7,  // 11: envoy.config.listener.v3.QuicProtocolOptions.save_cmsg_config:type_name -> envoy.config.core.v3.SocketCmsgHeaders
	4,  // 12: envoy.config.listener.v3.QuicProtocolOptions.max_sessions_per_event_loop:type_name -> google.protobuf.UInt32Value
	13, // [13:13] is the sub-list for method output_type
	13, // [13:13] is the sub-list for method input_type
	13, // [13:13] is the sub-list for extension type_name
	13, // [13:13] is the sub-list for extension extendee
	0,  // [0:13] is the sub-list for field type_name
}

func init() { file_envoy_config_listener_v3_quic_config_proto_init() }
func file_envoy_config_listener_v3_quic_config_proto_init() {
	if File_envoy_config_listener_v3_quic_config_proto != nil {
		return
	}
	type x struct{}
	out := protoimpl.TypeBuilder{
		File: protoimpl.DescBuilder{
			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
			RawDescriptor: unsafe.Slice(unsafe.StringData(file_envoy_config_listener_v3_quic_config_proto_rawDesc), len(file_envoy_config_listener_v3_quic_config_proto_rawDesc)),
			NumEnums:      0,
			NumMessages:   1,
			NumExtensions: 0,
			NumServices:   0,
		},
		GoTypes:           file_envoy_config_listener_v3_quic_config_proto_goTypes,
		DependencyIndexes: file_envoy_config_listener_v3_quic_config_proto_depIdxs,
		MessageInfos:      file_envoy_config_listener_v3_quic_config_proto_msgTypes,
	}.Build()
	File_envoy_config_listener_v3_quic_config_proto = out.File
	file_envoy_config_listener_v3_quic_config_proto_goTypes = nil
	file_envoy_config_listener_v3_quic_config_proto_depIdxs = nil
}
