// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
// 	protoc-gen-go v1.36.10
// 	protoc        v7.35.1
// source: envoy/service/ext_proc/v3/external_processor.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/core/v3"
	v3 "github.com/envoyproxy/go-control-plane/envoy/extensions/filters/http/ext_proc/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"
	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)
)

// The status of the response.
type CommonResponse_ResponseStatus int32

const (
	// Apply the mutation instructions in this message to the
	// request or response, and then continue processing the filter
	// stream as normal. This is the default.
	CommonResponse_CONTINUE CommonResponse_ResponseStatus = 0
	// Apply the specified header mutation, replace the body with the body
	// specified in the body mutation (if present), and do not send any
	// further messages for this request or response even if the processing
	// mode is configured to do so.
	//
	// When used in response to a “request_headers“ or “response_headers“ message,
	// this status makes it possible to either completely replace the body
	// while discarding the original body, or to add a body to a message that
	// formerly did not have one.
	//
	// In other words, this response makes it possible to turn an HTTP GET
	// into a POST, PUT, or PATCH.
	//
	// Not supported if the body send mode is “GRPC“.
	CommonResponse_CONTINUE_AND_REPLACE CommonResponse_ResponseStatus = 1
)

// Enum value maps for CommonResponse_ResponseStatus.
var (
	CommonResponse_ResponseStatus_name = map[int32]string{
		0: "CONTINUE",
		1: "CONTINUE_AND_REPLACE",
	}
	CommonResponse_ResponseStatus_value = map[string]int32{
		"CONTINUE":             0,
		"CONTINUE_AND_REPLACE": 1,
	}
)

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

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

func (CommonResponse_ResponseStatus) Descriptor() protoreflect.EnumDescriptor {
	return file_envoy_service_ext_proc_v3_external_processor_proto_enumTypes[0].Descriptor()
}

func (CommonResponse_ResponseStatus) Type() protoreflect.EnumType {
	return &file_envoy_service_ext_proc_v3_external_processor_proto_enumTypes[0]
}

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

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

// This message specifies the filter protocol configurations which will be sent to the ext_proc
// server in a :ref:`ProcessingRequest <envoy_v3_api_msg_service.ext_proc.v3.ProcessingRequest>`.
// If the server does not support these protocol configurations, it may choose to close the gRPC
// stream. If the server supports these protocol configurations, it should respond based on the
// API specifications.
type ProtocolConfiguration struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Specifies the filter configuration
	// :ref:`request_body_mode <envoy_v3_api_field_extensions.filters.http.ext_proc.v3.ProcessingMode.request_body_mode>`.
	RequestBodyMode v3.ProcessingMode_BodySendMode `protobuf:"varint,1,opt,name=request_body_mode,json=requestBodyMode,proto3,enum=envoy.extensions.filters.http.ext_proc.v3.ProcessingMode_BodySendMode" json:"request_body_mode,omitempty"`
	// Specifies the filter configuration
	// :ref:`response_body_mode <envoy_v3_api_field_extensions.filters.http.ext_proc.v3.ProcessingMode.response_body_mode>`.
	ResponseBodyMode v3.ProcessingMode_BodySendMode `protobuf:"varint,2,opt,name=response_body_mode,json=responseBodyMode,proto3,enum=envoy.extensions.filters.http.ext_proc.v3.ProcessingMode_BodySendMode" json:"response_body_mode,omitempty"`
	// Specifies the filter configuration
	// :ref:`send_body_without_waiting_for_header_response <envoy_v3_api_field_extensions.filters.http.ext_proc.v3.ExternalProcessor.send_body_without_waiting_for_header_response>`.
	// If the client is waiting for a header response from the server, setting to “true“ means the
	// client will send the body to the server as it arrives. Setting to “false“ means the client
	// will buffer the arrived data and not send it to the server immediately.
	SendBodyWithoutWaitingForHeaderResponse bool `protobuf:"varint,3,opt,name=send_body_without_waiting_for_header_response,json=sendBodyWithoutWaitingForHeaderResponse,proto3" json:"send_body_without_waiting_for_header_response,omitempty"`
	unknownFields                           protoimpl.UnknownFields
	sizeCache                               protoimpl.SizeCache
}

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

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

func (*ProtocolConfiguration) ProtoMessage() {}

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

func (x *ProtocolConfiguration) GetRequestBodyMode() v3.ProcessingMode_BodySendMode {
	if x != nil {
		return x.RequestBodyMode
	}
	return v3.ProcessingMode_BodySendMode(0)
}

func (x *ProtocolConfiguration) GetResponseBodyMode() v3.ProcessingMode_BodySendMode {
	if x != nil {
		return x.ResponseBodyMode
	}
	return v3.ProcessingMode_BodySendMode(0)
}

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

// This represents the different types of messages that the data plane can send
// to an external processing server.
// [#next-free-field: 12]
type ProcessingRequest struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Each request message will include one of the following sub-messages. Which
	// ones are set for a particular HTTP request/response depend on the
	// processing mode.
	//
	// Types that are valid to be assigned to Request:
	//
	//	*ProcessingRequest_RequestHeaders
	//	*ProcessingRequest_ResponseHeaders
	//	*ProcessingRequest_RequestBody
	//	*ProcessingRequest_ResponseBody
	//	*ProcessingRequest_RequestTrailers
	//	*ProcessingRequest_ResponseTrailers
	Request isProcessingRequest_Request `protobuf_oneof:"request"`
	// Dynamic metadata associated with the request.
	MetadataContext *v31.Metadata `protobuf:"bytes,8,opt,name=metadata_context,json=metadataContext,proto3" json:"metadata_context,omitempty"`
	// The values of properties selected by the “request_attributes“
	// or “response_attributes“ list in the configuration. Each entry
	// in the list is populated from the standard
	// :ref:`attributes <arch_overview_attributes>` supported in the data plane.
	Attributes map[string]*structpb.Struct `protobuf:"bytes,9,rep,name=attributes,proto3" json:"attributes,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
	// Specifies whether the filter that sent this request is running in
	// :ref:`observability_mode <envoy_v3_api_field_extensions.filters.http.ext_proc.v3.ExternalProcessor.observability_mode>`.
	//
	//   - A value of “false“ indicates that the server must respond to this message by either
	//     sending back a matching “ProcessingResponse“ message, or by closing the stream.
	//   - A value of “true“ indicates that the server should not respond to this message, as any
	//     responses will be ignored. However, it may still close the stream to indicate that no more
	//     messages are needed.
	//
	// Defaults to “false“.
	ObservabilityMode bool `protobuf:"varint,10,opt,name=observability_mode,json=observabilityMode,proto3" json:"observability_mode,omitempty"`
	// Specify the filter protocol configurations to be sent to the server.
	// “protocol_config“ is only encoded in the first “ProcessingRequest“ message from the client to the server.
	ProtocolConfig *ProtocolConfiguration `protobuf:"bytes,11,opt,name=protocol_config,json=protocolConfig,proto3" json:"protocol_config,omitempty"`
	unknownFields  protoimpl.UnknownFields
	sizeCache      protoimpl.SizeCache
}

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

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

func (*ProcessingRequest) ProtoMessage() {}

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

func (x *ProcessingRequest) GetRequest() isProcessingRequest_Request {
	if x != nil {
		return x.Request
	}
	return nil
}

func (x *ProcessingRequest) GetRequestHeaders() *HttpHeaders {
	if x != nil {
		if x, ok := x.Request.(*ProcessingRequest_RequestHeaders); ok {
			return x.RequestHeaders
		}
	}
	return nil
}

func (x *ProcessingRequest) GetResponseHeaders() *HttpHeaders {
	if x != nil {
		if x, ok := x.Request.(*ProcessingRequest_ResponseHeaders); ok {
			return x.ResponseHeaders
		}
	}
	return nil
}

func (x *ProcessingRequest) GetRequestBody() *HttpBody {
	if x != nil {
		if x, ok := x.Request.(*ProcessingRequest_RequestBody); ok {
			return x.RequestBody
		}
	}
	return nil
}

func (x *ProcessingRequest) GetResponseBody() *HttpBody {
	if x != nil {
		if x, ok := x.Request.(*ProcessingRequest_ResponseBody); ok {
			return x.ResponseBody
		}
	}
	return nil
}

func (x *ProcessingRequest) GetRequestTrailers() *HttpTrailers {
	if x != nil {
		if x, ok := x.Request.(*ProcessingRequest_RequestTrailers); ok {
			return x.RequestTrailers
		}
	}
	return nil
}

func (x *ProcessingRequest) GetResponseTrailers() *HttpTrailers {
	if x != nil {
		if x, ok := x.Request.(*ProcessingRequest_ResponseTrailers); ok {
			return x.ResponseTrailers
		}
	}
	return nil
}

func (x *ProcessingRequest) GetMetadataContext() *v31.Metadata {
	if x != nil {
		return x.MetadataContext
	}
	return nil
}

func (x *ProcessingRequest) GetAttributes() map[string]*structpb.Struct {
	if x != nil {
		return x.Attributes
	}
	return nil
}

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

func (x *ProcessingRequest) GetProtocolConfig() *ProtocolConfiguration {
	if x != nil {
		return x.ProtocolConfig
	}
	return nil
}

type isProcessingRequest_Request interface {
	isProcessingRequest_Request()
}

type ProcessingRequest_RequestHeaders struct {
	// Information about the HTTP request headers, as well as peer info and additional
	// properties. Unless “observability_mode“ is “true“, the server must send back a
	// “HeaderResponse“ message, an “ImmediateResponse“ message, or close the stream.
	RequestHeaders *HttpHeaders `protobuf:"bytes,2,opt,name=request_headers,json=requestHeaders,proto3,oneof"`
}

type ProcessingRequest_ResponseHeaders struct {
	// Information about the HTTP response headers, as well as peer info and additional
	// properties. Unless “observability_mode“ is “true“, the server must send back a
	// “HeaderResponse“ message or close the stream.
	ResponseHeaders *HttpHeaders `protobuf:"bytes,3,opt,name=response_headers,json=responseHeaders,proto3,oneof"`
}

type ProcessingRequest_RequestBody struct {
	// A chunk of the HTTP request body. Unless “observability_mode“ is “true“, the server must
	// send back a “BodyResponse“ message, an “ImmediateResponse“ message, or close the stream.
	RequestBody *HttpBody `protobuf:"bytes,4,opt,name=request_body,json=requestBody,proto3,oneof"`
}

type ProcessingRequest_ResponseBody struct {
	// A chunk of the HTTP response body. Unless “observability_mode“ is “true“, the server must
	// send back a “BodyResponse“ message or close the stream.
	ResponseBody *HttpBody `protobuf:"bytes,5,opt,name=response_body,json=responseBody,proto3,oneof"`
}

type ProcessingRequest_RequestTrailers struct {
	// The HTTP trailers for the request path. Unless “observability_mode“ is “true“, the server
	// must send back a “TrailerResponse“ message or close the stream.
	//
	// This message is only sent if the trailers processing mode is set to “SEND“ and
	// the original downstream request has trailers.
	RequestTrailers *HttpTrailers `protobuf:"bytes,6,opt,name=request_trailers,json=requestTrailers,proto3,oneof"`
}

type ProcessingRequest_ResponseTrailers struct {
	// The HTTP trailers for the response path. Unless “observability_mode“ is “true“, the server
	// must send back a “TrailerResponse“ message or close the stream.
	//
	// This message is only sent if the trailers processing mode is set to “SEND“ and
	// the original upstream response has trailers.
	ResponseTrailers *HttpTrailers `protobuf:"bytes,7,opt,name=response_trailers,json=responseTrailers,proto3,oneof"`
}

func (*ProcessingRequest_RequestHeaders) isProcessingRequest_Request() {}

func (*ProcessingRequest_ResponseHeaders) isProcessingRequest_Request() {}

func (*ProcessingRequest_RequestBody) isProcessingRequest_Request() {}

func (*ProcessingRequest_ResponseBody) isProcessingRequest_Request() {}

func (*ProcessingRequest_RequestTrailers) isProcessingRequest_Request() {}

func (*ProcessingRequest_ResponseTrailers) isProcessingRequest_Request() {}

// This represents the different types of messages the server may send back to the data plane
// when the “observability_mode“ field in the received “ProcessingRequest“ is set to “false“.
//
//   - If the corresponding “BodySendMode“ in the
//     :ref:`processing_mode <envoy_v3_api_field_extensions.filters.http.ext_proc.v3.ExternalProcessor.processing_mode>`
//     is not set to “FULL_DUPLEX_STREAMED“, then for every received “ProcessingRequest“,
//     the server must send back exactly one “ProcessingResponse“ message.
//   - If it is set to “FULL_DUPLEX_STREAMED“, the server must follow the API defined
//     for this mode to send the “ProcessingResponse“ messages.
//
// [#next-free-field: 13]
type ProcessingResponse struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// The response type that is sent by the server.
	//
	// Types that are valid to be assigned to Response:
	//
	//	*ProcessingResponse_RequestHeaders
	//	*ProcessingResponse_ResponseHeaders
	//	*ProcessingResponse_RequestBody
	//	*ProcessingResponse_ResponseBody
	//	*ProcessingResponse_RequestTrailers
	//	*ProcessingResponse_ResponseTrailers
	//	*ProcessingResponse_ImmediateResponse
	//	*ProcessingResponse_StreamedImmediateResponse
	Response isProcessingResponse_Response `protobuf_oneof:"response"`
	// Optional metadata that will be emitted as dynamic metadata to be consumed by
	// following filters. This metadata will be placed in the namespace(s) specified by the top-level
	// field name(s) of the struct.
	DynamicMetadata *structpb.Struct `protobuf:"bytes,8,opt,name=dynamic_metadata,json=dynamicMetadata,proto3" json:"dynamic_metadata,omitempty"`
	// Override how parts of the HTTP request and response are processed for the duration of this
	// particular request/response only. Servers may use this to intelligently control how requests
	// are processed based on the headers and other metadata that they see.
	//
	// This field is only applicable when servers are responding to the header requests. If it is set
	// in the response to the body or trailer requests, it will be ignored by the data plane.
	// It is also ignored by the data plane when the ext_proc filter config
	// :ref:`allow_mode_override <envoy_v3_api_field_extensions.filters.http.ext_proc.v3.ExternalProcessor.allow_mode_override>`
	// is set to “false“, or
	// :ref:`send_body_without_waiting_for_header_response <envoy_v3_api_field_extensions.filters.http.ext_proc.v3.ExternalProcessor.send_body_without_waiting_for_header_response>`
	// is set to “true“.
	ModeOverride *v3.ProcessingMode `protobuf:"bytes,9,opt,name=mode_override,json=modeOverride,proto3" json:"mode_override,omitempty"`
	// [#not-implemented-hide:]
	// Used only in “FULL_DUPLEX_STREAMED“ and “GRPC“ body send modes.
	// Instructs the data plane to stop sending body data and to send a
	// half-close on the ext_proc stream. The ext_proc server should then echo
	// back all subsequent body contents as-is until it sees the client's
	// half-close, at which point the ext_proc server can terminate the stream
	// with an OK status. This provides a safe way for the ext_proc server
	// to indicate that it does not need to see the rest of the stream;
	// without this, the ext_proc server could not terminate the stream
	// early, because it would wind up dropping any body contents that the
	// client had already sent before it saw the ext_proc stream termination.
	RequestDrain bool `protobuf:"varint,12,opt,name=request_drain,json=requestDrain,proto3" json:"request_drain,omitempty"`
	// When the ext_proc server receives a request message and needs more time to process it, it
	// sends back a “ProcessingResponse“ message with a new timeout value. When the data plane
	// receives this response message, it ignores other fields in the response, stops the original
	// timer (which has the timeout value specified in
	// :ref:`message_timeout <envoy_v3_api_field_extensions.filters.http.ext_proc.v3.ExternalProcessor.message_timeout>`),
	// and starts a new timer with this “override_message_timeout“ value while keeping the data
	// plane ext_proc filter state machine intact.
	//
	// The value must be >= 1ms and <=
	// :ref:`max_message_timeout <envoy_v3_api_field_extensions.filters.http.ext_proc.v3.ExternalProcessor.max_message_timeout>`.
	// Such a message can be sent at most once in a particular data plane ext_proc filter processing
	// state. To enable this API, “max_message_timeout“ must be set to a value >= 1ms.
	OverrideMessageTimeout *durationpb.Duration `protobuf:"bytes,10,opt,name=override_message_timeout,json=overrideMessageTimeout,proto3" json:"override_message_timeout,omitempty"`
	unknownFields          protoimpl.UnknownFields
	sizeCache              protoimpl.SizeCache
}

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

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

func (*ProcessingResponse) ProtoMessage() {}

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

func (x *ProcessingResponse) GetResponse() isProcessingResponse_Response {
	if x != nil {
		return x.Response
	}
	return nil
}

func (x *ProcessingResponse) GetRequestHeaders() *HeadersResponse {
	if x != nil {
		if x, ok := x.Response.(*ProcessingResponse_RequestHeaders); ok {
			return x.RequestHeaders
		}
	}
	return nil
}

func (x *ProcessingResponse) GetResponseHeaders() *HeadersResponse {
	if x != nil {
		if x, ok := x.Response.(*ProcessingResponse_ResponseHeaders); ok {
			return x.ResponseHeaders
		}
	}
	return nil
}

func (x *ProcessingResponse) GetRequestBody() *BodyResponse {
	if x != nil {
		if x, ok := x.Response.(*ProcessingResponse_RequestBody); ok {
			return x.RequestBody
		}
	}
	return nil
}

func (x *ProcessingResponse) GetResponseBody() *BodyResponse {
	if x != nil {
		if x, ok := x.Response.(*ProcessingResponse_ResponseBody); ok {
			return x.ResponseBody
		}
	}
	return nil
}

func (x *ProcessingResponse) GetRequestTrailers() *TrailersResponse {
	if x != nil {
		if x, ok := x.Response.(*ProcessingResponse_RequestTrailers); ok {
			return x.RequestTrailers
		}
	}
	return nil
}

func (x *ProcessingResponse) GetResponseTrailers() *TrailersResponse {
	if x != nil {
		if x, ok := x.Response.(*ProcessingResponse_ResponseTrailers); ok {
			return x.ResponseTrailers
		}
	}
	return nil
}

func (x *ProcessingResponse) GetImmediateResponse() *ImmediateResponse {
	if x != nil {
		if x, ok := x.Response.(*ProcessingResponse_ImmediateResponse); ok {
			return x.ImmediateResponse
		}
	}
	return nil
}

func (x *ProcessingResponse) GetStreamedImmediateResponse() *StreamedImmediateResponse {
	if x != nil {
		if x, ok := x.Response.(*ProcessingResponse_StreamedImmediateResponse); ok {
			return x.StreamedImmediateResponse
		}
	}
	return nil
}

func (x *ProcessingResponse) GetDynamicMetadata() *structpb.Struct {
	if x != nil {
		return x.DynamicMetadata
	}
	return nil
}

func (x *ProcessingResponse) GetModeOverride() *v3.ProcessingMode {
	if x != nil {
		return x.ModeOverride
	}
	return nil
}

func (x *ProcessingResponse) GetRequestDrain() bool {
	if x != nil {
		return x.RequestDrain
	}
	return false
}

func (x *ProcessingResponse) GetOverrideMessageTimeout() *durationpb.Duration {
	if x != nil {
		return x.OverrideMessageTimeout
	}
	return nil
}

type isProcessingResponse_Response interface {
	isProcessingResponse_Response()
}

type ProcessingResponse_RequestHeaders struct {
	// The server must send back this message in response to a message with the
	// “request_headers“ field set.
	RequestHeaders *HeadersResponse `protobuf:"bytes,1,opt,name=request_headers,json=requestHeaders,proto3,oneof"`
}

type ProcessingResponse_ResponseHeaders struct {
	// The server must send back this message in response to a message with the
	// “response_headers“ field set.
	ResponseHeaders *HeadersResponse `protobuf:"bytes,2,opt,name=response_headers,json=responseHeaders,proto3,oneof"`
}

type ProcessingResponse_RequestBody struct {
	// The server must send back this message in response to a message with
	// the “request_body“ field set.
	RequestBody *BodyResponse `protobuf:"bytes,3,opt,name=request_body,json=requestBody,proto3,oneof"`
}

type ProcessingResponse_ResponseBody struct {
	// The server must send back this message in response to a message with
	// the “response_body“ field set.
	ResponseBody *BodyResponse `protobuf:"bytes,4,opt,name=response_body,json=responseBody,proto3,oneof"`
}

type ProcessingResponse_RequestTrailers struct {
	// The server must send back this message in response to a message with
	// the “request_trailers“ field set.
	RequestTrailers *TrailersResponse `protobuf:"bytes,5,opt,name=request_trailers,json=requestTrailers,proto3,oneof"`
}

type ProcessingResponse_ResponseTrailers struct {
	// The server must send back this message in response to a message with
	// the “response_trailers“ field set.
	ResponseTrailers *TrailersResponse `protobuf:"bytes,6,opt,name=response_trailers,json=responseTrailers,proto3,oneof"`
}

type ProcessingResponse_ImmediateResponse struct {
	// If specified, attempt to create a locally generated response, send it
	// downstream, and stop processing additional filters and ignore any
	// additional messages received from the remote server for this request or
	// response. If a response has already started -- for example, if this
	// message is sent response to a “response_body“ message -- then
	// this will either ship the reply directly to the downstream codec,
	// or reset the stream.
	ImmediateResponse *ImmediateResponse `protobuf:"bytes,7,opt,name=immediate_response,json=immediateResponse,proto3,oneof"`
}

type ProcessingResponse_StreamedImmediateResponse struct {
	// The server sends back this message to initiate or continue local response streaming.
	// The server must initiate local response streaming with the “headers_response“ in response
	// to a “ProcessingRequest“ with the “request_headers“ only.
	// The server may follow up with multiple messages containing “body_response“. The server must
	// indicate end of stream by setting “end_of_stream“ to “true“ in the “headers_response“
	// or “body_response“ message or by sending a “trailers_response“ message.
	// The client may send a “request_body“ or “request_trailers“ to the server depending on
	// configuration.
	// The streaming local response can only be sent when the “request_header_mode“ in the filter
	// :ref:`processing_mode <envoy_v3_api_field_extensions.filters.http.ext_proc.v3.ExternalProcessor.processing_mode>`
	// is set to “SEND“. The ext_proc server should not send “StreamedImmediateResponse“ if it
	// did not observe request headers, as it will result in a race with the upstream server
	// response and reset of the client request.
	// Presently only the “FULL_DUPLEX_STREAMED“ or “NONE“ body modes are supported.
	StreamedImmediateResponse *StreamedImmediateResponse `protobuf:"bytes,11,opt,name=streamed_immediate_response,json=streamedImmediateResponse,proto3,oneof"`
}

func (*ProcessingResponse_RequestHeaders) isProcessingResponse_Response() {}

func (*ProcessingResponse_ResponseHeaders) isProcessingResponse_Response() {}

func (*ProcessingResponse_RequestBody) isProcessingResponse_Response() {}

func (*ProcessingResponse_ResponseBody) isProcessingResponse_Response() {}

func (*ProcessingResponse_RequestTrailers) isProcessingResponse_Response() {}

func (*ProcessingResponse_ResponseTrailers) isProcessingResponse_Response() {}

func (*ProcessingResponse_ImmediateResponse) isProcessingResponse_Response() {}

func (*ProcessingResponse_StreamedImmediateResponse) isProcessingResponse_Response() {}

// This message is sent to the external server when the HTTP request and response headers
// are first received.
type HttpHeaders struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// The HTTP request headers. All header keys will be lower-cased, because HTTP header keys are
	// case-insensitive. The header value is encoded in the
	// :ref:`raw_value <envoy_v3_api_field_config.core.v3.HeaderValue.raw_value>` field.
	Headers *v31.HeaderMap `protobuf:"bytes,1,opt,name=headers,proto3" json:"headers,omitempty"`
	// [#not-implemented-hide:]
	// This field is deprecated and not implemented. Attributes will be sent in the top-level
	// :ref:`attributes <envoy_v3_api_field_service.ext_proc.v3.ProcessingRequest.attributes>` field.
	//
	// Deprecated: Marked as deprecated in envoy/service/ext_proc/v3/external_processor.proto.
	Attributes map[string]*structpb.Struct `protobuf:"bytes,2,rep,name=attributes,proto3" json:"attributes,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
	// If “true“, then there is no message body associated with this request or response.
	EndOfStream   bool `protobuf:"varint,3,opt,name=end_of_stream,json=endOfStream,proto3" json:"end_of_stream,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*HttpHeaders) ProtoMessage() {}

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

func (x *HttpHeaders) GetHeaders() *v31.HeaderMap {
	if x != nil {
		return x.Headers
	}
	return nil
}

// Deprecated: Marked as deprecated in envoy/service/ext_proc/v3/external_processor.proto.
func (x *HttpHeaders) GetAttributes() map[string]*structpb.Struct {
	if x != nil {
		return x.Attributes
	}
	return nil
}

func (x *HttpHeaders) GetEndOfStream() bool {
	if x != nil {
		return x.EndOfStream
	}
	return false
}

// This message is sent to the external server when the HTTP request and response bodies are
// received.
type HttpBody struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// The contents of the body in the HTTP request/response. Note that in streaming mode multiple
	// “HttpBody“ messages may be sent.
	//
	// In “GRPC“ body send mode, a separate “HttpBody“ message will be sent for each message in
	// the gRPC stream.
	Body []byte `protobuf:"bytes,1,opt,name=body,proto3" json:"body,omitempty"`
	// If “true“, this will be the last “HttpBody“ message that will be sent and no trailers
	// will be sent for the current request/response.
	EndOfStream bool `protobuf:"varint,2,opt,name=end_of_stream,json=endOfStream,proto3" json:"end_of_stream,omitempty"`
	// This field is used in “GRPC“ body send mode when “end_of_stream“ is “true“ and “body“
	// is empty. Those values would normally indicate an empty message on the stream with the
	// end-of-stream bit set. However, if the half-close happens after the last message on the stream
	// was already sent, then this field will be “true“ to indicate an end-of-stream with *no*
	// message (as opposed to an empty message).
	EndOfStreamWithoutMessage bool `protobuf:"varint,3,opt,name=end_of_stream_without_message,json=endOfStreamWithoutMessage,proto3" json:"end_of_stream_without_message,omitempty"`
	// This field is used in “GRPC“ body send mode to indicate whether the message is compressed.
	// This will never be set to “true“ by gRPC but may be set to “true“ by a proxy like Envoy.
	GrpcMessageCompressed bool `protobuf:"varint,4,opt,name=grpc_message_compressed,json=grpcMessageCompressed,proto3" json:"grpc_message_compressed,omitempty"`
	unknownFields         protoimpl.UnknownFields
	sizeCache             protoimpl.SizeCache
}

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

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

func (*HttpBody) ProtoMessage() {}

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

func (x *HttpBody) GetBody() []byte {
	if x != nil {
		return x.Body
	}
	return nil
}

func (x *HttpBody) GetEndOfStream() bool {
	if x != nil {
		return x.EndOfStream
	}
	return false
}

func (x *HttpBody) GetEndOfStreamWithoutMessage() bool {
	if x != nil {
		return x.EndOfStreamWithoutMessage
	}
	return false
}

func (x *HttpBody) GetGrpcMessageCompressed() bool {
	if x != nil {
		return x.GrpcMessageCompressed
	}
	return false
}

// This message is sent to the external server when the HTTP request and
// response trailers are received.
type HttpTrailers struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// The header value is encoded in the
	// :ref:`raw_value <envoy_v3_api_field_config.core.v3.HeaderValue.raw_value>` field.
	Trailers      *v31.HeaderMap `protobuf:"bytes,1,opt,name=trailers,proto3" json:"trailers,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*HttpTrailers) ProtoMessage() {}

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

func (x *HttpTrailers) GetTrailers() *v31.HeaderMap {
	if x != nil {
		return x.Trailers
	}
	return nil
}

// This message is sent by the external server to the data plane after “HttpHeaders“ was
// sent to it.
type HeadersResponse struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Details the modifications (if any) to be made by the data plane to the current
	// request/response.
	Response      *CommonResponse `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*HeadersResponse) ProtoMessage() {}

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

func (x *HeadersResponse) GetResponse() *CommonResponse {
	if x != nil {
		return x.Response
	}
	return nil
}

// This message is sent by the external server to the data plane after “HttpBody“ was
// sent to it.
type BodyResponse struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Details the modifications (if any) to be made by the data plane to the current
	// request/response.
	Response      *CommonResponse `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *BodyResponse) Reset() {
	*x = BodyResponse{}
	mi := &file_envoy_service_ext_proc_v3_external_processor_proto_msgTypes[7]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*BodyResponse) ProtoMessage() {}

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

func (x *BodyResponse) GetResponse() *CommonResponse {
	if x != nil {
		return x.Response
	}
	return nil
}

// This message is sent by the external server to the data plane after “HttpTrailers“ was
// sent to it.
type TrailersResponse struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Details the modifications (if any) to be made by the data plane to the current
	// request/response trailers.
	HeaderMutation *HeaderMutation `protobuf:"bytes,1,opt,name=header_mutation,json=headerMutation,proto3" json:"header_mutation,omitempty"`
	unknownFields  protoimpl.UnknownFields
	sizeCache      protoimpl.SizeCache
}

func (x *TrailersResponse) Reset() {
	*x = TrailersResponse{}
	mi := &file_envoy_service_ext_proc_v3_external_processor_proto_msgTypes[8]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*TrailersResponse) ProtoMessage() {}

func (x *TrailersResponse) ProtoReflect() protoreflect.Message {
	mi := &file_envoy_service_ext_proc_v3_external_processor_proto_msgTypes[8]
	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 TrailersResponse.ProtoReflect.Descriptor instead.
func (*TrailersResponse) Descriptor() ([]byte, []int) {
	return file_envoy_service_ext_proc_v3_external_processor_proto_rawDescGZIP(), []int{8}
}

func (x *TrailersResponse) GetHeaderMutation() *HeaderMutation {
	if x != nil {
		return x.HeaderMutation
	}
	return nil
}

// This message is sent by the external server to the data plane after “HttpHeaders“ to initiate
// local response streaming. The server may follow up with multiple messages containing
// “body_response“. The server must indicate end of stream by setting “end_of_stream“ to
// “true“ in the “headers_response“ or “body_response“ message or by sending a
// “trailers_response“ message.
type StreamedImmediateResponse struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Types that are valid to be assigned to Response:
	//
	//	*StreamedImmediateResponse_HeadersResponse
	//	*StreamedImmediateResponse_BodyResponse
	//	*StreamedImmediateResponse_TrailersResponse
	Response      isStreamedImmediateResponse_Response `protobuf_oneof:"response"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *StreamedImmediateResponse) Reset() {
	*x = StreamedImmediateResponse{}
	mi := &file_envoy_service_ext_proc_v3_external_processor_proto_msgTypes[9]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*StreamedImmediateResponse) ProtoMessage() {}

func (x *StreamedImmediateResponse) ProtoReflect() protoreflect.Message {
	mi := &file_envoy_service_ext_proc_v3_external_processor_proto_msgTypes[9]
	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 StreamedImmediateResponse.ProtoReflect.Descriptor instead.
func (*StreamedImmediateResponse) Descriptor() ([]byte, []int) {
	return file_envoy_service_ext_proc_v3_external_processor_proto_rawDescGZIP(), []int{9}
}

func (x *StreamedImmediateResponse) GetResponse() isStreamedImmediateResponse_Response {
	if x != nil {
		return x.Response
	}
	return nil
}

func (x *StreamedImmediateResponse) GetHeadersResponse() *HttpHeaders {
	if x != nil {
		if x, ok := x.Response.(*StreamedImmediateResponse_HeadersResponse); ok {
			return x.HeadersResponse
		}
	}
	return nil
}

func (x *StreamedImmediateResponse) GetBodyResponse() *StreamedBodyResponse {
	if x != nil {
		if x, ok := x.Response.(*StreamedImmediateResponse_BodyResponse); ok {
			return x.BodyResponse
		}
	}
	return nil
}

func (x *StreamedImmediateResponse) GetTrailersResponse() *v31.HeaderMap {
	if x != nil {
		if x, ok := x.Response.(*StreamedImmediateResponse_TrailersResponse); ok {
			return x.TrailersResponse
		}
	}
	return nil
}

type isStreamedImmediateResponse_Response interface {
	isStreamedImmediateResponse_Response()
}

type StreamedImmediateResponse_HeadersResponse struct {
	// Response headers to be sent downstream. The “:status“ header must be set.
	HeadersResponse *HttpHeaders `protobuf:"bytes,1,opt,name=headers_response,json=headersResponse,proto3,oneof"`
}

type StreamedImmediateResponse_BodyResponse struct {
	// Response body to be sent downstream.
	BodyResponse *StreamedBodyResponse `protobuf:"bytes,2,opt,name=body_response,json=bodyResponse,proto3,oneof"`
}

type StreamedImmediateResponse_TrailersResponse struct {
	// Response trailers to be sent downstream.
	TrailersResponse *v31.HeaderMap `protobuf:"bytes,3,opt,name=trailers_response,json=trailersResponse,proto3,oneof"`
}

func (*StreamedImmediateResponse_HeadersResponse) isStreamedImmediateResponse_Response() {}

func (*StreamedImmediateResponse_BodyResponse) isStreamedImmediateResponse_Response() {}

func (*StreamedImmediateResponse_TrailersResponse) isStreamedImmediateResponse_Response() {}

// This message contains common fields between header and body responses.
// [#next-free-field: 6]
type CommonResponse struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// If set, provide additional direction on how the data plane should
	// handle the rest of the HTTP filter chain.
	Status CommonResponse_ResponseStatus `protobuf:"varint,1,opt,name=status,proto3,enum=envoy.service.ext_proc.v3.CommonResponse_ResponseStatus" json:"status,omitempty"`
	// Instructions on how to manipulate the headers. When responding to an
	// “HttpBody“ request, header mutations will only take effect if the current processing mode
	// for the body is “BUFFERED“.
	HeaderMutation *HeaderMutation `protobuf:"bytes,2,opt,name=header_mutation,json=headerMutation,proto3" json:"header_mutation,omitempty"`
	// Replace the body of the last message sent to the remote server on this stream. If responding
	// to an “HttpBody“ request, simply replace or clear the body chunk that was sent with that
	// request. Body mutations may take effect in response either to “header“ or “body“ messages.
	// When it is in response to “header“ messages, it only takes effect if the
	// :ref:`status <envoy_v3_api_field_service.ext_proc.v3.CommonResponse.status>`
	// is set to “CONTINUE_AND_REPLACE“.
	BodyMutation *BodyMutation `protobuf:"bytes,3,opt,name=body_mutation,json=bodyMutation,proto3" json:"body_mutation,omitempty"`
	// [#not-implemented-hide:]
	// Add new trailers to the message. This may be used when responding to either an
	// “HttpHeaders“ or “HttpBody“ message, but only if this message is returned
	// along with the “CONTINUE_AND_REPLACE“ status.
	// The header value is encoded in the
	// :ref:`raw_value <envoy_v3_api_field_config.core.v3.HeaderValue.raw_value>` field.
	Trailers *v31.HeaderMap `protobuf:"bytes,4,opt,name=trailers,proto3" json:"trailers,omitempty"`
	// Clear the route cache for the current client request. This is necessary
	// if the remote server modified headers that are used to calculate the route.
	// This field is ignored in the response direction. This field is also ignored
	// if the data plane ext_proc filter is in the upstream filter chain.
	ClearRouteCache bool `protobuf:"varint,5,opt,name=clear_route_cache,json=clearRouteCache,proto3" json:"clear_route_cache,omitempty"`
	unknownFields   protoimpl.UnknownFields
	sizeCache       protoimpl.SizeCache
}

func (x *CommonResponse) Reset() {
	*x = CommonResponse{}
	mi := &file_envoy_service_ext_proc_v3_external_processor_proto_msgTypes[10]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*CommonResponse) ProtoMessage() {}

func (x *CommonResponse) ProtoReflect() protoreflect.Message {
	mi := &file_envoy_service_ext_proc_v3_external_processor_proto_msgTypes[10]
	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 CommonResponse.ProtoReflect.Descriptor instead.
func (*CommonResponse) Descriptor() ([]byte, []int) {
	return file_envoy_service_ext_proc_v3_external_processor_proto_rawDescGZIP(), []int{10}
}

func (x *CommonResponse) GetStatus() CommonResponse_ResponseStatus {
	if x != nil {
		return x.Status
	}
	return CommonResponse_CONTINUE
}

func (x *CommonResponse) GetHeaderMutation() *HeaderMutation {
	if x != nil {
		return x.HeaderMutation
	}
	return nil
}

func (x *CommonResponse) GetBodyMutation() *BodyMutation {
	if x != nil {
		return x.BodyMutation
	}
	return nil
}

func (x *CommonResponse) GetTrailers() *v31.HeaderMap {
	if x != nil {
		return x.Trailers
	}
	return nil
}

func (x *CommonResponse) GetClearRouteCache() bool {
	if x != nil {
		return x.ClearRouteCache
	}
	return false
}

// This message causes the filter to attempt to create a locally generated response, send it
// downstream, stop processing additional filters, and ignore any additional messages received
// from the remote server for this request or response. If a response has already started, then
// this will either ship the reply directly to the downstream codec, or reset the stream.
// [#next-free-field: 6]
type ImmediateResponse struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// The response code to return.
	Status *v32.HttpStatus `protobuf:"bytes,1,opt,name=status,proto3" json:"status,omitempty"`
	// Apply changes to the default headers, which will include “content-type“.
	Headers *HeaderMutation `protobuf:"bytes,2,opt,name=headers,proto3" json:"headers,omitempty"`
	// The message body to return with the response which is sent using the
	// “text/plain“ content type, or encoded in the “grpc-message“ header.
	Body []byte `protobuf:"bytes,3,opt,name=body,proto3" json:"body,omitempty"`
	// If set, then include a gRPC status trailer.
	GrpcStatus *GrpcStatus `protobuf:"bytes,4,opt,name=grpc_status,json=grpcStatus,proto3" json:"grpc_status,omitempty"`
	// A string detailing why this local reply was sent, which may be included
	// in log and debug output (e.g., this populates the “%RESPONSE_CODE_DETAILS%“
	// command operator field for use in access logging).
	Details       string `protobuf:"bytes,5,opt,name=details,proto3" json:"details,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *ImmediateResponse) Reset() {
	*x = ImmediateResponse{}
	mi := &file_envoy_service_ext_proc_v3_external_processor_proto_msgTypes[11]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*ImmediateResponse) ProtoMessage() {}

func (x *ImmediateResponse) ProtoReflect() protoreflect.Message {
	mi := &file_envoy_service_ext_proc_v3_external_processor_proto_msgTypes[11]
	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 ImmediateResponse.ProtoReflect.Descriptor instead.
func (*ImmediateResponse) Descriptor() ([]byte, []int) {
	return file_envoy_service_ext_proc_v3_external_processor_proto_rawDescGZIP(), []int{11}
}

func (x *ImmediateResponse) GetStatus() *v32.HttpStatus {
	if x != nil {
		return x.Status
	}
	return nil
}

func (x *ImmediateResponse) GetHeaders() *HeaderMutation {
	if x != nil {
		return x.Headers
	}
	return nil
}

func (x *ImmediateResponse) GetBody() []byte {
	if x != nil {
		return x.Body
	}
	return nil
}

func (x *ImmediateResponse) GetGrpcStatus() *GrpcStatus {
	if x != nil {
		return x.GrpcStatus
	}
	return nil
}

func (x *ImmediateResponse) GetDetails() string {
	if x != nil {
		return x.Details
	}
	return ""
}

// This message specifies a gRPC status for an “ImmediateResponse“ message.
type GrpcStatus struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// The actual gRPC status.
	Status        uint32 `protobuf:"varint,1,opt,name=status,proto3" json:"status,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *GrpcStatus) Reset() {
	*x = GrpcStatus{}
	mi := &file_envoy_service_ext_proc_v3_external_processor_proto_msgTypes[12]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*GrpcStatus) ProtoMessage() {}

func (x *GrpcStatus) ProtoReflect() protoreflect.Message {
	mi := &file_envoy_service_ext_proc_v3_external_processor_proto_msgTypes[12]
	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 GrpcStatus.ProtoReflect.Descriptor instead.
func (*GrpcStatus) Descriptor() ([]byte, []int) {
	return file_envoy_service_ext_proc_v3_external_processor_proto_rawDescGZIP(), []int{12}
}

func (x *GrpcStatus) GetStatus() uint32 {
	if x != nil {
		return x.Status
	}
	return 0
}

// Change HTTP headers or trailers by appending, replacing, or removing
// headers.
type HeaderMutation struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Add or replace HTTP headers. Attempts to set the value of
	// any “x-envoy“ header, and attempts to set the “:method“,
	// “:authority“, “:scheme“, or “host“ headers will be ignored.
	// The header value is encoded in the
	// :ref:`raw_value <envoy_v3_api_field_config.core.v3.HeaderValue.raw_value>` field.
	SetHeaders []*v31.HeaderValueOption `protobuf:"bytes,1,rep,name=set_headers,json=setHeaders,proto3" json:"set_headers,omitempty"`
	// Remove these HTTP headers. Attempts to remove system headers --
	// any header starting with “:“, plus “host“ -- will be ignored.
	RemoveHeaders []string `protobuf:"bytes,2,rep,name=remove_headers,json=removeHeaders,proto3" json:"remove_headers,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *HeaderMutation) Reset() {
	*x = HeaderMutation{}
	mi := &file_envoy_service_ext_proc_v3_external_processor_proto_msgTypes[13]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*HeaderMutation) ProtoMessage() {}

func (x *HeaderMutation) ProtoReflect() protoreflect.Message {
	mi := &file_envoy_service_ext_proc_v3_external_processor_proto_msgTypes[13]
	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 HeaderMutation.ProtoReflect.Descriptor instead.
func (*HeaderMutation) Descriptor() ([]byte, []int) {
	return file_envoy_service_ext_proc_v3_external_processor_proto_rawDescGZIP(), []int{13}
}

func (x *HeaderMutation) GetSetHeaders() []*v31.HeaderValueOption {
	if x != nil {
		return x.SetHeaders
	}
	return nil
}

func (x *HeaderMutation) GetRemoveHeaders() []string {
	if x != nil {
		return x.RemoveHeaders
	}
	return nil
}

// The body response message corresponding to “FULL_DUPLEX_STREAMED“ or “GRPC“ body modes.
type StreamedBodyResponse struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// In “FULL_DUPLEX_STREAMED“ body send mode, contains the body response chunk that will be
	// passed to the upstream/downstream by the data plane. In “GRPC“ body send mode, contains
	// a serialized gRPC message to be passed to the upstream/downstream by the data plane.
	Body []byte `protobuf:"bytes,1,opt,name=body,proto3" json:"body,omitempty"`
	// The server sets this flag to “true“ if it has received a body request with
	// :ref:`end_of_stream <envoy_v3_api_field_service.ext_proc.v3.HttpBody.end_of_stream>` set to
	// “true“, and this is the last chunk of body responses.
	//
	// Note that in “GRPC“ body send mode, this allows the ext_proc server to tell the data plane
	// to send a half close after a client message, which will result in discarding any other
	// messages sent by the client application.
	EndOfStream bool `protobuf:"varint,2,opt,name=end_of_stream,json=endOfStream,proto3" json:"end_of_stream,omitempty"`
	// This field is used in “GRPC“ body send mode when “end_of_stream“ is “true“ and “body“
	// is empty. Those values would normally indicate an empty message on the stream with the
	// end-of-stream bit set. However, if the half-close happens after the last message on the stream
	// was already sent, then this field will be “true“ to indicate an end-of-stream with *no*
	// message (as opposed to an empty message).
	EndOfStreamWithoutMessage bool `protobuf:"varint,3,opt,name=end_of_stream_without_message,json=endOfStreamWithoutMessage,proto3" json:"end_of_stream_without_message,omitempty"`
	// This field is used in “GRPC“ body send mode to indicate whether the message is compressed.
	// This will never be set to “true“ by gRPC but may be set to “true“ by a proxy like Envoy.
	GrpcMessageCompressed bool `protobuf:"varint,4,opt,name=grpc_message_compressed,json=grpcMessageCompressed,proto3" json:"grpc_message_compressed,omitempty"`
	unknownFields         protoimpl.UnknownFields
	sizeCache             protoimpl.SizeCache
}

func (x *StreamedBodyResponse) Reset() {
	*x = StreamedBodyResponse{}
	mi := &file_envoy_service_ext_proc_v3_external_processor_proto_msgTypes[14]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*StreamedBodyResponse) ProtoMessage() {}

func (x *StreamedBodyResponse) ProtoReflect() protoreflect.Message {
	mi := &file_envoy_service_ext_proc_v3_external_processor_proto_msgTypes[14]
	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 StreamedBodyResponse.ProtoReflect.Descriptor instead.
func (*StreamedBodyResponse) Descriptor() ([]byte, []int) {
	return file_envoy_service_ext_proc_v3_external_processor_proto_rawDescGZIP(), []int{14}
}

func (x *StreamedBodyResponse) GetBody() []byte {
	if x != nil {
		return x.Body
	}
	return nil
}

func (x *StreamedBodyResponse) GetEndOfStream() bool {
	if x != nil {
		return x.EndOfStream
	}
	return false
}

func (x *StreamedBodyResponse) GetEndOfStreamWithoutMessage() bool {
	if x != nil {
		return x.EndOfStreamWithoutMessage
	}
	return false
}

func (x *StreamedBodyResponse) GetGrpcMessageCompressed() bool {
	if x != nil {
		return x.GrpcMessageCompressed
	}
	return false
}

// This message specifies the body mutation the server sends to the data plane.
type BodyMutation struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// The type of mutation for the body.
	//
	// Types that are valid to be assigned to Mutation:
	//
	//	*BodyMutation_Body
	//	*BodyMutation_ClearBody
	//	*BodyMutation_StreamedResponse
	Mutation      isBodyMutation_Mutation `protobuf_oneof:"mutation"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *BodyMutation) Reset() {
	*x = BodyMutation{}
	mi := &file_envoy_service_ext_proc_v3_external_processor_proto_msgTypes[15]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*BodyMutation) ProtoMessage() {}

func (x *BodyMutation) ProtoReflect() protoreflect.Message {
	mi := &file_envoy_service_ext_proc_v3_external_processor_proto_msgTypes[15]
	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 BodyMutation.ProtoReflect.Descriptor instead.
func (*BodyMutation) Descriptor() ([]byte, []int) {
	return file_envoy_service_ext_proc_v3_external_processor_proto_rawDescGZIP(), []int{15}
}

func (x *BodyMutation) GetMutation() isBodyMutation_Mutation {
	if x != nil {
		return x.Mutation
	}
	return nil
}

func (x *BodyMutation) GetBody() []byte {
	if x != nil {
		if x, ok := x.Mutation.(*BodyMutation_Body); ok {
			return x.Body
		}
	}
	return nil
}

func (x *BodyMutation) GetClearBody() bool {
	if x != nil {
		if x, ok := x.Mutation.(*BodyMutation_ClearBody); ok {
			return x.ClearBody
		}
	}
	return false
}

func (x *BodyMutation) GetStreamedResponse() *StreamedBodyResponse {
	if x != nil {
		if x, ok := x.Mutation.(*BodyMutation_StreamedResponse); ok {
			return x.StreamedResponse
		}
	}
	return nil
}

type isBodyMutation_Mutation interface {
	isBodyMutation_Mutation()
}

type BodyMutation_Body struct {
	// The entire body to replace.
	// Should only be used when the corresponding “BodySendMode“ in the
	// :ref:`processing_mode <envoy_v3_api_field_extensions.filters.http.ext_proc.v3.ExternalProcessor.processing_mode>`
	// is not set to “FULL_DUPLEX_STREAMED“ or “GRPC“.
	Body []byte `protobuf:"bytes,1,opt,name=body,proto3,oneof"`
}

type BodyMutation_ClearBody struct {
	// Clear the corresponding body chunk. Should only be used when the corresponding
	// “BodySendMode“ in the
	// :ref:`processing_mode <envoy_v3_api_field_extensions.filters.http.ext_proc.v3.ExternalProcessor.processing_mode>`
	// is not set to “FULL_DUPLEX_STREAMED“ or “GRPC“.
	ClearBody bool `protobuf:"varint,2,opt,name=clear_body,json=clearBody,proto3,oneof"`
}

type BodyMutation_StreamedResponse struct {
	// Must be used when the corresponding “BodySendMode“ in the
	// :ref:`processing_mode <envoy_v3_api_field_extensions.filters.http.ext_proc.v3.ExternalProcessor.processing_mode>`
	// is set to “FULL_DUPLEX_STREAMED“ or “GRPC“.
	StreamedResponse *StreamedBodyResponse `protobuf:"bytes,3,opt,name=streamed_response,json=streamedResponse,proto3,oneof"`
}

func (*BodyMutation_Body) isBodyMutation_Mutation() {}

func (*BodyMutation_ClearBody) isBodyMutation_Mutation() {}

func (*BodyMutation_StreamedResponse) isBodyMutation_Mutation() {}

var File_envoy_service_ext_proc_v3_external_processor_proto protoreflect.FileDescriptor

const file_envoy_service_ext_proc_v3_external_processor_proto_rawDesc = "" +
	"\n" +
	"2envoy/service/ext_proc/v3/external_processor.proto\x12\x19envoy.service.ext_proc.v3\x1a\x1fenvoy/config/core/v3/base.proto\x1a?envoy/extensions/filters/http/ext_proc/v3/processing_mode.proto\x1a\x1fenvoy/type/v3/http_status.proto\x1a\x1egoogle/protobuf/duration.proto\x1a\x1cgoogle/protobuf/struct.proto\x1a\x1fxds/annotations/v3/status.proto\x1a#envoy/annotations/deprecation.proto\x1a\x1dudpa/annotations/status.proto\x1a\x17validate/validate.proto\"\xf5\x02\n" +
	"\x15ProtocolConfiguration\x12|\n" +
	"\x11request_body_mode\x18\x01 \x01(\x0e2F.envoy.extensions.filters.http.ext_proc.v3.ProcessingMode.BodySendModeB\b\xfaB\x05\x82\x01\x02\x10\x01R\x0frequestBodyMode\x12~\n" +
	"\x12response_body_mode\x18\x02 \x01(\x0e2F.envoy.extensions.filters.http.ext_proc.v3.ProcessingMode.BodySendModeB\b\xfaB\x05\x82\x01\x02\x10\x01R\x10responseBodyMode\x12^\n" +
	"-send_body_without_waiting_for_header_response\x18\x03 \x01(\bR'sendBodyWithoutWaitingForHeaderResponse\"\xac\a\n" +
	"\x11ProcessingRequest\x12Q\n" +
	"\x0frequest_headers\x18\x02 \x01(\v2&.envoy.service.ext_proc.v3.HttpHeadersH\x00R\x0erequestHeaders\x12S\n" +
	"\x10response_headers\x18\x03 \x01(\v2&.envoy.service.ext_proc.v3.HttpHeadersH\x00R\x0fresponseHeaders\x12H\n" +
	"\frequest_body\x18\x04 \x01(\v2#.envoy.service.ext_proc.v3.HttpBodyH\x00R\vrequestBody\x12J\n" +
	"\rresponse_body\x18\x05 \x01(\v2#.envoy.service.ext_proc.v3.HttpBodyH\x00R\fresponseBody\x12T\n" +
	"\x10request_trailers\x18\x06 \x01(\v2'.envoy.service.ext_proc.v3.HttpTrailersH\x00R\x0frequestTrailers\x12V\n" +
	"\x11response_trailers\x18\a \x01(\v2'.envoy.service.ext_proc.v3.HttpTrailersH\x00R\x10responseTrailers\x12I\n" +
	"\x10metadata_context\x18\b \x01(\v2\x1e.envoy.config.core.v3.MetadataR\x0fmetadataContext\x12\\\n" +
	"\n" +
	"attributes\x18\t \x03(\v2<.envoy.service.ext_proc.v3.ProcessingRequest.AttributesEntryR\n" +
	"attributes\x12-\n" +
	"\x12observability_mode\x18\n" +
	" \x01(\bR\x11observabilityMode\x12Y\n" +
	"\x0fprotocol_config\x18\v \x01(\v20.envoy.service.ext_proc.v3.ProtocolConfigurationR\x0eprotocolConfig\x1aV\n" +
	"\x0fAttributesEntry\x12\x10\n" +
	"\x03key\x18\x01 \x01(\tR\x03key\x12-\n" +
	"\x05value\x18\x02 \x01(\v2\x17.google.protobuf.StructR\x05value:\x028\x01B\x0e\n" +
	"\arequest\x12\x03\xf8B\x01J\x04\b\x01\x10\x02R\n" +
	"async_mode\"\x9e\b\n" +
	"\x12ProcessingResponse\x12U\n" +
	"\x0frequest_headers\x18\x01 \x01(\v2*.envoy.service.ext_proc.v3.HeadersResponseH\x00R\x0erequestHeaders\x12W\n" +
	"\x10response_headers\x18\x02 \x01(\v2*.envoy.service.ext_proc.v3.HeadersResponseH\x00R\x0fresponseHeaders\x12L\n" +
	"\frequest_body\x18\x03 \x01(\v2'.envoy.service.ext_proc.v3.BodyResponseH\x00R\vrequestBody\x12N\n" +
	"\rresponse_body\x18\x04 \x01(\v2'.envoy.service.ext_proc.v3.BodyResponseH\x00R\fresponseBody\x12X\n" +
	"\x10request_trailers\x18\x05 \x01(\v2+.envoy.service.ext_proc.v3.TrailersResponseH\x00R\x0frequestTrailers\x12Z\n" +
	"\x11response_trailers\x18\x06 \x01(\v2+.envoy.service.ext_proc.v3.TrailersResponseH\x00R\x10responseTrailers\x12]\n" +
	"\x12immediate_response\x18\a \x01(\v2,.envoy.service.ext_proc.v3.ImmediateResponseH\x00R\x11immediateResponse\x12v\n" +
	"\x1bstreamed_immediate_response\x18\v \x01(\v24.envoy.service.ext_proc.v3.StreamedImmediateResponseH\x00R\x19streamedImmediateResponse\x12B\n" +
	"\x10dynamic_metadata\x18\b \x01(\v2\x17.google.protobuf.StructR\x0fdynamicMetadata\x12^\n" +
	"\rmode_override\x18\t \x01(\v29.envoy.extensions.filters.http.ext_proc.v3.ProcessingModeR\fmodeOverride\x12#\n" +
	"\rrequest_drain\x18\f \x01(\bR\frequestDrain\x12S\n" +
	"\x18override_message_timeout\x18\n" +
	" \x01(\v2\x19.google.protobuf.DurationR\x16overrideMessageTimeoutB\x0f\n" +
	"\bresponse\x12\x03\xf8B\x01\"\xa9\x02\n" +
	"\vHttpHeaders\x129\n" +
	"\aheaders\x18\x01 \x01(\v2\x1f.envoy.config.core.v3.HeaderMapR\aheaders\x12c\n" +
	"\n" +
	"attributes\x18\x02 \x03(\v26.envoy.service.ext_proc.v3.HttpHeaders.AttributesEntryB\v\x92ǆ\xd8\x04\x033.0\x18\x01R\n" +
	"attributes\x12\"\n" +
	"\rend_of_stream\x18\x03 \x01(\bR\vendOfStream\x1aV\n" +
	"\x0fAttributesEntry\x12\x10\n" +
	"\x03key\x18\x01 \x01(\tR\x03key\x12-\n" +
	"\x05value\x18\x02 \x01(\v2\x17.google.protobuf.StructR\x05value:\x028\x01\"\xbc\x01\n" +
	"\bHttpBody\x12\x12\n" +
	"\x04body\x18\x01 \x01(\fR\x04body\x12\"\n" +
	"\rend_of_stream\x18\x02 \x01(\bR\vendOfStream\x12@\n" +
	"\x1dend_of_stream_without_message\x18\x03 \x01(\bR\x19endOfStreamWithoutMessage\x126\n" +
	"\x17grpc_message_compressed\x18\x04 \x01(\bR\x15grpcMessageCompressed\"K\n" +
	"\fHttpTrailers\x12;\n" +
	"\btrailers\x18\x01 \x01(\v2\x1f.envoy.config.core.v3.HeaderMapR\btrailers\"X\n" +
	"\x0fHeadersResponse\x12E\n" +
	"\bresponse\x18\x01 \x01(\v2).envoy.service.ext_proc.v3.CommonResponseR\bresponse\"U\n" +
	"\fBodyResponse\x12E\n" +
	"\bresponse\x18\x01 \x01(\v2).envoy.service.ext_proc.v3.CommonResponseR\bresponse\"f\n" +
	"\x10TrailersResponse\x12R\n" +
	"\x0fheader_mutation\x18\x01 \x01(\v2).envoy.service.ext_proc.v3.HeaderMutationR\x0eheaderMutation\"\xa4\x02\n" +
	"\x19StreamedImmediateResponse\x12S\n" +
	"\x10headers_response\x18\x01 \x01(\v2&.envoy.service.ext_proc.v3.HttpHeadersH\x00R\x0fheadersResponse\x12V\n" +
	"\rbody_response\x18\x02 \x01(\v2/.envoy.service.ext_proc.v3.StreamedBodyResponseH\x00R\fbodyResponse\x12N\n" +
	"\x11trailers_response\x18\x03 \x01(\v2\x1f.envoy.config.core.v3.HeaderMapH\x00R\x10trailersResponseB\n" +
	"\n" +
	"\bresponse\"\xb1\x03\n" +
	"\x0eCommonResponse\x12Z\n" +
	"\x06status\x18\x01 \x01(\x0e28.envoy.service.ext_proc.v3.CommonResponse.ResponseStatusB\b\xfaB\x05\x82\x01\x02\x10\x01R\x06status\x12R\n" +
	"\x0fheader_mutation\x18\x02 \x01(\v2).envoy.service.ext_proc.v3.HeaderMutationR\x0eheaderMutation\x12L\n" +
	"\rbody_mutation\x18\x03 \x01(\v2'.envoy.service.ext_proc.v3.BodyMutationR\fbodyMutation\x12;\n" +
	"\btrailers\x18\x04 \x01(\v2\x1f.envoy.config.core.v3.HeaderMapR\btrailers\x12*\n" +
	"\x11clear_route_cache\x18\x05 \x01(\bR\x0fclearRouteCache\"8\n" +
	"\x0eResponseStatus\x12\f\n" +
	"\bCONTINUE\x10\x00\x12\x18\n" +
	"\x14CONTINUE_AND_REPLACE\x10\x01\"\x8b\x02\n" +
	"\x11ImmediateResponse\x12;\n" +
	"\x06status\x18\x01 \x01(\v2\x19.envoy.type.v3.HttpStatusB\b\xfaB\x05\x8a\x01\x02\x10\x01R\x06status\x12C\n" +
	"\aheaders\x18\x02 \x01(\v2).envoy.service.ext_proc.v3.HeaderMutationR\aheaders\x12\x12\n" +
	"\x04body\x18\x03 \x01(\fR\x04body\x12F\n" +
	"\vgrpc_status\x18\x04 \x01(\v2%.envoy.service.ext_proc.v3.GrpcStatusR\n" +
	"grpcStatus\x12\x18\n" +
	"\adetails\x18\x05 \x01(\tR\adetails\"$\n" +
	"\n" +
	"GrpcStatus\x12\x16\n" +
	"\x06status\x18\x01 \x01(\rR\x06status\"\x81\x01\n" +
	"\x0eHeaderMutation\x12H\n" +
	"\vset_headers\x18\x01 \x03(\v2'.envoy.config.core.v3.HeaderValueOptionR\n" +
	"setHeaders\x12%\n" +
	"\x0eremove_headers\x18\x02 \x03(\tR\rremoveHeaders\"\xc8\x01\n" +
	"\x14StreamedBodyResponse\x12\x12\n" +
	"\x04body\x18\x01 \x01(\fR\x04body\x12\"\n" +
	"\rend_of_stream\x18\x02 \x01(\bR\vendOfStream\x12@\n" +
	"\x1dend_of_stream_without_message\x18\x03 \x01(\bR\x19endOfStreamWithoutMessage\x126\n" +
	"\x17grpc_message_compressed\x18\x04 \x01(\bR\x15grpcMessageCompressed\"\xbb\x01\n" +
	"\fBodyMutation\x12\x14\n" +
	"\x04body\x18\x01 \x01(\fH\x00R\x04body\x12\x1f\n" +
	"\n" +
	"clear_body\x18\x02 \x01(\bH\x00R\tclearBody\x12h\n" +
	"\x11streamed_response\x18\x03 \x01(\v2/.envoy.service.ext_proc.v3.StreamedBodyResponseB\b\xd2Ƥ\xe1\x06\x02\b\x01H\x00R\x10streamedResponseB\n" +
	"\n" +
	"\bmutation2\x81\x01\n" +
	"\x11ExternalProcessor\x12l\n" +
	"\aProcess\x12,.envoy.service.ext_proc.v3.ProcessingRequest\x1a-.envoy.service.ext_proc.v3.ProcessingResponse\"\x00(\x010\x01B\x98\x01\xba\x80\xc8\xd1\x06\x02\x10\x02\n" +
	"'io.envoyproxy.envoy.service.ext_proc.v3B\x16ExternalProcessorProtoP\x01ZKgithub.com/envoyproxy/go-control-plane/envoy/service/ext_proc/v3;ext_procv3b\x06proto3"

var (
	file_envoy_service_ext_proc_v3_external_processor_proto_rawDescOnce sync.Once
	file_envoy_service_ext_proc_v3_external_processor_proto_rawDescData []byte
)

func file_envoy_service_ext_proc_v3_external_processor_proto_rawDescGZIP() []byte {
	file_envoy_service_ext_proc_v3_external_processor_proto_rawDescOnce.Do(func() {
		file_envoy_service_ext_proc_v3_external_processor_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_envoy_service_ext_proc_v3_external_processor_proto_rawDesc), len(file_envoy_service_ext_proc_v3_external_processor_proto_rawDesc)))
	})
	return file_envoy_service_ext_proc_v3_external_processor_proto_rawDescData
}

var file_envoy_service_ext_proc_v3_external_processor_proto_enumTypes = make([]protoimpl.EnumInfo, 1)
var file_envoy_service_ext_proc_v3_external_processor_proto_msgTypes = make([]protoimpl.MessageInfo, 18)
var file_envoy_service_ext_proc_v3_external_processor_proto_goTypes = []any{
	(CommonResponse_ResponseStatus)(0),  // 0: envoy.service.ext_proc.v3.CommonResponse.ResponseStatus
	(*ProtocolConfiguration)(nil),       // 1: envoy.service.ext_proc.v3.ProtocolConfiguration
	(*ProcessingRequest)(nil),           // 2: envoy.service.ext_proc.v3.ProcessingRequest
	(*ProcessingResponse)(nil),          // 3: envoy.service.ext_proc.v3.ProcessingResponse
	(*HttpHeaders)(nil),                 // 4: envoy.service.ext_proc.v3.HttpHeaders
	(*HttpBody)(nil),                    // 5: envoy.service.ext_proc.v3.HttpBody
	(*HttpTrailers)(nil),                // 6: envoy.service.ext_proc.v3.HttpTrailers
	(*HeadersResponse)(nil),             // 7: envoy.service.ext_proc.v3.HeadersResponse
	(*BodyResponse)(nil),                // 8: envoy.service.ext_proc.v3.BodyResponse
	(*TrailersResponse)(nil),            // 9: envoy.service.ext_proc.v3.TrailersResponse
	(*StreamedImmediateResponse)(nil),   // 10: envoy.service.ext_proc.v3.StreamedImmediateResponse
	(*CommonResponse)(nil),              // 11: envoy.service.ext_proc.v3.CommonResponse
	(*ImmediateResponse)(nil),           // 12: envoy.service.ext_proc.v3.ImmediateResponse
	(*GrpcStatus)(nil),                  // 13: envoy.service.ext_proc.v3.GrpcStatus
	(*HeaderMutation)(nil),              // 14: envoy.service.ext_proc.v3.HeaderMutation
	(*StreamedBodyResponse)(nil),        // 15: envoy.service.ext_proc.v3.StreamedBodyResponse
	(*BodyMutation)(nil),                // 16: envoy.service.ext_proc.v3.BodyMutation
	nil,                                 // 17: envoy.service.ext_proc.v3.ProcessingRequest.AttributesEntry
	nil,                                 // 18: envoy.service.ext_proc.v3.HttpHeaders.AttributesEntry
	(v3.ProcessingMode_BodySendMode)(0), // 19: envoy.extensions.filters.http.ext_proc.v3.ProcessingMode.BodySendMode
	(*v31.Metadata)(nil),                // 20: envoy.config.core.v3.Metadata
	(*structpb.Struct)(nil),             // 21: google.protobuf.Struct
	(*v3.ProcessingMode)(nil),           // 22: envoy.extensions.filters.http.ext_proc.v3.ProcessingMode
	(*durationpb.Duration)(nil),         // 23: google.protobuf.Duration
	(*v31.HeaderMap)(nil),               // 24: envoy.config.core.v3.HeaderMap
	(*v32.HttpStatus)(nil),              // 25: envoy.type.v3.HttpStatus
	(*v31.HeaderValueOption)(nil),       // 26: envoy.config.core.v3.HeaderValueOption
}
var file_envoy_service_ext_proc_v3_external_processor_proto_depIdxs = []int32{
	19, // 0: envoy.service.ext_proc.v3.ProtocolConfiguration.request_body_mode:type_name -> envoy.extensions.filters.http.ext_proc.v3.ProcessingMode.BodySendMode
	19, // 1: envoy.service.ext_proc.v3.ProtocolConfiguration.response_body_mode:type_name -> envoy.extensions.filters.http.ext_proc.v3.ProcessingMode.BodySendMode
	4,  // 2: envoy.service.ext_proc.v3.ProcessingRequest.request_headers:type_name -> envoy.service.ext_proc.v3.HttpHeaders
	4,  // 3: envoy.service.ext_proc.v3.ProcessingRequest.response_headers:type_name -> envoy.service.ext_proc.v3.HttpHeaders
	5,  // 4: envoy.service.ext_proc.v3.ProcessingRequest.request_body:type_name -> envoy.service.ext_proc.v3.HttpBody
	5,  // 5: envoy.service.ext_proc.v3.ProcessingRequest.response_body:type_name -> envoy.service.ext_proc.v3.HttpBody
	6,  // 6: envoy.service.ext_proc.v3.ProcessingRequest.request_trailers:type_name -> envoy.service.ext_proc.v3.HttpTrailers
	6,  // 7: envoy.service.ext_proc.v3.ProcessingRequest.response_trailers:type_name -> envoy.service.ext_proc.v3.HttpTrailers
	20, // 8: envoy.service.ext_proc.v3.ProcessingRequest.metadata_context:type_name -> envoy.config.core.v3.Metadata
	17, // 9: envoy.service.ext_proc.v3.ProcessingRequest.attributes:type_name -> envoy.service.ext_proc.v3.ProcessingRequest.AttributesEntry
	1,  // 10: envoy.service.ext_proc.v3.ProcessingRequest.protocol_config:type_name -> envoy.service.ext_proc.v3.ProtocolConfiguration
	7,  // 11: envoy.service.ext_proc.v3.ProcessingResponse.request_headers:type_name -> envoy.service.ext_proc.v3.HeadersResponse
	7,  // 12: envoy.service.ext_proc.v3.ProcessingResponse.response_headers:type_name -> envoy.service.ext_proc.v3.HeadersResponse
	8,  // 13: envoy.service.ext_proc.v3.ProcessingResponse.request_body:type_name -> envoy.service.ext_proc.v3.BodyResponse
	8,  // 14: envoy.service.ext_proc.v3.ProcessingResponse.response_body:type_name -> envoy.service.ext_proc.v3.BodyResponse
	9,  // 15: envoy.service.ext_proc.v3.ProcessingResponse.request_trailers:type_name -> envoy.service.ext_proc.v3.TrailersResponse
	9,  // 16: envoy.service.ext_proc.v3.ProcessingResponse.response_trailers:type_name -> envoy.service.ext_proc.v3.TrailersResponse
	12, // 17: envoy.service.ext_proc.v3.ProcessingResponse.immediate_response:type_name -> envoy.service.ext_proc.v3.ImmediateResponse
	10, // 18: envoy.service.ext_proc.v3.ProcessingResponse.streamed_immediate_response:type_name -> envoy.service.ext_proc.v3.StreamedImmediateResponse
	21, // 19: envoy.service.ext_proc.v3.ProcessingResponse.dynamic_metadata:type_name -> google.protobuf.Struct
	22, // 20: envoy.service.ext_proc.v3.ProcessingResponse.mode_override:type_name -> envoy.extensions.filters.http.ext_proc.v3.ProcessingMode
	23, // 21: envoy.service.ext_proc.v3.ProcessingResponse.override_message_timeout:type_name -> google.protobuf.Duration
	24, // 22: envoy.service.ext_proc.v3.HttpHeaders.headers:type_name -> envoy.config.core.v3.HeaderMap
	18, // 23: envoy.service.ext_proc.v3.HttpHeaders.attributes:type_name -> envoy.service.ext_proc.v3.HttpHeaders.AttributesEntry
	24, // 24: envoy.service.ext_proc.v3.HttpTrailers.trailers:type_name -> envoy.config.core.v3.HeaderMap
	11, // 25: envoy.service.ext_proc.v3.HeadersResponse.response:type_name -> envoy.service.ext_proc.v3.CommonResponse
	11, // 26: envoy.service.ext_proc.v3.BodyResponse.response:type_name -> envoy.service.ext_proc.v3.CommonResponse
	14, // 27: envoy.service.ext_proc.v3.TrailersResponse.header_mutation:type_name -> envoy.service.ext_proc.v3.HeaderMutation
	4,  // 28: envoy.service.ext_proc.v3.StreamedImmediateResponse.headers_response:type_name -> envoy.service.ext_proc.v3.HttpHeaders
	15, // 29: envoy.service.ext_proc.v3.StreamedImmediateResponse.body_response:type_name -> envoy.service.ext_proc.v3.StreamedBodyResponse
	24, // 30: envoy.service.ext_proc.v3.StreamedImmediateResponse.trailers_response:type_name -> envoy.config.core.v3.HeaderMap
	0,  // 31: envoy.service.ext_proc.v3.CommonResponse.status:type_name -> envoy.service.ext_proc.v3.CommonResponse.ResponseStatus
	14, // 32: envoy.service.ext_proc.v3.CommonResponse.header_mutation:type_name -> envoy.service.ext_proc.v3.HeaderMutation
	16, // 33: envoy.service.ext_proc.v3.CommonResponse.body_mutation:type_name -> envoy.service.ext_proc.v3.BodyMutation
	24, // 34: envoy.service.ext_proc.v3.CommonResponse.trailers:type_name -> envoy.config.core.v3.HeaderMap
	25, // 35: envoy.service.ext_proc.v3.ImmediateResponse.status:type_name -> envoy.type.v3.HttpStatus
	14, // 36: envoy.service.ext_proc.v3.ImmediateResponse.headers:type_name -> envoy.service.ext_proc.v3.HeaderMutation
	13, // 37: envoy.service.ext_proc.v3.ImmediateResponse.grpc_status:type_name -> envoy.service.ext_proc.v3.GrpcStatus
	26, // 38: envoy.service.ext_proc.v3.HeaderMutation.set_headers:type_name -> envoy.config.core.v3.HeaderValueOption
	15, // 39: envoy.service.ext_proc.v3.BodyMutation.streamed_response:type_name -> envoy.service.ext_proc.v3.StreamedBodyResponse
	21, // 40: envoy.service.ext_proc.v3.ProcessingRequest.AttributesEntry.value:type_name -> google.protobuf.Struct
	21, // 41: envoy.service.ext_proc.v3.HttpHeaders.AttributesEntry.value:type_name -> google.protobuf.Struct
	2,  // 42: envoy.service.ext_proc.v3.ExternalProcessor.Process:input_type -> envoy.service.ext_proc.v3.ProcessingRequest
	3,  // 43: envoy.service.ext_proc.v3.ExternalProcessor.Process:output_type -> envoy.service.ext_proc.v3.ProcessingResponse
	43, // [43:44] is the sub-list for method output_type
	42, // [42:43] is the sub-list for method input_type
	42, // [42:42] is the sub-list for extension type_name
	42, // [42:42] is the sub-list for extension extendee
	0,  // [0:42] is the sub-list for field type_name
}

func init() { file_envoy_service_ext_proc_v3_external_processor_proto_init() }
func file_envoy_service_ext_proc_v3_external_processor_proto_init() {
	if File_envoy_service_ext_proc_v3_external_processor_proto != nil {
		return
	}
	file_envoy_service_ext_proc_v3_external_processor_proto_msgTypes[1].OneofWrappers = []any{
		(*ProcessingRequest_RequestHeaders)(nil),
		(*ProcessingRequest_ResponseHeaders)(nil),
		(*ProcessingRequest_RequestBody)(nil),
		(*ProcessingRequest_ResponseBody)(nil),
		(*ProcessingRequest_RequestTrailers)(nil),
		(*ProcessingRequest_ResponseTrailers)(nil),
	}
	file_envoy_service_ext_proc_v3_external_processor_proto_msgTypes[2].OneofWrappers = []any{
		(*ProcessingResponse_RequestHeaders)(nil),
		(*ProcessingResponse_ResponseHeaders)(nil),
		(*ProcessingResponse_RequestBody)(nil),
		(*ProcessingResponse_ResponseBody)(nil),
		(*ProcessingResponse_RequestTrailers)(nil),
		(*ProcessingResponse_ResponseTrailers)(nil),
		(*ProcessingResponse_ImmediateResponse)(nil),
		(*ProcessingResponse_StreamedImmediateResponse)(nil),
	}
	file_envoy_service_ext_proc_v3_external_processor_proto_msgTypes[9].OneofWrappers = []any{
		(*StreamedImmediateResponse_HeadersResponse)(nil),
		(*StreamedImmediateResponse_BodyResponse)(nil),
		(*StreamedImmediateResponse_TrailersResponse)(nil),
	}
	file_envoy_service_ext_proc_v3_external_processor_proto_msgTypes[15].OneofWrappers = []any{
		(*BodyMutation_Body)(nil),
		(*BodyMutation_ClearBody)(nil),
		(*BodyMutation_StreamedResponse)(nil),
	}
	type x struct{}
	out := protoimpl.TypeBuilder{
		File: protoimpl.DescBuilder{
			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
			RawDescriptor: unsafe.Slice(unsafe.StringData(file_envoy_service_ext_proc_v3_external_processor_proto_rawDesc), len(file_envoy_service_ext_proc_v3_external_processor_proto_rawDesc)),
			NumEnums:      1,
			NumMessages:   18,
			NumExtensions: 0,
			NumServices:   1,
		},
		GoTypes:           file_envoy_service_ext_proc_v3_external_processor_proto_goTypes,
		DependencyIndexes: file_envoy_service_ext_proc_v3_external_processor_proto_depIdxs,
		EnumInfos:         file_envoy_service_ext_proc_v3_external_processor_proto_enumTypes,
		MessageInfos:      file_envoy_service_ext_proc_v3_external_processor_proto_msgTypes,
	}.Build()
	File_envoy_service_ext_proc_v3_external_processor_proto = out.File
	file_envoy_service_ext_proc_v3_external_processor_proto_goTypes = nil
	file_envoy_service_ext_proc_v3_external_processor_proto_depIdxs = nil
}
