// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
// 	protoc-gen-go v1.36.10
// 	protoc        v7.35.1
// source: envoy/config/filter/http/router/v2/router.proto

package routerv2

import (
	_ "github.com/cncf/xds/go/udpa/annotations"
	v2 "github.com/envoyproxy/go-control-plane/envoy/config/filter/accesslog/v2"
	_ "github.com/envoyproxy/protoc-gen-validate/validate"
	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
	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)
)

// [#next-free-field: 7]
type Router struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Whether the router generates dynamic cluster statistics. Defaults to
	// true. Can be disabled in high performance scenarios.
	DynamicStats *wrapperspb.BoolValue `protobuf:"bytes,1,opt,name=dynamic_stats,json=dynamicStats,proto3" json:"dynamic_stats,omitempty"`
	// Whether to start a child span for egress routed calls. This can be
	// useful in scenarios where other filters (auth, ratelimit, etc.) make
	// outbound calls and have child spans rooted at the same ingress
	// parent. Defaults to false.
	StartChildSpan bool `protobuf:"varint,2,opt,name=start_child_span,json=startChildSpan,proto3" json:"start_child_span,omitempty"`
	// Configuration for HTTP upstream logs emitted by the router. Upstream logs
	// are configured in the same way as access logs, but each log entry represents
	// an upstream request. Presuming retries are configured, multiple upstream
	// requests may be made for each downstream (inbound) request.
	UpstreamLog []*v2.AccessLog `protobuf:"bytes,3,rep,name=upstream_log,json=upstreamLog,proto3" json:"upstream_log,omitempty"`
	// Do not add any additional *x-envoy-* headers to requests or responses. This
	// only affects the :ref:`router filter generated *x-envoy-* headers
	// <config_http_filters_router_headers_set>`, other Envoy filters and the HTTP
	// connection manager may continue to set *x-envoy-* headers.
	SuppressEnvoyHeaders bool `protobuf:"varint,4,opt,name=suppress_envoy_headers,json=suppressEnvoyHeaders,proto3" json:"suppress_envoy_headers,omitempty"`
	// Specifies a list of HTTP headers to strictly validate. Envoy will reject a
	// request and respond with HTTP status 400 if the request contains an invalid
	// value for any of the headers listed in this field. Strict header checking
	// is only supported for the following headers:
	//
	// Value must be a ','-delimited list (i.e. no spaces) of supported retry
	// policy values:
	//
	// * :ref:`config_http_filters_router_x-envoy-retry-grpc-on`
	// * :ref:`config_http_filters_router_x-envoy-retry-on`
	//
	// Value must be an integer:
	//
	// * :ref:`config_http_filters_router_x-envoy-max-retries`
	// * :ref:`config_http_filters_router_x-envoy-upstream-rq-timeout-ms`
	// * :ref:`config_http_filters_router_x-envoy-upstream-rq-per-try-timeout-ms`
	StrictCheckHeaders []string `protobuf:"bytes,5,rep,name=strict_check_headers,json=strictCheckHeaders,proto3" json:"strict_check_headers,omitempty"`
	// If not set, ingress Envoy will ignore
	// :ref:`config_http_filters_router_x-envoy-expected-rq-timeout-ms` header, populated by egress
	// Envoy, when deriving timeout for upstream cluster.
	RespectExpectedRqTimeout bool `protobuf:"varint,6,opt,name=respect_expected_rq_timeout,json=respectExpectedRqTimeout,proto3" json:"respect_expected_rq_timeout,omitempty"`
	unknownFields            protoimpl.UnknownFields
	sizeCache                protoimpl.SizeCache
}

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

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

func (*Router) ProtoMessage() {}

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

func (x *Router) GetDynamicStats() *wrapperspb.BoolValue {
	if x != nil {
		return x.DynamicStats
	}
	return nil
}

func (x *Router) GetStartChildSpan() bool {
	if x != nil {
		return x.StartChildSpan
	}
	return false
}

func (x *Router) GetUpstreamLog() []*v2.AccessLog {
	if x != nil {
		return x.UpstreamLog
	}
	return nil
}

func (x *Router) GetSuppressEnvoyHeaders() bool {
	if x != nil {
		return x.SuppressEnvoyHeaders
	}
	return false
}

func (x *Router) GetStrictCheckHeaders() []string {
	if x != nil {
		return x.StrictCheckHeaders
	}
	return nil
}

func (x *Router) GetRespectExpectedRqTimeout() bool {
	if x != nil {
		return x.RespectExpectedRqTimeout
	}
	return false
}

var File_envoy_config_filter_http_router_v2_router_proto protoreflect.FileDescriptor

const file_envoy_config_filter_http_router_v2_router_proto_rawDesc = "" +
	"\n" +
	"/envoy/config/filter/http/router/v2/router.proto\x12\"envoy.config.filter.http.router.v2\x1a0envoy/config/filter/accesslog/v2/accesslog.proto\x1a\x1egoogle/protobuf/wrappers.proto\x1a\x1eudpa/annotations/migrate.proto\x1a\x1dudpa/annotations/status.proto\x1a\x17validate/validate.proto\"\x82\x04\n" +
	"\x06Router\x12?\n" +
	"\rdynamic_stats\x18\x01 \x01(\v2\x1a.google.protobuf.BoolValueR\fdynamicStats\x12(\n" +
	"\x10start_child_span\x18\x02 \x01(\bR\x0estartChildSpan\x12N\n" +
	"\fupstream_log\x18\x03 \x03(\v2+.envoy.config.filter.accesslog.v2.AccessLogR\vupstreamLog\x124\n" +
	"\x16suppress_envoy_headers\x18\x04 \x01(\bR\x14suppressEnvoyHeaders\x12\xc7\x01\n" +
	"\x14strict_check_headers\x18\x05 \x03(\tB\x94\x01\xfaB\x90\x01\x92\x01\x8c\x01\"\x89\x01r\x86\x01R\x1ex-envoy-upstream-rq-timeout-msR&x-envoy-upstream-rq-per-try-timeout-msR\x13x-envoy-max-retriesR\x15x-envoy-retry-grpc-onR\x10x-envoy-retry-onR\x12strictCheckHeaders\x12=\n" +
	"\x1brespect_expected_rq_timeout\x18\x06 \x01(\bR\x18respectExpectedRqTimeoutB\xcc\x01\xf2\x98\xfe\x8f\x05)\x12'envoy.extensions.filters.http.router.v3\xba\x80\xc8\xd1\x06\x02\x10\x01\n" +
	"0io.envoyproxy.envoy.config.filter.http.router.v2B\vRouterProtoP\x01ZRgithub.com/envoyproxy/go-control-plane/envoy/config/filter/http/router/v2;routerv2b\x06proto3"

var (
	file_envoy_config_filter_http_router_v2_router_proto_rawDescOnce sync.Once
	file_envoy_config_filter_http_router_v2_router_proto_rawDescData []byte
)

func file_envoy_config_filter_http_router_v2_router_proto_rawDescGZIP() []byte {
	file_envoy_config_filter_http_router_v2_router_proto_rawDescOnce.Do(func() {
		file_envoy_config_filter_http_router_v2_router_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_envoy_config_filter_http_router_v2_router_proto_rawDesc), len(file_envoy_config_filter_http_router_v2_router_proto_rawDesc)))
	})
	return file_envoy_config_filter_http_router_v2_router_proto_rawDescData
}

var file_envoy_config_filter_http_router_v2_router_proto_msgTypes = make([]protoimpl.MessageInfo, 1)
var file_envoy_config_filter_http_router_v2_router_proto_goTypes = []any{
	(*Router)(nil),               // 0: envoy.config.filter.http.router.v2.Router
	(*wrapperspb.BoolValue)(nil), // 1: google.protobuf.BoolValue
	(*v2.AccessLog)(nil),         // 2: envoy.config.filter.accesslog.v2.AccessLog
}
var file_envoy_config_filter_http_router_v2_router_proto_depIdxs = []int32{
	1, // 0: envoy.config.filter.http.router.v2.Router.dynamic_stats:type_name -> google.protobuf.BoolValue
	2, // 1: envoy.config.filter.http.router.v2.Router.upstream_log:type_name -> envoy.config.filter.accesslog.v2.AccessLog
	2, // [2:2] is the sub-list for method output_type
	2, // [2:2] is the sub-list for method input_type
	2, // [2:2] is the sub-list for extension type_name
	2, // [2:2] is the sub-list for extension extendee
	0, // [0:2] is the sub-list for field type_name
}

func init() { file_envoy_config_filter_http_router_v2_router_proto_init() }
func file_envoy_config_filter_http_router_v2_router_proto_init() {
	if File_envoy_config_filter_http_router_v2_router_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_filter_http_router_v2_router_proto_rawDesc), len(file_envoy_config_filter_http_router_v2_router_proto_rawDesc)),
			NumEnums:      0,
			NumMessages:   1,
			NumExtensions: 0,
			NumServices:   0,
		},
		GoTypes:           file_envoy_config_filter_http_router_v2_router_proto_goTypes,
		DependencyIndexes: file_envoy_config_filter_http_router_v2_router_proto_depIdxs,
		MessageInfos:      file_envoy_config_filter_http_router_v2_router_proto_msgTypes,
	}.Build()
	File_envoy_config_filter_http_router_v2_router_proto = out.File
	file_envoy_config_filter_http_router_v2_router_proto_goTypes = nil
	file_envoy_config_filter_http_router_v2_router_proto_depIdxs = nil
}
