summaryrefslogtreecommitdiff
path: root/src/rpc/envoy.data.dns.v3.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/rpc/envoy.data.dns.v3.rs')
-rw-r--r--src/rpc/envoy.data.dns.v3.rs168
1 files changed, 168 insertions, 0 deletions
diff --git a/src/rpc/envoy.data.dns.v3.rs b/src/rpc/envoy.data.dns.v3.rs
new file mode 100644
index 00000000..fcdebe2b
--- /dev/null
+++ b/src/rpc/envoy.data.dns.v3.rs
@@ -0,0 +1,168 @@
+// @generated
+// This file is @generated by prost-build.
+// \[#protodoc-title: DNS Filter Table Data\]
+// :ref:`DNS Filter config overview <config_udp_listener_filters_dns_filter>`.
+
+/// This message contains the configuration for the DNS Filter if populated
+/// from the control plane
+#[allow(clippy::derive_partial_eq_without_eq)]
+#[derive(Clone, PartialEq, ::prost::Message)]
+pub struct DnsTable {
+ /// Control how many times Envoy makes an attempt to forward a query to an external DNS server
+ #[prost(uint32, tag="1")]
+ pub external_retry_count: u32,
+ /// Fully qualified domain names for which Envoy will respond to DNS queries. By leaving this
+ /// list empty, Envoy will forward all queries to external resolvers
+ #[prost(message, repeated, tag="2")]
+ pub virtual_domains: ::prost::alloc::vec::Vec<dns_table::DnsVirtualDomain>,
+ /// This field is deprecated and no longer used in Envoy. The filter's behavior has changed
+ /// internally to use a different data structure allowing the filter to determine whether a
+ /// query is for known domain without the use of this field.
+ ///
+ /// This field serves to help Envoy determine whether it can authoritatively answer a query
+ /// for a name matching a suffix in this list. If the query name does not match a suffix in
+ /// this list, Envoy will forward the query to an upstream DNS server
+ #[deprecated]
+ #[prost(message, repeated, tag="3")]
+ pub known_suffixes: ::prost::alloc::vec::Vec<super::super::super::r#type::matcher::v3::StringMatcher>,
+}
+/// Nested message and enum types in `DnsTable`.
+pub mod dns_table {
+ /// This message contains a list of IP addresses returned for a query for a known name
+ #[allow(clippy::derive_partial_eq_without_eq)]
+#[derive(Clone, PartialEq, ::prost::Message)]
+ pub struct AddressList {
+ /// This field contains a well formed IP address that is returned in the answer for a
+ /// name query. The address field can be an IPv4 or IPv6 address. Address family
+ /// detection is done automatically when Envoy parses the string. Since this field is
+ /// repeated, Envoy will return as many entries from this list in the DNS response while
+ /// keeping the response under 512 bytes
+ #[prost(string, repeated, tag="1")]
+ pub address: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
+ }
+ /// Specify the service protocol using a numeric or string value
+ #[allow(clippy::derive_partial_eq_without_eq)]
+#[derive(Clone, PartialEq, ::prost::Message)]
+ pub struct DnsServiceProtocol {
+ #[prost(oneof="dns_service_protocol::ProtocolConfig", tags="1, 2")]
+ pub protocol_config: ::core::option::Option<dns_service_protocol::ProtocolConfig>,
+ }
+ /// Nested message and enum types in `DnsServiceProtocol`.
+ pub mod dns_service_protocol {
+ #[allow(clippy::derive_partial_eq_without_eq)]
+#[derive(Clone, PartialEq, ::prost::Oneof)]
+ pub enum ProtocolConfig {
+ /// Specify the protocol number for the service. Envoy will try to resolve the number to
+ /// the protocol name. For example, 6 will resolve to "tcp". Refer to:
+ /// <https://www.iana.org/assignments/protocol-numbers/protocol-numbers.xhtml>
+ /// for protocol names and numbers
+ #[prost(uint32, tag="1")]
+ Number(u32),
+ /// Specify the protocol name for the service.
+ #[prost(string, tag="2")]
+ Name(::prost::alloc::string::String),
+ }
+ }
+ /// Specify the target for a given DNS service
+ /// \[#next-free-field: 6\]
+ #[allow(clippy::derive_partial_eq_without_eq)]
+#[derive(Clone, PartialEq, ::prost::Message)]
+ pub struct DnsServiceTarget {
+ /// The priority of the service record target
+ #[prost(uint32, tag="3")]
+ pub priority: u32,
+ /// The weight of the service record target
+ #[prost(uint32, tag="4")]
+ pub weight: u32,
+ /// The port to which the service is bound. This value is optional if the target is a
+ /// cluster. Setting port to zero in this case makes the filter use the port value
+ /// from the cluster host
+ #[prost(uint32, tag="5")]
+ pub port: u32,
+ /// Specify the name of the endpoint for the Service. The name is a hostname or a cluster
+ #[prost(oneof="dns_service_target::EndpointType", tags="1, 2")]
+ pub endpoint_type: ::core::option::Option<dns_service_target::EndpointType>,
+ }
+ /// Nested message and enum types in `DnsServiceTarget`.
+ pub mod dns_service_target {
+ /// Specify the name of the endpoint for the Service. The name is a hostname or a cluster
+ #[allow(clippy::derive_partial_eq_without_eq)]
+#[derive(Clone, PartialEq, ::prost::Oneof)]
+ pub enum EndpointType {
+ /// Use a resolvable hostname as the endpoint for a service.
+ #[prost(string, tag="1")]
+ HostName(::prost::alloc::string::String),
+ /// Use a cluster name as the endpoint for a service.
+ #[prost(string, tag="2")]
+ ClusterName(::prost::alloc::string::String),
+ }
+ }
+ /// This message defines a service selection record returned for a service query in a domain
+ #[allow(clippy::derive_partial_eq_without_eq)]
+#[derive(Clone, PartialEq, ::prost::Message)]
+ pub struct DnsService {
+ /// The name of the service without the protocol or domain name
+ #[prost(string, tag="1")]
+ pub service_name: ::prost::alloc::string::String,
+ /// The service protocol. This can be specified as a string or the numeric value of the protocol
+ #[prost(message, optional, tag="2")]
+ pub protocol: ::core::option::Option<DnsServiceProtocol>,
+ /// The service entry time to live. This is independent from the DNS Answer record TTL
+ #[prost(message, optional, tag="3")]
+ pub ttl: ::core::option::Option<super::super::super::super::super::google::protobuf::Duration>,
+ /// The list of targets hosting the service
+ #[prost(message, repeated, tag="4")]
+ pub targets: ::prost::alloc::vec::Vec<DnsServiceTarget>,
+ }
+ /// Define a list of service records for a given service
+ #[allow(clippy::derive_partial_eq_without_eq)]
+#[derive(Clone, PartialEq, ::prost::Message)]
+ pub struct DnsServiceList {
+ #[prost(message, repeated, tag="1")]
+ pub services: ::prost::alloc::vec::Vec<DnsService>,
+ }
+ #[allow(clippy::derive_partial_eq_without_eq)]
+#[derive(Clone, PartialEq, ::prost::Message)]
+ pub struct DnsEndpoint {
+ #[prost(oneof="dns_endpoint::EndpointConfig", tags="1, 2, 3")]
+ pub endpoint_config: ::core::option::Option<dns_endpoint::EndpointConfig>,
+ }
+ /// Nested message and enum types in `DnsEndpoint`.
+ pub mod dns_endpoint {
+ #[allow(clippy::derive_partial_eq_without_eq)]
+#[derive(Clone, PartialEq, ::prost::Oneof)]
+ pub enum EndpointConfig {
+ /// Define a list of addresses to return for the specified endpoint
+ #[prost(message, tag="1")]
+ AddressList(super::AddressList),
+ /// Define a cluster whose addresses are returned for the specified endpoint
+ #[prost(string, tag="2")]
+ ClusterName(::prost::alloc::string::String),
+ /// Define a DNS Service List for the specified endpoint
+ #[prost(message, tag="3")]
+ ServiceList(super::DnsServiceList),
+ }
+ }
+ #[allow(clippy::derive_partial_eq_without_eq)]
+#[derive(Clone, PartialEq, ::prost::Message)]
+ pub struct DnsVirtualDomain {
+ /// A domain name for which Envoy will respond to query requests.
+ /// Wildcard records are supported on the first label only, e.g. ``*.example.com`` or ``*.subdomain.example.com``.
+ /// Names such as ``*example.com``, ``subdomain.*.example.com``, ``*subdomain.example.com``, etc
+ /// are not valid wildcard names and asterisk will be interpreted as a literal ``*`` character.
+ /// Wildcard records match subdomains on any levels, e.g. ``*.example.com`` will match
+ /// ``foo.example.com``, ``bar.foo.example.com``, ``baz.bar.foo.example.com``, etc. In case there are multiple
+ /// wildcard records, the longest wildcard match will be used, e.g. if there are wildcard records for
+ /// ``*.example.com`` and ``*.foo.example.com`` and the query is for ``bar.foo.example.com``, the latter will be used.
+ /// Specific records will always take precedence over wildcard records.
+ #[prost(string, tag="1")]
+ pub name: ::prost::alloc::string::String,
+ /// The configuration containing the method to determine the address of this endpoint
+ #[prost(message, optional, tag="2")]
+ pub endpoint: ::core::option::Option<DnsEndpoint>,
+ /// Sets the TTL in DNS answers from Envoy returned to the client. The default TTL is 300s
+ #[prost(message, optional, tag="3")]
+ pub answer_ttl: ::core::option::Option<super::super::super::super::super::google::protobuf::Duration>,
+ }
+}
+// @@protoc_insertion_point(module)