xds_api/generated/
envoy.config.bootstrap.v3.rs

1// This file is @generated by prost-build.
2/// Bootstrap :ref:`configuration overview <config_overview_bootstrap>`.
3/// \[#next-free-field: 42\]
4#[derive(Clone, PartialEq, ::prost::Message)]
5pub struct Bootstrap {
6    /// Node identity to present to the management server and for instance
7    /// identification purposes (e.g. in generated headers).
8    #[prost(message, optional, tag = "1")]
9    pub node: ::core::option::Option<super::super::core::v3::Node>,
10    /// A list of :ref:`Node <envoy_v3_api_msg_config.core.v3.Node>` field names
11    /// that will be included in the context parameters of the effective
12    /// xdstp:// URL that is sent in a discovery request when resource
13    /// locators are used for LDS/CDS. Any non-string field will have its JSON
14    /// encoding set as the context parameter value, with the exception of
15    /// metadata, which will be flattened (see example below). The supported field
16    /// names are:
17    /// - "cluster"
18    /// - "id"
19    /// - "locality.region"
20    /// - "locality.sub_zone"
21    /// - "locality.zone"
22    /// - "metadata"
23    /// - "user_agent_build_version.metadata"
24    /// - "user_agent_build_version.version"
25    /// - "user_agent_name"
26    /// - "user_agent_version"
27    ///
28    /// The node context parameters act as a base layer dictionary for the context
29    /// parameters (i.e. more specific resource specific context parameters will
30    /// override). Field names will be prefixed with “udpa.node.” when included in
31    /// context parameters.
32    ///
33    /// For example, if node_context_params is ``\["user_agent_name", "metadata"\]``,
34    /// the implied context parameters might be::
35    ///
36    ///    node.user_agent_name: "envoy"
37    ///    node.metadata.foo: "{\"bar\": \"baz\"}"
38    ///    node.metadata.some: "42"
39    ///    node.metadata.thing: "\"thing\""
40    ///
41    /// \[#not-implemented-hide:\]
42    #[prost(string, repeated, tag = "26")]
43    pub node_context_params: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
44    /// Statically specified resources.
45    #[prost(message, optional, tag = "2")]
46    pub static_resources: ::core::option::Option<bootstrap::StaticResources>,
47    /// xDS configuration sources.
48    #[prost(message, optional, tag = "3")]
49    pub dynamic_resources: ::core::option::Option<bootstrap::DynamicResources>,
50    /// Configuration for the cluster manager which owns all upstream clusters
51    /// within the server.
52    #[prost(message, optional, tag = "4")]
53    pub cluster_manager: ::core::option::Option<ClusterManager>,
54    /// Health discovery service config option.
55    /// (:ref:`core.ApiConfigSource <envoy_v3_api_msg_config.core.v3.ApiConfigSource>`)
56    #[prost(message, optional, tag = "14")]
57    pub hds_config: ::core::option::Option<super::super::core::v3::ApiConfigSource>,
58    /// Optional file system path to search for startup flag files.
59    #[prost(string, tag = "5")]
60    pub flags_path: ::prost::alloc::string::String,
61    /// Optional set of stats sinks.
62    #[prost(message, repeated, tag = "6")]
63    pub stats_sinks: ::prost::alloc::vec::Vec<super::super::metrics::v3::StatsSink>,
64    /// Options to control behaviors of deferred creation compatible stats.
65    #[prost(message, optional, tag = "39")]
66    pub deferred_stat_options: ::core::option::Option<bootstrap::DeferredStatOptions>,
67    /// Configuration for internal processing of stats.
68    #[prost(message, optional, tag = "13")]
69    pub stats_config: ::core::option::Option<super::super::metrics::v3::StatsConfig>,
70    /// Optional duration between flushes to configured stats sinks. For
71    /// performance reasons Envoy latches counters and only flushes counters and
72    /// gauges at a periodic interval. If not specified the default is 5000ms (5
73    /// seconds). Only one of ``stats_flush_interval`` or ``stats_flush_on_admin``
74    /// can be set.
75    /// Duration must be at least 1ms and at most 5 min.
76    #[prost(message, optional, tag = "7")]
77    pub stats_flush_interval: ::core::option::Option<
78        super::super::super::super::google::protobuf::Duration,
79    >,
80    /// Optional watchdog configuration.
81    /// This is for a single watchdog configuration for the entire system.
82    /// Deprecated in favor of ``watchdogs`` which has finer granularity.
83    #[deprecated]
84    #[prost(message, optional, tag = "8")]
85    pub watchdog: ::core::option::Option<Watchdog>,
86    /// Optional watchdogs configuration.
87    /// This is used for specifying different watchdogs for the different subsystems.
88    /// \[#extension-category: envoy.guarddog_actions\]
89    #[prost(message, optional, tag = "27")]
90    pub watchdogs: ::core::option::Option<Watchdogs>,
91    /// Configuration for an external tracing provider.
92    ///
93    /// .. attention::
94    ///   This field has been deprecated in favor of :ref:`HttpConnectionManager.Tracing.provider
95    ///   <envoy_v3_api_field_extensions.filters.network.http_connection_manager.v3.HttpConnectionManager.Tracing.provider>`.
96    #[deprecated]
97    #[prost(message, optional, tag = "9")]
98    pub tracing: ::core::option::Option<super::super::trace::v3::Tracing>,
99    /// Configuration for the runtime configuration provider. If not
100    /// specified, a “null” provider will be used which will result in all defaults
101    /// being used.
102    #[prost(message, optional, tag = "17")]
103    pub layered_runtime: ::core::option::Option<LayeredRuntime>,
104    /// Configuration for the local administration HTTP server.
105    #[prost(message, optional, tag = "12")]
106    pub admin: ::core::option::Option<Admin>,
107    /// Optional overload manager configuration.
108    #[prost(message, optional, tag = "15")]
109    pub overload_manager: ::core::option::Option<
110        super::super::overload::v3::OverloadManager,
111    >,
112    /// Enable :ref:`stats for event dispatcher <operations_performance>`, defaults to false.
113    /// Note that this records a value for each iteration of the event loop on every thread. This
114    /// should normally be minimal overhead, but when using
115    /// :ref:`statsd <envoy_v3_api_msg_config.metrics.v3.StatsdSink>`, it will send each observed value
116    /// over the wire individually because the statsd protocol doesn't have any way to represent a
117    /// histogram summary. Be aware that this can be a very large volume of data.
118    #[prost(bool, tag = "16")]
119    pub enable_dispatcher_stats: bool,
120    /// Optional string which will be used in lieu of x-envoy in prefixing headers.
121    ///
122    /// For example, if this string is present and set to X-Foo, then x-envoy-retry-on will be
123    /// transformed into x-foo-retry-on etc.
124    ///
125    /// Note this applies to the headers Envoy will generate, the headers Envoy will sanitize, and the
126    /// headers Envoy will trust for core code and core extensions only. Be VERY careful making
127    /// changes to this string, especially in multi-layer Envoy deployments or deployments using
128    /// extensions which are not upstream.
129    #[prost(string, tag = "18")]
130    pub header_prefix: ::prost::alloc::string::String,
131    /// Optional proxy version which will be used to set the value of :ref:`server.version statistic
132    /// <server_statistics>` if specified. Envoy will not process this value, it will be sent as is to
133    /// :ref:`stats sinks <envoy_v3_api_msg_config.metrics.v3.StatsSink>`.
134    #[prost(message, optional, tag = "19")]
135    pub stats_server_version_override: ::core::option::Option<
136        super::super::super::super::google::protobuf::UInt64Value,
137    >,
138    /// Always use TCP queries instead of UDP queries for DNS lookups.
139    /// This may be overridden on a per-cluster basis in cds_config,
140    /// when :ref:`dns_resolvers <envoy_v3_api_field_config.cluster.v3.Cluster.dns_resolvers>` and
141    /// :ref:`use_tcp_for_dns_lookups <envoy_v3_api_field_config.cluster.v3.Cluster.use_tcp_for_dns_lookups>` are
142    /// specified.
143    /// This field is deprecated in favor of ``dns_resolution_config``
144    /// which aggregates all of the DNS resolver configuration in a single message.
145    #[deprecated]
146    #[prost(bool, tag = "20")]
147    pub use_tcp_for_dns_lookups: bool,
148    /// DNS resolution configuration which includes the underlying dns resolver addresses and options.
149    /// This may be overridden on a per-cluster basis in cds_config, when
150    /// :ref:`dns_resolution_config <envoy_v3_api_field_config.cluster.v3.Cluster.dns_resolution_config>`
151    /// is specified.
152    /// This field is deprecated in favor of
153    /// :ref:`typed_dns_resolver_config <envoy_v3_api_field_config.bootstrap.v3.Bootstrap.typed_dns_resolver_config>`.
154    #[deprecated]
155    #[prost(message, optional, tag = "30")]
156    pub dns_resolution_config: ::core::option::Option<
157        super::super::core::v3::DnsResolutionConfig,
158    >,
159    /// DNS resolver type configuration extension. This extension can be used to configure c-ares, apple,
160    /// or any other DNS resolver types and the related parameters.
161    /// For example, an object of
162    /// :ref:`CaresDnsResolverConfig <envoy_v3_api_msg_extensions.network.dns_resolver.cares.v3.CaresDnsResolverConfig>`
163    /// can be packed into this ``typed_dns_resolver_config``. This configuration replaces the
164    /// :ref:`dns_resolution_config <envoy_v3_api_field_config.bootstrap.v3.Bootstrap.dns_resolution_config>`
165    /// configuration.
166    /// During the transition period when both ``dns_resolution_config`` and ``typed_dns_resolver_config`` exists,
167    /// when ``typed_dns_resolver_config`` is in place, Envoy will use it and ignore ``dns_resolution_config``.
168    /// When ``typed_dns_resolver_config`` is missing, the default behavior is in place.
169    /// \[#extension-category: envoy.network.dns_resolver\]
170    #[prost(message, optional, tag = "31")]
171    pub typed_dns_resolver_config: ::core::option::Option<
172        super::super::core::v3::TypedExtensionConfig,
173    >,
174    /// Specifies optional bootstrap extensions to be instantiated at startup time.
175    /// Each item contains extension specific configuration.
176    /// \[#extension-category: envoy.bootstrap\]
177    #[prost(message, repeated, tag = "21")]
178    pub bootstrap_extensions: ::prost::alloc::vec::Vec<
179        super::super::core::v3::TypedExtensionConfig,
180    >,
181    /// Specifies optional extensions instantiated at startup time and
182    /// invoked during crash time on the request that caused the crash.
183    #[prost(message, repeated, tag = "28")]
184    pub fatal_actions: ::prost::alloc::vec::Vec<FatalAction>,
185    /// Configuration sources that will participate in
186    /// xdstp:// URL authority resolution. The algorithm is as
187    /// follows:
188    /// 1. The authority field is taken from the xdstp:// URL, call
189    ///     this ``resource_authority``.
190    /// 2. ``resource_authority`` is compared against the authorities in any peer
191    ///     ``ConfigSource``. The peer ``ConfigSource`` is the configuration source
192    ///     message which would have been used unconditionally for resolution
193    ///     with opaque resource names. If there is a match with an authority, the
194    ///     peer ``ConfigSource`` message is used.
195    /// 3. ``resource_authority`` is compared sequentially with the authorities in
196    ///     each configuration source in ``config_sources``. The first ``ConfigSource``
197    ///     to match wins.
198    /// 4. As a fallback, if no configuration source matches, then
199    ///     ``default_config_source`` is used.
200    /// 5. If ``default_config_source`` is not specified, resolution fails.
201    /// \[#not-implemented-hide:\]
202    #[prost(message, repeated, tag = "22")]
203    pub config_sources: ::prost::alloc::vec::Vec<super::super::core::v3::ConfigSource>,
204    /// Default configuration source for xdstp:// URLs if all
205    /// other resolution fails.
206    /// \[#not-implemented-hide:\]
207    #[prost(message, optional, tag = "23")]
208    pub default_config_source: ::core::option::Option<
209        super::super::core::v3::ConfigSource,
210    >,
211    /// Optional overriding of default socket interface. The value must be the name of one of the
212    /// socket interface factories initialized through a bootstrap extension
213    #[prost(string, tag = "24")]
214    pub default_socket_interface: ::prost::alloc::string::String,
215    /// Global map of CertificateProvider instances. These instances are referred to by name in the
216    /// :ref:`CommonTlsContext.CertificateProviderInstance.instance_name
217    /// <envoy_v3_api_field_extensions.transport_sockets.tls.v3.CommonTlsContext.CertificateProviderInstance.instance_name>`
218    /// field.
219    /// \[#not-implemented-hide:\]
220    #[prost(map = "string, message", tag = "25")]
221    pub certificate_provider_instances: ::std::collections::HashMap<
222        ::prost::alloc::string::String,
223        super::super::core::v3::TypedExtensionConfig,
224    >,
225    /// Specifies a set of headers that need to be registered as inline header. This configuration
226    /// allows users to customize the inline headers on-demand at Envoy startup without modifying
227    /// Envoy's source code.
228    ///
229    /// Note that the 'set-cookie' header cannot be registered as inline header.
230    #[prost(message, repeated, tag = "32")]
231    pub inline_headers: ::prost::alloc::vec::Vec<CustomInlineHeader>,
232    /// Optional path to a file with performance tracing data created by "Perfetto" SDK in binary
233    /// ProtoBuf format. The default value is "envoy.pftrace".
234    #[prost(string, tag = "33")]
235    pub perf_tracing_file_path: ::prost::alloc::string::String,
236    /// Optional overriding of default regex engine.
237    /// If the value is not specified, Google RE2 will be used by default.
238    /// \[#extension-category: envoy.regex_engines\]
239    #[prost(message, optional, tag = "34")]
240    pub default_regex_engine: ::core::option::Option<
241        super::super::core::v3::TypedExtensionConfig,
242    >,
243    /// Optional XdsResourcesDelegate configuration, which allows plugging custom logic into both
244    /// fetch and load events during xDS processing.
245    /// If a value is not specified, no XdsResourcesDelegate will be used.
246    /// TODO(abeyad): Add public-facing documentation.
247    /// \[#not-implemented-hide:\]
248    #[prost(message, optional, tag = "35")]
249    pub xds_delegate_extension: ::core::option::Option<
250        super::super::core::v3::TypedExtensionConfig,
251    >,
252    /// Optional XdsConfigTracker configuration, which allows tracking xDS responses in external components,
253    /// e.g., external tracer or monitor. It provides the process point when receive, ingest, or fail to
254    /// process xDS resources and messages. If a value is not specified, no XdsConfigTracker will be used.
255    ///
256    /// .. note::
257    ///
258    ///     There are no in-repo extensions currently, and the :repo:`XdsConfigTracker <envoy/config/xds_config_tracker.h>`
259    ///     interface should be implemented before using.
260    ///     See :repo:`xds_config_tracker_integration_test <test/integration/xds_config_tracker_integration_test.cc>`
261    ///     for an example usage of the interface.
262    #[prost(message, optional, tag = "36")]
263    pub xds_config_tracker_extension: ::core::option::Option<
264        super::super::core::v3::TypedExtensionConfig,
265    >,
266    /// \[#not-implemented-hide:\]
267    /// This controls the type of listener manager configured for Envoy. Currently
268    /// Envoy only supports ListenerManager for this field and Envoy Mobile
269    /// supports ApiListenerManager.
270    #[prost(message, optional, tag = "37")]
271    pub listener_manager: ::core::option::Option<
272        super::super::core::v3::TypedExtensionConfig,
273    >,
274    /// Optional application log configuration.
275    #[prost(message, optional, tag = "38")]
276    pub application_log_config: ::core::option::Option<bootstrap::ApplicationLogConfig>,
277    /// Optional gRPC async manager config.
278    #[prost(message, optional, tag = "40")]
279    pub grpc_async_client_manager_config: ::core::option::Option<
280        bootstrap::GrpcAsyncClientManagerConfig,
281    >,
282    /// Optional configuration for memory allocation manager.
283    /// Memory releasing is only supported for `tcmalloc allocator <<https://github.com/google/tcmalloc>`_.>
284    #[prost(message, optional, tag = "41")]
285    pub memory_allocator_manager: ::core::option::Option<MemoryAllocatorManager>,
286    #[prost(oneof = "bootstrap::StatsFlush", tags = "29")]
287    pub stats_flush: ::core::option::Option<bootstrap::StatsFlush>,
288}
289/// Nested message and enum types in `Bootstrap`.
290pub mod bootstrap {
291    #[derive(Clone, PartialEq, ::prost::Message)]
292    pub struct StaticResources {
293        /// Static :ref:`Listeners <envoy_v3_api_msg_config.listener.v3.Listener>`. These listeners are
294        /// available regardless of LDS configuration.
295        #[prost(message, repeated, tag = "1")]
296        pub listeners: ::prost::alloc::vec::Vec<
297            super::super::super::listener::v3::Listener,
298        >,
299        /// If a network based configuration source is specified for :ref:`cds_config
300        /// <envoy_v3_api_field_config.bootstrap.v3.Bootstrap.DynamicResources.cds_config>`, it's necessary
301        /// to have some initial cluster definitions available to allow Envoy to know
302        /// how to speak to the management server. These cluster definitions may not
303        /// use :ref:`EDS <arch_overview_dynamic_config_eds>` (i.e. they should be static
304        /// IP or DNS-based).
305        #[prost(message, repeated, tag = "2")]
306        pub clusters: ::prost::alloc::vec::Vec<
307            super::super::super::cluster::v3::Cluster,
308        >,
309        /// These static secrets can be used by :ref:`SdsSecretConfig
310        /// <envoy_v3_api_msg_extensions.transport_sockets.tls.v3.SdsSecretConfig>`
311        #[prost(message, repeated, tag = "3")]
312        pub secrets: ::prost::alloc::vec::Vec<
313            super::super::super::super::extensions::transport_sockets::tls::v3::Secret,
314        >,
315    }
316    impl ::prost::Name for StaticResources {
317        const NAME: &'static str = "StaticResources";
318        const PACKAGE: &'static str = "envoy.config.bootstrap.v3";
319        fn full_name() -> ::prost::alloc::string::String {
320            "envoy.config.bootstrap.v3.Bootstrap.StaticResources".into()
321        }
322        fn type_url() -> ::prost::alloc::string::String {
323            "type.googleapis.com/envoy.config.bootstrap.v3.Bootstrap.StaticResources"
324                .into()
325        }
326    }
327    /// \[#next-free-field: 7\]
328    #[derive(Clone, PartialEq, ::prost::Message)]
329    pub struct DynamicResources {
330        /// All :ref:`Listeners <envoy_v3_api_msg_config.listener.v3.Listener>` are provided by a single
331        /// :ref:`LDS <arch_overview_dynamic_config_lds>` configuration source.
332        #[prost(message, optional, tag = "1")]
333        pub lds_config: ::core::option::Option<
334            super::super::super::core::v3::ConfigSource,
335        >,
336        /// xdstp:// resource locator for listener collection.
337        /// \[#not-implemented-hide:\]
338        #[prost(string, tag = "5")]
339        pub lds_resources_locator: ::prost::alloc::string::String,
340        /// All post-bootstrap :ref:`Cluster <envoy_v3_api_msg_config.cluster.v3.Cluster>` definitions are
341        /// provided by a single :ref:`CDS <arch_overview_dynamic_config_cds>`
342        /// configuration source.
343        #[prost(message, optional, tag = "2")]
344        pub cds_config: ::core::option::Option<
345            super::super::super::core::v3::ConfigSource,
346        >,
347        /// xdstp:// resource locator for cluster collection.
348        /// \[#not-implemented-hide:\]
349        #[prost(string, tag = "6")]
350        pub cds_resources_locator: ::prost::alloc::string::String,
351        /// A single :ref:`ADS <config_overview_ads>` source may be optionally
352        /// specified. This must have :ref:`api_type
353        /// <envoy_v3_api_field_config.core.v3.ApiConfigSource.api_type>` :ref:`GRPC
354        /// <envoy_v3_api_enum_value_config.core.v3.ApiConfigSource.ApiType.GRPC>`. Only
355        /// :ref:`ConfigSources <envoy_v3_api_msg_config.core.v3.ConfigSource>` that have
356        /// the :ref:`ads <envoy_v3_api_field_config.core.v3.ConfigSource.ads>` field set will be
357        /// streamed on the ADS channel.
358        #[prost(message, optional, tag = "3")]
359        pub ads_config: ::core::option::Option<
360            super::super::super::core::v3::ApiConfigSource,
361        >,
362    }
363    impl ::prost::Name for DynamicResources {
364        const NAME: &'static str = "DynamicResources";
365        const PACKAGE: &'static str = "envoy.config.bootstrap.v3";
366        fn full_name() -> ::prost::alloc::string::String {
367            "envoy.config.bootstrap.v3.Bootstrap.DynamicResources".into()
368        }
369        fn type_url() -> ::prost::alloc::string::String {
370            "type.googleapis.com/envoy.config.bootstrap.v3.Bootstrap.DynamicResources"
371                .into()
372        }
373    }
374    #[derive(Clone, PartialEq, ::prost::Message)]
375    pub struct ApplicationLogConfig {
376        /// Optional field to set the application logs format. If this field is set, it will override
377        /// the default log format. Setting both this field and :option:`--log-format` command line
378        /// option is not allowed, and will cause a bootstrap error.
379        #[prost(message, optional, tag = "1")]
380        pub log_format: ::core::option::Option<application_log_config::LogFormat>,
381    }
382    /// Nested message and enum types in `ApplicationLogConfig`.
383    pub mod application_log_config {
384        #[derive(Clone, PartialEq, ::prost::Message)]
385        pub struct LogFormat {
386            #[prost(oneof = "log_format::LogFormat", tags = "1, 2")]
387            pub log_format: ::core::option::Option<log_format::LogFormat>,
388        }
389        /// Nested message and enum types in `LogFormat`.
390        pub mod log_format {
391            #[derive(Clone, PartialEq, ::prost::Oneof)]
392            pub enum LogFormat {
393                /// Flush application logs in JSON format. The configured JSON struct can
394                /// support all the format flags specified in the :option:`--log-format`
395                /// command line options section, except for the ``%v`` and ``%_`` flags.
396                #[prost(message, tag = "1")]
397                JsonFormat(
398                    super::super::super::super::super::super::super::google::protobuf::Struct,
399                ),
400                /// Flush application log in a format defined by a string. The text format
401                /// can support all the format flags specified in the :option:`--log-format`
402                /// command line option section.
403                #[prost(string, tag = "2")]
404                TextFormat(::prost::alloc::string::String),
405            }
406        }
407        impl ::prost::Name for LogFormat {
408            const NAME: &'static str = "LogFormat";
409            const PACKAGE: &'static str = "envoy.config.bootstrap.v3";
410            fn full_name() -> ::prost::alloc::string::String {
411                "envoy.config.bootstrap.v3.Bootstrap.ApplicationLogConfig.LogFormat"
412                    .into()
413            }
414            fn type_url() -> ::prost::alloc::string::String {
415                "type.googleapis.com/envoy.config.bootstrap.v3.Bootstrap.ApplicationLogConfig.LogFormat"
416                    .into()
417            }
418        }
419    }
420    impl ::prost::Name for ApplicationLogConfig {
421        const NAME: &'static str = "ApplicationLogConfig";
422        const PACKAGE: &'static str = "envoy.config.bootstrap.v3";
423        fn full_name() -> ::prost::alloc::string::String {
424            "envoy.config.bootstrap.v3.Bootstrap.ApplicationLogConfig".into()
425        }
426        fn type_url() -> ::prost::alloc::string::String {
427            "type.googleapis.com/envoy.config.bootstrap.v3.Bootstrap.ApplicationLogConfig"
428                .into()
429        }
430    }
431    #[derive(Clone, Copy, PartialEq, ::prost::Message)]
432    pub struct DeferredStatOptions {
433        /// When the flag is enabled, Envoy will lazily initialize a subset of the stats (see below).
434        /// This will save memory and CPU cycles when creating the objects that own these stats, if those
435        /// stats are never referenced throughout the lifetime of the process. However, it will incur additional
436        /// memory overhead for these objects, and a small increase of CPU usage when a at least one of the stats
437        /// is updated for the first time.
438        /// Groups of stats that will be lazily initialized:
439        /// - Cluster traffic stats: a subgroup of the :ref:`cluster statistics <config_cluster_manager_cluster_stats>`
440        /// that are used when requests are routed to the cluster.
441        #[prost(bool, tag = "1")]
442        pub enable_deferred_creation_stats: bool,
443    }
444    impl ::prost::Name for DeferredStatOptions {
445        const NAME: &'static str = "DeferredStatOptions";
446        const PACKAGE: &'static str = "envoy.config.bootstrap.v3";
447        fn full_name() -> ::prost::alloc::string::String {
448            "envoy.config.bootstrap.v3.Bootstrap.DeferredStatOptions".into()
449        }
450        fn type_url() -> ::prost::alloc::string::String {
451            "type.googleapis.com/envoy.config.bootstrap.v3.Bootstrap.DeferredStatOptions"
452                .into()
453        }
454    }
455    #[derive(Clone, Copy, PartialEq, ::prost::Message)]
456    pub struct GrpcAsyncClientManagerConfig {
457        /// Optional field to set the expiration time for the cached gRPC client object.
458        /// The minimal value is 5s and the default is 50s.
459        #[prost(message, optional, tag = "1")]
460        pub max_cached_entry_idle_duration: ::core::option::Option<
461            super::super::super::super::super::google::protobuf::Duration,
462        >,
463    }
464    impl ::prost::Name for GrpcAsyncClientManagerConfig {
465        const NAME: &'static str = "GrpcAsyncClientManagerConfig";
466        const PACKAGE: &'static str = "envoy.config.bootstrap.v3";
467        fn full_name() -> ::prost::alloc::string::String {
468            "envoy.config.bootstrap.v3.Bootstrap.GrpcAsyncClientManagerConfig".into()
469        }
470        fn type_url() -> ::prost::alloc::string::String {
471            "type.googleapis.com/envoy.config.bootstrap.v3.Bootstrap.GrpcAsyncClientManagerConfig"
472                .into()
473        }
474    }
475    #[derive(Clone, Copy, PartialEq, ::prost::Oneof)]
476    pub enum StatsFlush {
477        /// Flush stats to sinks only when queried for on the admin interface. If set,
478        /// a flush timer is not created. Only one of ``stats_flush_on_admin`` or
479        /// ``stats_flush_interval`` can be set.
480        #[prost(bool, tag = "29")]
481        StatsFlushOnAdmin(bool),
482    }
483}
484impl ::prost::Name for Bootstrap {
485    const NAME: &'static str = "Bootstrap";
486    const PACKAGE: &'static str = "envoy.config.bootstrap.v3";
487    fn full_name() -> ::prost::alloc::string::String {
488        "envoy.config.bootstrap.v3.Bootstrap".into()
489    }
490    fn type_url() -> ::prost::alloc::string::String {
491        "type.googleapis.com/envoy.config.bootstrap.v3.Bootstrap".into()
492    }
493}
494/// Administration interface :ref:`operations documentation
495/// <operations_admin_interface>`.
496/// \[#next-free-field: 7\]
497#[derive(Clone, PartialEq, ::prost::Message)]
498pub struct Admin {
499    /// Configuration for :ref:`access logs <arch_overview_access_logs>`
500    /// emitted by the administration server.
501    #[prost(message, repeated, tag = "5")]
502    pub access_log: ::prost::alloc::vec::Vec<super::super::accesslog::v3::AccessLog>,
503    /// The path to write the access log for the administration server. If no
504    /// access log is desired specify ‘/dev/null’. This is only required if
505    /// :ref:`address <envoy_v3_api_field_config.bootstrap.v3.Admin.address>` is set.
506    /// Deprecated in favor of ``access_log`` which offers more options.
507    #[deprecated]
508    #[prost(string, tag = "1")]
509    pub access_log_path: ::prost::alloc::string::String,
510    /// The cpu profiler output path for the administration server. If no profile
511    /// path is specified, the default is ‘/var/log/envoy/envoy.prof’.
512    #[prost(string, tag = "2")]
513    pub profile_path: ::prost::alloc::string::String,
514    /// The TCP address that the administration server will listen on.
515    /// If not specified, Envoy will not start an administration server.
516    #[prost(message, optional, tag = "3")]
517    pub address: ::core::option::Option<super::super::core::v3::Address>,
518    /// Additional socket options that may not be present in Envoy source code or
519    /// precompiled binaries.
520    #[prost(message, repeated, tag = "4")]
521    pub socket_options: ::prost::alloc::vec::Vec<super::super::core::v3::SocketOption>,
522    /// Indicates whether :ref:`global_downstream_max_connections <config_overload_manager_limiting_connections>`
523    /// should apply to the admin interface or not.
524    #[prost(bool, tag = "6")]
525    pub ignore_global_conn_limit: bool,
526}
527impl ::prost::Name for Admin {
528    const NAME: &'static str = "Admin";
529    const PACKAGE: &'static str = "envoy.config.bootstrap.v3";
530    fn full_name() -> ::prost::alloc::string::String {
531        "envoy.config.bootstrap.v3.Admin".into()
532    }
533    fn type_url() -> ::prost::alloc::string::String {
534        "type.googleapis.com/envoy.config.bootstrap.v3.Admin".into()
535    }
536}
537/// Cluster manager :ref:`architecture overview <arch_overview_cluster_manager>`.
538/// \[#next-free-field: 6\]
539#[derive(Clone, PartialEq, ::prost::Message)]
540pub struct ClusterManager {
541    /// Name of the local cluster (i.e., the cluster that owns the Envoy running
542    /// this configuration). In order to enable :ref:`zone aware routing
543    /// <arch_overview_load_balancing_zone_aware_routing>` this option must be set.
544    /// If ``local_cluster_name`` is defined then :ref:`clusters
545    /// <envoy_v3_api_msg_config.cluster.v3.Cluster>` must be defined in the :ref:`Bootstrap
546    /// static cluster resources
547    /// <envoy_v3_api_field_config.bootstrap.v3.Bootstrap.StaticResources.clusters>`. This is unrelated to
548    /// the :option:`--service-cluster` option which does not `affect zone aware
549    /// routing <<https://github.com/envoyproxy/envoy/issues/774>`_.>
550    #[prost(string, tag = "1")]
551    pub local_cluster_name: ::prost::alloc::string::String,
552    /// Optional global configuration for outlier detection.
553    #[prost(message, optional, tag = "2")]
554    pub outlier_detection: ::core::option::Option<cluster_manager::OutlierDetection>,
555    /// Optional configuration used to bind newly established upstream connections.
556    /// This may be overridden on a per-cluster basis by upstream_bind_config in the cds_config.
557    #[prost(message, optional, tag = "3")]
558    pub upstream_bind_config: ::core::option::Option<super::super::core::v3::BindConfig>,
559    /// A management server endpoint to stream load stats to via
560    /// ``StreamLoadStats``. This must have :ref:`api_type
561    /// <envoy_v3_api_field_config.core.v3.ApiConfigSource.api_type>` :ref:`GRPC
562    /// <envoy_v3_api_enum_value_config.core.v3.ApiConfigSource.ApiType.GRPC>`.
563    #[prost(message, optional, tag = "4")]
564    pub load_stats_config: ::core::option::Option<
565        super::super::core::v3::ApiConfigSource,
566    >,
567    /// Whether the ClusterManager will create clusters on the worker threads
568    /// inline during requests. This will save memory and CPU cycles in cases where
569    /// there are lots of inactive clusters and > 1 worker thread.
570    #[prost(bool, tag = "5")]
571    pub enable_deferred_cluster_creation: bool,
572}
573/// Nested message and enum types in `ClusterManager`.
574pub mod cluster_manager {
575    #[derive(Clone, PartialEq, ::prost::Message)]
576    pub struct OutlierDetection {
577        /// Specifies the path to the outlier event log.
578        #[prost(string, tag = "1")]
579        pub event_log_path: ::prost::alloc::string::String,
580        /// \[#not-implemented-hide:\]
581        /// The gRPC service for the outlier detection event service.
582        /// If empty, outlier detection events won't be sent to a remote endpoint.
583        #[prost(message, optional, tag = "2")]
584        pub event_service: ::core::option::Option<
585            super::super::super::core::v3::EventServiceConfig,
586        >,
587    }
588    impl ::prost::Name for OutlierDetection {
589        const NAME: &'static str = "OutlierDetection";
590        const PACKAGE: &'static str = "envoy.config.bootstrap.v3";
591        fn full_name() -> ::prost::alloc::string::String {
592            "envoy.config.bootstrap.v3.ClusterManager.OutlierDetection".into()
593        }
594        fn type_url() -> ::prost::alloc::string::String {
595            "type.googleapis.com/envoy.config.bootstrap.v3.ClusterManager.OutlierDetection"
596                .into()
597        }
598    }
599}
600impl ::prost::Name for ClusterManager {
601    const NAME: &'static str = "ClusterManager";
602    const PACKAGE: &'static str = "envoy.config.bootstrap.v3";
603    fn full_name() -> ::prost::alloc::string::String {
604        "envoy.config.bootstrap.v3.ClusterManager".into()
605    }
606    fn type_url() -> ::prost::alloc::string::String {
607        "type.googleapis.com/envoy.config.bootstrap.v3.ClusterManager".into()
608    }
609}
610/// Allows you to specify different watchdog configs for different subsystems.
611/// This allows finer tuned policies for the watchdog. If a subsystem is omitted
612/// the default values for that system will be used.
613#[derive(Clone, PartialEq, ::prost::Message)]
614pub struct Watchdogs {
615    /// Watchdog for the main thread.
616    #[prost(message, optional, tag = "1")]
617    pub main_thread_watchdog: ::core::option::Option<Watchdog>,
618    /// Watchdog for the worker threads.
619    #[prost(message, optional, tag = "2")]
620    pub worker_watchdog: ::core::option::Option<Watchdog>,
621}
622impl ::prost::Name for Watchdogs {
623    const NAME: &'static str = "Watchdogs";
624    const PACKAGE: &'static str = "envoy.config.bootstrap.v3";
625    fn full_name() -> ::prost::alloc::string::String {
626        "envoy.config.bootstrap.v3.Watchdogs".into()
627    }
628    fn type_url() -> ::prost::alloc::string::String {
629        "type.googleapis.com/envoy.config.bootstrap.v3.Watchdogs".into()
630    }
631}
632/// Envoy process watchdog configuration. When configured, this monitors for
633/// nonresponsive threads and kills the process after the configured thresholds.
634/// See the :ref:`watchdog documentation <operations_performance_watchdog>` for more information.
635/// \[#next-free-field: 8\]
636#[derive(Clone, PartialEq, ::prost::Message)]
637pub struct Watchdog {
638    /// Register actions that will fire on given WatchDog events.
639    /// See ``WatchDogAction`` for priority of events.
640    #[prost(message, repeated, tag = "7")]
641    pub actions: ::prost::alloc::vec::Vec<watchdog::WatchdogAction>,
642    /// The duration after which Envoy counts a nonresponsive thread in the
643    /// ``watchdog_miss`` statistic. If not specified the default is 200ms.
644    #[prost(message, optional, tag = "1")]
645    pub miss_timeout: ::core::option::Option<
646        super::super::super::super::google::protobuf::Duration,
647    >,
648    /// The duration after which Envoy counts a nonresponsive thread in the
649    /// ``watchdog_mega_miss`` statistic. If not specified the default is
650    /// 1000ms.
651    #[prost(message, optional, tag = "2")]
652    pub megamiss_timeout: ::core::option::Option<
653        super::super::super::super::google::protobuf::Duration,
654    >,
655    /// If a watched thread has been nonresponsive for this duration, assume a
656    /// programming error and kill the entire Envoy process. Set to 0 to disable
657    /// kill behavior. If not specified the default is 0 (disabled).
658    #[prost(message, optional, tag = "3")]
659    pub kill_timeout: ::core::option::Option<
660        super::super::super::super::google::protobuf::Duration,
661    >,
662    /// Defines the maximum jitter used to adjust the ``kill_timeout`` if ``kill_timeout`` is
663    /// enabled. Enabling this feature would help to reduce risk of synchronized
664    /// watchdog kill events across proxies due to external triggers. Set to 0 to
665    /// disable. If not specified the default is 0 (disabled).
666    #[prost(message, optional, tag = "6")]
667    pub max_kill_timeout_jitter: ::core::option::Option<
668        super::super::super::super::google::protobuf::Duration,
669    >,
670    /// If ``max(2, ceil(registered_threads * Fraction(*multikill_threshold*)))``
671    /// threads have been nonresponsive for at least this duration kill the entire
672    /// Envoy process. Set to 0 to disable this behavior. If not specified the
673    /// default is 0 (disabled).
674    #[prost(message, optional, tag = "4")]
675    pub multikill_timeout: ::core::option::Option<
676        super::super::super::super::google::protobuf::Duration,
677    >,
678    /// Sets the threshold for ``multikill_timeout`` in terms of the percentage of
679    /// nonresponsive threads required for the ``multikill_timeout``.
680    /// If not specified the default is 0.
681    #[prost(message, optional, tag = "5")]
682    pub multikill_threshold: ::core::option::Option<
683        super::super::super::r#type::v3::Percent,
684    >,
685}
686/// Nested message and enum types in `Watchdog`.
687pub mod watchdog {
688    #[derive(Clone, PartialEq, ::prost::Message)]
689    pub struct WatchdogAction {
690        /// Extension specific configuration for the action.
691        #[prost(message, optional, tag = "1")]
692        pub config: ::core::option::Option<
693            super::super::super::core::v3::TypedExtensionConfig,
694        >,
695        #[prost(enumeration = "watchdog_action::WatchdogEvent", tag = "2")]
696        pub event: i32,
697    }
698    /// Nested message and enum types in `WatchdogAction`.
699    pub mod watchdog_action {
700        /// The events are fired in this order: KILL, MULTIKILL, MEGAMISS, MISS.
701        /// Within an event type, actions execute in the order they are configured.
702        /// For KILL/MULTIKILL there is a default PANIC that will run after the
703        /// registered actions and kills the process if it wasn't already killed.
704        /// It might be useful to specify several debug actions, and possibly an
705        /// alternate FATAL action.
706        #[derive(
707            Clone,
708            Copy,
709            Debug,
710            PartialEq,
711            Eq,
712            Hash,
713            PartialOrd,
714            Ord,
715            ::prost::Enumeration
716        )]
717        #[repr(i32)]
718        pub enum WatchdogEvent {
719            Unknown = 0,
720            Kill = 1,
721            Multikill = 2,
722            Megamiss = 3,
723            Miss = 4,
724        }
725        impl WatchdogEvent {
726            /// String value of the enum field names used in the ProtoBuf definition.
727            ///
728            /// The values are not transformed in any way and thus are considered stable
729            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
730            pub fn as_str_name(&self) -> &'static str {
731                match self {
732                    Self::Unknown => "UNKNOWN",
733                    Self::Kill => "KILL",
734                    Self::Multikill => "MULTIKILL",
735                    Self::Megamiss => "MEGAMISS",
736                    Self::Miss => "MISS",
737                }
738            }
739            /// Creates an enum from field names used in the ProtoBuf definition.
740            pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
741                match value {
742                    "UNKNOWN" => Some(Self::Unknown),
743                    "KILL" => Some(Self::Kill),
744                    "MULTIKILL" => Some(Self::Multikill),
745                    "MEGAMISS" => Some(Self::Megamiss),
746                    "MISS" => Some(Self::Miss),
747                    _ => None,
748                }
749            }
750        }
751    }
752    impl ::prost::Name for WatchdogAction {
753        const NAME: &'static str = "WatchdogAction";
754        const PACKAGE: &'static str = "envoy.config.bootstrap.v3";
755        fn full_name() -> ::prost::alloc::string::String {
756            "envoy.config.bootstrap.v3.Watchdog.WatchdogAction".into()
757        }
758        fn type_url() -> ::prost::alloc::string::String {
759            "type.googleapis.com/envoy.config.bootstrap.v3.Watchdog.WatchdogAction"
760                .into()
761        }
762    }
763}
764impl ::prost::Name for Watchdog {
765    const NAME: &'static str = "Watchdog";
766    const PACKAGE: &'static str = "envoy.config.bootstrap.v3";
767    fn full_name() -> ::prost::alloc::string::String {
768        "envoy.config.bootstrap.v3.Watchdog".into()
769    }
770    fn type_url() -> ::prost::alloc::string::String {
771        "type.googleapis.com/envoy.config.bootstrap.v3.Watchdog".into()
772    }
773}
774/// Fatal actions to run while crashing. Actions can be safe (meaning they are
775/// async-signal safe) or unsafe. We run all safe actions before we run unsafe actions.
776/// If using an unsafe action that could get stuck or deadlock, it important to
777/// have an out of band system to terminate the process.
778///
779/// The interface for the extension is ``Envoy::Server::Configuration::FatalAction``.
780/// ``FatalAction`` extensions live in the ``envoy.extensions.fatal_actions`` API
781/// namespace.
782#[derive(Clone, PartialEq, ::prost::Message)]
783pub struct FatalAction {
784    /// Extension specific configuration for the action. It's expected to conform
785    /// to the ``Envoy::Server::Configuration::FatalAction`` interface.
786    #[prost(message, optional, tag = "1")]
787    pub config: ::core::option::Option<super::super::core::v3::TypedExtensionConfig>,
788}
789impl ::prost::Name for FatalAction {
790    const NAME: &'static str = "FatalAction";
791    const PACKAGE: &'static str = "envoy.config.bootstrap.v3";
792    fn full_name() -> ::prost::alloc::string::String {
793        "envoy.config.bootstrap.v3.FatalAction".into()
794    }
795    fn type_url() -> ::prost::alloc::string::String {
796        "type.googleapis.com/envoy.config.bootstrap.v3.FatalAction".into()
797    }
798}
799/// Runtime :ref:`configuration overview <config_runtime>` (deprecated).
800#[derive(Clone, PartialEq, ::prost::Message)]
801pub struct Runtime {
802    /// The implementation assumes that the file system tree is accessed via a
803    /// symbolic link. An atomic link swap is used when a new tree should be
804    /// switched to. This parameter specifies the path to the symbolic link. Envoy
805    /// will watch the location for changes and reload the file system tree when
806    /// they happen. If this parameter is not set, there will be no disk based
807    /// runtime.
808    #[prost(string, tag = "1")]
809    pub symlink_root: ::prost::alloc::string::String,
810    /// Specifies the subdirectory to load within the root directory. This is
811    /// useful if multiple systems share the same delivery mechanism. Envoy
812    /// configuration elements can be contained in a dedicated subdirectory.
813    #[prost(string, tag = "2")]
814    pub subdirectory: ::prost::alloc::string::String,
815    /// Specifies an optional subdirectory to load within the root directory. If
816    /// specified and the directory exists, configuration values within this
817    /// directory will override those found in the primary subdirectory. This is
818    /// useful when Envoy is deployed across many different types of servers.
819    /// Sometimes it is useful to have a per service cluster directory for runtime
820    /// configuration. See below for exactly how the override directory is used.
821    #[prost(string, tag = "3")]
822    pub override_subdirectory: ::prost::alloc::string::String,
823    /// Static base runtime. This will be :ref:`overridden
824    /// <config_runtime_layering>` by other runtime layers, e.g.
825    /// disk or admin. This follows the :ref:`runtime protobuf JSON representation
826    /// encoding <config_runtime_proto_json>`.
827    #[prost(message, optional, tag = "4")]
828    pub base: ::core::option::Option<
829        super::super::super::super::google::protobuf::Struct,
830    >,
831}
832impl ::prost::Name for Runtime {
833    const NAME: &'static str = "Runtime";
834    const PACKAGE: &'static str = "envoy.config.bootstrap.v3";
835    fn full_name() -> ::prost::alloc::string::String {
836        "envoy.config.bootstrap.v3.Runtime".into()
837    }
838    fn type_url() -> ::prost::alloc::string::String {
839        "type.googleapis.com/envoy.config.bootstrap.v3.Runtime".into()
840    }
841}
842/// \[#next-free-field: 6\]
843#[derive(Clone, PartialEq, ::prost::Message)]
844pub struct RuntimeLayer {
845    /// Descriptive name for the runtime layer. This is only used for the runtime
846    /// :http:get:`/runtime` output.
847    #[prost(string, tag = "1")]
848    pub name: ::prost::alloc::string::String,
849    #[prost(oneof = "runtime_layer::LayerSpecifier", tags = "2, 3, 4, 5")]
850    pub layer_specifier: ::core::option::Option<runtime_layer::LayerSpecifier>,
851}
852/// Nested message and enum types in `RuntimeLayer`.
853pub mod runtime_layer {
854    /// :ref:`Disk runtime <config_runtime_local_disk>` layer.
855    #[derive(Clone, PartialEq, ::prost::Message)]
856    pub struct DiskLayer {
857        /// The implementation assumes that the file system tree is accessed via a
858        /// symbolic link. An atomic link swap is used when a new tree should be
859        /// switched to. This parameter specifies the path to the symbolic link.
860        /// Envoy will watch the location for changes and reload the file system tree
861        /// when they happen. See documentation on runtime :ref:`atomicity
862        /// <config_runtime_atomicity>` for further details on how reloads are
863        /// treated.
864        #[prost(string, tag = "1")]
865        pub symlink_root: ::prost::alloc::string::String,
866        /// Specifies the subdirectory to load within the root directory. This is
867        /// useful if multiple systems share the same delivery mechanism. Envoy
868        /// configuration elements can be contained in a dedicated subdirectory.
869        #[prost(string, tag = "3")]
870        pub subdirectory: ::prost::alloc::string::String,
871        /// :ref:`Append <config_runtime_local_disk_service_cluster_subdirs>` the
872        /// service cluster to the path under symlink root.
873        #[prost(bool, tag = "2")]
874        pub append_service_cluster: bool,
875    }
876    impl ::prost::Name for DiskLayer {
877        const NAME: &'static str = "DiskLayer";
878        const PACKAGE: &'static str = "envoy.config.bootstrap.v3";
879        fn full_name() -> ::prost::alloc::string::String {
880            "envoy.config.bootstrap.v3.RuntimeLayer.DiskLayer".into()
881        }
882        fn type_url() -> ::prost::alloc::string::String {
883            "type.googleapis.com/envoy.config.bootstrap.v3.RuntimeLayer.DiskLayer".into()
884        }
885    }
886    /// :ref:`Admin console runtime <config_runtime_admin>` layer.
887    #[derive(Clone, Copy, PartialEq, ::prost::Message)]
888    pub struct AdminLayer {}
889    impl ::prost::Name for AdminLayer {
890        const NAME: &'static str = "AdminLayer";
891        const PACKAGE: &'static str = "envoy.config.bootstrap.v3";
892        fn full_name() -> ::prost::alloc::string::String {
893            "envoy.config.bootstrap.v3.RuntimeLayer.AdminLayer".into()
894        }
895        fn type_url() -> ::prost::alloc::string::String {
896            "type.googleapis.com/envoy.config.bootstrap.v3.RuntimeLayer.AdminLayer"
897                .into()
898        }
899    }
900    /// :ref:`Runtime Discovery Service (RTDS) <config_runtime_rtds>` layer.
901    #[derive(Clone, PartialEq, ::prost::Message)]
902    pub struct RtdsLayer {
903        /// Resource to subscribe to at ``rtds_config`` for the RTDS layer.
904        #[prost(string, tag = "1")]
905        pub name: ::prost::alloc::string::String,
906        /// RTDS configuration source.
907        #[prost(message, optional, tag = "2")]
908        pub rtds_config: ::core::option::Option<
909            super::super::super::core::v3::ConfigSource,
910        >,
911    }
912    impl ::prost::Name for RtdsLayer {
913        const NAME: &'static str = "RtdsLayer";
914        const PACKAGE: &'static str = "envoy.config.bootstrap.v3";
915        fn full_name() -> ::prost::alloc::string::String {
916            "envoy.config.bootstrap.v3.RuntimeLayer.RtdsLayer".into()
917        }
918        fn type_url() -> ::prost::alloc::string::String {
919            "type.googleapis.com/envoy.config.bootstrap.v3.RuntimeLayer.RtdsLayer".into()
920        }
921    }
922    #[derive(Clone, PartialEq, ::prost::Oneof)]
923    pub enum LayerSpecifier {
924        /// :ref:`Static runtime <config_runtime_bootstrap>` layer.
925        /// This follows the :ref:`runtime protobuf JSON representation encoding
926        /// <config_runtime_proto_json>`. Unlike static xDS resources, this static
927        /// layer is overridable by later layers in the runtime virtual filesystem.
928        #[prost(message, tag = "2")]
929        StaticLayer(super::super::super::super::super::google::protobuf::Struct),
930        #[prost(message, tag = "3")]
931        DiskLayer(DiskLayer),
932        #[prost(message, tag = "4")]
933        AdminLayer(AdminLayer),
934        #[prost(message, tag = "5")]
935        RtdsLayer(RtdsLayer),
936    }
937}
938impl ::prost::Name for RuntimeLayer {
939    const NAME: &'static str = "RuntimeLayer";
940    const PACKAGE: &'static str = "envoy.config.bootstrap.v3";
941    fn full_name() -> ::prost::alloc::string::String {
942        "envoy.config.bootstrap.v3.RuntimeLayer".into()
943    }
944    fn type_url() -> ::prost::alloc::string::String {
945        "type.googleapis.com/envoy.config.bootstrap.v3.RuntimeLayer".into()
946    }
947}
948/// Runtime :ref:`configuration overview <config_runtime>`.
949#[derive(Clone, PartialEq, ::prost::Message)]
950pub struct LayeredRuntime {
951    /// The :ref:`layers <config_runtime_layering>` of the runtime. This is ordered
952    /// such that later layers in the list overlay earlier entries.
953    #[prost(message, repeated, tag = "1")]
954    pub layers: ::prost::alloc::vec::Vec<RuntimeLayer>,
955}
956impl ::prost::Name for LayeredRuntime {
957    const NAME: &'static str = "LayeredRuntime";
958    const PACKAGE: &'static str = "envoy.config.bootstrap.v3";
959    fn full_name() -> ::prost::alloc::string::String {
960        "envoy.config.bootstrap.v3.LayeredRuntime".into()
961    }
962    fn type_url() -> ::prost::alloc::string::String {
963        "type.googleapis.com/envoy.config.bootstrap.v3.LayeredRuntime".into()
964    }
965}
966/// Used to specify the header that needs to be registered as an inline header.
967///
968/// If request or response contain multiple headers with the same name and the header
969/// name is registered as an inline header. Then multiple headers will be folded
970/// into one, and multiple header values will be concatenated by a suitable delimiter.
971/// The delimiter is generally a comma.
972///
973/// For example, if 'foo' is registered as an inline header, and the headers contains
974/// the following two headers:
975///
976/// .. code-block:: text
977///
978///    foo: bar
979///    foo: eep
980///
981/// Then they will eventually be folded into:
982///
983/// .. code-block:: text
984///
985///    foo: bar, eep
986///
987/// Inline headers provide O(1) search performance, but each inline header imposes
988/// an additional memory overhead on all instances of the corresponding type of
989/// HeaderMap or TrailerMap.
990#[derive(Clone, PartialEq, ::prost::Message)]
991pub struct CustomInlineHeader {
992    /// The name of the header that is expected to be set as the inline header.
993    #[prost(string, tag = "1")]
994    pub inline_header_name: ::prost::alloc::string::String,
995    /// The type of the header that is expected to be set as the inline header.
996    #[prost(enumeration = "custom_inline_header::InlineHeaderType", tag = "2")]
997    pub inline_header_type: i32,
998}
999/// Nested message and enum types in `CustomInlineHeader`.
1000pub mod custom_inline_header {
1001    #[derive(
1002        Clone,
1003        Copy,
1004        Debug,
1005        PartialEq,
1006        Eq,
1007        Hash,
1008        PartialOrd,
1009        Ord,
1010        ::prost::Enumeration
1011    )]
1012    #[repr(i32)]
1013    pub enum InlineHeaderType {
1014        RequestHeader = 0,
1015        RequestTrailer = 1,
1016        ResponseHeader = 2,
1017        ResponseTrailer = 3,
1018    }
1019    impl InlineHeaderType {
1020        /// String value of the enum field names used in the ProtoBuf definition.
1021        ///
1022        /// The values are not transformed in any way and thus are considered stable
1023        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1024        pub fn as_str_name(&self) -> &'static str {
1025            match self {
1026                Self::RequestHeader => "REQUEST_HEADER",
1027                Self::RequestTrailer => "REQUEST_TRAILER",
1028                Self::ResponseHeader => "RESPONSE_HEADER",
1029                Self::ResponseTrailer => "RESPONSE_TRAILER",
1030            }
1031        }
1032        /// Creates an enum from field names used in the ProtoBuf definition.
1033        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1034            match value {
1035                "REQUEST_HEADER" => Some(Self::RequestHeader),
1036                "REQUEST_TRAILER" => Some(Self::RequestTrailer),
1037                "RESPONSE_HEADER" => Some(Self::ResponseHeader),
1038                "RESPONSE_TRAILER" => Some(Self::ResponseTrailer),
1039                _ => None,
1040            }
1041        }
1042    }
1043}
1044impl ::prost::Name for CustomInlineHeader {
1045    const NAME: &'static str = "CustomInlineHeader";
1046    const PACKAGE: &'static str = "envoy.config.bootstrap.v3";
1047    fn full_name() -> ::prost::alloc::string::String {
1048        "envoy.config.bootstrap.v3.CustomInlineHeader".into()
1049    }
1050    fn type_url() -> ::prost::alloc::string::String {
1051        "type.googleapis.com/envoy.config.bootstrap.v3.CustomInlineHeader".into()
1052    }
1053}
1054#[derive(Clone, Copy, PartialEq, ::prost::Message)]
1055pub struct MemoryAllocatorManager {
1056    /// Configures tcmalloc to perform background release of free memory in amount of bytes per ``memory_release_interval`` interval.
1057    /// If equals to ``0``, no memory release will occur. Defaults to ``0``.
1058    #[prost(uint64, tag = "1")]
1059    pub bytes_to_release: u64,
1060    /// Interval in milliseconds for memory releasing. If specified, during every
1061    /// interval Envoy will try to release ``bytes_to_release`` of free memory back to operating system for reuse.
1062    /// Defaults to 1000 milliseconds.
1063    #[prost(message, optional, tag = "2")]
1064    pub memory_release_interval: ::core::option::Option<
1065        super::super::super::super::google::protobuf::Duration,
1066    >,
1067}
1068impl ::prost::Name for MemoryAllocatorManager {
1069    const NAME: &'static str = "MemoryAllocatorManager";
1070    const PACKAGE: &'static str = "envoy.config.bootstrap.v3";
1071    fn full_name() -> ::prost::alloc::string::String {
1072        "envoy.config.bootstrap.v3.MemoryAllocatorManager".into()
1073    }
1074    fn type_url() -> ::prost::alloc::string::String {
1075        "type.googleapis.com/envoy.config.bootstrap.v3.MemoryAllocatorManager".into()
1076    }
1077}