api: straggler v2alpha1 -> v3alpha clone. (#8133)
These were missed in #8125. Signed-off-by: Harvey Tuch <htuch@google.com> Mirrored from https://github.com/envoyproxy/envoy @ 1b3b4ae1180b67bee6395fab5c075896fb1964ecpull/620/head
parent
1bc3be0790
commit
5d5e195c2c
30 changed files with 712 additions and 32 deletions
@ -0,0 +1,10 @@ |
||||
load("@envoy_api//bazel:api_build_system.bzl", "api_proto_library_internal", "api_proto_package") |
||||
|
||||
licenses(["notice"]) # Apache 2 |
||||
|
||||
api_proto_package() |
||||
|
||||
api_proto_library_internal( |
||||
name = "router", |
||||
srcs = ["router.proto"], |
||||
) |
@ -0,0 +1,13 @@ |
||||
syntax = "proto3"; |
||||
|
||||
package envoy.config.filter.dubbo.router.v3alpha; |
||||
|
||||
option java_outer_classname = "RouterProto"; |
||||
option java_multiple_files = true; |
||||
option java_package = "io.envoyproxy.envoy.config.filter.dubbo.router.v3alpha"; |
||||
|
||||
// [#protodoc-title: Router] |
||||
// Dubbo router :ref:`configuration overview <config_dubbo_filters_router>`. |
||||
|
||||
message Router { |
||||
} |
@ -0,0 +1,10 @@ |
||||
load("@envoy_api//bazel:api_build_system.bzl", "api_proto_library", "api_proto_package") |
||||
|
||||
licenses(["notice"]) # Apache 2 |
||||
|
||||
api_proto_package() |
||||
|
||||
api_proto_library( |
||||
name = "config", |
||||
srcs = ["config.proto"], |
||||
) |
@ -0,0 +1,26 @@ |
||||
syntax = "proto3"; |
||||
|
||||
package envoy.config.filter.http.grpc_http1_reverse_bridge.v3alpha; |
||||
|
||||
option java_outer_classname = "ConfigProto"; |
||||
option java_multiple_files = true; |
||||
option java_package = "io.envoyproxy.envoy.config.filter.http.grpc_http1_reverse_bridge.v3alpha"; |
||||
|
||||
import "validate/validate.proto"; |
||||
|
||||
// [#protodoc-title: gRPC HTTP/1.1 Reverse Bridge] |
||||
// gRPC HTTP/1.1 Reverse Bridge :ref:`configuration overview |
||||
// <config_http_filters_grpc_http1_reverse_bridge>`. |
||||
|
||||
// gRPC reverse bridge filter configuration |
||||
message FilterConfig { |
||||
// The content-type to pass to the upstream when the gRPC bridge filter is applied. |
||||
// The filter will also validate that the upstream responds with the same content type. |
||||
string content_type = 1 [(validate.rules).string.min_bytes = 1]; |
||||
|
||||
// If true, Envoy will assume that the upstream doesn't understand gRPC frames and |
||||
// strip the gRPC frame from the request, and add it back in to the response. This will |
||||
// hide the gRPC semantics from the upstream, allowing it to receive and respond with a |
||||
// simple binary encoded protobuf. |
||||
bool withhold_grpc_frames = 2; |
||||
} |
@ -0,0 +1,10 @@ |
||||
load("@envoy_api//bazel:api_build_system.bzl", "api_proto_library_internal", "api_proto_package") |
||||
|
||||
licenses(["notice"]) # Apache 2 |
||||
|
||||
api_proto_package() |
||||
|
||||
api_proto_library_internal( |
||||
name = "original_src", |
||||
srcs = ["original_src.proto"], |
||||
) |
@ -0,0 +1,24 @@ |
||||
syntax = "proto3"; |
||||
|
||||
package envoy.config.filter.http.original_src.v3alpha; |
||||
|
||||
option java_outer_classname = "OriginalSrcProto"; |
||||
option java_multiple_files = true; |
||||
option java_package = "io.envoyproxy.envoy.config.filter.http.original_src.v3alpha"; |
||||
|
||||
import "validate/validate.proto"; |
||||
|
||||
// [#protodoc-title: Original Src Filter] |
||||
// Use the Original source address on upstream connections. |
||||
|
||||
// The Original Src filter binds upstream connections to the original source address determined |
||||
// for the request. This address could come from something like the Proxy Protocol filter, or it |
||||
// could come from trusted http headers. |
||||
message OriginalSrc { |
||||
|
||||
// Sets the SO_MARK option on the upstream connection's socket to the provided value. Used to |
||||
// ensure that non-local addresses may be routed back through envoy when binding to the original |
||||
// source address. The option will not be applied if the mark is 0. |
||||
// [#proto-status: experimental] |
||||
uint32 mark = 1; |
||||
} |
@ -0,0 +1,10 @@ |
||||
load("@envoy_api//bazel:api_build_system.bzl", "api_proto_library_internal", "api_proto_package") |
||||
|
||||
licenses(["notice"]) # Apache 2 |
||||
|
||||
api_proto_package() |
||||
|
||||
api_proto_library_internal( |
||||
name = "original_src", |
||||
srcs = ["original_src.proto"], |
||||
) |
@ -0,0 +1,28 @@ |
||||
syntax = "proto3"; |
||||
|
||||
package envoy.config.filter.listener.original_src.v3alpha; |
||||
|
||||
option java_outer_classname = "OriginalSrcProto"; |
||||
option java_multiple_files = true; |
||||
option java_package = "io.envoyproxy.envoy.config.filter.listener.original_src.v3alpha"; |
||||
|
||||
import "validate/validate.proto"; |
||||
|
||||
// [#protodoc-title: Original Src Filter] |
||||
// Use the Original source address on upstream connections. |
||||
|
||||
// The Original Src filter binds upstream connections to the original source address determined |
||||
// for the connection. This address could come from something like the Proxy Protocol filter, or it |
||||
// could come from trusted http headers. |
||||
message OriginalSrc { |
||||
|
||||
// Whether to bind the port to the one used in the original downstream connection. |
||||
// [#not-implemented-warn:] |
||||
bool bind_port = 1; |
||||
|
||||
// Sets the SO_MARK option on the upstream connection's socket to the provided value. Used to |
||||
// ensure that non-local addresses may be routed back through envoy when binding to the original |
||||
// source address. The option will not be applied if the mark is 0. |
||||
// [#proto-status: experimental] |
||||
uint32 mark = 2; |
||||
} |
@ -0,0 +1,26 @@ |
||||
load("@envoy_api//bazel:api_build_system.bzl", "api_proto_library_internal", "api_proto_package") |
||||
|
||||
licenses(["notice"]) # Apache 2 |
||||
|
||||
api_proto_package( |
||||
deps = [ |
||||
"//envoy/api/v3alpha/core", |
||||
"//envoy/api/v3alpha/route:pkg", |
||||
"//envoy/type", |
||||
"//envoy/type/matcher", |
||||
], |
||||
) |
||||
|
||||
api_proto_library_internal( |
||||
name = "dubbo_proxy", |
||||
srcs = [ |
||||
"dubbo_proxy.proto", |
||||
"route.proto", |
||||
], |
||||
deps = [ |
||||
"//envoy/api/v3alpha/core:base", |
||||
"//envoy/api/v3alpha/route", |
||||
"//envoy/type:range", |
||||
"//envoy/type/matcher:string", |
||||
], |
||||
) |
@ -0,0 +1 @@ |
||||
Protocol buffer definitions for the Dubbo proxy. |
@ -0,0 +1,60 @@ |
||||
syntax = "proto3"; |
||||
|
||||
package envoy.config.filter.network.dubbo_proxy.v3alpha; |
||||
|
||||
option java_outer_classname = "DubboProxyProto"; |
||||
option java_multiple_files = true; |
||||
option java_package = "io.envoyproxy.envoy.config.filter.network.dubbo_proxy.v3alpha"; |
||||
|
||||
import "envoy/config/filter/network/dubbo_proxy/v3alpha/route.proto"; |
||||
|
||||
import "google/protobuf/any.proto"; |
||||
|
||||
import "validate/validate.proto"; |
||||
import "gogoproto/gogo.proto"; |
||||
|
||||
// [#protodoc-title: Dubbo Proxy] |
||||
// Dubbo Proxy :ref:`configuration overview <config_network_filters_dubbo_proxy>`. |
||||
|
||||
// [#comment:next free field: 6] |
||||
message DubboProxy { |
||||
// The human readable prefix to use when emitting statistics. |
||||
string stat_prefix = 1 [(validate.rules).string.min_bytes = 1]; |
||||
|
||||
// Configure the protocol used. |
||||
ProtocolType protocol_type = 2 [(validate.rules).enum.defined_only = true]; |
||||
|
||||
// Configure the serialization protocol used. |
||||
SerializationType serialization_type = 3 [(validate.rules).enum.defined_only = true]; |
||||
|
||||
// The route table for the connection manager is static and is specified in this property. |
||||
repeated RouteConfiguration route_config = 4; |
||||
|
||||
// A list of individual Dubbo filters that make up the filter chain for requests made to the |
||||
// Dubbo proxy. Order matters as the filters are processed sequentially. For backwards |
||||
// compatibility, if no dubbo_filters are specified, a default Dubbo router filter |
||||
// (`envoy.filters.dubbo.router`) is used. |
||||
repeated DubboFilter dubbo_filters = 5; |
||||
} |
||||
|
||||
// Dubbo Protocol types supported by Envoy. |
||||
enum ProtocolType { |
||||
Dubbo = 0; // the default protocol. |
||||
} |
||||
|
||||
// Dubbo Serialization types supported by Envoy. |
||||
enum SerializationType { |
||||
Hessian2 = 0; // the default serialization protocol. |
||||
} |
||||
|
||||
// DubboFilter configures a Dubbo filter. |
||||
// [#comment:next free field: 3] |
||||
message DubboFilter { |
||||
// The name of the filter to instantiate. The name must match a supported |
||||
// filter. |
||||
string name = 1 [(validate.rules).string.min_bytes = 1]; |
||||
|
||||
// Filter specific configuration which depends on the filter being |
||||
// instantiated. See the supported filters for further documentation. |
||||
google.protobuf.Any config = 2; |
||||
} |
@ -0,0 +1,109 @@ |
||||
syntax = "proto3"; |
||||
|
||||
package envoy.config.filter.network.dubbo_proxy.v3alpha; |
||||
|
||||
option java_outer_classname = "RouteProto"; |
||||
option java_multiple_files = true; |
||||
option java_package = "io.envoyproxy.envoy.config.filter.network.dubbo_proxy.v3alpha"; |
||||
|
||||
import "envoy/api/v3alpha/route/route.proto"; |
||||
import "envoy/type/matcher/string.proto"; |
||||
import "envoy/type/range.proto"; |
||||
|
||||
import "google/protobuf/wrappers.proto"; |
||||
|
||||
import "validate/validate.proto"; |
||||
import "gogoproto/gogo.proto"; |
||||
|
||||
option (gogoproto.stable_marshaler_all) = true; |
||||
|
||||
// [#protodoc-title: Dubbo Proxy Route Configuration] |
||||
// Dubbo Proxy :ref:`configuration overview <config_network_filters_dubbo_proxy>`. |
||||
|
||||
// [#comment:next free field: 6] |
||||
message RouteConfiguration { |
||||
// The name of the route configuration. Reserved for future use in asynchronous route discovery. |
||||
string name = 1; |
||||
|
||||
// The interface name of the service. |
||||
string interface = 2; |
||||
|
||||
// Which group does the interface belong to. |
||||
string group = 3; |
||||
|
||||
// The version number of the interface. |
||||
string version = 4; |
||||
|
||||
// The list of routes that will be matched, in order, against incoming requests. The first route |
||||
// that matches will be used. |
||||
repeated Route routes = 5; |
||||
} |
||||
|
||||
// [#comment:next free field: 3] |
||||
message Route { |
||||
// Route matching parameters. |
||||
RouteMatch match = 1 [(validate.rules).message.required = true]; |
||||
|
||||
// Route request to some upstream cluster. |
||||
RouteAction route = 2 [(validate.rules).message.required = true]; |
||||
} |
||||
|
||||
// [#comment:next free field: 3] |
||||
message RouteMatch { |
||||
// Method level routing matching. |
||||
MethodMatch method = 1; |
||||
|
||||
// Specifies a set of headers that the route should match on. The router will check the request’s |
||||
// headers against all the specified headers in the route config. A match will happen if all the |
||||
// headers in the route are present in the request with the same values (or based on presence if |
||||
// the value field is not in the config). |
||||
repeated envoy.api.v3alpha.route.HeaderMatcher headers = 2; |
||||
} |
||||
|
||||
// [#comment:next free field: 3] |
||||
message RouteAction { |
||||
oneof cluster_specifier { |
||||
option (validate.required) = true; |
||||
|
||||
// Indicates the upstream cluster to which the request should be routed. |
||||
string cluster = 1; |
||||
|
||||
// Multiple upstream clusters can be specified for a given route. The |
||||
// request is routed to one of the upstream clusters based on weights |
||||
// assigned to each cluster. |
||||
// Currently ClusterWeight only supports the name and weight fields. |
||||
envoy.api.v3alpha.route.WeightedCluster weighted_clusters = 2; |
||||
} |
||||
} |
||||
|
||||
// [#comment:next free field: 5] |
||||
message MethodMatch { |
||||
// The name of the method. |
||||
envoy.type.matcher.StringMatcher name = 1; |
||||
|
||||
// The parameter matching type. |
||||
message ParameterMatchSpecifier { |
||||
oneof parameter_match_specifier { |
||||
// If specified, header match will be performed based on the value of the header. |
||||
string exact_match = 3; |
||||
|
||||
// If specified, header match will be performed based on range. |
||||
// The rule will match if the request header value is within this range. |
||||
// The entire request header value must represent an integer in base 10 notation: consisting |
||||
// of an optional plus or minus sign followed by a sequence of digits. The rule will not match |
||||
// if the header value does not represent an integer. Match will fail for empty values, |
||||
// floating point numbers or if only a subsequence of the header value is an integer. |
||||
// |
||||
// Examples: |
||||
// |
||||
// * For range [-10,0), route will match for header value -1, but not for 0, |
||||
// "somestring", 10.9, "-1somestring" |
||||
envoy.type.Int64Range range_match = 4; |
||||
} |
||||
} |
||||
|
||||
// Method parameter definition. |
||||
// The key is the parameter index, starting from 0. |
||||
// The value is the parameter matching type. |
||||
map<uint32, ParameterMatchSpecifier> params_match = 2; |
||||
} |
@ -0,0 +1,22 @@ |
||||
load("@envoy_api//bazel:api_build_system.bzl", "api_proto_library_internal", "api_proto_package") |
||||
|
||||
licenses(["notice"]) # Apache 2 |
||||
|
||||
api_proto_package( |
||||
deps = [ |
||||
"//envoy/api/v3alpha/core", |
||||
"//envoy/api/v3alpha/route:pkg", |
||||
], |
||||
) |
||||
|
||||
api_proto_library_internal( |
||||
name = "thrift_proxy", |
||||
srcs = [ |
||||
"route.proto", |
||||
"thrift_proxy.proto", |
||||
], |
||||
deps = [ |
||||
"//envoy/api/v3alpha/core:base", |
||||
"//envoy/api/v3alpha/route", |
||||
], |
||||
) |
@ -0,0 +1 @@ |
||||
Protocol buffer definitions for the Thrift proxy. |
@ -0,0 +1,129 @@ |
||||
syntax = "proto3"; |
||||
|
||||
package envoy.config.filter.network.thrift_proxy.v3alpha; |
||||
|
||||
option java_outer_classname = "RouteProto"; |
||||
option java_multiple_files = true; |
||||
option java_package = "io.envoyproxy.envoy.config.filter.network.thrift_proxy.v3alpha"; |
||||
|
||||
import "envoy/api/v3alpha/core/base.proto"; |
||||
import "envoy/api/v3alpha/route/route.proto"; |
||||
|
||||
import "google/protobuf/wrappers.proto"; |
||||
|
||||
import "validate/validate.proto"; |
||||
import "gogoproto/gogo.proto"; |
||||
|
||||
// [#protodoc-title: Thrift Proxy Route Configuration] |
||||
// Thrift Proxy :ref:`configuration overview <config_network_filters_thrift_proxy>`. |
||||
|
||||
// [#comment:next free field: 3] |
||||
message RouteConfiguration { |
||||
// The name of the route configuration. Reserved for future use in asynchronous route discovery. |
||||
string name = 1; |
||||
|
||||
// The list of routes that will be matched, in order, against incoming requests. The first route |
||||
// that matches will be used. |
||||
repeated Route routes = 2; |
||||
} |
||||
|
||||
// [#comment:next free field: 3] |
||||
message Route { |
||||
// Route matching parameters. |
||||
RouteMatch match = 1 [(validate.rules).message.required = true]; |
||||
|
||||
// Route request to some upstream cluster. |
||||
RouteAction route = 2 [(validate.rules).message.required = true]; |
||||
} |
||||
|
||||
// [#comment:next free field: 5] |
||||
message RouteMatch { |
||||
oneof match_specifier { |
||||
option (validate.required) = true; |
||||
|
||||
// If specified, the route must exactly match the request method name. As a special case, an |
||||
// empty string matches any request method name. |
||||
string method_name = 1; |
||||
|
||||
// If specified, the route must have the service name as the request method name prefix. As a |
||||
// special case, an empty string matches any service name. Only relevant when service |
||||
// multiplexing. |
||||
string service_name = 2; |
||||
} |
||||
|
||||
// Inverts whatever matching is done in the :ref:`method_name |
||||
// <envoy_api_field_config.filter.network.thrift_proxy.v3alpha.RouteMatch.method_name>` or |
||||
// :ref:`service_name |
||||
// <envoy_api_field_config.filter.network.thrift_proxy.v3alpha.RouteMatch.service_name>` fields. |
||||
// Cannot be combined with wildcard matching as that would result in routes never being matched. |
||||
// |
||||
// .. note:: |
||||
// |
||||
// This does not invert matching done as part of the :ref:`headers field |
||||
// <envoy_api_field_config.filter.network.thrift_proxy.v3alpha.RouteMatch.headers>` field. To |
||||
// invert header matching, see :ref:`invert_match |
||||
// <envoy_api_field_route.HeaderMatcher.invert_match>`. |
||||
bool invert = 3; |
||||
|
||||
// Specifies a set of headers that the route should match on. The router will check the request’s |
||||
// headers against all the specified headers in the route config. A match will happen if all the |
||||
// headers in the route are present in the request with the same values (or based on presence if |
||||
// the value field is not in the config). Note that this only applies for Thrift transports and/or |
||||
// protocols that support headers. |
||||
repeated envoy.api.v3alpha.route.HeaderMatcher headers = 4; |
||||
} |
||||
|
||||
// [#comment:next free field: 5] |
||||
message RouteAction { |
||||
oneof cluster_specifier { |
||||
option (validate.required) = true; |
||||
|
||||
// Indicates a single upstream cluster to which the request should be routed |
||||
// to. |
||||
string cluster = 1 [(validate.rules).string.min_bytes = 1]; |
||||
|
||||
// Multiple upstream clusters can be specified for a given route. The |
||||
// request is routed to one of the upstream clusters based on weights |
||||
// assigned to each cluster. |
||||
WeightedCluster weighted_clusters = 2; |
||||
} |
||||
|
||||
// Optional endpoint metadata match criteria used by the subset load balancer. Only endpoints in |
||||
// the upstream cluster with metadata matching what is set in this field will be considered. |
||||
// Note that this will be merged with what's provided in :ref: `WeightedCluster.MetadataMatch |
||||
// <envoy_api_field_config.filter.network.thrift_proxy.v3alpha.WeightedCluster.ClusterWeight.metadata_match>`, |
||||
// with values there taking precedence. Keys and values should be provided under the "envoy.lb" |
||||
// metadata key. |
||||
envoy.api.v3alpha.core.Metadata metadata_match = 3; |
||||
|
||||
// Specifies a set of rate limit configurations that could be applied to the route. |
||||
// N.B. Thrift service or method name matching can be achieved by specifying a RequestHeaders |
||||
// action with the header name ":method-name". |
||||
repeated envoy.api.v3alpha.route.RateLimit rate_limits = 4; |
||||
} |
||||
|
||||
// Allows for specification of multiple upstream clusters along with weights that indicate the |
||||
// percentage of traffic to be forwarded to each cluster. The router selects an upstream cluster |
||||
// based on these weights. |
||||
message WeightedCluster { |
||||
message ClusterWeight { |
||||
// Name of the upstream cluster. |
||||
string name = 1 [(validate.rules).string.min_bytes = 1]; |
||||
|
||||
// When a request matches the route, the choice of an upstream cluster is determined by its |
||||
// weight. The sum of weights across all entries in the clusters array determines the total |
||||
// weight. |
||||
google.protobuf.UInt32Value weight = 2 [(validate.rules).uint32.gte = 1]; |
||||
|
||||
// Optional endpoint metadata match criteria used by the subset load balancer. Only endpoints in |
||||
// the upstream cluster with metadata matching what is set in this field, combined with what's |
||||
// provided in :ref: `RouteAction's metadata_match |
||||
// <envoy_api_field_config.filter.network.thrift_proxy.v3alpha.RouteAction.metadata_match>`, |
||||
// will be considered. Values here will take precedence. Keys and values should be provided |
||||
// under the "envoy.lb" metadata key. |
||||
envoy.api.v3alpha.core.Metadata metadata_match = 3; |
||||
} |
||||
|
||||
// Specifies one or more upstream clusters associated with the route. |
||||
repeated ClusterWeight clusters = 1 [(validate.rules).repeated .min_items = 1]; |
||||
} |
@ -0,0 +1,121 @@ |
||||
syntax = "proto3"; |
||||
|
||||
package envoy.config.filter.network.thrift_proxy.v3alpha; |
||||
|
||||
option java_outer_classname = "ThriftProxyProto"; |
||||
option java_multiple_files = true; |
||||
option java_package = "io.envoyproxy.envoy.config.filter.network.thrift_proxy.v3alpha"; |
||||
|
||||
import "envoy/config/filter/network/thrift_proxy/v3alpha/route.proto"; |
||||
|
||||
import "google/protobuf/any.proto"; |
||||
import "google/protobuf/struct.proto"; |
||||
|
||||
import "validate/validate.proto"; |
||||
import "gogoproto/gogo.proto"; |
||||
|
||||
// [#protodoc-title: Thrift Proxy] |
||||
// Thrift Proxy :ref:`configuration overview <config_network_filters_thrift_proxy>`. |
||||
|
||||
// [#comment:next free field: 6] |
||||
message ThriftProxy { |
||||
// Supplies the type of transport that the Thrift proxy should use. Defaults to |
||||
// :ref:`AUTO_TRANSPORT<envoy_api_enum_value_config.filter.network.thrift_proxy.v3alpha.TransportType.AUTO_TRANSPORT>`. |
||||
TransportType transport = 2 [(validate.rules).enum.defined_only = true]; |
||||
|
||||
// Supplies the type of protocol that the Thrift proxy should use. Defaults to |
||||
// :ref:`AUTO_PROTOCOL<envoy_api_enum_value_config.filter.network.thrift_proxy.v3alpha.ProtocolType.AUTO_PROTOCOL>`. |
||||
ProtocolType protocol = 3 [(validate.rules).enum.defined_only = true]; |
||||
|
||||
// The human readable prefix to use when emitting statistics. |
||||
string stat_prefix = 1 [(validate.rules).string.min_bytes = 1]; |
||||
|
||||
// The route table for the connection manager is static and is specified in this property. |
||||
RouteConfiguration route_config = 4; |
||||
|
||||
// A list of individual Thrift filters that make up the filter chain for requests made to the |
||||
// Thrift proxy. Order matters as the filters are processed sequentially. For backwards |
||||
// compatibility, if no thrift_filters are specified, a default Thrift router filter |
||||
// (`envoy.filters.thrift.router`) is used. |
||||
repeated ThriftFilter thrift_filters = 5; |
||||
} |
||||
|
||||
// Thrift transport types supported by Envoy. |
||||
enum TransportType { |
||||
option (gogoproto.goproto_enum_prefix) = false; |
||||
|
||||
// For downstream connections, the Thrift proxy will attempt to determine which transport to use. |
||||
// For upstream connections, the Thrift proxy will use same transport as the downstream |
||||
// connection. |
||||
AUTO_TRANSPORT = 0; |
||||
|
||||
// The Thrift proxy will use the Thrift framed transport. |
||||
FRAMED = 1; |
||||
|
||||
// The Thrift proxy will use the Thrift unframed transport. |
||||
UNFRAMED = 2; |
||||
|
||||
// The Thrift proxy will assume the client is using the Thrift header transport. |
||||
HEADER = 3; |
||||
} |
||||
|
||||
// Thrift Protocol types supported by Envoy. |
||||
enum ProtocolType { |
||||
option (gogoproto.goproto_enum_prefix) = false; |
||||
|
||||
// For downstream connections, the Thrift proxy will attempt to determine which protocol to use. |
||||
// Note that the older, non-strict (or lax) binary protocol is not included in automatic protocol |
||||
// detection. For upstream connections, the Thrift proxy will use the same protocol as the |
||||
// downstream connection. |
||||
AUTO_PROTOCOL = 0; |
||||
|
||||
// The Thrift proxy will use the Thrift binary protocol. |
||||
BINARY = 1; |
||||
|
||||
// The Thrift proxy will use Thrift non-strict binary protocol. |
||||
LAX_BINARY = 2; |
||||
|
||||
// The Thrift proxy will use the Thrift compact protocol. |
||||
COMPACT = 3; |
||||
|
||||
// The Thrift proxy will use the Thrift "Twitter" protocol implemented by the finagle library. |
||||
TWITTER = 4; |
||||
} |
||||
|
||||
// ThriftFilter configures a Thrift filter. |
||||
// [#comment:next free field: 3] |
||||
message ThriftFilter { |
||||
// The name of the filter to instantiate. The name must match a supported |
||||
// filter. The built-in filters are: |
||||
// |
||||
// [#comment:TODO(zuercher): Auto generate the following list] |
||||
// * :ref:`envoy.filters.thrift.router <config_thrift_filters_router>` |
||||
// * :ref:`envoy.filters.thrift.rate_limit <config_thrift_filters_rate_limit>` |
||||
string name = 1 [(validate.rules).string.min_bytes = 1]; |
||||
|
||||
// Filter specific configuration which depends on the filter being instantiated. See the supported |
||||
// filters for further documentation. |
||||
oneof config_type { |
||||
google.protobuf.Struct config = 2; |
||||
|
||||
google.protobuf.Any typed_config = 3; |
||||
} |
||||
} |
||||
|
||||
// ThriftProtocolOptions specifies Thrift upstream protocol options. This object is used in |
||||
// in :ref:`extension_protocol_options<envoy_api_field_Cluster.extension_protocol_options>`, keyed |
||||
// by the name `envoy.filters.network.thrift_proxy`. |
||||
// [#comment:next free field: 3] |
||||
message ThriftProtocolOptions { |
||||
// Supplies the type of transport that the Thrift proxy should use for upstream connections. |
||||
// Selecting |
||||
// :ref:`AUTO_TRANSPORT<envoy_api_enum_value_config.filter.network.thrift_proxy.v3alpha.TransportType.AUTO_TRANSPORT>`, |
||||
// which is the default, causes the proxy to use the same transport as the downstream connection. |
||||
TransportType transport = 1 [(validate.rules).enum.defined_only = true]; |
||||
|
||||
// Supplies the type of protocol that the Thrift proxy should use for upstream connections. |
||||
// Selecting |
||||
// :ref:`AUTO_PROTOCOL<envoy_api_enum_value_config.filter.network.thrift_proxy.v3alpha.ProtocolType.AUTO_PROTOCOL>`, |
||||
// which is the default, causes the proxy to use the same protocol as the downstream connection. |
||||
ProtocolType protocol = 2 [(validate.rules).enum.defined_only = true]; |
||||
} |
@ -0,0 +1,19 @@ |
||||
load("@envoy_api//bazel:api_build_system.bzl", "api_proto_library_internal", "api_proto_package") |
||||
|
||||
licenses(["notice"]) # Apache 2 |
||||
|
||||
api_proto_package( |
||||
deps = [ |
||||
"//envoy/api/v3alpha/ratelimit:pkg", |
||||
"//envoy/config/ratelimit/v3alpha:pkg", |
||||
], |
||||
) |
||||
|
||||
api_proto_library_internal( |
||||
name = "rate_limit", |
||||
srcs = ["rate_limit.proto"], |
||||
deps = [ |
||||
"//envoy/api/v3alpha/ratelimit", |
||||
"//envoy/config/ratelimit/v3alpha:rls", |
||||
], |
||||
) |
@ -0,0 +1,50 @@ |
||||
syntax = "proto3"; |
||||
|
||||
package envoy.config.filter.thrift.rate_limit.v3alpha; |
||||
|
||||
option java_outer_classname = "RateLimitProto"; |
||||
option java_multiple_files = true; |
||||
option java_package = "io.envoyproxy.envoy.config.filter.thrift.rate_limit.v3alpha"; |
||||
|
||||
import "envoy/config/ratelimit/v3alpha/rls.proto"; |
||||
|
||||
import "google/protobuf/duration.proto"; |
||||
|
||||
import "validate/validate.proto"; |
||||
import "gogoproto/gogo.proto"; |
||||
|
||||
// [#protodoc-title: Rate limit] |
||||
// Rate limit :ref:`configuration overview <config_thrift_filters_rate_limit>`. |
||||
|
||||
// [#comment:next free field: 5] |
||||
message RateLimit { |
||||
// The rate limit domain to use in the rate limit service request. |
||||
string domain = 1 [(validate.rules).string.min_bytes = 1]; |
||||
|
||||
// Specifies the rate limit configuration stage. Each configured rate limit filter performs a |
||||
// rate limit check using descriptors configured in the |
||||
// :ref:`envoy_api_msg_config.filter.network.thrift_proxy.v3alpha.RouteAction` for the request. |
||||
// Only those entries with a matching stage number are used for a given filter. If not set, the |
||||
// default stage number is 0. |
||||
// |
||||
// .. note:: |
||||
// |
||||
// The filter supports a range of 0 - 10 inclusively for stage numbers. |
||||
uint32 stage = 2 [(validate.rules).uint32.lte = 10]; |
||||
|
||||
// The timeout in milliseconds for the rate limit service RPC. If not |
||||
// set, this defaults to 20ms. |
||||
google.protobuf.Duration timeout = 3 [(gogoproto.stdduration) = true]; |
||||
|
||||
// The filter's behaviour in case the rate limiting service does |
||||
// not respond back. When it is set to true, Envoy will not allow traffic in case of |
||||
// communication failure between rate limiting service and the proxy. |
||||
// Defaults to false. |
||||
bool failure_mode_deny = 4; |
||||
|
||||
// Configuration for an external rate limit service provider. If not |
||||
// specified, any calls to the rate limit service will immediately return |
||||
// success. |
||||
envoy.config.ratelimit.v3alpha.RateLimitServiceConfig rate_limit_service = 5 |
||||
[(validate.rules).message.required = true]; |
||||
} |
@ -0,0 +1,10 @@ |
||||
load("@envoy_api//bazel:api_build_system.bzl", "api_proto_library_internal", "api_proto_package") |
||||
|
||||
licenses(["notice"]) # Apache 2 |
||||
|
||||
api_proto_package() |
||||
|
||||
api_proto_library_internal( |
||||
name = "router", |
||||
srcs = ["router.proto"], |
||||
) |
@ -0,0 +1,13 @@ |
||||
syntax = "proto3"; |
||||
|
||||
package envoy.config.filter.thrift.router.v3alpha; |
||||
|
||||
option java_outer_classname = "RouterProto"; |
||||
option java_multiple_files = true; |
||||
option java_package = "io.envoyproxy.envoy.config.filter.thrift.router.v3alpha"; |
||||
|
||||
// [#protodoc-title: Router] |
||||
// Thrift router :ref:`configuration overview <config_thrift_filters_router>`. |
||||
|
||||
message Router { |
||||
} |
Loading…
Reference in new issue