-
Notifications
You must be signed in to change notification settings - Fork 1
Found new managed modules references #1073
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
c7500e8 to
62b5588
Compare
62b5588 to
05885ce
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Changes in envoy, lighthouse, and WKT. Substantial changes in envoy; looks like mostly additions to me, although in envoy there are a lot of new files being synced.
FYI @pkwarren @jhump would love your input in here to see if there's anything we're syncing that we should exclude, or if we're may be missing something.
| }, | ||
| { | ||
| "name": "v1.35.4", | ||
| "digest": "3f412b3191f2a03f0e2ffffc9f45803b3db58bd1e6842a7ec18d509f3623096a4ff7bc8fb2c2305d22d8dc403f4c0b4eca7e4e88c0a8475f952e405525d9ccb7" |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
cd modules/sync/envoyproxy/envoy
casdiff v1.35.3 v1.35.4 --format=markdown1 files changed: 0 removed, 0 renamed, 0 added, 1 changed content
Files changed content:
envoy/extensions/filters/listener/tls_inspector/v3/tls_inspector.proto:
--- shake256:7dd152626a195fafea372ab20390e4b8979fe28ef22621d899b0aa0cbf48e02a996a6505e28da12e0dccee4bfad4e965ebe861117fa66d135c8fb78f7ce8ec4c envoy/extensions/filters/listener/tls_inspector/v3/tls_inspector.proto
+++ shake256:cfa0377e1e757d077ba5ce2367ce376d2e02fa8af8e9d17081ce3501c15672485aae78a5096e34615fde5d4c26f3e7074e17e16de774ac82e240d9da8c4cf97b envoy/extensions/filters/listener/tls_inspector/v3/tls_inspector.proto
@@ -37,4 +37,15 @@
// tls inspector will consume.
google.protobuf.UInt32Value initial_read_buffer_size = 2
[(validate.rules).uint32 = {lt: 65537 gt: 255}];
+
+ // Close connection when TLS ClientHello message could not be parsed.
+ // This flag should be enabled only if it is known that incoming connections are expected to use
+ // TLS protocol, as Envoy does not distinguish between a plain text message or a malformed TLS
+ // ClientHello message.
+ // By default this flag is false and TLS ClientHello parsing errors are interpreted as a
+ // plain text connection.
+ // Setting this to true will cause connections to be terminated and the ``client_hello_too_large``
+ // counter to be incremented if the ClientHello message is over implementation defined limit
+ // (currently 16Kb).
+ bool close_connection_on_client_hello_parsing_errors = 4;
}
| }, | ||
| { | ||
| "name": "v1.36.0", | ||
| "digest": "7f087cb09cf323d4b7a6618148870959c3affaded64b3510afbf484eee19791cf12caf80aa4d5721809b6bfef662053913aeff0e8aa92b3f57774d6ed3f86253" |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
casdiff v1.35.5 v1.36.0 --format=markdown71 files changed: 0 removed, 0 renamed, 22 added, 49 changed content
Files added:
+ shake256:2d8529937573b5af22c4a01154056d54c8e1b7ce7b96511d19f6109749f9f4053a143a206cf1d298d2ff688e67608f03ea18d80dba10cece6f6dae33e25a8122 envoy/extensions/bootstrap/reverse_tunnel/downstream_socket_interface/v3/downstream_reverse_connection_socket_interface.proto
+ shake256:8b7b3951df953ac62dfacfadbdb599faeb1072f96527f5ed8455463046d8a62c2ea0932dd5a3bd9feaabfd4812de4c0bf0515be825714cdfa27e1e934e736692 envoy/extensions/bootstrap/reverse_tunnel/upstream_socket_interface/v3/upstream_reverse_connection_socket_interface.proto
+ shake256:713d411cee39f04b628ebfc3532d4a8af422cfb8885f372599ed0d86dd4011f743d160c66485159be9dee939ecf66de5c323cd1fc4523f1c3be62bde4e3bbbac envoy/extensions/clusters/reverse_connection/v3/reverse_connection.proto
+ shake256:32ec3f8854e5a6ceed6ac53d62142d707ea1c335da41359d8d57cfd3cff4edd5afbe1fd1d7a40057a17ae0f20c106756d7d29480007969dcd4b1845fb2e3ad6b envoy/extensions/filters/http/cache_v2/v3/cache.proto
+ shake256:2974d42d6aca9cc1d92da59d423f3a9a7e490c887716b5b3a018962cc0390463580cc5dd7cf1634fda75a07894ef32650dd7bd24c68a39f5e322193f7437621b envoy/extensions/filters/http/mcp/v3/mcp.proto
+ shake256:3e60681753f480f9fc7da5503210259f2d9043fe030621bf444b81df7bd222fd56927f3e1a307b5a237e8272405afa8919779b67b8632c6bc77479c483e8272d envoy/extensions/filters/network/reverse_tunnel/v3/reverse_tunnel.proto
+ shake256:7f89d816c9b3dd99415e179c26bc1a20c9404b6bfeee89f0e0f6449ecfe84964676d13b594b72f0ae8a8506128500e1e16f933ce8df9d394d1c0c4b45813aa17 envoy/extensions/grpc_service/call_credentials/access_token/v3/access_token_credentials.proto
+ shake256:738f54621e145760f7b19dfd49f2a1b93f3e7e906e90b0d10d8020dfb60671ba007e5a16ad49b43c0f17c26263ad7b75037096c0d099ab9b3766a134b967f4ec envoy/extensions/grpc_service/call_credentials/file_based_metadata/v3/file_based_metadata_credentials.proto
+ shake256:9b994b424db196e4024393e9773eb91d6c04f40ff51d62ddc3c5be89bf43a44361f944a70c2a1ef8c60e03fd31bf84b4f94a86b60f0ebadc2c8693a8d50bda2b envoy/extensions/grpc_service/call_credentials/google_compute_engine/v3/google_compute_engine_credentials.proto
+ shake256:3a4bba752e25fbe98c5decf5fb7cef33f26d62cb772a1090a70f52d120f0649f2dd7597c650b360e5b8cb94c73127bc4218ea40d973b391377fe723e65f0297b envoy/extensions/grpc_service/call_credentials/google_iam/v3/google_iam_credentials.proto
+ shake256:287739521df4ccf47e2466a84022be6911d45006c26e28da2adadf3c8de7173b3d1677c66ca4b77e17a9fb1b672f484df217e1b4611c93488d60245e6e44e1ad envoy/extensions/grpc_service/call_credentials/google_refresh_token/v3/google_refresh_token_credentials.proto
+ shake256:c4f207e0dd455917f2d2ff262738b2251f0ad9e2089ee7eede8bb1db6616c30ab66a50aefa73b453651d3354aff71bb825481afce3d128202e1e1df32242e949 envoy/extensions/grpc_service/call_credentials/service_account_jwt_access/v3/service_account_jwt_access_credentials.proto
+ shake256:e15b227bff5203ad4e5f26f97f15b19a8737d04089d7548c23a541220080f846ad5c4417fd874560786f53863bc4c76a04dca54138758749257029360097bac3 envoy/extensions/grpc_service/call_credentials/sts_service/v3/sts_service_credentials.proto
+ shake256:baaa05a38dbd4935506087fa463cfc3a8835aa79213b713885956c4176beea297948117e5ed8dc6a3d1dbb56730ee3f9af5dd3e452dcbc366fc9ef4bb1387570 envoy/extensions/grpc_service/channel_credentials/google_default/v3/google_default_credentials.proto
+ shake256:4bcf0fe81cddf339e3add76e432b404823cee937521b87cfa3d3062cccc6737ea842028dab050f99f4aeb2e8950ed82e359707125e6093916f8fdcc6a879f8e5 envoy/extensions/grpc_service/channel_credentials/insecure/v3/insecure_credentials.proto
+ shake256:bb28c723bc3100a46e0f6df343066f7360925ecf2fc8e6c85b07bf99d452c1777085d39e189ebc8c38142048aa9b0881481de9b10ce0c667c18fc0f12a6dfefc envoy/extensions/grpc_service/channel_credentials/local/v3/local_credentials.proto
+ shake256:7215f9898193b8af53eb913822e4a62030a22efcd12ab8b10e268e0a04ed5c2c6e5c827f445c7948a594fc9baaeb9dac34dc6cf9bfa1e76d4e1d4273bd9b1b87 envoy/extensions/grpc_service/channel_credentials/tls/v3/tls_credentials.proto
+ shake256:ac5ba8062d33e4d5aa748d0361c4432c67fc338e29d9e413c1477e57967de535e1f79f135a7ac836cfbc32678b2ee1862b0d14315c6faa0912e542d24be2c20f envoy/extensions/grpc_service/channel_credentials/xds/v3/xds_credentials.proto
+ shake256:df1206e2109fc9b8c5709f4ca2b97bee1b542246208dfade5d301f75f7c2465784191d253bfd96459324e467aed1de28e7af8b1940363ebce406534008fbd60a envoy/extensions/http/cache_v2/file_system_http_cache/v3/file_system_http_cache.proto
+ shake256:7a766c160b8106c34fe067b54d44f89736dc070bc115d8fe475172b262c98d33b717fe58c1561bfbe44f3fdd5856120c2583c7fc1b38d0099acc3dd6d5ef76c8 envoy/extensions/http/cache_v2/simple_http_cache/v3/config.proto
+ shake256:01f1be6da291eaba77746eb09c1837f51354726aa6f0c9aed1fe958b66d8298193826d0f4b33c97054c053f1e7860980f67ea074e897f405bd50d8d79279d8e4 envoy/extensions/http/ext_proc/processing_request_modifiers/mapped_attribute_builder/v3/mapped_attribute_builder.proto
+ shake256:5be0d34d2448031378eb44f676a6f51827f9d2d2546ab6df3b67c5c3da1011face37d508a8a0b95bdc4cce3abd94ea5f1fa591428646ff478a153466eae1494f envoy/extensions/matching/common_inputs/stats/v3/stats.protoFiles changed content:
envoy/config/bootstrap/v3/bootstrap.proto:
--- shake256:c33fcfa432a6a1ddfaa759db672f56be0eec4f9a45705bc88a83c2775a23db2eb0824ba6af4bccf082c58bb304f58968f08f7f39e238581c2ec0337b35b30145 envoy/config/bootstrap/v3/bootstrap.proto
+++ shake256:012964f6302f1be544858bbdec9638aa5eea252b22d0226c3213917a2b03d2682c1b9393486b4810938f211a045c9130bed7e1b91c2fa583b7ef894db1eb4905 envoy/config/bootstrap/v3/bootstrap.proto
@@ -41,7 +41,7 @@
// <config_overview_bootstrap>` for more detail.
// Bootstrap :ref:`configuration overview <config_overview_bootstrap>`.
-// [#next-free-field: 42]
+// [#next-free-field: 43]
message Bootstrap {
option (udpa.annotations.versioning).previous_message_type =
"envoy.config.bootstrap.v2.Bootstrap";
@@ -228,6 +228,14 @@
// a flush timer is not created. Only one of ``stats_flush_on_admin`` or
// ``stats_flush_interval`` can be set.
bool stats_flush_on_admin = 29 [(validate.rules).bool = {const: true}];
+ }
+
+ oneof stats_eviction {
+ // Optional duration to perform metric eviction. At every interval, during the stats flush
+ // the unused metrics are removed from the worker caches and the used metrics
+ // are marked as unused. Must be a multiple of the ``stats_flush_interval``.
+ google.protobuf.Duration stats_eviction_interval = 42
+ [(validate.rules).duration = {gte {nanos: 1000000}}];
}
// Optional watchdog configuration.
envoy/config/common/mutation_rules/v3/mutation_rules.proto:
--- shake256:bb688fa3d164e48efde9a75f15dd7b27477008fecdf1de1507fd0b230418349e51045dbb409c39c07bab2ecd1be4f85c044dcaad213c998b59e0c3a22b04d3b0 envoy/config/common/mutation_rules/v3/mutation_rules.proto
+++ shake256:175d2f7896be8a9a86b2eecf8cab4cf5c8e5c5361842335f8c607f3a1ce908a57419a79822d110b334254694bc67e6bd67dfcf0ef08de910b898a8a617eadd4f envoy/config/common/mutation_rules/v3/mutation_rules.proto
@@ -4,6 +4,7 @@
import "envoy/config/core/v3/base.proto";
import "envoy/type/matcher/v3/regex.proto";
+import "envoy/type/matcher/v3/string.proto";
import "google/protobuf/wrappers.proto";
@@ -90,6 +91,12 @@
// The HeaderMutation structure specifies an action that may be taken on HTTP
// headers.
message HeaderMutation {
+ message RemoveOnMatch {
+ // A string matcher that will be applied to the header key. If the header key
+ // matches, the header will be removed.
+ type.matcher.v3.StringMatcher key_matcher = 1 [(validate.rules).message = {required: true}];
+ }
+
oneof action {
option (validate.required) = true;
@@ -99,5 +106,8 @@
// Append new header by the specified HeaderValueOption.
core.v3.HeaderValueOption append = 2;
+
+ // Remove the header if the key matches the specified string matcher.
+ RemoveOnMatch remove_on_match = 3;
}
}
envoy/config/core/v3/address.proto:
--- shake256:9bdcea3eb88a11101bd929c0023324fd3f4de83be267d8221eb85c279ff885ed115bc5ba0dfbad50b8bec34ee582181b57556d3c982e3f488bd07282c2a916df envoy/config/core/v3/address.proto
+++ shake256:1a9db550014817a7ab0e397006fefed890a2cf80bf6d895c4d348ae8e4bc84349175ceb206e972fbc9b152908c9ecc65cc91b00a785c04fc7cd5b9c5c7de4284 envoy/config/core/v3/address.proto
@@ -105,9 +105,6 @@
// .. note::
// Setting this parameter requires Envoy to run with the ``CAP_NET_ADMIN`` capability.
//
- // .. note::
- // Currently only used for Listener sockets.
- //
// .. attention::
// Network namespaces are only configurable on Linux. Otherwise, this field has no effect.
string network_namespace_filepath = 7;
envoy/config/core/v3/config_source.proto:
--- shake256:8226bbfb813cffa2b928184a6eeb04043ff9e554c0b097c2b1fb3c607f3c5b873d628dc9a171f594af63315d155845e947db3a4790c636975e51ed0b8a629579 envoy/config/core/v3/config_source.proto
+++ shake256:f3cb7e88d65a8b2d19c1255815c37f61b708887327f5b3a58fe5b6bf8c0c1607d12b7bcabf156947db5c9108c041599af9f6a25ac22d0225326cc1c4418a343d envoy/config/core/v3/config_source.proto
@@ -276,7 +276,8 @@
// to be supplied.
bool apply_default_config_without_warming = 3;
- // A set of permitted extension type URLs. Extension configuration updates are rejected
- // if they do not match any type URL in the set.
+ // A set of permitted extension type URLs for the type encoded inside of the
+ // :ref:`TypedExtensionConfig <envoy_v3_api_msg_config.core.v3.TypedExtensionConfig>`. Extension
+ // configuration updates are rejected if they do not match any type URL in the set.
repeated string type_urls = 4 [(validate.rules).repeated = {min_items: 1}];
}
envoy/config/core/v3/grpc_service.proto:
--- shake256:d2f80ca130b2ec005d4200041e4df633e76c95e48f55a7c431ebdcc68fac696c44c030d03b7e46852bf16e474662ecf75a3889c66769ccbb8cec0676a54c27ba envoy/config/core/v3/grpc_service.proto
+++ shake256:8c73bfaf4c0aa348a088e9c432b16703dca8ebd6e0227c4301076f7c64cb1af98bd0a1e395b05f2d4c311d10f57baf851dba7c19dca1e5e447dee7b4b6f9fd81 envoy/config/core/v3/grpc_service.proto
@@ -64,7 +64,7 @@
bool skip_envoy_headers = 5;
}
- // [#next-free-field: 9]
+ // [#next-free-field: 11]
message GoogleGrpc {
option (udpa.annotations.versioning).previous_message_type =
"envoy.api.v2.core.GrpcService.GoogleGrpc";
@@ -249,16 +249,31 @@
}
// The target URI when using the `Google C++ gRPC client
- // <https://github.com/grpc/grpc>`_. SSL credentials will be supplied in
- // :ref:`channel_credentials <envoy_v3_api_field_config.core.v3.GrpcService.GoogleGrpc.channel_credentials>`.
+ // <https://github.com/grpc/grpc>`_.
string target_uri = 1 [(validate.rules).string = {min_len: 1}];
+ // The channel credentials to use. See `channel credentials
+ // <https://grpc.io/docs/guides/auth.html#credential-types>`_.
+ // Ignored if ``channel_credentials_plugin`` is set.
ChannelCredentials channel_credentials = 2;
- // A set of call credentials that can be composed with `channel credentials
+ // A list of channel credentials plugins.
+ // The data plane will iterate over the list in order and stop at the first credential type
+ // that it supports. This provides a mechanism for starting to use new credential types that
+ // are not yet supported by all data planes.
+ // [#not-implemented-hide:]
+ repeated google.protobuf.Any channel_credentials_plugin = 9;
+
+ // The call credentials to use. See `channel credentials
// <https://grpc.io/docs/guides/auth.html#credential-types>`_.
+ // Ignored if ``call_credentials_plugin`` is set.
repeated CallCredentials call_credentials = 3;
+ // A list of call credentials plugins. All supported plugins will be used.
+ // Unsupported plugin types will be ignored.
+ // [#not-implemented-hide:]
+ repeated google.protobuf.Any call_credentials_plugin = 10;
+
// The human readable prefix to use when emitting statistics for the gRPC
// service.
//
envoy/config/core/v3/health_check.proto:
--- shake256:e6f9d1ab3b04678a52f9383851a25489155a01b86ff5b7908b82367d9d39373c2376014c0714c54d23e2eb705a9886c2eaf873ba6e2404a3a441a0301125fe17 envoy/config/core/v3/health_check.proto
+++ shake256:6a4880727a18c76c27422fb04451cb0c08cb6acc712b2ba3b3a68c81cb00feb401d2d4f8d666cbaaa787331838d3b8b8a9cf3a0ec609f9cb00c9f97574edae2a envoy/config/core/v3/health_check.proto
@@ -102,7 +102,8 @@
// ``/healthcheck``.
string path = 2 [(validate.rules).string = {min_len: 1 well_known_regex: HTTP_HEADER_VALUE}];
- // [#not-implemented-hide:] HTTP specific payload.
+ // HTTP specific payload to be sent as the request body during health checking.
+ // If specified, the method should support a request body (POST, PUT, PATCH, etc.).
Payload send = 3;
// Specifies a list of HTTP expected responses to match in the first ``response_buffer_size`` bytes of the response body.
@@ -161,7 +162,8 @@
type.matcher.v3.StringMatcher service_name_matcher = 11;
// HTTP Method that will be used for health checking, default is "GET".
- // GET, HEAD, POST, PUT, DELETE, OPTIONS, TRACE, PATCH methods are supported, but making request body is not supported.
+ // GET, HEAD, POST, PUT, DELETE, OPTIONS, TRACE, PATCH methods are supported.
+ // Request body payloads are supported for POST, PUT, PATCH, and OPTIONS methods only.
// CONNECT method is disallowed because it is not appropriate for health check request.
// If a non-200 response is expected by the method, it needs to be set in :ref:`expected_statuses <envoy_v3_api_field_config.core.v3.HealthCheck.HttpHealthCheck.expected_statuses>`.
RequestMethod method = 13 [(validate.rules).enum = {defined_only: true not_in: 6}];
envoy/config/core/v3/protocol.proto:
--- shake256:a104e128142e280ddde124ddabbb90593a61c69ed8ffce733194dc23331c9ad15acd54abf9acd8d9135e3ae9412f2c08cc60f0094cf3cd026cd8fc0a5eb3062f envoy/config/core/v3/protocol.proto
+++ shake256:1580679222615a4c489cfd5f311a2ceb66378020ac353ee807f791abe9dc9c4d3994c5ca5ebd8ddf509382e7b6a55c1d3954a03a9917702659ccaaef7acbc5f9 envoy/config/core/v3/protocol.proto
@@ -77,7 +77,7 @@
[(validate.rules).uint32 = {lte: 16777216 gte: 1}];
// Similar to ``initial_stream_window_size``, but for connection-level
- // flow-control. Valid values rage from 1 to 25165824 (24MB, maximum supported by QUICHE) and defaults
+ // flow-control. Valid values range from 1 to 25165824 (24MB, maximum supported by QUICHE) and defaults
// to 25165824 (24 * 1024 * 1024).
//
// .. note::
@@ -111,10 +111,9 @@
// default 600s will be applied.
// For internal corporate network, a long timeout is often fine.
// But for client facing network, 30s is usually a good choice.
- google.protobuf.Duration idle_network_timeout = 8 [(validate.rules).duration = {
- lte {seconds: 600}
- gte {seconds: 1}
- }];
+ // Do not add an upper bound here. A long idle timeout is useful for maintaining warm connections at non-front-line proxy for low QPS services."
+ google.protobuf.Duration idle_network_timeout = 8
+ [(validate.rules).duration = {gte {seconds: 1}}];
// Maximum packet length for QUIC connections. It refers to the largest size of a QUIC packet that can be transmitted over the connection.
// If not specified, one of the `default values in QUICHE <https://github.com/google/quiche/blob/main/quiche/quic/core/quic_constants.h>`_ is used.
@@ -503,7 +502,7 @@
// `Maximum concurrent streams <https://httpwg.org/specs/rfc7540.html#rfc.section.5.1.2>`_
// allowed for peer on one HTTP/2 connection. Valid values range from 1 to 2147483647 (2^31 - 1)
- // and defaults to 2147483647.
+ // and defaults to 1024 for safety and should be sufficient for most use cases.
//
// For upstream connections, this also limits how many streams Envoy will initiate concurrently
// on a single connection. If the limit is reached, Envoy may queue requests or establish
@@ -517,8 +516,8 @@
// `Initial stream-level flow-control window
// <https://httpwg.org/specs/rfc7540.html#rfc.section.6.9.2>`_ size. Valid values range from 65535
- // (2^16 - 1, HTTP/2 default) to 2147483647 (2^31 - 1, HTTP/2 maximum) and defaults to 268435456
- // (256 * 1024 * 1024).
+ // (2^16 - 1, HTTP/2 default) to 2147483647 (2^31 - 1, HTTP/2 maximum) and defaults to
+ // 16MiB (16 * 1024 * 1024).
//
// .. note::
//
@@ -532,7 +531,7 @@
[(validate.rules).uint32 = {lte: 2147483647 gte: 65535}];
// Similar to ``initial_stream_window_size``, but for connection-level flow-control
- // window. Currently, this has the same minimum/maximum/default as ``initial_stream_window_size``.
+ // window. The default is 24MiB (24 * 1024 * 1024).
google.protobuf.UInt32Value initial_connection_window_size = 4
[(validate.rules).uint32 = {lte: 2147483647 gte: 65535}];
envoy/config/core/v3/proxy_protocol.proto:
--- shake256:5288e856c742176528181b2cc2feb6432f4384e24e600fcd5191dbc7180b7a939e8ec2417d2f8124852ba0b03110217013a847cb3e8b5343eeecd198677b9345 envoy/config/core/v3/proxy_protocol.proto
+++ shake256:228b44c84ee8b6c130b4a061960ac1fd5a222d903f100caeed5206441656d9692892a7c5c29a604df6c0c4130560fc8766a377cbdf9bd2f7fc804cc9eddf09af envoy/config/core/v3/proxy_protocol.proto
@@ -2,6 +2,8 @@
package envoy.config.core.v3;
+import "envoy/config/core/v3/substitution_format_string.proto";
+
import "udpa/annotations/status.proto";
import "validate/validate.proto";
@@ -37,8 +39,27 @@
// The type of the TLV. Must be a uint8 (0-255) as per the Proxy Protocol v2 specification.
uint32 type = 1 [(validate.rules).uint32 = {lt: 256}];
- // The value of the TLV. Must be at least one byte long.
- bytes value = 2 [(validate.rules).bytes = {min_len: 1}];
+ // The static value of the TLV.
+ // Only one of ``value`` or ``format_string`` may be set.
+ bytes value = 2;
+
+ // Uses the :ref:`format string <config_access_log_format_strings>` to dynamically
+ // populate the TLV value from stream information. This allows dynamic values
+ // such as metadata, filter state, or other stream properties to be included in
+ // the TLV.
+ //
+ // For example:
+ //
+ // .. code-block:: yaml
+ //
+ // type: 0xF0
+ // format_string:
+ // text_format_source:
+ // inline_string: "%DYNAMIC_METADATA(envoy.filters.network:key)%"
+ //
+ // The formatted string will be used directly as the TLV value.
+ // Only one of ``value`` or ``format_string`` may be set.
+ SubstitutionFormatString format_string = 3;
}
message ProxyProtocolConfig {
envoy/config/endpoint/v3/load_report.proto:
--- shake256:ab22092143f11a2bb940fd0a240fc9730e3441ce6c9fa0b9655877da59372d2fc1c3fa36aa9f9b68f7659b27ac66d617255d3810f869b5bba5ab41ab4107792b envoy/config/endpoint/v3/load_report.proto
+++ shake256:37544485154fc1be701779188515c219db0415ee12110f40fd75e51cf5ac61275914ac75f9c349c711215d45c2a1a525cd589738d1f2d119aa56ee3aec2a234a envoy/config/endpoint/v3/load_report.proto
@@ -38,7 +38,8 @@
// locality.
uint64 total_successful_requests = 2;
- // The total number of unfinished requests
+ // The total number of unfinished requests. A request can be an HTTP request
+ // or a TCP connection for a TCP connection pool.
uint64 total_requests_in_progress = 3;
// The total number of requests that failed due to errors at the endpoint,
@@ -47,7 +48,8 @@
// The total number of requests that were issued by this Envoy since
// the last report. This information is aggregated over all the
- // upstream endpoints in the locality.
+ // upstream endpoints in the locality. A request can be an HTTP request
+ // or a TCP connection for a TCP connection pool.
uint64 total_issued_requests = 8;
// The total number of connections in an established state at the time of the
envoy/config/listener/v3/listener_components.proto:
--- shake256:898dcb73232fc67a2cdd1d61309a81f12c1da724cc3e5c9877e2a1c8f8c4b9f6d170383f7dff706ffc19dca6e09c9cd558136dc75a9cf507c7e1d341c497a293 envoy/config/listener/v3/listener_components.proto
+++ shake256:1f3f879c54b1a2d224518fd83a0102d0d2773bc6ec191cc330efa19ebbfed6040cbfa7cafce5ef133402fd1455954aa17c7938f765340f34603adda028d14a82 envoy/config/listener/v3/listener_components.proto
@@ -233,7 +233,7 @@
google.protobuf.BoolValue use_proxy_proto = 4
[deprecated = true, (envoy.annotations.deprecated_at_minor_version) = "3.0"];
- // [#not-implemented-hide:] filter chain metadata.
+ // Filter chain metadata.
core.v3.Metadata metadata = 5;
// Optional custom transport socket implementation to use for downstream connections.
envoy/config/metrics/v3/stats.proto:
--- shake256:a8554de3c086b2484470c8e4034fdc0e830708d90a38e319b28f9cacbc5cd39328f36abee0ef4d7cc378be2cde369b0ec69925e6836eb6c23c3b82fd4dd3c783 envoy/config/metrics/v3/stats.proto
+++ shake256:0ab7a51526349d17204ee9d8ea113d3786daa4820362b5f6343919aab1ce08622c5831302b043b080ef74ad38101100f25f807b50ab19b8fa4f825fac23d292b envoy/config/metrics/v3/stats.proto
@@ -298,10 +298,12 @@
// Each value is the upper bound of a bucket. Each bucket must be greater than 0 and unique.
// The order of the buckets does not matter.
repeated double buckets = 2 [(validate.rules).repeated = {
- min_items: 1
unique: true
items {double {gt: 0.0}}
}];
+
+ // Initial number of bins for the ``circllhist`` thread local histogram per time series. Default value is 100.
+ google.protobuf.UInt32Value bins = 3 [(validate.rules).uint32 = {lte: 46082 gt: 0}];
}
// Stats configuration proto schema for built-in ``envoy.stat_sinks.statsd`` sink. This sink does not support
envoy/config/overload/v3/overload.proto:
--- shake256:b1b80519ed10cd644f155c72798d6d0f8a55d4657fb61d2de8aab8c821865aa7b60be401f52e6b04157c806772428ea368d36791ded9328940fe980b70e42f8f envoy/config/overload/v3/overload.proto
+++ shake256:e2127d379ca4b3095227bfca37afce4626c1f19c0f12fb5750cb96e102ad44a4b69ef87a9ffe1871025355f89b4c2a4ac2c099ff53da65237672a923c2625006 envoy/config/overload/v3/overload.proto
@@ -109,6 +109,13 @@
// :ref:`HttpConnectionManager.common_http_protocol_options.max_connection_duration
// <envoy_v3_api_field_config.core.v3.HttpProtocolOptions.max_connection_duration>`.
HTTP_DOWNSTREAM_CONNECTION_MAX = 4;
+
+ // Adjusts the timeout for the downstream codec to flush an ended stream.
+ // This affects the value of :ref:`RouteAction.flush_timeout
+ // <envoy_v3_api_field_config.route.v3.RouteAction.flush_timeout>` and
+ // :ref:`HttpConnectionManager.stream_flush_timeout
+ // <envoy_v3_api_field_extensions.filters.network.http_connection_manager.v3.HttpConnectionManager.stream_flush_timeout>`
+ HTTP_DOWNSTREAM_STREAM_FLUSH = 5;
}
message ScaleTimer {
@@ -134,9 +141,16 @@
option (udpa.annotations.versioning).previous_message_type =
"envoy.config.overload.v2alpha.OverloadAction";
- // The name of the overload action. This is just a well-known string that listeners can
- // use for registering callbacks. Custom overload actions should be named using reverse
- // DNS to ensure uniqueness.
+ // The name of the overload action. This is just a well-known string that
+ // listeners can use for registering callbacks.
+ // Valid known overload actions include:
+ // - envoy.overload_actions.stop_accepting_requests
+ // - envoy.overload_actions.disable_http_keepalive
+ // - envoy.overload_actions.stop_accepting_connections
+ // - envoy.overload_actions.reject_incoming_connections
+ // - envoy.overload_actions.shrink_heap
+ // - envoy.overload_actions.reduce_timeouts
+ // - envoy.overload_actions.reset_high_memory_stream
string name = 1 [(validate.rules).string = {min_len: 1}];
// A set of triggers for this action. The state of the action is the maximum
@@ -148,7 +162,7 @@
// in this list.
repeated Trigger triggers = 2 [(validate.rules).repeated = {min_items: 1}];
- // Configuration for the action being instantiated.
+ // Configuration for the action being instantiated if applicable.
google.protobuf.Any typed_config = 3;
}
envoy/config/route/v3/route_components.proto:
--- shake256:18f31908af63584b6662711f451e843f2b2c3b70b9270820704e4e73979af564b12c00cf59fbd38498485747c9b95ecbcf7714a24b2d379d897d7f37dcc2d733 envoy/config/route/v3/route_components.proto
+++ shake256:4e306b1098b447470219676e0a3cc95a4819d2a694fd58ec4349b803bd907396fddca5e3edad7a8ce919d818a27a84e9e68cc0a2a0a5fe1ce547418b30e49132 envoy/config/route/v3/route_components.proto
@@ -2,6 +2,7 @@
package envoy.config.route.v3;
+import "envoy/config/common/mutation_rules/v3/mutation_rules.proto";
import "envoy/config/core/v3/base.proto";
import "envoy/config/core/v3/extension.proto";
import "envoy/config/core/v3/proxy_protocol.proto";
@@ -41,7 +42,7 @@
// host header. This allows a single listener to service multiple top level domain path trees. Once
// a virtual host is selected based on the domain, the routes are processed in order to see which
// upstream cluster to route to or whether to perform a redirect.
-// [#next-free-field: 25]
+// [#next-free-field: 26]
message VirtualHost {
option (udpa.annotations.versioning).previous_message_type = "envoy.api.v2.route.VirtualHost";
@@ -78,7 +79,7 @@
// .. note::
//
// The wildcard will not match the empty string.
- // e.g. ``*-bar.foo.com`` will match ``baz-bar.foo.com`` but not ``-bar.foo.com``.
+ // For example, ``*-bar.foo.com`` will match ``baz-bar.foo.com`` but not ``-bar.foo.com``.
// The longest wildcards match first.
// Only a single virtual host in the entire route configuration can match on ``*``. A domain
// must be unique across all virtual hosts or the config will fail to load.
@@ -155,7 +156,7 @@
// This field can be used to provide virtual host level per filter config. The key should match the
// :ref:`filter config name
// <envoy_v3_api_field_extensions.filters.network.http_connection_manager.v3.HttpFilter.name>`.
- // See :ref:`Http filter route specific config <arch_overview_http_filters_per_filter_config>`
+ // See :ref:`HTTP filter route-specific config <arch_overview_http_filters_per_filter_config>`
// for details.
// [#comment: An entry's value may be wrapped in a
// :ref:`FilterConfig<envoy_v3_api_msg_config.route.v3.FilterConfig>`
@@ -166,7 +167,10 @@
// <config_http_filters_router_x-envoy-attempt-count>` header should be included
// in the upstream request. Setting this option will cause it to override any existing header
// value, so in the case of two Envoys on the request path with this option enabled, the upstream
- // will see the attempt count as perceived by the second Envoy. Defaults to false.
+ // will see the attempt count as perceived by the second Envoy.
+ //
+ // Defaults to ``false``.
+ //
// This header is unaffected by the
// :ref:`suppress_envoy_headers
// <envoy_v3_api_field_extensions.filters.http.router.v3.Router.suppress_envoy_headers>` flag.
@@ -178,7 +182,10 @@
// <config_http_filters_router_x-envoy-attempt-count>` header should be included
// in the downstream response. Setting this option will cause the router to override any existing header
// value, so in the case of two Envoys on the request path with this option enabled, the downstream
- // will see the attempt count as perceived by the Envoy closest upstream from itself. Defaults to false.
+ // will see the attempt count as perceived by the Envoy closest upstream from itself.
+ //
+ // Defaults to ``false``.
+ //
// This header is unaffected by the
// :ref:`suppress_envoy_headers
// <envoy_v3_api_field_extensions.filters.http.router.v3.Router.suppress_envoy_headers>` flag.
@@ -186,30 +193,57 @@
// Indicates the retry policy for all routes in this virtual host. Note that setting a
// route level entry will take precedence over this config and it'll be treated
- // independently (e.g.: values are not inherited).
+ // independently (e.g., values are not inherited).
RetryPolicy retry_policy = 16;
// [#not-implemented-hide:]
// Specifies the configuration for retry policy extension. Note that setting a route level entry
- // will take precedence over this config and it'll be treated independently (e.g.: values are not
+ // will take precedence over this config and it'll be treated independently (e.g., values are not
// inherited). :ref:`Retry policy <envoy_v3_api_field_config.route.v3.VirtualHost.retry_policy>` should not be
// set if this field is used.
google.protobuf.Any retry_policy_typed_config = 20;
// Indicates the hedge policy for all routes in this virtual host. Note that setting a
// route level entry will take precedence over this config and it'll be treated
- // independently (e.g.: values are not inherited).
+ // independently (e.g., values are not inherited).
HedgePolicy hedge_policy = 17;
// Decides whether to include the :ref:`x-envoy-is-timeout-retry <config_http_filters_router_x-envoy-is-timeout-retry>`
- // request header in retries initiated by per try timeouts.
+ // request header in retries initiated by per-try timeouts.
bool include_is_timeout_retry_header = 23;
- // The maximum bytes which will be buffered for retries and shadowing.
- // If set and a route-specific limit is not set, the bytes actually buffered will be the minimum
- // value of this and the listener per_connection_buffer_limit_bytes.
- google.protobuf.UInt32Value per_request_buffer_limit_bytes = 18;
+ // The maximum bytes which will be buffered for retries and shadowing. If set, the bytes actually buffered will be
+ // the minimum value of this and the listener ``per_connection_buffer_limit_bytes``.
+ //
+ // .. attention::
+ //
+ // This field has been deprecated. Please use :ref:`request_body_buffer_limit
+ // <envoy_v3_api_field_config.route.v3.VirtualHost.request_body_buffer_limit>` instead.
+ // Only one of ``per_request_buffer_limit_bytes`` and ``request_body_buffer_limit`` could be set.
+ google.protobuf.UInt32Value per_request_buffer_limit_bytes = 18
+ [deprecated = true, (envoy.annotations.deprecated_at_minor_version) = "3.0"];
+ // The maximum bytes which will be buffered for request bodies to support large request body
+ // buffering beyond the ``per_connection_buffer_limit_bytes``.
+ //
+ // This limit is specifically for the request body buffering and allows buffering larger payloads while maintaining
+ // flow control.
+ //
+ // Buffer limit precedence (from highest to lowest priority):
+ //
+ // 1. If ``request_body_buffer_limit`` is set, then ``request_body_buffer_limit`` will be used.
+ // 2. If :ref:`per_request_buffer_limit_bytes <envoy_v3_api_field_config.route.v3.VirtualHost.per_request_buffer_limit_bytes>`
+ // is set but ``request_body_buffer_limit`` is not, then ``min(per_request_buffer_limit_bytes, per_connection_buffer_limit_bytes)``
+ // will be used.
+ // 3. If neither is set, then ``per_connection_buffer_limit_bytes`` will be used.
+ //
+ // For flow control chunk sizes, ``min(per_connection_buffer_limit_bytes, 16KB)`` will be used.
+ //
+ // Only one of :ref:`per_request_buffer_limit_bytes <envoy_v3_api_field_config.route.v3.VirtualHost.per_request_buffer_limit_bytes>`
+ // and ``request_body_buffer_limit`` could be set.
+ google.protobuf.UInt64Value request_body_buffer_limit = 25
+ [(validate.rules).message = {required: false}];
+
// Specify a set of default request mirroring policies for every route under this virtual host.
// It takes precedence over the route config mirror policy entirely.
// That is, policies are not merged, the most specific non-empty one becomes the mirror policies.
@@ -244,7 +278,7 @@
//
// Envoy supports routing on HTTP method via :ref:`header matching
// <envoy_v3_api_msg_config.route.v3.HeaderMatcher>`.
-// [#next-free-field: 20]
+// [#next-free-field: 21]
message Route {
option (udpa.annotations.versioning).previous_message_type = "envoy.api.v2.route.Route";
@@ -297,7 +331,7 @@
// This field can be used to provide route specific per filter config. The key should match the
// :ref:`filter config name
// <envoy_v3_api_field_extensions.filters.network.http_connection_manager.v3.HttpFilter.name>`.
- // See :ref:`Http filter route specific config <arch_overview_http_filters_per_filter_config>`
+ // See :ref:`HTTP filter route-specific config <arch_overview_http_filters_per_filter_config>`
// for details.
// [#comment: An entry's value may be wrapped in a
// :ref:`FilterConfig<envoy_v3_api_msg_config.route.v3.FilterConfig>`
@@ -341,7 +375,14 @@
// The maximum bytes which will be buffered for retries and shadowing.
// If set, the bytes actually buffered will be the minimum value of this and the
// listener per_connection_buffer_limit_bytes.
- google.protobuf.UInt32Value per_request_buffer_limit_bytes = 16;
+ //
+ // .. attention::
+ //
+ // This field has been deprecated. Please use :ref:`request_body_buffer_limit
+ // <envoy_v3_api_field_config.route.v3.Route.request_body_buffer_limit>` instead.
+ // Only one of ``per_request_buffer_limit_bytes`` and ``request_body_buffer_limit`` may be set.
+ google.protobuf.UInt32Value per_request_buffer_limit_bytes = 16
+ [deprecated = true, (envoy.annotations.deprecated_at_minor_version) = "3.0"];
// The human readable prefix to use when emitting statistics for this endpoint.
// The statistics are rooted at vhost.<virtual host name>.route.<stat_prefix>.
@@ -355,8 +396,27 @@
//
// We do not recommend setting up a stat prefix for
// every application endpoint. This is both not easily maintainable and
- // statistics use a non-trivial amount of memory(approximately 1KiB per route).
+ // statistics use a non-trivial amount of memory (approximately 1KiB per route).
string stat_prefix = 19;
+
+ // The maximum bytes which will be buffered for request bodies to support large request body
+ // buffering beyond the ``per_connection_buffer_limit_bytes``.
+ //
+ // This limit is specifically for the request body buffering and allows buffering larger payloads while maintaining
+ // flow control.
+ //
+ // Buffer limit precedence (from highest to lowest priority):
+ //
+ // 1. If ``request_body_buffer_limit`` is set: use ``request_body_buffer_limit``
+ // 2. If :ref:`per_request_buffer_limit_bytes <envoy_v3_api_field_config.route.v3.Route.per_request_buffer_limit_bytes>`
+ // is set but ``request_body_buffer_limit`` is not: use ``min(per_request_buffer_limit_bytes, per_connection_buffer_limit_bytes)``
+ // 3. If neither is set: use ``per_connection_buffer_limit_bytes``
+ //
+ // For flow control chunk sizes, use ``min(per_connection_buffer_limit_bytes, 16KB)``.
+ //
+ // Only one of :ref:`per_request_buffer_limit_bytes <envoy_v3_api_field_config.route.v3.Route.per_request_buffer_limit_bytes>`
+ // and ``request_body_buffer_limit`` may be set.
+ google.protobuf.UInt64Value request_body_buffer_limit = 20;
}
// Compared to the :ref:`cluster <envoy_v3_api_field_config.route.v3.RouteAction.cluster>` field that specifies a
@@ -365,6 +425,7 @@
// 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 the
// weights.
+// [#next-free-field: 6]
message WeightedCluster {
option (udpa.annotations.versioning).previous_message_type = "envoy.api.v2.route.WeightedCluster";
@@ -452,7 +513,7 @@
// This field can be used to provide weighted cluster specific per filter config. The key should match the
// :ref:`filter config name
// <envoy_v3_api_field_extensions.filters.network.http_connection_manager.v3.HttpFilter.name>`.
- // See :ref:`Http filter route specific config <arch_overview_http_filters_per_filter_config>`
+ // See :ref:`HTTP filter route-specific config <arch_overview_http_filters_per_filter_config>`
// for details.
// [#comment: An entry's value may be wrapped in a
// :ref:`FilterConfig<envoy_v3_api_msg_config.route.v3.FilterConfig>`
@@ -495,6 +556,10 @@
// the process for the consistency. And the value is a unsigned number between 0 and UINT64_MAX.
string header_name = 4
[(validate.rules).string = {well_known_regex: HTTP_HEADER_NAME strict: false}];
+
+ // When set to true, the hash policies will be used to generate the random value for weighted cluster selection.
+ // This could ensure consistent cluster picking across multiple proxy levels for weighted traffic.
+ google.protobuf.BoolValue use_hash_policy = 5;
}
}
@@ -571,7 +636,7 @@
//
// [#next-major-version: In the v3 API we should redo how path specification works such
// that we utilize StringMatcher, and additionally have consistent options around whether we
- // strip query strings, do a case sensitive match, etc. In the interim it will be too disruptive
+ // strip query strings, do a case-sensitive match, etc. In the interim it will be too disruptive
// to deprecate the existing options. We should even consider whether we want to do away with
// path_specifier entirely and just rely on a set of header matchers which can already match
// on :path, etc. The issue with that is it is unclear how to generically deal with query string
@@ -603,7 +668,7 @@
core.v3.TypedExtensionConfig path_match_policy = 15;
}
- // Indicates that prefix/path matching should be case sensitive. The default
+ // Indicates that prefix/path matching should be case-sensitive. The default
// is true. Ignored for safe_regex matching.
google.protobuf.BoolValue case_sensitive = 4;
@@ -643,14 +708,14 @@
//
// If query parameters are used to pass request message fields when
// `grpc_json_transcoder <https://www.envoyproxy.io/docs/envoy/latest/configuration/http/http_filters/grpc_json_transcoder_filter>`_
- // is used, the transcoded message fields maybe different. The query parameters are
- // url encoded, but the message fields are not. For example, if a query
+ // is used, the transcoded message fields may be different. The query parameters are
+ // URL-encoded, but the message fields are not. For example, if a query
// parameter is "foo%20bar", the message field will be "foo bar".
repeated QueryParameterMatcher query_parameters = 7;
// If specified, only gRPC requests will be matched. The router will check
- // that the content-type header has a application/grpc or one of the various
- // application/grpc+ values.
+ // that the ``Content-Type`` header has ``application/grpc`` or one of the various
+ // ``application/grpc+`` values.
GrpcRouteMatchOptions grpc = 8;
// If specified, the client tls context will be matched against the defined
@@ -736,11 +801,11 @@
google.protobuf.BoolValue allow_private_network_access = 12;
// Specifies if preflight requests not matching the configured allowed origin should be forwarded
- // to the upstream. Default is true.
+ // to the upstream. Default is ``true``.
google.protobuf.BoolValue forward_not_matching_preflights = 13;
}
-// [#next-free-field: 42]
+// [#next-free-field: 43]
message RouteAction {
option (udpa.annotations.versioning).previous_message_type = "envoy.api.v2.route.RouteAction";
@@ -779,8 +844,8 @@
//
// .. note::
//
- // Shadowing doesn't support Http CONNECT and upgrades.
- // [#next-free-field: 7]
+ // Shadowing doesn't support HTTP CONNECT and upgrades.
+ // [#next-free-field: 9]
message RequestMirrorPolicy {
option (udpa.annotations.versioning).previous_message_type =
"envoy.api.v2.route.RouteAction.RequestMirrorPolicy";
@@ -830,8 +895,24 @@
// is disabled.
google.protobuf.BoolValue trace_sampled = 4;
- // Disables appending the ``-shadow`` suffix to the shadowed ``Host`` header. Defaults to ``false``.
+ // Disables appending the ``-shadow`` suffix to the shadowed ``Host`` header.
+ //
+ // Defaults to ``false``.
bool disable_shadow_host_suffix_append = 6;
+
+ // Specifies a list of header mutations that should be applied to each mirrored request.
+ // Header mutations are applied in the order they are specified. For more information, including
+ // details on header value syntax, see the documentation on :ref:`custom request headers
+ // <config_http_conn_man_headers_custom_request_headers>`.
+ repeated common.mutation_rules.v3.HeaderMutation request_headers_mutations = 7
+ [(validate.rules).repeated = {max_items: 1000}];
+
+ // Indicates that during mirroring, the host header will be swapped with this value.
+ // :ref:`disable_shadow_host_suffix_append
+ // <envoy_v3_api_field_config.route.v3.RouteAction.RequestMirrorPolicy.disable_shadow_host_suffix_append>`
+ // is implicitly enabled if this field is set.
+ string host_rewrite_literal = 8
+ [(validate.rules).string = {well_known_regex: HTTP_HEADER_VALUE strict: false}];
}
// Specifies the route's hashing policy if the upstream cluster uses a hashing :ref:`load balancer
@@ -993,13 +1074,15 @@
bool allow_post = 2;
}
- // The case-insensitive name of this upgrade, e.g. "websocket".
+ // The case-insensitive name of this upgrade, for example, "websocket".
// For each upgrade type present in upgrade_configs, requests with
// Upgrade: [upgrade_type] will be proxied upstream.
string upgrade_type = 1
[(validate.rules).string = {min_len: 1 well_known_regex: HTTP_HEADER_VALUE strict: false}];
- // Determines if upgrades are available on this route. Defaults to true.
+ // Determines if upgrades are available on this route.
+ //
+ // Defaults to ``true``.
google.protobuf.BoolValue enabled = 2;
// Configuration for sending data upstream as a raw data payload. This is used for
@@ -1265,8 +1348,28 @@
// If the :ref:`overload action <config_overload_manager_overload_actions>` "envoy.overload_actions.reduce_timeouts"
// is configured, this timeout is scaled according to the value for
// :ref:`HTTP_DOWNSTREAM_STREAM_IDLE <envoy_v3_api_enum_value_config.overload.v3.ScaleTimersOverloadActionConfig.TimerType.HTTP_DOWNSTREAM_STREAM_IDLE>`.
+ //
+ // This timeout may also be used in place of ``flush_timeout`` in very specific cases. See the
+ // documentation for ``flush_timeout`` for more details.
google.protobuf.Duration idle_timeout = 24;
+ // Specifies the codec stream flush timeout for the route.
+ //
+ // If not specified, the first preference is the global :ref:`stream_flush_timeout
+ // <envoy_v3_api_field_extensions.filters.network.http_connection_manager.v3.HttpConnectionManager.stream_flush_timeout>`,
+ // but only if explicitly configured.
+ //
+ // If neither the explicit HCM-wide flush timeout nor this route-specific flush timeout is configured,
+ // the route's stream idle timeout is reused for this timeout. This is for
+ // backwards compatibility since both behaviors were historically controlled by the one timeout.
+ //
+ // If the route also does not have an idle timeout configured, the global :ref:`stream_idle_timeout
+ // <envoy_v3_api_field_extensions.filters.network.http_connection_manager.v3.HttpConnectionManager.stream_idle_timeout>`. used, again
+ // for backwards compatibility. That timeout defaults to 5 minutes.
+ //
+ // A value of 0 via any of the above paths will completely disable the timeout for a given route.
+ google.protobuf.Duration flush_timeout = 42;
+
// Specifies how to send request over TLS early data.
// If absent, allows `safe HTTP requests <https://www.rfc-editor.org/rfc/rfc7231#section-4.2.1>`_ to be sent on early data.
// [#extension-category: envoy.route.early_data_policy]
@@ -1274,13 +1377,13 @@
// Indicates that the route has a retry policy. Note that if this is set,
// it'll take precedence over the virtual host level retry policy entirely
- // (e.g.: policies are not merged, most internal one becomes the enforced policy).
+ // (e.g., policies are not merged, the most internal one becomes the enforced policy).
RetryPolicy retry_policy = 9;
// [#not-implemented-hide:]
// Specifies the configuration for retry policy extension. Note that if this is set, it'll take
- // precedence over the virtual host level retry policy entirely (e.g.: policies are not merged,
- // most internal one becomes the enforced policy). :ref:`Retry policy <envoy_v3_api_field_config.route.v3.VirtualHost.retry_policy>`
+ // precedence over the virtual host level retry policy entirely (e.g., policies are not merged,
+ // the most internal one becomes the enforced policy). :ref:`Retry policy <envoy_v3_api_field_config.route.v3.VirtualHost.retry_policy>`
// should not be set if this field is used.
google.protobuf.Any retry_policy_typed_config = 33;
@@ -1301,7 +1404,9 @@
// :ref:`rate_limits <envoy_v3_api_field_config.route.v3.VirtualHost.rate_limits>` are not applied to the
// request.
//
- // This field is deprecated. Please use :ref:`vh_rate_limits <envoy_v3_api_field_extensions.filters.http.ratelimit.v3.RateLimitPerRoute.vh_rate_limits>`
+ // .. attention::
+ //
+ // This field is deprecated. Please use :ref:`vh_rate_limits <envoy_v3_api_field_extensions.filters.http.ratelimit.v3.RateLimitPerRoute.vh_rate_limits>`
google.protobuf.BoolValue include_vh_rate_limits = 14
[deprecated = true, (envoy.annotations.deprecated_at_minor_version) = "3.0"];
@@ -1395,7 +1500,7 @@
// Indicates that the route has a hedge policy. Note that if this is set,
// it'll take precedence over the virtual host level hedge policy entirely
- // (e.g.: policies are not merged, most internal one becomes the enforced policy).
+ // (e.g., policies are not merged, the most internal one becomes the enforced policy).
HedgePolicy hedge_policy = 27;
// Specifies the maximum stream duration for this route.
@@ -1529,7 +1634,9 @@
// Specifies the maximum back off interval that Envoy will allow. If a reset
// header contains an interval longer than this then it will be discarded and
- // the next header will be tried. Defaults to 300 seconds.
+ // the next header will be tried.
+ //
+ // Defaults to 300 seconds.
google.protobuf.Duration max_interval = 2 [(validate.rules).duration = {gt {}}];
}
@@ -1558,7 +1665,7 @@
google.protobuf.Duration per_try_timeout = 3;
// Specifies an upstream idle timeout per retry attempt (including the initial attempt). This
- // parameter is optional and if absent there is no per try idle timeout. The semantics of the per
+ // parameter is optional and if absent there is no per-try idle timeout. The semantics of the per-
// try idle timeout are similar to the
// :ref:`route idle timeout <envoy_v3_api_field_config.route.v3.RouteAction.timeout>` and
// :ref:`stream idle timeout
@@ -1633,12 +1740,14 @@
// Specifies the number of initial requests that should be sent upstream.
// Must be at least 1.
+ //
// Defaults to 1.
// [#not-implemented-hide:]
google.protobuf.UInt32Value initial_requests = 1 [(validate.rules).uint32 = {gte: 1}];
// Specifies a probability that an additional upstream request should be sent
// on top of what is specified by initial_requests.
+ //
// Defaults to 0.
// [#not-implemented-hide:]
type.v3.FractionalPercent additional_request_chance = 2;
@@ -1648,14 +1757,16 @@
// The first request to complete successfully will be the one returned to the caller.
//
// * At any time, a successful response (i.e. not triggering any of the retry-on conditions) would be returned to the client.
- // * Before per-try timeout, an error response (per retry-on conditions) would be retried immediately or returned ot the client
+ // * Before per-try timeout, an error response (per retry-on conditions) would be retried immediately or returned to the client
// if there are no more retries left.
// * After per-try timeout, an error response would be discarded, as a retry in the form of a hedged request is already in progress.
//
- // Note: For this to have effect, you must have a :ref:`RetryPolicy <envoy_v3_api_msg_config.route.v3.RetryPolicy>` that retries at least
- // one error code and specifies a maximum number of retries.
+ // .. note::
//
- // Defaults to false.
+ // For this to have effect, you must have a :ref:`RetryPolicy <envoy_v3_api_msg_config.route.v3.RetryPolicy>` that retries at least
+ // one error code and specifies a maximum number of retries.
+ //
+ // Defaults to ``false``.
bool hedge_on_per_try_timeout = 3;
}
@@ -1801,7 +1912,7 @@
// <config_http_filters_router_x-envoy-decorator-operation>` header.
string operation = 1 [(validate.rules).string = {min_len: 1}];
- // Whether the decorated details should be propagated to the other party. The default is true.
+ // Whether the decorated details should be propagated to the other party. The default is ``true``.
google.protobuf.BoolValue propagate = 2;
}
@@ -1966,7 +2077,7 @@
// the value of the descriptor entry for the descriptor_key.
string query_parameter_name = 1 [(validate.rules).string = {min_len: 1}];
- // The key to use when creating the rate limit descriptor entry. his descriptor key will be used to identify the
+ // The key to use when creating the rate limit descriptor entry. This descriptor key will be used to identify the
// rate limit rule in the rate limiting service.
string descriptor_key = 2 [(validate.rules).string = {min_len: 1}];
@@ -2004,14 +2115,18 @@
// ("masked_remote_address", "<masked address from x-forwarded-for>")
message MaskedRemoteAddress {
// Length of prefix mask len for IPv4 (e.g. 0, 32).
+ //
// Defaults to 32 when unset.
+ //
// For example, trusted address from x-forwarded-for is ``192.168.1.1``,
// the descriptor entry is ("masked_remote_address", "192.168.1.1/32");
// if mask len is 24, the descriptor entry is ("masked_remote_address", "192.168.1.0/24").
google.protobuf.UInt32Value v4_prefix_mask_len = 1 [(validate.rules).uint32 = {lte: 32}];
// Length of prefix mask len for IPv6 (e.g. 0, 128).
+ //
// Defaults to 128 when unset.
+ //
// For example, trusted address from x-forwarded-for is ``2001:abcd:ef01:2345:6789:abcd:ef01:234``,
// the descriptor entry is ("masked_remote_address", "2001:abcd:ef01:2345:6789:abcd:ef01:234/128");
// if mask len is 64, the descriptor entry is ("masked_remote_address", "2001:abcd:ef01:2345::/64").
@@ -2044,7 +2159,9 @@
option (udpa.annotations.versioning).previous_message_type =
"envoy.api.v2.route.RateLimit.Action.HeaderValueMatch";
- // The key to use in the descriptor entry. Defaults to ``header_match``.
+ // The key to use in the descriptor entry.
+ //
+ // Defaults to ``header_match``.
string descriptor_key = 4;
// The value to use in the descriptor entry.
@@ -2138,7 +2255,9 @@
//
// ("query_match", "<descriptor_value>")
message QueryParameterValueMatch {
- // The key to use in the descriptor entry. Defaults to ``query_match``.
+ // The key to use in the descriptor entry.
+ //
+ // Defaults to ``query_match``.
string descriptor_key = 4;
// The value to use in the descriptor entry.
@@ -2368,14 +2487,20 @@
// Specifies how the header match will be performed to route the request.
oneof header_match_specifier {
// If specified, header match will be performed based on the value of the header.
- // This field is deprecated. Please use :ref:`string_match <envoy_v3_api_field_config.route.v3.HeaderMatcher.string_match>`.
+ //
+ // .. attention::
+ //
+ // This field is deprecated. Please use :ref:`string_match <envoy_v3_api_field_config.route.v3.HeaderMatcher.string_match>`.
string exact_match = 4
[deprecated = true, (envoy.annotations.deprecated_at_minor_version) = "3.0"];
// If specified, this regex string is a regular expression rule which implies the entire request
// header value must match the regex. The rule will not match if only a subsequence of the
// request header value matches the regex.
- // This field is deprecated. Please use :ref:`string_match <envoy_v3_api_field_config.route.v3.HeaderMatcher.string_match>`.
+ //
+ // .. attention::
+ //
+ // This field is deprecated. Please use :ref:`string_match <envoy_v3_api_field_config.route.v3.HeaderMatcher.string_match>`.
type.matcher.v3.RegexMatcher safe_regex_match = 11
[deprecated = true, (envoy.annotations.deprecated_at_minor_version) = "3.0"];
@@ -2397,8 +2522,14 @@
bool present_match = 7;
// If specified, header match will be performed based on the prefix of the header value.
- // Note: empty prefix is not allowed, please use present_match instead.
- // This field is deprecated. Please use :ref:`string_match <envoy_v3_api_field_config.route.v3.HeaderMatcher.string_match>`.
+ //
+ // .. note::
+ //
+ // Empty prefix is not allowed. Please use ``present_match`` instead.
+ //
+ // .. attention::
+ //
+ // This field is deprecated. Please use :ref:`string_match <envoy_v3_api_field_config.route.v3.HeaderMatcher.string_match>`.
//
// Examples:
//
@@ -2410,9 +2541,15 @@
];
// If specified, header match will be performed based on the suffix of the header value.
- // Note: empty suffix is not allowed, please use present_match instead.
- // This field is deprecated. Please use :ref:`string_match <envoy_v3_api_field_config.route.v3.HeaderMatcher.string_match>`.
//
+ // .. note::
+ //
+ // Empty suffix is not allowed. Please use ``present_match`` instead.
+ //
+ // .. attention::
+ //
+ // This field is deprecated. Please use :ref:`string_match <envoy_v3_api_field_config.route.v3.HeaderMatcher.string_match>`.
+ //
// Examples:
//
// * The suffix ``abcd`` matches the value ``xyzabcd``, but not for ``xyzbcd``.
@@ -2424,9 +2561,15 @@
// If specified, header match will be performed based on whether the header value contains
// the given value or not.
- // Note: empty contains match is not allowed, please use present_match instead.
- // This field is deprecated. Please use :ref:`string_match <envoy_v3_api_field_config.route.v3.HeaderMatcher.string_match>`.
//
+ // .. note::
+ //
+ // Empty contains match is not allowed. Please use ``present_match`` instead.
+ //
+ // .. attention::
+ //
+ // This field is deprecated. Please use :ref:`string_match <envoy_v3_api_field_config.route.v3.HeaderMatcher.string_match>`.
+ //
// Examples:
//
// * The value ``abcd`` matches the value ``xyzabcdpqr``, but not for ``xyzbcdpqr``.
@@ -2440,8 +2583,10 @@
type.matcher.v3.StringMatcher string_match = 13;
}
- // If specified, the match result will be inverted before checking. Defaults to false.
+ // If specified, the match result will be inverted before checking.
//
+ // Defaults to ``false``.
+ //
// Examples:
//
// * The regex ``\d{3}`` does not match the value ``1234``, so it will match when inverted.
@@ -2449,8 +2594,10 @@
bool invert_match = 8;
// If specified, for any header match rule, if the header match rule specified header
- // does not exist, this header value will be treated as empty. Defaults to false.
+ // does not exist, this header value will be treated as empty.
//
+ // Defaults to ``false``.
+ //
// Examples:
//
// * The header match rule specified header "header1" to range match of [0, 10],
@@ -2526,7 +2673,7 @@
repeated core.v3.TypedExtensionConfig predicates = 3;
// Allow internal redirect to follow a target URI with a different scheme than the value of
- // x-forwarded-proto. The default is false.
+ // x-forwarded-proto. The default is ``false``.
bool allow_cross_scheme_redirect = 4;
// Specifies a list of headers, by name, to copy from the internal redirect into the subsequent
envoy/config/trace/v3/zipkin.proto:
--- shake256:c8c66d1ff533c2b66cacc300d07c03d7e3d2fba6f98204a7b19739bb3411d64de521b48fa071bb30b49b74105a0d848e14bd8c8cc6117b8af917fb4c7ff8155d envoy/config/trace/v3/zipkin.proto
+++ shake256:18d90b067529f445ae790449e2f0c58111103fc49d3206e1e6e453e4fde8a1e95038f89fc272ced56ebb1fd2246852cf3afb275885d34c14d2b7185a6d3cb6c5 envoy/config/trace/v3/zipkin.proto
@@ -2,13 +2,14 @@
package envoy.config.trace.v3;
+import "envoy/config/core/v3/http_service.proto";
+
import "google/protobuf/wrappers.proto";
import "envoy/annotations/deprecation.proto";
import "udpa/annotations/migrate.proto";
import "udpa/annotations/status.proto";
import "udpa/annotations/versioning.proto";
-import "validate/validate.proto";
option java_package = "io.envoyproxy.envoy.config.trace.v3";
option java_outer_classname = "ZipkinProto";
@@ -21,10 +22,22 @@
// Configuration for the Zipkin tracer.
// [#extension: envoy.tracers.zipkin]
-// [#next-free-field: 8]
+// [#next-free-field: 10]
message ZipkinConfig {
option (udpa.annotations.versioning).previous_message_type = "envoy.config.trace.v2.ZipkinConfig";
+ // Available trace context options for handling different trace header formats.
+ enum TraceContextOption {
+ // Use B3 headers only (default behavior).
+ USE_B3 = 0;
+
+ // Enable B3 and W3C dual header support:
+ // - For downstream: Extract from B3 headers first, fallback to W3C traceparent if B3 is unavailable.
+ // - For upstream: Inject both B3 and W3C traceparent headers.
+ // When this option is NOT set, only B3 headers are used for both extraction and injection.
+ USE_B3_WITH_W3C_PROPAGATION = 1;
+ }
+
// Available Zipkin collector endpoint versions.
enum CollectorEndpointVersion {
// Zipkin API v1, JSON over HTTP.
@@ -48,11 +61,17 @@
}
// The cluster manager cluster that hosts the Zipkin collectors.
- string collector_cluster = 1 [(validate.rules).string = {min_len: 1}];
+ // Note: This field will be deprecated in future releases in favor of
+ // :ref:`collector_service <envoy_v3_api_field_config.trace.v3.ZipkinConfig.collector_service>`.
+ // Either this field or collector_service must be specified.
+ string collector_cluster = 1;
// The API endpoint of the Zipkin service where the spans will be sent. When
// using a standard Zipkin installation.
- string collector_endpoint = 2 [(validate.rules).string = {min_len: 1}];
+ // Note: This field will be deprecated in future releases in favor of
+ // :ref:`collector_service <envoy_v3_api_field_config.trace.v3.ZipkinConfig.collector_service>`.
+ // Required when using collector_cluster.
+ string collector_endpoint = 2;
// Determines whether a 128bit trace id will be used when creating a new
// trace instance. The default value is false, which will result in a 64 bit trace id being used.
@@ -67,6 +86,8 @@
// Optional hostname to use when sending spans to the collector_cluster. Useful for collectors
// that require a specific hostname. Defaults to :ref:`collector_cluster <envoy_v3_api_field_config.trace.v3.ZipkinConfig.collector_cluster>` above.
+ // Note: This field will be deprecated in future releases in favor of
+ // :ref:`collector_service <envoy_v3_api_field_config.trace.v3.ZipkinConfig.collector_service>`.
string collector_hostname = 6;
// If this is set to true, then Envoy will be treated as an independent hop in trace chain. A complete span pair will be created for a single
@@ -88,4 +109,60 @@
// Please use that ``spawn_upstream_span`` field to control the span creation.
bool split_spans_for_request = 7
[deprecated = true, (envoy.annotations.deprecated_at_minor_version) = "3.0"];
+
+ // Determines which trace context format to use for trace header extraction and propagation.
+ // This controls both downstream request header extraction and upstream request header injection.
+ // Here is the spec for W3C trace headers: https://www.w3.org/TR/trace-context/
+ // The default value is USE_B3 to maintain backward compatibility.
+ TraceContextOption trace_context_option = 8;
+
+ // HTTP service configuration for the Zipkin collector.
+ // When specified, this configuration takes precedence over the legacy fields:
+ // collector_cluster, collector_endpoint, and collector_hostname.
+ // This provides a complete HTTP service configuration including cluster, URI, timeout, and headers.
+ // If not specified, the legacy fields above will be used for backward compatibility.
+ //
+ // Required fields when using collector_service:
+ //
+ // * ``http_uri.cluster`` - Must be specified and non-empty
+ // * ``http_uri.uri`` - Must be specified and non-empty
+ // * ``http_uri.timeout`` - Optional
+ //
+ // Full URI Support with Automatic Parsing:
+ //
+ // The ``uri`` field supports both path-only and full URI formats:
+ //
+ // .. code-block:: yaml
+ //
+ // tracing:
+ // provider:
+ // name: envoy.tracers.zipkin
+ // typed_config:
+ // "@type": type.googleapis.com/envoy.config.trace.v3.ZipkinConfig
+ // collector_service:
+ // http_uri:
+ // # Full URI format - hostname and path are extracted automatically
+ // uri: "https://zipkin-collector.example.com/api/v2/spans"
+ // cluster: zipkin
+ // timeout: 5s
+ // request_headers_to_add:
+ // - header:
+ // key: "X-Custom-Token"
+ // value: "your-custom-token"
+ // - header:
+ // key: "X-Service-ID"
+ // value: "your-service-id"
+ //
+ // URI Parsing Behavior:
+ //
+ // * Full URI: ``"https://zipkin-collector.example.com/api/v2/spans"``
+ //
+ // * Hostname: ``zipkin-collector.example.com`` (sets HTTP ``Host`` header)
+ // * Path: ``/api/v2/spans`` (sets HTTP request path)
+ //
+ // * Path only: ``"/api/v2/spans"``
+ //
+ // * Hostname: Uses cluster name as fallback
+ // * Path: ``/api/v2/spans``
+ core.v3.HttpService collector_service = 9;
}
envoy/data/core/v3/tlv_metadata.proto:
--- shake256:fb22be3c902578521d77ca8769f88ced976e03612efe4299fbde79e62c57e8bbcdc79e27621afe121dc1f22e53eb3e681a3c64090a4ece6e88851d90c464ccf8 envoy/data/core/v3/tlv_metadata.proto
+++ shake256:688fce59f3ffa1578320bdf4c261ed966f3cd468c076768aa0c5ec3b470978850bc3a353fed1e88b648366e52555c0c2c6f85d659ba7438a58d552376ba4c89d envoy/data/core/v3/tlv_metadata.proto
@@ -17,8 +17,7 @@
// Typed metadata for :ref:`Proxy protocol filter <envoy_v3_api_msg_extensions.filters.listener.proxy_protocol.v3.ProxyProtocol>`, that represents a map of TLVs.
// Each entry in the map consists of a key which corresponds to a configured
// :ref:`rule key <envoy_v3_api_field_extensions.filters.listener.proxy_protocol.v3.ProxyProtocol.KeyValuePair.key>` and a value (TLV value in bytes).
- // When runtime flag ``envoy.reloadable_features.use_typed_metadata_in_proxy_protocol_listener`` is enabled,
// :ref:`Proxy protocol filter <envoy_v3_api_msg_extensions.filters.listener.proxy_protocol.v3.ProxyProtocol>`
- // will populate typed metadata and regular metadata. By default filter will populate typed and untyped metadata.
+ // populates both typed and untyped metadata.
map<string, bytes> typed_metadata = 1;
}
envoy/data/tap/v3/http.proto:
--- shake256:c82a19f7ce291208de13a789ed6d20354a890d763d8abf84c61240efa3dd470ec08ad91ad03621c45314c492b5a01d696db1b6f522863109bf779f5060b865bd envoy/data/tap/v3/http.proto
+++ shake256:fb758aa0b36e31dccf24f3a64b1621e97ef5d8c80f86e6dfa0844df109d719209dbb6a15d74536f66fcefda9fee5154462dbf640963243a2641b84d17b0a4502 envoy/data/tap/v3/http.proto
@@ -49,6 +49,9 @@
// downstream connection
Connection downstream_connection = 3;
+
+ // upstream connection
+ Connection upstream_connection = 4;
}
// A streamed HTTP trace segment. Multiple segments make up a full trace.
envoy/extensions/common/aws/v3/credential_provider.proto:
--- shake256:d3843eb1cfd3580ee2ee865f9f8dc55a4cd5d2ecc6bca5eb658ed9a4ec86ed85bd90355ded72a5cf38ebcbbf7990bb72fe6387604f8560b3d2e111590524014b envoy/extensions/common/aws/v3/credential_provider.proto
+++ shake256:3fa1741eaccaa0bb0c970910df1df48c1e90f504e27325a5d235c5f46da0ee621d04b6581c24aa93ed88d96170d64ea150e5499a709308659500c9a2293eb364 envoy/extensions/common/aws/v3/credential_provider.proto
@@ -163,7 +163,8 @@
// The ARN of the role to assume.
string role_arn = 1 [(validate.rules).string = {min_len: 1}];
- // Optional string value to use as the role session name
+ // An optional role session name, used when identifying the role in subsequent AWS API calls. If not provided, the role session name will default
+ // to the current timestamp.
string role_session_name = 2;
// Optional string value to use as the externalId
envoy/extensions/filters/http/composite/v3/composite.proto:
--- shake256:6742503496a716373df6642db049f7c4ccf30b75f97798dca06efcc7a9eddd675beaf4fe997d6efe8a89085706cbd997e005800e9e4c4ce80dc1dfecc310c070 envoy/extensions/filters/http/composite/v3/composite.proto
+++ shake256:42f2592de4fbebcf7e63d68365509a95284fcc01f0ac09b9ad467d6e2d43aec209478d614cec99be11a5f33fa9033e1d0ac86a91504b123fb272df9bac55d74d envoy/extensions/filters/http/composite/v3/composite.proto
@@ -33,9 +33,21 @@
message Composite {
}
+// A list of filter configurations to be called in order. Note that this can be used as the type
+// inside of an ECDS :ref:`TypedExtensionConfig
+// <envoy_v3_api_msg_config.core.v3.TypedExtensionConfig>` extension, which allows a chain of
+// filters to be configured dynamically. In that case, the types of all filters in the chain must
+// be present in the :ref:`ExtensionConfigSource.type_urls
+// <envoy_v3_api_field_config.core.v3.ExtensionConfigSource.type_urls>` field.
+message FilterChainConfiguration {
+ repeated config.core.v3.TypedExtensionConfig typed_config = 1;
+}
+
// Configuration for an extension configuration discovery service with name.
message DynamicConfig {
// The name of the extension configuration. It also serves as a resource name in ExtensionConfigDS.
+ // The resource type in the ``DiscoveryRequest`` will be :ref:`TypedExtensionConfig
+ // <envoy_v3_api_msg_config.core.v3.TypedExtensionConfig>`.
string name = 1 [(validate.rules).string = {min_len: 1}];
// Configuration source specifier for an extension configuration discovery
@@ -50,15 +62,21 @@
// Filter specific configuration which depends on the filter being
// instantiated. See the supported filters for further documentation.
// Only one of ``typed_config`` or ``dynamic_config`` can be set.
+ // Ignored if ``filter_chain`` is set.
// [#extension-category: envoy.filters.http]
config.core.v3.TypedExtensionConfig typed_config = 1
[(udpa.annotations.field_migrate).oneof_promotion = "config_type"];
// Dynamic configuration of filter obtained via extension configuration discovery service.
// Only one of ``typed_config`` or ``dynamic_config`` can be set.
+ // Ignored if ``filter_chain`` is set.
DynamicConfig dynamic_config = 2
[(udpa.annotations.field_migrate).oneof_promotion = "config_type"];
+ // An inlined list of filter configurations. The specified filters will be executed in order.
+ // [#not-implemented-hide:]
+ FilterChainConfiguration filter_chain = 4;
+
// Probability of the action execution. If not specified, this is 100%.
// This allows sampling behavior for the configured actions.
// For example, if
envoy/extensions/filters/http/compressor/v3/compressor.proto:
--- shake256:5dcbac65153f622e39d47cd0e5cdfde3d23d927678bfc76390edb4bb34db280c6f4bc3d9288d9b39e449c552f4a5e82c4d5d4f5277364f1f30f1b1dfa64897ca envoy/extensions/filters/http/compressor/v3/compressor.proto
+++ shake256:81791ad5ea2a3098874b479dccc17f83f0c81af3589b0c1edc99b99fef85ff69ee544e25b234ba6a3dc717e49df5a45f0adba27df13f5d1d56a6c8a4c7e6246f envoy/extensions/filters/http/compressor/v3/compressor.proto
@@ -28,21 +28,31 @@
"envoy.config.filter.http.compressor.v2.Compressor";
message CommonDirectionConfig {
- // Runtime flag that controls whether compression is enabled or not for the direction this
- // common config is put in. If set to false, the filter will operate as a pass-through filter
- // in the chosen direction, unless overridden by CompressorPerRoute.
- // If the field is omitted, the filter will be enabled.
+ // Runtime flag that controls whether compression is enabled for the direction this
+ // common config is applied to. When this field is ``false``, the filter will operate as a
+ // pass-through filter in the chosen direction, unless overridden by ``CompressorPerRoute``.
+ // If this field is not specified, the filter will be enabled.
config.core.v3.RuntimeFeatureFlag enabled = 1;
- // Minimum value of Content-Length header of request or response messages (depending on the direction
- // this common config is put in), in bytes, which will trigger compression. The default value is 30.
+ // Minimum value of the ``Content-Length`` header in request or response messages (depending on the
+ // direction this common config is applied to), in bytes, that will trigger compression. Defaults to 30.
google.protobuf.UInt32Value min_content_length = 2;
// Set of strings that allows specifying which mime-types yield compression; e.g.,
- // application/json, text/html, etc. When this field is not defined, compression will be applied
- // to the following mime-types: "application/javascript", "application/json",
- // "application/xhtml+xml", "image/svg+xml", "text/css", "text/html", "text/plain", "text/xml"
- // and their synonyms.
+ // ``application/json``, ``text/html``, etc.
+ //
+ // When this field is not specified, compression will be applied to these following mime-types
+ // and their synonyms:
+ //
+ // * ``application/javascript``
+ // * ``application/json``
+ // * ``application/xhtml+xml``
+ // * ``image/svg+xml``
+ // * ``text/css``
+ // * ``text/html``
+ // * ``text/plain``
+ // * ``text/xml``
+ //
repeated string content_type = 3;
}
@@ -52,28 +62,40 @@
}
// Configuration for filter behavior on the response direction.
+ // [#next-free-field: 6]
message ResponseDirectionConfig {
CommonDirectionConfig common_config = 1;
- // If true, disables compression when the response contains an etag header. When it is false, the
- // filter will preserve weak etags and remove the ones that require strong validation.
+ // When this field is ``true``, disables compression when the response contains an ``ETag`` header.
+ // When this field is ``false``, the filter will preserve weak ``ETag`` values and remove those that
+ // require strong validation.
bool disable_on_etag_header = 2;
- // If true, removes accept-encoding from the request headers before dispatching it to the upstream
- // so that responses do not get compressed before reaching the filter.
+ // When this field is ``true``, removes ``Accept-Encoding`` from the request headers before dispatching
+ // the request to the upstream so that responses do not get compressed before reaching the filter.
//
// .. attention::
//
- // To avoid interfering with other compression filters in the same chain use this option in
+ // To avoid interfering with other compression filters in the same chain, use this option in
// the filter closest to the upstream.
bool remove_accept_encoding_header = 3;
- // Set of response codes for which compression is disabled, e.g. 206 Partial Content should not
+ // Set of response codes for which compression is disabled; e.g., 206 Partial Content should not
// be compressed.
repeated uint32 uncompressible_response_codes = 4 [(validate.rules).repeated = {
unique: true
items {uint32 {lt: 600 gte: 200}}
}];
+
+ // If true, the filter adds the ``x-envoy-compression-status`` response
+ // header to indicate whether the compression occurred and, if not, provide
+ // the reason why. The header's value format is
+ // ``<encoder-type>;<status>[;<additional-params>]``, where ``<status>`` is
+ // ``Compressed`` or the reason compression was skipped (e.g.,
+ // ``ContentLengthTooSmall``). When this field is enabled, the compressor
+ // filter alters the order of the compression eligibility checks to report
+ // the most valid reason for skipping the compression.
+ bool status_header_enabled = 5;
}
// Minimum response length, in bytes, which will trigger compression. The default value is 30.
@@ -81,60 +103,69 @@
[deprecated = true, (envoy.annotations.deprecated_at_minor_version) = "3.0"];
// Set of strings that allows specifying which mime-types yield compression; e.g.,
- // application/json, text/html, etc. When this field is not defined, compression will be applied
- // to the following mime-types: "application/javascript", "application/json",
- // "application/xhtml+xml", "image/svg+xml", "text/css", "text/html", "text/plain", "text/xml"
- // and their synonyms.
+ // ``application/json``, ``text/html``, etc.
+ //
+ // When this field is not specified, compression will be applied to these following mime-types
+ // and their synonyms:
+ //
+ // * ``application/javascript``
+ // * ``application/json``
+ // * ``application/xhtml+xml``
+ // * ``image/svg+xml``
+ // * ``text/css``
+ // * ``text/html``
+ // * ``text/plain``
+ // * ``text/xml``
+ //
repeated string content_type = 2
[deprecated = true, (envoy.annotations.deprecated_at_minor_version) = "3.0"];
- // If true, disables compression when the response contains an etag header. When it is false, the
- // filter will preserve weak etags and remove the ones that require strong validation.
+ // When this field is ``true``, disables compression when the response contains an ``ETag`` header.
+ // When this field is ``false``, the filter will preserve weak ``ETag`` values and remove those that
+ // require strong validation.
bool disable_on_etag_header = 3
[deprecated = true, (envoy.annotations.deprecated_at_minor_version) = "3.0"];
- // If true, removes accept-encoding from the request headers before dispatching it to the upstream
- // so that responses do not get compressed before reaching the filter.
+ // When this field is ``true``, removes ``Accept-Encoding`` from the request headers before dispatching
+ // the request to the upstream so that responses do not get compressed before reaching the filter.
//
// .. attention::
//
- // To avoid interfering with other compression filters in the same chain use this option in
+ // To avoid interfering with other compression filters in the same chain, use this option in
// the filter closest to the upstream.
bool remove_accept_encoding_header = 4
[deprecated = true, (envoy.annotations.deprecated_at_minor_version) = "3.0"];
- // Runtime flag that controls whether the filter is enabled or not. If set to false, the
- // filter will operate as a pass-through filter, unless overridden by
- // CompressorPerRoute. If not specified, defaults to enabled.
+ // Runtime flag that controls whether the filter is enabled. When this field is ``false``, the
+ // filter will operate as a pass-through filter, unless overridden by ``CompressorPerRoute``.
+ // If this field is not specified, the filter is enabled by default.
config.core.v3.RuntimeFeatureFlag runtime_enabled = 5
[deprecated = true, (envoy.annotations.deprecated_at_minor_version) = "3.0"];
- // A compressor library to use for compression. Currently only
- // :ref:`envoy.compression.gzip.compressor<envoy_v3_api_msg_extensions.compression.gzip.compressor.v3.Gzip>`
- // is included in Envoy.
+ // A compressor library to use for compression.
// [#extension-category: envoy.compression.compressor]
config.core.v3.TypedExtensionConfig compressor_library = 6
[(validate.rules).message = {required: true}];
- // Configuration for request compression. Compression is disabled by default if left empty.
+ // Configuration for request compression. If this field is not specified, request compression is disabled.
RequestDirectionConfig request_direction_config = 7;
- // Configuration for response compression. Compression is enabled by default if left empty.
+ // Configuration for response compression. If this field is not specified, response compression is enabled.
//
// .. attention::
//
- // If the field is not empty then the duplicate deprecated fields of the ``Compressor`` message,
+ // When this field is set, duplicate deprecated fields of the ``Compressor`` message,
// such as ``content_length``, ``content_type``, ``disable_on_etag_header``,
- // ``remove_accept_encoding_header`` and ``runtime_enabled``, are ignored.
+ // ``remove_accept_encoding_header``, and ``runtime_enabled``, are ignored.
//
- // Also all the statistics related to response compression will be rooted in
+ // Additionally, all statistics related to response compression will be rooted in
// ``<stat_prefix>.compressor.<compressor_library.name>.<compressor_library_stat_prefix>.response.*``
// instead of
// ``<stat_prefix>.compressor.<compressor_library.name>.<compressor_library_stat_prefix>.*``.
ResponseDirectionConfig response_direction_config = 8;
- // If true, chooses this compressor first to do compression when the q-values in ``Accept-Encoding`` are same.
- // The last compressor which enables choose_first will be chosen if multiple compressor filters in the chain have choose_first as true.
+ // When this field is ``true``, this compressor is preferred when q-values in ``Accept-Encoding`` are equal.
+ // If multiple compressor filters set ``choose_first`` to ``true``, the last one in the filter chain is chosen.
bool choose_first = 9;
}
@@ -152,6 +183,10 @@
message CompressorOverrides {
// If present, response compression is enabled.
ResponseDirectionOverrides response_direction_config = 1;
+
+ // A compressor library to use for compression. If specified, this overrides
+ // the filter-level ``compressor_library`` configuration for this route.
+ config.core.v3.TypedExtensionConfig compressor_library = 2;
}
message CompressorPerRoute {
@@ -159,7 +194,7 @@
option (validate.required) = true;
// If set, the filter will operate as a pass-through filter.
- // Overrides Compressor.runtime_enabled and CommonDirectionConfig.enabled.
+ // Overrides ``Compressor.runtime_enabled`` and ``CommonDirectionConfig.enabled``.
bool disabled = 1 [(validate.rules).bool = {const: true}];
// Per-route overrides. Fields set here will override corresponding fields in ``Compressor``.
envoy/extensions/filters/http/dynamic_modules/v3/dynamic_modules.proto:
--- shake256:aa0c08cc3ad8ff6bdf2f27745d0cb83dbaed18dde30fdfb8d887922d5d5de8cb3a39e73c5ddd866a85a872bb32d695a78aa5f821eeca4e6794de182a57e02489 envoy/extensions/filters/http/dynamic_modules/v3/dynamic_modules.proto
+++ shake256:8fb944b54d8d218ce03755d1846a59dfafc5969a1895651ddb83ae80ed0e8ea08d80d06f55e7c7127cfc90da531d1aef6d6a4c3a17e6d5efcf2e63882c36bcbe envoy/extensions/filters/http/dynamic_modules/v3/dynamic_modules.proto
@@ -22,6 +22,10 @@
//
// A module can be loaded by multiple HTTP filters, hence the program can be structured in a way that
// the module is loaded only once and shared across multiple filters providing multiple functionalities.
+//
+// A dynamic module HTTP filter can opt into being a terminal filter with no upstream by setting ``terminal_filter`` to
+// true in the configuration. A terminal dynamic module can use ``send_`` ABI methods to send response headers,
+// body and trailers to the downstream.
message DynamicModuleFilter {
// Specifies the shared-object level configuration.
envoy.extensions.dynamic_modules.v3.DynamicModuleConfig dynamic_module_config = 1;
@@ -58,6 +62,10 @@
// value: aGVsbG8= # echo -n "hello" | base64
//
google.protobuf.Any filter_config = 3;
+
+ // Set true if the dynamic module is a terminal filter to use without an upstream.
+ // The dynamic module is responsible for creating and sending the response to downstream.
+ bool terminal_filter = 4;
}
// Configuration of the HTTP per-route filter for dynamic modules. This filter allows loading shared object files
envoy/extensions/filters/http/ext_authz/v3/ext_authz.proto:
--- shake256:aac4aa7873f5d3faf853263f8e437f86326f5e0c7226ab1347226d31e8d976c1434f62613182c5b611049f829e5d97c2ac347a34846f150a187b5f02d628044d envoy/extensions/filters/http/ext_authz/v3/ext_authz.proto
+++ shake256:37b7ca8ce578dd30f08da36eb7137ff90f977f058a71a2fc4b2fb1e1304d4fbf09fd02ed26d0041d8f5812d75b358ea17b60c1016953cf328da053ec30ba8f27 envoy/extensions/filters/http/ext_authz/v3/ext_authz.proto
@@ -30,7 +30,7 @@
// External Authorization :ref:`configuration overview <config_http_filters_ext_authz>`.
// [#extension: envoy.filters.http.ext_authz]
-// [#next-free-field: 30]
+// [#next-free-field: 31]
message ExtAuthz {
option (udpa.annotations.versioning).previous_message_type =
"envoy.config.filter.http.ext_authz.v3.ExtAuthz";
@@ -53,40 +53,39 @@
config.core.v3.ApiVersion transport_api_version = 12
[(validate.rules).enum = {defined_only: true}];
- // Changes filter's behavior on errors:
+ // Changes the filter's behavior on errors:
//
- // 1. When set to true, the filter will ``accept`` client request even if the communication with
- // the authorization service has failed, or if the authorization service has returned a HTTP 5xx
- // error.
+ // #. When set to ``true``, the filter will ``accept`` the client request even if communication with
+ // the authorization service has failed, or if the authorization service has returned an HTTP 5xx
+ // error.
//
- // 2. When set to false, ext-authz will ``reject`` client requests and return a ``Forbidden``
- // response if the communication with the authorization service has failed, or if the
- // authorization service has returned a HTTP 5xx error.
+ // #. When set to ``false``, the filter will ``reject`` client requests and return ``Forbidden``
+ // if communication with the authorization service has failed, or if the authorization service
+ // has returned an HTTP 5xx error.
//
- // Note that errors can be ``always`` tracked in the :ref:`stats
- // <config_http_filters_ext_authz_stats>`.
+ // Errors can always be tracked in the :ref:`stats <config_http_filters_ext_authz_stats>`.
bool failure_mode_allow = 2;
- // When ``failure_mode_allow`` and ``failure_mode_allow_header_add`` are both set to true,
+ // When ``failure_mode_allow`` and ``failure_mode_allow_header_add`` are both set to ``true``,
// ``x-envoy-auth-failure-mode-allowed: true`` will be added to request headers if the communication
// with the authorization service has failed, or if the authorization service has returned a
// HTTP 5xx error.
bool failure_mode_allow_header_add = 19;
- // Enables filter to buffer the client request body and send it within the authorization request.
- // A ``x-envoy-auth-partial-body: false|true`` metadata header will be added to the authorization
- // request message indicating if the body data is partial.
+ // Enables the filter to buffer the client request body and send it within the authorization request.
+ // The ``x-envoy-auth-partial-body: false|true`` metadata header will be added to the authorization
+ // request indicating whether the body data is partial.
BufferSettings with_request_body = 5;
- // Clears route cache in order to allow the external authorization service to correctly affect
- // routing decisions. Filter clears all cached routes when:
+ // Clears the route cache in order to allow the external authorization service to correctly affect
+ // routing decisions. The filter clears all cached routes when:
//
- // 1. The field is set to ``true``.
+ // #. The field is set to ``true``.
//
- // 2. The status returned from the authorization service is a HTTP 200 or gRPC 0.
+ // #. The status returned from the authorization service is an HTTP 200 or gRPC 0.
//
- // 3. At least one ``authorization response header`` is added to the client request, or is used for
- // altering another client request header.
+ // #. At least one ``authorization response header`` is added to the client request, or is used to
+ // alter another client request header.
//
bool clear_route_cache = 6;
@@ -94,26 +93,27 @@
// or cannot be reached. The default status is HTTP 403 Forbidden.
type.v3.HttpStatus status_on_error = 7;
- // When this is set to true, the filter will check the :ref:`ext_authz response
- // <envoy_v3_api_msg_service.auth.v3.CheckResponse>` for invalid header &
+ // When this is set to ``true``, the filter will check the :ref:`ext_authz response
+ // <envoy_v3_api_msg_service.auth.v3.CheckResponse>` for invalid header and
// query parameter mutations. If the side stream response is invalid, it will send a local reply
// to the downstream request with status HTTP 500 Internal Server Error.
//
- // Note that headers_to_remove & query_parameters_to_remove are validated, but invalid elements in
- // those fields should not affect any headers & thus will not cause the filter to send a local
- // reply.
+ // .. note::
+ // Both ``headers_to_remove`` and ``query_parameters_to_remove`` are validated, but invalid elements in
+ // those fields should not affect any headers and thus will not cause the filter to send a local reply.
//
- // When set to false, any invalid mutations will be visible to the rest of envoy and may cause
+ // When set to ``false``, any invalid mutations will be visible to the rest of Envoy and may cause
// unexpected behavior.
//
- // If you are using ext_authz with an untrusted ext_authz server, you should set this to true.
+ // If you are using ext_authz with an untrusted ext_authz server, you should set this to ``true``.
bool validate_mutations = 24;
// Specifies a list of metadata namespaces whose values, if present, will be passed to the
// ext_authz service. The :ref:`filter_metadata <envoy_v3_api_field_config.core.v3.Metadata.filter_metadata>`
// is passed as an opaque ``protobuf::Struct``.
//
- // Please note that this field exclusively applies to the gRPC ext_authz service and has no effect on the HTTP service.
+ // .. note::
+ // This field applies exclusively to the gRPC ext_authz service and has no effect on the HTTP service.
//
// For example, if the ``jwt_authn`` filter is used and :ref:`payload_in_metadata
// <envoy_v3_api_field_extensions.filters.http.jwt_authn.v3.JwtProvider.payload_in_metadata>` is set,
@@ -130,10 +130,11 @@
// ext_authz service. :ref:`typed_filter_metadata <envoy_v3_api_field_config.core.v3.Metadata.typed_filter_metadata>`
// is passed as a ``protobuf::Any``.
//
- // Please note that this field exclusively applies to the gRPC ext_authz service and has no effect on the HTTP service.
+ // .. note::
+ // This field applies exclusively to the gRPC ext_authz service and has no effect on the HTTP service.
//
- // It works in a way similar to ``metadata_context_namespaces`` but allows Envoy and ext_authz server to share
- // the protobuf message definition in order to do a safe parsing.
+ // This works similarly to ``metadata_context_namespaces`` but allows Envoy and the ext_authz server to share
+ // the protobuf message definition in order to perform safe parsing.
//
repeated string typed_metadata_context_namespaces = 16;
@@ -146,7 +147,7 @@
// Specifies a list of route metadata namespaces whose values, if present, will be passed to the
// ext_authz service at :ref:`route_metadata_context <envoy_v3_api_field_service.auth.v3.AttributeContext.route_metadata_context>` in
// :ref:`CheckRequest <envoy_v3_api_field_service.auth.v3.CheckRequest.attributes>`.
- // :ref:`typed_filter_metadata <envoy_v3_api_field_config.core.v3.Metadata.typed_filter_metadata>` is passed as an ``protobuf::Any``.
+ // :ref:`typed_filter_metadata <envoy_v3_api_field_config.core.v3.Metadata.typed_filter_metadata>` is passed as a ``protobuf::Any``.
repeated string route_typed_metadata_context_namespaces = 22;
// Specifies if the filter is enabled.
@@ -161,11 +162,11 @@
// If this field is not specified, the filter will be enabled for all requests.
type.matcher.v3.MetadataMatcher filter_enabled_metadata = 14;
- // Specifies whether to deny the requests, when the filter is disabled.
+ // Specifies whether to deny the requests when the filter is disabled.
// If :ref:`runtime_key <envoy_v3_api_field_config.core.v3.RuntimeFeatureFlag.runtime_key>` is specified,
- // Envoy will lookup the runtime key to determine whether to deny request for
- // filter protected path at filter disabling. If filter is disabled in
- // typed_per_filter_config for the path, requests will not be denied.
+ // Envoy will lookup the runtime key to determine whether to deny requests for filter-protected paths
+ // when the filter is disabled. If the filter is disabled in ``typed_per_filter_config`` for the path,
+ // requests will not be denied.
//
// If this field is not specified, all requests will be allowed when disabled.
//
@@ -176,11 +177,11 @@
// Specifies if the peer certificate is sent to the external service.
//
- // When this field is true, Envoy will include the peer X.509 certificate, if available, in the
+ // When this field is ``true``, Envoy will include the peer X.509 certificate, if available, in the
// :ref:`certificate<envoy_v3_api_field_service.auth.v3.AttributeContext.Peer.certificate>`.
bool include_peer_certificate = 10;
- // Optional additional prefix to use when emitting statistics. This allows to distinguish
+ // Optional additional prefix to use when emitting statistics. This allows distinguishing
// emitted statistics between configured ``ext_authz`` filters in an HTTP filter chain. For example:
//
// .. code-block:: yaml
@@ -210,21 +211,20 @@
//
// .. note::
//
- // 1. For requests to an HTTP authorization server: in addition to the user's supplied matchers, ``Host``, ``Method``, ``Path``,
- // ``Content-Length``, and ``Authorization`` are **additionally included** in the list.
+ // For requests to an HTTP authorization server: in addition to the user's supplied matchers, ``Host``, ``Method``, ``Path``,
+ // ``Content-Length``, and ``Authorization`` are **additionally included** in the list.
//
// .. note::
//
- // 2. For requests to an HTTP authorization server: value of ``Content-Length`` will be set to 0 and the request to the
+ // For requests to an HTTP authorization server: the value of ``Content-Length`` will be set to ``0`` and the request to the
// authorization server will not have a message body. However, the check request can include the buffered
// client request body (controlled by :ref:`with_request_body
- // <envoy_v3_api_field_extensions.filters.http.ext_authz.v3.ExtAuthz.with_request_body>` setting),
- // consequently the value of *Content-Length* of the authorization request reflects the size of
- // its payload size.
+ // <envoy_v3_api_field_extensions.filters.http.ext_authz.v3.ExtAuthz.with_request_body>` setting);
+ // consequently, the value of ``Content-Length`` in the authorization request reflects the size of its payload.
//
// .. note::
//
- // 3. This can be overridden by the field ``disallowed_headers`` below. That is, if a header
+ // This can be overridden by the field ``disallowed_headers`` below. That is, if a header
// matches for both ``allowed_headers`` and ``disallowed_headers``, the header will NOT be sent.
type.matcher.v3.ListStringMatcher allowed_headers = 17;
@@ -234,34 +234,35 @@
// Specifies if the TLS session level details like SNI are sent to the external service.
//
- // When this field is true, Envoy will include the SNI name used for TLSClientHello, if available, in the
+ // When this field is ``true``, Envoy will include the SNI name used for TLSClientHello, if available, in the
// :ref:`tls_session<envoy_v3_api_field_service.auth.v3.AttributeContext.tls_session>`.
bool include_tls_session = 18;
// Whether to increment cluster statistics (e.g. cluster.<cluster_name>.upstream_rq_*) on authorization failure.
- // Defaults to true.
+ // Defaults to ``true``.
google.protobuf.BoolValue charge_cluster_response_stats = 20;
- // Whether to encode the raw headers (i.e. unsanitized values & unconcatenated multi-line headers)
- // in authentication request. Works with both HTTP and gRPC clients.
+ // Whether to encode the raw headers (i.e., unsanitized values and unconcatenated multi-line headers)
+ // in the authorization request. Works with both HTTP and gRPC clients.
//
- // When this is set to true, header values are not sanitized. Headers with the same key will also
+ // When this is set to ``true``, header values are not sanitized. Headers with the same key will also
// not be combined into a single, comma-separated header.
// Requests to gRPC services will populate the field
// :ref:`header_map<envoy_v3_api_field_service.auth.v3.AttributeContext.HttpRequest.header_map>`.
// Requests to HTTP services will be constructed with the unsanitized header values and preserved
// multi-line headers with the same key.
//
- // If this field is set to false, header values will be sanitized, with any non-UTF-8-compliant
- // bytes replaced with '!'. Headers with the same key will have their values concatenated into a
+ // If this field is set to ``false``, header values will be sanitized, with any non-UTF-8-compliant
+ // bytes replaced with ``'!'``. Headers with the same key will have their values concatenated into a
// single comma-separated header value.
// Requests to gRPC services will populate the field
// :ref:`headers<envoy_v3_api_field_service.auth.v3.AttributeContext.HttpRequest.headers>`.
// Requests to HTTP services will have their header values sanitized and will not preserve
// multi-line headers with the same key.
//
- // It's recommended you set this to true unless you already rely on the old behavior. False is the
- // default only for backwards compatibility.
+ // It is recommended to set this to ``true`` unless you rely on the previous behavior.
+ //
+ // It is set to ``false`` by default for backwards compatibility.
bool encode_raw_headers = 23;
// Rules for what modifications an ext_authz server may make to the request headers before
@@ -281,15 +282,15 @@
// This field allows the filter to reject mutations to specific headers.
config.common.mutation_rules.v3.HeaderMutationRules decoder_header_mutation_rules = 26;
- // Enable / disable ingestion of dynamic metadata from ext_authz service.
+ // Enable or disable ingestion of dynamic metadata from the ext_authz service.
//
- // If false, the filter will ignore dynamic metadata injected by the ext_authz service. If the
+ // If ``false``, the filter will ignore dynamic metadata injected by the ext_authz service. If the
// ext_authz service tries injecting dynamic metadata, the filter will log, increment the
// ``ignored_dynamic_metadata`` stat, then continue handling the response.
//
- // If true, the filter will ingest dynamic metadata entries as normal.
+ // If ``true``, the filter will ingest dynamic metadata entries as normal.
//
- // If unset, defaults to true.
+ // If unset, defaults to ``true``.
google.protobuf.BoolValue enable_dynamic_metadata_ingestion = 27;
// Additional metadata to be added to the filter state for logging purposes. The metadata will be
@@ -297,19 +298,30 @@
// name.
google.protobuf.Struct filter_metadata = 28;
- // When set to true, the filter will emit per-stream stats for access logging. The filter state
+ // When set to ``true``, the filter will emit per-stream stats for access logging. The filter state
// key will be the same as the filter name.
//
// If using Envoy gRPC, emits latency, bytes sent / received, upstream info, and upstream cluster
// info. If not using Envoy gRPC, emits only latency. Note that stats are ONLY added to filter
// state if a check request is actually made to an ext_authz service.
//
- // If this is false the filter will not emit stats, but filter_metadata will still be respected if
+ // If this is ``false`` the filter will not emit stats, but filter_metadata will still be respected if
// it has a value.
//
// Field ``latency_us`` is exposed for CEL and logging when using gRPC or HTTP service.
// Fields ``bytesSent`` and ``bytesReceived`` are exposed for CEL and logging only when using gRPC service.
bool emit_filter_state_stats = 29;
+
+ // Sets the maximum size (in bytes) of the response body that the filter will send downstream
+ // when a request is denied by the external authorization service.
+ //
+ // If the authorization server returns a response body larger than this configured limit,
+ // the body will be truncated to ``max_denied_response_body_bytes`` before being sent to the
+ // downstream client.
+ //
+ // If this field is not set or is set to 0, no truncation will occur, and the entire
+ // denied response body will be forwarded.
+ uint32 max_denied_response_body_bytes = 30;
}
// Configuration for buffering the request data.
@@ -318,21 +330,21 @@
"envoy.config.filter.http.ext_authz.v2.BufferSettings";
// Sets the maximum size of a message body that the filter will hold in memory. Envoy will return
- // ``HTTP 413`` and will *not* initiate the authorization process when buffer reaches the number
+ // ``HTTP 413`` and will *not* initiate the authorization process when the buffer reaches the size
// set in this field. Note that this setting will have precedence over :ref:`failure_mode_allow
// <envoy_v3_api_field_extensions.filters.http.ext_authz.v3.ExtAuthz.failure_mode_allow>`.
uint32 max_request_bytes = 1 [(validate.rules).uint32 = {gt: 0}];
- // When this field is true, Envoy will buffer the message until ``max_request_bytes`` is reached.
+ // When this field is ``true``, Envoy will buffer the message until ``max_request_bytes`` is reached.
// The authorization request will be dispatched and no 413 HTTP error will be returned by the
// filter.
bool allow_partial_message = 2;
- // If true, the body sent to the external authorization service is set with raw bytes, it sets
- // the :ref:`raw_body<envoy_v3_api_field_service.auth.v3.AttributeContext.HttpRequest.raw_body>`
- // field of HTTP request attribute context. Otherwise, :ref:`body
- // <envoy_v3_api_field_service.auth.v3.AttributeContext.HttpRequest.body>` will be filled
- // with UTF-8 string request body.
+ // If ``true``, the body sent to the external authorization service is set as raw bytes and populates
+ // :ref:`raw_body<envoy_v3_api_field_service.auth.v3.AttributeContext.HttpRequest.raw_body>`
+ // in the HTTP request attribute context. Otherwise, :ref:`body
+ // <envoy_v3_api_field_service.auth.v3.AttributeContext.HttpRequest.body>` will be populated
+ // with a UTF-8 string request body.
//
// This field only affects configurations using a :ref:`grpc_service
// <envoy_v3_api_field_extensions.filters.http.ext_authz.v3.ExtAuthz.grpc_service>`. In configurations that use
@@ -347,7 +359,7 @@
// request. Note that in any of these events, metadata can be added, removed or overridden by the
// filter:
//
-// *On authorization request*, a list of allowed request headers may be supplied. See
+// On authorization request, a list of allowed request headers may be supplied. See
// :ref:`allowed_headers
// <envoy_v3_api_field_extensions.filters.http.ext_authz.v3.AuthorizationRequest.allowed_headers>`
// for details. Additional headers metadata may be added to the authorization request. See
@@ -355,7 +367,7 @@
// <envoy_v3_api_field_extensions.filters.http.ext_authz.v3.AuthorizationRequest.headers_to_add>` for
// details.
//
-// On authorization response status HTTP 200 OK, the filter will allow traffic to the upstream and
+// On authorization response status ``HTTP 200 OK``, the filter will allow traffic to the upstream and
// additional headers metadata may be added to the original client request. See
// :ref:`allowed_upstream_headers
// <envoy_v3_api_field_extensions.filters.http.ext_authz.v3.AuthorizationResponse.allowed_upstream_headers>`
@@ -368,7 +380,7 @@
// metadata as well as body may be added to the client's response. See :ref:`allowed_client_headers
// <envoy_v3_api_field_extensions.filters.http.ext_authz.v3.AuthorizationResponse.allowed_client_headers>`
// for details.
-// [#next-free-field: 9]
+// [#next-free-field: 10]
message HttpService {
option (udpa.annotations.versioning).previous_message_type =
"envoy.config.filter.http.ext_authz.v2.HttpService";
@@ -386,13 +398,20 @@
// Settings used for controlling authorization response metadata.
AuthorizationResponse authorization_response = 8;
+
+ // Optional retry policy for requests to the authorization server.
+ // If not set, no retries will be performed.
+ //
+ // .. note::
+ // When this field is set, the ``ext_authz`` filter will buffer the request body for retry purposes.
+ config.core.v3.RetryPolicy retry_policy = 9;
}
message AuthorizationRequest {
option (udpa.annotations.versioning).previous_message_type =
"envoy.config.filter.http.ext_authz.v2.AuthorizationRequest";
- // Authorization request includes the client request headers that have a correspondent match
+ // Authorization request includes the client request headers that have a corresponding match
// in the :ref:`list <envoy_v3_api_msg_type.matcher.v3.ListStringMatcher>`.
// This field has been deprecated in favor of :ref:`allowed_headers
// <envoy_v3_api_field_extensions.filters.http.ext_authz.v3.ExtAuthz.allowed_headers>`.
@@ -404,17 +423,17 @@
//
// .. note::
//
- // By default, ``Content-Length`` header is set to ``0`` and the request to the authorization
+ // By default, the ``Content-Length`` header is set to ``0`` and the request to the authorization
// service has no message body. However, the authorization request *may* include the buffered
// client request body (controlled by :ref:`with_request_body
// <envoy_v3_api_field_extensions.filters.http.ext_authz.v3.ExtAuthz.with_request_body>`
- // setting) hence the value of its ``Content-Length`` reflects the size of its payload size.
+ // setting); hence the value of its ``Content-Length`` reflects the size of its payload.
//
type.matcher.v3.ListStringMatcher allowed_headers = 1
[deprecated = true, (envoy.annotations.deprecated_at_minor_version) = "3.0"];
- // Sets a list of headers that will be included to the request to authorization service. Note that
- // client request of the same key will be overridden.
+ // Sets a list of headers that will be included in the request to the authorization service. Note that
+ // client request headers with the same key will be overridden.
repeated config.core.v3.HeaderValue headers_to_add = 2;
}
@@ -466,7 +485,7 @@
// Disable the ext auth filter for this particular vhost or route.
// If disabled is specified in multiple per-filter-configs, the most specific one will be used.
- // If the filter is disabled by default and this is set to false, the filter will be enabled
+ // If the filter is disabled by default and this is set to ``false``, the filter will be enabled
// for this vhost or route.
bool disabled = 1;
@@ -476,6 +495,7 @@
}
// Extra settings for the check request.
+// [#next-free-field: 6]
message CheckSettings {
option (udpa.annotations.versioning).previous_message_type =
"envoy.config.filter.http.ext_authz.v2.CheckSettings";
@@ -492,15 +512,14 @@
// Merge semantics for this field are such that keys from more specific configs override.
//
// .. note::
- //
// These settings are only applied to a filter configured with a
// :ref:`grpc_service<envoy_v3_api_field_extensions.filters.http.ext_authz.v3.ExtAuthz.grpc_service>`.
map<string, string> context_extensions = 1 [(udpa.annotations.sensitive) = true];
- // When set to true, disable the configured :ref:`with_request_body
+ // When set to ``true``, disable the configured :ref:`with_request_body
// <envoy_v3_api_field_extensions.filters.http.ext_authz.v3.ExtAuthz.with_request_body>` for a specific route.
//
- // Please note that only one of *disable_request_body_buffering* or
+ // Only one of ``disable_request_body_buffering`` and
// :ref:`with_request_body <envoy_v3_api_field_extensions.filters.http.ext_authz.v3.CheckSettings.with_request_body>`
// may be specified.
bool disable_request_body_buffering = 2;
@@ -509,8 +528,20 @@
// :ref:`with_request_body <envoy_v3_api_field_extensions.filters.http.ext_authz.v3.ExtAuthz.with_request_body>`
// option for a specific route.
//
- // Please note that only one of ``with_request_body`` or
+ // Only one of ``with_request_body`` and
// :ref:`disable_request_body_buffering <envoy_v3_api_field_extensions.filters.http.ext_authz.v3.CheckSettings.disable_request_body_buffering>`
// may be specified.
BufferSettings with_request_body = 3;
+
+ // Override the external authorization service for this route.
+ // This allows different routes to use different external authorization service backends
+ // and service types (gRPC or HTTP). If specified, this overrides the filter-level service
+ // configuration regardless of the original service type.
+ oneof service_override {
+ // Override with a gRPC service configuration.
+ config.core.v3.GrpcService grpc_service = 4;
+
+ // Override with an HTTP service configuration.
+ HttpService http_service = 5;
+ }
}
envoy/extensions/filters/http/ext_proc/v3/ext_proc.proto:
--- shake256:46aadb2e4c6efee85e68e74e1e38cd8f51255f7d2aee27afd2cd5f4be9b7fe6b42907b229195b7457f56f4d0e1ca5aeae53f067d9d16130b22a77cc6ab9fe72a envoy/extensions/filters/http/ext_proc/v3/ext_proc.proto
+++ shake256:8a596f09ecb0f753602be53fa65fd5f2ed09ec10e1e420f9d13439170a94a16c005769fb5784a80d12f834bdd8bc22043f448c8872b1df65fefa22bde57f8cb9 envoy/extensions/filters/http/ext_proc/v3/ext_proc.proto
@@ -9,6 +9,7 @@
import "envoy/config/core/v3/http_service.proto";
import "envoy/extensions/filters/http/ext_proc/v3/processing_mode.proto";
import "envoy/type/matcher/v3/string.proto";
+import "envoy/type/v3/http_status.proto";
import "google/protobuf/duration.proto";
import "google/protobuf/struct.proto";
@@ -16,6 +17,7 @@
import "xds/annotations/v3/status.proto";
+import "envoy/annotations/deprecation.proto";
import "udpa/annotations/migrate.proto";
import "udpa/annotations/status.proto";
import "validate/validate.proto";
@@ -48,8 +50,6 @@
//
// * Whether it receives the response message at all.
// * Whether it receives the message body at all, in separate chunks, or as a single buffer.
-// * Whether subsequent HTTP requests are transmitted synchronously or whether they are
-// sent asynchronously.
// * To modify request or response trailers if they already exist.
//
// The filter supports up to six different processing steps. Each is represented by
@@ -57,9 +57,11 @@
// processor must send a matching response.
//
// * Request headers: Contains the headers from the original HTTP request.
-// * Request body: Delivered if they are present and sent in a single message if
-// the ``BUFFERED`` or ``BUFFERED_PARTIAL`` mode is chosen, in multiple messages if the
-// ``STREAMED`` mode is chosen, and not at all otherwise.
+// * Request body: If the body is present, the behavior depends on the
+// body send mode. In ``BUFFERED`` or ``BUFFERED_PARTIAL`` mode, the body is sent to the external
+// processor in a single message. In ``STREAMED`` or ``FULL_DUPLEX_STREAMED`` mode, the body will
+// be split across multiple messages sent to the external processor. In ``NONE`` mode, the body
+// will not be sent to the external processor.
// * Request trailers: Delivered if they are present and if the trailer mode is set
// to ``SEND``.
// * Response headers: Contains the headers from the HTTP response. Keep in mind
@@ -75,7 +77,7 @@
// from the external processor. The latter is only enabled if ``allow_mode_override`` is
// set to true. This way, a processor may, for example, use information
// in the request header to determine whether the message body must be examined, or whether
-// the proxy should simply stream it straight through.
+// the data plane should simply stream it straight through.
//
// All of this together allows a server to process the filter traffic in fairly
// sophisticated ways. For example:
@@ -84,12 +86,8 @@
// on the content of the headers.
// * A server may choose to immediately reject some messages based on their HTTP
// headers (or other dynamic metadata) and more carefully examine others.
-// * A server may asynchronously monitor traffic coming through the filter by inspecting
-// headers, bodies, or both, and then decide to switch to a synchronous processing
-// mode, either permanently or temporarily.
//
-// The protocol itself is based on a bidirectional gRPC stream. Envoy will send the
-// server
+// The protocol itself is based on a bidirectional gRPC stream. The data plane will send the server
// :ref:`ProcessingRequest <envoy_v3_api_msg_service.ext_proc.v3.ProcessingRequest>`
// messages, and the server must reply with
// :ref:`ProcessingResponse <envoy_v3_api_msg_service.ext_proc.v3.ProcessingResponse>`.
@@ -98,7 +96,7 @@
// <arch_overview_advanced_filter_state_sharing>` object in a namespace matching the filter
// name.
//
-// [#next-free-field: 24]
+// [#next-free-field: 26]
message ExternalProcessor {
// Describes the route cache action to be taken when an external processor response
// is received in response to request headers.
@@ -124,7 +122,6 @@
reserved "async_mode";
// Configuration for the gRPC service that the filter will communicate with.
- // The filter supports both the "Envoy" and "Google" gRPC clients.
// Only one of ``grpc_service`` or ``http_service`` can be set.
// It is required that one of them must be set.
config.core.v3.GrpcService grpc_service = 1
@@ -140,14 +137,14 @@
// cannot be configured to send any body or trailers. i.e., ``http_service`` only supports
// sending request or response headers to the side stream server.
//
- // With this configuration, Envoy behavior:
+ // With this configuration, the data plane behavior is:
//
// 1. The headers are first put in a proto message
// :ref:`ProcessingRequest <envoy_v3_api_msg_service.ext_proc.v3.ProcessingRequest>`.
//
// 2. This proto message is then transcoded into a JSON text.
//
- // 3. Envoy then sends an HTTP POST message with content-type as "application/json",
+ // 3. The data plane then sends an HTTP POST message with content-type as "application/json",
// and this JSON text as body to the side stream server.
//
// After the side-stream receives this HTTP request message, it is expected to do as follows:
@@ -160,7 +157,7 @@
//
// 3. It converts the ``ProcessingResponse`` proto message into a JSON text.
//
- // 4. It then sends an HTTP response back to Envoy with status code as ``"200"``,
+ // 4. It then sends an HTTP response back to the data plane with status code as ``"200"``,
// ``content-type`` as ``"application/json"`` and sets the JSON text as the body.
//
ExtProcHttpService http_service = 20 [
@@ -190,28 +187,31 @@
// sent. See ``ProcessingMode`` for details.
ProcessingMode processing_mode = 3;
- // Envoy provides a number of :ref:`attributes <arch_overview_attributes>`
+ // The data plane provides a number of :ref:`attributes <arch_overview_attributes>`
// for expressive policies. Each attribute name provided in this field will be
- // matched against that list and populated in the ``request_headers`` message.
+ // matched against that list and populated in the
+ // :ref:`ProcessingRequest.attributes <envoy_v3_api_field_service.ext_proc.v3.ProcessingRequest.attributes>` field.
// See the :ref:`attribute documentation <arch_overview_request_attributes>`
// for the list of supported attributes and their types.
repeated string request_attributes = 5;
- // Envoy provides a number of :ref:`attributes <arch_overview_attributes>`
+ // The data plane provides a number of :ref:`attributes <arch_overview_attributes>`
// for expressive policies. Each attribute name provided in this field will be
- // matched against that list and populated in the ``response_headers`` message.
+ // matched against that list and populated in the
+ // :ref:`ProcessingRequest.attributes <envoy_v3_api_field_service.ext_proc.v3.ProcessingRequest.attributes>` field.
// See the :ref:`attribute documentation <arch_overview_attributes>`
// for the list of supported attributes and their types.
repeated string response_attributes = 6;
- // Specifies the timeout for each individual message sent on the stream and
- // when the filter is running in synchronous mode. Whenever the proxy sends
- // a message on the stream that requires a response, it will reset this timer,
- // and will stop processing and return an error (subject to the processing mode)
- // if the timer expires before a matching response is received. There is no
- // timeout when the filter is running in asynchronous mode. Zero is a valid
- // config which means the timer will be triggered immediately. If not
- // configured, default is 200 milliseconds.
+ // Specifies the timeout for each individual message sent on the stream.
+ // Whenever the data plane sends a message on the stream that requires a
+ // response, it will reset this timer, and will stop processing and return
+ // an error (subject to the processing mode) if the timer expires before a
+ // matching response is received. There is no timeout when the filter is
+ // running in observability mode or when the body send mode is
+ // ``FULL_DUPLEX_STREAMED``. Zero is a valid config which means the timer
+ // will be triggered immediately. If not configured, default is 200
+ // milliseconds.
google.protobuf.Duration message_timeout = 7 [(validate.rules).duration = {
lte {seconds: 3600}
gte {}
@@ -228,7 +228,7 @@
// :ref:`header_prefix <envoy_v3_api_field_config.bootstrap.v3.Bootstrap.header_prefix>`
// (which is usually "x-envoy").
// Note that changing headers such as "host" or ":authority" may not in itself
- // change Envoy's routing decision, as routes can be cached. To also force the
+ // change the data plane's routing decision, as routes can be cached. To also force the
// route to be recomputed, set the
// :ref:`clear_route_cache <envoy_v3_api_field_service.ext_proc.v3.CommonResponse.clear_route_cache>`
// field to true in the same response.
@@ -256,6 +256,7 @@
// can be overridden by the response message from the external processing server
// :ref:`mode_override <envoy_v3_api_field_service.ext_proc.v3.ProcessingResponse.mode_override>`.
// If not set, ``mode_override`` API in the response message will be ignored.
+ // Mode override is not supported if the body send mode is ``FULL_DUPLEX_STREAMED``.
bool allow_mode_override = 14;
// If set to true, ignore the
@@ -270,10 +271,10 @@
// If true, send each part of the HTTP request or response specified by ``ProcessingMode``
// without pausing on filter chain iteration. It is "Send and Go" mode that can be used
- // by external processor to observe Envoy data and status. In this mode:
+ // by external processor to observe the request's data and status. In this mode:
//
- // 1. Only ``STREAMED`` body processing mode is supported and any other body processing modes will be
- // ignored. ``NONE`` mode (i.e., skip body processing) will still work as expected.
+ // 1. Only ``STREAMED`` and ``NONE`` body processing modes are supported; for any other body
+ // processing mode, the body will not be sent.
//
// 2. External processor should not send back processing response, as any responses will be ignored.
// This also means that
@@ -310,12 +311,13 @@
// Specifies the deferred closure timeout for gRPC stream that connects to external processor. Currently, the deferred stream closure
// is only used in :ref:`observability_mode <envoy_v3_api_field_extensions.filters.http.ext_proc.v3.ExternalProcessor.observability_mode>`.
// In observability mode, gRPC streams may be held open to the external processor longer than the lifetime of the regular client to
- // backend stream lifetime. In this case, Envoy will eventually timeout the external processor stream according to this time limit.
+ // backend stream lifetime. In this case, the data plane will eventually timeout the external processor stream according to this time limit.
// The default value is 5000 milliseconds (5 seconds) if not specified.
google.protobuf.Duration deferred_close_timeout = 19;
// Send body to the side stream server once it arrives without waiting for the header response from that server.
- // It only works for ``STREAMED`` body processing mode. For any other body processing modes, it is ignored.
+ // It only works for ``STREAMED`` body processing mode. For any other body
+ // processing modes, it is ignored.
// The server has two options upon receiving a header request:
//
// 1. Instant Response: send the header response as soon as the header request is received.
@@ -324,9 +326,9 @@
//
// In all scenarios, the header-body ordering must always be maintained.
//
- // If enabled Envoy will ignore the
+ // If enabled the data plane will ignore the
// :ref:`mode_override <envoy_v3_api_field_service.ext_proc.v3.ProcessingResponse.mode_override>`
- // value that the server sends in the header response. This is because Envoy may have already
+ // value that the server sends in the header response. This is because the data plane may have already
// sent the body to the server, prior to processing the header response.
bool send_body_without_waiting_for_header_response = 21;
@@ -339,6 +341,16 @@
// the ``allowed_override_modes`` allow-list below.
// Since ``request_header_mode`` is not applicable in any way, it's ignored in comparison.
repeated ProcessingMode allowed_override_modes = 22;
+
+ // Decorator to introduce custom logic that runs after the ``ProcessingRequest`` is constructed, but
+ // before it is sent to the External Processor. The ``ProcessingRequest`` may be modified.
+ //
+ // .. note::
+ // Processing request modifiers are currently in alpha.
+ //
+ // [#extension-category: envoy.http.ext_proc.processing_request_modifiers]
+ config.core.v3.TypedExtensionConfig processing_request_modifier = 25
+ [(xds.annotations.v3.field_status).work_in_progress = true];
// Decorator to introduce custom logic that runs after a message received from
// the External Processor is processed, but before continuing filter chain iteration.
@@ -349,6 +361,12 @@
// [#extension-category: envoy.http.ext_proc.response_processors]
config.core.v3.TypedExtensionConfig on_processing_response = 23
[(xds.annotations.v3.field_status).work_in_progress = true];
+
+ // Sets the HTTP status code that is returned to the client when the external processing server returns
+ // an error, fails to respond, or cannot be reached.
+ //
+ // The default status is ``HTTP 500 Internal Server Error``.
+ type.v3.HttpStatus status_on_error = 24;
}
// ExtProcHttpService is used for HTTP communication between the filter and the external processing service.
@@ -423,14 +441,15 @@
}
// Overrides that may be set on a per-route basis
-// [#next-free-field: 9]
+// [#next-free-field: 10]
message ExtProcOverrides {
// Set a different processing mode for this route than the default.
ProcessingMode processing_mode = 1;
// [#not-implemented-hide:]
// Set a different asynchronous processing option than the default.
- bool async_mode = 2;
+ // Deprecated and not implemented.
+ bool async_mode = 2 [deprecated = true, (envoy.annotations.deprecated_at_minor_version) = "3.0"];
// [#not-implemented-hide:]
// Set different optional attributes than the default setting of the
@@ -462,4 +481,11 @@
// or could not be opened. This field is the per-route override of
// :ref:`failure_mode_allow <envoy_v3_api_field_extensions.filters.http.ext_proc.v3.ExternalProcessor.failure_mode_allow>`.
google.protobuf.BoolValue failure_mode_allow = 8;
+
+ // Decorator to introduce custom logic that runs after the ``ProcessingRequest`` is constructed, but
+ // before it is sent to the External Processor. The ``ProcessingRequest`` may be modified.
+ // This is a per-route override of
+ // :ref:`processing_request_modifier <envoy_v3_api_field_extensions.filters.http.ext_proc.v3.ExternalProcessor.processing_request_modifier>`.
+ config.core.v3.TypedExtensionConfig processing_request_modifier = 9
+ [(xds.annotations.v3.field_status).work_in_progress = true];
}
envoy/extensions/filters/http/ext_proc/v3/processing_mode.proto:
--- shake256:11fcc4809401b50ceb84666b5d7dde3531baa2527bedea9f380e6034ac442db429168f63cc9fd25a059c3798663b1b7d70de33337c6c40693ebe971673a0a59a envoy/extensions/filters/http/ext_proc/v3/processing_mode.proto
+++ shake256:288e891984b853d364c541615d3cd487a5f48e82d756c8f75b949f954ce000669155b5603fd34e19a29c176d19829cfb1f796be1dbc7480917733bdd43844aa3 envoy/extensions/filters/http/ext_proc/v3/processing_mode.proto
@@ -65,8 +65,7 @@
// Do not send the body at all. This is the default.
NONE = 0;
- // Stream the body to the server in pieces as they arrive at the
- // proxy.
+ // Stream the body to the server in pieces as they are seen.
STREAMED = 1;
// Buffer the message body in memory and send the entire body at once.
@@ -79,11 +78,11 @@
// up to the buffer limit will be sent.
BUFFERED_PARTIAL = 3;
- // Envoy streams the body to the server in pieces as they arrive.
+ // The ext_proc client (the data plane) streams the body to the server in pieces as they arrive.
//
// 1) The server may choose to buffer any number chunks of data before processing them.
// After it finishes buffering, the server processes the buffered data. Then it splits the processed
- // data into any number of chunks, and streams them back to Envoy one by one.
+ // data into any number of chunks, and streams them back to the ext_proc client one by one.
// The server may continuously do so until the complete body is processed.
// The individual response chunk size is recommended to be no greater than 64K bytes, or
// :ref:`max_receive_message_length <envoy_v3_api_field_config.core.v3.GrpcService.EnvoyGrpc.max_receive_message_length>`
@@ -98,15 +97,15 @@
//
// In this body mode:
// * The corresponding trailer mode has to be set to ``SEND``.
- // * Envoy will send body and trailers (if present) to the server as they arrive.
+ // * The client will send body and trailers (if present) to the server as they arrive.
// Sending the trailers (if present) is to inform the server the complete body arrives.
- // In case there are no trailers, then Envoy will set
+ // In case there are no trailers, then the client will set
// :ref:`end_of_stream <envoy_v3_api_field_service.ext_proc.v3.HttpBody.end_of_stream>`
// to true as part of the last body chunk request to notify the server that no other data is to be sent.
// * The server needs to send
// :ref:`StreamedBodyResponse <envoy_v3_api_msg_service.ext_proc.v3.StreamedBodyResponse>`
- // to Envoy in the body response.
- // * Envoy will stream the body chunks in the responses from the server to the upstream/downstream as they arrive.
+ // to the client in the body response.
+ // * The client will stream the body chunks in the responses from the server to the upstream/downstream as they arrive.
FULL_DUPLEX_STREAMED = 4;
}
envoy/extensions/filters/http/header_to_metadata/v3/header_to_metadata.proto:
--- shake256:9820dba39ead15a6e5d67d9424be4c793ea6a035c70ebd1ddf88b4e12d7215c893e3250093ceefbb25bef9588d343e0ee0aaeef87c364bc978079e6747bdeb49 envoy/extensions/filters/http/header_to_metadata/v3/header_to_metadata.proto
+++ shake256:47a85b1ba384f1512d854424c1f56d8b385ea6444b86df61c1c4710c3e1ad7f3a33fa02802e7c75a49654da1427a0efba7764bc5916bf6de58428cd63693ded1 envoy/extensions/filters/http/header_to_metadata/v3/header_to_metadata.proto
@@ -27,6 +27,7 @@
option (udpa.annotations.versioning).previous_message_type =
"envoy.config.filter.http.header_to_metadata.v2.Config";
+ // Specifies the value type to use in metadata.
enum ValueType {
STRING = 0;
@@ -37,14 +38,18 @@
PROTOBUF_VALUE = 2;
}
- // ValueEncode defines the encoding algorithm.
+ // Specifies the encoding scheme for the value.
enum ValueEncode {
- // The value is not encoded.
+ // No encoding is applied.
NONE = 0;
// The value is encoded in `Base64 <https://tools.ietf.org/html/rfc4648#section-4>`_.
- // Note: this is mostly used for STRING and PROTOBUF_VALUE to escape the
- // non-ASCII characters in the header.
+ //
+ // .. note::
+ //
+ // This is mostly used for ``STRING`` and ``PROTOBUF_VALUE`` to escape the
+ // non-ASCII characters in the header.
+ //
BASE64 = 1;
}
@@ -74,7 +79,10 @@
//
// This is only used for :ref:`on_header_present <envoy_v3_api_field_extensions.filters.http.header_to_metadata.v3.Config.Rule.on_header_present>`.
//
- // Note: if the ``value`` field is non-empty this field should be empty.
+ // .. note::
+ //
+ // If the ``value`` field is non-empty this field should be empty.
+ //
type.matcher.v3.RegexMatchAndSubstitute regex_value_rewrite = 6
[(udpa.annotations.field_migrate).oneof_promotion = "value_type"];
@@ -106,15 +114,15 @@
(udpa.annotations.field_migrate).oneof_promotion = "header_cookie_specifier"
];
- // If the header or cookie is present, apply this metadata KeyValuePair.
+ // If the header or cookie is present, apply this metadata ``KeyValuePair``.
//
- // If the value in the KeyValuePair is non-empty, it'll be used instead
+ // If the value in the ``KeyValuePair`` is non-empty, it'll be used instead
// of the header or cookie value.
KeyValuePair on_header_present = 2 [(udpa.annotations.field_migrate).rename = "on_present"];
- // If the header or cookie is not present, apply this metadata KeyValuePair.
+ // If the header or cookie is not present, apply this metadata ``KeyValuePair``.
//
- // The value in the KeyValuePair must be set, since it'll be used in lieu
+ // The value in the ``KeyValuePair`` must be set, since it'll be used in lieu
// of the missing header or cookie value.
KeyValuePair on_header_missing = 3 [(udpa.annotations.field_migrate).rename = "on_missing"];
@@ -130,4 +138,15 @@
// The list of rules to apply to responses.
repeated Rule response_rules = 2;
+
+ // Optional prefix to use when emitting filter statistics. When configured,
+ // statistics are emitted with the prefix ``http_filter_name.<stat_prefix>``.
+ //
+ // This emits statistics such as:
+ //
+ // - ``http_filter_name.my_header_converter.rules_processed``
+ // - ``http_filter_name.my_header_converter.metadata_added``
+ //
+ // If not configured, no statistics are emitted.
+ string stat_prefix = 3;
}
envoy/extensions/filters/http/oauth2/v3/oauth.proto:
--- shake256:eb0736ac1eaf9f2c5910ca6ba32b3f9195a12fc020aef36eb10294be01dc188ef14b6b0627557ac851f3eab1d7434764b65fbaa268f727a0372ce4d7d653ca77 envoy/extensions/filters/http/oauth2/v3/oauth.proto
+++ shake256:128aa5a627b73673aa916bb0212ebc79da8333a669146775901af0ac3b97a60267968c918eede06673d64852613fd9f0af7a0b7f3ea0be3e6c6646d928d5dd09 envoy/extensions/filters/http/oauth2/v3/oauth.proto
@@ -126,7 +126,7 @@
// OAuth config
//
-// [#next-free-field: 26]
+// [#next-free-field: 27]
message OAuth2Config {
enum AuthType {
// The ``client_id`` and ``client_secret`` will be sent in the URL encoded request body.
@@ -254,6 +254,11 @@
// If not specified, defaults to ``600s`` (10 minutes), which should provide sufficient time
// for users to complete the OAuth2 authorization flow.
google.protobuf.Duration code_verifier_token_expires_in = 25;
+
+ // Disable token encryption. When set to true, both the access token and the ID token will be stored in plain text.
+ // This option should only be used in secure environments where token encryption is not required.
+ // Default is false (tokens are encrypted).
+ bool disable_token_encryption = 26;
}
// Filter config.
envoy/extensions/filters/http/on_demand/v3/on_demand.proto:
--- shake256:b2b81e43eb2abcb265d8f8eefaa3ed528c6ce42a02874adc5ccabe5ee7a70d4a59de073a20d939910b815abeaf0bbc001c4b97d6c73a3732301589b8c4711980 envoy/extensions/filters/http/on_demand/v3/on_demand.proto
+++ shake256:fd2c273b62f3393a47ba7268781f55343d960d6d73d11f37fadb455f1dd4c1d4180fa119a5599ba3434e1032314cc1bf08482ade1ec956fdde963c996aacdb10 envoy/extensions/filters/http/on_demand/v3/on_demand.proto
@@ -8,7 +8,6 @@
import "udpa/annotations/status.proto";
import "udpa/annotations/versioning.proto";
-import "validate/validate.proto";
option java_package = "io.envoyproxy.envoy.extensions.filters.http.on_demand.v3";
option java_outer_classname = "OnDemandProto";
@@ -29,7 +28,7 @@
message OnDemandCds {
// A configuration source for the service that will be used for
// on-demand cluster discovery.
- config.core.v3.ConfigSource source = 1 [(validate.rules).message = {required: true}];
+ config.core.v3.ConfigSource source = 1;
// xdstp:// resource locator for on-demand cluster collection.
string resources_locator = 2;
envoy/extensions/filters/http/ratelimit/v3/rate_limit.proto:
--- shake256:595b3c1e7ea15d538d8dd9a6384df4ab047f160e0216bc483d6295e6ce590f229be2dd9ade8e165bc128ba73d10f89abfcae65e8696aae970589c728b08477d0 envoy/extensions/filters/http/ratelimit/v3/rate_limit.proto
+++ shake256:f6b9dcc9dfb1e6fbaa6b7a84c89c621eb79ec5c7341c179bbe08c3382de9aa3ed34fb549aa090e2c770693b966b3ca9851caf6746064d71c82909c549b2961d7 envoy/extensions/filters/http/ratelimit/v3/rate_limit.proto
@@ -23,7 +23,7 @@
// Rate limit :ref:`configuration overview <config_http_filters_rate_limit>`.
// [#extension: envoy.filters.http.ratelimit]
-// [#next-free-field: 17]
+// [#next-free-field: 18]
message RateLimit {
option (udpa.annotations.versioning).previous_message_type =
"envoy.config.filter.http.rate_limit.v2.RateLimit";
@@ -167,6 +167,25 @@
// This means that when the rate limit service is unavailable, 50% of requests will be denied
// (fail closed) and 50% will be allowed (fail open).
config.core.v3.RuntimeFractionalPercent failure_mode_deny_percent = 16;
+
+ // Rate limit configuration that is used to generate a list of descriptor entries based on
+ // the request context. The generated entries will be sent to the rate limit service.
+ // If this is set, then
+ // :ref:`VirtualHost.rate_limits<envoy_v3_api_field_config.route.v3.VirtualHost.rate_limits>` or
+ // :ref:`RouteAction.rate_limits<envoy_v3_api_field_config.route.v3.RouteAction.rate_limits>` fields
+ // will be ignored. However, :ref:`RateLimitPerRoute.rate_limits<envoy_v3_api_field_extensions.filters.http.ratelimit.v3.RateLimitPerRoute.rate_limits>`
+ // will take precedence over this field.
+ //
+ // .. note::
+ // Not all configuration fields of
+ // :ref:`rate limit config <envoy_v3_api_msg_config.route.v3.RateLimit>` is supported at here.
+ // Following fields are not supported:
+ //
+ // 1. :ref:`rate limit stage <envoy_v3_api_field_config.route.v3.RateLimit.stage>`.
+ // 2. :ref:`dynamic metadata <envoy_v3_api_field_config.route.v3.RateLimit.Action.dynamic_metadata>`.
+ // 3. :ref:`disable_key <envoy_v3_api_field_config.route.v3.RateLimit.disable_key>`.
+ // 4. :ref:`override limit <envoy_v3_api_field_config.route.v3.RateLimit.limit>`.
+ repeated config.route.v3.RateLimit rate_limits = 17;
}
message RateLimitPerRoute {
@@ -210,8 +229,9 @@
// the request context. The generated entries will be used to find one or multiple matched rate
// limit rule from the ``descriptors``.
// If this is set, then
- // :ref:`VirtualHost.rate_limits<envoy_v3_api_field_config.route.v3.VirtualHost.rate_limits>` or
- // :ref:`RouteAction.rate_limits<envoy_v3_api_field_config.route.v3.RouteAction.rate_limits>` fields
+ // :ref:`VirtualHost.rate_limits<envoy_v3_api_field_config.route.v3.VirtualHost.rate_limits>`,
+ // :ref:`RouteAction.rate_limits<envoy_v3_api_field_config.route.v3.RouteAction.rate_limits>` and
+ // :ref:`RateLimit.rate_limits<envoy_v3_api_field_extensions.filters.http.ratelimit.v3.RateLimit.rate_limits>` fields
// will be ignored.
//
// .. note::
envoy/extensions/filters/http/stateful_session/v3/stateful_session.proto:
--- shake256:c29c6d22b41d00bd1a0c1ef267637fc69e8e43dcbe035dca36946ca152031f28cc5fb3773ece8c10b5051c9bf41f183abe458845d060c5b154c34265cf5368bf envoy/extensions/filters/http/stateful_session/v3/stateful_session.proto
+++ shake256:da97c315f9061cb3ed2e89bd696f2f6adc39416b878ae97e5727af3f7b85523eb976d0ff80b28d93cd51923fb49113b14fd54ea90861caed40e570ae541899da envoy/extensions/filters/http/stateful_session/v3/stateful_session.proto
@@ -29,6 +29,15 @@
// which allows Envoy to fall back to its load balancing mechanism. In this case, if the requested destination is not
// found, the request will be routed according to the load balancing algorithm.
bool strict = 2;
+
+ // Optional stat prefix. If specified, the filter will emit statistics in the
+ // ``http.<stat_prefix>.stateful_session.<stat_prefix>.`` namespace. If not specified, no statistics will be emitted.
+ //
+ // .. note::
+ //
+ // Per-route configuration overrides do not support statistics and will not emit stats even if this field is set
+ // in the per-route config.
+ string stat_prefix = 3;
}
message StatefulSessionPerRoute {
envoy/extensions/filters/http/tap/v3/tap.proto:
--- shake256:b952bd81dd83e9e92746b3115b433f59177125187778bae5ce268e5d74fa54116c38560118b2d3f2d9ac2526ebd34b372d1311728e0b21ce2aec9bf9b4df7069 envoy/extensions/filters/http/tap/v3/tap.proto
+++ shake256:7cf78e9c1627775630db0c853ca3602c21b43a5d2abae605e1e15ae338498104787d3a8ccebeb93e93ed60f546c1ba3734c4201e9093e245b02b6fb65e6efe86 envoy/extensions/filters/http/tap/v3/tap.proto
@@ -34,4 +34,7 @@
// Indicates whether report downstream connection info
bool record_downstream_connection = 3;
+
+ // If enabled, upstream connection information will be reported.
+ bool record_upstream_connection = 4;
}
envoy/extensions/filters/http/thrift_to_metadata/v3/thrift_to_metadata.proto:
--- shake256:3fece685b44ed055e4973a2c99d778057b4b9afcfda5994363a78c6576d336dd2b3de619bd2ed79b8e075a93e9448962a8d7e1bd053bee8cecb3bad9288c32a3 envoy/extensions/filters/http/thrift_to_metadata/v3/thrift_to_metadata.proto
+++ shake256:43e45fb3e4a545ad85e52c78ab7a51420e9394fd1f861c4dabd90a19c084721263ae2e4aba91ea48fb9d1f0c1a8ba626850d45cfbcac18042ef50581fafaae9a envoy/extensions/filters/http/thrift_to_metadata/v3/thrift_to_metadata.proto
@@ -69,8 +69,6 @@
}
message FieldSelector {
- option (xds.annotations.v3.message_status).work_in_progress = true;
-
// field name to log
string name = 1 [(validate.rules).string = {min_len: 1}];
@@ -83,7 +81,9 @@
// [#next-free-field: 6]
message Rule {
- // The field to match on. If set, takes precedence over field_selector.
+ // The field to match on.
+ // :ref:`field_selector<envoy_v3_api_field_extensions.filters.http.thrift_to_metadata.v3.Rule.field_selector>`
+ // takes precedence if both are set.
Field field = 1;
// Specifies that a match will be performed on the value of a field in the thrift body.
@@ -123,11 +123,11 @@
// bool bar(1: i32 id, 2: Info info);
// }
//
- FieldSelector field_selector = 2 [(xds.annotations.v3.field_status).work_in_progress = true];
+ FieldSelector field_selector = 2;
// If specified, :ref:`field_selector<envoy_v3_api_field_extensions.filters.http.thrift_to_metadata.v3.Rule.field_selector>`
// will be used to extract the field value *only* on the thrift message with method name.
- string method_name = 3 [(xds.annotations.v3.field_status).work_in_progress = true];
+ string method_name = 3;
// The key-value pair to set in the *filter metadata* if the field is present
// in *thrift metadata*.
envoy/extensions/filters/listener/tls_inspector/v3/tls_inspector.proto:
--- shake256:cfa0377e1e757d077ba5ce2367ce376d2e02fa8af8e9d17081ce3501c15672485aae78a5096e34615fde5d4c26f3e7074e17e16de774ac82e240d9da8c4cf97b envoy/extensions/filters/listener/tls_inspector/v3/tls_inspector.proto
+++ shake256:99340ca1d2b3bf1eecd55bc3e8512fcf36122a457d52627fac20b274a804c12a75057f95d1f06098fe53e1020007197bc09309bf6c8222a9906662b76bcd024e envoy/extensions/filters/listener/tls_inspector/v3/tls_inspector.proto
@@ -32,8 +32,8 @@
// The size in bytes of the initial buffer requested by the tls_inspector.
// If the filter needs to read additional bytes from the socket, the
- // filter will double the buffer up to it's default maximum of 64KiB.
- // If this size is not defined, defaults to maximum 64KiB that the
+ // filter will double the buffer up to it's default maximum of 16KiB.
+ // If this size is not defined, defaults to maximum 16KiB that the
// tls inspector will consume.
google.protobuf.UInt32Value initial_read_buffer_size = 2
[(validate.rules).uint32 = {lt: 65537 gt: 255}];
envoy/extensions/filters/network/ext_authz/v3/ext_authz.proto:
--- shake256:3064cddb46019f51a271eb488c705ff3749ca535b63b2769f8cb2ca9b76df9cd71b20eba79479a7682e9c5339bf8761c03e801888f64ac305444fb056170f713 envoy/extensions/filters/network/ext_authz/v3/ext_authz.proto
+++ shake256:8ec4fe05b983a78569c3685a50e6b3b64124c431c608c880a3b3af5b0a8b568f131ae9e4edddfc7eaa84ec91097f43aa07587560f2f574bca7a35609a4214a06 envoy/extensions/filters/network/ext_authz/v3/ext_authz.proto
@@ -25,7 +25,7 @@
// gRPC Authorization API defined by
// :ref:`CheckRequest <envoy_v3_api_msg_service.auth.v3.CheckRequest>`.
// A failed check will cause this filter to close the TCP connection.
-// [#next-free-field: 9]
+// [#next-free-field: 10]
message ExtAuthz {
option (udpa.annotations.versioning).previous_message_type =
"envoy.config.filter.network.ext_authz.v2.ExtAuthz";
@@ -68,4 +68,12 @@
// When this field is true, Envoy will include the SNI name used for TLSClientHello, if available, in the
// :ref:`tls_session<envoy_v3_api_field_service.auth.v3.AttributeContext.tls_session>`.
bool include_tls_session = 8;
+
+ // When set to ``true``, the filter will send a TLS ``access_denied(49)`` alert before closing
+ // the connection when authorization is denied. This provides better visibility to TLS clients
+ // about the reason for connection closure. This alert is only sent for TLS connections. The
+ // non-TLS connections will be closed without sending an alert.
+ //
+ // Defaults to ``false``.
+ bool send_tls_alert_on_denial = 9;
}
envoy/extensions/filters/network/ext_proc/v3/ext_proc.proto:
--- shake256:8685d02bff664dfe96b7990912e40660d3e9945a9107152de7364a487a6f886c20d6af61cbd803bb7d93b1a3b1fd78e8f2e1d6d70c5424dadcf7727fedbe9aab envoy/extensions/filters/network/ext_proc/v3/ext_proc.proto
+++ shake256:8118f88a7d299a9b7a57a7a94aa210aca62d813d5e4d64cca7c913cbe8334daa5bf391ae923972f6abbbee1e223d62dcb39d823d26c5a1d487d1730c552bc10c envoy/extensions/filters/network/ext_proc/v3/ext_proc.proto
@@ -45,11 +45,9 @@
// prematurely with an error, the filter will fail, leading to the close of connection.
// With this parameter set to true, however, then if the gRPC stream is prematurely closed
// or could not be opened, processing continues without error.
- // [#not-implemented-hide:]
bool failure_mode_allow = 2;
// Options for controlling processing behavior.
- // [#not-implemented-hide:]
ProcessingMode processing_mode = 3;
// Specifies the timeout for each individual message sent on the stream and
@@ -57,7 +55,6 @@
// the proxy sends a message on the stream that requires a response, it will
// reset this timer, and will stop processing and return an error (subject
// to the processing mode) if the timer expires. Default is 200 ms.
- // [#not-implemented-hide:]
google.protobuf.Duration message_timeout = 4 [(validate.rules).duration = {
lte {seconds: 3600}
gte {}
envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.proto:
--- shake256:b3d867b0a9c2e20cb73635d31678949447f24b6476822b96a7954b70f8e0c3630fa44b542dfcc6c8beb76af5308aba3a8cf4810a976ed0ff307a2db48e39b775 envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.proto
+++ shake256:75c59a779d426c636bff95bfe400b99da0138fc3e3949fd2d06425cdb77fb732a1d3454a48661100941d1895d79d17e38f335418d04cf9bd85f511219d196974 envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.proto
@@ -37,7 +37,7 @@
// HTTP connection manager :ref:`configuration overview <config_http_conn_man>`.
// [#extension: envoy.filters.network.http_connection_manager]
-// [#next-free-field: 59]
+// [#next-free-field: 60]
message HttpConnectionManager {
option (udpa.annotations.versioning).previous_message_type =
"envoy.config.filter.network.http_connection_manager.v2.HttpConnectionManager";
@@ -527,16 +527,6 @@
// is terminated with a 408 Request Timeout error code if no upstream response
// header has been received, otherwise a stream reset occurs.
//
- // This timeout also specifies the amount of time that Envoy will wait for the peer to open enough
- // window to write any remaining stream data once the entirety of stream data (local end stream is
- // true) has been buffered pending available window. In other words, this timeout defends against
- // a peer that does not release enough window to completely write the stream, even though all
- // data has been proxied within available flow control windows. If the timeout is hit in this
- // case, the :ref:`tx_flush_timeout <config_http_conn_man_stats_per_codec>` counter will be
- // incremented. Note that :ref:`max_stream_duration
- // <envoy_v3_api_field_config.core.v3.HttpProtocolOptions.max_stream_duration>` does not apply to
- // this corner case.
- //
// If the :ref:`overload action <config_overload_manager_overload_actions>` "envoy.overload_actions.reduce_timeouts"
// is configured, this timeout is scaled according to the value for
// :ref:`HTTP_DOWNSTREAM_STREAM_IDLE <envoy_v3_api_enum_value_config.overload.v3.ScaleTimersOverloadActionConfig.TimerType.HTTP_DOWNSTREAM_STREAM_IDLE>`.
@@ -549,8 +539,28 @@
//
// A value of 0 will completely disable the connection manager stream idle
// timeout, although per-route idle timeout overrides will continue to apply.
+ //
+ // This timeout is also used as the default value for :ref:`stream_flush_timeout
+ // <envoy_v3_api_field_extensions.filters.network.http_connection_manager.v3.HttpConnectionManager.stream_flush_timeout>`.
google.protobuf.Duration stream_idle_timeout = 24
[(udpa.annotations.security).configure_for_untrusted_downstream = true];
+
+ // The stream flush timeout for connections managed by the connection manager.
+ //
+ // If not specified, the value of stream_idle_timeout is used. This is for backwards compatibility
+ // since this was the original behavior. In essence this timeout is an override for the
+ // stream_idle_timeout that applies specifically to the end of stream flush case.
+ //
+ // This timeout specifies the amount of time that Envoy will wait for the peer to open enough
+ // window to write any remaining stream data once the entirety of stream data (local end stream is
+ // true) has been buffered pending available window. In other words, this timeout defends against
+ // a peer that does not release enough window to completely write the stream, even though all
+ // data has been proxied within available flow control windows. If the timeout is hit in this
+ // case, the :ref:`tx_flush_timeout <config_http_conn_man_stats_per_codec>` counter will be
+ // incremented. Note that :ref:`max_stream_duration
+ // <envoy_v3_api_field_config.core.v3.HttpProtocolOptions.max_stream_duration>` does not apply to
+ // this corner case.
+ google.protobuf.Duration stream_flush_timeout = 59;
// The amount of time that Envoy will wait for the entire request to be received.
// The timer is activated when the request is initiated, and is disarmed when the last byte of the
@@ -1036,7 +1046,7 @@
"envoy.config.filter.network.http_connection_manager.v2.Rds";
// Configuration source specifier for RDS.
- config.core.v3.ConfigSource config_source = 1 [(validate.rules).message = {required: true}];
+ config.core.v3.ConfigSource config_source = 1;
// The name of the route configuration. This name will be passed to the RDS
// API. This allows an Envoy configuration with multiple HTTP listeners (and
envoy/extensions/filters/network/tcp_proxy/v3/tcp_proxy.proto:
--- shake256:5e38beface5c951d3cc4a05c15a220101e1a51a5c298f07dc7dfb6e0a4eae782350b496828a814086e8840eb0161203de08fcb9f6fcfffd62b038c9064d801e8 envoy/extensions/filters/network/tcp_proxy/v3/tcp_proxy.proto
+++ shake256:3a48c8154c692475e6a12b5e8766e4e07895405dc852686b736ecef833b1131261e0feee837354e2f395557d8607802386168ada138656c8099f95cb23ab42d3 envoy/extensions/filters/network/tcp_proxy/v3/tcp_proxy.proto
@@ -7,7 +7,9 @@
import "envoy/config/core/v3/base.proto";
import "envoy/config/core/v3/config_source.proto";
import "envoy/config/core/v3/proxy_protocol.proto";
+import "envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.proto";
import "envoy/type/v3/hash_policy.proto";
+import "envoy/type/v3/percent.proto";
import "google/protobuf/duration.proto";
import "google/protobuf/wrappers.proto";
@@ -27,14 +29,13 @@
// TCP Proxy :ref:`configuration overview <config_network_filters_tcp_proxy>`.
// [#extension: envoy.filters.network.tcp_proxy]
-// [#next-free-field: 20]
+// [#next-free-field: 21]
message TcpProxy {
option (udpa.annotations.versioning).previous_message_type =
"envoy.config.filter.network.tcp_proxy.v2.TcpProxy";
- // 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.
+ // Allows specification of multiple upstream clusters along with weights indicating the percentage of
+ // traffic forwarded to each cluster. The cluster selection is based on these weights.
message WeightedCluster {
option (udpa.annotations.versioning).previous_message_type =
"envoy.config.filter.network.tcp_proxy.v2.TcpProxy.WeightedCluster";
@@ -60,29 +61,29 @@
config.core.v3.Metadata metadata_match = 3;
}
- // Specifies one or more upstream clusters associated with the route.
+ // Specifies the upstream clusters associated with this configuration.
repeated ClusterWeight clusters = 1 [(validate.rules).repeated = {min_items: 1}];
}
// Configuration for tunneling TCP over other transports or application layers.
- // Tunneling is supported over both HTTP/1.1 and HTTP/2. Upstream protocol is
+ // Tunneling is supported over HTTP/1.1 and HTTP/2. The upstream protocol is
// determined by the cluster configuration.
- // [#next-free-field: 7]
+ // [#next-free-field: 10]
message TunnelingConfig {
option (udpa.annotations.versioning).previous_message_type =
"envoy.config.filter.network.tcp_proxy.v2.TcpProxy.TunnelingConfig";
// The hostname to send in the synthesized CONNECT headers to the upstream proxy.
- // This field evaluates command operators if set, otherwise returns hostname as is.
+ // This field evaluates command operators if present; otherwise, the value is used as-is.
//
- // Example: dynamically set hostname using downstream SNI
+ // For example, dynamically set the hostname using downstream SNI:
//
// .. code-block:: yaml
//
// tunneling_config:
// hostname: "%REQUESTED_SERVER_NAME%:443"
//
- // Example: dynamically set hostname using dynamic metadata
+ // For example, dynamically set the hostname using dynamic metadata:
//
// .. code-block:: yaml
//
@@ -91,62 +92,92 @@
//
string hostname = 1 [(validate.rules).string = {min_len: 1}];
- // Use POST method instead of CONNECT method to tunnel the TCP stream.
- // The 'protocol: bytestream' header is also NOT set for HTTP/2 to comply with the spec.
+ // Use the ``POST`` method instead of the ``CONNECT`` method to tunnel the TCP stream.
+ // The ``protocol: bytestream`` header is not set for HTTP/2 to comply with the specification.
//
- // The upstream proxy is expected to convert POST payload as raw TCP.
+ // The upstream proxy is expected to interpret the POST payload as raw TCP.
bool use_post = 2;
- // Additional request headers to upstream proxy. This is mainly used to
- // trigger upstream to convert POST requests back to CONNECT requests.
+ // Additional request headers to send to the upstream proxy. This is mainly used to
+ // trigger the upstream to convert POST requests back to CONNECT requests.
//
- // Neither ``:-prefixed`` pseudo-headers nor the Host: header can be overridden.
+ // Neither ``:``-prefixed pseudo-headers like ``:path`` nor the ``host`` header can be overridden.
repeated config.core.v3.HeaderValueOption headers_to_add = 3
[(validate.rules).repeated = {max_items: 1000}];
- // Save the response headers to the downstream info filter state for consumption
- // by the network filters. The filter state key is ``envoy.tcp_proxy.propagate_response_headers``.
+ // Save response headers to the downstream connection's filter state for consumption
+ // by network filters. The filter state key is ``envoy.tcp_proxy.propagate_response_headers``.
bool propagate_response_headers = 4;
- // The path used with POST method. Default path is ``/``. If post path is specified and
+ // The path used with the POST method. The default path is ``/``. If this field is specified and
// :ref:`use_post field <envoy_v3_api_field_extensions.filters.network.tcp_proxy.v3.TcpProxy.TunnelingConfig.use_post>`
- // isn't true, it will be rejected.
+ // is not set to true, the configuration will be rejected.
string post_path = 5;
- // Save the response trailers to the downstream info filter state for consumption
- // by the network filters. The filter state key is ``envoy.tcp_proxy.propagate_response_trailers``.
+ // Save response trailers to the downstream connection's filter state for consumption
+ // by network filters. The filter state key is ``envoy.tcp_proxy.propagate_response_trailers``.
bool propagate_response_trailers = 6;
+
+ // The configuration of the request ID extension used for generation, validation, and
+ // associated tracing operations when tunneling.
+ //
+ // If this field is set, a request ID is generated using the specified extension. If
+ // this field is not set, no request ID is generated.
+ //
+ // When a request ID is generated, it is also stored in the downstream connection's
+ // dynamic metadata under the namespace ``envoy.filters.network.tcp_proxy`` with the key
+ // ``tunnel_request_id`` to allow emission from TCP proxy access logs via the
+ // ``%DYNAMIC_METADATA(envoy.filters.network.tcp_proxy:tunnel_request_id)%`` formatter.
+ // [#extension-category: envoy.request_id]
+ http_connection_manager.v3.RequestIDExtension request_id_extension = 7;
+
+ // The request header name to use for emitting the generated request ID on the tunneling
+ // HTTP request.
+ //
+ // If not specified or set to an empty string, the default header name ``x-request-id`` is
+ // used.
+ //
+ // .. note::
+ // This setting does not alter the internal request ID handling elsewhere in Envoy and
+ // only controls the header emitted on the tunneling request.
+ string request_id_header = 8;
+
+ // The dynamic metadata key to use when storing the generated request ID. The metadata is
+ // stored under the namespace ``envoy.filters.network.tcp_proxy``.
+ //
+ // If not specified or set to an empty string, the default key ``tunnel_request_id`` is used.
+ // This enables customizing the key used by access log formatters such as
+ // ``%DYNAMIC_METADATA(envoy.filters.network.tcp_proxy:<key>)%``.
+ string request_id_metadata_key = 9;
}
message OnDemand {
- // An optional configuration for on-demand cluster discovery
- // service. If not specified, the on-demand cluster discovery will
- // be disabled. When it's specified, the filter will pause a request
- // to an unknown cluster and will begin a cluster discovery
- // process. When the discovery is finished (successfully or not),
- // the request will be resumed.
+ // Optional configuration for the on-demand cluster discovery service.
+ // If not specified, on-demand cluster discovery is disabled. When specified, the filter pauses a request
+ // to an unknown cluster and begins a cluster discovery process. When discovery completes (successfully
+ // or not), the request is resumed.
config.core.v3.ConfigSource odcds_config = 1;
// xdstp:// resource locator for on-demand cluster collection.
// [#not-implemented-hide:]
string resources_locator = 2;
- // The timeout for on demand cluster lookup. If the CDS cannot return the required cluster,
+ // The timeout for on-demand cluster lookup. If the CDS cannot return the required cluster,
// the downstream request will be closed with the error code detail NO_CLUSTER_FOUND.
// [#not-implemented-hide:]
google.protobuf.Duration timeout = 3;
}
message TcpAccessLogOptions {
- // The interval to flush access log. The TCP proxy will flush only one access log when the connection
- // is closed by default. If this field is set, the TCP proxy will flush access log periodically with
- // the specified interval.
+ // The interval for flushing access logs. By default, the TCP proxy flushes a single access log when the
+ // connection is closed. If this field is set, the TCP proxy flushes access logs periodically at the
+ // specified interval.
// The interval must be at least 1ms.
google.protobuf.Duration access_log_flush_interval = 1
[(validate.rules).duration = {gte {nanos: 1000000}}];
- // If set to true, access log will be flushed when the TCP proxy has successfully established a
- // connection with the upstream. If the connection failed, the access log will not be flushed.
+ // If set to true, the access log is flushed when the TCP proxy successfully establishes a
+ // connection with the upstream. If the connection fails, the access log is not flushed.
bool flush_access_log_on_connected = 2;
}
@@ -164,9 +195,8 @@
// The upstream cluster to connect to.
string cluster = 2;
- // 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.
+ // Multiple upstream clusters can be specified. The request is routed to one of the upstream clusters
+ // based on the weights assigned to each cluster.
WeightedCluster weighted_clusters = 10;
}
@@ -182,16 +212,14 @@
// for load balancing. The filter name should be specified as ``envoy.lb``.
config.core.v3.Metadata metadata_match = 9;
- // The idle timeout for connections managed by the TCP proxy filter. The idle timeout
- // is defined as the period in which there are no bytes sent or received on either
- // the upstream or downstream connection. If not set, the default idle timeout is 1 hour. If set
- // to 0s, the timeout will be disabled.
- // It is possible to dynamically override this configuration by setting a per-connection filter
- // state object for the key ``envoy.tcp_proxy.per_connection_idle_timeout_ms``.
+ // The idle timeout for connections managed by the TCP proxy filter. The idle timeout is defined as the
+ // period in which there are no bytes sent or received on either the upstream or downstream connection.
+ // If not set, the default idle timeout is 1 hour. If set to ``0s``, the timeout is disabled.
+ // It is possible to dynamically override this configuration by setting a per-connection filter state
+ // object for the key ``envoy.tcp_proxy.per_connection_idle_timeout_ms``.
//
// .. warning::
- // Disabling this timeout has a highly likelihood of yielding connection leaks due to lost TCP
- // FIN packets, etc.
+ // Disabling this timeout is likely to yield connection leaks due to lost TCP FIN packets, etc.
google.protobuf.Duration idle_timeout = 8;
// [#not-implemented-hide:] The idle timeout for connections managed by the TCP proxy
@@ -205,8 +233,7 @@
// [#not-implemented-hide:]
google.protobuf.Duration upstream_idle_timeout = 4;
- // Configuration for :ref:`access logs <arch_overview_access_logs>`
- // emitted by the this tcp_proxy.
+ // Configuration for :ref:`access logs <arch_overview_access_logs>` emitted by this TCP proxy.
repeated config.accesslog.v3.AccessLog access_log = 5;
// The maximum number of unsuccessful connection attempts that will be made before
@@ -221,19 +248,25 @@
// limited to 1.
repeated type.v3.HashPolicy hash_policy = 11 [(validate.rules).repeated = {max_items: 1}];
- // If set, this configures tunneling, e.g. configuration options to tunnel TCP payload over
- // HTTP CONNECT. If this message is absent, the payload will be proxied upstream as per usual.
- // It is possible to dynamically override this configuration and disable tunneling per connection,
- // by setting a per-connection filter state object for the key ``envoy.tcp_proxy.disable_tunneling``.
+ // If set, this configures tunneling, for example configuration options to tunnel TCP payload over
+ // HTTP CONNECT. If this message is absent, the payload is proxied upstream as usual.
+ // It is possible to dynamically override this configuration and disable tunneling per connection by
+ // setting a per-connection filter state object for the key ``envoy.tcp_proxy.disable_tunneling``.
TunnelingConfig tunneling_config = 12;
- // The maximum duration of a connection. The duration is defined as the period since a connection
- // was established. If not set, there is no max duration. When max_downstream_connection_duration
- // is reached the connection will be closed. Duration must be at least 1ms.
+ // The maximum duration of a connection. The duration is defined as the period since a connection was
+ // established. If not set, there is no maximum duration. When ``max_downstream_connection_duration`` is
+ // reached, the connection is closed. The duration must be at least ``1ms``.
google.protobuf.Duration max_downstream_connection_duration = 13
[(validate.rules).duration = {gte {nanos: 1000000}}];
- // Note that if both this field and :ref:`access_log_flush_interval
+ // Percentage-based jitter for ``max_downstream_connection_duration``. The jitter increases the
+ // ``max_downstream_connection_duration`` by a random duration up to the provided percentage.
+ // This field is ignored if ``max_downstream_connection_duration`` is not set. If not set, no jitter
+ // is added.
+ type.v3.Percent max_downstream_connection_duration_jitter_percentage = 20;
+
+ // If both this field and :ref:`access_log_flush_interval
// <envoy_v3_api_field_extensions.filters.network.tcp_proxy.v3.TcpProxy.TcpAccessLogOptions.access_log_flush_interval>`
// are specified, the former (deprecated field) is ignored.
//
@@ -247,7 +280,7 @@
(envoy.annotations.deprecated_at_minor_version) = "3.0"
];
- // Note that if both this field and :ref:`flush_access_log_on_connected
+ // If both this field and :ref:`flush_access_log_on_connected
// <envoy_v3_api_field_extensions.filters.network.tcp_proxy.v3.TcpProxy.TcpAccessLogOptions.flush_access_log_on_connected>`
// are specified, the former (deprecated field) is ignored.
//
@@ -258,21 +291,22 @@
bool flush_access_log_on_connected = 16
[deprecated = true, (envoy.annotations.deprecated_at_minor_version) = "3.0"];
- // Additional access log options for TCP Proxy.
+ // Additional access log options for the TCP proxy.
TcpAccessLogOptions access_log_options = 17;
- // If set, the specified PROXY protocol TLVs (Type-Length-Value) will be added to the PROXY protocol
- // state created by the TCP proxy filter. These TLVs will be sent in the PROXY protocol v2 header
- // to upstream.
+ // If set, the specified ``PROXY`` protocol TLVs (Type-Length-Value) are added to the ``PROXY`` protocol state
+ // created by the TCP proxy filter. These TLVs are sent in the PROXY protocol v2 header to the upstream.
//
- // This field only takes effect when the TCP proxy filter is creating new PROXY protocol
- // state and there is an upstream proxy protocol transport socket configured in the cluster.
- // If the connection already contains PROXY protocol state (including any TLVs) parsed by a
- // downstream proxy protocol listener filter, the TLVs specified here are ignored.
+ // This field only takes effect when the TCP proxy filter is creating new ``PROXY`` protocol state and an
+ // upstream proxy protocol transport socket is configured in the cluster. If the connection already
+ // contains ``PROXY`` protocol state (including any TLVs) parsed by a downstream proxy protocol listener
+ // upstream proxy protocol transport socket is configured in the cluster. If the connection already
+ // contains PROXY protocol state (including any TLVs) parsed by a downstream proxy protocol listener
+ // filter, the TLVs specified here are ignored.
//
// .. note::
- // To ensure specified TLVs are allowed in the upstream PROXY protocol header, you must also
- // configure the passthrough TLVs on the upstream proxy protocol transport. See
+ // To ensure the specified TLVs are allowed in the upstream ``PROXY`` protocol header, you must also
+ // configure passthrough TLVs on the upstream proxy protocol transport. See
// :ref:`core.v3.ProxyProtocolConfig.pass_through_tlvs <envoy_v3_api_field_config.core.v3.ProxyProtocolConfig.pass_through_tlvs>`
// for details.
repeated config.core.v3.TlvEntry proxy_protocol_tlvs = 19;
envoy/extensions/filters/udp/dns_filter/v3/dns_filter.proto:
--- shake256:da97414bfcf74c6437aa405054365fa1d89e56778fab0510a672df7847771316083bc00c0cece2ce3ddfe828425bef3b9c19ead7089067ab2e7c9d93e54ead74 envoy/extensions/filters/udp/dns_filter/v3/dns_filter.proto
+++ shake256:636af6b3bc6d3dc404d5e6e812088126624b82cfcd0c5bb5922e242e7a5f6e449ca990dbab2614e0130d88377efdce6d075bd1911731fca11e14eaf7b945150e envoy/extensions/filters/udp/dns_filter/v3/dns_filter.proto
@@ -102,6 +102,13 @@
// Client context configuration controls Envoy's behavior when it must use external
// resolvers to answer a query. This object is optional and if omitted instructs
- // the filter to resolve queries from the data in the server_config
+ // the filter to resolve queries from the data in the server_config.
+ // Also, if ``client_config`` is omitted, here is the Envoy's behavior to create DNS resolver:
+ //
+ // 1. If :ref:`typed_dns_resolver_config <envoy_v3_api_field_config.bootstrap.v3.Bootstrap.typed_dns_resolver_config>`
+ // is not empty, uses it.
+ //
+ // 2. Otherwise, uses the default c-ares DNS resolver.
+ //
ClientContextConfig client_config = 3;
}
envoy/extensions/formatter/cel/v3/cel.proto:
--- shake256:418871dbaadf7051a0d5b1e65711dd249b7f8f9b3c4bbd58c156f7f1349fdc791879ac3a09ed762e2449b67f146c5b2a0a357f55bc1e2e236bd0ad0affc757ba envoy/extensions/formatter/cel/v3/cel.proto
+++ shake256:98b4491dad61ce1a62c98a1e229268e712489637a1dbc034c37dc031d42039921071f4396bf583fdebbc731db21196e192bd4c90f847caf51a90c8c54b84775a envoy/extensions/formatter/cel/v3/cel.proto
@@ -30,6 +30,23 @@
// * ``%CEL(request.headers['x-envoy-original-path']):10%``
// * ``%CEL(request.headers['x-log-mtls'] || request.url_path.contains('v1beta3'))%``
+// Alternatively: %TYPED_CEL(EXPRESSION):Z%
+// When using a non-text access log format like JSON, this format command is
+// able to emit values of non-string types, like number, boolean, and null,
+// based on the output of the CEL expression. It otherwise functions the same as
+// %CEL%. CEL types not native to JSON are coerced as follows:
+//
+// * Bytes are base64 encoded to produce a string.
+// * Durations are stringified as a count of seconds, e.g. `duration("1h30m")`
+// becomes "5400s".
+// * Timestamps are formatted to UTC, e.g.
+// `timestamp("2023-08-26T12:39:00-07:00")` becomes
+// "2023-08-26T19:39:00+00:00"
+// * Maps become objects, provided all keys can be coerced to strings and that
+// all values can coerce to types representable in JSON.
+// * Lists become lists, provided all values can coerce to types representable
+// in JSON.
+
// Configuration for the CEL formatter.
//
// .. warning::
envoy/extensions/geoip_providers/common/v3/common.proto:
--- shake256:69f743422dc263f7520519b4e10ea48e40859bfd6e1b9316344849c5fc1110aaa0bb867b75a612d049a56f6c5c605a3f7050e18a9809bf01088f1650fa17bdf3 envoy/extensions/geoip_providers/common/v3/common.proto
+++ shake256:4b3dff76008b54711f1fb62db1ef09f079ed3da6d6ec89f546594bd1ea01b638ba3b6bec705e16639a755b19007d2377010c7e7d006579e3d1395aee983756cc envoy/extensions/geoip_providers/common/v3/common.proto
@@ -17,8 +17,8 @@
// Common configuration shared across geolocation providers.
message CommonGeoipProviderConfig {
- // The set of geolocation headers to add to request. If any of the configured headers is present
- // in the incoming request, it will be overridden by the :ref:`Geoip filter <config_http_filters_geoip>`.
+ // The set of geolocation headers to add to the request. If any of the configured headers is present
+ // in the incoming request, it will be overridden by the :ref:`GeoIP filter <config_http_filters_geoip>`.
// [#next-free-field: 13]
message GeolocationHeadersToAdd {
// If set, the header will be used to populate the country ISO code associated with the IP address.
@@ -30,7 +30,7 @@
[(validate.rules).string = {well_known_regex: HTTP_HEADER_NAME ignore_empty: true}];
// If set, the header will be used to populate the region ISO code associated with the IP address.
- // The least specific subdivision will be selected as region value.
+ // The least specific subdivision will be selected as the region value.
string region = 3
[(validate.rules).string = {well_known_regex: HTTP_HEADER_NAME ignore_empty: true}];
@@ -38,35 +38,35 @@
string asn = 4
[(validate.rules).string = {well_known_regex: HTTP_HEADER_NAME ignore_empty: true}];
- // This field is being deprecated, use ``anon`` instead.
+ // This field is deprecated; use ``anon`` instead.
string is_anon = 5 [
deprecated = true,
(validate.rules).string = {well_known_regex: HTTP_HEADER_NAME ignore_empty: true},
(envoy.annotations.deprecated_at_minor_version) = "3.0"
];
- // If set, the IP address will be checked if it belongs to any type of anonymization network (e.g. VPN, public proxy etc)
- // and header will be populated with the check result. Header value will be set to either "true" or "false" depending on the check result.
+ // If set, the IP address will be checked if it belongs to any type of anonymization network (e.g., VPN, public proxy).
+ // The header will be populated with the check result. Header value will be set to either ``true`` or ``false`` depending on the check result.
string anon = 12
[(validate.rules).string = {well_known_regex: HTTP_HEADER_NAME ignore_empty: true}];
- // If set, the IP address will be checked if it belongs to a VPN and header will be populated with the check result.
- // Header value will be set to either "true" or "false" depending on the check result.
+ // If set, the IP address will be checked if it belongs to a VPN and the header will be populated with the check result.
+ // Header value will be set to either ``true`` or ``false`` depending on the check result.
string anon_vpn = 6
[(validate.rules).string = {well_known_regex: HTTP_HEADER_NAME ignore_empty: true}];
- // If set, the IP address will be checked if it belongs to a hosting provider and header will be populated with the check result.
- // Header value will be set to either "true" or "false" depending on the check result.
+ // If set, the IP address will be checked if it belongs to a hosting provider and the header will be populated with the check result.
+ // Header value will be set to either ``true`` or ``false`` depending on the check result.
string anon_hosting = 7
[(validate.rules).string = {well_known_regex: HTTP_HEADER_NAME ignore_empty: true}];
- // If set, the IP address will be checked if it belongs to a TOR exit node and header will be populated with the check result.
- // Header value will be set to either "true" or "false" depending on the check result.
+ // If set, the IP address will be checked if it belongs to a TOR exit node and the header will be populated with the check result.
+ // Header value will be set to either ``true`` or ``false`` depending on the check result.
string anon_tor = 8
[(validate.rules).string = {well_known_regex: HTTP_HEADER_NAME ignore_empty: true}];
- // If set, the IP address will be checked if it belongs to a public proxy and header will be populated with the check result.
- // Header value will be set to either "true" or "false" depending on the check result.
+ // If set, the IP address will be checked if it belongs to a public proxy and the header will be populated with the check result.
+ // Header value will be set to either ``true`` or ``false`` depending on the check result.
string anon_proxy = 9
[(validate.rules).string = {well_known_regex: HTTP_HEADER_NAME ignore_empty: true}];
@@ -74,12 +74,12 @@
string isp = 10
[(validate.rules).string = {well_known_regex: HTTP_HEADER_NAME ignore_empty: true}];
- // If set, the IP address will be checked if it belongs to the ISP named iCloud Private Relay and header will be populated with the check result.
- // Header value will be set to either "true" or "false" depending on the check result.
+ // If set, the IP address will be checked if it belongs to the ISP named iCloud Private Relay and the header will be populated with the check result.
+ // Header value will be set to either ``true`` or ``false`` depending on the check result.
string apple_private_relay = 11
[(validate.rules).string = {well_known_regex: HTTP_HEADER_NAME ignore_empty: true}];
}
- // Configuration for geolocation headers to add to request.
+ // Configuration for geolocation headers to add to the request.
GeolocationHeadersToAdd geo_headers_to_add = 1 [(validate.rules).message = {required: true}];
}
envoy/extensions/geoip_providers/maxmind/v3/maxmind.proto:
--- shake256:c66f7492b5ff90e01f72acfdb18eeacf91491956c177c9b9c6b8620623741bf1d068e74ec01d5dfb7ef4b7897b09ac84265893f7b19c271d25c52fc5a3e36fd6 envoy/extensions/geoip_providers/maxmind/v3/maxmind.proto
+++ shake256:022c490b3a9aecb67218c125d84b38611bb0a95736ca7ee0bd1fd59b14f9b28da3391b06a0e790a495a559c209b680a2869bc5cd042fa9c4de9afc26385b7bd8 envoy/extensions/geoip_providers/maxmind/v3/maxmind.proto
@@ -18,29 +18,32 @@
// [#protodoc-title: MaxMind Geolocation Provider]
// MaxMind geolocation provider :ref:`configuration overview <config_geoip_providers_maxmind>`.
-// At least one geolocation database path :ref:`city_db_path <envoy_v3_api_field_extensions.geoip_providers.maxmind.v3.MaxMindConfig.city_db_path>`,
-// :ref:`isp_db_path <envoy_v3_api_field_extensions.geoip_providers.maxmind.v3.MaxMindConfig.isp_db_path>` or
-// :ref:`asn_db_path <envoy_v3_api_field_extensions.geoip_providers.maxmind.v3.MaxMindConfig.asn_db_path>` or
-// :ref:`anon_db_path <envoy_v3_api_field_extensions.geoip_providers.maxmind.v3.MaxMindConfig.anon_db_path>` must be configured.
+//
+// At least one geolocation database path must be configured:
+//
+// * :ref:`city_db_path <envoy_v3_api_field_extensions.geoip_providers.maxmind.v3.MaxMindConfig.city_db_path>`
+// * :ref:`isp_db_path <envoy_v3_api_field_extensions.geoip_providers.maxmind.v3.MaxMindConfig.isp_db_path>`
+// * :ref:`asn_db_path <envoy_v3_api_field_extensions.geoip_providers.maxmind.v3.MaxMindConfig.asn_db_path>`
+// * :ref:`anon_db_path <envoy_v3_api_field_extensions.geoip_providers.maxmind.v3.MaxMindConfig.anon_db_path>`
// [#extension: envoy.geoip_providers.maxmind]
// [#next-free-field: 6]
message MaxMindConfig {
- // Full file path to the Maxmind city database, e.g. /etc/GeoLite2-City.mmdb.
- // Database file is expected to have .mmdb extension.
+ // Full file path to the MaxMind city database, e.g., ``/etc/GeoLite2-City.mmdb``.
+ // Database file is expected to have ``.mmdb`` extension.
string city_db_path = 1 [(validate.rules).string = {pattern: "^$|^.*\\.mmdb$"}];
- // Full file path to the Maxmind ASN database, e.g. /etc/GeoLite2-ASN.mmdb.
- // Database file is expected to have .mmdb extension.
- // When is defined the ASN information will always be fetched from the ``asn_db``.
+ // Full file path to the MaxMind ASN database, e.g., ``/etc/GeoLite2-ASN.mmdb``.
+ // Database file is expected to have ``.mmdb`` extension.
+ // When this is defined, the ASN information will always be fetched from the ``asn_db``.
string asn_db_path = 2 [(validate.rules).string = {pattern: "^$|^.*\\.mmdb$"}];
- // Full file path to the Maxmind anonymous IP database, e.g. /etc/GeoIP2-Anonymous-IP.mmdb.
- // Database file is expected to have .mmdb extension.
+ // Full file path to the MaxMind Anonymous IP database, e.g., ``/etc/GeoIP2-Anonymous-IP.mmdb``.
+ // Database file is expected to have ``.mmdb`` extension.
string anon_db_path = 3 [(validate.rules).string = {pattern: "^$|^.*\\.mmdb$"}];
- // Full file path to the Maxmind ISP database, e.g. /etc/GeoLite2-ISP.mmdb.
- // Database file is expected to have .mmdb extension.
+ // Full file path to the MaxMind ISP database, e.g., ``/etc/GeoLite2-ISP.mmdb``.
+ // Database file is expected to have ``.mmdb`` extension.
// If ``asn_db_path`` is not defined, ASN information will be fetched from
// ``isp_db`` instead.
string isp_db_path = 5 [(validate.rules).string = {pattern: "^$|^.*\\.mmdb$"}];
envoy/extensions/load_balancing_policies/client_side_weighted_round_robin/v3/client_side_weighted_round_robin.proto:
--- shake256:a20c4a200c6302e69f163f49bca671cff457b677b76b30bbfe44cfe78888121056a6a85e956d905a18a4d71b2b25eee6e3ef74536af90685036ed9ebbc918bdc envoy/extensions/load_balancing_policies/client_side_weighted_round_robin/v3/client_side_weighted_round_robin.proto
+++ shake256:746fb58032fe1f28ddc17510e1aff7da41b73a76970c9e30dd6efe749ffe94572c8752280fd6fd70bc32623bb6e284ff852c95d8e0beb6706e0512b3252c786b envoy/extensions/load_balancing_policies/client_side_weighted_round_robin/v3/client_side_weighted_round_robin.proto
@@ -2,6 +2,8 @@
package envoy.extensions.load_balancing_policies.client_side_weighted_round_robin.v3;
+import "envoy/extensions/load_balancing_policies/common/v3/common.proto";
+
import "google/protobuf/duration.proto";
import "google/protobuf/wrappers.proto";
@@ -42,7 +44,7 @@
// See the :ref:`load balancing architecture
// overview<arch_overview_load_balancing_types>` for more information.
//
-// [#next-free-field: 8]
+// [#next-free-field: 9]
message ClientSideWeightedRoundRobin {
// Whether to enable out-of-band utilization reporting collection from
// the endpoints. By default, per-request utilization reporting is used.
@@ -82,4 +84,9 @@
// For map fields in the ORCA proto, the string will be of the form ``<map_field_name>.<map_key>``. For example, the string ``named_metrics.foo`` will mean to look for the key ``foo`` in the ORCA :ref:`named_metrics <envoy_v3_api_field_.xds.data.orca.v3.OrcaLoadReport.named_metrics>` field.
// If none of the specified metrics are present in the load report, then :ref:`cpu_utilization <envoy_v3_api_field_.xds.data.orca.v3.OrcaLoadReport.cpu_utilization>` is used instead.
repeated string metric_names_for_computing_utilization = 7;
+
+ // Configuration for slow start mode.
+ // If this configuration is not set, slow start will not be not enabled.
+ // [#not-implemented-hide:]
+ common.v3.SlowStartConfig slow_start_config = 8;
}
envoy/extensions/load_balancing_policies/common/v3/common.proto:
--- shake256:f842e3464bae55134e484e29ee6901253c784d885e6bc62d4f906a147c91d3affb11f5ab7ca9ccfa24b5fb08efa11e3ee838f452faec2e6c1f20acb9269993dc envoy/extensions/load_balancing_policies/common/v3/common.proto
+++ shake256:87692495bfc4ebe3af7e717827ef318d02ea70d14321bdb6a752efb7b21fb7ea727e7c085cfbac1b698eab1506a9ac73b97ba663a8ddb5d1a24eea0dc07fd5c4 envoy/extensions/load_balancing_policies/common/v3/common.proto
@@ -24,8 +24,17 @@
message LocalityLbConfig {
// Configuration for :ref:`zone aware routing
// <arch_overview_load_balancing_zone_aware_routing>`.
- // [#next-free-field: 6]
+ // [#next-free-field: 7]
message ZoneAwareLbConfig {
+ // Basis for computing per-locality percentages in zone-aware routing.
+ enum LocalityBasis {
+ // Use the number of healthy hosts in each locality.
+ HEALTHY_HOSTS_NUM = 0;
+
+ // Use the weights of healthy hosts in each locality.
+ HEALTHY_HOSTS_WEIGHT = 1;
+ }
+
// Configures Envoy to always route requests to the local zone regardless of the
// upstream zone structure. In Envoy's default configuration, traffic is distributed proportionally
// across all upstream hosts while trying to maximize local routing when possible. The approach
@@ -67,6 +76,12 @@
[deprecated = true, (envoy.annotations.deprecated_at_minor_version) = "3.0"];
ForceLocalZone force_local_zone = 5;
+
+ // Determines how locality percentages are computed:
+ // - HEALTHY_HOSTS_NUM: proportional to the count of healthy hosts.
+ // - HEALTHY_HOSTS_WEIGHT: proportional to the weights of healthy hosts.
+ // Default value is HEALTHY_HOSTS_NUM if unset.
+ LocalityBasis locality_basis = 6;
}
// Configuration for :ref:`locality weighted load balancing
envoy/extensions/matching/common_inputs/network/v3/network_inputs.proto:
--- shake256:dc915eb998e7b51ba653e5669cb4ddfdf3b0beaae3e7911a8688d8b7b30522120e761a951d967fade0f78afe88d3730a38f53f148178c78ed8e942327f5100c2 envoy/extensions/matching/common_inputs/network/v3/network_inputs.proto
+++ shake256:b22fb32e8f220cb821a316a53743bd76e1b451f2cd1ee36a8ddb9f3ff52f1f6d3ea9512edd7df45bba24f80b6af8b23de34793e48672ff2d384b675883aa5a7c envoy/extensions/matching/common_inputs/network/v3/network_inputs.proto
@@ -148,3 +148,17 @@
// The path to retrieve the Value from the Struct.
repeated PathSegment path = 2 [(validate.rules).repeated = {min_items: 1}];
}
+
+// Input that matches by the network namespace of the listener address.
+// This input returns the network namespace filepath that was used to create the listening socket.
+// On Linux systems, this corresponds to the ``network_namespace_filepath`` field in the
+// :ref:`SocketAddress <envoy_v3_api_msg_config.core.v3.SocketAddress>` configuration.
+//
+// .. note::
+//
+// This input is only meaningful on Linux systems where network namespaces are supported.
+// On other platforms, this input will always return an empty value.
+//
+// [#extension: envoy.matching.inputs.network_namespace]
+message NetworkNamespaceInput {
+}
envoy/extensions/network/dns_resolver/cares/v3/cares_dns_resolver.proto:
--- shake256:79334ac047e2b07007131cf121df1fb2dd4056b7018785d2a0c4cc1b5dd0ff3624f8178240bb430d54cc448d89ef878834c29b824ae376694cd989ccd0cd7918 envoy/extensions/network/dns_resolver/cares/v3/cares_dns_resolver.proto
+++ shake256:6e08a950c353824af726fd5f4162d3b21a2107b2264106a8b10a1b119950a0f27a21ef97ec32bce738db040a25e561dddc70bb569861b67eb2ef434159d44462 envoy/extensions/network/dns_resolver/cares/v3/cares_dns_resolver.proto
@@ -5,6 +5,7 @@
import "envoy/config/core/v3/address.proto";
import "envoy/config/core/v3/resolver.proto";
+import "google/protobuf/duration.proto";
import "google/protobuf/wrappers.proto";
import "udpa/annotations/status.proto";
@@ -20,7 +21,7 @@
// [#extension: envoy.network.dns_resolver.cares]
// Configuration for c-ares DNS resolver.
-// [#next-free-field: 9]
+// [#next-free-field: 11]
message CaresDnsResolverConfig {
// A list of DNS resolver addresses.
// :ref:`use_resolvers_as_fallback <envoy_v3_api_field_extensions.network.dns_resolver.cares.v3.CaresDnsResolverConfig.use_resolvers_as_fallback>`
@@ -77,4 +78,25 @@
// This setting overrides any system configuration for name server rotation.
//
bool rotate_nameservers = 8;
+
+ // Maximum EDNS0 UDP payload size in bytes.
+ // If set, c-ares will include EDNS0 in DNS queries and use this value as the maximum UDP response size.
+ //
+ // Recommended values:
+ //
+ // * **1232**: Safe default (avoids fragmentation).
+ // * **4096**: Maximum allowed.
+ //
+ // If unset, c-ares uses its internal default (usually 1232).
+ google.protobuf.UInt32Value edns0_max_payload_size = 9
+ [(validate.rules).uint32 = {lte: 4096 gte: 512}];
+
+ // The maximum duration for which a UDP channel will be kept alive before being refreshed.
+ //
+ // If set, the DNS resolver will periodically reinitialize its c-ares channel after the
+ // specified duration. This can help with avoiding stale socket states, and providing
+ // better load distribution across UDP ports.
+ //
+ // If not specified, no periodic refresh will be performed.
+ google.protobuf.Duration max_udp_channel_duration = 10 [(validate.rules).duration = {gte {}}];
}
envoy/extensions/quic/connection_id_generator/quic_lb/v3/quic_lb.proto:
--- shake256:8fdfdf3e80e32c8390ba4c4102963331fd68d4e4d7ba16b00cd92111659dd118cf968b654434b822c5844c3e5583f0ab13b1f6311016bbf0276d08e06e48feef envoy/extensions/quic/connection_id_generator/quic_lb/v3/quic_lb.proto
+++ shake256:8a58afa18cfd1cbde48136072f331fe02420900d28cff068cca484cb2dff09f3b12409f8ba400ddd9452a4b355431eb52a493c17b870ddf9bd539c0ebd29de0e envoy/extensions/quic/connection_id_generator/quic_lb/v3/quic_lb.proto
@@ -29,22 +29,23 @@
//
// .. warning::
//
-// This is still a work in progress. Performance is expected to be poor. Interoperability testing
-// has not yet been performed.
-// [#next-free-field: 6]
+// This is still a work in progress. Interoperability testing has not yet been performed.
+// [#next-free-field: 7]
message Config {
option (xds.annotations.v3.message_status).work_in_progress = true;
- // Use the unencrypted mode. This is useful for testing, but allows for linking different CIDs
- // for the same connection, and leaks information about the valid server IDs in use. This should
- // only be used for testing.
- bool unsafe_unencrypted_testing_mode = 1;
-
// Must be at least 1 octet.
// The length of server_id and nonce_length_bytes must be 18 or less.
// See https://datatracker.ietf.org/doc/html/draft-ietf-quic-load-balancers#name-server-id-allocation.
config.core.v3.DataSource server_id = 2 [(validate.rules).message = {required: true}];
+ // If true, indicates that the :ref:`server_id
+ // <envoy_v3_api_field_extensions.quic.connection_id_generator.quic_lb.v3.Config.server_id>` is base64 encoded.
+ //
+ // This can be useful if the ID may contain binary data and must be transmitted as a string, for example in
+ // an environment variable.
+ bool server_id_base64_encoded = 6;
+
// Optional validation of the expected server ID length. If this is non-zero and the value in ``server_id``
// does not have a matching length, a configuration error is generated. This can be useful for validating
// that the server ID is valid.
@@ -65,4 +66,14 @@
// See https://datatracker.ietf.org/doc/html/draft-ietf-quic-load-balancers#name-config-rotation.
transport_sockets.tls.v3.SdsSecretConfig encryption_parameters = 5
[(validate.rules).message = {required: true}];
+
+ // Use the unencrypted mode. This is useful for testing or a simplified implementation of the
+ // downstream load balancer, but allows for linking different CIDs for the same connection, and
+ // leaks information about the valid server IDs in use. This mode does not comply with the RFC.
+ //
+ // Note that in this mode, :ref:`encryption_parameters
+ // <envoy_v3_api_field_extensions.quic.connection_id_generator.quic_lb.v3.Config.encryption_parameters>`
+ // is still required because it contains ``configuration_version``, which is still
+ // needed. ``encryption_key`` can be set to ``inline_string: '0000000000000000'``.
+ bool unencrypted_mode = 1;
}
envoy/extensions/stat_sinks/open_telemetry/v3/open_telemetry.proto:
--- shake256:f4ffbd13c1469d72b79196a50468dab6abcec6746b806d7ad07ad727fef7c0c4c043c8b063c30abc8a4c350ee1e0a032cfe188eed994e693b5426b02832046e8 envoy/extensions/stat_sinks/open_telemetry/v3/open_telemetry.proto
+++ shake256:b9baf36cbd39c8e4c3a3b4699a19240971d6076ceda83fe3dabebaa96f691c352be85d73dfd0fe9f2e3af7b6a75d4e22dfd9ded65e58c2122537dde25c74ae8d envoy/extensions/stat_sinks/open_telemetry/v3/open_telemetry.proto
@@ -2,10 +2,14 @@
package envoy.extensions.stat_sinks.open_telemetry.v3;
+import "envoy/config/core/v3/extension.proto";
import "envoy/config/core/v3/grpc_service.proto";
import "google/protobuf/wrappers.proto";
+import "opentelemetry/proto/common/v1/common.proto";
+import "xds/type/matcher/v3/matcher.proto";
+
import "udpa/annotations/status.proto";
import "validate/validate.proto";
@@ -19,8 +23,20 @@
// Stats configuration proto schema for ``envoy.stat_sinks.open_telemetry`` sink.
// [#extension: envoy.stat_sinks.open_telemetry]
-// [#next-free-field: 7]
+// [#next-free-field: 9]
message SinkConfig {
+ // ConversionAction is used to convert a stat to a metric. If a stat matches,
+ // the metric_name and static_metric_labels will be
+ // used to create the metric. This can be used to rename a
+ // stat, add static labels, and aggregate multiple stats into a single metric.
+ message ConversionAction {
+ // The metric name to use for the stat.
+ string metric_name = 2;
+
+ // Static metric labels to use for the metric.
+ repeated opentelemetry.proto.common.v1.KeyValue static_metric_labels = 3;
+ }
+
oneof protocol_specifier {
option (validate.required) = true;
@@ -28,6 +44,10 @@
config.core.v3.GrpcService grpc_service = 1 [(validate.rules).message = {required: true}];
}
+ // Attributes to be associated with the resource in the OTLP message.
+ // [#extension-category: envoy.tracers.opentelemetry.resource_detectors]
+ repeated config.core.v3.TypedExtensionConfig resource_detectors = 7;
+
// If set to true, counters will be emitted as deltas, and the OTLP message will have
// ``AGGREGATION_TEMPORALITY_DELTA`` set as AggregationTemporality.
bool report_counters_as_deltas = 2;
@@ -50,4 +70,9 @@
// "pre", the full stat name will be "pre.foo.bar". If this field is not set, there is no
// prefix added. According to the example, the full stat name will remain "foo.bar".
string prefix = 6;
+
+ // The custom conversion from a stat to a metric. Currently, the only supported input is
+ // ``envoy.extensions.matching.common_inputs.stats.v3.StatFullNameMatchInput`` and the only support action is
+ // ``envoy.extensions.stat_sinks.open_telemetry.v3.SinkConfig.ConversionAction``.
+ xds.type.matcher.v3.Matcher custom_metric_conversions = 8;
}
envoy/extensions/upstreams/http/v3/http_protocol_options.proto:
--- shake256:67f8c22322b3279e63a6afd72715b52f4621719de35ee92362525013c51e365cf066d2b47734d3326597db5ebc353accab57ec8097f69d0bbaea2170f6de3434 envoy/extensions/upstreams/http/v3/http_protocol_options.proto
+++ shake256:d6f4e5d1f41fc974dd3c4e1da68df1cb72b8479132c0e5c469c22658c20bb64000b74a159e7662bd33f6fa597be541cbde8e6bc687823c1854ca56c1253dc34b envoy/extensions/upstreams/http/v3/http_protocol_options.proto
@@ -2,6 +2,7 @@
package envoy.extensions.upstreams.http.v3;
+import "envoy/config/common/matcher/v3/matcher.proto";
import "envoy/config/core/v3/extension.proto";
import "envoy/config/core/v3/protocol.proto";
import "envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.proto";
@@ -59,7 +60,7 @@
// http2_protocol_options:
// max_concurrent_streams: 100
// .... [further cluster config]
-// [#next-free-field: 8]
+// [#next-free-field: 9]
message HttpProtocolOptions {
// If this is used, the cluster will only operate on one of the possible upstream protocols.
// Note that HTTP/2 or above should generally be used for upstream gRPC clusters.
@@ -129,6 +130,13 @@
config.core.v3.AlternateProtocolsCacheOptions alternate_protocols_cache_options = 4;
}
+ message OutlierDetection {
+ // If specified, only responses matching the matcher will be treated by outlier detection as errors.
+ // If not specified, only 5xx codes are treated by outlier detection as errors.
+ config.common.matcher.v3.MatchPredicate error_matcher = 1
+ [(validate.rules).message = {required: true}];
+ }
+
// This contains options common across HTTP/1 and HTTP/2
config.core.v3.HttpProtocolOptions common_http_protocol_options = 1;
@@ -174,4 +182,7 @@
// [#not-implemented-hide:]
// [#extension-category: envoy.http.header_validators]
config.core.v3.TypedExtensionConfig header_validation_config = 7;
+
+ // Defines http specific outlier detection parameters.
+ OutlierDetection outlier_detection = 8;
}
envoy/service/ext_proc/v3/external_processor.proto:
--- shake256:a0edcf6dd39882ac26ff14ac91358f007f677326661c1c7e90316d2911754ddfe115367f7d0be190960933316ebb7a1b3e98a20335848a1189778cdff85c282e envoy/service/ext_proc/v3/external_processor.proto
+++ shake256:1c25d514b7c22ff54c3b590dd512b90fb7e147db1935a90a27467f2745a5364e5ca1a4ac4a144525438ac7252a5aaba6f14f2fc8926e38f52f9bc61705edae3a envoy/service/ext_proc/v3/external_processor.proto
@@ -27,29 +27,31 @@
// as part of a filter chain.
// The overall external processing protocol works like this:
//
-// 1. Envoy sends to the service information about the HTTP request.
-// 2. The service sends back a ProcessingResponse message that directs Envoy
-// to either stop processing, continue without it, or send it the
-// next chunk of the message body.
-// 3. If so requested, Envoy sends the server the message body in chunks,
-// or the entire body at once. In either case, the server may send back
-// a ProcessingResponse for each message it receives, or wait for certain amount
-// of body chunks received before streams back the ProcessingResponse messages.
-// 4. If so requested, Envoy sends the server the HTTP trailers,
+// 1. The data plane sends to the service information about the HTTP request.
+// 2. The service sends back a ProcessingResponse message that directs
+// the data plane to either stop processing, continue without it, or send
+// it the next chunk of the message body.
+// 3. If so requested, the data plane sends the server the message body in
+// chunks, or the entire body at once. In either case, the server may send
+// back a ProcessingResponse for each message it receives, or wait for
+// a certain amount of body chunks received before streaming back the
+// ProcessingResponse messages.
+// 4. If so requested, the data plane sends the server the HTTP trailers,
// and the server sends back a ProcessingResponse.
// 5. At this point, request processing is done, and we pick up again
-// at step 1 when Envoy receives a response from the upstream server.
+// at step 1 when the data plane receives a response from the upstream
+// server.
// 6. At any point above, if the server closes the gRPC stream cleanly,
-// then Envoy proceeds without consulting the server.
+// then the data plane proceeds without consulting the server.
// 7. At any point above, if the server closes the gRPC stream with an error,
-// then Envoy returns a 500 error to the client, unless the filter
+// then the data plane returns a 500 error to the client, unless the filter
// was configured to ignore errors.
//
// In other words, the process is a request/response conversation, but
// using a gRPC stream to make it easier for the server to
// maintain state.
service ExternalProcessor {
- // This begins the bidirectional stream that Envoy will use to
+ // This begins the bidirectional stream that the data plane will use to
// give the server control over what the filter does. The actual
// protocol is described by the ProcessingRequest and ProcessingResponse
// messages below.
@@ -79,7 +81,7 @@
bool send_body_without_waiting_for_header_response = 3;
}
-// This represents the different types of messages that Envoy can send
+// This represents the different types of messages that the data plane can send
// to an external processing server.
// [#next-free-field: 12]
message ProcessingRequest {
@@ -132,7 +134,7 @@
// 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 across Envoy.
+ // :ref:`attributes <arch_overview_attributes>` supported in the data plane.
map<string, google.protobuf.Struct> attributes = 9;
// Specify whether the filter that sent this request is running in :ref:`observability_mode
@@ -153,7 +155,7 @@
ProtocolConfiguration protocol_config = 11;
}
-// This represents the different types of messages the server may send back to Envoy
+// 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
@@ -212,8 +214,8 @@
// 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 responding to the header requests.
- // If it is set in the response to the body or trailer requests, it will be ignored by Envoy.
- // It is also ignored by Envoy when the ext_proc filter config
+ // 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
@@ -224,16 +226,16 @@
// When ext_proc server receives a request message, in case it needs more
// time to process the message, it sends back a ProcessingResponse message
- // with a new timeout value. When Envoy receives this response message,
- // it ignores other fields in the response, just stop the original timer,
- // which has the timeout value specified in
+ // with a new timeout value. When the data plane receives this response
+ // message, it ignores other fields in the response, just stop 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 start a new timer with this ``override_message_timeout`` value and keep the
- // Envoy ext_proc filter state machine intact.
+ // data plane ext_proc filter state machine intact.
// Has to be >= 1ms and <=
// :ref:`max_message_timeout <envoy_v3_api_field_extensions.filters.http.ext_proc.v3.ExternalProcessor.max_message_timeout>`
- // Such message can be sent at most once in a particular Envoy ext_proc filter processing state.
+ // Such message can be sent at most once in a particular data plane ext_proc filter processing state.
// To enable this API, one has to set ``max_message_timeout`` to a number >= 1ms.
google.protobuf.Duration override_message_timeout = 10;
}
@@ -283,26 +285,26 @@
// The following are messages that may be sent back by the server.
-// This message is sent by the external server to Envoy after ``HttpHeaders`` was
+// This message is sent by the external server to the data plane after ``HttpHeaders`` was
// sent to it.
message HeadersResponse {
- // Details the modifications (if any) to be made by Envoy to the current
+ // Details the modifications (if any) to be made by the data plane to the current
// request/response.
CommonResponse response = 1;
}
-// This message is sent by the external server to Envoy after ``HttpBody`` was
+// This message is sent by the external server to the data plane after ``HttpBody`` was
// sent to it.
message BodyResponse {
- // Details the modifications (if any) to be made by Envoy to the current
+ // Details the modifications (if any) to be made by the data plane to the current
// request/response.
CommonResponse response = 1;
}
-// This message is sent by the external server to Envoy after ``HttpTrailers`` was
+// This message is sent by the external server to the data plane after ``HttpTrailers`` was
// sent to it.
message TrailersResponse {
- // Details the modifications (if any) to be made by Envoy to the current
+ // Details the modifications (if any) to be made by the data plane to the current
// request/response trailers.
HeaderMutation header_mutation = 1;
}
@@ -332,7 +334,7 @@
CONTINUE_AND_REPLACE = 1;
}
- // If set, provide additional direction on how the Envoy proxy should
+ // If set, provide additional direction on how the data plane should
// handle the rest of the HTTP filter chain.
ResponseStatus status = 1 [(validate.rules).enum = {defined_only: true}];
@@ -361,7 +363,7 @@
// 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 Envoy ext_proc filter is in the upstream filter chain.
+ // if the data plane ext_proc filter is in the upstream filter chain.
bool clear_route_cache = 5;
}
@@ -415,7 +417,7 @@
// The body response message corresponding to FULL_DUPLEX_STREAMED body mode.
message StreamedBodyResponse {
- // The body response chunk that will be passed to the upstream/downstream by Envoy.
+ // The body response chunk that will be passed to the upstream/downstream by the data plane.
bytes body = 1;
// The server sets this flag to true if it has received a body request with
@@ -424,7 +426,7 @@
bool end_of_stream = 2;
}
-// This message specifies the body mutation the server sends to Envoy.
+// This message specifies the body mutation the server sends to the data plane.
message BodyMutation {
// The type of mutation for the body.
oneof mutation {
envoy/type/matcher/v3/value.proto:
--- shake256:914b167bc0d15d4a96649c05ac568368e28cbe04d346a46526a07ef17f5b14944149c389a0a03a2a2b05de151940b8b459b7811cafa35d525a94a02d12a22618 envoy/type/matcher/v3/value.proto
+++ shake256:ad88cc2e97d5cd12d8392a43fa42460b65a2a3b23825c4e14ef43fa2f559eba6fb9fa12e9d07072fb67fd3c15db9339ce70bcdd1e88476a0864441e122395bab envoy/type/matcher/v3/value.proto
@@ -17,7 +17,7 @@
// [#protodoc-title: Value matcher]
-// Specifies the way to match a ProtobufWkt::Value. Primitive values and ListValue are supported.
+// Specifies the way to match a Protobuf::Value. Primitive values and ListValue are supported.
// StructValue is not supported and is always not matched.
// [#next-free-field: 8]
message ValueMatcher {
envoy/type/matcher/value.proto:
--- shake256:a8dce06687fff254822d8665c7e5ac5633646822f786dca35d9dbe625a3fc3cf0d688220893dad91774493e1eb16226741fdbfd9e650b378742908324c4cf41b envoy/type/matcher/value.proto
+++ shake256:2894818b159d82e436454b897303459c693593507e5ddfd71291a3aafd6f5e5ff829b72738d56910423f1f06c8712d6c0968db606d275420b4ff2d333d7e8b34 envoy/type/matcher/value.proto
@@ -16,7 +16,7 @@
// [#protodoc-title: Value matcher]
-// Specifies the way to match a ProtobufWkt::Value. Primitive values and ListValue are supported.
+// Specifies the way to match a Protobuf::Value. Primitive values and ListValue are supported.
// StructValue is not supported and is always not matched.
// [#next-free-field: 7]
message ValueMatcher {
| }, | ||
| { | ||
| "name": "v13.0.0", | ||
| "digest": "57c88dfb9c8994262426a3278d9e5d41f2b998b28a4c2858564aa67a235a8c5fce21bed2ffa85bcb09224a6b928f58e421b96a70db98774154f1036717455ac9" |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
cd modules/sync/googlechrome/lighthouse
casdiff v12.8.2 v13.0.0 --format=markdown1 files changed: 0 removed, 0 renamed, 0 added, 1 changed content
Files changed content:
lighthouse-result.proto:
--- shake256:e66ff010abd796c731c113ce9dd0778df4776e0edeef134a30724bdbdd94d2d8cbbf55242f50d0ddc7e40c6e3797cf97bd69610a8b745fecae9e639ebb95b1ee lighthouse-result.proto
+++ shake256:a9787064905e7bd489b965d12d788ade794891f1c5ab2cd16c0183d125faec86051fc1c068914b4ca6242ab945631fca9e57b445a534d697b14553ce977e048f lighthouse-result.proto
@@ -132,7 +132,7 @@
map<string, CategoryGroup> category_groups = 11;
// Message containing the configuration settings for the LH run
- // Next ID: 11
+ // Next ID: 33
message ConfigSettings {
// The possible form factors an audit can be run in.
// This enum served the emulated_form_factor field, but in v7, that field
@@ -193,11 +193,11 @@
string throttling_method = 8;
message ScreenEmulation {
- // Overriding width value in pixels (minimum 0, maximum 10000000). 0
- // disables the override.
+ // Overriding width value in pixels (minimum 0, maximum 10000000).
+ // 0 disables the override.
double width = 1;
- // Overriding height value in pixels (minimum 0, maximum 10000000). 0
- // disables the override.
+ // Overriding height value in pixels (minimum 0, maximum 10000000).
+ // 0 disables the override.
double height = 2;
// Overriding device scale factor value. 0 disables the override.
double deviceScaleFactor = 3;
@@ -217,8 +217,85 @@
// screen emulation.
ScreenEmulation screen_emulation = 9;
+
// Indicating whether Lighthouse should ignore status codes.
bool ignore_status_code = 10;
+
+ // The type(s) of report output to be produced.
+ // Can be a string of 'json' | 'html' | 'csv'
+ // Or an array of those strings
+ google.protobuf.Value output = 11;
+
+ // The maximum amount of time to wait for a page content render, in ms. If
+ // no content is rendered within this limit, the run is aborted with an
+ // error.
+ int32 max_wait_for_fcp = 12;
+ // The maximum amount of time to wait for a page to load, in ms.
+ int32 max_wait_for_load = 13;
+ // The number of milliseconds to wait after FCP until the page should be
+ // considered loaded.
+ int32 pause_after_fcp_ms = 14;
+ // The number of milliseconds to wait after the load event until the page
+ // should be considered loaded.
+ int32 pause_after_load_ms = 15;
+ // The number of milliseconds to wait between high priority network requests
+ // or 3 simultaneous requests before the page should be considered loaded.
+ int32 network_quiet_threshold_ms = 16;
+ // The number of milliseconds to wait between long tasks until the page
+ // should be considered loaded.
+ int32 cpu_quiet_threshold_ms = 17;
+
+ // User Agent string to apply, `false` to not change the host's UA string,
+ // or `true` to use Lighthouse's default UA string.
+ string emulated_user_agent = 18;
+
+ // audit_mode and gather_mode are excluded from the proto, as they are boolean/string and niche enough that we don't want to deal with them.
+
+ // Flag indicating that the browser storage should not be reset for the
+ // audit.
+ bool disable_storage_reset = 19;
+ // Flag indicating that Lighthouse should pause after page load to wait for
+ // the user's permission to continue the audit.
+ bool debug_navigation = 20;
+ // If set to true, gatherers should avoid any behavior that may be
+ // destructive to the page state. (e.g. extra navigations, resizing the
+ // viewport)
+ bool use_passive_gathering = 21;
+ // Disables collection of the full page screenshot, which can be rather
+ // large and possibly leave the page in an undesirable state.
+ bool disable_full_page_screenshot = 22;
+ // If set to true, will skip the initial navigation to about:blank.
+ bool skip_about_blank = 23;
+ // The URL to use for the "blank" neutral page in between navigations.
+ // Defaults to `about:blank`.
+ string blank_page = 24;
+
+ // List of URL patterns to block.
+ repeated string blocked_url_patterns = 25;
+
+ // Comma-delimited list of trace categories to include.
+ string additional_trace_categories = 26;
+
+ // If present, the run should only conduct this list of audits.
+ repeated string only_audits = 27;
+ // If present, the run should skip this list of audits.
+ repeated string skip_audits = 28;
+
+ // Flag indicating which kinds of browser storage should be reset for the audit.
+ // Cookies are not cleared by default, so the user isn't logged out.
+ // indexeddb, websql, and localstorage are not cleared by default to prevent
+ // loss of potentially important data.
+ // https://chromedevtools.github.io/debugger-protocol-viewer/tot/Storage/#type-StorageType
+ repeated string clear_storage_types = 29;
+
+ // List of extra HTTP Headers to include
+ map<string, string> extra_headers = 30;
+
+ // The budget.json object for LightWallet
+ repeated google.protobuf.Struct budgets = 31 [deprecated = true];
+
+ // Precomputed lantern estimates to use instead of observed analysis.
+ google.protobuf.Struct precomputed_lantern_data = 32;
}
// The settings that were used to run this audit
@@ -298,7 +375,7 @@
// This value is nullable, so is a `Value` type
google.protobuf.Value score = 4;
- // An description for manual audits within this category.
+ // A description for manual audits within this category.
string manual_description = 5;
// A Category's reference to an AuditResult, with a weight for category
@@ -721,6 +798,12 @@
// using the new set of performance insight audits that will replace performance
// audits.
string go_back_to_audits = 71;
+
+ // Descriptive explanation used when an audit is not part of the calculated score.
+ string unscored_label = 72;
+
+ // Descriptive explanation used when an audit is not part of the calculated score.
+ string unscored_title = 73;
}
// The message holding all formatted strings used in the renderer.
| }, | ||
| { | ||
| "name": "v33.0", | ||
| "digest": "49b3059e6608c257ea7cf60926a16fb8bb1f3d37f39862e66db55338a4ebf59a4aebff39fdfd1f6d4e66ece567db327ff5846a09b51762574b857a27e77a2b55" |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
cd modules/sync/protocolbuffers/wellknowntypes
casdiff v32.1 v33.0 --format=markdown2 files changed: 0 removed, 0 renamed, 0 added, 2 changed content
Files changed content:
google/protobuf/descriptor.proto:
--- shake256:2b6fb491b5832e4c381224372998dc7bfae2cb557c40e5132884c1eef68b31570ed1d2b902fde0cf19739dfc5140f79dc628be40f268c523c3e5a923038fa8e1 google/protobuf/descriptor.proto
+++ shake256:7e550defb267c9883ff6dcba8508103a6afa788695de0b3344103ab8f233e3dc457792a9d6f8dd439107e66a3439cd87b7c138f53a16432216a465cffab6720a google/protobuf/descriptor.proto
@@ -398,6 +398,9 @@
repeated MethodDescriptorProto method = 2;
optional ServiceOptions options = 3;
+
+ reserved 4;
+ reserved "stream";
}
// Describes a method of a service.
google/protobuf/timestamp.proto:
--- shake256:52440b4bfea02829f855c8fe9ecb6ec2b00f0b34e5ef371c6f14aaddc1d5873eb115f3fb6f96078fbc1059bda4a8a5f41a5808817817c0bddab94f31f3ba022a google/protobuf/timestamp.proto
+++ shake256:93a810721dfe089dd61b6a954cbab842c3c6cb9c814cb6286589f66fd148151151847291fd5668bcb8002f6f298364721e1c7c474e1be5d0d184ff37a635d8ce google/protobuf/timestamp.proto
@@ -131,14 +131,15 @@
// ) to obtain a formatter capable of generating timestamps in this format.
//
message Timestamp {
- // Represents seconds of UTC time since Unix epoch
- // 1970-01-01T00:00:00Z. Must be from 0001-01-01T00:00:00Z to
- // 9999-12-31T23:59:59Z inclusive.
+ // Represents seconds of UTC time since Unix epoch 1970-01-01T00:00:00Z. Must
+ // be between -315576000000 and 315576000000 inclusive (which corresponds to
+ // 0001-01-01T00:00:00Z to 9999-12-31T23:59:59Z).
int64 seconds = 1;
- // Non-negative fractions of a second at nanosecond resolution. Negative
- // second values with fractions must still have non-negative nanos values
- // that count forward in time. Must be from 0 to 999,999,999
+ // Non-negative fractions of a second at nanosecond resolution. This field is
+ // the nanosecond portion of the duration, not an alternative to seconds.
+ // Negative second values with fractions must still have non-negative nanos
+ // values that count forward in time. Must be between 0 and 999,999,999
// inclusive.
int32 nanos = 2;
}
05885ce to
0c8ca45
Compare
New managed modules references found. Please review.