// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
// 	protoc-gen-go v1.36.10
// 	protoc        v7.35.1
// source: envoy/extensions/filters/http/ext_proc/v3/ext_proc.proto

package ext_procv3

import (
	_ "github.com/cncf/xds/go/udpa/annotations"
	_ "github.com/cncf/xds/go/xds/annotations/v3"
	_ "github.com/envoyproxy/go-control-plane/envoy/annotations"
	v31 "github.com/envoyproxy/go-control-plane/envoy/config/common/mutation_rules/v3"
	v3 "github.com/envoyproxy/go-control-plane/envoy/config/core/v3"
	v33 "github.com/envoyproxy/go-control-plane/envoy/type/matcher/v3"
	v32 "github.com/envoyproxy/go-control-plane/envoy/type/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"
	structpb "google.golang.org/protobuf/types/known/structpb"
	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)
)

// Describes the route cache action to be taken when an external processor response
// is received in response to request headers.
type ExternalProcessor_RouteCacheAction int32

const (
	// The default behavior is to clear the route cache only when the
	// :ref:`clear_route_cache <envoy_v3_api_field_service.ext_proc.v3.CommonResponse.clear_route_cache>`
	// field is set in an external processor response.
	ExternalProcessor_DEFAULT ExternalProcessor_RouteCacheAction = 0
	// Always clear the route cache irrespective of the “clear_route_cache“ bit in
	// the external processor response.
	ExternalProcessor_CLEAR ExternalProcessor_RouteCacheAction = 1
	// Do not clear the route cache irrespective of the “clear_route_cache“ bit in
	// the external processor response. Setting to “RETAIN“ is equivalent to setting the
	// :ref:`disable_clear_route_cache <envoy_v3_api_field_extensions.filters.http.ext_proc.v3.ExternalProcessor.disable_clear_route_cache>`
	// to true.
	ExternalProcessor_RETAIN ExternalProcessor_RouteCacheAction = 2
)

// Enum value maps for ExternalProcessor_RouteCacheAction.
var (
	ExternalProcessor_RouteCacheAction_name = map[int32]string{
		0: "DEFAULT",
		1: "CLEAR",
		2: "RETAIN",
	}
	ExternalProcessor_RouteCacheAction_value = map[string]int32{
		"DEFAULT": 0,
		"CLEAR":   1,
		"RETAIN":  2,
	}
)

func (x ExternalProcessor_RouteCacheAction) Enum() *ExternalProcessor_RouteCacheAction {
	p := new(ExternalProcessor_RouteCacheAction)
	*p = x
	return p
}

func (x ExternalProcessor_RouteCacheAction) String() string {
	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}

func (ExternalProcessor_RouteCacheAction) Descriptor() protoreflect.EnumDescriptor {
	return file_envoy_extensions_filters_http_ext_proc_v3_ext_proc_proto_enumTypes[0].Descriptor()
}

func (ExternalProcessor_RouteCacheAction) Type() protoreflect.EnumType {
	return &file_envoy_extensions_filters_http_ext_proc_v3_ext_proc_proto_enumTypes[0]
}

func (x ExternalProcessor_RouteCacheAction) Number() protoreflect.EnumNumber {
	return protoreflect.EnumNumber(x)
}

// Deprecated: Use ExternalProcessor_RouteCacheAction.Descriptor instead.
func (ExternalProcessor_RouteCacheAction) EnumDescriptor() ([]byte, []int) {
	return file_envoy_extensions_filters_http_ext_proc_v3_ext_proc_proto_rawDescGZIP(), []int{0, 0}
}

// The filter communicates with an external gRPC service called an "external processor"
// that can do a variety of things with the request and response:
//
// * Access and modify the HTTP headers on the request, response, or both.
// * Access and modify the HTTP request and response bodies.
// * Access and modify the dynamic stream metadata.
// * Immediately send an HTTP response downstream and terminate other processing.
//
// The filter communicates with the server using a gRPC bidirectional stream. After the initial
// request, the external server is in control over what additional data is sent to it
// and how it should be processed.
//
// By implementing the protocol specified by the stream, the external server can choose:
//
// * Whether it receives the response message at all.
// * Whether it receives the message body at all, in separate chunks, or as a single buffer.
// * To modify request or response trailers if they already exist.
//
// The filter supports up to six different processing steps. Each is represented by
// a gRPC stream message that is sent to the external processor. For each message, the
// processor must send a matching response.
//
//   - Request headers: Contains the headers from the original HTTP request.
//   - Request body: If the body is present, the behavior depends on the
//     body send mode. In “BUFFERED“ or “BUFFERED_PARTIAL“ mode, the body is sent to the external
//     processor in a single message. In “STREAMED“ or “FULL_DUPLEX_STREAMED“ mode, the body will
//     be split across multiple messages sent to the external processor. In “GRPC“ mode, as each
//     gRPC message arrives, it will be sent to the external processor (there will be exactly one
//     gRPC message in each message sent to the external processor). In “NONE“ mode, the body will
//     not be sent to the external processor.
//   - Request trailers: Delivered if they are present and if the trailer mode is set
//     to “SEND“.
//   - Response headers: Contains the headers from the HTTP response. Keep in mind
//     that if the upstream system sends them before processing the request body that
//     this message may arrive before the complete body.
//   - Response body: Sent according to the processing mode like the request body.
//   - Response trailers: Delivered according to the processing mode like the
//     request trailers.
//
// By default, the processor sends only the request and response headers messages.
// This may be changed to include any of the six steps by changing the “processing_mode“
// setting of the filter configuration, or by setting the “mode_override“ of any response
// from the external processor. The latter is only enabled if “allow_mode_override“ is
// set to true. This way, a processor may, for example, use information
// in the request header to determine whether the message body must be examined, or whether
// the data plane should simply stream it straight through.
//
// All of this together allows a server to process the filter traffic in fairly
// sophisticated ways. For example:
//
//   - A server may choose to examine all or part of the HTTP message bodies depending
//     on the content of the headers.
//   - A server may choose to immediately reject some messages based on their HTTP
//     headers (or other dynamic metadata) and more carefully examine others.
//
// The protocol itself is based on a bidirectional gRPC stream. The data plane will send the server
// :ref:`ProcessingRequest <envoy_v3_api_msg_service.ext_proc.v3.ProcessingRequest>`
// messages, and the server must reply with
// :ref:`ProcessingResponse <envoy_v3_api_msg_service.ext_proc.v3.ProcessingResponse>`.
//
// Stats about each gRPC call are recorded in a :ref:`dynamic filter state
// <arch_overview_advanced_filter_state_sharing>` object in a namespace matching the filter
// name.
//
// [#next-free-field: 27]
type ExternalProcessor struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Configuration for the gRPC service that the filter will communicate with.
	// Only one of “grpc_service“ or “http_service“ can be set.
	// It is required that one of them must be set.
	GrpcService *v3.GrpcService `protobuf:"bytes,1,opt,name=grpc_service,json=grpcService,proto3" json:"grpc_service,omitempty"`
	// Configuration for the HTTP service that the filter will communicate with.
	// Only one of “http_service“ or
	// :ref:`grpc_service <envoy_v3_api_field_extensions.filters.http.ext_proc.v3.ExternalProcessor.grpc_service>`
	// can be set. It is required that one of them must be set.
	//
	// If “http_service“ is set, the
	// :ref:`processing_mode <envoy_v3_api_field_extensions.filters.http.ext_proc.v3.ExternalProcessor.processing_mode>`
	// cannot be configured to send any body or trailers. i.e., “http_service“ only supports
	// sending request or response headers to the side stream server.
	//
	// With this configuration, the data plane behavior is:
	//
	// 1. The headers are first put in a proto message
	// :ref:`ProcessingRequest <envoy_v3_api_msg_service.ext_proc.v3.ProcessingRequest>`.
	//
	// 2. This proto message is then transcoded into a JSON text.
	//
	// 3. The data plane then sends an HTTP POST message with content-type as "application/json",
	// and this JSON text as body to the side stream server.
	//
	// After the side-stream receives this HTTP request message, it is expected to do as follows:
	//
	// 1. It converts the body, which is a JSON string, into a “ProcessingRequest“
	// proto message to examine and mutate the headers.
	//
	// 2. It then sets the mutated headers into a new proto message
	// :ref:`ProcessingResponse <envoy_v3_api_msg_service.ext_proc.v3.ProcessingResponse>`.
	//
	// 3. It converts the “ProcessingResponse“ proto message into a JSON text.
	//
	// 4. It then sends an HTTP response back to the data plane with status code as “"200"“,
	// “content-type“ as “"application/json"“ and sets the JSON text as the body.
	HttpService *ExtProcHttpService `protobuf:"bytes,20,opt,name=http_service,json=httpService,proto3" json:"http_service,omitempty"`
	// By default, if in the following cases:
	//
	// 1. The gRPC stream cannot be established.
	//
	// 2. The gRPC stream is closed prematurely with an error.
	//
	// 3. The external processing timeouts.
	//
	// 4. The ext_proc server sends back spurious response messages.
	//
	// The filter will fail and a local reply with error code
	// 504(for timeout case) or 500(for all other cases), will be sent to the downstream.
	//
	// However, with this parameter set to true and if the above cases happen, the processing
	// continues without error.
	FailureModeAllow bool `protobuf:"varint,2,opt,name=failure_mode_allow,json=failureModeAllow,proto3" json:"failure_mode_allow,omitempty"`
	// Specifies default options for how HTTP headers, trailers, and bodies are
	// sent. See “ProcessingMode“ for details.
	ProcessingMode *ProcessingMode `protobuf:"bytes,3,opt,name=processing_mode,json=processingMode,proto3" json:"processing_mode,omitempty"`
	// The data plane provides a number of :ref:`attributes <arch_overview_attributes>`
	// for expressive policies. Each attribute name provided in this field will be
	// matched against that list and populated in the
	// :ref:`ProcessingRequest.attributes <envoy_v3_api_field_service.ext_proc.v3.ProcessingRequest.attributes>` field.
	// See the :ref:`attribute documentation <arch_overview_request_attributes>`
	// for the list of supported attributes and their types.
	RequestAttributes []string `protobuf:"bytes,5,rep,name=request_attributes,json=requestAttributes,proto3" json:"request_attributes,omitempty"`
	// The data plane provides a number of :ref:`attributes <arch_overview_attributes>`
	// for expressive policies. Each attribute name provided in this field will be
	// matched against that list and populated in the
	// :ref:`ProcessingRequest.attributes <envoy_v3_api_field_service.ext_proc.v3.ProcessingRequest.attributes>` field.
	// See the :ref:`attribute documentation <arch_overview_attributes>`
	// for the list of supported attributes and their types.
	ResponseAttributes []string `protobuf:"bytes,6,rep,name=response_attributes,json=responseAttributes,proto3" json:"response_attributes,omitempty"`
	// Specifies the timeout for each individual message sent on the stream.
	// Whenever the data plane sends a message on the stream that requires a
	// response, it will reset this timer, and will stop processing and return
	// an error (subject to the processing mode) if the timer expires before a
	// matching response is received. There is no timeout when the filter is
	// running in observability mode or when the body send mode is
	// “FULL_DUPLEX_STREAMED“ or “GRPC“. Zero is a valid config which means
	// the timer will be triggered immediately. If not configured, default is
	// 200 milliseconds.
	MessageTimeout *durationpb.Duration `protobuf:"bytes,7,opt,name=message_timeout,json=messageTimeout,proto3" json:"message_timeout,omitempty"`
	// Optional additional prefix to use when emitting statistics. This allows to distinguish
	// emitted statistics between configured “ext_proc“ filters in an HTTP filter chain.
	StatPrefix string `protobuf:"bytes,8,opt,name=stat_prefix,json=statPrefix,proto3" json:"stat_prefix,omitempty"`
	// Rules that determine what modifications an external processing server may
	// make to message headers. If not set, all headers may be modified except
	// for "host", ":authority", ":scheme", ":method", and headers that start
	// with the header prefix set via
	// :ref:`header_prefix <envoy_v3_api_field_config.bootstrap.v3.Bootstrap.header_prefix>`
	// (which is usually "x-envoy").
	// Note that changing headers such as "host" or ":authority" may not in itself
	// change the data plane's routing decision, as routes can be cached. To also force the
	// route to be recomputed, set the
	// :ref:`clear_route_cache <envoy_v3_api_field_service.ext_proc.v3.CommonResponse.clear_route_cache>`
	// field to true in the same response.
	MutationRules *v31.HeaderMutationRules `protobuf:"bytes,9,opt,name=mutation_rules,json=mutationRules,proto3" json:"mutation_rules,omitempty"`
	// Specify the upper bound of
	// :ref:`override_message_timeout <envoy_v3_api_field_service.ext_proc.v3.ProcessingResponse.override_message_timeout>`
	// If not specified, by default it is 0, which will effectively disable the “override_message_timeout“ API.
	MaxMessageTimeout *durationpb.Duration `protobuf:"bytes,10,opt,name=max_message_timeout,json=maxMessageTimeout,proto3" json:"max_message_timeout,omitempty"`
	// Allow headers matching the “forward_rules“ to be forwarded to the external processing server.
	// If not set, all headers are forwarded to the external processing server.
	ForwardRules *HeaderForwardingRules `protobuf:"bytes,12,opt,name=forward_rules,json=forwardRules,proto3" json:"forward_rules,omitempty"`
	// Additional metadata to be added to the filter state for logging purposes. The metadata
	// will be added to StreamInfo's filter state under the namespace corresponding to the
	// ext_proc filter name.
	FilterMetadata *structpb.Struct `protobuf:"bytes,13,opt,name=filter_metadata,json=filterMetadata,proto3" json:"filter_metadata,omitempty"`
	// If “allow_mode_override“ is set to true, the filter config :ref:`processing_mode
	// <envoy_v3_api_field_extensions.filters.http.ext_proc.v3.ExternalProcessor.processing_mode>`
	// can be overridden by the response message from the external processing server
	// :ref:`mode_override <envoy_v3_api_field_service.ext_proc.v3.ProcessingResponse.mode_override>`.
	// If not set, “mode_override“ API in the response message will be ignored.
	// Mode override is not supported if the body send mode is “FULL_DUPLEX_STREAMED“.
	AllowModeOverride bool `protobuf:"varint,14,opt,name=allow_mode_override,json=allowModeOverride,proto3" json:"allow_mode_override,omitempty"`
	// If set to true, ignore the
	// :ref:`immediate_response <envoy_v3_api_field_service.ext_proc.v3.ProcessingResponse.immediate_response>`
	// message in an external processor response. In such case, no local reply will be sent.
	// Instead, the stream to the external processor will be closed. There will be no
	// more external processing for this stream from now on.
	DisableImmediateResponse bool `protobuf:"varint,15,opt,name=disable_immediate_response,json=disableImmediateResponse,proto3" json:"disable_immediate_response,omitempty"`
	// Options related to the sending and receiving of dynamic metadata.
	MetadataOptions *MetadataOptions `protobuf:"bytes,16,opt,name=metadata_options,json=metadataOptions,proto3" json:"metadata_options,omitempty"`
	// If true, send each part of the HTTP request or response specified by “ProcessingMode“
	// without pausing on filter chain iteration. It is "Send and Go" mode that can be used
	// by external processor to observe the request's data and status. In this mode:
	//
	// 1. Only “STREAMED“, “GRPC“, and “NONE“ body processing modes are supported; for any
	// other body processing mode, the body will not be sent.
	//
	// 2. External processor should not send back processing response, as any responses will be ignored.
	// This also means that
	// :ref:`message_timeout <envoy_v3_api_field_extensions.filters.http.ext_proc.v3.ExternalProcessor.message_timeout>`
	// restriction doesn't apply to this mode.
	//
	// 3. External processor may still close the stream to indicate that no more messages are needed.
	ObservabilityMode bool `protobuf:"varint,17,opt,name=observability_mode,json=observabilityMode,proto3" json:"observability_mode,omitempty"`
	// Prevents clearing the route-cache when the
	// :ref:`clear_route_cache <envoy_v3_api_field_service.ext_proc.v3.CommonResponse.clear_route_cache>`
	// field is set in an external processor response.
	// Only one of “disable_clear_route_cache“ or “route_cache_action“ can be set.
	// It is recommended to set “route_cache_action“ which supersedes “disable_clear_route_cache“.
	DisableClearRouteCache bool `protobuf:"varint,11,opt,name=disable_clear_route_cache,json=disableClearRouteCache,proto3" json:"disable_clear_route_cache,omitempty"`
	// Specifies the action to be taken when an external processor response is
	// received in response to request headers. It is recommended to set this field rather than set
	// :ref:`disable_clear_route_cache <envoy_v3_api_field_extensions.filters.http.ext_proc.v3.ExternalProcessor.disable_clear_route_cache>`.
	// Only one of “disable_clear_route_cache“ or “route_cache_action“ can be set.
	//
	// .. attention::
	//
	//	Clearing the route cache can cause Envoy to recompute route matching after earlier HTTP
	//	filters have already processed the request. This can be security-sensitive when filters
	//	that make route-dependent authorization decisions, such as the RBAC filter, run before
	//	ext_proc and ext_proc mutates route-matching inputs.
	//
	//	Operators should only enable route cache clearing for trusted external processors, should
	//	carefully order route-dependent authorization filters, and should use mutation_rules to
	//	restrict sensitive mutations when appropriate.
	RouteCacheAction ExternalProcessor_RouteCacheAction `protobuf:"varint,18,opt,name=route_cache_action,json=routeCacheAction,proto3,enum=envoy.extensions.filters.http.ext_proc.v3.ExternalProcessor_RouteCacheAction" json:"route_cache_action,omitempty"`
	// Specifies the deferred closure timeout for gRPC stream that connects to external processor. Currently, the deferred stream closure
	// is only used in :ref:`observability_mode <envoy_v3_api_field_extensions.filters.http.ext_proc.v3.ExternalProcessor.observability_mode>`.
	// In observability mode, gRPC streams may be held open to the external processor longer than the lifetime of the regular client to
	// backend stream lifetime. In this case, the data plane will eventually timeout the external processor stream according to this time limit.
	// The default value is 5000 milliseconds (5 seconds) if not specified.
	DeferredCloseTimeout *durationpb.Duration `protobuf:"bytes,19,opt,name=deferred_close_timeout,json=deferredCloseTimeout,proto3" json:"deferred_close_timeout,omitempty"`
	// Send body to the side stream server once it arrives without waiting for the header response from that server.
	// It only works for “STREAMED“ body processing mode. For any other body
	// processing modes, it is ignored.
	// The server has two options upon receiving a header request:
	//
	// 1. Instant Response: send the header response as soon as the header request is received.
	//
	// 2. Delayed Response: wait for the body before sending any response.
	//
	// In all scenarios, the header-body ordering must always be maintained.
	//
	// If enabled the data plane will ignore the
	// :ref:`mode_override <envoy_v3_api_field_service.ext_proc.v3.ProcessingResponse.mode_override>`
	// value that the server sends in the header response. This is because the data plane may have already
	// sent the body to the server, prior to processing the header response.
	SendBodyWithoutWaitingForHeaderResponse bool `protobuf:"varint,21,opt,name=send_body_without_waiting_for_header_response,json=sendBodyWithoutWaitingForHeaderResponse,proto3" json:"send_body_without_waiting_for_header_response,omitempty"`
	// When :ref:`allow_mode_override
	// <envoy_v3_api_field_extensions.filters.http.ext_proc.v3.ExternalProcessor.allow_mode_override>` is enabled and
	// “allowed_override_modes“ is configured, the filter config :ref:`processing_mode
	// <envoy_v3_api_field_extensions.filters.http.ext_proc.v3.ExternalProcessor.processing_mode>`
	// can only be overridden by the response message from the external processing server iff the
	// :ref:`mode_override <envoy_v3_api_field_service.ext_proc.v3.ProcessingResponse.mode_override>` is allowed by
	// the “allowed_override_modes“ allow-list below.
	// Since “request_header_mode“ is not applicable in any way, it's ignored in comparison.
	AllowedOverrideModes []*ProcessingMode `protobuf:"bytes,22,rep,name=allowed_override_modes,json=allowedOverrideModes,proto3" json:"allowed_override_modes,omitempty"`
	// Decorator to introduce custom logic that runs after the “ProcessingRequest“ is constructed, but
	// before it is sent to the External Processor. The “ProcessingRequest“ may be modified.
	//
	// .. note::
	//
	//	Processing request modifiers are currently in alpha.
	//
	// [#extension-category: envoy.http.ext_proc.processing_request_modifiers]
	ProcessingRequestModifier *v3.TypedExtensionConfig `protobuf:"bytes,25,opt,name=processing_request_modifier,json=processingRequestModifier,proto3" json:"processing_request_modifier,omitempty"`
	// Decorator to introduce custom logic that runs after a message received from
	// the External Processor is processed, but before continuing filter chain iteration.
	//
	// .. note::
	//
	//	Response processors are currently in alpha.
	//
	// [#extension-category: envoy.http.ext_proc.response_processors]
	OnProcessingResponse *v3.TypedExtensionConfig `protobuf:"bytes,23,opt,name=on_processing_response,json=onProcessingResponse,proto3" json:"on_processing_response,omitempty"`
	// Sets the HTTP status code that is returned to the client when the external processing server returns
	// an error, fails to respond, or cannot be reached.
	//
	// The default status is “HTTP 500 Internal Server Error“.
	StatusOnError *v32.HttpStatus `protobuf:"bytes,24,opt,name=status_on_error,json=statusOnError,proto3" json:"status_on_error,omitempty"`
	// If true, the filter will not remove the “content-length“ header from the request/response after external processing.
	// It is typically used in
	// :ref:`FULL_DUPLEX_STREAMED <envoy_v3_api_enum_value_extensions.filters.http.ext_proc.v3.ProcessingMode.BodySendMode.FULL_DUPLEX_STREAMED>`
	// mode. If the original body has been modified, the external processing server needs to set the correct content-length header in HeaderMutation
	// that matches the modified body length.
	//
	// .. warning::
	//
	//	This configuration should only be used if you are sure that the content length matches
	//	the body length after external processing. Otherwise, it may cause vulnerability issues such as
	//	request smuggling. Thus, please use your own discretion when enabling this feature.
	AllowContentLengthHeader bool `protobuf:"varint,26,opt,name=allow_content_length_header,json=allowContentLengthHeader,proto3" json:"allow_content_length_header,omitempty"`
	unknownFields            protoimpl.UnknownFields
	sizeCache                protoimpl.SizeCache
}

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

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

func (*ExternalProcessor) ProtoMessage() {}

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

func (x *ExternalProcessor) GetGrpcService() *v3.GrpcService {
	if x != nil {
		return x.GrpcService
	}
	return nil
}

func (x *ExternalProcessor) GetHttpService() *ExtProcHttpService {
	if x != nil {
		return x.HttpService
	}
	return nil
}

func (x *ExternalProcessor) GetFailureModeAllow() bool {
	if x != nil {
		return x.FailureModeAllow
	}
	return false
}

func (x *ExternalProcessor) GetProcessingMode() *ProcessingMode {
	if x != nil {
		return x.ProcessingMode
	}
	return nil
}

func (x *ExternalProcessor) GetRequestAttributes() []string {
	if x != nil {
		return x.RequestAttributes
	}
	return nil
}

func (x *ExternalProcessor) GetResponseAttributes() []string {
	if x != nil {
		return x.ResponseAttributes
	}
	return nil
}

func (x *ExternalProcessor) GetMessageTimeout() *durationpb.Duration {
	if x != nil {
		return x.MessageTimeout
	}
	return nil
}

func (x *ExternalProcessor) GetStatPrefix() string {
	if x != nil {
		return x.StatPrefix
	}
	return ""
}

func (x *ExternalProcessor) GetMutationRules() *v31.HeaderMutationRules {
	if x != nil {
		return x.MutationRules
	}
	return nil
}

func (x *ExternalProcessor) GetMaxMessageTimeout() *durationpb.Duration {
	if x != nil {
		return x.MaxMessageTimeout
	}
	return nil
}

func (x *ExternalProcessor) GetForwardRules() *HeaderForwardingRules {
	if x != nil {
		return x.ForwardRules
	}
	return nil
}

func (x *ExternalProcessor) GetFilterMetadata() *structpb.Struct {
	if x != nil {
		return x.FilterMetadata
	}
	return nil
}

func (x *ExternalProcessor) GetAllowModeOverride() bool {
	if x != nil {
		return x.AllowModeOverride
	}
	return false
}

func (x *ExternalProcessor) GetDisableImmediateResponse() bool {
	if x != nil {
		return x.DisableImmediateResponse
	}
	return false
}

func (x *ExternalProcessor) GetMetadataOptions() *MetadataOptions {
	if x != nil {
		return x.MetadataOptions
	}
	return nil
}

func (x *ExternalProcessor) GetObservabilityMode() bool {
	if x != nil {
		return x.ObservabilityMode
	}
	return false
}

func (x *ExternalProcessor) GetDisableClearRouteCache() bool {
	if x != nil {
		return x.DisableClearRouteCache
	}
	return false
}

func (x *ExternalProcessor) GetRouteCacheAction() ExternalProcessor_RouteCacheAction {
	if x != nil {
		return x.RouteCacheAction
	}
	return ExternalProcessor_DEFAULT
}

func (x *ExternalProcessor) GetDeferredCloseTimeout() *durationpb.Duration {
	if x != nil {
		return x.DeferredCloseTimeout
	}
	return nil
}

func (x *ExternalProcessor) GetSendBodyWithoutWaitingForHeaderResponse() bool {
	if x != nil {
		return x.SendBodyWithoutWaitingForHeaderResponse
	}
	return false
}

func (x *ExternalProcessor) GetAllowedOverrideModes() []*ProcessingMode {
	if x != nil {
		return x.AllowedOverrideModes
	}
	return nil
}

func (x *ExternalProcessor) GetProcessingRequestModifier() *v3.TypedExtensionConfig {
	if x != nil {
		return x.ProcessingRequestModifier
	}
	return nil
}

func (x *ExternalProcessor) GetOnProcessingResponse() *v3.TypedExtensionConfig {
	if x != nil {
		return x.OnProcessingResponse
	}
	return nil
}

func (x *ExternalProcessor) GetStatusOnError() *v32.HttpStatus {
	if x != nil {
		return x.StatusOnError
	}
	return nil
}

func (x *ExternalProcessor) GetAllowContentLengthHeader() bool {
	if x != nil {
		return x.AllowContentLengthHeader
	}
	return false
}

// ExtProcHttpService is used for HTTP communication between the filter and the external processing service.
type ExtProcHttpService struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Sets the HTTP service which the external processing requests must be sent to.
	HttpService   *v3.HttpService `protobuf:"bytes,1,opt,name=http_service,json=httpService,proto3" json:"http_service,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *ExtProcHttpService) Reset() {
	*x = ExtProcHttpService{}
	mi := &file_envoy_extensions_filters_http_ext_proc_v3_ext_proc_proto_msgTypes[1]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*ExtProcHttpService) ProtoMessage() {}

func (x *ExtProcHttpService) ProtoReflect() protoreflect.Message {
	mi := &file_envoy_extensions_filters_http_ext_proc_v3_ext_proc_proto_msgTypes[1]
	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 ExtProcHttpService.ProtoReflect.Descriptor instead.
func (*ExtProcHttpService) Descriptor() ([]byte, []int) {
	return file_envoy_extensions_filters_http_ext_proc_v3_ext_proc_proto_rawDescGZIP(), []int{1}
}

func (x *ExtProcHttpService) GetHttpService() *v3.HttpService {
	if x != nil {
		return x.HttpService
	}
	return nil
}

// The MetadataOptions structure defines options for the sending and receiving of
// dynamic metadata. Specifically, which namespaces to send to the server, whether
// metadata returned by the server may be written, and how that metadata may be written.
type MetadataOptions struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Describes which typed or untyped filter dynamic metadata namespaces to forward to
	// the external processing server.
	ForwardingNamespaces *MetadataOptions_MetadataNamespaces `protobuf:"bytes,1,opt,name=forwarding_namespaces,json=forwardingNamespaces,proto3" json:"forwarding_namespaces,omitempty"`
	// Describes which typed or untyped filter dynamic metadata namespaces to accept from
	// the external processing server. Set to empty or leave unset to disallow writing
	// any received dynamic metadata. Receiving of typed metadata is not supported.
	ReceivingNamespaces *MetadataOptions_MetadataNamespaces `protobuf:"bytes,2,opt,name=receiving_namespaces,json=receivingNamespaces,proto3" json:"receiving_namespaces,omitempty"`
	// Describes which cluster metadata namespaces to forward to
	// the external processing server.
	// .. note::
	// This is the least specific metadata. Should there be any namespace collision,
	// cluster level metadata can be overridden by filter metadata.
	ClusterMetadataForwardingNamespaces *MetadataOptions_MetadataNamespaces `protobuf:"bytes,3,opt,name=cluster_metadata_forwarding_namespaces,json=clusterMetadataForwardingNamespaces,proto3" json:"cluster_metadata_forwarding_namespaces,omitempty"`
	unknownFields                       protoimpl.UnknownFields
	sizeCache                           protoimpl.SizeCache
}

func (x *MetadataOptions) Reset() {
	*x = MetadataOptions{}
	mi := &file_envoy_extensions_filters_http_ext_proc_v3_ext_proc_proto_msgTypes[2]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*MetadataOptions) ProtoMessage() {}

func (x *MetadataOptions) ProtoReflect() protoreflect.Message {
	mi := &file_envoy_extensions_filters_http_ext_proc_v3_ext_proc_proto_msgTypes[2]
	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 MetadataOptions.ProtoReflect.Descriptor instead.
func (*MetadataOptions) Descriptor() ([]byte, []int) {
	return file_envoy_extensions_filters_http_ext_proc_v3_ext_proc_proto_rawDescGZIP(), []int{2}
}

func (x *MetadataOptions) GetForwardingNamespaces() *MetadataOptions_MetadataNamespaces {
	if x != nil {
		return x.ForwardingNamespaces
	}
	return nil
}

func (x *MetadataOptions) GetReceivingNamespaces() *MetadataOptions_MetadataNamespaces {
	if x != nil {
		return x.ReceivingNamespaces
	}
	return nil
}

func (x *MetadataOptions) GetClusterMetadataForwardingNamespaces() *MetadataOptions_MetadataNamespaces {
	if x != nil {
		return x.ClusterMetadataForwardingNamespaces
	}
	return nil
}

// The HeaderForwardingRules structure specifies what headers are
// allowed to be forwarded to the external processing server.
//
// This works as below:
//
//  1. If neither “allowed_headers“ nor “disallowed_headers“ is set, all headers are forwarded.
//  2. If both “allowed_headers“ and “disallowed_headers“ are set, only headers in the
//     “allowed_headers“ but not in the “disallowed_headers“ are forwarded.
//  3. If “allowed_headers“ is set, and “disallowed_headers“ is not set, only headers in
//     the “allowed_headers“ are forwarded.
//  4. If “disallowed_headers“ is set, and “allowed_headers“ is not set, all headers except
//     headers in the “disallowed_headers“ are forwarded.
type HeaderForwardingRules struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// If set, specifically allow any header in this list to be forwarded to the external
	// processing server. This can be overridden by the below “disallowed_headers“.
	AllowedHeaders *v33.ListStringMatcher `protobuf:"bytes,1,opt,name=allowed_headers,json=allowedHeaders,proto3" json:"allowed_headers,omitempty"`
	// If set, specifically disallow any header in this list to be forwarded to the external
	// processing server. This overrides the above “allowed_headers“ if a header matches both.
	DisallowedHeaders *v33.ListStringMatcher `protobuf:"bytes,2,opt,name=disallowed_headers,json=disallowedHeaders,proto3" json:"disallowed_headers,omitempty"`
	unknownFields     protoimpl.UnknownFields
	sizeCache         protoimpl.SizeCache
}

func (x *HeaderForwardingRules) Reset() {
	*x = HeaderForwardingRules{}
	mi := &file_envoy_extensions_filters_http_ext_proc_v3_ext_proc_proto_msgTypes[3]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*HeaderForwardingRules) ProtoMessage() {}

func (x *HeaderForwardingRules) ProtoReflect() protoreflect.Message {
	mi := &file_envoy_extensions_filters_http_ext_proc_v3_ext_proc_proto_msgTypes[3]
	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 HeaderForwardingRules.ProtoReflect.Descriptor instead.
func (*HeaderForwardingRules) Descriptor() ([]byte, []int) {
	return file_envoy_extensions_filters_http_ext_proc_v3_ext_proc_proto_rawDescGZIP(), []int{3}
}

func (x *HeaderForwardingRules) GetAllowedHeaders() *v33.ListStringMatcher {
	if x != nil {
		return x.AllowedHeaders
	}
	return nil
}

func (x *HeaderForwardingRules) GetDisallowedHeaders() *v33.ListStringMatcher {
	if x != nil {
		return x.DisallowedHeaders
	}
	return nil
}

// Extra settings that may be added to per-route configuration for a
// virtual host or cluster.
type ExtProcPerRoute struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Types that are valid to be assigned to Override:
	//
	//	*ExtProcPerRoute_Disabled
	//	*ExtProcPerRoute_Overrides
	Override      isExtProcPerRoute_Override `protobuf_oneof:"override"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *ExtProcPerRoute) Reset() {
	*x = ExtProcPerRoute{}
	mi := &file_envoy_extensions_filters_http_ext_proc_v3_ext_proc_proto_msgTypes[4]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*ExtProcPerRoute) ProtoMessage() {}

func (x *ExtProcPerRoute) ProtoReflect() protoreflect.Message {
	mi := &file_envoy_extensions_filters_http_ext_proc_v3_ext_proc_proto_msgTypes[4]
	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 ExtProcPerRoute.ProtoReflect.Descriptor instead.
func (*ExtProcPerRoute) Descriptor() ([]byte, []int) {
	return file_envoy_extensions_filters_http_ext_proc_v3_ext_proc_proto_rawDescGZIP(), []int{4}
}

func (x *ExtProcPerRoute) GetOverride() isExtProcPerRoute_Override {
	if x != nil {
		return x.Override
	}
	return nil
}

func (x *ExtProcPerRoute) GetDisabled() bool {
	if x != nil {
		if x, ok := x.Override.(*ExtProcPerRoute_Disabled); ok {
			return x.Disabled
		}
	}
	return false
}

func (x *ExtProcPerRoute) GetOverrides() *ExtProcOverrides {
	if x != nil {
		if x, ok := x.Override.(*ExtProcPerRoute_Overrides); ok {
			return x.Overrides
		}
	}
	return nil
}

type isExtProcPerRoute_Override interface {
	isExtProcPerRoute_Override()
}

type ExtProcPerRoute_Disabled struct {
	// Disable the filter for this particular vhost or route.
	// If disabled is specified in multiple per-filter-configs, the most specific one will be used.
	Disabled bool `protobuf:"varint,1,opt,name=disabled,proto3,oneof"`
}

type ExtProcPerRoute_Overrides struct {
	// Override aspects of the configuration for this route. A set of
	// overrides in a more specific configuration will override a "disabled"
	// flag set in a less-specific one.
	Overrides *ExtProcOverrides `protobuf:"bytes,2,opt,name=overrides,proto3,oneof"`
}

func (*ExtProcPerRoute_Disabled) isExtProcPerRoute_Override() {}

func (*ExtProcPerRoute_Overrides) isExtProcPerRoute_Override() {}

// Overrides that may be set on a per-route basis
// [#next-free-field: 10]
type ExtProcOverrides struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Set a different processing mode for this route than the default.
	ProcessingMode *ProcessingMode `protobuf:"bytes,1,opt,name=processing_mode,json=processingMode,proto3" json:"processing_mode,omitempty"`
	// [#not-implemented-hide:]
	// Set a different asynchronous processing option than the default.
	// Deprecated and not implemented.
	//
	// Deprecated: Marked as deprecated in envoy/extensions/filters/http/ext_proc/v3/ext_proc.proto.
	AsyncMode bool `protobuf:"varint,2,opt,name=async_mode,json=asyncMode,proto3" json:"async_mode,omitempty"`
	// [#not-implemented-hide:]
	// Set different optional attributes than the default setting of the
	// “request_attributes“ field.
	RequestAttributes []string `protobuf:"bytes,3,rep,name=request_attributes,json=requestAttributes,proto3" json:"request_attributes,omitempty"`
	// [#not-implemented-hide:]
	// Set different optional properties than the default setting of the
	// “response_attributes“ field.
	ResponseAttributes []string `protobuf:"bytes,4,rep,name=response_attributes,json=responseAttributes,proto3" json:"response_attributes,omitempty"`
	// Set a different gRPC service for this route than the default.
	GrpcService *v3.GrpcService `protobuf:"bytes,5,opt,name=grpc_service,json=grpcService,proto3" json:"grpc_service,omitempty"`
	// Options related to the sending and receiving of dynamic metadata.
	// Lists of forwarding and receiving namespaces will be overridden in their entirety,
	// meaning the most-specific config that specifies this override will be the final
	// config used. It is the prerogative of the control plane to ensure this
	// most-specific config contains the correct final overrides.
	MetadataOptions *MetadataOptions `protobuf:"bytes,6,opt,name=metadata_options,json=metadataOptions,proto3" json:"metadata_options,omitempty"`
	// Additional metadata to include into streams initiated to the “ext_proc“ gRPC
	// service. This can be used for scenarios in which additional ad hoc
	// authorization headers (e.g. “x-foo-bar: baz-key“) are to be injected or
	// when a route needs to partially override inherited metadata.
	GrpcInitialMetadata []*v3.HeaderValue `protobuf:"bytes,7,rep,name=grpc_initial_metadata,json=grpcInitialMetadata,proto3" json:"grpc_initial_metadata,omitempty"`
	// If true, the filter will not fail closed if the gRPC stream is prematurely closed
	// or could not be opened. This field is the per-route override of
	// :ref:`failure_mode_allow <envoy_v3_api_field_extensions.filters.http.ext_proc.v3.ExternalProcessor.failure_mode_allow>`.
	FailureModeAllow *wrapperspb.BoolValue `protobuf:"bytes,8,opt,name=failure_mode_allow,json=failureModeAllow,proto3" json:"failure_mode_allow,omitempty"`
	// Decorator to introduce custom logic that runs after the “ProcessingRequest“ is constructed, but
	// before it is sent to the External Processor. The “ProcessingRequest“ may be modified.
	// This is a per-route override of
	// :ref:`processing_request_modifier <envoy_v3_api_field_extensions.filters.http.ext_proc.v3.ExternalProcessor.processing_request_modifier>`.
	ProcessingRequestModifier *v3.TypedExtensionConfig `protobuf:"bytes,9,opt,name=processing_request_modifier,json=processingRequestModifier,proto3" json:"processing_request_modifier,omitempty"`
	unknownFields             protoimpl.UnknownFields
	sizeCache                 protoimpl.SizeCache
}

func (x *ExtProcOverrides) Reset() {
	*x = ExtProcOverrides{}
	mi := &file_envoy_extensions_filters_http_ext_proc_v3_ext_proc_proto_msgTypes[5]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*ExtProcOverrides) ProtoMessage() {}

func (x *ExtProcOverrides) ProtoReflect() protoreflect.Message {
	mi := &file_envoy_extensions_filters_http_ext_proc_v3_ext_proc_proto_msgTypes[5]
	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 ExtProcOverrides.ProtoReflect.Descriptor instead.
func (*ExtProcOverrides) Descriptor() ([]byte, []int) {
	return file_envoy_extensions_filters_http_ext_proc_v3_ext_proc_proto_rawDescGZIP(), []int{5}
}

func (x *ExtProcOverrides) GetProcessingMode() *ProcessingMode {
	if x != nil {
		return x.ProcessingMode
	}
	return nil
}

// Deprecated: Marked as deprecated in envoy/extensions/filters/http/ext_proc/v3/ext_proc.proto.
func (x *ExtProcOverrides) GetAsyncMode() bool {
	if x != nil {
		return x.AsyncMode
	}
	return false
}

func (x *ExtProcOverrides) GetRequestAttributes() []string {
	if x != nil {
		return x.RequestAttributes
	}
	return nil
}

func (x *ExtProcOverrides) GetResponseAttributes() []string {
	if x != nil {
		return x.ResponseAttributes
	}
	return nil
}

func (x *ExtProcOverrides) GetGrpcService() *v3.GrpcService {
	if x != nil {
		return x.GrpcService
	}
	return nil
}

func (x *ExtProcOverrides) GetMetadataOptions() *MetadataOptions {
	if x != nil {
		return x.MetadataOptions
	}
	return nil
}

func (x *ExtProcOverrides) GetGrpcInitialMetadata() []*v3.HeaderValue {
	if x != nil {
		return x.GrpcInitialMetadata
	}
	return nil
}

func (x *ExtProcOverrides) GetFailureModeAllow() *wrapperspb.BoolValue {
	if x != nil {
		return x.FailureModeAllow
	}
	return nil
}

func (x *ExtProcOverrides) GetProcessingRequestModifier() *v3.TypedExtensionConfig {
	if x != nil {
		return x.ProcessingRequestModifier
	}
	return nil
}

type MetadataOptions_MetadataNamespaces struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Specifies a list of metadata namespaces whose values, if present,
	// will be passed to the “ext_proc“ service as an opaque “protobuf::Struct“.
	Untyped []string `protobuf:"bytes,1,rep,name=untyped,proto3" json:"untyped,omitempty"`
	// Specifies a list of metadata namespaces whose values, if present,
	// will be passed to the “ext_proc“ service as a “protobuf::Any“. This allows
	// envoy and the external processing server to share the protobuf message
	// definition for safe parsing.
	Typed         []string `protobuf:"bytes,2,rep,name=typed,proto3" json:"typed,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *MetadataOptions_MetadataNamespaces) Reset() {
	*x = MetadataOptions_MetadataNamespaces{}
	mi := &file_envoy_extensions_filters_http_ext_proc_v3_ext_proc_proto_msgTypes[6]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*MetadataOptions_MetadataNamespaces) ProtoMessage() {}

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

func (x *MetadataOptions_MetadataNamespaces) GetUntyped() []string {
	if x != nil {
		return x.Untyped
	}
	return nil
}

func (x *MetadataOptions_MetadataNamespaces) GetTyped() []string {
	if x != nil {
		return x.Typed
	}
	return nil
}

var File_envoy_extensions_filters_http_ext_proc_v3_ext_proc_proto protoreflect.FileDescriptor

const file_envoy_extensions_filters_http_ext_proc_v3_ext_proc_proto_rawDesc = "" +
	"\n" +
	"8envoy/extensions/filters/http/ext_proc/v3/ext_proc.proto\x12)envoy.extensions.filters.http.ext_proc.v3\x1a:envoy/config/common/mutation_rules/v3/mutation_rules.proto\x1a\x1fenvoy/config/core/v3/base.proto\x1a$envoy/config/core/v3/extension.proto\x1a'envoy/config/core/v3/grpc_service.proto\x1a'envoy/config/core/v3/http_service.proto\x1a?envoy/extensions/filters/http/ext_proc/v3/processing_mode.proto\x1a\"envoy/type/matcher/v3/string.proto\x1a\x1fenvoy/type/v3/http_status.proto\x1a\x1egoogle/protobuf/duration.proto\x1a\x1cgoogle/protobuf/struct.proto\x1a\x1egoogle/protobuf/wrappers.proto\x1a\x1fxds/annotations/v3/status.proto\x1a#envoy/annotations/deprecation.proto\x1a\x1eudpa/annotations/migrate.proto\x1a\x1dudpa/annotations/status.proto\x1a\x17validate/validate.proto\"\x9b\x11\n" +
	"\x11ExternalProcessor\x12c\n" +
	"\fgrpc_service\x18\x01 \x01(\v2!.envoy.config.core.v3.GrpcServiceB\x1d\xf2\x98\xfe\x8f\x05\x17\x12\x15ext_proc_service_typeR\vgrpcService\x12\x87\x01\n" +
	"\fhttp_service\x18\x14 \x01(\v2=.envoy.extensions.filters.http.ext_proc.v3.ExtProcHttpServiceB%\xf2\x98\xfe\x8f\x05\x17\x12\x15ext_proc_service_type\xd2Ƥ\xe1\x06\x02\b\x01R\vhttpService\x12,\n" +
	"\x12failure_mode_allow\x18\x02 \x01(\bR\x10failureModeAllow\x12b\n" +
	"\x0fprocessing_mode\x18\x03 \x01(\v29.envoy.extensions.filters.http.ext_proc.v3.ProcessingModeR\x0eprocessingMode\x12-\n" +
	"\x12request_attributes\x18\x05 \x03(\tR\x11requestAttributes\x12/\n" +
	"\x13response_attributes\x18\x06 \x03(\tR\x12responseAttributes\x12Q\n" +
	"\x0fmessage_timeout\x18\a \x01(\v2\x19.google.protobuf.DurationB\r\xfaB\n" +
	"\xaa\x01\a\"\x03\b\x90\x1c2\x00R\x0emessageTimeout\x12\x1f\n" +
	"\vstat_prefix\x18\b \x01(\tR\n" +
	"statPrefix\x12a\n" +
	"\x0emutation_rules\x18\t \x01(\v2:.envoy.config.common.mutation_rules.v3.HeaderMutationRulesR\rmutationRules\x12X\n" +
	"\x13max_message_timeout\x18\n" +
	" \x01(\v2\x19.google.protobuf.DurationB\r\xfaB\n" +
	"\xaa\x01\a\"\x03\b\x90\x1c2\x00R\x11maxMessageTimeout\x12e\n" +
	"\rforward_rules\x18\f \x01(\v2@.envoy.extensions.filters.http.ext_proc.v3.HeaderForwardingRulesR\fforwardRules\x12@\n" +
	"\x0ffilter_metadata\x18\r \x01(\v2\x17.google.protobuf.StructR\x0efilterMetadata\x12.\n" +
	"\x13allow_mode_override\x18\x0e \x01(\bR\x11allowModeOverride\x12<\n" +
	"\x1adisable_immediate_response\x18\x0f \x01(\bR\x18disableImmediateResponse\x12e\n" +
	"\x10metadata_options\x18\x10 \x01(\v2:.envoy.extensions.filters.http.ext_proc.v3.MetadataOptionsR\x0fmetadataOptions\x12-\n" +
	"\x12observability_mode\x18\x11 \x01(\bR\x11observabilityMode\x12Y\n" +
	"\x19disable_clear_route_cache\x18\v \x01(\bB\x1e\xf2\x98\xfe\x8f\x05\x18\x12\x16clear_route_cache_typeR\x16disableClearRouteCache\x12\x9b\x01\n" +
	"\x12route_cache_action\x18\x12 \x01(\x0e2M.envoy.extensions.filters.http.ext_proc.v3.ExternalProcessor.RouteCacheActionB\x1e\xf2\x98\xfe\x8f\x05\x18\x12\x16clear_route_cache_typeR\x10routeCacheAction\x12O\n" +
	"\x16deferred_close_timeout\x18\x13 \x01(\v2\x19.google.protobuf.DurationR\x14deferredCloseTimeout\x12^\n" +
	"-send_body_without_waiting_for_header_response\x18\x15 \x01(\bR'sendBodyWithoutWaitingForHeaderResponse\x12o\n" +
	"\x16allowed_override_modes\x18\x16 \x03(\v29.envoy.extensions.filters.http.ext_proc.v3.ProcessingModeR\x14allowedOverrideModes\x12t\n" +
	"\x1bprocessing_request_modifier\x18\x19 \x01(\v2*.envoy.config.core.v3.TypedExtensionConfigB\b\xd2Ƥ\xe1\x06\x02\b\x01R\x19processingRequestModifier\x12j\n" +
	"\x16on_processing_response\x18\x17 \x01(\v2*.envoy.config.core.v3.TypedExtensionConfigB\b\xd2Ƥ\xe1\x06\x02\b\x01R\x14onProcessingResponse\x12A\n" +
	"\x0fstatus_on_error\x18\x18 \x01(\v2\x19.envoy.type.v3.HttpStatusR\rstatusOnError\x12=\n" +
	"\x1ballow_content_length_header\x18\x1a \x01(\bR\x18allowContentLengthHeader\"6\n" +
	"\x10RouteCacheAction\x12\v\n" +
	"\aDEFAULT\x10\x00\x12\t\n" +
	"\x05CLEAR\x10\x01\x12\n" +
	"\n" +
	"\x06RETAIN\x10\x02J\x04\b\x04\x10\x05R\n" +
	"async_mode\"Z\n" +
	"\x12ExtProcHttpService\x12D\n" +
	"\fhttp_service\x18\x01 \x01(\v2!.envoy.config.core.v3.HttpServiceR\vhttpService\"\x84\x04\n" +
	"\x0fMetadataOptions\x12\x82\x01\n" +
	"\x15forwarding_namespaces\x18\x01 \x01(\v2M.envoy.extensions.filters.http.ext_proc.v3.MetadataOptions.MetadataNamespacesR\x14forwardingNamespaces\x12\x80\x01\n" +
	"\x14receiving_namespaces\x18\x02 \x01(\v2M.envoy.extensions.filters.http.ext_proc.v3.MetadataOptions.MetadataNamespacesR\x13receivingNamespaces\x12\xa2\x01\n" +
	"&cluster_metadata_forwarding_namespaces\x18\x03 \x01(\v2M.envoy.extensions.filters.http.ext_proc.v3.MetadataOptions.MetadataNamespacesR#clusterMetadataForwardingNamespaces\x1aD\n" +
	"\x12MetadataNamespaces\x12\x18\n" +
	"\auntyped\x18\x01 \x03(\tR\auntyped\x12\x14\n" +
	"\x05typed\x18\x02 \x03(\tR\x05typed\"\xc3\x01\n" +
	"\x15HeaderForwardingRules\x12Q\n" +
	"\x0fallowed_headers\x18\x01 \x01(\v2(.envoy.type.matcher.v3.ListStringMatcherR\x0eallowedHeaders\x12W\n" +
	"\x12disallowed_headers\x18\x02 \x01(\v2(.envoy.type.matcher.v3.ListStringMatcherR\x11disallowedHeaders\"\xa6\x01\n" +
	"\x0fExtProcPerRoute\x12%\n" +
	"\bdisabled\x18\x01 \x01(\bB\a\xfaB\x04j\x02\b\x01H\x00R\bdisabled\x12[\n" +
	"\toverrides\x18\x02 \x01(\v2;.envoy.extensions.filters.http.ext_proc.v3.ExtProcOverridesH\x00R\toverridesB\x0f\n" +
	"\boverride\x12\x03\xf8B\x01\"\xc6\x05\n" +
	"\x10ExtProcOverrides\x12b\n" +
	"\x0fprocessing_mode\x18\x01 \x01(\v29.envoy.extensions.filters.http.ext_proc.v3.ProcessingModeR\x0eprocessingMode\x12*\n" +
	"\n" +
	"async_mode\x18\x02 \x01(\bB\v\x92ǆ\xd8\x04\x033.0\x18\x01R\tasyncMode\x12-\n" +
	"\x12request_attributes\x18\x03 \x03(\tR\x11requestAttributes\x12/\n" +
	"\x13response_attributes\x18\x04 \x03(\tR\x12responseAttributes\x12D\n" +
	"\fgrpc_service\x18\x05 \x01(\v2!.envoy.config.core.v3.GrpcServiceR\vgrpcService\x12e\n" +
	"\x10metadata_options\x18\x06 \x01(\v2:.envoy.extensions.filters.http.ext_proc.v3.MetadataOptionsR\x0fmetadataOptions\x12U\n" +
	"\x15grpc_initial_metadata\x18\a \x03(\v2!.envoy.config.core.v3.HeaderValueR\x13grpcInitialMetadata\x12H\n" +
	"\x12failure_mode_allow\x18\b \x01(\v2\x1a.google.protobuf.BoolValueR\x10failureModeAllow\x12t\n" +
	"\x1bprocessing_request_modifier\x18\t \x01(\v2*.envoy.config.core.v3.TypedExtensionConfigB\b\xd2Ƥ\xe1\x06\x02\b\x01R\x19processingRequestModifierB\xae\x01\xba\x80\xc8\xd1\x06\x02\x10\x02\n" +
	"7io.envoyproxy.envoy.extensions.filters.http.ext_proc.v3B\fExtProcProtoP\x01Z[github.com/envoyproxy/go-control-plane/envoy/extensions/filters/http/ext_proc/v3;ext_procv3b\x06proto3"

var (
	file_envoy_extensions_filters_http_ext_proc_v3_ext_proc_proto_rawDescOnce sync.Once
	file_envoy_extensions_filters_http_ext_proc_v3_ext_proc_proto_rawDescData []byte
)

func file_envoy_extensions_filters_http_ext_proc_v3_ext_proc_proto_rawDescGZIP() []byte {
	file_envoy_extensions_filters_http_ext_proc_v3_ext_proc_proto_rawDescOnce.Do(func() {
		file_envoy_extensions_filters_http_ext_proc_v3_ext_proc_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_envoy_extensions_filters_http_ext_proc_v3_ext_proc_proto_rawDesc), len(file_envoy_extensions_filters_http_ext_proc_v3_ext_proc_proto_rawDesc)))
	})
	return file_envoy_extensions_filters_http_ext_proc_v3_ext_proc_proto_rawDescData
}

var file_envoy_extensions_filters_http_ext_proc_v3_ext_proc_proto_enumTypes = make([]protoimpl.EnumInfo, 1)
var file_envoy_extensions_filters_http_ext_proc_v3_ext_proc_proto_msgTypes = make([]protoimpl.MessageInfo, 7)
var file_envoy_extensions_filters_http_ext_proc_v3_ext_proc_proto_goTypes = []any{
	(ExternalProcessor_RouteCacheAction)(0),    // 0: envoy.extensions.filters.http.ext_proc.v3.ExternalProcessor.RouteCacheAction
	(*ExternalProcessor)(nil),                  // 1: envoy.extensions.filters.http.ext_proc.v3.ExternalProcessor
	(*ExtProcHttpService)(nil),                 // 2: envoy.extensions.filters.http.ext_proc.v3.ExtProcHttpService
	(*MetadataOptions)(nil),                    // 3: envoy.extensions.filters.http.ext_proc.v3.MetadataOptions
	(*HeaderForwardingRules)(nil),              // 4: envoy.extensions.filters.http.ext_proc.v3.HeaderForwardingRules
	(*ExtProcPerRoute)(nil),                    // 5: envoy.extensions.filters.http.ext_proc.v3.ExtProcPerRoute
	(*ExtProcOverrides)(nil),                   // 6: envoy.extensions.filters.http.ext_proc.v3.ExtProcOverrides
	(*MetadataOptions_MetadataNamespaces)(nil), // 7: envoy.extensions.filters.http.ext_proc.v3.MetadataOptions.MetadataNamespaces
	(*v3.GrpcService)(nil),                     // 8: envoy.config.core.v3.GrpcService
	(*ProcessingMode)(nil),                     // 9: envoy.extensions.filters.http.ext_proc.v3.ProcessingMode
	(*durationpb.Duration)(nil),                // 10: google.protobuf.Duration
	(*v31.HeaderMutationRules)(nil),            // 11: envoy.config.common.mutation_rules.v3.HeaderMutationRules
	(*structpb.Struct)(nil),                    // 12: google.protobuf.Struct
	(*v3.TypedExtensionConfig)(nil),            // 13: envoy.config.core.v3.TypedExtensionConfig
	(*v32.HttpStatus)(nil),                     // 14: envoy.type.v3.HttpStatus
	(*v3.HttpService)(nil),                     // 15: envoy.config.core.v3.HttpService
	(*v33.ListStringMatcher)(nil),              // 16: envoy.type.matcher.v3.ListStringMatcher
	(*v3.HeaderValue)(nil),                     // 17: envoy.config.core.v3.HeaderValue
	(*wrapperspb.BoolValue)(nil),               // 18: google.protobuf.BoolValue
}
var file_envoy_extensions_filters_http_ext_proc_v3_ext_proc_proto_depIdxs = []int32{
	8,  // 0: envoy.extensions.filters.http.ext_proc.v3.ExternalProcessor.grpc_service:type_name -> envoy.config.core.v3.GrpcService
	2,  // 1: envoy.extensions.filters.http.ext_proc.v3.ExternalProcessor.http_service:type_name -> envoy.extensions.filters.http.ext_proc.v3.ExtProcHttpService
	9,  // 2: envoy.extensions.filters.http.ext_proc.v3.ExternalProcessor.processing_mode:type_name -> envoy.extensions.filters.http.ext_proc.v3.ProcessingMode
	10, // 3: envoy.extensions.filters.http.ext_proc.v3.ExternalProcessor.message_timeout:type_name -> google.protobuf.Duration
	11, // 4: envoy.extensions.filters.http.ext_proc.v3.ExternalProcessor.mutation_rules:type_name -> envoy.config.common.mutation_rules.v3.HeaderMutationRules
	10, // 5: envoy.extensions.filters.http.ext_proc.v3.ExternalProcessor.max_message_timeout:type_name -> google.protobuf.Duration
	4,  // 6: envoy.extensions.filters.http.ext_proc.v3.ExternalProcessor.forward_rules:type_name -> envoy.extensions.filters.http.ext_proc.v3.HeaderForwardingRules
	12, // 7: envoy.extensions.filters.http.ext_proc.v3.ExternalProcessor.filter_metadata:type_name -> google.protobuf.Struct
	3,  // 8: envoy.extensions.filters.http.ext_proc.v3.ExternalProcessor.metadata_options:type_name -> envoy.extensions.filters.http.ext_proc.v3.MetadataOptions
	0,  // 9: envoy.extensions.filters.http.ext_proc.v3.ExternalProcessor.route_cache_action:type_name -> envoy.extensions.filters.http.ext_proc.v3.ExternalProcessor.RouteCacheAction
	10, // 10: envoy.extensions.filters.http.ext_proc.v3.ExternalProcessor.deferred_close_timeout:type_name -> google.protobuf.Duration
	9,  // 11: envoy.extensions.filters.http.ext_proc.v3.ExternalProcessor.allowed_override_modes:type_name -> envoy.extensions.filters.http.ext_proc.v3.ProcessingMode
	13, // 12: envoy.extensions.filters.http.ext_proc.v3.ExternalProcessor.processing_request_modifier:type_name -> envoy.config.core.v3.TypedExtensionConfig
	13, // 13: envoy.extensions.filters.http.ext_proc.v3.ExternalProcessor.on_processing_response:type_name -> envoy.config.core.v3.TypedExtensionConfig
	14, // 14: envoy.extensions.filters.http.ext_proc.v3.ExternalProcessor.status_on_error:type_name -> envoy.type.v3.HttpStatus
	15, // 15: envoy.extensions.filters.http.ext_proc.v3.ExtProcHttpService.http_service:type_name -> envoy.config.core.v3.HttpService
	7,  // 16: envoy.extensions.filters.http.ext_proc.v3.MetadataOptions.forwarding_namespaces:type_name -> envoy.extensions.filters.http.ext_proc.v3.MetadataOptions.MetadataNamespaces
	7,  // 17: envoy.extensions.filters.http.ext_proc.v3.MetadataOptions.receiving_namespaces:type_name -> envoy.extensions.filters.http.ext_proc.v3.MetadataOptions.MetadataNamespaces
	7,  // 18: envoy.extensions.filters.http.ext_proc.v3.MetadataOptions.cluster_metadata_forwarding_namespaces:type_name -> envoy.extensions.filters.http.ext_proc.v3.MetadataOptions.MetadataNamespaces
	16, // 19: envoy.extensions.filters.http.ext_proc.v3.HeaderForwardingRules.allowed_headers:type_name -> envoy.type.matcher.v3.ListStringMatcher
	16, // 20: envoy.extensions.filters.http.ext_proc.v3.HeaderForwardingRules.disallowed_headers:type_name -> envoy.type.matcher.v3.ListStringMatcher
	6,  // 21: envoy.extensions.filters.http.ext_proc.v3.ExtProcPerRoute.overrides:type_name -> envoy.extensions.filters.http.ext_proc.v3.ExtProcOverrides
	9,  // 22: envoy.extensions.filters.http.ext_proc.v3.ExtProcOverrides.processing_mode:type_name -> envoy.extensions.filters.http.ext_proc.v3.ProcessingMode
	8,  // 23: envoy.extensions.filters.http.ext_proc.v3.ExtProcOverrides.grpc_service:type_name -> envoy.config.core.v3.GrpcService
	3,  // 24: envoy.extensions.filters.http.ext_proc.v3.ExtProcOverrides.metadata_options:type_name -> envoy.extensions.filters.http.ext_proc.v3.MetadataOptions
	17, // 25: envoy.extensions.filters.http.ext_proc.v3.ExtProcOverrides.grpc_initial_metadata:type_name -> envoy.config.core.v3.HeaderValue
	18, // 26: envoy.extensions.filters.http.ext_proc.v3.ExtProcOverrides.failure_mode_allow:type_name -> google.protobuf.BoolValue
	13, // 27: envoy.extensions.filters.http.ext_proc.v3.ExtProcOverrides.processing_request_modifier:type_name -> envoy.config.core.v3.TypedExtensionConfig
	28, // [28:28] is the sub-list for method output_type
	28, // [28:28] is the sub-list for method input_type
	28, // [28:28] is the sub-list for extension type_name
	28, // [28:28] is the sub-list for extension extendee
	0,  // [0:28] is the sub-list for field type_name
}

func init() { file_envoy_extensions_filters_http_ext_proc_v3_ext_proc_proto_init() }
func file_envoy_extensions_filters_http_ext_proc_v3_ext_proc_proto_init() {
	if File_envoy_extensions_filters_http_ext_proc_v3_ext_proc_proto != nil {
		return
	}
	file_envoy_extensions_filters_http_ext_proc_v3_processing_mode_proto_init()
	file_envoy_extensions_filters_http_ext_proc_v3_ext_proc_proto_msgTypes[4].OneofWrappers = []any{
		(*ExtProcPerRoute_Disabled)(nil),
		(*ExtProcPerRoute_Overrides)(nil),
	}
	type x struct{}
	out := protoimpl.TypeBuilder{
		File: protoimpl.DescBuilder{
			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
			RawDescriptor: unsafe.Slice(unsafe.StringData(file_envoy_extensions_filters_http_ext_proc_v3_ext_proc_proto_rawDesc), len(file_envoy_extensions_filters_http_ext_proc_v3_ext_proc_proto_rawDesc)),
			NumEnums:      1,
			NumMessages:   7,
			NumExtensions: 0,
			NumServices:   0,
		},
		GoTypes:           file_envoy_extensions_filters_http_ext_proc_v3_ext_proc_proto_goTypes,
		DependencyIndexes: file_envoy_extensions_filters_http_ext_proc_v3_ext_proc_proto_depIdxs,
		EnumInfos:         file_envoy_extensions_filters_http_ext_proc_v3_ext_proc_proto_enumTypes,
		MessageInfos:      file_envoy_extensions_filters_http_ext_proc_v3_ext_proc_proto_msgTypes,
	}.Build()
	File_envoy_extensions_filters_http_ext_proc_v3_ext_proc_proto = out.File
	file_envoy_extensions_filters_http_ext_proc_v3_ext_proc_proto_goTypes = nil
	file_envoy_extensions_filters_http_ext_proc_v3_ext_proc_proto_depIdxs = nil
}
