1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
|
// @generated
// This file is @generated by prost-build.
// \[#protodoc-title: Dynamic forward proxy common configuration\]
/// Configuration of circuit breakers for resolver.
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct DnsCacheCircuitBreakers {
/// The maximum number of pending requests that Envoy will allow to the
/// resolver. If not specified, the default is 1024.
#[prost(message, optional, tag="1")]
pub max_pending_requests: ::core::option::Option<super::super::super::super::super::google::protobuf::UInt32Value>,
}
/// Configuration for the dynamic forward proxy DNS cache. See the :ref:`architecture overview
/// <arch_overview_http_dynamic_forward_proxy>` for more information.
/// \[#next-free-field: 16\]
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct DnsCacheConfig {
/// The name of the cache. Multiple named caches allow independent dynamic forward proxy
/// configurations to operate within a single Envoy process using different configurations. All
/// configurations with the same name *must* otherwise have the same settings when referenced
/// from different configuration components. Configuration will fail to load if this is not
/// the case.
#[prost(string, tag="1")]
pub name: ::prost::alloc::string::String,
/// The DNS lookup family to use during resolution.
///
/// [#comment:TODO(mattklein123): Figure out how to support IPv4/IPv6 "happy eyeballs" mode. The
/// way this might work is a new lookup family which returns both IPv4 and IPv6 addresses, and
/// then configures a host to have a primary and fall back address. With this, we could very
/// likely build a "happy eyeballs" connection pool which would race the primary / fall back
/// address and return the one that wins. This same method could potentially also be used for
/// QUIC to TCP fall back.]
#[prost(enumeration="super::super::super::super::config::cluster::v3::cluster::DnsLookupFamily", tag="2")]
pub dns_lookup_family: i32,
/// The DNS refresh rate for unresolved DNS hosts. If not specified defaults to 60s.
///
/// The refresh rate is rounded to the closest millisecond, and must be at least 1ms.
///
/// Once a host has been resolved, the refresh rate will be the DNS TTL, capped
/// at a minimum of ``dns_min_refresh_rate``.
#[prost(message, optional, tag="3")]
pub dns_refresh_rate: ::core::option::Option<super::super::super::super::super::google::protobuf::Duration>,
/// The minimum rate that DNS resolution will occur. Per ``dns_refresh_rate``, once a host is
/// resolved, the DNS TTL will be used, with a minimum set by ``dns_min_refresh_rate``.
/// ``dns_min_refresh_rate`` defaults to 5s and must also be >= 1s.
#[prost(message, optional, tag="14")]
pub dns_min_refresh_rate: ::core::option::Option<super::super::super::super::super::google::protobuf::Duration>,
/// The TTL for hosts that are unused. Hosts that have not been used in the configured time
/// interval will be purged. If not specified defaults to 5m.
///
/// .. note:
///
/// The TTL is only checked at the time of DNS refresh, as specified by ``dns_refresh_rate``. This
/// means that if the configured TTL is shorter than the refresh rate the host may not be removed
/// immediately.
///
/// .. note:
///
/// The TTL has no relation to DNS TTL and is only used to control Envoy's resource usage.
#[prost(message, optional, tag="4")]
pub host_ttl: ::core::option::Option<super::super::super::super::super::google::protobuf::Duration>,
/// The maximum number of hosts that the cache will hold. If not specified defaults to 1024.
///
/// .. note:
///
/// The implementation is approximate and enforced independently on each worker thread, thus
/// it is possible for the maximum hosts in the cache to go slightly above the configured
/// value depending on timing. This is similar to how other circuit breakers work.
#[prost(message, optional, tag="5")]
pub max_hosts: ::core::option::Option<super::super::super::super::super::google::protobuf::UInt32Value>,
/// Disable the DNS refresh on failure. If this field is set to true, it will ignore the
/// :ref:`typed_dns_resolver_config <envoy_v3_api_field_extensions.common.dynamic_forward_proxy.v3.DnsCacheConfig.dns_failure_refresh_rate>`.
/// If not specified, it defaults to false. By enabling this feature, the failed hosts will now be treated as a cache miss,
/// allowing the failed hosts to be resolved on demand.
#[prost(bool, tag="15")]
pub disable_dns_refresh_on_failure: bool,
/// If the DNS failure refresh rate is specified,
/// this is used as the cache's DNS refresh rate when DNS requests are failing. If this setting is
/// not specified, the failure refresh rate defaults to the dns_refresh_rate.
#[prost(message, optional, tag="6")]
pub dns_failure_refresh_rate: ::core::option::Option<super::super::super::super::config::cluster::v3::cluster::RefreshRate>,
/// The config of circuit breakers for resolver. It provides a configurable threshold.
/// Envoy will use dns cache circuit breakers with default settings even if this value is not set.
#[prost(message, optional, tag="7")]
pub dns_cache_circuit_breaker: ::core::option::Option<DnsCacheCircuitBreakers>,
/// Always use TCP queries instead of UDP queries for DNS lookups.
/// This field is deprecated in favor of ``dns_resolution_config``
/// which aggregates all of the DNS resolver configuration in a single message.
#[deprecated]
#[prost(bool, tag="8")]
pub use_tcp_for_dns_lookups: bool,
/// DNS resolution configuration which includes the underlying dns resolver addresses and options.
/// This field is deprecated in favor of
/// :ref:`typed_dns_resolver_config <envoy_v3_api_field_extensions.common.dynamic_forward_proxy.v3.DnsCacheConfig.typed_dns_resolver_config>`.
#[deprecated]
#[prost(message, optional, tag="9")]
pub dns_resolution_config: ::core::option::Option<super::super::super::super::config::core::v3::DnsResolutionConfig>,
/// DNS resolver type configuration extension. This extension can be used to configure c-ares, apple,
/// or any other DNS resolver types and the related parameters.
/// For example, an object of
/// :ref:`CaresDnsResolverConfig <envoy_v3_api_msg_extensions.network.dns_resolver.cares.v3.CaresDnsResolverConfig>`
/// can be packed into this ``typed_dns_resolver_config``. This configuration replaces the
/// :ref:`dns_resolution_config <envoy_v3_api_field_extensions.common.dynamic_forward_proxy.v3.DnsCacheConfig.dns_resolution_config>`
/// configuration.
/// During the transition period when both ``dns_resolution_config`` and ``typed_dns_resolver_config`` exists,
/// when ``typed_dns_resolver_config`` is in place, Envoy will use it and ignore ``dns_resolution_config``.
/// When ``typed_dns_resolver_config`` is missing, the default behavior is in place.
/// \[#extension-category: envoy.network.dns_resolver\]
#[prost(message, optional, tag="12")]
pub typed_dns_resolver_config: ::core::option::Option<super::super::super::super::config::core::v3::TypedExtensionConfig>,
/// Hostnames that should be preresolved into the cache upon creation. This might provide a
/// performance improvement, in the form of cache hits, for hostnames that are going to be
/// resolved during steady state and are known at config load time.
#[prost(message, repeated, tag="10")]
pub preresolve_hostnames: ::prost::alloc::vec::Vec<super::super::super::super::config::core::v3::SocketAddress>,
/// The timeout used for DNS queries. This timeout is independent of any timeout and retry policy
/// used by the underlying DNS implementation (e.g., c-areas and Apple DNS) which are opaque.
/// Setting this timeout will ensure that queries succeed or fail within the specified time frame
/// and are then retried using the standard refresh rates. Setting it to 0 will disable the Envoy DNS
/// query timeout and use the underlying DNS implementation timeout. Defaults to 5s if not set.
#[prost(message, optional, tag="11")]
pub dns_query_timeout: ::core::option::Option<super::super::super::super::super::google::protobuf::Duration>,
/// Configuration to flush the DNS cache to long term storage.
#[prost(message, optional, tag="13")]
pub key_value_config: ::core::option::Option<super::super::super::super::config::common::key_value::v3::KeyValueStoreConfig>,
}
// @@protoc_insertion_point(module)
|