Skip to content

Commit 796a3d7

Browse files
committed
[xds] Update protobuf definitions to v1.37.0
Signed-off-by: Meri Kim <dl_armeria@linecorp.com>
1 parent c3d7df6 commit 796a3d7

File tree

94 files changed

+3221
-688
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

94 files changed

+3221
-688
lines changed

xds-api/src/main/proto/envoy/admin/v3/server_info.proto

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ message ServerInfo {
5959
config.core.v3.Node node = 7;
6060
}
6161

62-
// [#next-free-field: 42]
62+
// [#next-free-field: 43]
6363
message CommandLineOptions {
6464
option (udpa.annotations.versioning).previous_message_type =
6565
"envoy.admin.v2alpha.CommandLineOptions";
@@ -161,6 +161,9 @@ message CommandLineOptions {
161161
// See :option:`--file-flush-interval-msec` for details.
162162
google.protobuf.Duration file_flush_interval = 16;
163163

164+
// See :option:`--file-flush-min-size-kb` for details.
165+
uint32 file_flush_min_size = 42;
166+
164167
// See :option:`--drain-time-s` for details.
165168
google.protobuf.Duration drain_time = 17;
166169

xds-api/src/main/proto/envoy/config/accesslog/v3/accesslog.proto

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -108,6 +108,9 @@ message ComparisonFilter {
108108

109109
// <=
110110
LE = 2;
111+
112+
// !=
113+
NE = 3;
111114
}
112115

113116
// Comparison operator.

xds-api/src/main/proto/envoy/config/bootstrap/v3/bootstrap.proto

Lines changed: 108 additions & 79 deletions
Large diffs are not rendered by default.

xds-api/src/main/proto/envoy/config/cluster/v3/cluster.proto

Lines changed: 40 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ import "google/protobuf/struct.proto";
2222
import "google/protobuf/wrappers.proto";
2323

2424
import "xds/core/v3/collection_entry.proto";
25+
import "xds/type/matcher/v3/matcher.proto";
2526

2627
import "envoy/annotations/deprecation.proto";
2728
import "udpa/annotations/migrate.proto";
@@ -45,7 +46,7 @@ message ClusterCollection {
4546
}
4647

4748
// Configuration for a single upstream cluster.
48-
// [#next-free-field: 59]
49+
// [#next-free-field: 60]
4950
message Cluster {
5051
option (udpa.annotations.versioning).previous_message_type = "envoy.api.v2.Cluster";
5152

@@ -747,6 +748,9 @@ message Cluster {
747748
// If both this and preconnect_ratio are set, Envoy will make sure both predicted needs are met,
748749
// basically preconnecting max(predictive-preconnect, per-upstream-preconnect), for each
749750
// upstream.
751+
//
752+
// This is limited somewhat arbitrarily to 3 because preconnecting too aggressively can
753+
// harm latency more than the preconnecting helps.
750754
google.protobuf.DoubleValue predictive_preconnect_ratio = 2
751755
[(validate.rules).double = {lte: 3.0 gte: 1.0}];
752756
}
@@ -809,6 +813,41 @@ message Cluster {
809813
// [#comment:TODO(incfly): add a detailed architecture doc on intended usage.]
810814
repeated TransportSocketMatch transport_socket_matches = 43;
811815

816+
// Optional matcher that selects a transport socket from
817+
// :ref:`transport_socket_matches <envoy_v3_api_field_config.cluster.v3.Cluster.transport_socket_matches>`.
818+
//
819+
// This matcher uses the generic xDS matcher framework to select a named transport socket
820+
// based on various inputs available at transport socket selection time.
821+
//
822+
// Supported matching inputs:
823+
//
824+
// * ``endpoint_metadata``: Extract values from the selected endpoint's metadata.
825+
// * ``locality_metadata``: Extract values from the endpoint's locality metadata.
826+
// * ``transport_socket_filter_state``: Extract values from filter state that was explicitly shared from
827+
// downstream to upstream via ``TransportSocketOptions``. This enables flexible
828+
// downstream-connection-based matching, such as:
829+
//
830+
// - Network namespace matching.
831+
// - Custom connection attributes.
832+
// - Any data explicitly passed via filter state.
833+
//
834+
// .. note::
835+
// Filter state sharing follows the same pattern as tunneling in Envoy. Filters must explicitly
836+
// share data by setting filter state with the appropriate sharing mode. The filter state is
837+
// then accessible via the ``transport_socket_filter_state`` input during transport socket selection.
838+
//
839+
// If this field is set, it takes precedence over legacy metadata-based selection
840+
// performed by :ref:`transport_socket_matches
841+
// <envoy_v3_api_field_config.cluster.v3.Cluster.transport_socket_matches>` alone.
842+
// If the matcher does not yield a match, Envoy uses the default transport socket
843+
// configured for the cluster.
844+
//
845+
// When using this field, each entry in
846+
// :ref:`transport_socket_matches <envoy_v3_api_field_config.cluster.v3.Cluster.transport_socket_matches>`
847+
// must have a unique ``name``. The matcher outcome is expected to reference one of
848+
// these names.
849+
xds.type.matcher.v3.Matcher transport_socket_matcher = 59;
850+
812851
// Supplies the name of the cluster which must be unique across all clusters.
813852
// The cluster name is used when emitting
814853
// :ref:`statistics <config_cluster_manager_cluster_stats>` if :ref:`alt_stat_name

xds-api/src/main/proto/envoy/config/core/v3/address.proto

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -115,16 +115,18 @@ message TcpKeepalive {
115115

116116
// Maximum number of keepalive probes to send without response before deciding
117117
// the connection is dead. Default is to use the OS level configuration (unless
118-
// overridden, Linux defaults to 9.)
118+
// overridden, Linux defaults to 9.) Setting this to ``0`` disables TCP keepalive.
119119
google.protobuf.UInt32Value keepalive_probes = 1;
120120

121121
// The number of seconds a connection needs to be idle before keep-alive probes
122122
// start being sent. Default is to use the OS level configuration (unless
123-
// overridden, Linux defaults to 7200s (i.e., 2 hours.)
123+
// overridden, Linux defaults to 7200s (i.e., 2 hours.) Setting this to ``0`` disables
124+
// TCP keepalive.
124125
google.protobuf.UInt32Value keepalive_time = 2;
125126

126127
// The number of seconds between keep-alive probes. Default is to use the OS
127-
// level configuration (unless overridden, Linux defaults to 75s.)
128+
// level configuration (unless overridden, Linux defaults to 75s.) Setting this to
129+
// ``0`` disables TCP keepalive.
128130
google.protobuf.UInt32Value keepalive_interval = 3;
129131
}
130132

Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,63 @@
1+
syntax = "proto3";
2+
3+
package envoy.config.core.v3;
4+
5+
import "udpa/annotations/status.proto";
6+
7+
option java_package = "io.envoyproxy.envoy.config.core.v3";
8+
option java_outer_classname = "CelProto";
9+
option java_multiple_files = true;
10+
option go_package = "github.com/envoyproxy/go-control-plane/envoy/config/core/v3;corev3";
11+
option (udpa.annotations.file_status).package_version_status = ACTIVE;
12+
13+
// [#protodoc-title: CEL Expression Configuration]
14+
15+
// CEL expression evaluation configuration.
16+
// These options control the behavior of the Common Expression Language runtime for
17+
// individual CEL expressions.
18+
message CelExpressionConfig {
19+
// Enable string conversion functions for CEL expressions. When enabled, CEL expressions
20+
// can convert values to strings using the ``string()`` function.
21+
//
22+
// .. attention::
23+
//
24+
// This option is disabled by default to avoid unbounded memory allocation.
25+
// CEL evaluation cost is typically bounded by the expression size, but converting
26+
// arbitrary values (e.g., large messages, lists, or maps) to strings may allocate
27+
// memory proportional to input data size, which can be unbounded and lead to
28+
// memory exhaustion.
29+
bool enable_string_conversion = 1;
30+
31+
// Enable string concatenation for CEL expressions. When enabled, CEL expressions
32+
// can concatenate strings using the ``+`` operator.
33+
//
34+
// .. attention::
35+
//
36+
// This option is disabled by default to avoid unbounded memory allocation.
37+
// While CEL normally bounds evaluation by expression size, enabling string
38+
// concatenation allows building outputs whose size depends on input data,
39+
// potentially causing large intermediate allocations and memory exhaustion.
40+
bool enable_string_concat = 2;
41+
42+
// Enable string manipulation functions for CEL expressions. When enabled, CEL
43+
// expressions can use additional string functions:
44+
//
45+
// * ``replace(old, new)`` - Replaces all occurrences of ``old`` with ``new``.
46+
// * ``split(separator)`` - Splits a string into a list of substrings.
47+
// * ``lowerAscii()`` - Converts ASCII characters to lowercase.
48+
// * ``upperAscii()`` - Converts ASCII characters to uppercase.
49+
//
50+
// .. note::
51+
//
52+
// Standard CEL string functions like ``contains()``, ``startsWith()``, and
53+
// ``endsWith()`` are always available regardless of this setting.
54+
//
55+
// .. attention::
56+
//
57+
// This option is disabled by default to avoid unbounded memory allocation.
58+
// Although CEL generally bounds evaluation by expression size, functions such as
59+
// ``replace``, ``split``, ``lowerAscii()``, and ``upperAscii()`` can allocate memory
60+
// proportional to input data size. Under adversarial inputs this can lead to
61+
// unbounded allocations and memory exhaustion.
62+
bool enable_string_functions = 3;
63+
}

xds-api/src/main/proto/envoy/config/core/v3/grpc_service.proto

Lines changed: 26 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -45,10 +45,20 @@ message GrpcService {
4545
[(validate.rules).string =
4646
{min_len: 0 max_bytes: 16384 well_known_regex: HTTP_HEADER_VALUE strict: false}];
4747

48-
// Indicates the retry policy for re-establishing the gRPC stream
49-
// This field is optional. If max interval is not provided, it will be set to ten times the provided base interval.
50-
// Currently only supported for xDS gRPC streams.
51-
// If not set, xDS gRPC streams default base interval:500ms, maximum interval:30s will be applied.
48+
// Specifies the retry backoff policy for re-establishing long‑lived xDS gRPC streams.
49+
//
50+
// This field is optional. If ``retry_back_off.max_interval`` is not provided, it will be set to
51+
// ten times the configured ``retry_back_off.base_interval``.
52+
//
53+
// .. note::
54+
//
55+
// This field is only honored for management‑plane xDS gRPC streams created from
56+
// :ref:`ApiConfigSource <envoy_v3_api_msg_config.core.v3.ApiConfigSource>` that use
57+
// ``envoy_grpc``. Data‑plane gRPC clients (for example external authorization or external
58+
// processing filters) must use :ref:`GrpcService.retry_policy
59+
// <envoy_v3_api_field_config.core.v3.GrpcService.retry_policy>` instead.
60+
//
61+
// If not set, xDS gRPC streams default to a base interval of 500ms and a maximum interval of 30s.
5262
RetryPolicy retry_policy = 3;
5363

5464
// Maximum gRPC message size that is allowed to be received.
@@ -329,7 +339,17 @@ message GrpcService {
329339
// <config_http_conn_man_headers_custom_request_headers>`.
330340
repeated HeaderValue initial_metadata = 5;
331341

332-
// Optional default retry policy for streams toward the service.
333-
// If an async stream doesn't have retry policy configured in its stream options, this retry policy is used.
342+
// Optional default retry policy for RPCs or streams initiated toward this gRPC service.
343+
//
344+
// If an async stream does not have a retry policy configured in its per‑stream options, this
345+
// policy is used as the default.
346+
//
347+
// .. note::
348+
//
349+
// This field is only applied by Envoy gRPC (``envoy_grpc``) clients. Google gRPC
350+
// (``google_grpc``) clients currently ignore this field.
351+
//
352+
// If not specified, no default retry policy is applied at the client level and retries only occur
353+
// when explicitly configured in per‑stream options.
334354
RetryPolicy retry_policy = 6;
335355
}

0 commit comments

Comments
 (0)