xds_api/generated/envoy.config.core.v3.rs
1// This file is @generated by prost-build.
2/// Message type for extension configuration.
3/// \[#next-major-version: revisit all existing typed_config that doesn't use this wrapper.\].
4#[derive(Clone, PartialEq, ::prost::Message)]
5pub struct TypedExtensionConfig {
6 /// The name of an extension. This is not used to select the extension, instead
7 /// it serves the role of an opaque identifier.
8 #[prost(string, tag = "1")]
9 pub name: ::prost::alloc::string::String,
10 /// The typed config for the extension. The type URL will be used to identify
11 /// the extension. In the case that the type URL is ``xds.type.v3.TypedStruct``
12 /// (or, for historical reasons, ``udpa.type.v1.TypedStruct``), the inner type
13 /// URL of ``TypedStruct`` will be utilized. See the
14 /// :ref:`extension configuration overview
15 /// <config_overview_extension_configuration>` for further details.
16 #[prost(message, optional, tag = "2")]
17 pub typed_config: ::core::option::Option<
18 super::super::super::super::google::protobuf::Any,
19 >,
20}
21impl ::prost::Name for TypedExtensionConfig {
22 const NAME: &'static str = "TypedExtensionConfig";
23 const PACKAGE: &'static str = "envoy.config.core.v3";
24 fn full_name() -> ::prost::alloc::string::String {
25 "envoy.config.core.v3.TypedExtensionConfig".into()
26 }
27 fn type_url() -> ::prost::alloc::string::String {
28 "type.googleapis.com/envoy.config.core.v3.TypedExtensionConfig".into()
29 }
30}
31/// Generic socket option message. This would be used to set socket options that
32/// might not exist in upstream kernels or precompiled Envoy binaries.
33///
34/// For example:
35///
36/// .. code-block:: json
37///
38/// {
39/// "description": "support tcp keep alive",
40/// "state": 0,
41/// "level": 1,
42/// "name": 9,
43/// "int_value": 1,
44/// }
45///
46/// 1 means SOL_SOCKET and 9 means SO_KEEPALIVE on Linux.
47/// With the above configuration, `TCP Keep-Alives <<https://www.freesoft.org/CIE/RFC/1122/114.htm>`_>
48/// can be enabled in socket with Linux, which can be used in
49/// :ref:`listener's<envoy_v3_api_field_config.listener.v3.Listener.socket_options>` or
50/// :ref:`admin's <envoy_v3_api_field_config.bootstrap.v3.Admin.socket_options>` socket_options etc.
51///
52/// It should be noted that the name or level may have different values on different platforms.
53/// \[#next-free-field: 7\]
54#[derive(Clone, PartialEq, ::prost::Message)]
55pub struct SocketOption {
56 /// An optional name to give this socket option for debugging, etc.
57 /// Uniqueness is not required and no special meaning is assumed.
58 #[prost(string, tag = "1")]
59 pub description: ::prost::alloc::string::String,
60 /// Corresponding to the level value passed to setsockopt, such as IPPROTO_TCP
61 #[prost(int64, tag = "2")]
62 pub level: i64,
63 /// The numeric name as passed to setsockopt
64 #[prost(int64, tag = "3")]
65 pub name: i64,
66 /// The state in which the option will be applied. When used in BindConfig
67 /// STATE_PREBIND is currently the only valid value.
68 #[prost(enumeration = "socket_option::SocketState", tag = "6")]
69 pub state: i32,
70 #[prost(oneof = "socket_option::Value", tags = "4, 5")]
71 pub value: ::core::option::Option<socket_option::Value>,
72}
73/// Nested message and enum types in `SocketOption`.
74pub mod socket_option {
75 #[derive(
76 Clone,
77 Copy,
78 Debug,
79 PartialEq,
80 Eq,
81 Hash,
82 PartialOrd,
83 Ord,
84 ::prost::Enumeration
85 )]
86 #[repr(i32)]
87 pub enum SocketState {
88 /// Socket options are applied after socket creation but before binding the socket to a port
89 StatePrebind = 0,
90 /// Socket options are applied after binding the socket to a port but before calling listen()
91 StateBound = 1,
92 /// Socket options are applied after calling listen()
93 StateListening = 2,
94 }
95 impl SocketState {
96 /// String value of the enum field names used in the ProtoBuf definition.
97 ///
98 /// The values are not transformed in any way and thus are considered stable
99 /// (if the ProtoBuf definition does not change) and safe for programmatic use.
100 pub fn as_str_name(&self) -> &'static str {
101 match self {
102 Self::StatePrebind => "STATE_PREBIND",
103 Self::StateBound => "STATE_BOUND",
104 Self::StateListening => "STATE_LISTENING",
105 }
106 }
107 /// Creates an enum from field names used in the ProtoBuf definition.
108 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
109 match value {
110 "STATE_PREBIND" => Some(Self::StatePrebind),
111 "STATE_BOUND" => Some(Self::StateBound),
112 "STATE_LISTENING" => Some(Self::StateListening),
113 _ => None,
114 }
115 }
116 }
117 #[derive(Clone, PartialEq, ::prost::Oneof)]
118 pub enum Value {
119 /// Because many sockopts take an int value.
120 #[prost(int64, tag = "4")]
121 IntValue(i64),
122 /// Otherwise it's a byte buffer.
123 #[prost(bytes, tag = "5")]
124 BufValue(::prost::alloc::vec::Vec<u8>),
125 }
126}
127impl ::prost::Name for SocketOption {
128 const NAME: &'static str = "SocketOption";
129 const PACKAGE: &'static str = "envoy.config.core.v3";
130 fn full_name() -> ::prost::alloc::string::String {
131 "envoy.config.core.v3.SocketOption".into()
132 }
133 fn type_url() -> ::prost::alloc::string::String {
134 "type.googleapis.com/envoy.config.core.v3.SocketOption".into()
135 }
136}
137#[derive(Clone, PartialEq, ::prost::Message)]
138pub struct SocketOptionsOverride {
139 #[prost(message, repeated, tag = "1")]
140 pub socket_options: ::prost::alloc::vec::Vec<SocketOption>,
141}
142impl ::prost::Name for SocketOptionsOverride {
143 const NAME: &'static str = "SocketOptionsOverride";
144 const PACKAGE: &'static str = "envoy.config.core.v3";
145 fn full_name() -> ::prost::alloc::string::String {
146 "envoy.config.core.v3.SocketOptionsOverride".into()
147 }
148 fn type_url() -> ::prost::alloc::string::String {
149 "type.googleapis.com/envoy.config.core.v3.SocketOptionsOverride".into()
150 }
151}
152#[derive(Clone, PartialEq, ::prost::Message)]
153pub struct Pipe {
154 /// Unix Domain Socket path. On Linux, paths starting with '@' will use the
155 /// abstract namespace. The starting '@' is replaced by a null byte by Envoy.
156 /// Paths starting with '@' will result in an error in environments other than
157 /// Linux.
158 #[prost(string, tag = "1")]
159 pub path: ::prost::alloc::string::String,
160 /// The mode for the Pipe. Not applicable for abstract sockets.
161 #[prost(uint32, tag = "2")]
162 pub mode: u32,
163}
164impl ::prost::Name for Pipe {
165 const NAME: &'static str = "Pipe";
166 const PACKAGE: &'static str = "envoy.config.core.v3";
167 fn full_name() -> ::prost::alloc::string::String {
168 "envoy.config.core.v3.Pipe".into()
169 }
170 fn type_url() -> ::prost::alloc::string::String {
171 "type.googleapis.com/envoy.config.core.v3.Pipe".into()
172 }
173}
174/// The address represents an envoy internal listener.
175/// \[#comment: TODO(asraa): When address available, remove workaround from test/server/server_fuzz_test.cc:30.\]
176#[derive(Clone, PartialEq, ::prost::Message)]
177pub struct EnvoyInternalAddress {
178 /// Specifies an endpoint identifier to distinguish between multiple endpoints for the same internal listener in a
179 /// single upstream pool. Only used in the upstream addresses for tracking changes to individual endpoints. This, for
180 /// example, may be set to the final destination IP for the target internal listener.
181 #[prost(string, tag = "2")]
182 pub endpoint_id: ::prost::alloc::string::String,
183 #[prost(oneof = "envoy_internal_address::AddressNameSpecifier", tags = "1")]
184 pub address_name_specifier: ::core::option::Option<
185 envoy_internal_address::AddressNameSpecifier,
186 >,
187}
188/// Nested message and enum types in `EnvoyInternalAddress`.
189pub mod envoy_internal_address {
190 #[derive(Clone, PartialEq, ::prost::Oneof)]
191 pub enum AddressNameSpecifier {
192 /// Specifies the :ref:`name <envoy_v3_api_field_config.listener.v3.Listener.name>` of the
193 /// internal listener.
194 #[prost(string, tag = "1")]
195 ServerListenerName(::prost::alloc::string::String),
196 }
197}
198impl ::prost::Name for EnvoyInternalAddress {
199 const NAME: &'static str = "EnvoyInternalAddress";
200 const PACKAGE: &'static str = "envoy.config.core.v3";
201 fn full_name() -> ::prost::alloc::string::String {
202 "envoy.config.core.v3.EnvoyInternalAddress".into()
203 }
204 fn type_url() -> ::prost::alloc::string::String {
205 "type.googleapis.com/envoy.config.core.v3.EnvoyInternalAddress".into()
206 }
207}
208/// \[#next-free-field: 7\]
209#[derive(Clone, PartialEq, ::prost::Message)]
210pub struct SocketAddress {
211 #[prost(enumeration = "socket_address::Protocol", tag = "1")]
212 pub protocol: i32,
213 /// The address for this socket. :ref:`Listeners <config_listeners>` will bind
214 /// to the address. An empty address is not allowed. Specify ``0.0.0.0`` or ``::``
215 /// to bind to any address. [#comment:TODO(zuercher) reinstate when implemented:
216 /// It is possible to distinguish a Listener address via the prefix/suffix matching
217 /// in :ref:`FilterChainMatch <envoy_v3_api_msg_config.listener.v3.FilterChainMatch>`.] When used
218 /// within an upstream :ref:`BindConfig <envoy_v3_api_msg_config.core.v3.BindConfig>`, the address
219 /// controls the source address of outbound connections. For :ref:`clusters
220 /// <envoy_v3_api_msg_config.cluster.v3.Cluster>`, the cluster type determines whether the
221 /// address must be an IP (``STATIC`` or ``EDS`` clusters) or a hostname resolved by DNS
222 /// (``STRICT_DNS`` or ``LOGICAL_DNS`` clusters). Address resolution can be customized
223 /// via :ref:`resolver_name <envoy_v3_api_field_config.core.v3.SocketAddress.resolver_name>`.
224 #[prost(string, tag = "2")]
225 pub address: ::prost::alloc::string::String,
226 /// The name of the custom resolver. This must have been registered with Envoy. If
227 /// this is empty, a context dependent default applies. If the address is a concrete
228 /// IP address, no resolution will occur. If address is a hostname this
229 /// should be set for resolution other than DNS. Specifying a custom resolver with
230 /// ``STRICT_DNS`` or ``LOGICAL_DNS`` will generate an error at runtime.
231 #[prost(string, tag = "5")]
232 pub resolver_name: ::prost::alloc::string::String,
233 /// When binding to an IPv6 address above, this enables `IPv4 compatibility
234 /// <<https://tools.ietf.org/html/rfc3493#page-11>`_.> Binding to ``::`` will
235 /// allow both IPv4 and IPv6 connections, with peer IPv4 addresses mapped into
236 /// IPv6 space as ``::FFFF:<IPv4-address>``.
237 #[prost(bool, tag = "6")]
238 pub ipv4_compat: bool,
239 #[prost(oneof = "socket_address::PortSpecifier", tags = "3, 4")]
240 pub port_specifier: ::core::option::Option<socket_address::PortSpecifier>,
241}
242/// Nested message and enum types in `SocketAddress`.
243pub mod socket_address {
244 #[derive(
245 Clone,
246 Copy,
247 Debug,
248 PartialEq,
249 Eq,
250 Hash,
251 PartialOrd,
252 Ord,
253 ::prost::Enumeration
254 )]
255 #[repr(i32)]
256 pub enum Protocol {
257 Tcp = 0,
258 Udp = 1,
259 }
260 impl Protocol {
261 /// String value of the enum field names used in the ProtoBuf definition.
262 ///
263 /// The values are not transformed in any way and thus are considered stable
264 /// (if the ProtoBuf definition does not change) and safe for programmatic use.
265 pub fn as_str_name(&self) -> &'static str {
266 match self {
267 Self::Tcp => "TCP",
268 Self::Udp => "UDP",
269 }
270 }
271 /// Creates an enum from field names used in the ProtoBuf definition.
272 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
273 match value {
274 "TCP" => Some(Self::Tcp),
275 "UDP" => Some(Self::Udp),
276 _ => None,
277 }
278 }
279 }
280 #[derive(Clone, PartialEq, ::prost::Oneof)]
281 pub enum PortSpecifier {
282 #[prost(uint32, tag = "3")]
283 PortValue(u32),
284 /// This is only valid if :ref:`resolver_name
285 /// <envoy_v3_api_field_config.core.v3.SocketAddress.resolver_name>` is specified below and the
286 /// named resolver is capable of named port resolution.
287 #[prost(string, tag = "4")]
288 NamedPort(::prost::alloc::string::String),
289 }
290}
291impl ::prost::Name for SocketAddress {
292 const NAME: &'static str = "SocketAddress";
293 const PACKAGE: &'static str = "envoy.config.core.v3";
294 fn full_name() -> ::prost::alloc::string::String {
295 "envoy.config.core.v3.SocketAddress".into()
296 }
297 fn type_url() -> ::prost::alloc::string::String {
298 "type.googleapis.com/envoy.config.core.v3.SocketAddress".into()
299 }
300}
301#[derive(Clone, Copy, PartialEq, ::prost::Message)]
302pub struct TcpKeepalive {
303 /// Maximum number of keepalive probes to send without response before deciding
304 /// the connection is dead. Default is to use the OS level configuration (unless
305 /// overridden, Linux defaults to 9.)
306 #[prost(message, optional, tag = "1")]
307 pub keepalive_probes: ::core::option::Option<
308 super::super::super::super::google::protobuf::UInt32Value,
309 >,
310 /// The number of seconds a connection needs to be idle before keep-alive probes
311 /// start being sent. Default is to use the OS level configuration (unless
312 /// overridden, Linux defaults to 7200s (i.e., 2 hours.)
313 #[prost(message, optional, tag = "2")]
314 pub keepalive_time: ::core::option::Option<
315 super::super::super::super::google::protobuf::UInt32Value,
316 >,
317 /// The number of seconds between keep-alive probes. Default is to use the OS
318 /// level configuration (unless overridden, Linux defaults to 75s.)
319 #[prost(message, optional, tag = "3")]
320 pub keepalive_interval: ::core::option::Option<
321 super::super::super::super::google::protobuf::UInt32Value,
322 >,
323}
324impl ::prost::Name for TcpKeepalive {
325 const NAME: &'static str = "TcpKeepalive";
326 const PACKAGE: &'static str = "envoy.config.core.v3";
327 fn full_name() -> ::prost::alloc::string::String {
328 "envoy.config.core.v3.TcpKeepalive".into()
329 }
330 fn type_url() -> ::prost::alloc::string::String {
331 "type.googleapis.com/envoy.config.core.v3.TcpKeepalive".into()
332 }
333}
334#[derive(Clone, PartialEq, ::prost::Message)]
335pub struct ExtraSourceAddress {
336 /// The additional address to bind.
337 #[prost(message, optional, tag = "1")]
338 pub address: ::core::option::Option<SocketAddress>,
339 /// Additional socket options that may not be present in Envoy source code or
340 /// precompiled binaries. If specified, this will override the
341 /// :ref:`socket_options <envoy_v3_api_field_config.core.v3.BindConfig.socket_options>`
342 /// in the BindConfig. If specified with no
343 /// :ref:`socket_options <envoy_v3_api_field_config.core.v3.SocketOptionsOverride.socket_options>`
344 /// or an empty list of :ref:`socket_options <envoy_v3_api_field_config.core.v3.SocketOptionsOverride.socket_options>`,
345 /// it means no socket option will apply.
346 #[prost(message, optional, tag = "2")]
347 pub socket_options: ::core::option::Option<SocketOptionsOverride>,
348}
349impl ::prost::Name for ExtraSourceAddress {
350 const NAME: &'static str = "ExtraSourceAddress";
351 const PACKAGE: &'static str = "envoy.config.core.v3";
352 fn full_name() -> ::prost::alloc::string::String {
353 "envoy.config.core.v3.ExtraSourceAddress".into()
354 }
355 fn type_url() -> ::prost::alloc::string::String {
356 "type.googleapis.com/envoy.config.core.v3.ExtraSourceAddress".into()
357 }
358}
359/// \[#next-free-field: 7\]
360#[derive(Clone, PartialEq, ::prost::Message)]
361pub struct BindConfig {
362 /// The address to bind to when creating a socket.
363 #[prost(message, optional, tag = "1")]
364 pub source_address: ::core::option::Option<SocketAddress>,
365 /// Whether to set the ``IP_FREEBIND`` option when creating the socket. When this
366 /// flag is set to true, allows the :ref:`source_address
367 /// <envoy_v3_api_field_config.core.v3.BindConfig.source_address>` to be an IP address
368 /// that is not configured on the system running Envoy. When this flag is set
369 /// to false, the option ``IP_FREEBIND`` is disabled on the socket. When this
370 /// flag is not set (default), the socket is not modified, i.e. the option is
371 /// neither enabled nor disabled.
372 #[prost(message, optional, tag = "2")]
373 pub freebind: ::core::option::Option<
374 super::super::super::super::google::protobuf::BoolValue,
375 >,
376 /// Additional socket options that may not be present in Envoy source code or
377 /// precompiled binaries.
378 #[prost(message, repeated, tag = "3")]
379 pub socket_options: ::prost::alloc::vec::Vec<SocketOption>,
380 /// Extra source addresses appended to the address specified in the ``source_address``
381 /// field. This enables to specify multiple source addresses.
382 /// The source address selection is determined by :ref:`local_address_selector
383 /// <envoy_v3_api_field_config.core.v3.BindConfig.local_address_selector>`.
384 #[prost(message, repeated, tag = "5")]
385 pub extra_source_addresses: ::prost::alloc::vec::Vec<ExtraSourceAddress>,
386 /// Deprecated by
387 /// :ref:`extra_source_addresses <envoy_v3_api_field_config.core.v3.BindConfig.extra_source_addresses>`
388 #[deprecated]
389 #[prost(message, repeated, tag = "4")]
390 pub additional_source_addresses: ::prost::alloc::vec::Vec<SocketAddress>,
391 /// Custom local address selector to override the default (i.e.
392 /// :ref:`DefaultLocalAddressSelector
393 /// <envoy_v3_api_msg_config.upstream.local_address_selector.v3.DefaultLocalAddressSelector>`).
394 /// \[#extension-category: envoy.upstream.local_address_selector\]
395 #[prost(message, optional, tag = "6")]
396 pub local_address_selector: ::core::option::Option<TypedExtensionConfig>,
397}
398impl ::prost::Name for BindConfig {
399 const NAME: &'static str = "BindConfig";
400 const PACKAGE: &'static str = "envoy.config.core.v3";
401 fn full_name() -> ::prost::alloc::string::String {
402 "envoy.config.core.v3.BindConfig".into()
403 }
404 fn type_url() -> ::prost::alloc::string::String {
405 "type.googleapis.com/envoy.config.core.v3.BindConfig".into()
406 }
407}
408/// Addresses specify either a logical or physical address and port, which are
409/// used to tell Envoy where to bind/listen, connect to upstream and find
410/// management servers.
411#[derive(Clone, PartialEq, ::prost::Message)]
412pub struct Address {
413 #[prost(oneof = "address::Address", tags = "1, 2, 3")]
414 pub address: ::core::option::Option<address::Address>,
415}
416/// Nested message and enum types in `Address`.
417pub mod address {
418 #[derive(Clone, PartialEq, ::prost::Oneof)]
419 pub enum Address {
420 #[prost(message, tag = "1")]
421 SocketAddress(super::SocketAddress),
422 #[prost(message, tag = "2")]
423 Pipe(super::Pipe),
424 /// Specifies a user-space address handled by :ref:`internal listeners
425 /// <envoy_v3_api_field_config.listener.v3.Listener.internal_listener>`.
426 #[prost(message, tag = "3")]
427 EnvoyInternalAddress(super::EnvoyInternalAddress),
428 }
429}
430impl ::prost::Name for Address {
431 const NAME: &'static str = "Address";
432 const PACKAGE: &'static str = "envoy.config.core.v3";
433 fn full_name() -> ::prost::alloc::string::String {
434 "envoy.config.core.v3.Address".into()
435 }
436 fn type_url() -> ::prost::alloc::string::String {
437 "type.googleapis.com/envoy.config.core.v3.Address".into()
438 }
439}
440/// CidrRange specifies an IP Address and a prefix length to construct
441/// the subnet mask for a `CIDR <<https://tools.ietf.org/html/rfc4632>`_> range.
442#[derive(Clone, PartialEq, ::prost::Message)]
443pub struct CidrRange {
444 /// IPv4 or IPv6 address, e.g. ``192.0.0.0`` or ``2001:db8::``.
445 #[prost(string, tag = "1")]
446 pub address_prefix: ::prost::alloc::string::String,
447 /// Length of prefix, e.g. 0, 32. Defaults to 0 when unset.
448 #[prost(message, optional, tag = "2")]
449 pub prefix_len: ::core::option::Option<
450 super::super::super::super::google::protobuf::UInt32Value,
451 >,
452}
453impl ::prost::Name for CidrRange {
454 const NAME: &'static str = "CidrRange";
455 const PACKAGE: &'static str = "envoy.config.core.v3";
456 fn full_name() -> ::prost::alloc::string::String {
457 "envoy.config.core.v3.CidrRange".into()
458 }
459 fn type_url() -> ::prost::alloc::string::String {
460 "type.googleapis.com/envoy.config.core.v3.CidrRange".into()
461 }
462}
463/// Configuration defining a jittered exponential back off strategy.
464#[derive(Clone, Copy, PartialEq, ::prost::Message)]
465pub struct BackoffStrategy {
466 /// The base interval to be used for the next back off computation. It should
467 /// be greater than zero and less than or equal to :ref:`max_interval
468 /// <envoy_v3_api_field_config.core.v3.BackoffStrategy.max_interval>`.
469 #[prost(message, optional, tag = "1")]
470 pub base_interval: ::core::option::Option<
471 super::super::super::super::google::protobuf::Duration,
472 >,
473 /// Specifies the maximum interval between retries. This parameter is optional,
474 /// but must be greater than or equal to the :ref:`base_interval
475 /// <envoy_v3_api_field_config.core.v3.BackoffStrategy.base_interval>` if set. The default
476 /// is 10 times the :ref:`base_interval
477 /// <envoy_v3_api_field_config.core.v3.BackoffStrategy.base_interval>`.
478 #[prost(message, optional, tag = "2")]
479 pub max_interval: ::core::option::Option<
480 super::super::super::super::google::protobuf::Duration,
481 >,
482}
483impl ::prost::Name for BackoffStrategy {
484 const NAME: &'static str = "BackoffStrategy";
485 const PACKAGE: &'static str = "envoy.config.core.v3";
486 fn full_name() -> ::prost::alloc::string::String {
487 "envoy.config.core.v3.BackoffStrategy".into()
488 }
489 fn type_url() -> ::prost::alloc::string::String {
490 "type.googleapis.com/envoy.config.core.v3.BackoffStrategy".into()
491 }
492}
493/// Envoy external URI descriptor
494#[derive(Clone, PartialEq, ::prost::Message)]
495pub struct HttpUri {
496 /// The HTTP server URI. It should be a full FQDN with protocol, host and path.
497 ///
498 /// Example:
499 ///
500 /// .. code-block:: yaml
501 ///
502 /// uri: <https://www.googleapis.com/oauth2/v1/certs>
503 ///
504 #[prost(string, tag = "1")]
505 pub uri: ::prost::alloc::string::String,
506 /// Sets the maximum duration in milliseconds that a response can take to arrive upon request.
507 #[prost(message, optional, tag = "3")]
508 pub timeout: ::core::option::Option<
509 super::super::super::super::google::protobuf::Duration,
510 >,
511 /// Specify how ``uri`` is to be fetched. Today, this requires an explicit
512 /// cluster, but in the future we may support dynamic cluster creation or
513 /// inline DNS resolution. See `issue
514 /// <<https://github.com/envoyproxy/envoy/issues/1606>`_.>
515 #[prost(oneof = "http_uri::HttpUpstreamType", tags = "2")]
516 pub http_upstream_type: ::core::option::Option<http_uri::HttpUpstreamType>,
517}
518/// Nested message and enum types in `HttpUri`.
519pub mod http_uri {
520 /// Specify how ``uri`` is to be fetched. Today, this requires an explicit
521 /// cluster, but in the future we may support dynamic cluster creation or
522 /// inline DNS resolution. See `issue
523 /// <<https://github.com/envoyproxy/envoy/issues/1606>`_.>
524 #[derive(Clone, PartialEq, ::prost::Oneof)]
525 pub enum HttpUpstreamType {
526 /// A cluster is created in the Envoy "cluster_manager" config
527 /// section. This field specifies the cluster name.
528 ///
529 /// Example:
530 ///
531 /// .. code-block:: yaml
532 ///
533 /// cluster: jwks_cluster
534 ///
535 #[prost(string, tag = "2")]
536 Cluster(::prost::alloc::string::String),
537 }
538}
539impl ::prost::Name for HttpUri {
540 const NAME: &'static str = "HttpUri";
541 const PACKAGE: &'static str = "envoy.config.core.v3";
542 fn full_name() -> ::prost::alloc::string::String {
543 "envoy.config.core.v3.HttpUri".into()
544 }
545 fn type_url() -> ::prost::alloc::string::String {
546 "type.googleapis.com/envoy.config.core.v3.HttpUri".into()
547 }
548}
549/// Identifies location of where either Envoy runs or where upstream hosts run.
550#[derive(Clone, PartialEq, ::prost::Message)]
551pub struct Locality {
552 /// Region this :ref:`zone <envoy_v3_api_field_config.core.v3.Locality.zone>` belongs to.
553 #[prost(string, tag = "1")]
554 pub region: ::prost::alloc::string::String,
555 /// Defines the local service zone where Envoy is running. Though optional, it
556 /// should be set if discovery service routing is used and the discovery
557 /// service exposes :ref:`zone data <envoy_v3_api_field_config.endpoint.v3.LocalityLbEndpoints.locality>`,
558 /// either in this message or via :option:`--service-zone`. The meaning of zone
559 /// is context dependent, e.g. `Availability Zone (AZ)
560 /// <<https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-regions-availability-zones.html>`_>
561 /// on AWS, `Zone <<https://cloud.google.com/compute/docs/regions-zones/>`_> on
562 /// GCP, etc.
563 #[prost(string, tag = "2")]
564 pub zone: ::prost::alloc::string::String,
565 /// When used for locality of upstream hosts, this field further splits zone
566 /// into smaller chunks of sub-zones so they can be load balanced
567 /// independently.
568 #[prost(string, tag = "3")]
569 pub sub_zone: ::prost::alloc::string::String,
570}
571impl ::prost::Name for Locality {
572 const NAME: &'static str = "Locality";
573 const PACKAGE: &'static str = "envoy.config.core.v3";
574 fn full_name() -> ::prost::alloc::string::String {
575 "envoy.config.core.v3.Locality".into()
576 }
577 fn type_url() -> ::prost::alloc::string::String {
578 "type.googleapis.com/envoy.config.core.v3.Locality".into()
579 }
580}
581/// BuildVersion combines SemVer version of extension with free-form build information
582/// (i.e. 'alpha', 'private-build') as a set of strings.
583#[derive(Clone, PartialEq, ::prost::Message)]
584pub struct BuildVersion {
585 /// SemVer version of extension.
586 #[prost(message, optional, tag = "1")]
587 pub version: ::core::option::Option<
588 super::super::super::r#type::v3::SemanticVersion,
589 >,
590 /// Free-form build information.
591 /// Envoy defines several well known keys in the source/common/version/version.h file
592 #[prost(message, optional, tag = "2")]
593 pub metadata: ::core::option::Option<
594 super::super::super::super::google::protobuf::Struct,
595 >,
596}
597impl ::prost::Name for BuildVersion {
598 const NAME: &'static str = "BuildVersion";
599 const PACKAGE: &'static str = "envoy.config.core.v3";
600 fn full_name() -> ::prost::alloc::string::String {
601 "envoy.config.core.v3.BuildVersion".into()
602 }
603 fn type_url() -> ::prost::alloc::string::String {
604 "type.googleapis.com/envoy.config.core.v3.BuildVersion".into()
605 }
606}
607/// Version and identification for an Envoy extension.
608/// \[#next-free-field: 7\]
609#[derive(Clone, PartialEq, ::prost::Message)]
610pub struct Extension {
611 /// This is the name of the Envoy filter as specified in the Envoy
612 /// configuration, e.g. envoy.filters.http.router, com.acme.widget.
613 #[prost(string, tag = "1")]
614 pub name: ::prost::alloc::string::String,
615 /// Category of the extension.
616 /// Extension category names use reverse DNS notation. For instance "envoy.filters.listener"
617 /// for Envoy's built-in listener filters or "com.acme.filters.http" for HTTP filters from
618 /// acme.com vendor.
619 /// \[#comment:TODO(yanavlasov): Link to the doc with existing envoy category names.\]
620 #[prost(string, tag = "2")]
621 pub category: ::prost::alloc::string::String,
622 /// \[#not-implemented-hide:\] Type descriptor of extension configuration proto.
623 /// \[#comment:TODO(yanavlasov): Link to the doc with existing configuration protos.\]
624 /// \[#comment:TODO(yanavlasov): Add tests when PR #9391 lands.\]
625 #[deprecated]
626 #[prost(string, tag = "3")]
627 pub type_descriptor: ::prost::alloc::string::String,
628 /// The version is a property of the extension and maintained independently
629 /// of other extensions and the Envoy API.
630 /// This field is not set when extension did not provide version information.
631 #[prost(message, optional, tag = "4")]
632 pub version: ::core::option::Option<BuildVersion>,
633 /// Indicates that the extension is present but was disabled via dynamic configuration.
634 #[prost(bool, tag = "5")]
635 pub disabled: bool,
636 /// Type URLs of extension configuration protos.
637 #[prost(string, repeated, tag = "6")]
638 pub type_urls: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
639}
640impl ::prost::Name for Extension {
641 const NAME: &'static str = "Extension";
642 const PACKAGE: &'static str = "envoy.config.core.v3";
643 fn full_name() -> ::prost::alloc::string::String {
644 "envoy.config.core.v3.Extension".into()
645 }
646 fn type_url() -> ::prost::alloc::string::String {
647 "type.googleapis.com/envoy.config.core.v3.Extension".into()
648 }
649}
650/// Identifies a specific Envoy instance. The node identifier is presented to the
651/// management server, which may use this identifier to distinguish per Envoy
652/// configuration for serving.
653/// \[#next-free-field: 13\]
654#[derive(Clone, PartialEq, ::prost::Message)]
655pub struct Node {
656 /// An opaque node identifier for the Envoy node. This also provides the local
657 /// service node name. It should be set if any of the following features are
658 /// used: :ref:`statsd <arch_overview_statistics>`, :ref:`CDS
659 /// <config_cluster_manager_cds>`, and :ref:`HTTP tracing
660 /// <arch_overview_tracing>`, either in this message or via
661 /// :option:`--service-node`.
662 #[prost(string, tag = "1")]
663 pub id: ::prost::alloc::string::String,
664 /// Defines the local service cluster name where Envoy is running. Though
665 /// optional, it should be set if any of the following features are used:
666 /// :ref:`statsd <arch_overview_statistics>`, :ref:`health check cluster
667 /// verification
668 /// <envoy_v3_api_field_config.core.v3.HealthCheck.HttpHealthCheck.service_name_matcher>`,
669 /// :ref:`runtime override directory <envoy_v3_api_msg_config.bootstrap.v3.Runtime>`,
670 /// :ref:`user agent addition
671 /// <envoy_v3_api_field_extensions.filters.network.http_connection_manager.v3.HttpConnectionManager.add_user_agent>`,
672 /// :ref:`HTTP global rate limiting <config_http_filters_rate_limit>`,
673 /// :ref:`CDS <config_cluster_manager_cds>`, and :ref:`HTTP tracing
674 /// <arch_overview_tracing>`, either in this message or via
675 /// :option:`--service-cluster`.
676 #[prost(string, tag = "2")]
677 pub cluster: ::prost::alloc::string::String,
678 /// Opaque metadata extending the node identifier. Envoy will pass this
679 /// directly to the management server.
680 #[prost(message, optional, tag = "3")]
681 pub metadata: ::core::option::Option<
682 super::super::super::super::google::protobuf::Struct,
683 >,
684 /// Map from xDS resource type URL to dynamic context parameters. These may vary at runtime (unlike
685 /// other fields in this message). For example, the xDS client may have a shard identifier that
686 /// changes during the lifetime of the xDS client. In Envoy, this would be achieved by updating the
687 /// dynamic context on the Server::Instance's LocalInfo context provider. The shard ID dynamic
688 /// parameter then appears in this field during future discovery requests.
689 #[prost(map = "string, message", tag = "12")]
690 pub dynamic_parameters: ::std::collections::HashMap<
691 ::prost::alloc::string::String,
692 super::super::super::super::xds::core::v3::ContextParams,
693 >,
694 /// Locality specifying where the Envoy instance is running.
695 #[prost(message, optional, tag = "4")]
696 pub locality: ::core::option::Option<Locality>,
697 /// Free-form string that identifies the entity requesting config.
698 /// E.g. "envoy" or "grpc"
699 #[prost(string, tag = "6")]
700 pub user_agent_name: ::prost::alloc::string::String,
701 /// List of extensions and their versions supported by the node.
702 #[prost(message, repeated, tag = "9")]
703 pub extensions: ::prost::alloc::vec::Vec<Extension>,
704 /// Client feature support list. These are well known features described
705 /// in the Envoy API repository for a given major version of an API. Client features
706 /// use reverse DNS naming scheme, for example ``com.acme.feature``.
707 /// See :ref:`the list of features <client_features>` that xDS client may
708 /// support.
709 #[prost(string, repeated, tag = "10")]
710 pub client_features: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
711 /// Known listening ports on the node as a generic hint to the management server
712 /// for filtering :ref:`listeners <config_listeners>` to be returned. For example,
713 /// if there is a listener bound to port 80, the list can optionally contain the
714 /// SocketAddress ``(0.0.0.0,80)``. The field is optional and just a hint.
715 #[deprecated]
716 #[prost(message, repeated, tag = "11")]
717 pub listening_addresses: ::prost::alloc::vec::Vec<Address>,
718 #[prost(oneof = "node::UserAgentVersionType", tags = "7, 8")]
719 pub user_agent_version_type: ::core::option::Option<node::UserAgentVersionType>,
720}
721/// Nested message and enum types in `Node`.
722pub mod node {
723 #[derive(Clone, PartialEq, ::prost::Oneof)]
724 pub enum UserAgentVersionType {
725 /// Free-form string that identifies the version of the entity requesting config.
726 /// E.g. "1.12.2" or "abcd1234", or "SpecialEnvoyBuild"
727 #[prost(string, tag = "7")]
728 UserAgentVersion(::prost::alloc::string::String),
729 /// Structured version of the entity requesting config.
730 #[prost(message, tag = "8")]
731 UserAgentBuildVersion(super::BuildVersion),
732 }
733}
734impl ::prost::Name for Node {
735 const NAME: &'static str = "Node";
736 const PACKAGE: &'static str = "envoy.config.core.v3";
737 fn full_name() -> ::prost::alloc::string::String {
738 "envoy.config.core.v3.Node".into()
739 }
740 fn type_url() -> ::prost::alloc::string::String {
741 "type.googleapis.com/envoy.config.core.v3.Node".into()
742 }
743}
744/// Metadata provides additional inputs to filters based on matched listeners,
745/// filter chains, routes and endpoints. It is structured as a map, usually from
746/// filter name (in reverse DNS format) to metadata specific to the filter. Metadata
747/// key-values for a filter are merged as connection and request handling occurs,
748/// with later values for the same key overriding earlier values.
749///
750/// An example use of metadata is providing additional values to
751/// http_connection_manager in the envoy.http_connection_manager.access_log
752/// namespace.
753///
754/// Another example use of metadata is to per service config info in cluster metadata, which may get
755/// consumed by multiple filters.
756///
757/// For load balancing, Metadata provides a means to subset cluster endpoints.
758/// Endpoints have a Metadata object associated and routes contain a Metadata
759/// object to match against. There are some well defined metadata used today for
760/// this purpose:
761///
762/// * ``{"envoy.lb": {"canary": <bool> }}`` This indicates the canary status of an
763/// endpoint and is also used during header processing
764/// (x-envoy-upstream-canary) and for stats purposes.
765/// \[#next-major-version: move to type/metadata/v2\]
766#[derive(Clone, PartialEq, ::prost::Message)]
767pub struct Metadata {
768 /// Key is the reverse DNS filter name, e.g. com.acme.widget. The ``envoy.*``
769 /// namespace is reserved for Envoy's built-in filters.
770 /// If both ``filter_metadata`` and
771 /// :ref:`typed_filter_metadata <envoy_v3_api_field_config.core.v3.Metadata.typed_filter_metadata>`
772 /// fields are present in the metadata with same keys,
773 /// only ``typed_filter_metadata`` field will be parsed.
774 #[prost(map = "string, message", tag = "1")]
775 pub filter_metadata: ::std::collections::HashMap<
776 ::prost::alloc::string::String,
777 super::super::super::super::google::protobuf::Struct,
778 >,
779 /// Key is the reverse DNS filter name, e.g. com.acme.widget. The ``envoy.*``
780 /// namespace is reserved for Envoy's built-in filters.
781 /// The value is encoded as google.protobuf.Any.
782 /// If both :ref:`filter_metadata <envoy_v3_api_field_config.core.v3.Metadata.filter_metadata>`
783 /// and ``typed_filter_metadata`` fields are present in the metadata with same keys,
784 /// only ``typed_filter_metadata`` field will be parsed.
785 #[prost(map = "string, message", tag = "2")]
786 pub typed_filter_metadata: ::std::collections::HashMap<
787 ::prost::alloc::string::String,
788 super::super::super::super::google::protobuf::Any,
789 >,
790}
791impl ::prost::Name for Metadata {
792 const NAME: &'static str = "Metadata";
793 const PACKAGE: &'static str = "envoy.config.core.v3";
794 fn full_name() -> ::prost::alloc::string::String {
795 "envoy.config.core.v3.Metadata".into()
796 }
797 fn type_url() -> ::prost::alloc::string::String {
798 "type.googleapis.com/envoy.config.core.v3.Metadata".into()
799 }
800}
801/// Runtime derived uint32 with a default when not specified.
802#[derive(Clone, PartialEq, ::prost::Message)]
803pub struct RuntimeUInt32 {
804 /// Default value if runtime value is not available.
805 #[prost(uint32, tag = "2")]
806 pub default_value: u32,
807 /// Runtime key to get value for comparison. This value is used if defined.
808 #[prost(string, tag = "3")]
809 pub runtime_key: ::prost::alloc::string::String,
810}
811impl ::prost::Name for RuntimeUInt32 {
812 const NAME: &'static str = "RuntimeUInt32";
813 const PACKAGE: &'static str = "envoy.config.core.v3";
814 fn full_name() -> ::prost::alloc::string::String {
815 "envoy.config.core.v3.RuntimeUInt32".into()
816 }
817 fn type_url() -> ::prost::alloc::string::String {
818 "type.googleapis.com/envoy.config.core.v3.RuntimeUInt32".into()
819 }
820}
821/// Runtime derived percentage with a default when not specified.
822#[derive(Clone, PartialEq, ::prost::Message)]
823pub struct RuntimePercent {
824 /// Default value if runtime value is not available.
825 #[prost(message, optional, tag = "1")]
826 pub default_value: ::core::option::Option<super::super::super::r#type::v3::Percent>,
827 /// Runtime key to get value for comparison. This value is used if defined.
828 #[prost(string, tag = "2")]
829 pub runtime_key: ::prost::alloc::string::String,
830}
831impl ::prost::Name for RuntimePercent {
832 const NAME: &'static str = "RuntimePercent";
833 const PACKAGE: &'static str = "envoy.config.core.v3";
834 fn full_name() -> ::prost::alloc::string::String {
835 "envoy.config.core.v3.RuntimePercent".into()
836 }
837 fn type_url() -> ::prost::alloc::string::String {
838 "type.googleapis.com/envoy.config.core.v3.RuntimePercent".into()
839 }
840}
841/// Runtime derived double with a default when not specified.
842#[derive(Clone, PartialEq, ::prost::Message)]
843pub struct RuntimeDouble {
844 /// Default value if runtime value is not available.
845 #[prost(double, tag = "1")]
846 pub default_value: f64,
847 /// Runtime key to get value for comparison. This value is used if defined.
848 #[prost(string, tag = "2")]
849 pub runtime_key: ::prost::alloc::string::String,
850}
851impl ::prost::Name for RuntimeDouble {
852 const NAME: &'static str = "RuntimeDouble";
853 const PACKAGE: &'static str = "envoy.config.core.v3";
854 fn full_name() -> ::prost::alloc::string::String {
855 "envoy.config.core.v3.RuntimeDouble".into()
856 }
857 fn type_url() -> ::prost::alloc::string::String {
858 "type.googleapis.com/envoy.config.core.v3.RuntimeDouble".into()
859 }
860}
861/// Runtime derived bool with a default when not specified.
862#[derive(Clone, PartialEq, ::prost::Message)]
863pub struct RuntimeFeatureFlag {
864 /// Default value if runtime value is not available.
865 #[prost(message, optional, tag = "1")]
866 pub default_value: ::core::option::Option<
867 super::super::super::super::google::protobuf::BoolValue,
868 >,
869 /// Runtime key to get value for comparison. This value is used if defined. The boolean value must
870 /// be represented via its
871 /// `canonical JSON encoding <<https://developers.google.com/protocol-buffers/docs/proto3#json>`_.>
872 #[prost(string, tag = "2")]
873 pub runtime_key: ::prost::alloc::string::String,
874}
875impl ::prost::Name for RuntimeFeatureFlag {
876 const NAME: &'static str = "RuntimeFeatureFlag";
877 const PACKAGE: &'static str = "envoy.config.core.v3";
878 fn full_name() -> ::prost::alloc::string::String {
879 "envoy.config.core.v3.RuntimeFeatureFlag".into()
880 }
881 fn type_url() -> ::prost::alloc::string::String {
882 "type.googleapis.com/envoy.config.core.v3.RuntimeFeatureFlag".into()
883 }
884}
885#[derive(Clone, PartialEq, ::prost::Message)]
886pub struct KeyValue {
887 /// The key of the key/value pair.
888 #[prost(string, tag = "1")]
889 pub key: ::prost::alloc::string::String,
890 /// The value of the key/value pair.
891 #[prost(bytes = "vec", tag = "2")]
892 pub value: ::prost::alloc::vec::Vec<u8>,
893}
894impl ::prost::Name for KeyValue {
895 const NAME: &'static str = "KeyValue";
896 const PACKAGE: &'static str = "envoy.config.core.v3";
897 fn full_name() -> ::prost::alloc::string::String {
898 "envoy.config.core.v3.KeyValue".into()
899 }
900 fn type_url() -> ::prost::alloc::string::String {
901 "type.googleapis.com/envoy.config.core.v3.KeyValue".into()
902 }
903}
904/// Key/value pair plus option to control append behavior. This is used to specify
905/// key/value pairs that should be appended to a set of existing key/value pairs.
906#[derive(Clone, PartialEq, ::prost::Message)]
907pub struct KeyValueAppend {
908 /// Key/value pair entry that this option to append or overwrite.
909 #[prost(message, optional, tag = "1")]
910 pub entry: ::core::option::Option<KeyValue>,
911 /// Describes the action taken to append/overwrite the given value for an existing
912 /// key or to only add this key if it's absent.
913 #[prost(enumeration = "key_value_append::KeyValueAppendAction", tag = "2")]
914 pub action: i32,
915}
916/// Nested message and enum types in `KeyValueAppend`.
917pub mod key_value_append {
918 /// Describes the supported actions types for key/value pair append action.
919 #[derive(
920 Clone,
921 Copy,
922 Debug,
923 PartialEq,
924 Eq,
925 Hash,
926 PartialOrd,
927 Ord,
928 ::prost::Enumeration
929 )]
930 #[repr(i32)]
931 pub enum KeyValueAppendAction {
932 /// If the key already exists, this action will result in the following behavior:
933 ///
934 /// - Comma-concatenated value if multiple values are not allowed.
935 /// - New value added to the list of values if multiple values are allowed.
936 ///
937 /// If the key doesn't exist then this will add pair with specified key and value.
938 AppendIfExistsOrAdd = 0,
939 /// This action will add the key/value pair if it doesn't already exist. If the
940 /// key already exists then this will be a no-op.
941 AddIfAbsent = 1,
942 /// This action will overwrite the specified value by discarding any existing
943 /// values if the key already exists. If the key doesn't exist then this will add
944 /// the pair with specified key and value.
945 OverwriteIfExistsOrAdd = 2,
946 /// This action will overwrite the specified value by discarding any existing
947 /// values if the key already exists. If the key doesn't exist then this will
948 /// be no-op.
949 OverwriteIfExists = 3,
950 }
951 impl KeyValueAppendAction {
952 /// String value of the enum field names used in the ProtoBuf definition.
953 ///
954 /// The values are not transformed in any way and thus are considered stable
955 /// (if the ProtoBuf definition does not change) and safe for programmatic use.
956 pub fn as_str_name(&self) -> &'static str {
957 match self {
958 Self::AppendIfExistsOrAdd => "APPEND_IF_EXISTS_OR_ADD",
959 Self::AddIfAbsent => "ADD_IF_ABSENT",
960 Self::OverwriteIfExistsOrAdd => "OVERWRITE_IF_EXISTS_OR_ADD",
961 Self::OverwriteIfExists => "OVERWRITE_IF_EXISTS",
962 }
963 }
964 /// Creates an enum from field names used in the ProtoBuf definition.
965 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
966 match value {
967 "APPEND_IF_EXISTS_OR_ADD" => Some(Self::AppendIfExistsOrAdd),
968 "ADD_IF_ABSENT" => Some(Self::AddIfAbsent),
969 "OVERWRITE_IF_EXISTS_OR_ADD" => Some(Self::OverwriteIfExistsOrAdd),
970 "OVERWRITE_IF_EXISTS" => Some(Self::OverwriteIfExists),
971 _ => None,
972 }
973 }
974 }
975}
976impl ::prost::Name for KeyValueAppend {
977 const NAME: &'static str = "KeyValueAppend";
978 const PACKAGE: &'static str = "envoy.config.core.v3";
979 fn full_name() -> ::prost::alloc::string::String {
980 "envoy.config.core.v3.KeyValueAppend".into()
981 }
982 fn type_url() -> ::prost::alloc::string::String {
983 "type.googleapis.com/envoy.config.core.v3.KeyValueAppend".into()
984 }
985}
986/// Key/value pair to append or remove.
987#[derive(Clone, PartialEq, ::prost::Message)]
988pub struct KeyValueMutation {
989 /// Key/value pair to append or overwrite. Only one of ``append`` or ``remove`` can be set.
990 #[prost(message, optional, tag = "1")]
991 pub append: ::core::option::Option<KeyValueAppend>,
992 /// Key to remove. Only one of ``append`` or ``remove`` can be set.
993 #[prost(string, tag = "2")]
994 pub remove: ::prost::alloc::string::String,
995}
996impl ::prost::Name for KeyValueMutation {
997 const NAME: &'static str = "KeyValueMutation";
998 const PACKAGE: &'static str = "envoy.config.core.v3";
999 fn full_name() -> ::prost::alloc::string::String {
1000 "envoy.config.core.v3.KeyValueMutation".into()
1001 }
1002 fn type_url() -> ::prost::alloc::string::String {
1003 "type.googleapis.com/envoy.config.core.v3.KeyValueMutation".into()
1004 }
1005}
1006/// Query parameter name/value pair.
1007#[derive(Clone, PartialEq, ::prost::Message)]
1008pub struct QueryParameter {
1009 /// The key of the query parameter. Case sensitive.
1010 #[prost(string, tag = "1")]
1011 pub key: ::prost::alloc::string::String,
1012 /// The value of the query parameter.
1013 #[prost(string, tag = "2")]
1014 pub value: ::prost::alloc::string::String,
1015}
1016impl ::prost::Name for QueryParameter {
1017 const NAME: &'static str = "QueryParameter";
1018 const PACKAGE: &'static str = "envoy.config.core.v3";
1019 fn full_name() -> ::prost::alloc::string::String {
1020 "envoy.config.core.v3.QueryParameter".into()
1021 }
1022 fn type_url() -> ::prost::alloc::string::String {
1023 "type.googleapis.com/envoy.config.core.v3.QueryParameter".into()
1024 }
1025}
1026/// Header name/value pair.
1027#[derive(Clone, PartialEq, ::prost::Message)]
1028pub struct HeaderValue {
1029 /// Header name.
1030 #[prost(string, tag = "1")]
1031 pub key: ::prost::alloc::string::String,
1032 /// Header value.
1033 ///
1034 /// The same :ref:`format specifier <config_access_log_format>` as used for
1035 /// :ref:`HTTP access logging <config_access_log>` applies here, however
1036 /// unknown header values are replaced with the empty string instead of ``-``.
1037 /// Header value is encoded as string. This does not work for non-utf8 characters.
1038 /// Only one of ``value`` or ``raw_value`` can be set.
1039 #[prost(string, tag = "2")]
1040 pub value: ::prost::alloc::string::String,
1041 /// Header value is encoded as bytes which can support non-utf8 characters.
1042 /// Only one of ``value`` or ``raw_value`` can be set.
1043 #[prost(bytes = "vec", tag = "3")]
1044 pub raw_value: ::prost::alloc::vec::Vec<u8>,
1045}
1046impl ::prost::Name for HeaderValue {
1047 const NAME: &'static str = "HeaderValue";
1048 const PACKAGE: &'static str = "envoy.config.core.v3";
1049 fn full_name() -> ::prost::alloc::string::String {
1050 "envoy.config.core.v3.HeaderValue".into()
1051 }
1052 fn type_url() -> ::prost::alloc::string::String {
1053 "type.googleapis.com/envoy.config.core.v3.HeaderValue".into()
1054 }
1055}
1056/// Header name/value pair plus option to control append behavior.
1057#[derive(Clone, PartialEq, ::prost::Message)]
1058pub struct HeaderValueOption {
1059 /// Header name/value pair that this option applies to.
1060 #[prost(message, optional, tag = "1")]
1061 pub header: ::core::option::Option<HeaderValue>,
1062 /// Should the value be appended? If true (default), the value is appended to
1063 /// existing values. Otherwise it replaces any existing values.
1064 /// This field is deprecated and please use
1065 /// :ref:`append_action <envoy_v3_api_field_config.core.v3.HeaderValueOption.append_action>` as replacement.
1066 ///
1067 /// .. note::
1068 /// The :ref:`external authorization service <envoy_v3_api_msg_service.auth.v3.CheckResponse>` and
1069 /// :ref:`external processor service <envoy_v3_api_msg_service.ext_proc.v3.ProcessingResponse>` have
1070 /// default value (``false``) for this field.
1071 #[deprecated]
1072 #[prost(message, optional, tag = "2")]
1073 pub append: ::core::option::Option<
1074 super::super::super::super::google::protobuf::BoolValue,
1075 >,
1076 /// Describes the action taken to append/overwrite the given value for an existing header
1077 /// or to only add this header if it's absent.
1078 /// Value defaults to :ref:`APPEND_IF_EXISTS_OR_ADD
1079 /// <envoy_v3_api_enum_value_config.core.v3.HeaderValueOption.HeaderAppendAction.APPEND_IF_EXISTS_OR_ADD>`.
1080 #[prost(enumeration = "header_value_option::HeaderAppendAction", tag = "3")]
1081 pub append_action: i32,
1082 /// Is the header value allowed to be empty? If false (default), custom headers with empty values are dropped,
1083 /// otherwise they are added.
1084 #[prost(bool, tag = "4")]
1085 pub keep_empty_value: bool,
1086}
1087/// Nested message and enum types in `HeaderValueOption`.
1088pub mod header_value_option {
1089 /// Describes the supported actions types for header append action.
1090 #[derive(
1091 Clone,
1092 Copy,
1093 Debug,
1094 PartialEq,
1095 Eq,
1096 Hash,
1097 PartialOrd,
1098 Ord,
1099 ::prost::Enumeration
1100 )]
1101 #[repr(i32)]
1102 pub enum HeaderAppendAction {
1103 /// If the header already exists, this action will result in:
1104 ///
1105 /// - Comma-concatenated for predefined inline headers.
1106 /// - Duplicate header added in the ``HeaderMap`` for other headers.
1107 ///
1108 /// If the header doesn't exist then this will add new header with specified key and value.
1109 AppendIfExistsOrAdd = 0,
1110 /// This action will add the header if it doesn't already exist. If the header
1111 /// already exists then this will be a no-op.
1112 AddIfAbsent = 1,
1113 /// This action will overwrite the specified value by discarding any existing values if
1114 /// the header already exists. If the header doesn't exist then this will add the header
1115 /// with specified key and value.
1116 OverwriteIfExistsOrAdd = 2,
1117 /// This action will overwrite the specified value by discarding any existing values if
1118 /// the header already exists. If the header doesn't exist then this will be no-op.
1119 OverwriteIfExists = 3,
1120 }
1121 impl HeaderAppendAction {
1122 /// String value of the enum field names used in the ProtoBuf definition.
1123 ///
1124 /// The values are not transformed in any way and thus are considered stable
1125 /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1126 pub fn as_str_name(&self) -> &'static str {
1127 match self {
1128 Self::AppendIfExistsOrAdd => "APPEND_IF_EXISTS_OR_ADD",
1129 Self::AddIfAbsent => "ADD_IF_ABSENT",
1130 Self::OverwriteIfExistsOrAdd => "OVERWRITE_IF_EXISTS_OR_ADD",
1131 Self::OverwriteIfExists => "OVERWRITE_IF_EXISTS",
1132 }
1133 }
1134 /// Creates an enum from field names used in the ProtoBuf definition.
1135 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1136 match value {
1137 "APPEND_IF_EXISTS_OR_ADD" => Some(Self::AppendIfExistsOrAdd),
1138 "ADD_IF_ABSENT" => Some(Self::AddIfAbsent),
1139 "OVERWRITE_IF_EXISTS_OR_ADD" => Some(Self::OverwriteIfExistsOrAdd),
1140 "OVERWRITE_IF_EXISTS" => Some(Self::OverwriteIfExists),
1141 _ => None,
1142 }
1143 }
1144 }
1145}
1146impl ::prost::Name for HeaderValueOption {
1147 const NAME: &'static str = "HeaderValueOption";
1148 const PACKAGE: &'static str = "envoy.config.core.v3";
1149 fn full_name() -> ::prost::alloc::string::String {
1150 "envoy.config.core.v3.HeaderValueOption".into()
1151 }
1152 fn type_url() -> ::prost::alloc::string::String {
1153 "type.googleapis.com/envoy.config.core.v3.HeaderValueOption".into()
1154 }
1155}
1156/// Wrapper for a set of headers.
1157#[derive(Clone, PartialEq, ::prost::Message)]
1158pub struct HeaderMap {
1159 #[prost(message, repeated, tag = "1")]
1160 pub headers: ::prost::alloc::vec::Vec<HeaderValue>,
1161}
1162impl ::prost::Name for HeaderMap {
1163 const NAME: &'static str = "HeaderMap";
1164 const PACKAGE: &'static str = "envoy.config.core.v3";
1165 fn full_name() -> ::prost::alloc::string::String {
1166 "envoy.config.core.v3.HeaderMap".into()
1167 }
1168 fn type_url() -> ::prost::alloc::string::String {
1169 "type.googleapis.com/envoy.config.core.v3.HeaderMap".into()
1170 }
1171}
1172/// A directory that is watched for changes, e.g. by inotify on Linux. Move/rename
1173/// events inside this directory trigger the watch.
1174#[derive(Clone, PartialEq, ::prost::Message)]
1175pub struct WatchedDirectory {
1176 /// Directory path to watch.
1177 #[prost(string, tag = "1")]
1178 pub path: ::prost::alloc::string::String,
1179}
1180impl ::prost::Name for WatchedDirectory {
1181 const NAME: &'static str = "WatchedDirectory";
1182 const PACKAGE: &'static str = "envoy.config.core.v3";
1183 fn full_name() -> ::prost::alloc::string::String {
1184 "envoy.config.core.v3.WatchedDirectory".into()
1185 }
1186 fn type_url() -> ::prost::alloc::string::String {
1187 "type.googleapis.com/envoy.config.core.v3.WatchedDirectory".into()
1188 }
1189}
1190/// Data source consisting of a file, an inline value, or an environment variable.
1191/// \[#next-free-field: 6\]
1192#[derive(Clone, PartialEq, ::prost::Message)]
1193pub struct DataSource {
1194 /// Watched directory that is watched for file changes. If this is set explicitly, the file
1195 /// specified in the ``filename`` field will be reloaded when relevant file move events occur.
1196 ///
1197 /// .. note::
1198 /// This field only makes sense when the ``filename`` field is set.
1199 ///
1200 /// .. note::
1201 /// Envoy only updates when the file is replaced by a file move, and not when the file is
1202 /// edited in place.
1203 ///
1204 /// .. note::
1205 /// Not all use cases of ``DataSource`` support watching directories. It depends on the
1206 /// specific usage of the ``DataSource``. See the documentation of the parent message for
1207 /// details.
1208 #[prost(message, optional, tag = "5")]
1209 pub watched_directory: ::core::option::Option<WatchedDirectory>,
1210 #[prost(oneof = "data_source::Specifier", tags = "1, 2, 3, 4")]
1211 pub specifier: ::core::option::Option<data_source::Specifier>,
1212}
1213/// Nested message and enum types in `DataSource`.
1214pub mod data_source {
1215 #[derive(Clone, PartialEq, ::prost::Oneof)]
1216 pub enum Specifier {
1217 /// Local filesystem data source.
1218 #[prost(string, tag = "1")]
1219 Filename(::prost::alloc::string::String),
1220 /// Bytes inlined in the configuration.
1221 #[prost(bytes, tag = "2")]
1222 InlineBytes(::prost::alloc::vec::Vec<u8>),
1223 /// String inlined in the configuration.
1224 #[prost(string, tag = "3")]
1225 InlineString(::prost::alloc::string::String),
1226 /// Environment variable data source.
1227 #[prost(string, tag = "4")]
1228 EnvironmentVariable(::prost::alloc::string::String),
1229 }
1230}
1231impl ::prost::Name for DataSource {
1232 const NAME: &'static str = "DataSource";
1233 const PACKAGE: &'static str = "envoy.config.core.v3";
1234 fn full_name() -> ::prost::alloc::string::String {
1235 "envoy.config.core.v3.DataSource".into()
1236 }
1237 fn type_url() -> ::prost::alloc::string::String {
1238 "type.googleapis.com/envoy.config.core.v3.DataSource".into()
1239 }
1240}
1241/// The message specifies the retry policy of remote data source when fetching fails.
1242/// \[#next-free-field: 7\]
1243#[derive(Clone, PartialEq, ::prost::Message)]
1244pub struct RetryPolicy {
1245 /// Specifies parameters that control :ref:`retry backoff strategy <envoy_v3_api_msg_config.core.v3.BackoffStrategy>`.
1246 /// This parameter is optional, in which case the default base interval is 1000 milliseconds. The
1247 /// default maximum interval is 10 times the base interval.
1248 #[prost(message, optional, tag = "1")]
1249 pub retry_back_off: ::core::option::Option<BackoffStrategy>,
1250 /// Specifies the allowed number of retries. This parameter is optional and
1251 /// defaults to 1.
1252 #[prost(message, optional, tag = "2")]
1253 pub num_retries: ::core::option::Option<
1254 super::super::super::super::google::protobuf::UInt32Value,
1255 >,
1256 /// For details, see :ref:`retry_on <envoy_v3_api_field_config.route.v3.RetryPolicy.retry_on>`.
1257 #[prost(string, tag = "3")]
1258 pub retry_on: ::prost::alloc::string::String,
1259 /// For details, see :ref:`retry_priority <envoy_v3_api_field_config.route.v3.RetryPolicy.retry_priority>`.
1260 #[prost(message, optional, tag = "4")]
1261 pub retry_priority: ::core::option::Option<retry_policy::RetryPriority>,
1262 /// For details, see :ref:`RetryHostPredicate <envoy_v3_api_field_config.route.v3.RetryPolicy.retry_host_predicate>`.
1263 #[prost(message, repeated, tag = "5")]
1264 pub retry_host_predicate: ::prost::alloc::vec::Vec<retry_policy::RetryHostPredicate>,
1265 /// For details, see :ref:`host_selection_retry_max_attempts <envoy_v3_api_field_config.route.v3.RetryPolicy.host_selection_retry_max_attempts>`.
1266 #[prost(int64, tag = "6")]
1267 pub host_selection_retry_max_attempts: i64,
1268}
1269/// Nested message and enum types in `RetryPolicy`.
1270pub mod retry_policy {
1271 /// See :ref:`RetryPriority <envoy_v3_api_field_config.route.v3.RetryPolicy.retry_priority>`.
1272 #[derive(Clone, PartialEq, ::prost::Message)]
1273 pub struct RetryPriority {
1274 #[prost(string, tag = "1")]
1275 pub name: ::prost::alloc::string::String,
1276 #[prost(oneof = "retry_priority::ConfigType", tags = "2")]
1277 pub config_type: ::core::option::Option<retry_priority::ConfigType>,
1278 }
1279 /// Nested message and enum types in `RetryPriority`.
1280 pub mod retry_priority {
1281 #[derive(Clone, PartialEq, ::prost::Oneof)]
1282 pub enum ConfigType {
1283 #[prost(message, tag = "2")]
1284 TypedConfig(super::super::super::super::super::super::google::protobuf::Any),
1285 }
1286 }
1287 impl ::prost::Name for RetryPriority {
1288 const NAME: &'static str = "RetryPriority";
1289 const PACKAGE: &'static str = "envoy.config.core.v3";
1290 fn full_name() -> ::prost::alloc::string::String {
1291 "envoy.config.core.v3.RetryPolicy.RetryPriority".into()
1292 }
1293 fn type_url() -> ::prost::alloc::string::String {
1294 "type.googleapis.com/envoy.config.core.v3.RetryPolicy.RetryPriority".into()
1295 }
1296 }
1297 /// See :ref:`RetryHostPredicate <envoy_v3_api_field_config.route.v3.RetryPolicy.retry_host_predicate>`.
1298 #[derive(Clone, PartialEq, ::prost::Message)]
1299 pub struct RetryHostPredicate {
1300 #[prost(string, tag = "1")]
1301 pub name: ::prost::alloc::string::String,
1302 #[prost(oneof = "retry_host_predicate::ConfigType", tags = "2")]
1303 pub config_type: ::core::option::Option<retry_host_predicate::ConfigType>,
1304 }
1305 /// Nested message and enum types in `RetryHostPredicate`.
1306 pub mod retry_host_predicate {
1307 #[derive(Clone, PartialEq, ::prost::Oneof)]
1308 pub enum ConfigType {
1309 #[prost(message, tag = "2")]
1310 TypedConfig(super::super::super::super::super::super::google::protobuf::Any),
1311 }
1312 }
1313 impl ::prost::Name for RetryHostPredicate {
1314 const NAME: &'static str = "RetryHostPredicate";
1315 const PACKAGE: &'static str = "envoy.config.core.v3";
1316 fn full_name() -> ::prost::alloc::string::String {
1317 "envoy.config.core.v3.RetryPolicy.RetryHostPredicate".into()
1318 }
1319 fn type_url() -> ::prost::alloc::string::String {
1320 "type.googleapis.com/envoy.config.core.v3.RetryPolicy.RetryHostPredicate"
1321 .into()
1322 }
1323 }
1324}
1325impl ::prost::Name for RetryPolicy {
1326 const NAME: &'static str = "RetryPolicy";
1327 const PACKAGE: &'static str = "envoy.config.core.v3";
1328 fn full_name() -> ::prost::alloc::string::String {
1329 "envoy.config.core.v3.RetryPolicy".into()
1330 }
1331 fn type_url() -> ::prost::alloc::string::String {
1332 "type.googleapis.com/envoy.config.core.v3.RetryPolicy".into()
1333 }
1334}
1335/// The message specifies how to fetch data from remote and how to verify it.
1336#[derive(Clone, PartialEq, ::prost::Message)]
1337pub struct RemoteDataSource {
1338 /// The HTTP URI to fetch the remote data.
1339 #[prost(message, optional, tag = "1")]
1340 pub http_uri: ::core::option::Option<HttpUri>,
1341 /// SHA256 string for verifying data.
1342 #[prost(string, tag = "2")]
1343 pub sha256: ::prost::alloc::string::String,
1344 /// Retry policy for fetching remote data.
1345 #[prost(message, optional, tag = "3")]
1346 pub retry_policy: ::core::option::Option<RetryPolicy>,
1347}
1348impl ::prost::Name for RemoteDataSource {
1349 const NAME: &'static str = "RemoteDataSource";
1350 const PACKAGE: &'static str = "envoy.config.core.v3";
1351 fn full_name() -> ::prost::alloc::string::String {
1352 "envoy.config.core.v3.RemoteDataSource".into()
1353 }
1354 fn type_url() -> ::prost::alloc::string::String {
1355 "type.googleapis.com/envoy.config.core.v3.RemoteDataSource".into()
1356 }
1357}
1358/// Async data source which support async data fetch.
1359#[derive(Clone, PartialEq, ::prost::Message)]
1360pub struct AsyncDataSource {
1361 #[prost(oneof = "async_data_source::Specifier", tags = "1, 2")]
1362 pub specifier: ::core::option::Option<async_data_source::Specifier>,
1363}
1364/// Nested message and enum types in `AsyncDataSource`.
1365pub mod async_data_source {
1366 #[derive(Clone, PartialEq, ::prost::Oneof)]
1367 pub enum Specifier {
1368 /// Local async data source.
1369 #[prost(message, tag = "1")]
1370 Local(super::DataSource),
1371 /// Remote async data source.
1372 #[prost(message, tag = "2")]
1373 Remote(super::RemoteDataSource),
1374 }
1375}
1376impl ::prost::Name for AsyncDataSource {
1377 const NAME: &'static str = "AsyncDataSource";
1378 const PACKAGE: &'static str = "envoy.config.core.v3";
1379 fn full_name() -> ::prost::alloc::string::String {
1380 "envoy.config.core.v3.AsyncDataSource".into()
1381 }
1382 fn type_url() -> ::prost::alloc::string::String {
1383 "type.googleapis.com/envoy.config.core.v3.AsyncDataSource".into()
1384 }
1385}
1386/// Configuration for transport socket in :ref:`listeners <config_listeners>` and
1387/// :ref:`clusters <envoy_v3_api_msg_config.cluster.v3.Cluster>`. If the configuration is
1388/// empty, a default transport socket implementation and configuration will be
1389/// chosen based on the platform and existence of tls_context.
1390#[derive(Clone, PartialEq, ::prost::Message)]
1391pub struct TransportSocket {
1392 /// The name of the transport socket to instantiate. The name must match a supported transport
1393 /// socket implementation.
1394 #[prost(string, tag = "1")]
1395 pub name: ::prost::alloc::string::String,
1396 /// Implementation specific configuration which depends on the implementation being instantiated.
1397 /// See the supported transport socket implementations for further documentation.
1398 #[prost(oneof = "transport_socket::ConfigType", tags = "3")]
1399 pub config_type: ::core::option::Option<transport_socket::ConfigType>,
1400}
1401/// Nested message and enum types in `TransportSocket`.
1402pub mod transport_socket {
1403 /// Implementation specific configuration which depends on the implementation being instantiated.
1404 /// See the supported transport socket implementations for further documentation.
1405 #[derive(Clone, PartialEq, ::prost::Oneof)]
1406 pub enum ConfigType {
1407 #[prost(message, tag = "3")]
1408 TypedConfig(super::super::super::super::super::google::protobuf::Any),
1409 }
1410}
1411impl ::prost::Name for TransportSocket {
1412 const NAME: &'static str = "TransportSocket";
1413 const PACKAGE: &'static str = "envoy.config.core.v3";
1414 fn full_name() -> ::prost::alloc::string::String {
1415 "envoy.config.core.v3.TransportSocket".into()
1416 }
1417 fn type_url() -> ::prost::alloc::string::String {
1418 "type.googleapis.com/envoy.config.core.v3.TransportSocket".into()
1419 }
1420}
1421/// Runtime derived FractionalPercent with defaults for when the numerator or denominator is not
1422/// specified via a runtime key.
1423///
1424/// .. note::
1425///
1426/// Parsing of the runtime key's data is implemented such that it may be represented as a
1427/// :ref:`FractionalPercent <envoy_v3_api_msg_type.v3.FractionalPercent>` proto represented as JSON/YAML
1428/// and may also be represented as an integer with the assumption that the value is an integral
1429/// percentage out of 100. For instance, a runtime key lookup returning the value "42" would parse
1430/// as a ``FractionalPercent`` whose numerator is 42 and denominator is HUNDRED.
1431#[derive(Clone, PartialEq, ::prost::Message)]
1432pub struct RuntimeFractionalPercent {
1433 /// Default value if the runtime value's for the numerator/denominator keys are not available.
1434 #[prost(message, optional, tag = "1")]
1435 pub default_value: ::core::option::Option<
1436 super::super::super::r#type::v3::FractionalPercent,
1437 >,
1438 /// Runtime key for a YAML representation of a FractionalPercent.
1439 #[prost(string, tag = "2")]
1440 pub runtime_key: ::prost::alloc::string::String,
1441}
1442impl ::prost::Name for RuntimeFractionalPercent {
1443 const NAME: &'static str = "RuntimeFractionalPercent";
1444 const PACKAGE: &'static str = "envoy.config.core.v3";
1445 fn full_name() -> ::prost::alloc::string::String {
1446 "envoy.config.core.v3.RuntimeFractionalPercent".into()
1447 }
1448 fn type_url() -> ::prost::alloc::string::String {
1449 "type.googleapis.com/envoy.config.core.v3.RuntimeFractionalPercent".into()
1450 }
1451}
1452/// Identifies a specific ControlPlane instance that Envoy is connected to.
1453#[derive(Clone, PartialEq, ::prost::Message)]
1454pub struct ControlPlane {
1455 /// An opaque control plane identifier that uniquely identifies an instance
1456 /// of control plane. This can be used to identify which control plane instance,
1457 /// the Envoy is connected to.
1458 #[prost(string, tag = "1")]
1459 pub identifier: ::prost::alloc::string::String,
1460}
1461impl ::prost::Name for ControlPlane {
1462 const NAME: &'static str = "ControlPlane";
1463 const PACKAGE: &'static str = "envoy.config.core.v3";
1464 fn full_name() -> ::prost::alloc::string::String {
1465 "envoy.config.core.v3.ControlPlane".into()
1466 }
1467 fn type_url() -> ::prost::alloc::string::String {
1468 "type.googleapis.com/envoy.config.core.v3.ControlPlane".into()
1469 }
1470}
1471/// Envoy supports :ref:`upstream priority routing
1472/// <arch_overview_http_routing_priority>` both at the route and the virtual
1473/// cluster level. The current priority implementation uses different connection
1474/// pool and circuit breaking settings for each priority level. This means that
1475/// even for HTTP/2 requests, two physical connections will be used to an
1476/// upstream host. In the future Envoy will likely support true HTTP/2 priority
1477/// over a single upstream connection.
1478#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1479#[repr(i32)]
1480pub enum RoutingPriority {
1481 Default = 0,
1482 High = 1,
1483}
1484impl RoutingPriority {
1485 /// String value of the enum field names used in the ProtoBuf definition.
1486 ///
1487 /// The values are not transformed in any way and thus are considered stable
1488 /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1489 pub fn as_str_name(&self) -> &'static str {
1490 match self {
1491 Self::Default => "DEFAULT",
1492 Self::High => "HIGH",
1493 }
1494 }
1495 /// Creates an enum from field names used in the ProtoBuf definition.
1496 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1497 match value {
1498 "DEFAULT" => Some(Self::Default),
1499 "HIGH" => Some(Self::High),
1500 _ => None,
1501 }
1502 }
1503}
1504/// HTTP request method.
1505#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1506#[repr(i32)]
1507pub enum RequestMethod {
1508 MethodUnspecified = 0,
1509 Get = 1,
1510 Head = 2,
1511 Post = 3,
1512 Put = 4,
1513 Delete = 5,
1514 Connect = 6,
1515 Options = 7,
1516 Trace = 8,
1517 Patch = 9,
1518}
1519impl RequestMethod {
1520 /// String value of the enum field names used in the ProtoBuf definition.
1521 ///
1522 /// The values are not transformed in any way and thus are considered stable
1523 /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1524 pub fn as_str_name(&self) -> &'static str {
1525 match self {
1526 Self::MethodUnspecified => "METHOD_UNSPECIFIED",
1527 Self::Get => "GET",
1528 Self::Head => "HEAD",
1529 Self::Post => "POST",
1530 Self::Put => "PUT",
1531 Self::Delete => "DELETE",
1532 Self::Connect => "CONNECT",
1533 Self::Options => "OPTIONS",
1534 Self::Trace => "TRACE",
1535 Self::Patch => "PATCH",
1536 }
1537 }
1538 /// Creates an enum from field names used in the ProtoBuf definition.
1539 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1540 match value {
1541 "METHOD_UNSPECIFIED" => Some(Self::MethodUnspecified),
1542 "GET" => Some(Self::Get),
1543 "HEAD" => Some(Self::Head),
1544 "POST" => Some(Self::Post),
1545 "PUT" => Some(Self::Put),
1546 "DELETE" => Some(Self::Delete),
1547 "CONNECT" => Some(Self::Connect),
1548 "OPTIONS" => Some(Self::Options),
1549 "TRACE" => Some(Self::Trace),
1550 "PATCH" => Some(Self::Patch),
1551 _ => None,
1552 }
1553 }
1554}
1555/// Identifies the direction of the traffic relative to the local Envoy.
1556#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1557#[repr(i32)]
1558pub enum TrafficDirection {
1559 /// Default option is unspecified.
1560 Unspecified = 0,
1561 /// The transport is used for incoming traffic.
1562 Inbound = 1,
1563 /// The transport is used for outgoing traffic.
1564 Outbound = 2,
1565}
1566impl TrafficDirection {
1567 /// String value of the enum field names used in the ProtoBuf definition.
1568 ///
1569 /// The values are not transformed in any way and thus are considered stable
1570 /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1571 pub fn as_str_name(&self) -> &'static str {
1572 match self {
1573 Self::Unspecified => "UNSPECIFIED",
1574 Self::Inbound => "INBOUND",
1575 Self::Outbound => "OUTBOUND",
1576 }
1577 }
1578 /// Creates an enum from field names used in the ProtoBuf definition.
1579 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1580 match value {
1581 "UNSPECIFIED" => Some(Self::Unspecified),
1582 "INBOUND" => Some(Self::Inbound),
1583 "OUTBOUND" => Some(Self::Outbound),
1584 _ => None,
1585 }
1586 }
1587}
1588#[derive(Clone, PartialEq, ::prost::Message)]
1589pub struct ProxyProtocolPassThroughTlVs {
1590 /// The strategy to pass through TLVs. Default is INCLUDE_ALL.
1591 /// If INCLUDE_ALL is set, all TLVs will be passed through no matter the tlv_type field.
1592 #[prost(
1593 enumeration = "proxy_protocol_pass_through_tl_vs::PassTlVsMatchType",
1594 tag = "1"
1595 )]
1596 pub match_type: i32,
1597 /// The TLV types that are applied based on match_type.
1598 /// TLV type is defined as uint8_t in proxy protocol. See `the spec
1599 /// <<https://www.haproxy.org/download/2.1/doc/proxy-protocol.txt>`_> for details.
1600 #[prost(uint32, repeated, packed = "false", tag = "2")]
1601 pub tlv_type: ::prost::alloc::vec::Vec<u32>,
1602}
1603/// Nested message and enum types in `ProxyProtocolPassThroughTLVs`.
1604pub mod proxy_protocol_pass_through_tl_vs {
1605 #[derive(
1606 Clone,
1607 Copy,
1608 Debug,
1609 PartialEq,
1610 Eq,
1611 Hash,
1612 PartialOrd,
1613 Ord,
1614 ::prost::Enumeration
1615 )]
1616 #[repr(i32)]
1617 pub enum PassTlVsMatchType {
1618 /// Pass all TLVs.
1619 IncludeAll = 0,
1620 /// Pass specific TLVs defined in tlv_type.
1621 Include = 1,
1622 }
1623 impl PassTlVsMatchType {
1624 /// String value of the enum field names used in the ProtoBuf definition.
1625 ///
1626 /// The values are not transformed in any way and thus are considered stable
1627 /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1628 pub fn as_str_name(&self) -> &'static str {
1629 match self {
1630 Self::IncludeAll => "INCLUDE_ALL",
1631 Self::Include => "INCLUDE",
1632 }
1633 }
1634 /// Creates an enum from field names used in the ProtoBuf definition.
1635 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1636 match value {
1637 "INCLUDE_ALL" => Some(Self::IncludeAll),
1638 "INCLUDE" => Some(Self::Include),
1639 _ => None,
1640 }
1641 }
1642 }
1643}
1644impl ::prost::Name for ProxyProtocolPassThroughTlVs {
1645 const NAME: &'static str = "ProxyProtocolPassThroughTLVs";
1646 const PACKAGE: &'static str = "envoy.config.core.v3";
1647 fn full_name() -> ::prost::alloc::string::String {
1648 "envoy.config.core.v3.ProxyProtocolPassThroughTLVs".into()
1649 }
1650 fn type_url() -> ::prost::alloc::string::String {
1651 "type.googleapis.com/envoy.config.core.v3.ProxyProtocolPassThroughTLVs".into()
1652 }
1653}
1654#[derive(Clone, PartialEq, ::prost::Message)]
1655pub struct ProxyProtocolConfig {
1656 /// The PROXY protocol version to use. See <https://www.haproxy.org/download/2.1/doc/proxy-protocol.txt> for details
1657 #[prost(enumeration = "proxy_protocol_config::Version", tag = "1")]
1658 pub version: i32,
1659 /// This config controls which TLVs can be passed to upstream if it is Proxy Protocol
1660 /// V2 header. If there is no setting for this field, no TLVs will be passed through.
1661 #[prost(message, optional, tag = "2")]
1662 pub pass_through_tlvs: ::core::option::Option<ProxyProtocolPassThroughTlVs>,
1663}
1664/// Nested message and enum types in `ProxyProtocolConfig`.
1665pub mod proxy_protocol_config {
1666 #[derive(
1667 Clone,
1668 Copy,
1669 Debug,
1670 PartialEq,
1671 Eq,
1672 Hash,
1673 PartialOrd,
1674 Ord,
1675 ::prost::Enumeration
1676 )]
1677 #[repr(i32)]
1678 pub enum Version {
1679 /// PROXY protocol version 1. Human readable format.
1680 V1 = 0,
1681 /// PROXY protocol version 2. Binary format.
1682 V2 = 1,
1683 }
1684 impl Version {
1685 /// String value of the enum field names used in the ProtoBuf definition.
1686 ///
1687 /// The values are not transformed in any way and thus are considered stable
1688 /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1689 pub fn as_str_name(&self) -> &'static str {
1690 match self {
1691 Self::V1 => "V1",
1692 Self::V2 => "V2",
1693 }
1694 }
1695 /// Creates an enum from field names used in the ProtoBuf definition.
1696 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1697 match value {
1698 "V1" => Some(Self::V1),
1699 "V2" => Some(Self::V2),
1700 _ => None,
1701 }
1702 }
1703 }
1704}
1705impl ::prost::Name for ProxyProtocolConfig {
1706 const NAME: &'static str = "ProxyProtocolConfig";
1707 const PACKAGE: &'static str = "envoy.config.core.v3";
1708 fn full_name() -> ::prost::alloc::string::String {
1709 "envoy.config.core.v3.ProxyProtocolConfig".into()
1710 }
1711 fn type_url() -> ::prost::alloc::string::String {
1712 "type.googleapis.com/envoy.config.core.v3.ProxyProtocolConfig".into()
1713 }
1714}
1715/// gRPC service configuration. This is used by :ref:`ApiConfigSource
1716/// <envoy_v3_api_msg_config.core.v3.ApiConfigSource>` and filter configurations.
1717/// \[#next-free-field: 7\]
1718#[derive(Clone, PartialEq, ::prost::Message)]
1719pub struct GrpcService {
1720 /// The timeout for the gRPC request. This is the timeout for a specific
1721 /// request.
1722 #[prost(message, optional, tag = "3")]
1723 pub timeout: ::core::option::Option<
1724 super::super::super::super::google::protobuf::Duration,
1725 >,
1726 /// Additional metadata to include in streams initiated to the GrpcService. This can be used for
1727 /// scenarios in which additional ad hoc authorization headers (e.g. ``x-foo-bar: baz-key``) are to
1728 /// be injected. For more information, including details on header value syntax, see the
1729 /// documentation on :ref:`custom request headers
1730 /// <config_http_conn_man_headers_custom_request_headers>`.
1731 #[prost(message, repeated, tag = "5")]
1732 pub initial_metadata: ::prost::alloc::vec::Vec<HeaderValue>,
1733 /// Optional default retry policy for streams toward the service.
1734 /// If an async stream doesn't have retry policy configured in its stream options, this retry policy is used.
1735 #[prost(message, optional, tag = "6")]
1736 pub retry_policy: ::core::option::Option<RetryPolicy>,
1737 #[prost(oneof = "grpc_service::TargetSpecifier", tags = "1, 2")]
1738 pub target_specifier: ::core::option::Option<grpc_service::TargetSpecifier>,
1739}
1740/// Nested message and enum types in `GrpcService`.
1741pub mod grpc_service {
1742 #[derive(Clone, PartialEq, ::prost::Message)]
1743 pub struct EnvoyGrpc {
1744 /// The name of the upstream gRPC cluster. SSL credentials will be supplied
1745 /// in the :ref:`Cluster <envoy_v3_api_msg_config.cluster.v3.Cluster>` :ref:`transport_socket
1746 /// <envoy_v3_api_field_config.cluster.v3.Cluster.transport_socket>`.
1747 #[prost(string, tag = "1")]
1748 pub cluster_name: ::prost::alloc::string::String,
1749 /// The ``:authority`` header in the grpc request. If this field is not set, the authority header value will be ``cluster_name``.
1750 /// Note that this authority does not override the SNI. The SNI is provided by the transport socket of the cluster.
1751 #[prost(string, tag = "2")]
1752 pub authority: ::prost::alloc::string::String,
1753 /// Indicates the retry policy for re-establishing the gRPC stream
1754 /// This field is optional. If max interval is not provided, it will be set to ten times the provided base interval.
1755 /// Currently only supported for xDS gRPC streams.
1756 /// If not set, xDS gRPC streams default base interval:500ms, maximum interval:30s will be applied.
1757 #[prost(message, optional, tag = "3")]
1758 pub retry_policy: ::core::option::Option<super::RetryPolicy>,
1759 /// Maximum gRPC message size that is allowed to be received.
1760 /// If a message over this limit is received, the gRPC stream is terminated with the RESOURCE_EXHAUSTED error.
1761 /// This limit is applied to individual messages in the streaming response and not the total size of streaming response.
1762 /// Defaults to 0, which means unlimited.
1763 #[prost(message, optional, tag = "4")]
1764 pub max_receive_message_length: ::core::option::Option<
1765 super::super::super::super::super::google::protobuf::UInt32Value,
1766 >,
1767 }
1768 impl ::prost::Name for EnvoyGrpc {
1769 const NAME: &'static str = "EnvoyGrpc";
1770 const PACKAGE: &'static str = "envoy.config.core.v3";
1771 fn full_name() -> ::prost::alloc::string::String {
1772 "envoy.config.core.v3.GrpcService.EnvoyGrpc".into()
1773 }
1774 fn type_url() -> ::prost::alloc::string::String {
1775 "type.googleapis.com/envoy.config.core.v3.GrpcService.EnvoyGrpc".into()
1776 }
1777 }
1778 /// \[#next-free-field: 9\]
1779 #[derive(Clone, PartialEq, ::prost::Message)]
1780 pub struct GoogleGrpc {
1781 /// The target URI when using the `Google C++ gRPC client
1782 /// <<https://github.com/grpc/grpc>`_.> SSL credentials will be supplied in
1783 /// :ref:`channel_credentials <envoy_v3_api_field_config.core.v3.GrpcService.GoogleGrpc.channel_credentials>`.
1784 #[prost(string, tag = "1")]
1785 pub target_uri: ::prost::alloc::string::String,
1786 #[prost(message, optional, tag = "2")]
1787 pub channel_credentials: ::core::option::Option<google_grpc::ChannelCredentials>,
1788 /// A set of call credentials that can be composed with `channel credentials
1789 /// <<https://grpc.io/docs/guides/auth.html#credential-types>`_.>
1790 #[prost(message, repeated, tag = "3")]
1791 pub call_credentials: ::prost::alloc::vec::Vec<google_grpc::CallCredentials>,
1792 /// The human readable prefix to use when emitting statistics for the gRPC
1793 /// service.
1794 ///
1795 /// .. csv-table::
1796 /// :header: Name, Type, Description
1797 /// :widths: 1, 1, 2
1798 ///
1799 /// streams_total, Counter, Total number of streams opened
1800 /// streams_closed_<gRPC status code>, Counter, Total streams closed with <gRPC status code>
1801 #[prost(string, tag = "4")]
1802 pub stat_prefix: ::prost::alloc::string::String,
1803 /// The name of the Google gRPC credentials factory to use. This must have been registered with
1804 /// Envoy. If this is empty, a default credentials factory will be used that sets up channel
1805 /// credentials based on other configuration parameters.
1806 #[prost(string, tag = "5")]
1807 pub credentials_factory_name: ::prost::alloc::string::String,
1808 /// Additional configuration for site-specific customizations of the Google
1809 /// gRPC library.
1810 #[prost(message, optional, tag = "6")]
1811 pub config: ::core::option::Option<
1812 super::super::super::super::super::google::protobuf::Struct,
1813 >,
1814 /// How many bytes each stream can buffer internally.
1815 /// If not set an implementation defined default is applied (1MiB).
1816 #[prost(message, optional, tag = "7")]
1817 pub per_stream_buffer_limit_bytes: ::core::option::Option<
1818 super::super::super::super::super::google::protobuf::UInt32Value,
1819 >,
1820 /// Custom channels args.
1821 #[prost(message, optional, tag = "8")]
1822 pub channel_args: ::core::option::Option<google_grpc::ChannelArgs>,
1823 }
1824 /// Nested message and enum types in `GoogleGrpc`.
1825 pub mod google_grpc {
1826 /// See <https://grpc.io/grpc/cpp/structgrpc_1_1_ssl_credentials_options.html.>
1827 #[derive(Clone, PartialEq, ::prost::Message)]
1828 pub struct SslCredentials {
1829 /// PEM encoded server root certificates.
1830 #[prost(message, optional, tag = "1")]
1831 pub root_certs: ::core::option::Option<super::super::DataSource>,
1832 /// PEM encoded client private key.
1833 #[prost(message, optional, tag = "2")]
1834 pub private_key: ::core::option::Option<super::super::DataSource>,
1835 /// PEM encoded client certificate chain.
1836 #[prost(message, optional, tag = "3")]
1837 pub cert_chain: ::core::option::Option<super::super::DataSource>,
1838 }
1839 impl ::prost::Name for SslCredentials {
1840 const NAME: &'static str = "SslCredentials";
1841 const PACKAGE: &'static str = "envoy.config.core.v3";
1842 fn full_name() -> ::prost::alloc::string::String {
1843 "envoy.config.core.v3.GrpcService.GoogleGrpc.SslCredentials".into()
1844 }
1845 fn type_url() -> ::prost::alloc::string::String {
1846 "type.googleapis.com/envoy.config.core.v3.GrpcService.GoogleGrpc.SslCredentials"
1847 .into()
1848 }
1849 }
1850 /// Local channel credentials. Only UDS is supported for now.
1851 /// See <https://github.com/grpc/grpc/pull/15909.>
1852 #[derive(Clone, Copy, PartialEq, ::prost::Message)]
1853 pub struct GoogleLocalCredentials {}
1854 impl ::prost::Name for GoogleLocalCredentials {
1855 const NAME: &'static str = "GoogleLocalCredentials";
1856 const PACKAGE: &'static str = "envoy.config.core.v3";
1857 fn full_name() -> ::prost::alloc::string::String {
1858 "envoy.config.core.v3.GrpcService.GoogleGrpc.GoogleLocalCredentials"
1859 .into()
1860 }
1861 fn type_url() -> ::prost::alloc::string::String {
1862 "type.googleapis.com/envoy.config.core.v3.GrpcService.GoogleGrpc.GoogleLocalCredentials"
1863 .into()
1864 }
1865 }
1866 /// See <https://grpc.io/docs/guides/auth.html#credential-types> to understand Channel and Call
1867 /// credential types.
1868 #[derive(Clone, PartialEq, ::prost::Message)]
1869 pub struct ChannelCredentials {
1870 #[prost(
1871 oneof = "channel_credentials::CredentialSpecifier",
1872 tags = "1, 2, 3"
1873 )]
1874 pub credential_specifier: ::core::option::Option<
1875 channel_credentials::CredentialSpecifier,
1876 >,
1877 }
1878 /// Nested message and enum types in `ChannelCredentials`.
1879 pub mod channel_credentials {
1880 #[derive(Clone, PartialEq, ::prost::Oneof)]
1881 pub enum CredentialSpecifier {
1882 #[prost(message, tag = "1")]
1883 SslCredentials(super::SslCredentials),
1884 /// <https://grpc.io/grpc/cpp/namespacegrpc.html#a6beb3ac70ff94bd2ebbd89b8f21d1f61>
1885 #[prost(message, tag = "2")]
1886 GoogleDefault(
1887 super::super::super::super::super::super::super::google::protobuf::Empty,
1888 ),
1889 #[prost(message, tag = "3")]
1890 LocalCredentials(super::GoogleLocalCredentials),
1891 }
1892 }
1893 impl ::prost::Name for ChannelCredentials {
1894 const NAME: &'static str = "ChannelCredentials";
1895 const PACKAGE: &'static str = "envoy.config.core.v3";
1896 fn full_name() -> ::prost::alloc::string::String {
1897 "envoy.config.core.v3.GrpcService.GoogleGrpc.ChannelCredentials".into()
1898 }
1899 fn type_url() -> ::prost::alloc::string::String {
1900 "type.googleapis.com/envoy.config.core.v3.GrpcService.GoogleGrpc.ChannelCredentials"
1901 .into()
1902 }
1903 }
1904 /// \[#next-free-field: 8\]
1905 #[derive(Clone, PartialEq, ::prost::Message)]
1906 pub struct CallCredentials {
1907 #[prost(
1908 oneof = "call_credentials::CredentialSpecifier",
1909 tags = "1, 2, 3, 4, 5, 6, 7"
1910 )]
1911 pub credential_specifier: ::core::option::Option<
1912 call_credentials::CredentialSpecifier,
1913 >,
1914 }
1915 /// Nested message and enum types in `CallCredentials`.
1916 pub mod call_credentials {
1917 #[derive(Clone, PartialEq, ::prost::Message)]
1918 pub struct ServiceAccountJwtAccessCredentials {
1919 #[prost(string, tag = "1")]
1920 pub json_key: ::prost::alloc::string::String,
1921 #[prost(uint64, tag = "2")]
1922 pub token_lifetime_seconds: u64,
1923 }
1924 impl ::prost::Name for ServiceAccountJwtAccessCredentials {
1925 const NAME: &'static str = "ServiceAccountJWTAccessCredentials";
1926 const PACKAGE: &'static str = "envoy.config.core.v3";
1927 fn full_name() -> ::prost::alloc::string::String {
1928 "envoy.config.core.v3.GrpcService.GoogleGrpc.CallCredentials.ServiceAccountJWTAccessCredentials"
1929 .into()
1930 }
1931 fn type_url() -> ::prost::alloc::string::String {
1932 "type.googleapis.com/envoy.config.core.v3.GrpcService.GoogleGrpc.CallCredentials.ServiceAccountJWTAccessCredentials"
1933 .into()
1934 }
1935 }
1936 #[derive(Clone, PartialEq, ::prost::Message)]
1937 pub struct GoogleIamCredentials {
1938 #[prost(string, tag = "1")]
1939 pub authorization_token: ::prost::alloc::string::String,
1940 #[prost(string, tag = "2")]
1941 pub authority_selector: ::prost::alloc::string::String,
1942 }
1943 impl ::prost::Name for GoogleIamCredentials {
1944 const NAME: &'static str = "GoogleIAMCredentials";
1945 const PACKAGE: &'static str = "envoy.config.core.v3";
1946 fn full_name() -> ::prost::alloc::string::String {
1947 "envoy.config.core.v3.GrpcService.GoogleGrpc.CallCredentials.GoogleIAMCredentials"
1948 .into()
1949 }
1950 fn type_url() -> ::prost::alloc::string::String {
1951 "type.googleapis.com/envoy.config.core.v3.GrpcService.GoogleGrpc.CallCredentials.GoogleIAMCredentials"
1952 .into()
1953 }
1954 }
1955 #[derive(Clone, PartialEq, ::prost::Message)]
1956 pub struct MetadataCredentialsFromPlugin {
1957 #[prost(string, tag = "1")]
1958 pub name: ::prost::alloc::string::String,
1959 /// \[#extension-category: envoy.grpc_credentials\]
1960 #[prost(
1961 oneof = "metadata_credentials_from_plugin::ConfigType",
1962 tags = "3"
1963 )]
1964 pub config_type: ::core::option::Option<
1965 metadata_credentials_from_plugin::ConfigType,
1966 >,
1967 }
1968 /// Nested message and enum types in `MetadataCredentialsFromPlugin`.
1969 pub mod metadata_credentials_from_plugin {
1970 /// \[#extension-category: envoy.grpc_credentials\]
1971 #[derive(Clone, PartialEq, ::prost::Oneof)]
1972 pub enum ConfigType {
1973 #[prost(message, tag = "3")]
1974 TypedConfig(
1975 super::super::super::super::super::super::super::super::google::protobuf::Any,
1976 ),
1977 }
1978 }
1979 impl ::prost::Name for MetadataCredentialsFromPlugin {
1980 const NAME: &'static str = "MetadataCredentialsFromPlugin";
1981 const PACKAGE: &'static str = "envoy.config.core.v3";
1982 fn full_name() -> ::prost::alloc::string::String {
1983 "envoy.config.core.v3.GrpcService.GoogleGrpc.CallCredentials.MetadataCredentialsFromPlugin"
1984 .into()
1985 }
1986 fn type_url() -> ::prost::alloc::string::String {
1987 "type.googleapis.com/envoy.config.core.v3.GrpcService.GoogleGrpc.CallCredentials.MetadataCredentialsFromPlugin"
1988 .into()
1989 }
1990 }
1991 /// Security token service configuration that allows Google gRPC to
1992 /// fetch security token from an OAuth 2.0 authorization server.
1993 /// See <https://tools.ietf.org/html/draft-ietf-oauth-token-exchange-16> and
1994 /// <https://github.com/grpc/grpc/pull/19587.>
1995 /// \[#next-free-field: 10\]
1996 #[derive(Clone, PartialEq, ::prost::Message)]
1997 pub struct StsService {
1998 /// URI of the token exchange service that handles token exchange requests.
1999 /// [#comment:TODO(asraa): Add URI validation when implemented. Tracked by
2000 /// <https://github.com/bufbuild/protoc-gen-validate/issues/303]>
2001 #[prost(string, tag = "1")]
2002 pub token_exchange_service_uri: ::prost::alloc::string::String,
2003 /// Location of the target service or resource where the client
2004 /// intends to use the requested security token.
2005 #[prost(string, tag = "2")]
2006 pub resource: ::prost::alloc::string::String,
2007 /// Logical name of the target service where the client intends to
2008 /// use the requested security token.
2009 #[prost(string, tag = "3")]
2010 pub audience: ::prost::alloc::string::String,
2011 /// The desired scope of the requested security token in the
2012 /// context of the service or resource where the token will be used.
2013 #[prost(string, tag = "4")]
2014 pub scope: ::prost::alloc::string::String,
2015 /// Type of the requested security token.
2016 #[prost(string, tag = "5")]
2017 pub requested_token_type: ::prost::alloc::string::String,
2018 /// The path of subject token, a security token that represents the
2019 /// identity of the party on behalf of whom the request is being made.
2020 #[prost(string, tag = "6")]
2021 pub subject_token_path: ::prost::alloc::string::String,
2022 /// Type of the subject token.
2023 #[prost(string, tag = "7")]
2024 pub subject_token_type: ::prost::alloc::string::String,
2025 /// The path of actor token, a security token that represents the identity
2026 /// of the acting party. The acting party is authorized to use the
2027 /// requested security token and act on behalf of the subject.
2028 #[prost(string, tag = "8")]
2029 pub actor_token_path: ::prost::alloc::string::String,
2030 /// Type of the actor token.
2031 #[prost(string, tag = "9")]
2032 pub actor_token_type: ::prost::alloc::string::String,
2033 }
2034 impl ::prost::Name for StsService {
2035 const NAME: &'static str = "StsService";
2036 const PACKAGE: &'static str = "envoy.config.core.v3";
2037 fn full_name() -> ::prost::alloc::string::String {
2038 "envoy.config.core.v3.GrpcService.GoogleGrpc.CallCredentials.StsService"
2039 .into()
2040 }
2041 fn type_url() -> ::prost::alloc::string::String {
2042 "type.googleapis.com/envoy.config.core.v3.GrpcService.GoogleGrpc.CallCredentials.StsService"
2043 .into()
2044 }
2045 }
2046 #[derive(Clone, PartialEq, ::prost::Oneof)]
2047 pub enum CredentialSpecifier {
2048 /// Access token credentials.
2049 /// <https://grpc.io/grpc/cpp/namespacegrpc.html#ad3a80da696ffdaea943f0f858d7a360d.>
2050 #[prost(string, tag = "1")]
2051 AccessToken(::prost::alloc::string::String),
2052 /// Google Compute Engine credentials.
2053 /// <https://grpc.io/grpc/cpp/namespacegrpc.html#a6beb3ac70ff94bd2ebbd89b8f21d1f61>
2054 #[prost(message, tag = "2")]
2055 GoogleComputeEngine(
2056 super::super::super::super::super::super::super::google::protobuf::Empty,
2057 ),
2058 /// Google refresh token credentials.
2059 /// <https://grpc.io/grpc/cpp/namespacegrpc.html#a96901c997b91bc6513b08491e0dca37c.>
2060 #[prost(string, tag = "3")]
2061 GoogleRefreshToken(::prost::alloc::string::String),
2062 /// Service Account JWT Access credentials.
2063 /// <https://grpc.io/grpc/cpp/namespacegrpc.html#a92a9f959d6102461f66ee973d8e9d3aa.>
2064 #[prost(message, tag = "4")]
2065 ServiceAccountJwtAccess(ServiceAccountJwtAccessCredentials),
2066 /// Google IAM credentials.
2067 /// <https://grpc.io/grpc/cpp/namespacegrpc.html#a9fc1fc101b41e680d47028166e76f9d0.>
2068 #[prost(message, tag = "5")]
2069 GoogleIam(GoogleIamCredentials),
2070 /// Custom authenticator credentials.
2071 /// <https://grpc.io/grpc/cpp/namespacegrpc.html#a823c6a4b19ffc71fb33e90154ee2ad07.>
2072 /// <https://grpc.io/docs/guides/auth.html#extending-grpc-to-support-other-authentication-mechanisms.>
2073 #[prost(message, tag = "6")]
2074 FromPlugin(MetadataCredentialsFromPlugin),
2075 /// Custom security token service which implements OAuth 2.0 token exchange.
2076 /// <https://tools.ietf.org/html/draft-ietf-oauth-token-exchange-16>
2077 /// See <https://github.com/grpc/grpc/pull/19587.>
2078 #[prost(message, tag = "7")]
2079 StsService(StsService),
2080 }
2081 }
2082 impl ::prost::Name for CallCredentials {
2083 const NAME: &'static str = "CallCredentials";
2084 const PACKAGE: &'static str = "envoy.config.core.v3";
2085 fn full_name() -> ::prost::alloc::string::String {
2086 "envoy.config.core.v3.GrpcService.GoogleGrpc.CallCredentials".into()
2087 }
2088 fn type_url() -> ::prost::alloc::string::String {
2089 "type.googleapis.com/envoy.config.core.v3.GrpcService.GoogleGrpc.CallCredentials"
2090 .into()
2091 }
2092 }
2093 /// Channel arguments.
2094 #[derive(Clone, PartialEq, ::prost::Message)]
2095 pub struct ChannelArgs {
2096 /// See grpc_types.h GRPC_ARG #defines for keys that work here.
2097 #[prost(map = "string, message", tag = "1")]
2098 pub args: ::std::collections::HashMap<
2099 ::prost::alloc::string::String,
2100 channel_args::Value,
2101 >,
2102 }
2103 /// Nested message and enum types in `ChannelArgs`.
2104 pub mod channel_args {
2105 #[derive(Clone, PartialEq, ::prost::Message)]
2106 pub struct Value {
2107 /// Pointer values are not supported, since they don't make any sense when
2108 /// delivered via the API.
2109 #[prost(oneof = "value::ValueSpecifier", tags = "1, 2")]
2110 pub value_specifier: ::core::option::Option<value::ValueSpecifier>,
2111 }
2112 /// Nested message and enum types in `Value`.
2113 pub mod value {
2114 /// Pointer values are not supported, since they don't make any sense when
2115 /// delivered via the API.
2116 #[derive(Clone, PartialEq, ::prost::Oneof)]
2117 pub enum ValueSpecifier {
2118 #[prost(string, tag = "1")]
2119 StringValue(::prost::alloc::string::String),
2120 #[prost(int64, tag = "2")]
2121 IntValue(i64),
2122 }
2123 }
2124 impl ::prost::Name for Value {
2125 const NAME: &'static str = "Value";
2126 const PACKAGE: &'static str = "envoy.config.core.v3";
2127 fn full_name() -> ::prost::alloc::string::String {
2128 "envoy.config.core.v3.GrpcService.GoogleGrpc.ChannelArgs.Value"
2129 .into()
2130 }
2131 fn type_url() -> ::prost::alloc::string::String {
2132 "type.googleapis.com/envoy.config.core.v3.GrpcService.GoogleGrpc.ChannelArgs.Value"
2133 .into()
2134 }
2135 }
2136 }
2137 impl ::prost::Name for ChannelArgs {
2138 const NAME: &'static str = "ChannelArgs";
2139 const PACKAGE: &'static str = "envoy.config.core.v3";
2140 fn full_name() -> ::prost::alloc::string::String {
2141 "envoy.config.core.v3.GrpcService.GoogleGrpc.ChannelArgs".into()
2142 }
2143 fn type_url() -> ::prost::alloc::string::String {
2144 "type.googleapis.com/envoy.config.core.v3.GrpcService.GoogleGrpc.ChannelArgs"
2145 .into()
2146 }
2147 }
2148 }
2149 impl ::prost::Name for GoogleGrpc {
2150 const NAME: &'static str = "GoogleGrpc";
2151 const PACKAGE: &'static str = "envoy.config.core.v3";
2152 fn full_name() -> ::prost::alloc::string::String {
2153 "envoy.config.core.v3.GrpcService.GoogleGrpc".into()
2154 }
2155 fn type_url() -> ::prost::alloc::string::String {
2156 "type.googleapis.com/envoy.config.core.v3.GrpcService.GoogleGrpc".into()
2157 }
2158 }
2159 #[derive(Clone, PartialEq, ::prost::Oneof)]
2160 pub enum TargetSpecifier {
2161 /// Envoy's in-built gRPC client.
2162 /// See the :ref:`gRPC services overview <arch_overview_grpc_services>`
2163 /// documentation for discussion on gRPC client selection.
2164 #[prost(message, tag = "1")]
2165 EnvoyGrpc(EnvoyGrpc),
2166 /// `Google C++ gRPC client <<https://github.com/grpc/grpc>`_>
2167 /// See the :ref:`gRPC services overview <arch_overview_grpc_services>`
2168 /// documentation for discussion on gRPC client selection.
2169 #[prost(message, tag = "2")]
2170 GoogleGrpc(GoogleGrpc),
2171 }
2172}
2173impl ::prost::Name for GrpcService {
2174 const NAME: &'static str = "GrpcService";
2175 const PACKAGE: &'static str = "envoy.config.core.v3";
2176 fn full_name() -> ::prost::alloc::string::String {
2177 "envoy.config.core.v3.GrpcService".into()
2178 }
2179 fn type_url() -> ::prost::alloc::string::String {
2180 "type.googleapis.com/envoy.config.core.v3.GrpcService".into()
2181 }
2182}
2183/// API configuration source. This identifies the API type and cluster that Envoy
2184/// will use to fetch an xDS API.
2185/// \[#next-free-field: 10\]
2186#[derive(Clone, PartialEq, ::prost::Message)]
2187pub struct ApiConfigSource {
2188 /// API type (gRPC, REST, delta gRPC)
2189 #[prost(enumeration = "api_config_source::ApiType", tag = "1")]
2190 pub api_type: i32,
2191 /// API version for xDS transport protocol. This describes the xDS gRPC/REST
2192 /// endpoint and version of \[Delta\]DiscoveryRequest/Response used on the wire.
2193 #[prost(enumeration = "ApiVersion", tag = "8")]
2194 pub transport_api_version: i32,
2195 /// Cluster names should be used only with REST. If > 1
2196 /// cluster is defined, clusters will be cycled through if any kind of failure
2197 /// occurs.
2198 ///
2199 /// .. note::
2200 ///
2201 /// The cluster with name ``cluster_name`` must be statically defined and its
2202 /// type must not be ``EDS``.
2203 #[prost(string, repeated, tag = "2")]
2204 pub cluster_names: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2205 /// Multiple gRPC services be provided for GRPC. If > 1 cluster is defined,
2206 /// services will be cycled through if any kind of failure occurs.
2207 #[prost(message, repeated, tag = "4")]
2208 pub grpc_services: ::prost::alloc::vec::Vec<GrpcService>,
2209 /// For REST APIs, the delay between successive polls.
2210 #[prost(message, optional, tag = "3")]
2211 pub refresh_delay: ::core::option::Option<
2212 super::super::super::super::google::protobuf::Duration,
2213 >,
2214 /// For REST APIs, the request timeout. If not set, a default value of 1s will be used.
2215 #[prost(message, optional, tag = "5")]
2216 pub request_timeout: ::core::option::Option<
2217 super::super::super::super::google::protobuf::Duration,
2218 >,
2219 /// For GRPC APIs, the rate limit settings. If present, discovery requests made by Envoy will be
2220 /// rate limited.
2221 #[prost(message, optional, tag = "6")]
2222 pub rate_limit_settings: ::core::option::Option<RateLimitSettings>,
2223 /// Skip the node identifier in subsequent discovery requests for streaming gRPC config types.
2224 #[prost(bool, tag = "7")]
2225 pub set_node_on_first_message_only: bool,
2226 /// A list of config validators that will be executed when a new update is
2227 /// received from the ApiConfigSource. Note that each validator handles a
2228 /// specific xDS service type, and only the validators corresponding to the
2229 /// type url (in ``:ref: DiscoveryResponse`` or ``:ref: DeltaDiscoveryResponse``)
2230 /// will be invoked.
2231 /// If the validator returns false or throws an exception, the config will be rejected by
2232 /// the client, and a NACK will be sent.
2233 /// \[#extension-category: envoy.config.validators\]
2234 #[prost(message, repeated, tag = "9")]
2235 pub config_validators: ::prost::alloc::vec::Vec<TypedExtensionConfig>,
2236}
2237/// Nested message and enum types in `ApiConfigSource`.
2238pub mod api_config_source {
2239 /// APIs may be fetched via either REST or gRPC.
2240 #[derive(
2241 Clone,
2242 Copy,
2243 Debug,
2244 PartialEq,
2245 Eq,
2246 Hash,
2247 PartialOrd,
2248 Ord,
2249 ::prost::Enumeration
2250 )]
2251 #[repr(i32)]
2252 pub enum ApiType {
2253 /// Ideally this would be 'reserved 0' but one can't reserve the default
2254 /// value. Instead we throw an exception if this is ever used.
2255 DeprecatedAndUnavailableDoNotUse = 0,
2256 /// REST-JSON v2 API. The `canonical JSON encoding
2257 /// <<https://developers.google.com/protocol-buffers/docs/proto3#json>`_> for
2258 /// the v2 protos is used.
2259 Rest = 1,
2260 /// SotW gRPC service.
2261 Grpc = 2,
2262 /// Using the delta xDS gRPC service, i.e. DeltaDiscovery{Request,Response}
2263 /// rather than Discovery{Request,Response}. Rather than sending Envoy the entire state
2264 /// with every update, the xDS server only sends what has changed since the last update.
2265 DeltaGrpc = 3,
2266 /// SotW xDS gRPC with ADS. All resources which resolve to this configuration source will be
2267 /// multiplexed on a single connection to an ADS endpoint.
2268 /// \[#not-implemented-hide:\]
2269 AggregatedGrpc = 5,
2270 /// Delta xDS gRPC with ADS. All resources which resolve to this configuration source will be
2271 /// multiplexed on a single connection to an ADS endpoint.
2272 /// \[#not-implemented-hide:\]
2273 AggregatedDeltaGrpc = 6,
2274 }
2275 impl ApiType {
2276 /// String value of the enum field names used in the ProtoBuf definition.
2277 ///
2278 /// The values are not transformed in any way and thus are considered stable
2279 /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2280 pub fn as_str_name(&self) -> &'static str {
2281 match self {
2282 Self::DeprecatedAndUnavailableDoNotUse => {
2283 "DEPRECATED_AND_UNAVAILABLE_DO_NOT_USE"
2284 }
2285 Self::Rest => "REST",
2286 Self::Grpc => "GRPC",
2287 Self::DeltaGrpc => "DELTA_GRPC",
2288 Self::AggregatedGrpc => "AGGREGATED_GRPC",
2289 Self::AggregatedDeltaGrpc => "AGGREGATED_DELTA_GRPC",
2290 }
2291 }
2292 /// Creates an enum from field names used in the ProtoBuf definition.
2293 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2294 match value {
2295 "DEPRECATED_AND_UNAVAILABLE_DO_NOT_USE" => {
2296 Some(Self::DeprecatedAndUnavailableDoNotUse)
2297 }
2298 "REST" => Some(Self::Rest),
2299 "GRPC" => Some(Self::Grpc),
2300 "DELTA_GRPC" => Some(Self::DeltaGrpc),
2301 "AGGREGATED_GRPC" => Some(Self::AggregatedGrpc),
2302 "AGGREGATED_DELTA_GRPC" => Some(Self::AggregatedDeltaGrpc),
2303 _ => None,
2304 }
2305 }
2306 }
2307}
2308impl ::prost::Name for ApiConfigSource {
2309 const NAME: &'static str = "ApiConfigSource";
2310 const PACKAGE: &'static str = "envoy.config.core.v3";
2311 fn full_name() -> ::prost::alloc::string::String {
2312 "envoy.config.core.v3.ApiConfigSource".into()
2313 }
2314 fn type_url() -> ::prost::alloc::string::String {
2315 "type.googleapis.com/envoy.config.core.v3.ApiConfigSource".into()
2316 }
2317}
2318/// Aggregated Discovery Service (ADS) options. This is currently empty, but when
2319/// set in :ref:`ConfigSource <envoy_v3_api_msg_config.core.v3.ConfigSource>` can be used to
2320/// specify that ADS is to be used.
2321#[derive(Clone, Copy, PartialEq, ::prost::Message)]
2322pub struct AggregatedConfigSource {}
2323impl ::prost::Name for AggregatedConfigSource {
2324 const NAME: &'static str = "AggregatedConfigSource";
2325 const PACKAGE: &'static str = "envoy.config.core.v3";
2326 fn full_name() -> ::prost::alloc::string::String {
2327 "envoy.config.core.v3.AggregatedConfigSource".into()
2328 }
2329 fn type_url() -> ::prost::alloc::string::String {
2330 "type.googleapis.com/envoy.config.core.v3.AggregatedConfigSource".into()
2331 }
2332}
2333/// \[#not-implemented-hide:\]
2334/// Self-referencing config source options. This is currently empty, but when
2335/// set in :ref:`ConfigSource <envoy_v3_api_msg_config.core.v3.ConfigSource>` can be used to
2336/// specify that other data can be obtained from the same server.
2337#[derive(Clone, Copy, PartialEq, ::prost::Message)]
2338pub struct SelfConfigSource {
2339 /// API version for xDS transport protocol. This describes the xDS gRPC/REST
2340 /// endpoint and version of \[Delta\]DiscoveryRequest/Response used on the wire.
2341 #[prost(enumeration = "ApiVersion", tag = "1")]
2342 pub transport_api_version: i32,
2343}
2344impl ::prost::Name for SelfConfigSource {
2345 const NAME: &'static str = "SelfConfigSource";
2346 const PACKAGE: &'static str = "envoy.config.core.v3";
2347 fn full_name() -> ::prost::alloc::string::String {
2348 "envoy.config.core.v3.SelfConfigSource".into()
2349 }
2350 fn type_url() -> ::prost::alloc::string::String {
2351 "type.googleapis.com/envoy.config.core.v3.SelfConfigSource".into()
2352 }
2353}
2354/// Rate Limit settings to be applied for discovery requests made by Envoy.
2355#[derive(Clone, Copy, PartialEq, ::prost::Message)]
2356pub struct RateLimitSettings {
2357 /// Maximum number of tokens to be used for rate limiting discovery request calls. If not set, a
2358 /// default value of 100 will be used.
2359 #[prost(message, optional, tag = "1")]
2360 pub max_tokens: ::core::option::Option<
2361 super::super::super::super::google::protobuf::UInt32Value,
2362 >,
2363 /// Rate at which tokens will be filled per second. If not set, a default fill rate of 10 tokens
2364 /// per second will be used. The minimal fill rate is once per year. Lower
2365 /// fill rates will be set to once per year.
2366 #[prost(message, optional, tag = "2")]
2367 pub fill_rate: ::core::option::Option<
2368 super::super::super::super::google::protobuf::DoubleValue,
2369 >,
2370}
2371impl ::prost::Name for RateLimitSettings {
2372 const NAME: &'static str = "RateLimitSettings";
2373 const PACKAGE: &'static str = "envoy.config.core.v3";
2374 fn full_name() -> ::prost::alloc::string::String {
2375 "envoy.config.core.v3.RateLimitSettings".into()
2376 }
2377 fn type_url() -> ::prost::alloc::string::String {
2378 "type.googleapis.com/envoy.config.core.v3.RateLimitSettings".into()
2379 }
2380}
2381/// Local filesystem path configuration source.
2382#[derive(Clone, PartialEq, ::prost::Message)]
2383pub struct PathConfigSource {
2384 /// Path on the filesystem to source and watch for configuration updates.
2385 /// When sourcing configuration for a :ref:`secret <envoy_v3_api_msg_extensions.transport_sockets.tls.v3.Secret>`,
2386 /// the certificate and key files are also watched for updates.
2387 ///
2388 /// .. note::
2389 ///
2390 /// The path to the source must exist at config load time.
2391 ///
2392 /// .. note::
2393 ///
2394 /// If ``watched_directory`` is *not* configured, Envoy will watch the file path for *moves*.
2395 /// This is because in general only moves are atomic. The same method of swapping files as is
2396 /// demonstrated in the :ref:`runtime documentation <config_runtime_symbolic_link_swap>` can be
2397 /// used here also. If ``watched_directory`` is configured, no watch will be placed directly on
2398 /// this path. Instead, the configured ``watched_directory`` will be used to trigger reloads of
2399 /// this path. This is required in certain deployment scenarios. See below for more information.
2400 #[prost(string, tag = "1")]
2401 pub path: ::prost::alloc::string::String,
2402 /// If configured, this directory will be watched for *moves*. When an entry in this directory is
2403 /// moved to, the ``path`` will be reloaded. This is required in certain deployment scenarios.
2404 ///
2405 /// Specifically, if trying to load an xDS resource using a
2406 /// `Kubernetes ConfigMap <<https://kubernetes.io/docs/concepts/configuration/configmap/>`_,> the
2407 /// following configuration might be used:
2408 /// 1. Store xds.yaml inside a ConfigMap.
2409 /// 2. Mount the ConfigMap to ``/config_map/xds``
2410 /// 3. Configure path ``/config_map/xds/xds.yaml``
2411 /// 4. Configure watched directory ``/config_map/xds``
2412 ///
2413 /// The above configuration will ensure that Envoy watches the owning directory for moves which is
2414 /// required due to how Kubernetes manages ConfigMap symbolic links during atomic updates.
2415 #[prost(message, optional, tag = "2")]
2416 pub watched_directory: ::core::option::Option<WatchedDirectory>,
2417}
2418impl ::prost::Name for PathConfigSource {
2419 const NAME: &'static str = "PathConfigSource";
2420 const PACKAGE: &'static str = "envoy.config.core.v3";
2421 fn full_name() -> ::prost::alloc::string::String {
2422 "envoy.config.core.v3.PathConfigSource".into()
2423 }
2424 fn type_url() -> ::prost::alloc::string::String {
2425 "type.googleapis.com/envoy.config.core.v3.PathConfigSource".into()
2426 }
2427}
2428/// Configuration for :ref:`listeners <config_listeners>`, :ref:`clusters
2429/// <config_cluster_manager>`, :ref:`routes
2430/// <envoy_v3_api_msg_config.route.v3.RouteConfiguration>`, :ref:`endpoints
2431/// <arch_overview_service_discovery>` etc. may either be sourced from the
2432/// filesystem or from an xDS API source. Filesystem configs are watched with
2433/// inotify for updates.
2434/// \[#next-free-field: 9\]
2435#[derive(Clone, PartialEq, ::prost::Message)]
2436pub struct ConfigSource {
2437 /// Authorities that this config source may be used for. An authority specified in a xdstp:// URL
2438 /// is resolved to a ``ConfigSource`` prior to configuration fetch. This field provides the
2439 /// association between authority name and configuration source.
2440 /// \[#not-implemented-hide:\]
2441 #[prost(message, repeated, tag = "7")]
2442 pub authorities: ::prost::alloc::vec::Vec<
2443 super::super::super::super::xds::core::v3::Authority,
2444 >,
2445 /// When this timeout is specified, Envoy will wait no longer than the specified time for first
2446 /// config response on this xDS subscription during the :ref:`initialization process
2447 /// <arch_overview_initialization>`. After reaching the timeout, Envoy will move to the next
2448 /// initialization phase, even if the first config is not delivered yet. The timer is activated
2449 /// when the xDS API subscription starts, and is disarmed on first config update or on error. 0
2450 /// means no timeout - Envoy will wait indefinitely for the first xDS config (unless another
2451 /// timeout applies). The default is 15s.
2452 #[prost(message, optional, tag = "4")]
2453 pub initial_fetch_timeout: ::core::option::Option<
2454 super::super::super::super::google::protobuf::Duration,
2455 >,
2456 /// API version for xDS resources. This implies the type URLs that the client
2457 /// will request for resources and the resource type that the client will in
2458 /// turn expect to be delivered.
2459 #[prost(enumeration = "ApiVersion", tag = "6")]
2460 pub resource_api_version: i32,
2461 #[prost(oneof = "config_source::ConfigSourceSpecifier", tags = "1, 8, 2, 3, 5")]
2462 pub config_source_specifier: ::core::option::Option<
2463 config_source::ConfigSourceSpecifier,
2464 >,
2465}
2466/// Nested message and enum types in `ConfigSource`.
2467pub mod config_source {
2468 #[derive(Clone, PartialEq, ::prost::Oneof)]
2469 pub enum ConfigSourceSpecifier {
2470 /// Deprecated in favor of ``path_config_source``. Use that field instead.
2471 #[prost(string, tag = "1")]
2472 Path(::prost::alloc::string::String),
2473 /// Local filesystem path configuration source.
2474 #[prost(message, tag = "8")]
2475 PathConfigSource(super::PathConfigSource),
2476 /// API configuration source.
2477 #[prost(message, tag = "2")]
2478 ApiConfigSource(super::ApiConfigSource),
2479 /// When set, ADS will be used to fetch resources. The ADS API configuration
2480 /// source in the bootstrap configuration is used.
2481 #[prost(message, tag = "3")]
2482 Ads(super::AggregatedConfigSource),
2483 /// \[#not-implemented-hide:\]
2484 /// When set, the client will access the resources from the same server it got the
2485 /// ConfigSource from, although not necessarily from the same stream. This is similar to the
2486 /// :ref:`ads<envoy_v3_api_field.ConfigSource.ads>` field, except that the client may use a
2487 /// different stream to the same server. As a result, this field can be used for things
2488 /// like LRS that cannot be sent on an ADS stream. It can also be used to link from (e.g.)
2489 /// LDS to RDS on the same server without requiring the management server to know its name
2490 /// or required credentials.
2491 /// [#next-major-version: In xDS v3, consider replacing the ads field with this one, since
2492 /// this field can implicitly mean to use the same stream in the case where the ConfigSource
2493 /// is provided via ADS and the specified data can also be obtained via ADS.]
2494 #[prost(message, tag = "5")]
2495 Self_(super::SelfConfigSource),
2496 }
2497}
2498impl ::prost::Name for ConfigSource {
2499 const NAME: &'static str = "ConfigSource";
2500 const PACKAGE: &'static str = "envoy.config.core.v3";
2501 fn full_name() -> ::prost::alloc::string::String {
2502 "envoy.config.core.v3.ConfigSource".into()
2503 }
2504 fn type_url() -> ::prost::alloc::string::String {
2505 "type.googleapis.com/envoy.config.core.v3.ConfigSource".into()
2506 }
2507}
2508/// Configuration source specifier for a late-bound extension configuration. The
2509/// parent resource is warmed until all the initial extension configurations are
2510/// received, unless the flag to apply the default configuration is set.
2511/// Subsequent extension updates are atomic on a per-worker basis. Once an
2512/// extension configuration is applied to a request or a connection, it remains
2513/// constant for the duration of processing. If the initial delivery of the
2514/// extension configuration fails, due to a timeout for example, the optional
2515/// default configuration is applied. Without a default configuration, the
2516/// extension is disabled, until an extension configuration is received. The
2517/// behavior of a disabled extension depends on the context. For example, a
2518/// filter chain with a disabled extension filter rejects all incoming streams.
2519#[derive(Clone, PartialEq, ::prost::Message)]
2520pub struct ExtensionConfigSource {
2521 #[prost(message, optional, tag = "1")]
2522 pub config_source: ::core::option::Option<ConfigSource>,
2523 /// Optional default configuration to use as the initial configuration if
2524 /// there is a failure to receive the initial extension configuration or if
2525 /// ``apply_default_config_without_warming`` flag is set.
2526 #[prost(message, optional, tag = "2")]
2527 pub default_config: ::core::option::Option<
2528 super::super::super::super::google::protobuf::Any,
2529 >,
2530 /// Use the default config as the initial configuration without warming and
2531 /// waiting for the first discovery response. Requires the default configuration
2532 /// to be supplied.
2533 #[prost(bool, tag = "3")]
2534 pub apply_default_config_without_warming: bool,
2535 /// A set of permitted extension type URLs. Extension configuration updates are rejected
2536 /// if they do not match any type URL in the set.
2537 #[prost(string, repeated, tag = "4")]
2538 pub type_urls: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2539}
2540impl ::prost::Name for ExtensionConfigSource {
2541 const NAME: &'static str = "ExtensionConfigSource";
2542 const PACKAGE: &'static str = "envoy.config.core.v3";
2543 fn full_name() -> ::prost::alloc::string::String {
2544 "envoy.config.core.v3.ExtensionConfigSource".into()
2545 }
2546 fn type_url() -> ::prost::alloc::string::String {
2547 "type.googleapis.com/envoy.config.core.v3.ExtensionConfigSource".into()
2548 }
2549}
2550/// xDS API and non-xDS services version. This is used to describe both resource and transport
2551/// protocol versions (in distinct configuration fields).
2552#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2553#[repr(i32)]
2554pub enum ApiVersion {
2555 /// When not specified, we assume v3; it is the only supported version.
2556 Auto = 0,
2557 /// Use xDS v2 API. This is no longer supported.
2558 V2 = 1,
2559 /// Use xDS v3 API.
2560 V3 = 2,
2561}
2562impl ApiVersion {
2563 /// String value of the enum field names used in the ProtoBuf definition.
2564 ///
2565 /// The values are not transformed in any way and thus are considered stable
2566 /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2567 pub fn as_str_name(&self) -> &'static str {
2568 match self {
2569 Self::Auto => "AUTO",
2570 Self::V2 => "V2",
2571 Self::V3 => "V3",
2572 }
2573 }
2574 /// Creates an enum from field names used in the ProtoBuf definition.
2575 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2576 match value {
2577 "AUTO" => Some(Self::Auto),
2578 "V2" => Some(Self::V2),
2579 "V3" => Some(Self::V3),
2580 _ => None,
2581 }
2582 }
2583}
2584/// \[#not-implemented-hide:\]
2585/// Configuration of the event reporting service endpoint.
2586#[derive(Clone, PartialEq, ::prost::Message)]
2587pub struct EventServiceConfig {
2588 #[prost(oneof = "event_service_config::ConfigSourceSpecifier", tags = "1")]
2589 pub config_source_specifier: ::core::option::Option<
2590 event_service_config::ConfigSourceSpecifier,
2591 >,
2592}
2593/// Nested message and enum types in `EventServiceConfig`.
2594pub mod event_service_config {
2595 #[derive(Clone, PartialEq, ::prost::Oneof)]
2596 pub enum ConfigSourceSpecifier {
2597 /// Specifies the gRPC service that hosts the event reporting service.
2598 #[prost(message, tag = "1")]
2599 GrpcService(super::GrpcService),
2600 }
2601}
2602impl ::prost::Name for EventServiceConfig {
2603 const NAME: &'static str = "EventServiceConfig";
2604 const PACKAGE: &'static str = "envoy.config.core.v3";
2605 fn full_name() -> ::prost::alloc::string::String {
2606 "envoy.config.core.v3.EventServiceConfig".into()
2607 }
2608 fn type_url() -> ::prost::alloc::string::String {
2609 "type.googleapis.com/envoy.config.core.v3.EventServiceConfig".into()
2610 }
2611}
2612#[derive(Clone, PartialEq, ::prost::Message)]
2613pub struct HealthStatusSet {
2614 /// An order-independent set of health status.
2615 #[prost(enumeration = "HealthStatus", repeated, packed = "false", tag = "1")]
2616 pub statuses: ::prost::alloc::vec::Vec<i32>,
2617}
2618impl ::prost::Name for HealthStatusSet {
2619 const NAME: &'static str = "HealthStatusSet";
2620 const PACKAGE: &'static str = "envoy.config.core.v3";
2621 fn full_name() -> ::prost::alloc::string::String {
2622 "envoy.config.core.v3.HealthStatusSet".into()
2623 }
2624 fn type_url() -> ::prost::alloc::string::String {
2625 "type.googleapis.com/envoy.config.core.v3.HealthStatusSet".into()
2626 }
2627}
2628/// \[#next-free-field: 27\]
2629#[derive(Clone, PartialEq, ::prost::Message)]
2630pub struct HealthCheck {
2631 /// The time to wait for a health check response. If the timeout is reached the
2632 /// health check attempt will be considered a failure.
2633 #[prost(message, optional, tag = "1")]
2634 pub timeout: ::core::option::Option<
2635 super::super::super::super::google::protobuf::Duration,
2636 >,
2637 /// The interval between health checks.
2638 #[prost(message, optional, tag = "2")]
2639 pub interval: ::core::option::Option<
2640 super::super::super::super::google::protobuf::Duration,
2641 >,
2642 /// An optional jitter amount in milliseconds. If specified, Envoy will start health
2643 /// checking after for a random time in ms between 0 and initial_jitter. This only
2644 /// applies to the first health check.
2645 #[prost(message, optional, tag = "20")]
2646 pub initial_jitter: ::core::option::Option<
2647 super::super::super::super::google::protobuf::Duration,
2648 >,
2649 /// An optional jitter amount in milliseconds. If specified, during every
2650 /// interval Envoy will add interval_jitter to the wait time.
2651 #[prost(message, optional, tag = "3")]
2652 pub interval_jitter: ::core::option::Option<
2653 super::super::super::super::google::protobuf::Duration,
2654 >,
2655 /// An optional jitter amount as a percentage of interval_ms. If specified,
2656 /// during every interval Envoy will add ``interval_ms`` *
2657 /// ``interval_jitter_percent`` / 100 to the wait time.
2658 ///
2659 /// If interval_jitter_ms and interval_jitter_percent are both set, both of
2660 /// them will be used to increase the wait time.
2661 #[prost(uint32, tag = "18")]
2662 pub interval_jitter_percent: u32,
2663 /// The number of unhealthy health checks required before a host is marked
2664 /// unhealthy. Note that for ``http`` health checking if a host responds with a code not in
2665 /// :ref:`expected_statuses <envoy_v3_api_field_config.core.v3.HealthCheck.HttpHealthCheck.expected_statuses>`
2666 /// or :ref:`retriable_statuses <envoy_v3_api_field_config.core.v3.HealthCheck.HttpHealthCheck.retriable_statuses>`,
2667 /// this threshold is ignored and the host is considered immediately unhealthy.
2668 #[prost(message, optional, tag = "4")]
2669 pub unhealthy_threshold: ::core::option::Option<
2670 super::super::super::super::google::protobuf::UInt32Value,
2671 >,
2672 /// The number of healthy health checks required before a host is marked
2673 /// healthy. Note that during startup, only a single successful health check is
2674 /// required to mark a host healthy.
2675 #[prost(message, optional, tag = "5")]
2676 pub healthy_threshold: ::core::option::Option<
2677 super::super::super::super::google::protobuf::UInt32Value,
2678 >,
2679 /// \[#not-implemented-hide:\] Non-serving port for health checking.
2680 #[prost(message, optional, tag = "6")]
2681 pub alt_port: ::core::option::Option<
2682 super::super::super::super::google::protobuf::UInt32Value,
2683 >,
2684 /// Reuse health check connection between health checks. Default is true.
2685 #[prost(message, optional, tag = "7")]
2686 pub reuse_connection: ::core::option::Option<
2687 super::super::super::super::google::protobuf::BoolValue,
2688 >,
2689 /// The "no traffic interval" is a special health check interval that is used when a cluster has
2690 /// never had traffic routed to it. This lower interval allows cluster information to be kept up to
2691 /// date, without sending a potentially large amount of active health checking traffic for no
2692 /// reason. Once a cluster has been used for traffic routing, Envoy will shift back to using the
2693 /// standard health check interval that is defined. Note that this interval takes precedence over
2694 /// any other.
2695 ///
2696 /// The default value for "no traffic interval" is 60 seconds.
2697 #[prost(message, optional, tag = "12")]
2698 pub no_traffic_interval: ::core::option::Option<
2699 super::super::super::super::google::protobuf::Duration,
2700 >,
2701 /// The "no traffic healthy interval" is a special health check interval that
2702 /// is used for hosts that are currently passing active health checking
2703 /// (including new hosts) when the cluster has received no traffic.
2704 ///
2705 /// This is useful for when we want to send frequent health checks with
2706 /// ``no_traffic_interval`` but then revert to lower frequency ``no_traffic_healthy_interval`` once
2707 /// a host in the cluster is marked as healthy.
2708 ///
2709 /// Once a cluster has been used for traffic routing, Envoy will shift back to using the
2710 /// standard health check interval that is defined.
2711 ///
2712 /// If no_traffic_healthy_interval is not set, it will default to the
2713 /// no traffic interval and send that interval regardless of health state.
2714 #[prost(message, optional, tag = "24")]
2715 pub no_traffic_healthy_interval: ::core::option::Option<
2716 super::super::super::super::google::protobuf::Duration,
2717 >,
2718 /// The "unhealthy interval" is a health check interval that is used for hosts that are marked as
2719 /// unhealthy. As soon as the host is marked as healthy, Envoy will shift back to using the
2720 /// standard health check interval that is defined.
2721 ///
2722 /// The default value for "unhealthy interval" is the same as "interval".
2723 #[prost(message, optional, tag = "14")]
2724 pub unhealthy_interval: ::core::option::Option<
2725 super::super::super::super::google::protobuf::Duration,
2726 >,
2727 /// The "unhealthy edge interval" is a special health check interval that is used for the first
2728 /// health check right after a host is marked as unhealthy. For subsequent health checks
2729 /// Envoy will shift back to using either "unhealthy interval" if present or the standard health
2730 /// check interval that is defined.
2731 ///
2732 /// The default value for "unhealthy edge interval" is the same as "unhealthy interval".
2733 #[prost(message, optional, tag = "15")]
2734 pub unhealthy_edge_interval: ::core::option::Option<
2735 super::super::super::super::google::protobuf::Duration,
2736 >,
2737 /// The "healthy edge interval" is a special health check interval that is used for the first
2738 /// health check right after a host is marked as healthy. For subsequent health checks
2739 /// Envoy will shift back to using the standard health check interval that is defined.
2740 ///
2741 /// The default value for "healthy edge interval" is the same as the default interval.
2742 #[prost(message, optional, tag = "16")]
2743 pub healthy_edge_interval: ::core::option::Option<
2744 super::super::super::super::google::protobuf::Duration,
2745 >,
2746 /// .. attention::
2747 /// This field is deprecated in favor of the extension
2748 /// :ref:`event_logger <envoy_v3_api_field_config.core.v3.HealthCheck.event_logger>` and
2749 /// :ref:`event_log_path <envoy_v3_api_field_extensions.health_check.event_sinks.file.v3.HealthCheckEventFileSink.event_log_path>`
2750 /// in the file sink extension.
2751 ///
2752 /// Specifies the path to the :ref:`health check event log <arch_overview_health_check_logging>`.
2753 #[deprecated]
2754 #[prost(string, tag = "17")]
2755 pub event_log_path: ::prost::alloc::string::String,
2756 /// A list of event log sinks to process the health check event.
2757 /// \[#extension-category: envoy.health_check.event_sinks\]
2758 #[prost(message, repeated, tag = "25")]
2759 pub event_logger: ::prost::alloc::vec::Vec<TypedExtensionConfig>,
2760 /// \[#not-implemented-hide:\]
2761 /// The gRPC service for the health check event service.
2762 /// If empty, health check events won't be sent to a remote endpoint.
2763 #[prost(message, optional, tag = "22")]
2764 pub event_service: ::core::option::Option<EventServiceConfig>,
2765 /// If set to true, health check failure events will always be logged. If set to false, only the
2766 /// initial health check failure event will be logged.
2767 /// The default value is false.
2768 #[prost(bool, tag = "19")]
2769 pub always_log_health_check_failures: bool,
2770 /// If set to true, health check success events will always be logged. If set to false, only host addition event will be logged
2771 /// if it is the first successful health check, or if the healthy threshold is reached.
2772 /// The default value is false.
2773 #[prost(bool, tag = "26")]
2774 pub always_log_health_check_success: bool,
2775 /// This allows overriding the cluster TLS settings, just for health check connections.
2776 #[prost(message, optional, tag = "21")]
2777 pub tls_options: ::core::option::Option<health_check::TlsOptions>,
2778 /// Optional key/value pairs that will be used to match a transport socket from those specified in the cluster's
2779 /// :ref:`tranport socket matches <envoy_v3_api_field_config.cluster.v3.Cluster.transport_socket_matches>`.
2780 /// For example, the following match criteria
2781 ///
2782 /// .. code-block:: yaml
2783 ///
2784 /// transport_socket_match_criteria:
2785 /// useMTLS: true
2786 ///
2787 /// Will match the following :ref:`cluster socket match <envoy_v3_api_msg_config.cluster.v3.Cluster.TransportSocketMatch>`
2788 ///
2789 /// .. code-block:: yaml
2790 ///
2791 /// transport_socket_matches:
2792 /// - name: "useMTLS"
2793 /// match:
2794 /// useMTLS: true
2795 /// transport_socket:
2796 /// name: envoy.transport_sockets.tls
2797 /// config: { ... } # tls socket configuration
2798 ///
2799 /// If this field is set, then for health checks it will supersede an entry of ``envoy.transport_socket`` in the
2800 /// :ref:`LbEndpoint.Metadata <envoy_v3_api_field_config.endpoint.v3.LbEndpoint.metadata>`.
2801 /// This allows using different transport socket capabilities for health checking versus proxying to the
2802 /// endpoint.
2803 ///
2804 /// If the key/values pairs specified do not match any
2805 /// :ref:`transport socket matches <envoy_v3_api_field_config.cluster.v3.Cluster.transport_socket_matches>`,
2806 /// the cluster's :ref:`transport socket <envoy_v3_api_field_config.cluster.v3.Cluster.transport_socket>`
2807 /// will be used for health check socket configuration.
2808 #[prost(message, optional, tag = "23")]
2809 pub transport_socket_match_criteria: ::core::option::Option<
2810 super::super::super::super::google::protobuf::Struct,
2811 >,
2812 #[prost(oneof = "health_check::HealthChecker", tags = "8, 9, 11, 13")]
2813 pub health_checker: ::core::option::Option<health_check::HealthChecker>,
2814}
2815/// Nested message and enum types in `HealthCheck`.
2816pub mod health_check {
2817 /// Describes the encoding of the payload bytes in the payload.
2818 #[derive(Clone, PartialEq, ::prost::Message)]
2819 pub struct Payload {
2820 #[prost(oneof = "payload::Payload", tags = "1, 2")]
2821 pub payload: ::core::option::Option<payload::Payload>,
2822 }
2823 /// Nested message and enum types in `Payload`.
2824 pub mod payload {
2825 #[derive(Clone, PartialEq, ::prost::Oneof)]
2826 pub enum Payload {
2827 /// Hex encoded payload. E.g., "000000FF".
2828 #[prost(string, tag = "1")]
2829 Text(::prost::alloc::string::String),
2830 /// Binary payload.
2831 #[prost(bytes, tag = "2")]
2832 Binary(::prost::alloc::vec::Vec<u8>),
2833 }
2834 }
2835 impl ::prost::Name for Payload {
2836 const NAME: &'static str = "Payload";
2837 const PACKAGE: &'static str = "envoy.config.core.v3";
2838 fn full_name() -> ::prost::alloc::string::String {
2839 "envoy.config.core.v3.HealthCheck.Payload".into()
2840 }
2841 fn type_url() -> ::prost::alloc::string::String {
2842 "type.googleapis.com/envoy.config.core.v3.HealthCheck.Payload".into()
2843 }
2844 }
2845 /// \[#next-free-field: 15\]
2846 #[derive(Clone, PartialEq, ::prost::Message)]
2847 pub struct HttpHealthCheck {
2848 /// The value of the host header in the HTTP health check request. If
2849 /// left empty (default value), the name of the cluster this health check is associated
2850 /// with will be used. The host header can be customized for a specific endpoint by setting the
2851 /// :ref:`hostname <envoy_v3_api_field_config.endpoint.v3.Endpoint.HealthCheckConfig.hostname>` field.
2852 #[prost(string, tag = "1")]
2853 pub host: ::prost::alloc::string::String,
2854 /// Specifies the HTTP path that will be requested during health checking. For example
2855 /// ``/healthcheck``.
2856 #[prost(string, tag = "2")]
2857 pub path: ::prost::alloc::string::String,
2858 /// \[#not-implemented-hide:\] HTTP specific payload.
2859 #[prost(message, optional, tag = "3")]
2860 pub send: ::core::option::Option<Payload>,
2861 /// Specifies a list of HTTP expected responses to match in the first ``response_buffer_size`` bytes of the response body.
2862 /// If it is set, both the expected response check and status code determine the health check.
2863 /// When checking the response, “fuzzy” matching is performed such that each payload block must be found,
2864 /// and in the order specified, but not necessarily contiguous.
2865 ///
2866 /// .. note::
2867 ///
2868 /// It is recommended to set ``response_buffer_size`` based on the total Payload size for efficiency.
2869 /// The default buffer size is 1024 bytes when it is not set.
2870 #[prost(message, repeated, tag = "4")]
2871 pub receive: ::prost::alloc::vec::Vec<Payload>,
2872 /// Specifies the size of response buffer in bytes that is used to Payload match.
2873 /// The default value is 1024. Setting to 0 implies that the Payload will be matched against the entire response.
2874 #[prost(message, optional, tag = "14")]
2875 pub response_buffer_size: ::core::option::Option<
2876 super::super::super::super::super::google::protobuf::UInt64Value,
2877 >,
2878 /// Specifies a list of HTTP headers that should be added to each request that is sent to the
2879 /// health checked cluster. For more information, including details on header value syntax, see
2880 /// the documentation on :ref:`custom request headers
2881 /// <config_http_conn_man_headers_custom_request_headers>`.
2882 #[prost(message, repeated, tag = "6")]
2883 pub request_headers_to_add: ::prost::alloc::vec::Vec<super::HeaderValueOption>,
2884 /// Specifies a list of HTTP headers that should be removed from each request that is sent to the
2885 /// health checked cluster.
2886 #[prost(string, repeated, tag = "8")]
2887 pub request_headers_to_remove: ::prost::alloc::vec::Vec<
2888 ::prost::alloc::string::String,
2889 >,
2890 /// Specifies a list of HTTP response statuses considered healthy. If provided, replaces default
2891 /// 200-only policy - 200 must be included explicitly as needed. Ranges follow half-open
2892 /// semantics of :ref:`Int64Range <envoy_v3_api_msg_type.v3.Int64Range>`. The start and end of each
2893 /// range are required. Only statuses in the range [100, 600) are allowed.
2894 #[prost(message, repeated, tag = "9")]
2895 pub expected_statuses: ::prost::alloc::vec::Vec<
2896 super::super::super::super::r#type::v3::Int64Range,
2897 >,
2898 /// Specifies a list of HTTP response statuses considered retriable. If provided, responses in this range
2899 /// will count towards the configured :ref:`unhealthy_threshold <envoy_v3_api_field_config.core.v3.HealthCheck.unhealthy_threshold>`,
2900 /// but will not result in the host being considered immediately unhealthy. Ranges follow half-open semantics of
2901 /// :ref:`Int64Range <envoy_v3_api_msg_type.v3.Int64Range>`. The start and end of each range are required.
2902 /// Only statuses in the range [100, 600) are allowed. The :ref:`expected_statuses <envoy_v3_api_field_config.core.v3.HealthCheck.HttpHealthCheck.expected_statuses>`
2903 /// field takes precedence for any range overlaps with this field i.e. if status code 200 is both retriable and expected, a 200 response will
2904 /// be considered a successful health check. By default all responses not in
2905 /// :ref:`expected_statuses <envoy_v3_api_field_config.core.v3.HealthCheck.HttpHealthCheck.expected_statuses>` will result in
2906 /// the host being considered immediately unhealthy i.e. if status code 200 is expected and there are no configured retriable statuses, any
2907 /// non-200 response will result in the host being marked unhealthy.
2908 #[prost(message, repeated, tag = "12")]
2909 pub retriable_statuses: ::prost::alloc::vec::Vec<
2910 super::super::super::super::r#type::v3::Int64Range,
2911 >,
2912 /// Use specified application protocol for health checks.
2913 #[prost(
2914 enumeration = "super::super::super::super::r#type::v3::CodecClientType",
2915 tag = "10"
2916 )]
2917 pub codec_client_type: i32,
2918 /// An optional service name parameter which is used to validate the identity of
2919 /// the health checked cluster using a :ref:`StringMatcher
2920 /// <envoy_v3_api_msg_type.matcher.v3.StringMatcher>`. See the :ref:`architecture overview
2921 /// <arch_overview_health_checking_identity>` for more information.
2922 #[prost(message, optional, tag = "11")]
2923 pub service_name_matcher: ::core::option::Option<
2924 super::super::super::super::r#type::matcher::v3::StringMatcher,
2925 >,
2926 /// HTTP Method that will be used for health checking, default is "GET".
2927 /// GET, HEAD, POST, PUT, DELETE, OPTIONS, TRACE, PATCH methods are supported, but making request body is not supported.
2928 /// CONNECT method is disallowed because it is not appropriate for health check request.
2929 /// 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>`.
2930 #[prost(enumeration = "super::RequestMethod", tag = "13")]
2931 pub method: i32,
2932 }
2933 impl ::prost::Name for HttpHealthCheck {
2934 const NAME: &'static str = "HttpHealthCheck";
2935 const PACKAGE: &'static str = "envoy.config.core.v3";
2936 fn full_name() -> ::prost::alloc::string::String {
2937 "envoy.config.core.v3.HealthCheck.HttpHealthCheck".into()
2938 }
2939 fn type_url() -> ::prost::alloc::string::String {
2940 "type.googleapis.com/envoy.config.core.v3.HealthCheck.HttpHealthCheck".into()
2941 }
2942 }
2943 #[derive(Clone, PartialEq, ::prost::Message)]
2944 pub struct TcpHealthCheck {
2945 /// Empty payloads imply a connect-only health check.
2946 #[prost(message, optional, tag = "1")]
2947 pub send: ::core::option::Option<Payload>,
2948 /// When checking the response, “fuzzy” matching is performed such that each
2949 /// payload block must be found, and in the order specified, but not
2950 /// necessarily contiguous.
2951 #[prost(message, repeated, tag = "2")]
2952 pub receive: ::prost::alloc::vec::Vec<Payload>,
2953 /// When setting this value, it tries to attempt health check request with ProxyProtocol.
2954 /// When ``send`` is presented, they are sent after preceding ProxyProtocol header.
2955 /// Only ProxyProtocol header is sent when ``send`` is not presented.
2956 /// It allows to use both ProxyProtocol V1 and V2. In V1, it presents L3/L4. In V2, it includes
2957 /// LOCAL command and doesn't include L3/L4.
2958 #[prost(message, optional, tag = "3")]
2959 pub proxy_protocol_config: ::core::option::Option<super::ProxyProtocolConfig>,
2960 }
2961 impl ::prost::Name for TcpHealthCheck {
2962 const NAME: &'static str = "TcpHealthCheck";
2963 const PACKAGE: &'static str = "envoy.config.core.v3";
2964 fn full_name() -> ::prost::alloc::string::String {
2965 "envoy.config.core.v3.HealthCheck.TcpHealthCheck".into()
2966 }
2967 fn type_url() -> ::prost::alloc::string::String {
2968 "type.googleapis.com/envoy.config.core.v3.HealthCheck.TcpHealthCheck".into()
2969 }
2970 }
2971 #[derive(Clone, PartialEq, ::prost::Message)]
2972 pub struct RedisHealthCheck {
2973 /// If set, optionally perform ``EXISTS <key>`` instead of ``PING``. A return value
2974 /// from Redis of 0 (does not exist) is considered a passing healthcheck. A return value other
2975 /// than 0 is considered a failure. This allows the user to mark a Redis instance for maintenance
2976 /// by setting the specified key to any value and waiting for traffic to drain.
2977 #[prost(string, tag = "1")]
2978 pub key: ::prost::alloc::string::String,
2979 }
2980 impl ::prost::Name for RedisHealthCheck {
2981 const NAME: &'static str = "RedisHealthCheck";
2982 const PACKAGE: &'static str = "envoy.config.core.v3";
2983 fn full_name() -> ::prost::alloc::string::String {
2984 "envoy.config.core.v3.HealthCheck.RedisHealthCheck".into()
2985 }
2986 fn type_url() -> ::prost::alloc::string::String {
2987 "type.googleapis.com/envoy.config.core.v3.HealthCheck.RedisHealthCheck"
2988 .into()
2989 }
2990 }
2991 /// `grpc.health.v1.Health
2992 /// <<https://github.com/grpc/grpc/blob/master/src/proto/grpc/health/v1/health.proto>`_-based>
2993 /// healthcheck. See `gRPC doc <<https://github.com/grpc/grpc/blob/master/doc/health-checking.md>`_>
2994 /// for details.
2995 #[derive(Clone, PartialEq, ::prost::Message)]
2996 pub struct GrpcHealthCheck {
2997 /// An optional service name parameter which will be sent to gRPC service in
2998 /// `grpc.health.v1.HealthCheckRequest
2999 /// <<https://github.com/grpc/grpc/blob/master/src/proto/grpc/health/v1/health.proto#L20>`_.>
3000 /// message. See `gRPC health-checking overview
3001 /// <<https://github.com/grpc/grpc/blob/master/doc/health-checking.md>`_> for more information.
3002 #[prost(string, tag = "1")]
3003 pub service_name: ::prost::alloc::string::String,
3004 /// The value of the :authority header in the gRPC health check request. If
3005 /// left empty (default value), the name of the cluster this health check is associated
3006 /// with will be used. The authority header can be customized for a specific endpoint by setting
3007 /// the :ref:`hostname <envoy_v3_api_field_config.endpoint.v3.Endpoint.HealthCheckConfig.hostname>` field.
3008 #[prost(string, tag = "2")]
3009 pub authority: ::prost::alloc::string::String,
3010 /// Specifies a list of key-value pairs that should be added to the metadata of each GRPC call
3011 /// that is sent to the health checked cluster. For more information, including details on header value syntax,
3012 /// see the documentation on :ref:`custom request headers
3013 /// <config_http_conn_man_headers_custom_request_headers>`.
3014 #[prost(message, repeated, tag = "3")]
3015 pub initial_metadata: ::prost::alloc::vec::Vec<super::HeaderValueOption>,
3016 }
3017 impl ::prost::Name for GrpcHealthCheck {
3018 const NAME: &'static str = "GrpcHealthCheck";
3019 const PACKAGE: &'static str = "envoy.config.core.v3";
3020 fn full_name() -> ::prost::alloc::string::String {
3021 "envoy.config.core.v3.HealthCheck.GrpcHealthCheck".into()
3022 }
3023 fn type_url() -> ::prost::alloc::string::String {
3024 "type.googleapis.com/envoy.config.core.v3.HealthCheck.GrpcHealthCheck".into()
3025 }
3026 }
3027 /// Custom health check.
3028 #[derive(Clone, PartialEq, ::prost::Message)]
3029 pub struct CustomHealthCheck {
3030 /// The registered name of the custom health checker.
3031 #[prost(string, tag = "1")]
3032 pub name: ::prost::alloc::string::String,
3033 /// A custom health checker specific configuration which depends on the custom health checker
3034 /// being instantiated. See :api:`envoy/config/health_checker` for reference.
3035 /// \[#extension-category: envoy.health_checkers\]
3036 #[prost(oneof = "custom_health_check::ConfigType", tags = "3")]
3037 pub config_type: ::core::option::Option<custom_health_check::ConfigType>,
3038 }
3039 /// Nested message and enum types in `CustomHealthCheck`.
3040 pub mod custom_health_check {
3041 /// A custom health checker specific configuration which depends on the custom health checker
3042 /// being instantiated. See :api:`envoy/config/health_checker` for reference.
3043 /// \[#extension-category: envoy.health_checkers\]
3044 #[derive(Clone, PartialEq, ::prost::Oneof)]
3045 pub enum ConfigType {
3046 #[prost(message, tag = "3")]
3047 TypedConfig(super::super::super::super::super::super::google::protobuf::Any),
3048 }
3049 }
3050 impl ::prost::Name for CustomHealthCheck {
3051 const NAME: &'static str = "CustomHealthCheck";
3052 const PACKAGE: &'static str = "envoy.config.core.v3";
3053 fn full_name() -> ::prost::alloc::string::String {
3054 "envoy.config.core.v3.HealthCheck.CustomHealthCheck".into()
3055 }
3056 fn type_url() -> ::prost::alloc::string::String {
3057 "type.googleapis.com/envoy.config.core.v3.HealthCheck.CustomHealthCheck"
3058 .into()
3059 }
3060 }
3061 /// Health checks occur over the transport socket specified for the cluster. This implies that if a
3062 /// cluster is using a TLS-enabled transport socket, the health check will also occur over TLS.
3063 ///
3064 /// This allows overriding the cluster TLS settings, just for health check connections.
3065 #[derive(Clone, PartialEq, ::prost::Message)]
3066 pub struct TlsOptions {
3067 /// Specifies the ALPN protocols for health check connections. This is useful if the
3068 /// corresponding upstream is using ALPN-based :ref:`FilterChainMatch
3069 /// <envoy_v3_api_msg_config.listener.v3.FilterChainMatch>` along with different protocols for health checks
3070 /// versus data connections. If empty, no ALPN protocols will be set on health check connections.
3071 #[prost(string, repeated, tag = "1")]
3072 pub alpn_protocols: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
3073 }
3074 impl ::prost::Name for TlsOptions {
3075 const NAME: &'static str = "TlsOptions";
3076 const PACKAGE: &'static str = "envoy.config.core.v3";
3077 fn full_name() -> ::prost::alloc::string::String {
3078 "envoy.config.core.v3.HealthCheck.TlsOptions".into()
3079 }
3080 fn type_url() -> ::prost::alloc::string::String {
3081 "type.googleapis.com/envoy.config.core.v3.HealthCheck.TlsOptions".into()
3082 }
3083 }
3084 #[derive(Clone, PartialEq, ::prost::Oneof)]
3085 pub enum HealthChecker {
3086 /// HTTP health check.
3087 #[prost(message, tag = "8")]
3088 HttpHealthCheck(HttpHealthCheck),
3089 /// TCP health check.
3090 #[prost(message, tag = "9")]
3091 TcpHealthCheck(TcpHealthCheck),
3092 /// gRPC health check.
3093 #[prost(message, tag = "11")]
3094 GrpcHealthCheck(GrpcHealthCheck),
3095 /// Custom health check.
3096 #[prost(message, tag = "13")]
3097 CustomHealthCheck(CustomHealthCheck),
3098 }
3099}
3100impl ::prost::Name for HealthCheck {
3101 const NAME: &'static str = "HealthCheck";
3102 const PACKAGE: &'static str = "envoy.config.core.v3";
3103 fn full_name() -> ::prost::alloc::string::String {
3104 "envoy.config.core.v3.HealthCheck".into()
3105 }
3106 fn type_url() -> ::prost::alloc::string::String {
3107 "type.googleapis.com/envoy.config.core.v3.HealthCheck".into()
3108 }
3109}
3110/// Endpoint health status.
3111#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
3112#[repr(i32)]
3113pub enum HealthStatus {
3114 /// The health status is not known. This is interpreted by Envoy as ``HEALTHY``.
3115 Unknown = 0,
3116 /// Healthy.
3117 Healthy = 1,
3118 /// Unhealthy.
3119 Unhealthy = 2,
3120 /// Connection draining in progress. E.g.,
3121 /// `<<https://aws.amazon.com/blogs/aws/elb-connection-draining-remove-instances-from-service-with-care/>`_>
3122 /// or
3123 /// `<<https://cloud.google.com/compute/docs/load-balancing/enabling-connection-draining>`_.>
3124 /// This is interpreted by Envoy as ``UNHEALTHY``.
3125 Draining = 3,
3126 /// Health check timed out. This is part of HDS and is interpreted by Envoy as
3127 /// ``UNHEALTHY``.
3128 Timeout = 4,
3129 /// Degraded.
3130 Degraded = 5,
3131}
3132impl HealthStatus {
3133 /// String value of the enum field names used in the ProtoBuf definition.
3134 ///
3135 /// The values are not transformed in any way and thus are considered stable
3136 /// (if the ProtoBuf definition does not change) and safe for programmatic use.
3137 pub fn as_str_name(&self) -> &'static str {
3138 match self {
3139 Self::Unknown => "UNKNOWN",
3140 Self::Healthy => "HEALTHY",
3141 Self::Unhealthy => "UNHEALTHY",
3142 Self::Draining => "DRAINING",
3143 Self::Timeout => "TIMEOUT",
3144 Self::Degraded => "DEGRADED",
3145 }
3146 }
3147 /// Creates an enum from field names used in the ProtoBuf definition.
3148 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
3149 match value {
3150 "UNKNOWN" => Some(Self::Unknown),
3151 "HEALTHY" => Some(Self::Healthy),
3152 "UNHEALTHY" => Some(Self::Unhealthy),
3153 "DRAINING" => Some(Self::Draining),
3154 "TIMEOUT" => Some(Self::Timeout),
3155 "DEGRADED" => Some(Self::Degraded),
3156 _ => None,
3157 }
3158 }
3159}
3160/// \[#not-implemented-hide:\]
3161#[derive(Clone, Copy, PartialEq, ::prost::Message)]
3162pub struct TcpProtocolOptions {}
3163impl ::prost::Name for TcpProtocolOptions {
3164 const NAME: &'static str = "TcpProtocolOptions";
3165 const PACKAGE: &'static str = "envoy.config.core.v3";
3166 fn full_name() -> ::prost::alloc::string::String {
3167 "envoy.config.core.v3.TcpProtocolOptions".into()
3168 }
3169 fn type_url() -> ::prost::alloc::string::String {
3170 "type.googleapis.com/envoy.config.core.v3.TcpProtocolOptions".into()
3171 }
3172}
3173/// Config for keepalive probes in a QUIC connection.
3174/// Note that QUIC keep-alive probing packets work differently from HTTP/2 keep-alive PINGs in a sense that the probing packet
3175/// itself doesn't timeout waiting for a probing response. Quic has a shorter idle timeout than TCP, so it doesn't rely on such probing to discover dead connections. If the peer fails to respond, the connection will idle timeout eventually. Thus, they are configured differently from :ref:`connection_keepalive <envoy_v3_api_field_config.core.v3.Http2ProtocolOptions.connection_keepalive>`.
3176#[derive(Clone, Copy, PartialEq, ::prost::Message)]
3177pub struct QuicKeepAliveSettings {
3178 /// The max interval for a connection to send keep-alive probing packets (with PING or PATH_RESPONSE). The value should be smaller than :ref:`connection idle_timeout <envoy_v3_api_field_config.listener.v3.QuicProtocolOptions.idle_timeout>` to prevent idle timeout while not less than 1s to avoid throttling the connection or flooding the peer with probes.
3179 ///
3180 /// If :ref:`initial_interval <envoy_v3_api_field_config.core.v3.QuicKeepAliveSettings.initial_interval>` is absent or zero, a client connection will use this value to start probing.
3181 ///
3182 /// If zero, disable keepalive probing.
3183 /// If absent, use the QUICHE default interval to probe.
3184 #[prost(message, optional, tag = "1")]
3185 pub max_interval: ::core::option::Option<
3186 super::super::super::super::google::protobuf::Duration,
3187 >,
3188 /// The interval to send the first few keep-alive probing packets to prevent connection from hitting the idle timeout. Subsequent probes will be sent, each one with an interval exponentially longer than previous one, till it reaches :ref:`max_interval <envoy_v3_api_field_config.core.v3.QuicKeepAliveSettings.max_interval>`. And the probes afterwards will always use :ref:`max_interval <envoy_v3_api_field_config.core.v3.QuicKeepAliveSettings.max_interval>`.
3189 ///
3190 /// The value should be smaller than :ref:`connection idle_timeout <envoy_v3_api_field_config.listener.v3.QuicProtocolOptions.idle_timeout>` to prevent idle timeout and smaller than max_interval to take effect.
3191 ///
3192 /// If absent or zero, disable keepalive probing for a server connection. For a client connection, if :ref:`max_interval <envoy_v3_api_field_config.core.v3.QuicKeepAliveSettings.max_interval>` is also zero, do not keepalive, otherwise use max_interval or QUICHE default to probe all the time.
3193 #[prost(message, optional, tag = "2")]
3194 pub initial_interval: ::core::option::Option<
3195 super::super::super::super::google::protobuf::Duration,
3196 >,
3197}
3198impl ::prost::Name for QuicKeepAliveSettings {
3199 const NAME: &'static str = "QuicKeepAliveSettings";
3200 const PACKAGE: &'static str = "envoy.config.core.v3";
3201 fn full_name() -> ::prost::alloc::string::String {
3202 "envoy.config.core.v3.QuicKeepAliveSettings".into()
3203 }
3204 fn type_url() -> ::prost::alloc::string::String {
3205 "type.googleapis.com/envoy.config.core.v3.QuicKeepAliveSettings".into()
3206 }
3207}
3208/// QUIC protocol options which apply to both downstream and upstream connections.
3209/// \[#next-free-field: 9\]
3210#[derive(Clone, PartialEq, ::prost::Message)]
3211pub struct QuicProtocolOptions {
3212 /// Maximum number of streams that the client can negotiate per connection. 100
3213 /// if not specified.
3214 #[prost(message, optional, tag = "1")]
3215 pub max_concurrent_streams: ::core::option::Option<
3216 super::super::super::super::google::protobuf::UInt32Value,
3217 >,
3218 /// `Initial stream-level flow-control receive window
3219 /// <<https://tools.ietf.org/html/draft-ietf-quic-transport-34#section-4.1>`_> size. Valid values range from
3220 /// 1 to 16777216 (2^24, maximum supported by QUICHE) and defaults to 16777216 (16 * 1024 * 1024).
3221 ///
3222 /// NOTE: 16384 (2^14) is the minimum window size supported in Google QUIC. If configured smaller than it, we will use 16384 instead.
3223 /// QUICHE IETF Quic implementation supports 1 bytes window. We only support increasing the default window size now, so it's also the minimum.
3224 ///
3225 /// This field also acts as a soft limit on the number of bytes Envoy will buffer per-stream in the
3226 /// QUIC stream send and receive buffers. Once the buffer reaches this pointer, watermark callbacks will fire to
3227 /// stop the flow of data to the stream buffers.
3228 #[prost(message, optional, tag = "2")]
3229 pub initial_stream_window_size: ::core::option::Option<
3230 super::super::super::super::google::protobuf::UInt32Value,
3231 >,
3232 /// Similar to ``initial_stream_window_size``, but for connection-level
3233 /// flow-control. Valid values rage from 1 to 25165824 (24MB, maximum supported by QUICHE) and defaults
3234 /// to 25165824 (24 * 1024 * 1024).
3235 ///
3236 /// NOTE: 16384 (2^14) is the minimum window size supported in Google QUIC. We only support increasing the default
3237 /// window size now, so it's also the minimum.
3238 #[prost(message, optional, tag = "3")]
3239 pub initial_connection_window_size: ::core::option::Option<
3240 super::super::super::super::google::protobuf::UInt32Value,
3241 >,
3242 /// The number of timeouts that can occur before port migration is triggered for QUIC clients.
3243 /// This defaults to 4. If set to 0, port migration will not occur on path degrading.
3244 /// Timeout here refers to QUIC internal path degrading timeout mechanism, such as PTO.
3245 /// This has no effect on server sessions.
3246 #[prost(message, optional, tag = "4")]
3247 pub num_timeouts_to_trigger_port_migration: ::core::option::Option<
3248 super::super::super::super::google::protobuf::UInt32Value,
3249 >,
3250 /// Probes the peer at the configured interval to solicit traffic, i.e. ACK or PATH_RESPONSE, from the peer to push back connection idle timeout.
3251 /// If absent, use the default keepalive behavior of which a client connection sends PINGs every 15s, and a server connection doesn't do anything.
3252 #[prost(message, optional, tag = "5")]
3253 pub connection_keepalive: ::core::option::Option<QuicKeepAliveSettings>,
3254 /// A comma-separated list of strings representing QUIC connection options defined in
3255 /// `QUICHE <<https://github.com/google/quiche/blob/main/quiche/quic/core/crypto/crypto_protocol.h>`_> and to be sent by upstream connections.
3256 #[prost(string, tag = "6")]
3257 pub connection_options: ::prost::alloc::string::String,
3258 /// A comma-separated list of strings representing QUIC client connection options defined in
3259 /// `QUICHE <<https://github.com/google/quiche/blob/main/quiche/quic/core/crypto/crypto_protocol.h>`_> and to be sent by upstream connections.
3260 #[prost(string, tag = "7")]
3261 pub client_connection_options: ::prost::alloc::string::String,
3262 /// The duration that a QUIC connection stays idle before it closes itself. If this field is not present, QUICHE
3263 /// default 600s will be applied.
3264 /// For internal corporate network, a long timeout is often fine.
3265 /// But for client facing network, 30s is usually a good choice.
3266 #[prost(message, optional, tag = "8")]
3267 pub idle_network_timeout: ::core::option::Option<
3268 super::super::super::super::google::protobuf::Duration,
3269 >,
3270}
3271impl ::prost::Name for QuicProtocolOptions {
3272 const NAME: &'static str = "QuicProtocolOptions";
3273 const PACKAGE: &'static str = "envoy.config.core.v3";
3274 fn full_name() -> ::prost::alloc::string::String {
3275 "envoy.config.core.v3.QuicProtocolOptions".into()
3276 }
3277 fn type_url() -> ::prost::alloc::string::String {
3278 "type.googleapis.com/envoy.config.core.v3.QuicProtocolOptions".into()
3279 }
3280}
3281#[derive(Clone, PartialEq, ::prost::Message)]
3282pub struct UpstreamHttpProtocolOptions {
3283 /// Set transport socket `SNI <<https://en.wikipedia.org/wiki/Server_Name_Indication>`_> for new
3284 /// upstream connections based on the downstream HTTP host/authority header or any other arbitrary
3285 /// header when :ref:`override_auto_sni_header <envoy_v3_api_field_config.core.v3.UpstreamHttpProtocolOptions.override_auto_sni_header>`
3286 /// is set, as seen by the :ref:`router filter <config_http_filters_router>`.
3287 /// Does nothing if a filter before the http router filter sets the corresponding metadata.
3288 #[prost(bool, tag = "1")]
3289 pub auto_sni: bool,
3290 /// Automatic validate upstream presented certificate for new upstream connections based on the
3291 /// downstream HTTP host/authority header or any other arbitrary header when :ref:`override_auto_sni_header <envoy_v3_api_field_config.core.v3.UpstreamHttpProtocolOptions.override_auto_sni_header>`
3292 /// is set, as seen by the :ref:`router filter <config_http_filters_router>`.
3293 /// This field is intended to be set with ``auto_sni`` field.
3294 /// Does nothing if a filter before the http router filter sets the corresponding metadata.
3295 #[prost(bool, tag = "2")]
3296 pub auto_san_validation: bool,
3297 /// An optional alternative to the host/authority header to be used for setting the SNI value.
3298 /// It should be a valid downstream HTTP header, as seen by the
3299 /// :ref:`router filter <config_http_filters_router>`.
3300 /// If unset, host/authority header will be used for populating the SNI. If the specified header
3301 /// is not found or the value is empty, host/authority header will be used instead.
3302 /// This field is intended to be set with ``auto_sni`` and/or ``auto_san_validation`` fields.
3303 /// If none of these fields are set then setting this would be a no-op.
3304 /// Does nothing if a filter before the http router filter sets the corresponding metadata.
3305 #[prost(string, tag = "3")]
3306 pub override_auto_sni_header: ::prost::alloc::string::String,
3307}
3308impl ::prost::Name for UpstreamHttpProtocolOptions {
3309 const NAME: &'static str = "UpstreamHttpProtocolOptions";
3310 const PACKAGE: &'static str = "envoy.config.core.v3";
3311 fn full_name() -> ::prost::alloc::string::String {
3312 "envoy.config.core.v3.UpstreamHttpProtocolOptions".into()
3313 }
3314 fn type_url() -> ::prost::alloc::string::String {
3315 "type.googleapis.com/envoy.config.core.v3.UpstreamHttpProtocolOptions".into()
3316 }
3317}
3318/// Configures the alternate protocols cache which tracks alternate protocols that can be used to
3319/// make an HTTP connection to an origin server. See <https://tools.ietf.org/html/rfc7838> for
3320/// HTTP Alternative Services and <https://datatracker.ietf.org/doc/html/draft-ietf-dnsop-svcb-https-04>
3321/// for the "HTTPS" DNS resource record.
3322/// \[#next-free-field: 6\]
3323#[derive(Clone, PartialEq, ::prost::Message)]
3324pub struct AlternateProtocolsCacheOptions {
3325 /// The name of the cache. Multiple named caches allow independent alternate protocols cache
3326 /// configurations to operate within a single Envoy process using different configurations. All
3327 /// alternate protocols cache options with the same name *must* be equal in all fields when
3328 /// referenced from different configuration components. Configuration will fail to load if this is
3329 /// not the case.
3330 #[prost(string, tag = "1")]
3331 pub name: ::prost::alloc::string::String,
3332 /// The maximum number of entries that the cache will hold. If not specified defaults to 1024.
3333 ///
3334 /// .. note:
3335 ///
3336 /// The implementation is approximate and enforced independently on each worker thread, thus
3337 /// it is possible for the maximum entries in the cache to go slightly above the configured
3338 /// value depending on timing. This is similar to how other circuit breakers work.
3339 #[prost(message, optional, tag = "2")]
3340 pub max_entries: ::core::option::Option<
3341 super::super::super::super::google::protobuf::UInt32Value,
3342 >,
3343 /// Allows configuring a persistent
3344 /// :ref:`key value store <envoy_v3_api_msg_config.common.key_value.v3.KeyValueStoreConfig>` to flush
3345 /// alternate protocols entries to disk.
3346 /// This function is currently only supported if concurrency is 1
3347 /// Cached entries will take precedence over pre-populated entries below.
3348 #[prost(message, optional, tag = "3")]
3349 pub key_value_store_config: ::core::option::Option<TypedExtensionConfig>,
3350 /// Allows pre-populating the cache with entries, as described above.
3351 #[prost(message, repeated, tag = "4")]
3352 pub prepopulated_entries: ::prost::alloc::vec::Vec<
3353 alternate_protocols_cache_options::AlternateProtocolsCacheEntry,
3354 >,
3355 /// Optional list of hostnames suffixes for which Alt-Svc entries can be shared. For example, if
3356 /// this list contained the value ``.c.example.com``, then an Alt-Svc entry for ``foo.c.example.com``
3357 /// could be shared with ``bar.c.example.com`` but would not be shared with ``baz.example.com``. On
3358 /// the other hand, if the list contained the value ``.example.com`` then all three hosts could share
3359 /// Alt-Svc entries. Each entry must start with ``.``. If a hostname matches multiple suffixes, the
3360 /// first listed suffix will be used.
3361 ///
3362 /// Since lookup in this list is O(n), it is recommended that the number of suffixes be limited.
3363 /// \[#not-implemented-hide:\]
3364 #[prost(string, repeated, tag = "5")]
3365 pub canonical_suffixes: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
3366}
3367/// Nested message and enum types in `AlternateProtocolsCacheOptions`.
3368pub mod alternate_protocols_cache_options {
3369 /// Allows pre-populating the cache with HTTP/3 alternate protocols entries with a 7 day lifetime.
3370 /// This will cause Envoy to attempt HTTP/3 to those upstreams, even if the upstreams have not
3371 /// advertised HTTP/3 support. These entries will be overwritten by alt-svc
3372 /// response headers or cached values.
3373 /// As with regular cached entries, if the origin response would result in clearing an existing
3374 /// alternate protocol cache entry, pre-populated entries will also be cleared.
3375 /// Adding a cache entry with hostname=foo.com port=123 is the equivalent of getting
3376 /// response headers
3377 /// alt-svc: h3=:"123"; ma=86400" in a response to a request to foo.com:123
3378 #[derive(Clone, PartialEq, ::prost::Message)]
3379 pub struct AlternateProtocolsCacheEntry {
3380 /// The host name for the alternate protocol entry.
3381 #[prost(string, tag = "1")]
3382 pub hostname: ::prost::alloc::string::String,
3383 /// The port for the alternate protocol entry.
3384 #[prost(uint32, tag = "2")]
3385 pub port: u32,
3386 }
3387 impl ::prost::Name for AlternateProtocolsCacheEntry {
3388 const NAME: &'static str = "AlternateProtocolsCacheEntry";
3389 const PACKAGE: &'static str = "envoy.config.core.v3";
3390 fn full_name() -> ::prost::alloc::string::String {
3391 "envoy.config.core.v3.AlternateProtocolsCacheOptions.AlternateProtocolsCacheEntry"
3392 .into()
3393 }
3394 fn type_url() -> ::prost::alloc::string::String {
3395 "type.googleapis.com/envoy.config.core.v3.AlternateProtocolsCacheOptions.AlternateProtocolsCacheEntry"
3396 .into()
3397 }
3398 }
3399}
3400impl ::prost::Name for AlternateProtocolsCacheOptions {
3401 const NAME: &'static str = "AlternateProtocolsCacheOptions";
3402 const PACKAGE: &'static str = "envoy.config.core.v3";
3403 fn full_name() -> ::prost::alloc::string::String {
3404 "envoy.config.core.v3.AlternateProtocolsCacheOptions".into()
3405 }
3406 fn type_url() -> ::prost::alloc::string::String {
3407 "type.googleapis.com/envoy.config.core.v3.AlternateProtocolsCacheOptions".into()
3408 }
3409}
3410/// \[#next-free-field: 7\]
3411#[derive(Clone, Copy, PartialEq, ::prost::Message)]
3412pub struct HttpProtocolOptions {
3413 /// The idle timeout for connections. The idle timeout is defined as the
3414 /// period in which there are no active requests. When the
3415 /// idle timeout is reached the connection will be closed. If the connection is an HTTP/2
3416 /// downstream connection a drain sequence will occur prior to closing the connection, see
3417 /// :ref:`drain_timeout
3418 /// <envoy_v3_api_field_extensions.filters.network.http_connection_manager.v3.HttpConnectionManager.drain_timeout>`.
3419 /// Note that request based timeouts mean that HTTP/2 PINGs will not keep the connection alive.
3420 /// If not specified, this defaults to 1 hour. To disable idle timeouts explicitly set this to 0.
3421 ///
3422 /// .. warning::
3423 /// Disabling this timeout has a highly likelihood of yielding connection leaks due to lost TCP
3424 /// FIN packets, etc.
3425 ///
3426 /// If the :ref:`overload action <config_overload_manager_overload_actions>` "envoy.overload_actions.reduce_timeouts"
3427 /// is configured, this timeout is scaled for downstream connections according to the value for
3428 /// :ref:`HTTP_DOWNSTREAM_CONNECTION_IDLE <envoy_v3_api_enum_value_config.overload.v3.ScaleTimersOverloadActionConfig.TimerType.HTTP_DOWNSTREAM_CONNECTION_IDLE>`.
3429 #[prost(message, optional, tag = "1")]
3430 pub idle_timeout: ::core::option::Option<
3431 super::super::super::super::google::protobuf::Duration,
3432 >,
3433 /// The maximum duration of a connection. The duration is defined as a period since a connection
3434 /// was established. If not set, there is no max duration. When max_connection_duration is reached
3435 /// and if there are no active streams, the connection will be closed. If the connection is a
3436 /// downstream connection and there are any active streams, the drain sequence will kick-in,
3437 /// and the connection will be force-closed after the drain period. See :ref:`drain_timeout
3438 /// <envoy_v3_api_field_extensions.filters.network.http_connection_manager.v3.HttpConnectionManager.drain_timeout>`.
3439 #[prost(message, optional, tag = "3")]
3440 pub max_connection_duration: ::core::option::Option<
3441 super::super::super::super::google::protobuf::Duration,
3442 >,
3443 /// The maximum number of headers. If unconfigured, the default
3444 /// maximum number of request headers allowed is 100. Requests that exceed this limit will receive
3445 /// a 431 response for HTTP/1.x and cause a stream reset for HTTP/2.
3446 #[prost(message, optional, tag = "2")]
3447 pub max_headers_count: ::core::option::Option<
3448 super::super::super::super::google::protobuf::UInt32Value,
3449 >,
3450 /// Total duration to keep alive an HTTP request/response stream. If the time limit is reached the stream will be
3451 /// reset independent of any other timeouts. If not specified, this value is not set.
3452 #[prost(message, optional, tag = "4")]
3453 pub max_stream_duration: ::core::option::Option<
3454 super::super::super::super::google::protobuf::Duration,
3455 >,
3456 /// Action to take when a client request with a header name containing underscore characters is received.
3457 /// If this setting is not specified, the value defaults to ALLOW.
3458 /// Note: upstream responses are not affected by this setting.
3459 /// Note: this only affects client headers. It does not affect headers added
3460 /// by Envoy filters and does not have any impact if added to cluster config.
3461 #[prost(
3462 enumeration = "http_protocol_options::HeadersWithUnderscoresAction",
3463 tag = "5"
3464 )]
3465 pub headers_with_underscores_action: i32,
3466 /// Optional maximum requests for both upstream and downstream connections.
3467 /// If not specified, there is no limit.
3468 /// Setting this parameter to 1 will effectively disable keep alive.
3469 /// For HTTP/2 and HTTP/3, due to concurrent stream processing, the limit is approximate.
3470 #[prost(message, optional, tag = "6")]
3471 pub max_requests_per_connection: ::core::option::Option<
3472 super::super::super::super::google::protobuf::UInt32Value,
3473 >,
3474}
3475/// Nested message and enum types in `HttpProtocolOptions`.
3476pub mod http_protocol_options {
3477 /// Action to take when Envoy receives client request with header names containing underscore
3478 /// characters.
3479 /// Underscore character is allowed in header names by the RFC-7230 and this behavior is implemented
3480 /// as a security measure due to systems that treat '_' and '-' as interchangeable. Envoy by default allows client request headers with underscore
3481 /// characters.
3482 #[derive(
3483 Clone,
3484 Copy,
3485 Debug,
3486 PartialEq,
3487 Eq,
3488 Hash,
3489 PartialOrd,
3490 Ord,
3491 ::prost::Enumeration
3492 )]
3493 #[repr(i32)]
3494 pub enum HeadersWithUnderscoresAction {
3495 /// Allow headers with underscores. This is the default behavior.
3496 Allow = 0,
3497 /// Reject client request. HTTP/1 requests are rejected with the 400 status. HTTP/2 requests
3498 /// end with the stream reset. The "httpN.requests_rejected_with_underscores_in_headers" counter
3499 /// is incremented for each rejected request.
3500 RejectRequest = 1,
3501 /// Drop the client header with name containing underscores. The header is dropped before the filter chain is
3502 /// invoked and as such filters will not see dropped headers. The
3503 /// "httpN.dropped_headers_with_underscores" is incremented for each dropped header.
3504 DropHeader = 2,
3505 }
3506 impl HeadersWithUnderscoresAction {
3507 /// String value of the enum field names used in the ProtoBuf definition.
3508 ///
3509 /// The values are not transformed in any way and thus are considered stable
3510 /// (if the ProtoBuf definition does not change) and safe for programmatic use.
3511 pub fn as_str_name(&self) -> &'static str {
3512 match self {
3513 Self::Allow => "ALLOW",
3514 Self::RejectRequest => "REJECT_REQUEST",
3515 Self::DropHeader => "DROP_HEADER",
3516 }
3517 }
3518 /// Creates an enum from field names used in the ProtoBuf definition.
3519 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
3520 match value {
3521 "ALLOW" => Some(Self::Allow),
3522 "REJECT_REQUEST" => Some(Self::RejectRequest),
3523 "DROP_HEADER" => Some(Self::DropHeader),
3524 _ => None,
3525 }
3526 }
3527 }
3528}
3529impl ::prost::Name for HttpProtocolOptions {
3530 const NAME: &'static str = "HttpProtocolOptions";
3531 const PACKAGE: &'static str = "envoy.config.core.v3";
3532 fn full_name() -> ::prost::alloc::string::String {
3533 "envoy.config.core.v3.HttpProtocolOptions".into()
3534 }
3535 fn type_url() -> ::prost::alloc::string::String {
3536 "type.googleapis.com/envoy.config.core.v3.HttpProtocolOptions".into()
3537 }
3538}
3539/// \[#next-free-field: 11\]
3540#[derive(Clone, PartialEq, ::prost::Message)]
3541pub struct Http1ProtocolOptions {
3542 /// Handle HTTP requests with absolute URLs in the requests. These requests
3543 /// are generally sent by clients to forward/explicit proxies. This allows clients to configure
3544 /// envoy as their HTTP proxy. In Unix, for example, this is typically done by setting the
3545 /// ``http_proxy`` environment variable.
3546 #[prost(message, optional, tag = "1")]
3547 pub allow_absolute_url: ::core::option::Option<
3548 super::super::super::super::google::protobuf::BoolValue,
3549 >,
3550 /// Handle incoming HTTP/1.0 and HTTP 0.9 requests.
3551 /// This is off by default, and not fully standards compliant. There is support for pre-HTTP/1.1
3552 /// style connect logic, dechunking, and handling lack of client host iff
3553 /// ``default_host_for_http_10`` is configured.
3554 #[prost(bool, tag = "2")]
3555 pub accept_http_10: bool,
3556 /// A default host for HTTP/1.0 requests. This is highly suggested if ``accept_http_10`` is true as
3557 /// Envoy does not otherwise support HTTP/1.0 without a Host header.
3558 /// This is a no-op if ``accept_http_10`` is not true.
3559 #[prost(string, tag = "3")]
3560 pub default_host_for_http_10: ::prost::alloc::string::String,
3561 /// Describes how the keys for response headers should be formatted. By default, all header keys
3562 /// are lower cased.
3563 #[prost(message, optional, tag = "4")]
3564 pub header_key_format: ::core::option::Option<
3565 http1_protocol_options::HeaderKeyFormat,
3566 >,
3567 /// Enables trailers for HTTP/1. By default the HTTP/1 codec drops proxied trailers.
3568 ///
3569 /// .. attention::
3570 ///
3571 /// Note that this only happens when Envoy is chunk encoding which occurs when:
3572 /// - The request is HTTP/1.1.
3573 /// - Is neither a HEAD only request nor a HTTP Upgrade.
3574 /// - Not a response to a HEAD request.
3575 /// - The content length header is not present.
3576 #[prost(bool, tag = "5")]
3577 pub enable_trailers: bool,
3578 /// Allows Envoy to process requests/responses with both ``Content-Length`` and ``Transfer-Encoding``
3579 /// headers set. By default such messages are rejected, but if option is enabled - Envoy will
3580 /// remove Content-Length header and process message.
3581 /// See `RFC7230, sec. 3.3.3 <<https://tools.ietf.org/html/rfc7230#section-3.3.3>`_> for details.
3582 ///
3583 /// .. attention::
3584 /// Enabling this option might lead to request smuggling vulnerability, especially if traffic
3585 /// is proxied via multiple layers of proxies.
3586 /// [#comment:TODO: This field is ignored when the
3587 /// :ref:`header validation configuration <envoy_v3_api_field_extensions.filters.network.http_connection_manager.v3.HttpConnectionManager.typed_header_validation_config>`
3588 /// is present.]
3589 #[prost(bool, tag = "6")]
3590 pub allow_chunked_length: bool,
3591 /// Allows invalid HTTP messaging. When this option is false, then Envoy will terminate
3592 /// HTTP/1.1 connections upon receiving an invalid HTTP message. However,
3593 /// when this option is true, then Envoy will leave the HTTP/1.1 connection
3594 /// open where possible.
3595 /// If set, this overrides any HCM :ref:`stream_error_on_invalid_http_messaging
3596 /// <envoy_v3_api_field_extensions.filters.network.http_connection_manager.v3.HttpConnectionManager.stream_error_on_invalid_http_message>`.
3597 #[prost(message, optional, tag = "7")]
3598 pub override_stream_error_on_invalid_http_message: ::core::option::Option<
3599 super::super::super::super::google::protobuf::BoolValue,
3600 >,
3601 /// Allows sending fully qualified URLs when proxying the first line of the
3602 /// response. By default, Envoy will only send the path components in the first line.
3603 /// If this is true, Envoy will create a fully qualified URI composing scheme
3604 /// (inferred if not present), host (from the host/:authority header) and path
3605 /// (from first line or :path header).
3606 #[prost(bool, tag = "8")]
3607 pub send_fully_qualified_url: bool,
3608 /// \[#not-implemented-hide:\] Hiding so that field can be removed after BalsaParser is rolled out.
3609 /// If set, force HTTP/1 parser: BalsaParser if true, http-parser if false.
3610 /// If unset, HTTP/1 parser is selected based on
3611 /// envoy.reloadable_features.http1_use_balsa_parser.
3612 /// See issue #21245.
3613 #[prost(message, optional, tag = "9")]
3614 pub use_balsa_parser: ::core::option::Option<
3615 super::super::super::super::google::protobuf::BoolValue,
3616 >,
3617 /// \[#not-implemented-hide:\] Hiding so that field can be removed.
3618 /// If true, and BalsaParser is used (either `use_balsa_parser` above is true,
3619 /// or `envoy.reloadable_features.http1_use_balsa_parser` is true and
3620 /// `use_balsa_parser` is unset), then every non-empty method with only valid
3621 /// characters is accepted. Otherwise, methods not on the hard-coded list are
3622 /// rejected.
3623 /// Once UHV is enabled, this field should be removed, and BalsaParser should
3624 /// allow any method. UHV validates the method, rejecting empty string or
3625 /// invalid characters, and provides :ref:`restrict_http_methods
3626 /// <envoy_v3_api_field_extensions.http.header_validators.envoy_default.v3.HeaderValidatorConfig.restrict_http_methods>`
3627 /// to reject custom methods.
3628 #[prost(bool, tag = "10")]
3629 pub allow_custom_methods: bool,
3630}
3631/// Nested message and enum types in `Http1ProtocolOptions`.
3632pub mod http1_protocol_options {
3633 /// \[#next-free-field: 9\]
3634 #[derive(Clone, PartialEq, ::prost::Message)]
3635 pub struct HeaderKeyFormat {
3636 #[prost(oneof = "header_key_format::HeaderFormat", tags = "1, 8")]
3637 pub header_format: ::core::option::Option<header_key_format::HeaderFormat>,
3638 }
3639 /// Nested message and enum types in `HeaderKeyFormat`.
3640 pub mod header_key_format {
3641 #[derive(Clone, Copy, PartialEq, ::prost::Message)]
3642 pub struct ProperCaseWords {}
3643 impl ::prost::Name for ProperCaseWords {
3644 const NAME: &'static str = "ProperCaseWords";
3645 const PACKAGE: &'static str = "envoy.config.core.v3";
3646 fn full_name() -> ::prost::alloc::string::String {
3647 "envoy.config.core.v3.Http1ProtocolOptions.HeaderKeyFormat.ProperCaseWords"
3648 .into()
3649 }
3650 fn type_url() -> ::prost::alloc::string::String {
3651 "type.googleapis.com/envoy.config.core.v3.Http1ProtocolOptions.HeaderKeyFormat.ProperCaseWords"
3652 .into()
3653 }
3654 }
3655 #[derive(Clone, PartialEq, ::prost::Oneof)]
3656 pub enum HeaderFormat {
3657 /// Formats the header by proper casing words: the first character and any character following
3658 /// a special character will be capitalized if it's an alpha character. For example,
3659 /// "content-type" becomes "Content-Type", and "foo$b#$are" becomes "Foo$B#$Are".
3660 /// Note that while this results in most headers following conventional casing, certain headers
3661 /// are not covered. For example, the "TE" header will be formatted as "Te".
3662 #[prost(message, tag = "1")]
3663 ProperCaseWords(ProperCaseWords),
3664 /// Configuration for stateful formatter extensions that allow using received headers to
3665 /// affect the output of encoding headers. E.g., preserving case during proxying.
3666 /// \[#extension-category: envoy.http.stateful_header_formatters\]
3667 #[prost(message, tag = "8")]
3668 StatefulFormatter(super::super::TypedExtensionConfig),
3669 }
3670 }
3671 impl ::prost::Name for HeaderKeyFormat {
3672 const NAME: &'static str = "HeaderKeyFormat";
3673 const PACKAGE: &'static str = "envoy.config.core.v3";
3674 fn full_name() -> ::prost::alloc::string::String {
3675 "envoy.config.core.v3.Http1ProtocolOptions.HeaderKeyFormat".into()
3676 }
3677 fn type_url() -> ::prost::alloc::string::String {
3678 "type.googleapis.com/envoy.config.core.v3.Http1ProtocolOptions.HeaderKeyFormat"
3679 .into()
3680 }
3681 }
3682}
3683impl ::prost::Name for Http1ProtocolOptions {
3684 const NAME: &'static str = "Http1ProtocolOptions";
3685 const PACKAGE: &'static str = "envoy.config.core.v3";
3686 fn full_name() -> ::prost::alloc::string::String {
3687 "envoy.config.core.v3.Http1ProtocolOptions".into()
3688 }
3689 fn type_url() -> ::prost::alloc::string::String {
3690 "type.googleapis.com/envoy.config.core.v3.Http1ProtocolOptions".into()
3691 }
3692}
3693#[derive(Clone, Copy, PartialEq, ::prost::Message)]
3694pub struct KeepaliveSettings {
3695 /// Send HTTP/2 PING frames at this period, in order to test that the connection is still alive.
3696 /// If this is zero, interval PINGs will not be sent.
3697 #[prost(message, optional, tag = "1")]
3698 pub interval: ::core::option::Option<
3699 super::super::super::super::google::protobuf::Duration,
3700 >,
3701 /// How long to wait for a response to a keepalive PING. If a response is not received within this
3702 /// time period, the connection will be aborted. Note that in order to prevent the influence of
3703 /// Head-of-line (HOL) blocking the timeout period is extended when *any* frame is received on
3704 /// the connection, under the assumption that if a frame is received the connection is healthy.
3705 #[prost(message, optional, tag = "2")]
3706 pub timeout: ::core::option::Option<
3707 super::super::super::super::google::protobuf::Duration,
3708 >,
3709 /// A random jitter amount as a percentage of interval that will be added to each interval.
3710 /// A value of zero means there will be no jitter.
3711 /// The default value is 15%.
3712 #[prost(message, optional, tag = "3")]
3713 pub interval_jitter: ::core::option::Option<
3714 super::super::super::r#type::v3::Percent,
3715 >,
3716 /// If the connection has been idle for this duration, send a HTTP/2 ping ahead
3717 /// of new stream creation, to quickly detect dead connections.
3718 /// If this is zero, this type of PING will not be sent.
3719 /// If an interval ping is outstanding, a second ping will not be sent as the
3720 /// interval ping will determine if the connection is dead.
3721 ///
3722 /// The same feature for HTTP/3 is given by inheritance from QUICHE which uses :ref:`connection idle_timeout <envoy_v3_api_field_config.listener.v3.QuicProtocolOptions.idle_timeout>` and the current PTO of the connection to decide whether to probe before sending a new request.
3723 #[prost(message, optional, tag = "4")]
3724 pub connection_idle_interval: ::core::option::Option<
3725 super::super::super::super::google::protobuf::Duration,
3726 >,
3727}
3728impl ::prost::Name for KeepaliveSettings {
3729 const NAME: &'static str = "KeepaliveSettings";
3730 const PACKAGE: &'static str = "envoy.config.core.v3";
3731 fn full_name() -> ::prost::alloc::string::String {
3732 "envoy.config.core.v3.KeepaliveSettings".into()
3733 }
3734 fn type_url() -> ::prost::alloc::string::String {
3735 "type.googleapis.com/envoy.config.core.v3.KeepaliveSettings".into()
3736 }
3737}
3738/// \[#next-free-field: 17\]
3739#[derive(Clone, PartialEq, ::prost::Message)]
3740pub struct Http2ProtocolOptions {
3741 /// `Maximum table size <<https://httpwg.org/specs/rfc7541.html#rfc.section.4.2>`_>
3742 /// (in octets) that the encoder is permitted to use for the dynamic HPACK table. Valid values
3743 /// range from 0 to 4294967295 (2^32 - 1) and defaults to 4096. 0 effectively disables header
3744 /// compression.
3745 #[prost(message, optional, tag = "1")]
3746 pub hpack_table_size: ::core::option::Option<
3747 super::super::super::super::google::protobuf::UInt32Value,
3748 >,
3749 /// `Maximum concurrent streams <<https://httpwg.org/specs/rfc7540.html#rfc.section.5.1.2>`_>
3750 /// allowed for peer on one HTTP/2 connection. Valid values range from 1 to 2147483647 (2^31 - 1)
3751 /// and defaults to 2147483647.
3752 ///
3753 /// For upstream connections, this also limits how many streams Envoy will initiate concurrently
3754 /// on a single connection. If the limit is reached, Envoy may queue requests or establish
3755 /// additional connections (as allowed per circuit breaker limits).
3756 ///
3757 /// This acts as an upper bound: Envoy will lower the max concurrent streams allowed on a given
3758 /// connection based on upstream settings. Config dumps will reflect the configured upper bound,
3759 /// not the per-connection negotiated limits.
3760 #[prost(message, optional, tag = "2")]
3761 pub max_concurrent_streams: ::core::option::Option<
3762 super::super::super::super::google::protobuf::UInt32Value,
3763 >,
3764 /// `Initial stream-level flow-control window
3765 /// <<https://httpwg.org/specs/rfc7540.html#rfc.section.6.9.2>`_> size. Valid values range from 65535
3766 /// (2^16 - 1, HTTP/2 default) to 2147483647 (2^31 - 1, HTTP/2 maximum) and defaults to 268435456
3767 /// (256 * 1024 * 1024).
3768 ///
3769 /// NOTE: 65535 is the initial window size from HTTP/2 spec. We only support increasing the default
3770 /// window size now, so it's also the minimum.
3771 ///
3772 /// This field also acts as a soft limit on the number of bytes Envoy will buffer per-stream in the
3773 /// HTTP/2 codec buffers. Once the buffer reaches this pointer, watermark callbacks will fire to
3774 /// stop the flow of data to the codec buffers.
3775 #[prost(message, optional, tag = "3")]
3776 pub initial_stream_window_size: ::core::option::Option<
3777 super::super::super::super::google::protobuf::UInt32Value,
3778 >,
3779 /// Similar to ``initial_stream_window_size``, but for connection-level flow-control
3780 /// window. Currently, this has the same minimum/maximum/default as ``initial_stream_window_size``.
3781 #[prost(message, optional, tag = "4")]
3782 pub initial_connection_window_size: ::core::option::Option<
3783 super::super::super::super::google::protobuf::UInt32Value,
3784 >,
3785 /// Allows proxying Websocket and other upgrades over H2 connect.
3786 #[prost(bool, tag = "5")]
3787 pub allow_connect: bool,
3788 /// \[#not-implemented-hide:\] Hiding until Envoy has full metadata support.
3789 /// Still under implementation. DO NOT USE.
3790 ///
3791 /// Allows sending and receiving HTTP/2 METADATA frames. See [metadata
3792 /// docs](<https://github.com/envoyproxy/envoy/blob/main/source/docs/h2_metadata.md>) for more
3793 /// information.
3794 #[prost(bool, tag = "6")]
3795 pub allow_metadata: bool,
3796 /// Limit the number of pending outbound downstream frames of all types (frames that are waiting to
3797 /// be written into the socket). Exceeding this limit triggers flood mitigation and connection is
3798 /// terminated. The ``http2.outbound_flood`` stat tracks the number of terminated connections due
3799 /// to flood mitigation. The default limit is 10000.
3800 #[prost(message, optional, tag = "7")]
3801 pub max_outbound_frames: ::core::option::Option<
3802 super::super::super::super::google::protobuf::UInt32Value,
3803 >,
3804 /// Limit the number of pending outbound downstream frames of types PING, SETTINGS and RST_STREAM,
3805 /// preventing high memory utilization when receiving continuous stream of these frames. Exceeding
3806 /// this limit triggers flood mitigation and connection is terminated. The
3807 /// ``http2.outbound_control_flood`` stat tracks the number of terminated connections due to flood
3808 /// mitigation. The default limit is 1000.
3809 #[prost(message, optional, tag = "8")]
3810 pub max_outbound_control_frames: ::core::option::Option<
3811 super::super::super::super::google::protobuf::UInt32Value,
3812 >,
3813 /// Limit the number of consecutive inbound frames of types HEADERS, CONTINUATION and DATA with an
3814 /// empty payload and no end stream flag. Those frames have no legitimate use and are abusive, but
3815 /// might be a result of a broken HTTP/2 implementation. The `http2.inbound_empty_frames_flood``
3816 /// stat tracks the number of connections terminated due to flood mitigation.
3817 /// Setting this to 0 will terminate connection upon receiving first frame with an empty payload
3818 /// and no end stream flag. The default limit is 1.
3819 #[prost(message, optional, tag = "9")]
3820 pub max_consecutive_inbound_frames_with_empty_payload: ::core::option::Option<
3821 super::super::super::super::google::protobuf::UInt32Value,
3822 >,
3823 /// Limit the number of inbound PRIORITY frames allowed per each opened stream. If the number
3824 /// of PRIORITY frames received over the lifetime of connection exceeds the value calculated
3825 /// using this formula::
3826 ///
3827 /// ``max_inbound_priority_frames_per_stream`` * (1 + ``opened_streams``)
3828 ///
3829 /// the connection is terminated. For downstream connections the ``opened_streams`` is incremented when
3830 /// Envoy receives complete response headers from the upstream server. For upstream connection the
3831 /// ``opened_streams`` is incremented when Envoy send the HEADERS frame for a new stream. The
3832 /// ``http2.inbound_priority_frames_flood`` stat tracks
3833 /// the number of connections terminated due to flood mitigation. The default limit is 100.
3834 #[prost(message, optional, tag = "10")]
3835 pub max_inbound_priority_frames_per_stream: ::core::option::Option<
3836 super::super::super::super::google::protobuf::UInt32Value,
3837 >,
3838 /// Limit the number of inbound WINDOW_UPDATE frames allowed per DATA frame sent. If the number
3839 /// of WINDOW_UPDATE frames received over the lifetime of connection exceeds the value calculated
3840 /// using this formula::
3841 ///
3842 /// 5 + 2 * (``opened_streams`` +
3843 /// ``max_inbound_window_update_frames_per_data_frame_sent`` * ``outbound_data_frames``)
3844 ///
3845 /// the connection is terminated. For downstream connections the ``opened_streams`` is incremented when
3846 /// Envoy receives complete response headers from the upstream server. For upstream connections the
3847 /// ``opened_streams`` is incremented when Envoy sends the HEADERS frame for a new stream. The
3848 /// ``http2.inbound_priority_frames_flood`` stat tracks the number of connections terminated due to
3849 /// flood mitigation. The default max_inbound_window_update_frames_per_data_frame_sent value is 10.
3850 /// Setting this to 1 should be enough to support HTTP/2 implementations with basic flow control,
3851 /// but more complex implementations that try to estimate available bandwidth require at least 2.
3852 #[prost(message, optional, tag = "11")]
3853 pub max_inbound_window_update_frames_per_data_frame_sent: ::core::option::Option<
3854 super::super::super::super::google::protobuf::UInt32Value,
3855 >,
3856 /// Allows invalid HTTP messaging and headers. When this option is disabled (default), then
3857 /// the whole HTTP/2 connection is terminated upon receiving invalid HEADERS frame. However,
3858 /// when this option is enabled, only the offending stream is terminated.
3859 ///
3860 /// This is overridden by HCM :ref:`stream_error_on_invalid_http_messaging
3861 /// <envoy_v3_api_field_extensions.filters.network.http_connection_manager.v3.HttpConnectionManager.stream_error_on_invalid_http_message>`
3862 /// iff present.
3863 ///
3864 /// This is deprecated in favor of :ref:`override_stream_error_on_invalid_http_message
3865 /// <envoy_v3_api_field_config.core.v3.Http2ProtocolOptions.override_stream_error_on_invalid_http_message>`
3866 ///
3867 /// See `RFC7540, sec. 8.1 <<https://tools.ietf.org/html/rfc7540#section-8.1>`_> for details.
3868 #[deprecated]
3869 #[prost(bool, tag = "12")]
3870 pub stream_error_on_invalid_http_messaging: bool,
3871 /// Allows invalid HTTP messaging and headers. When this option is disabled (default), then
3872 /// the whole HTTP/2 connection is terminated upon receiving invalid HEADERS frame. However,
3873 /// when this option is enabled, only the offending stream is terminated.
3874 ///
3875 /// This overrides any HCM :ref:`stream_error_on_invalid_http_messaging
3876 /// <envoy_v3_api_field_extensions.filters.network.http_connection_manager.v3.HttpConnectionManager.stream_error_on_invalid_http_message>`
3877 ///
3878 /// See `RFC7540, sec. 8.1 <<https://tools.ietf.org/html/rfc7540#section-8.1>`_> for details.
3879 #[prost(message, optional, tag = "14")]
3880 pub override_stream_error_on_invalid_http_message: ::core::option::Option<
3881 super::super::super::super::google::protobuf::BoolValue,
3882 >,
3883 /// \[#not-implemented-hide:\]
3884 /// Specifies SETTINGS frame parameters to be sent to the peer, with two exceptions:
3885 ///
3886 /// 1. SETTINGS_ENABLE_PUSH (0x2) is not configurable as HTTP/2 server push is not supported by
3887 /// Envoy.
3888 ///
3889 /// 2. SETTINGS_ENABLE_CONNECT_PROTOCOL (0x8) is only configurable through the named field
3890 /// 'allow_connect'.
3891 ///
3892 /// Note that custom parameters specified through this field can not also be set in the
3893 /// corresponding named parameters:
3894 ///
3895 /// .. code-block:: text
3896 ///
3897 /// ID Field Name
3898 /// ----------------
3899 /// 0x1 hpack_table_size
3900 /// 0x3 max_concurrent_streams
3901 /// 0x4 initial_stream_window_size
3902 ///
3903 /// Collisions will trigger config validation failure on load/update. Likewise, inconsistencies
3904 /// between custom parameters with the same identifier will trigger a failure.
3905 ///
3906 /// See `IANA HTTP/2 Settings
3907 /// <<https://www.iana.org/assignments/http2-parameters/http2-parameters.xhtml#settings>`_> for
3908 /// standardized identifiers.
3909 #[prost(message, repeated, tag = "13")]
3910 pub custom_settings_parameters: ::prost::alloc::vec::Vec<
3911 http2_protocol_options::SettingsParameter,
3912 >,
3913 /// Send HTTP/2 PING frames to verify that the connection is still healthy. If the remote peer
3914 /// does not respond within the configured timeout, the connection will be aborted.
3915 #[prost(message, optional, tag = "15")]
3916 pub connection_keepalive: ::core::option::Option<KeepaliveSettings>,
3917 /// \[#not-implemented-hide:\] Hiding so that the field can be removed after oghttp2 is rolled out.
3918 /// If set, force use of a particular HTTP/2 codec: oghttp2 if true, nghttp2 if false.
3919 /// If unset, HTTP/2 codec is selected based on envoy.reloadable_features.http2_use_oghttp2.
3920 #[prost(message, optional, tag = "16")]
3921 pub use_oghttp2_codec: ::core::option::Option<
3922 super::super::super::super::google::protobuf::BoolValue,
3923 >,
3924}
3925/// Nested message and enum types in `Http2ProtocolOptions`.
3926pub mod http2_protocol_options {
3927 /// Defines a parameter to be sent in the SETTINGS frame.
3928 /// See `RFC7540, sec. 6.5.1 <<https://tools.ietf.org/html/rfc7540#section-6.5.1>`_> for details.
3929 #[derive(Clone, Copy, PartialEq, ::prost::Message)]
3930 pub struct SettingsParameter {
3931 /// The 16 bit parameter identifier.
3932 #[prost(message, optional, tag = "1")]
3933 pub identifier: ::core::option::Option<
3934 super::super::super::super::super::google::protobuf::UInt32Value,
3935 >,
3936 /// The 32 bit parameter value.
3937 #[prost(message, optional, tag = "2")]
3938 pub value: ::core::option::Option<
3939 super::super::super::super::super::google::protobuf::UInt32Value,
3940 >,
3941 }
3942 impl ::prost::Name for SettingsParameter {
3943 const NAME: &'static str = "SettingsParameter";
3944 const PACKAGE: &'static str = "envoy.config.core.v3";
3945 fn full_name() -> ::prost::alloc::string::String {
3946 "envoy.config.core.v3.Http2ProtocolOptions.SettingsParameter".into()
3947 }
3948 fn type_url() -> ::prost::alloc::string::String {
3949 "type.googleapis.com/envoy.config.core.v3.Http2ProtocolOptions.SettingsParameter"
3950 .into()
3951 }
3952 }
3953}
3954impl ::prost::Name for Http2ProtocolOptions {
3955 const NAME: &'static str = "Http2ProtocolOptions";
3956 const PACKAGE: &'static str = "envoy.config.core.v3";
3957 fn full_name() -> ::prost::alloc::string::String {
3958 "envoy.config.core.v3.Http2ProtocolOptions".into()
3959 }
3960 fn type_url() -> ::prost::alloc::string::String {
3961 "type.googleapis.com/envoy.config.core.v3.Http2ProtocolOptions".into()
3962 }
3963}
3964/// \[#not-implemented-hide:\]
3965#[derive(Clone, PartialEq, ::prost::Message)]
3966pub struct GrpcProtocolOptions {
3967 #[prost(message, optional, tag = "1")]
3968 pub http2_protocol_options: ::core::option::Option<Http2ProtocolOptions>,
3969}
3970impl ::prost::Name for GrpcProtocolOptions {
3971 const NAME: &'static str = "GrpcProtocolOptions";
3972 const PACKAGE: &'static str = "envoy.config.core.v3";
3973 fn full_name() -> ::prost::alloc::string::String {
3974 "envoy.config.core.v3.GrpcProtocolOptions".into()
3975 }
3976 fn type_url() -> ::prost::alloc::string::String {
3977 "type.googleapis.com/envoy.config.core.v3.GrpcProtocolOptions".into()
3978 }
3979}
3980/// A message which allows using HTTP/3.
3981/// \[#next-free-field: 7\]
3982#[derive(Clone, PartialEq, ::prost::Message)]
3983pub struct Http3ProtocolOptions {
3984 #[prost(message, optional, tag = "1")]
3985 pub quic_protocol_options: ::core::option::Option<QuicProtocolOptions>,
3986 /// Allows invalid HTTP messaging and headers. When this option is disabled (default), then
3987 /// the whole HTTP/3 connection is terminated upon receiving invalid HEADERS frame. However,
3988 /// when this option is enabled, only the offending stream is terminated.
3989 ///
3990 /// If set, this overrides any HCM :ref:`stream_error_on_invalid_http_messaging
3991 /// <envoy_v3_api_field_extensions.filters.network.http_connection_manager.v3.HttpConnectionManager.stream_error_on_invalid_http_message>`.
3992 #[prost(message, optional, tag = "2")]
3993 pub override_stream_error_on_invalid_http_message: ::core::option::Option<
3994 super::super::super::super::google::protobuf::BoolValue,
3995 >,
3996 /// Allows proxying Websocket and other upgrades over HTTP/3 CONNECT using
3997 /// the header mechanisms from the `HTTP/2 extended connect RFC
3998 /// <<https://datatracker.ietf.org/doc/html/rfc8441>`_>
3999 /// and settings `proposed for HTTP/3
4000 /// <<https://datatracker.ietf.org/doc/draft-ietf-httpbis-h3-websockets/>`_>
4001 /// Note that HTTP/3 CONNECT is not yet an RFC.
4002 #[prost(bool, tag = "5")]
4003 pub allow_extended_connect: bool,
4004 /// \[#not-implemented-hide:\] Hiding until Envoy has full metadata support.
4005 /// Still under implementation. DO NOT USE.
4006 ///
4007 /// Allows sending and receiving HTTP/3 METADATA frames. See [metadata
4008 /// docs](<https://github.com/envoyproxy/envoy/blob/main/source/docs/h2_metadata.md>) for more
4009 /// information.
4010 #[prost(bool, tag = "6")]
4011 pub allow_metadata: bool,
4012}
4013impl ::prost::Name for Http3ProtocolOptions {
4014 const NAME: &'static str = "Http3ProtocolOptions";
4015 const PACKAGE: &'static str = "envoy.config.core.v3";
4016 fn full_name() -> ::prost::alloc::string::String {
4017 "envoy.config.core.v3.Http3ProtocolOptions".into()
4018 }
4019 fn type_url() -> ::prost::alloc::string::String {
4020 "type.googleapis.com/envoy.config.core.v3.Http3ProtocolOptions".into()
4021 }
4022}
4023/// A message to control transformations to the :scheme header
4024#[derive(Clone, PartialEq, ::prost::Message)]
4025pub struct SchemeHeaderTransformation {
4026 /// Set the Scheme header to match the upstream transport protocol. For example, should a
4027 /// request be sent to the upstream over TLS, the scheme header will be set to "https". Should the
4028 /// request be sent over plaintext, the scheme header will be set to "http".
4029 /// If scheme_to_overwrite is set, this field is not used.
4030 #[prost(bool, tag = "2")]
4031 pub match_upstream: bool,
4032 #[prost(oneof = "scheme_header_transformation::Transformation", tags = "1")]
4033 pub transformation: ::core::option::Option<
4034 scheme_header_transformation::Transformation,
4035 >,
4036}
4037/// Nested message and enum types in `SchemeHeaderTransformation`.
4038pub mod scheme_header_transformation {
4039 #[derive(Clone, PartialEq, ::prost::Oneof)]
4040 pub enum Transformation {
4041 /// Overwrite any Scheme header with the contents of this string.
4042 /// If set, takes precedence over match_upstream.
4043 #[prost(string, tag = "1")]
4044 SchemeToOverwrite(::prost::alloc::string::String),
4045 }
4046}
4047impl ::prost::Name for SchemeHeaderTransformation {
4048 const NAME: &'static str = "SchemeHeaderTransformation";
4049 const PACKAGE: &'static str = "envoy.config.core.v3";
4050 fn full_name() -> ::prost::alloc::string::String {
4051 "envoy.config.core.v3.SchemeHeaderTransformation".into()
4052 }
4053 fn type_url() -> ::prost::alloc::string::String {
4054 "type.googleapis.com/envoy.config.core.v3.SchemeHeaderTransformation".into()
4055 }
4056}
4057/// Configuration of DNS resolver option flags which control the behavior of the DNS resolver.
4058#[derive(Clone, Copy, PartialEq, ::prost::Message)]
4059pub struct DnsResolverOptions {
4060 /// Use TCP for all DNS queries instead of the default protocol UDP.
4061 #[prost(bool, tag = "1")]
4062 pub use_tcp_for_dns_lookups: bool,
4063 /// Do not use the default search domains; only query hostnames as-is or as aliases.
4064 #[prost(bool, tag = "2")]
4065 pub no_default_search_domain: bool,
4066}
4067impl ::prost::Name for DnsResolverOptions {
4068 const NAME: &'static str = "DnsResolverOptions";
4069 const PACKAGE: &'static str = "envoy.config.core.v3";
4070 fn full_name() -> ::prost::alloc::string::String {
4071 "envoy.config.core.v3.DnsResolverOptions".into()
4072 }
4073 fn type_url() -> ::prost::alloc::string::String {
4074 "type.googleapis.com/envoy.config.core.v3.DnsResolverOptions".into()
4075 }
4076}
4077/// DNS resolution configuration which includes the underlying dns resolver addresses and options.
4078#[derive(Clone, PartialEq, ::prost::Message)]
4079pub struct DnsResolutionConfig {
4080 /// A list of dns resolver addresses. If specified, the DNS client library will perform resolution
4081 /// via the underlying DNS resolvers. Otherwise, the default system resolvers
4082 /// (e.g., /etc/resolv.conf) will be used.
4083 #[prost(message, repeated, tag = "1")]
4084 pub resolvers: ::prost::alloc::vec::Vec<Address>,
4085 /// Configuration of DNS resolver option flags which control the behavior of the DNS resolver.
4086 #[prost(message, optional, tag = "2")]
4087 pub dns_resolver_options: ::core::option::Option<DnsResolverOptions>,
4088}
4089impl ::prost::Name for DnsResolutionConfig {
4090 const NAME: &'static str = "DnsResolutionConfig";
4091 const PACKAGE: &'static str = "envoy.config.core.v3";
4092 fn full_name() -> ::prost::alloc::string::String {
4093 "envoy.config.core.v3.DnsResolutionConfig".into()
4094 }
4095 fn type_url() -> ::prost::alloc::string::String {
4096 "type.googleapis.com/envoy.config.core.v3.DnsResolutionConfig".into()
4097 }
4098}
4099/// Generic UDP socket configuration.
4100#[derive(Clone, Copy, PartialEq, ::prost::Message)]
4101pub struct UdpSocketConfig {
4102 /// The maximum size of received UDP datagrams. Using a larger size will cause Envoy to allocate
4103 /// more memory per socket. Received datagrams above this size will be dropped. If not set
4104 /// defaults to 1500 bytes.
4105 #[prost(message, optional, tag = "1")]
4106 pub max_rx_datagram_size: ::core::option::Option<
4107 super::super::super::super::google::protobuf::UInt64Value,
4108 >,
4109 /// Configures whether Generic Receive Offload (GRO)
4110 /// <<https://en.wikipedia.org/wiki/Large_receive_offload>_> is preferred when reading from the
4111 /// UDP socket. The default is context dependent and is documented where UdpSocketConfig is used.
4112 /// This option affects performance but not functionality. If GRO is not supported by the operating
4113 /// system, non-GRO receive will be used.
4114 #[prost(message, optional, tag = "2")]
4115 pub prefer_gro: ::core::option::Option<
4116 super::super::super::super::google::protobuf::BoolValue,
4117 >,
4118}
4119impl ::prost::Name for UdpSocketConfig {
4120 const NAME: &'static str = "UdpSocketConfig";
4121 const PACKAGE: &'static str = "envoy.config.core.v3";
4122 fn full_name() -> ::prost::alloc::string::String {
4123 "envoy.config.core.v3.UdpSocketConfig".into()
4124 }
4125 fn type_url() -> ::prost::alloc::string::String {
4126 "type.googleapis.com/envoy.config.core.v3.UdpSocketConfig".into()
4127 }
4128}
4129/// A list of gRPC methods which can be used as an allowlist, for example.
4130#[derive(Clone, PartialEq, ::prost::Message)]
4131pub struct GrpcMethodList {
4132 #[prost(message, repeated, tag = "1")]
4133 pub services: ::prost::alloc::vec::Vec<grpc_method_list::Service>,
4134}
4135/// Nested message and enum types in `GrpcMethodList`.
4136pub mod grpc_method_list {
4137 #[derive(Clone, PartialEq, ::prost::Message)]
4138 pub struct Service {
4139 /// The name of the gRPC service.
4140 #[prost(string, tag = "1")]
4141 pub name: ::prost::alloc::string::String,
4142 /// The names of the gRPC methods in this service.
4143 #[prost(string, repeated, tag = "2")]
4144 pub method_names: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
4145 }
4146 impl ::prost::Name for Service {
4147 const NAME: &'static str = "Service";
4148 const PACKAGE: &'static str = "envoy.config.core.v3";
4149 fn full_name() -> ::prost::alloc::string::String {
4150 "envoy.config.core.v3.GrpcMethodList.Service".into()
4151 }
4152 fn type_url() -> ::prost::alloc::string::String {
4153 "type.googleapis.com/envoy.config.core.v3.GrpcMethodList.Service".into()
4154 }
4155 }
4156}
4157impl ::prost::Name for GrpcMethodList {
4158 const NAME: &'static str = "GrpcMethodList";
4159 const PACKAGE: &'static str = "envoy.config.core.v3";
4160 fn full_name() -> ::prost::alloc::string::String {
4161 "envoy.config.core.v3.GrpcMethodList".into()
4162 }
4163 fn type_url() -> ::prost::alloc::string::String {
4164 "type.googleapis.com/envoy.config.core.v3.GrpcMethodList".into()
4165 }
4166}
4167/// HTTP service configuration.
4168#[derive(Clone, PartialEq, ::prost::Message)]
4169pub struct HttpService {
4170 /// The service's HTTP URI. For example:
4171 ///
4172 /// .. code-block:: yaml
4173 ///
4174 /// http_uri:
4175 /// uri: <https://www.myserviceapi.com/v1/data>
4176 /// cluster: www.myserviceapi.com|443
4177 ///
4178 #[prost(message, optional, tag = "1")]
4179 pub http_uri: ::core::option::Option<HttpUri>,
4180 /// Specifies a list of HTTP headers that should be added to each request
4181 /// handled by this virtual host.
4182 #[prost(message, repeated, tag = "2")]
4183 pub request_headers_to_add: ::prost::alloc::vec::Vec<HeaderValueOption>,
4184}
4185impl ::prost::Name for HttpService {
4186 const NAME: &'static str = "HttpService";
4187 const PACKAGE: &'static str = "envoy.config.core.v3";
4188 fn full_name() -> ::prost::alloc::string::String {
4189 "envoy.config.core.v3.HttpService".into()
4190 }
4191 fn type_url() -> ::prost::alloc::string::String {
4192 "type.googleapis.com/envoy.config.core.v3.HttpService".into()
4193 }
4194}
4195/// Optional configuration options to be used with json_format.
4196#[derive(Clone, Copy, PartialEq, ::prost::Message)]
4197pub struct JsonFormatOptions {
4198 /// The output JSON string properties will be sorted.
4199 #[prost(bool, tag = "1")]
4200 pub sort_properties: bool,
4201}
4202impl ::prost::Name for JsonFormatOptions {
4203 const NAME: &'static str = "JsonFormatOptions";
4204 const PACKAGE: &'static str = "envoy.config.core.v3";
4205 fn full_name() -> ::prost::alloc::string::String {
4206 "envoy.config.core.v3.JsonFormatOptions".into()
4207 }
4208 fn type_url() -> ::prost::alloc::string::String {
4209 "type.googleapis.com/envoy.config.core.v3.JsonFormatOptions".into()
4210 }
4211}
4212/// Configuration to use multiple :ref:`command operators <config_access_log_command_operators>`
4213/// to generate a new string in either plain text or JSON format.
4214/// \[#next-free-field: 8\]
4215#[derive(Clone, PartialEq, ::prost::Message)]
4216pub struct SubstitutionFormatString {
4217 /// If set to true, when command operators are evaluated to null,
4218 ///
4219 /// * for ``text_format``, the output of the empty operator is changed from ``-`` to an
4220 /// empty string, so that empty values are omitted entirely.
4221 /// * for ``json_format`` the keys with null values are omitted in the output structure.
4222 #[prost(bool, tag = "3")]
4223 pub omit_empty_values: bool,
4224 /// Specify a ``content_type`` field.
4225 /// If this field is not set then ``text/plain`` is used for ``text_format`` and
4226 /// ``application/json`` is used for ``json_format``.
4227 ///
4228 /// .. validated-code-block:: yaml
4229 /// :type-name: envoy.config.core.v3.SubstitutionFormatString
4230 ///
4231 /// content_type: "text/html; charset=UTF-8"
4232 ///
4233 #[prost(string, tag = "4")]
4234 pub content_type: ::prost::alloc::string::String,
4235 /// Specifies a collection of Formatter plugins that can be called from the access log configuration.
4236 /// See the formatters extensions documentation for details.
4237 /// \[#extension-category: envoy.formatter\]
4238 #[prost(message, repeated, tag = "6")]
4239 pub formatters: ::prost::alloc::vec::Vec<TypedExtensionConfig>,
4240 /// If json_format is used, the options will be applied to the output JSON string.
4241 #[prost(message, optional, tag = "7")]
4242 pub json_format_options: ::core::option::Option<JsonFormatOptions>,
4243 #[prost(oneof = "substitution_format_string::Format", tags = "1, 2, 5")]
4244 pub format: ::core::option::Option<substitution_format_string::Format>,
4245}
4246/// Nested message and enum types in `SubstitutionFormatString`.
4247pub mod substitution_format_string {
4248 #[derive(Clone, PartialEq, ::prost::Oneof)]
4249 pub enum Format {
4250 /// Specify a format with command operators to form a text string.
4251 /// Its details is described in :ref:`format string<config_access_log_format_strings>`.
4252 ///
4253 /// For example, setting ``text_format`` like below,
4254 ///
4255 /// .. validated-code-block:: yaml
4256 /// :type-name: envoy.config.core.v3.SubstitutionFormatString
4257 ///
4258 /// text_format: "%LOCAL_REPLY_BODY%:%RESPONSE_CODE%:path=%REQ(:path)%\n"
4259 ///
4260 /// generates plain text similar to:
4261 ///
4262 /// .. code-block:: text
4263 ///
4264 /// upstream connect error:503:path=/foo
4265 ///
4266 /// Deprecated in favor of :ref:`text_format_source <envoy_v3_api_field_config.core.v3.SubstitutionFormatString.text_format_source>`. To migrate text format strings, use the :ref:`inline_string <envoy_v3_api_field_config.core.v3.DataSource.inline_string>` field.
4267 #[prost(string, tag = "1")]
4268 TextFormat(::prost::alloc::string::String),
4269 /// Specify a format with command operators to form a JSON string.
4270 /// Its details is described in :ref:`format dictionary<config_access_log_format_dictionaries>`.
4271 /// Values are rendered as strings, numbers, or boolean values as appropriate.
4272 /// Nested JSON objects may be produced by some command operators (e.g. FILTER_STATE or DYNAMIC_METADATA).
4273 /// See the documentation for a specific command operator for details.
4274 ///
4275 /// .. validated-code-block:: yaml
4276 /// :type-name: envoy.config.core.v3.SubstitutionFormatString
4277 ///
4278 /// json_format:
4279 /// status: "%RESPONSE_CODE%"
4280 /// message: "%LOCAL_REPLY_BODY%"
4281 ///
4282 /// The following JSON object would be created:
4283 ///
4284 /// .. code-block:: json
4285 ///
4286 /// {
4287 /// "status": 500,
4288 /// "message": "My error message"
4289 /// }
4290 ///
4291 #[prost(message, tag = "2")]
4292 JsonFormat(super::super::super::super::super::google::protobuf::Struct),
4293 /// Specify a format with command operators to form a text string.
4294 /// Its details is described in :ref:`format string<config_access_log_format_strings>`.
4295 ///
4296 /// For example, setting ``text_format`` like below,
4297 ///
4298 /// .. validated-code-block:: yaml
4299 /// :type-name: envoy.config.core.v3.SubstitutionFormatString
4300 ///
4301 /// text_format_source:
4302 /// inline_string: "%LOCAL_REPLY_BODY%:%RESPONSE_CODE%:path=%REQ(:path)%\n"
4303 ///
4304 /// generates plain text similar to:
4305 ///
4306 /// .. code-block:: text
4307 ///
4308 /// upstream connect error:503:path=/foo
4309 ///
4310 #[prost(message, tag = "5")]
4311 TextFormatSource(super::DataSource),
4312 }
4313}
4314impl ::prost::Name for SubstitutionFormatString {
4315 const NAME: &'static str = "SubstitutionFormatString";
4316 const PACKAGE: &'static str = "envoy.config.core.v3";
4317 fn full_name() -> ::prost::alloc::string::String {
4318 "envoy.config.core.v3.SubstitutionFormatString".into()
4319 }
4320 fn type_url() -> ::prost::alloc::string::String {
4321 "type.googleapis.com/envoy.config.core.v3.SubstitutionFormatString".into()
4322 }
4323}