summaryrefslogtreecommitdiff
path: root/src/rpc/envoy.extensions.common.dynamic_forward_proxy.v3.rs
blob: a9758ae298c6cc55828aef76a2921683b2c22e39 (plain)
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)