summaryrefslogtreecommitdiff
path: root/src/rpc/envoy.api.v2.core.rs
diff options
context:
space:
mode:
authormo khan <mo@mokhan.ca>2025-07-16 13:44:59 -0600
committermo khan <mo@mokhan.ca>2025-07-16 13:44:59 -0600
commitaadfbeb39d0ac5ccb1a19899d7680b1c96b1a6cf (patch)
tree293cb102463ab1aeeac6aa899cedbbbf03ed6187 /src/rpc/envoy.api.v2.core.rs
parente97b15bcb9581b895d8431f3f3eaf7a9dd1bcac6 (diff)
chore: add generated rpc code
Diffstat (limited to 'src/rpc/envoy.api.v2.core.rs')
-rw-r--r--src/rpc/envoy.api.v2.core.rs1969
1 files changed, 1969 insertions, 0 deletions
diff --git a/src/rpc/envoy.api.v2.core.rs b/src/rpc/envoy.api.v2.core.rs
new file mode 100644
index 00000000..a03b8f7a
--- /dev/null
+++ b/src/rpc/envoy.api.v2.core.rs
@@ -0,0 +1,1969 @@
+// @generated
+// This file is @generated by prost-build.
+// \[#protodoc-title: Socket Option \]
+
+/// Generic socket option message. This would be used to set socket options that
+/// might not exist in upstream kernels or precompiled Envoy binaries.
+/// \[#next-free-field: 7\]
+#[allow(clippy::derive_partial_eq_without_eq)]
+#[derive(Clone, PartialEq, ::prost::Message)]
+pub struct SocketOption {
+ /// An optional name to give this socket option for debugging, etc.
+ /// Uniqueness is not required and no special meaning is assumed.
+ #[prost(string, tag="1")]
+ pub description: ::prost::alloc::string::String,
+ /// Corresponding to the level value passed to setsockopt, such as IPPROTO_TCP
+ #[prost(int64, tag="2")]
+ pub level: i64,
+ /// The numeric name as passed to setsockopt
+ #[prost(int64, tag="3")]
+ pub name: i64,
+ /// The state in which the option will be applied. When used in BindConfig
+ /// STATE_PREBIND is currently the only valid value.
+ #[prost(enumeration="socket_option::SocketState", tag="6")]
+ pub state: i32,
+ #[prost(oneof="socket_option::Value", tags="4, 5")]
+ pub value: ::core::option::Option<socket_option::Value>,
+}
+/// Nested message and enum types in `SocketOption`.
+pub mod socket_option {
+ #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
+ #[repr(i32)]
+ pub enum SocketState {
+ /// Socket options are applied after socket creation but before binding the socket to a port
+ StatePrebind = 0,
+ /// Socket options are applied after binding the socket to a port but before calling listen()
+ StateBound = 1,
+ /// Socket options are applied after calling listen()
+ StateListening = 2,
+ }
+ impl SocketState {
+ /// String value of the enum field names used in the ProtoBuf definition.
+ ///
+ /// The values are not transformed in any way and thus are considered stable
+ /// (if the ProtoBuf definition does not change) and safe for programmatic use.
+ pub fn as_str_name(&self) -> &'static str {
+ match self {
+ SocketState::StatePrebind => "STATE_PREBIND",
+ SocketState::StateBound => "STATE_BOUND",
+ SocketState::StateListening => "STATE_LISTENING",
+ }
+ }
+ /// Creates an enum from field names used in the ProtoBuf definition.
+ pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
+ match value {
+ "STATE_PREBIND" => Some(Self::StatePrebind),
+ "STATE_BOUND" => Some(Self::StateBound),
+ "STATE_LISTENING" => Some(Self::StateListening),
+ _ => None,
+ }
+ }
+ }
+ #[allow(clippy::derive_partial_eq_without_eq)]
+#[derive(Clone, PartialEq, ::prost::Oneof)]
+ pub enum Value {
+ /// Because many sockopts take an int value.
+ #[prost(int64, tag="4")]
+ IntValue(i64),
+ /// Otherwise it's a byte buffer.
+ #[prost(bytes, tag="5")]
+ BufValue(::prost::alloc::vec::Vec<u8>),
+ }
+}
+// \[#protodoc-title: Network addresses\]
+
+#[allow(clippy::derive_partial_eq_without_eq)]
+#[derive(Clone, PartialEq, ::prost::Message)]
+pub struct Pipe {
+ /// Unix Domain Socket path. On Linux, paths starting with '@' will use the
+ /// abstract namespace. The starting '@' is replaced by a null byte by Envoy.
+ /// Paths starting with '@' will result in an error in environments other than
+ /// Linux.
+ #[prost(string, tag="1")]
+ pub path: ::prost::alloc::string::String,
+ /// The mode for the Pipe. Not applicable for abstract sockets.
+ #[prost(uint32, tag="2")]
+ pub mode: u32,
+}
+/// \[#next-free-field: 7\]
+#[allow(clippy::derive_partial_eq_without_eq)]
+#[derive(Clone, PartialEq, ::prost::Message)]
+pub struct SocketAddress {
+ #[prost(enumeration="socket_address::Protocol", tag="1")]
+ pub protocol: i32,
+ /// The address for this socket. :ref:`Listeners <config_listeners>` will bind
+ /// to the address. An empty address is not allowed. Specify ``0.0.0.0`` or ``::``
+ /// to bind to any address. [#comment:TODO(zuercher) reinstate when implemented:
+ /// It is possible to distinguish a Listener address via the prefix/suffix matching
+ /// in :ref:`FilterChainMatch <envoy_api_msg_listener.FilterChainMatch>`.] When used
+ /// within an upstream :ref:`BindConfig <envoy_api_msg_core.BindConfig>`, the address
+ /// controls the source address of outbound connections. For :ref:`clusters
+ /// <envoy_api_msg_Cluster>`, the cluster type determines whether the
+ /// address must be an IP (*STATIC* or *EDS* clusters) or a hostname resolved by DNS
+ /// (*STRICT_DNS* or *LOGICAL_DNS* clusters). Address resolution can be customized
+ /// via :ref:`resolver_name <envoy_api_field_core.SocketAddress.resolver_name>`.
+ #[prost(string, tag="2")]
+ pub address: ::prost::alloc::string::String,
+ /// The name of the custom resolver. This must have been registered with Envoy. If
+ /// this is empty, a context dependent default applies. If the address is a concrete
+ /// IP address, no resolution will occur. If address is a hostname this
+ /// should be set for resolution other than DNS. Specifying a custom resolver with
+ /// *STRICT_DNS* or *LOGICAL_DNS* will generate an error at runtime.
+ #[prost(string, tag="5")]
+ pub resolver_name: ::prost::alloc::string::String,
+ /// When binding to an IPv6 address above, this enables `IPv4 compatibility
+ /// <<https://tools.ietf.org/html/rfc3493#page-11>`_.> Binding to ``::`` will
+ /// allow both IPv4 and IPv6 connections, with peer IPv4 addresses mapped into
+ /// IPv6 space as ``::FFFF:<IPv4-address>``.
+ #[prost(bool, tag="6")]
+ pub ipv4_compat: bool,
+ #[prost(oneof="socket_address::PortSpecifier", tags="3, 4")]
+ pub port_specifier: ::core::option::Option<socket_address::PortSpecifier>,
+}
+/// Nested message and enum types in `SocketAddress`.
+pub mod socket_address {
+ #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
+ #[repr(i32)]
+ pub enum Protocol {
+ Tcp = 0,
+ Udp = 1,
+ }
+ impl Protocol {
+ /// String value of the enum field names used in the ProtoBuf definition.
+ ///
+ /// The values are not transformed in any way and thus are considered stable
+ /// (if the ProtoBuf definition does not change) and safe for programmatic use.
+ pub fn as_str_name(&self) -> &'static str {
+ match self {
+ Protocol::Tcp => "TCP",
+ Protocol::Udp => "UDP",
+ }
+ }
+ /// Creates an enum from field names used in the ProtoBuf definition.
+ pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
+ match value {
+ "TCP" => Some(Self::Tcp),
+ "UDP" => Some(Self::Udp),
+ _ => None,
+ }
+ }
+ }
+ #[allow(clippy::derive_partial_eq_without_eq)]
+#[derive(Clone, PartialEq, ::prost::Oneof)]
+ pub enum PortSpecifier {
+ #[prost(uint32, tag="3")]
+ PortValue(u32),
+ /// This is only valid if :ref:`resolver_name
+ /// <envoy_api_field_core.SocketAddress.resolver_name>` is specified below and the
+ /// named resolver is capable of named port resolution.
+ #[prost(string, tag="4")]
+ NamedPort(::prost::alloc::string::String),
+ }
+}
+#[allow(clippy::derive_partial_eq_without_eq)]
+#[derive(Clone, Copy, PartialEq, ::prost::Message)]
+pub struct TcpKeepalive {
+ /// Maximum number of keepalive probes to send without response before deciding
+ /// the connection is dead. Default is to use the OS level configuration (unless
+ /// overridden, Linux defaults to 9.)
+ #[prost(message, optional, tag="1")]
+ pub keepalive_probes: ::core::option::Option<super::super::super::super::google::protobuf::UInt32Value>,
+ /// The number of seconds a connection needs to be idle before keep-alive probes
+ /// start being sent. Default is to use the OS level configuration (unless
+ /// overridden, Linux defaults to 7200s (i.e., 2 hours.)
+ #[prost(message, optional, tag="2")]
+ pub keepalive_time: ::core::option::Option<super::super::super::super::google::protobuf::UInt32Value>,
+ /// The number of seconds between keep-alive probes. Default is to use the OS
+ /// level configuration (unless overridden, Linux defaults to 75s.)
+ #[prost(message, optional, tag="3")]
+ pub keepalive_interval: ::core::option::Option<super::super::super::super::google::protobuf::UInt32Value>,
+}
+#[allow(clippy::derive_partial_eq_without_eq)]
+#[derive(Clone, PartialEq, ::prost::Message)]
+pub struct BindConfig {
+ /// The address to bind to when creating a socket.
+ #[prost(message, optional, tag="1")]
+ pub source_address: ::core::option::Option<SocketAddress>,
+ /// Whether to set the *IP_FREEBIND* option when creating the socket. When this
+ /// flag is set to true, allows the :ref:`source_address
+ /// <envoy_api_field_UpstreamBindConfig.source_address>` to be an IP address
+ /// that is not configured on the system running Envoy. When this flag is set
+ /// to false, the option *IP_FREEBIND* is disabled on the socket. When this
+ /// flag is not set (default), the socket is not modified, i.e. the option is
+ /// neither enabled nor disabled.
+ #[prost(message, optional, tag="2")]
+ pub freebind: ::core::option::Option<super::super::super::super::google::protobuf::BoolValue>,
+ /// Additional socket options that may not be present in Envoy source code or
+ /// precompiled binaries.
+ #[prost(message, repeated, tag="3")]
+ pub socket_options: ::prost::alloc::vec::Vec<SocketOption>,
+}
+/// Addresses specify either a logical or physical address and port, which are
+/// used to tell Envoy where to bind/listen, connect to upstream and find
+/// management servers.
+#[allow(clippy::derive_partial_eq_without_eq)]
+#[derive(Clone, PartialEq, ::prost::Message)]
+pub struct Address {
+ #[prost(oneof="address::Address", tags="1, 2")]
+ pub address: ::core::option::Option<address::Address>,
+}
+/// Nested message and enum types in `Address`.
+pub mod address {
+ #[allow(clippy::derive_partial_eq_without_eq)]
+#[derive(Clone, PartialEq, ::prost::Oneof)]
+ pub enum Address {
+ #[prost(message, tag="1")]
+ SocketAddress(super::SocketAddress),
+ #[prost(message, tag="2")]
+ Pipe(super::Pipe),
+ }
+}
+/// CidrRange specifies an IP Address and a prefix length to construct
+/// the subnet mask for a `CIDR <<https://tools.ietf.org/html/rfc4632>`_> range.
+#[allow(clippy::derive_partial_eq_without_eq)]
+#[derive(Clone, PartialEq, ::prost::Message)]
+pub struct CidrRange {
+ /// IPv4 or IPv6 address, e.g. ``192.0.0.0`` or ``2001:db8::``.
+ #[prost(string, tag="1")]
+ pub address_prefix: ::prost::alloc::string::String,
+ /// Length of prefix, e.g. 0, 32. Defaults to 0 when unset.
+ #[prost(message, optional, tag="2")]
+ pub prefix_len: ::core::option::Option<super::super::super::super::google::protobuf::UInt32Value>,
+}
+// \[#protodoc-title: Backoff Strategy\]
+
+/// Configuration defining a jittered exponential back off strategy.
+#[allow(clippy::derive_partial_eq_without_eq)]
+#[derive(Clone, Copy, PartialEq, ::prost::Message)]
+pub struct BackoffStrategy {
+ /// The base interval to be used for the next back off computation. It should
+ /// be greater than zero and less than or equal to :ref:`max_interval
+ /// <envoy_api_field_core.BackoffStrategy.max_interval>`.
+ #[prost(message, optional, tag="1")]
+ pub base_interval: ::core::option::Option<super::super::super::super::google::protobuf::Duration>,
+ /// Specifies the maximum interval between retries. This parameter is optional,
+ /// but must be greater than or equal to the :ref:`base_interval
+ /// <envoy_api_field_core.BackoffStrategy.base_interval>` if set. The default
+ /// is 10 times the :ref:`base_interval
+ /// <envoy_api_field_core.BackoffStrategy.base_interval>`.
+ #[prost(message, optional, tag="2")]
+ pub max_interval: ::core::option::Option<super::super::super::super::google::protobuf::Duration>,
+}
+// \[#protodoc-title: HTTP Service URI \]
+
+/// Envoy external URI descriptor
+#[allow(clippy::derive_partial_eq_without_eq)]
+#[derive(Clone, PartialEq, ::prost::Message)]
+pub struct HttpUri {
+ /// The HTTP server URI. It should be a full FQDN with protocol, host and path.
+ ///
+ /// Example:
+ ///
+ /// .. code-block:: yaml
+ ///
+ /// uri: <https://www.googleapis.com/oauth2/v1/certs>
+ ///
+ #[prost(string, tag="1")]
+ pub uri: ::prost::alloc::string::String,
+ /// Sets the maximum duration in milliseconds that a response can take to arrive upon request.
+ #[prost(message, optional, tag="3")]
+ pub timeout: ::core::option::Option<super::super::super::super::google::protobuf::Duration>,
+ /// Specify how `uri` is to be fetched. Today, this requires an explicit
+ /// cluster, but in the future we may support dynamic cluster creation or
+ /// inline DNS resolution. See `issue
+ /// <<https://github.com/envoyproxy/envoy/issues/1606>`_.>
+ #[prost(oneof="http_uri::HttpUpstreamType", tags="2")]
+ pub http_upstream_type: ::core::option::Option<http_uri::HttpUpstreamType>,
+}
+/// Nested message and enum types in `HttpUri`.
+pub mod http_uri {
+ /// Specify how `uri` is to be fetched. Today, this requires an explicit
+ /// cluster, but in the future we may support dynamic cluster creation or
+ /// inline DNS resolution. See `issue
+ /// <<https://github.com/envoyproxy/envoy/issues/1606>`_.>
+ #[allow(clippy::derive_partial_eq_without_eq)]
+#[derive(Clone, PartialEq, ::prost::Oneof)]
+ pub enum HttpUpstreamType {
+ /// A cluster is created in the Envoy "cluster_manager" config
+ /// section. This field specifies the cluster name.
+ ///
+ /// Example:
+ ///
+ /// .. code-block:: yaml
+ ///
+ /// cluster: jwks_cluster
+ ///
+ #[prost(string, tag="2")]
+ Cluster(::prost::alloc::string::String),
+ }
+}
+/// Identifies location of where either Envoy runs or where upstream hosts run.
+#[allow(clippy::derive_partial_eq_without_eq)]
+#[derive(Clone, PartialEq, ::prost::Message)]
+pub struct Locality {
+ /// Region this :ref:`zone <envoy_api_field_core.Locality.zone>` belongs to.
+ #[prost(string, tag="1")]
+ pub region: ::prost::alloc::string::String,
+ /// Defines the local service zone where Envoy is running. Though optional, it
+ /// should be set if discovery service routing is used and the discovery
+ /// service exposes :ref:`zone data <envoy_api_field_endpoint.LocalityLbEndpoints.locality>`,
+ /// either in this message or via :option:`--service-zone`. The meaning of zone
+ /// is context dependent, e.g. `Availability Zone (AZ)
+ /// <<https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-regions-availability-zones.html>`_>
+ /// on AWS, `Zone <<https://cloud.google.com/compute/docs/regions-zones/>`_> on
+ /// GCP, etc.
+ #[prost(string, tag="2")]
+ pub zone: ::prost::alloc::string::String,
+ /// When used for locality of upstream hosts, this field further splits zone
+ /// into smaller chunks of sub-zones so they can be load balanced
+ /// independently.
+ #[prost(string, tag="3")]
+ pub sub_zone: ::prost::alloc::string::String,
+}
+/// BuildVersion combines SemVer version of extension with free-form build information
+/// (i.e. 'alpha', 'private-build') as a set of strings.
+#[allow(clippy::derive_partial_eq_without_eq)]
+#[derive(Clone, PartialEq, ::prost::Message)]
+pub struct BuildVersion {
+ /// SemVer version of extension.
+ #[prost(message, optional, tag="1")]
+ pub version: ::core::option::Option<super::super::super::r#type::SemanticVersion>,
+ /// Free-form build information.
+ /// Envoy defines several well known keys in the source/common/version/version.h file
+ #[prost(message, optional, tag="2")]
+ pub metadata: ::core::option::Option<super::super::super::super::google::protobuf::Struct>,
+}
+/// Version and identification for an Envoy extension.
+/// \[#next-free-field: 6\]
+#[allow(clippy::derive_partial_eq_without_eq)]
+#[derive(Clone, PartialEq, ::prost::Message)]
+pub struct Extension {
+ /// This is the name of the Envoy filter as specified in the Envoy
+ /// configuration, e.g. envoy.filters.http.router, com.acme.widget.
+ #[prost(string, tag="1")]
+ pub name: ::prost::alloc::string::String,
+ /// Category of the extension.
+ /// Extension category names use reverse DNS notation. For instance "envoy.filters.listener"
+ /// for Envoy's built-in listener filters or "com.acme.filters.http" for HTTP filters from
+ /// acme.com vendor.
+ /// \[#comment:TODO(yanavlasov): Link to the doc with existing envoy category names.\]
+ #[prost(string, tag="2")]
+ pub category: ::prost::alloc::string::String,
+ /// \[#not-implemented-hide:\] Type descriptor of extension configuration proto.
+ /// \[#comment:TODO(yanavlasov): Link to the doc with existing configuration protos.\]
+ /// \[#comment:TODO(yanavlasov): Add tests when PR #9391 lands.\]
+ #[prost(string, tag="3")]
+ pub type_descriptor: ::prost::alloc::string::String,
+ /// The version is a property of the extension and maintained independently
+ /// of other extensions and the Envoy API.
+ /// This field is not set when extension did not provide version information.
+ #[prost(message, optional, tag="4")]
+ pub version: ::core::option::Option<BuildVersion>,
+ /// Indicates that the extension is present but was disabled via dynamic configuration.
+ #[prost(bool, tag="5")]
+ pub disabled: bool,
+}
+/// Identifies a specific Envoy instance. The node identifier is presented to the
+/// management server, which may use this identifier to distinguish per Envoy
+/// configuration for serving.
+/// \[#next-free-field: 12\]
+#[allow(clippy::derive_partial_eq_without_eq)]
+#[derive(Clone, PartialEq, ::prost::Message)]
+pub struct Node {
+ /// An opaque node identifier for the Envoy node. This also provides the local
+ /// service node name. It should be set if any of the following features are
+ /// used: :ref:`statsd <arch_overview_statistics>`, :ref:`CDS
+ /// <config_cluster_manager_cds>`, and :ref:`HTTP tracing
+ /// <arch_overview_tracing>`, either in this message or via
+ /// :option:`--service-node`.
+ #[prost(string, tag="1")]
+ pub id: ::prost::alloc::string::String,
+ /// Defines the local service cluster name where Envoy is running. Though
+ /// optional, it should be set if any of the following features are used:
+ /// :ref:`statsd <arch_overview_statistics>`, :ref:`health check cluster
+ /// verification
+ /// <envoy_api_field_core.HealthCheck.HttpHealthCheck.service_name_matcher>`,
+ /// :ref:`runtime override directory <envoy_api_msg_config.bootstrap.v2.Runtime>`,
+ /// :ref:`user agent addition
+ /// <envoy_api_field_config.filter.network.http_connection_manager.v2.HttpConnectionManager.add_user_agent>`,
+ /// :ref:`HTTP global rate limiting <config_http_filters_rate_limit>`,
+ /// :ref:`CDS <config_cluster_manager_cds>`, and :ref:`HTTP tracing
+ /// <arch_overview_tracing>`, either in this message or via
+ /// :option:`--service-cluster`.
+ #[prost(string, tag="2")]
+ pub cluster: ::prost::alloc::string::String,
+ /// Opaque metadata extending the node identifier. Envoy will pass this
+ /// directly to the management server.
+ #[prost(message, optional, tag="3")]
+ pub metadata: ::core::option::Option<super::super::super::super::google::protobuf::Struct>,
+ /// Locality specifying where the Envoy instance is running.
+ #[prost(message, optional, tag="4")]
+ pub locality: ::core::option::Option<Locality>,
+ /// This is motivated by informing a management server during canary which
+ /// version of Envoy is being tested in a heterogeneous fleet. This will be set
+ /// by Envoy in management server RPCs.
+ /// This field is deprecated in favor of the user_agent_name and user_agent_version values.
+ #[deprecated]
+ #[prost(string, tag="5")]
+ pub build_version: ::prost::alloc::string::String,
+ /// Free-form string that identifies the entity requesting config.
+ /// E.g. "envoy" or "grpc"
+ #[prost(string, tag="6")]
+ pub user_agent_name: ::prost::alloc::string::String,
+ /// List of extensions and their versions supported by the node.
+ #[prost(message, repeated, tag="9")]
+ pub extensions: ::prost::alloc::vec::Vec<Extension>,
+ /// Client feature support list. These are well known features described
+ /// in the Envoy API repository for a given major version of an API. Client features
+ /// use reverse DNS naming scheme, for example `com.acme.feature`.
+ /// See :ref:`the list of features <client_features>` that xDS client may
+ /// support.
+ #[prost(string, repeated, tag="10")]
+ pub client_features: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
+ /// Known listening ports on the node as a generic hint to the management server
+ /// for filtering :ref:`listeners <config_listeners>` to be returned. For example,
+ /// if there is a listener bound to port 80, the list can optionally contain the
+ /// SocketAddress `(0.0.0.0,80)`. The field is optional and just a hint.
+ #[prost(message, repeated, tag="11")]
+ pub listening_addresses: ::prost::alloc::vec::Vec<Address>,
+ #[prost(oneof="node::UserAgentVersionType", tags="7, 8")]
+ pub user_agent_version_type: ::core::option::Option<node::UserAgentVersionType>,
+}
+/// Nested message and enum types in `Node`.
+pub mod node {
+ #[allow(clippy::derive_partial_eq_without_eq)]
+#[derive(Clone, PartialEq, ::prost::Oneof)]
+ pub enum UserAgentVersionType {
+ /// Free-form string that identifies the version of the entity requesting config.
+ /// E.g. "1.12.2" or "abcd1234", or "SpecialEnvoyBuild"
+ #[prost(string, tag="7")]
+ UserAgentVersion(::prost::alloc::string::String),
+ /// Structured version of the entity requesting config.
+ #[prost(message, tag="8")]
+ UserAgentBuildVersion(super::BuildVersion),
+ }
+}
+/// Metadata provides additional inputs to filters based on matched listeners,
+/// filter chains, routes and endpoints. It is structured as a map, usually from
+/// filter name (in reverse DNS format) to metadata specific to the filter. Metadata
+/// key-values for a filter are merged as connection and request handling occurs,
+/// with later values for the same key overriding earlier values.
+///
+/// An example use of metadata is providing additional values to
+/// http_connection_manager in the envoy.http_connection_manager.access_log
+/// namespace.
+///
+/// Another example use of metadata is to per service config info in cluster metadata, which may get
+/// consumed by multiple filters.
+///
+/// For load balancing, Metadata provides a means to subset cluster endpoints.
+/// Endpoints have a Metadata object associated and routes contain a Metadata
+/// object to match against. There are some well defined metadata used today for
+/// this purpose:
+///
+/// * ``{"envoy.lb": {"canary": <bool> }}`` This indicates the canary status of an
+/// endpoint and is also used during header processing
+/// (x-envoy-upstream-canary) and for stats purposes.
+/// \[#next-major-version: move to type/metadata/v2\]
+#[allow(clippy::derive_partial_eq_without_eq)]
+#[derive(Clone, PartialEq, ::prost::Message)]
+pub struct Metadata {
+ /// Key is the reverse DNS filter name, e.g. com.acme.widget. The envoy.*
+ /// namespace is reserved for Envoy's built-in filters.
+ #[prost(map="string, message", tag="1")]
+ pub filter_metadata: ::std::collections::HashMap<::prost::alloc::string::String, super::super::super::super::google::protobuf::Struct>,
+}
+/// Runtime derived uint32 with a default when not specified.
+#[allow(clippy::derive_partial_eq_without_eq)]
+#[derive(Clone, PartialEq, ::prost::Message)]
+pub struct RuntimeUInt32 {
+ /// Default value if runtime value is not available.
+ #[prost(uint32, tag="2")]
+ pub default_value: u32,
+ /// Runtime key to get value for comparison. This value is used if defined.
+ #[prost(string, tag="3")]
+ pub runtime_key: ::prost::alloc::string::String,
+}
+/// Runtime derived double with a default when not specified.
+#[allow(clippy::derive_partial_eq_without_eq)]
+#[derive(Clone, PartialEq, ::prost::Message)]
+pub struct RuntimeDouble {
+ /// Default value if runtime value is not available.
+ #[prost(double, tag="1")]
+ pub default_value: f64,
+ /// Runtime key to get value for comparison. This value is used if defined.
+ #[prost(string, tag="2")]
+ pub runtime_key: ::prost::alloc::string::String,
+}
+/// Runtime derived bool with a default when not specified.
+#[allow(clippy::derive_partial_eq_without_eq)]
+#[derive(Clone, PartialEq, ::prost::Message)]
+pub struct RuntimeFeatureFlag {
+ /// Default value if runtime value is not available.
+ #[prost(message, optional, tag="1")]
+ pub default_value: ::core::option::Option<super::super::super::super::google::protobuf::BoolValue>,
+ /// Runtime key to get value for comparison. This value is used if defined. The boolean value must
+ /// be represented via its
+ /// `canonical JSON encoding <<https://developers.google.com/protocol-buffers/docs/proto3#json>`_.>
+ #[prost(string, tag="2")]
+ pub runtime_key: ::prost::alloc::string::String,
+}
+/// Header name/value pair.
+#[allow(clippy::derive_partial_eq_without_eq)]
+#[derive(Clone, PartialEq, ::prost::Message)]
+pub struct HeaderValue {
+ /// Header name.
+ #[prost(string, tag="1")]
+ pub key: ::prost::alloc::string::String,
+ /// Header value.
+ ///
+ /// The same :ref:`format specifier <config_access_log_format>` as used for
+ /// :ref:`HTTP access logging <config_access_log>` applies here, however
+ /// unknown header values are replaced with the empty string instead of `-`.
+ #[prost(string, tag="2")]
+ pub value: ::prost::alloc::string::String,
+}
+/// Header name/value pair plus option to control append behavior.
+#[allow(clippy::derive_partial_eq_without_eq)]
+#[derive(Clone, PartialEq, ::prost::Message)]
+pub struct HeaderValueOption {
+ /// Header name/value pair that this option applies to.
+ #[prost(message, optional, tag="1")]
+ pub header: ::core::option::Option<HeaderValue>,
+ /// Should the value be appended? If true (default), the value is appended to
+ /// existing values.
+ #[prost(message, optional, tag="2")]
+ pub append: ::core::option::Option<super::super::super::super::google::protobuf::BoolValue>,
+}
+/// Wrapper for a set of headers.
+#[allow(clippy::derive_partial_eq_without_eq)]
+#[derive(Clone, PartialEq, ::prost::Message)]
+pub struct HeaderMap {
+ #[prost(message, repeated, tag="1")]
+ pub headers: ::prost::alloc::vec::Vec<HeaderValue>,
+}
+/// Data source consisting of either a file or an inline value.
+#[allow(clippy::derive_partial_eq_without_eq)]
+#[derive(Clone, PartialEq, ::prost::Message)]
+pub struct DataSource {
+ #[prost(oneof="data_source::Specifier", tags="1, 2, 3")]
+ pub specifier: ::core::option::Option<data_source::Specifier>,
+}
+/// Nested message and enum types in `DataSource`.
+pub mod data_source {
+ #[allow(clippy::derive_partial_eq_without_eq)]
+#[derive(Clone, PartialEq, ::prost::Oneof)]
+ pub enum Specifier {
+ /// Local filesystem data source.
+ #[prost(string, tag="1")]
+ Filename(::prost::alloc::string::String),
+ /// Bytes inlined in the configuration.
+ #[prost(bytes, tag="2")]
+ InlineBytes(::prost::alloc::vec::Vec<u8>),
+ /// String inlined in the configuration.
+ #[prost(string, tag="3")]
+ InlineString(::prost::alloc::string::String),
+ }
+}
+/// The message specifies the retry policy of remote data source when fetching fails.
+#[allow(clippy::derive_partial_eq_without_eq)]
+#[derive(Clone, Copy, PartialEq, ::prost::Message)]
+pub struct RetryPolicy {
+ /// Specifies parameters that control :ref:`retry backoff strategy <envoy_api_msg_core.BackoffStrategy>`.
+ /// This parameter is optional, in which case the default base interval is 1000 milliseconds. The
+ /// default maximum interval is 10 times the base interval.
+ #[prost(message, optional, tag="1")]
+ pub retry_back_off: ::core::option::Option<BackoffStrategy>,
+ /// Specifies the allowed number of retries. This parameter is optional and
+ /// defaults to 1.
+ #[prost(message, optional, tag="2")]
+ pub num_retries: ::core::option::Option<super::super::super::super::google::protobuf::UInt32Value>,
+}
+/// The message specifies how to fetch data from remote and how to verify it.
+#[allow(clippy::derive_partial_eq_without_eq)]
+#[derive(Clone, PartialEq, ::prost::Message)]
+pub struct RemoteDataSource {
+ /// The HTTP URI to fetch the remote data.
+ #[prost(message, optional, tag="1")]
+ pub http_uri: ::core::option::Option<HttpUri>,
+ /// SHA256 string for verifying data.
+ #[prost(string, tag="2")]
+ pub sha256: ::prost::alloc::string::String,
+ /// Retry policy for fetching remote data.
+ #[prost(message, optional, tag="3")]
+ pub retry_policy: ::core::option::Option<RetryPolicy>,
+}
+/// Async data source which support async data fetch.
+#[allow(clippy::derive_partial_eq_without_eq)]
+#[derive(Clone, PartialEq, ::prost::Message)]
+pub struct AsyncDataSource {
+ #[prost(oneof="async_data_source::Specifier", tags="1, 2")]
+ pub specifier: ::core::option::Option<async_data_source::Specifier>,
+}
+/// Nested message and enum types in `AsyncDataSource`.
+pub mod async_data_source {
+ #[allow(clippy::derive_partial_eq_without_eq)]
+#[derive(Clone, PartialEq, ::prost::Oneof)]
+ pub enum Specifier {
+ /// Local async data source.
+ #[prost(message, tag="1")]
+ Local(super::DataSource),
+ /// Remote async data source.
+ #[prost(message, tag="2")]
+ Remote(super::RemoteDataSource),
+ }
+}
+/// Configuration for transport socket in :ref:`listeners <config_listeners>` and
+/// :ref:`clusters <envoy_api_msg_Cluster>`. If the configuration is
+/// empty, a default transport socket implementation and configuration will be
+/// chosen based on the platform and existence of tls_context.
+#[allow(clippy::derive_partial_eq_without_eq)]
+#[derive(Clone, PartialEq, ::prost::Message)]
+pub struct TransportSocket {
+ /// The name of the transport socket to instantiate. The name must match a supported transport
+ /// socket implementation.
+ #[prost(string, tag="1")]
+ pub name: ::prost::alloc::string::String,
+ /// Implementation specific configuration which depends on the implementation being instantiated.
+ /// See the supported transport socket implementations for further documentation.
+ #[prost(oneof="transport_socket::ConfigType", tags="2, 3")]
+ pub config_type: ::core::option::Option<transport_socket::ConfigType>,
+}
+/// Nested message and enum types in `TransportSocket`.
+pub mod transport_socket {
+ /// Implementation specific configuration which depends on the implementation being instantiated.
+ /// See the supported transport socket implementations for further documentation.
+ #[allow(clippy::derive_partial_eq_without_eq)]
+#[derive(Clone, PartialEq, ::prost::Oneof)]
+ pub enum ConfigType {
+ #[prost(message, tag="2")]
+ Config(super::super::super::super::super::google::protobuf::Struct),
+ #[prost(message, tag="3")]
+ TypedConfig(super::super::super::super::super::google::protobuf::Any),
+ }
+}
+/// Runtime derived FractionalPercent with defaults for when the numerator or denominator is not
+/// specified via a runtime key.
+///
+/// .. note::
+///
+/// Parsing of the runtime key's data is implemented such that it may be represented as a
+/// :ref:`FractionalPercent <envoy_api_msg_type.FractionalPercent>` proto represented as JSON/YAML
+/// and may also be represented as an integer with the assumption that the value is an integral
+/// percentage out of 100. For instance, a runtime key lookup returning the value "42" would parse
+/// as a `FractionalPercent` whose numerator is 42 and denominator is HUNDRED.
+#[allow(clippy::derive_partial_eq_without_eq)]
+#[derive(Clone, PartialEq, ::prost::Message)]
+pub struct RuntimeFractionalPercent {
+ /// Default value if the runtime value's for the numerator/denominator keys are not available.
+ #[prost(message, optional, tag="1")]
+ pub default_value: ::core::option::Option<super::super::super::r#type::FractionalPercent>,
+ /// Runtime key for a YAML representation of a FractionalPercent.
+ #[prost(string, tag="2")]
+ pub runtime_key: ::prost::alloc::string::String,
+}
+/// Identifies a specific ControlPlane instance that Envoy is connected to.
+#[allow(clippy::derive_partial_eq_without_eq)]
+#[derive(Clone, PartialEq, ::prost::Message)]
+pub struct ControlPlane {
+ /// An opaque control plane identifier that uniquely identifies an instance
+ /// of control plane. This can be used to identify which control plane instance,
+ /// the Envoy is connected to.
+ #[prost(string, tag="1")]
+ pub identifier: ::prost::alloc::string::String,
+}
+// \[#protodoc-title: Common types\]
+
+/// Envoy supports :ref:`upstream priority routing
+/// <arch_overview_http_routing_priority>` both at the route and the virtual
+/// cluster level. The current priority implementation uses different connection
+/// pool and circuit breaking settings for each priority level. This means that
+/// even for HTTP/2 requests, two physical connections will be used to an
+/// upstream host. In the future Envoy will likely support true HTTP/2 priority
+/// over a single upstream connection.
+#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
+#[repr(i32)]
+pub enum RoutingPriority {
+ Default = 0,
+ High = 1,
+}
+impl RoutingPriority {
+ /// String value of the enum field names used in the ProtoBuf definition.
+ ///
+ /// The values are not transformed in any way and thus are considered stable
+ /// (if the ProtoBuf definition does not change) and safe for programmatic use.
+ pub fn as_str_name(&self) -> &'static str {
+ match self {
+ RoutingPriority::Default => "DEFAULT",
+ RoutingPriority::High => "HIGH",
+ }
+ }
+ /// Creates an enum from field names used in the ProtoBuf definition.
+ pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
+ match value {
+ "DEFAULT" => Some(Self::Default),
+ "HIGH" => Some(Self::High),
+ _ => None,
+ }
+ }
+}
+/// HTTP request method.
+#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
+#[repr(i32)]
+pub enum RequestMethod {
+ MethodUnspecified = 0,
+ Get = 1,
+ Head = 2,
+ Post = 3,
+ Put = 4,
+ Delete = 5,
+ Connect = 6,
+ Options = 7,
+ Trace = 8,
+ Patch = 9,
+}
+impl RequestMethod {
+ /// String value of the enum field names used in the ProtoBuf definition.
+ ///
+ /// The values are not transformed in any way and thus are considered stable
+ /// (if the ProtoBuf definition does not change) and safe for programmatic use.
+ pub fn as_str_name(&self) -> &'static str {
+ match self {
+ RequestMethod::MethodUnspecified => "METHOD_UNSPECIFIED",
+ RequestMethod::Get => "GET",
+ RequestMethod::Head => "HEAD",
+ RequestMethod::Post => "POST",
+ RequestMethod::Put => "PUT",
+ RequestMethod::Delete => "DELETE",
+ RequestMethod::Connect => "CONNECT",
+ RequestMethod::Options => "OPTIONS",
+ RequestMethod::Trace => "TRACE",
+ RequestMethod::Patch => "PATCH",
+ }
+ }
+ /// Creates an enum from field names used in the ProtoBuf definition.
+ pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
+ match value {
+ "METHOD_UNSPECIFIED" => Some(Self::MethodUnspecified),
+ "GET" => Some(Self::Get),
+ "HEAD" => Some(Self::Head),
+ "POST" => Some(Self::Post),
+ "PUT" => Some(Self::Put),
+ "DELETE" => Some(Self::Delete),
+ "CONNECT" => Some(Self::Connect),
+ "OPTIONS" => Some(Self::Options),
+ "TRACE" => Some(Self::Trace),
+ "PATCH" => Some(Self::Patch),
+ _ => None,
+ }
+ }
+}
+/// Identifies the direction of the traffic relative to the local Envoy.
+#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
+#[repr(i32)]
+pub enum TrafficDirection {
+ /// Default option is unspecified.
+ Unspecified = 0,
+ /// The transport is used for incoming traffic.
+ Inbound = 1,
+ /// The transport is used for outgoing traffic.
+ Outbound = 2,
+}
+impl TrafficDirection {
+ /// String value of the enum field names used in the ProtoBuf definition.
+ ///
+ /// The values are not transformed in any way and thus are considered stable
+ /// (if the ProtoBuf definition does not change) and safe for programmatic use.
+ pub fn as_str_name(&self) -> &'static str {
+ match self {
+ TrafficDirection::Unspecified => "UNSPECIFIED",
+ TrafficDirection::Inbound => "INBOUND",
+ TrafficDirection::Outbound => "OUTBOUND",
+ }
+ }
+ /// Creates an enum from field names used in the ProtoBuf definition.
+ pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
+ match value {
+ "UNSPECIFIED" => Some(Self::Unspecified),
+ "INBOUND" => Some(Self::Inbound),
+ "OUTBOUND" => Some(Self::Outbound),
+ _ => None,
+ }
+ }
+}
+// \[#protodoc-title: gRPC services\]
+
+/// gRPC service configuration. This is used by :ref:`ApiConfigSource
+/// <envoy_api_msg_core.ApiConfigSource>` and filter configurations.
+/// \[#next-free-field: 6\]
+#[allow(clippy::derive_partial_eq_without_eq)]
+#[derive(Clone, PartialEq, ::prost::Message)]
+pub struct GrpcService {
+ /// The timeout for the gRPC request. This is the timeout for a specific
+ /// request.
+ #[prost(message, optional, tag="3")]
+ pub timeout: ::core::option::Option<super::super::super::super::google::protobuf::Duration>,
+ /// Additional metadata to include in streams initiated to the GrpcService.
+ /// This can be used for scenarios in which additional ad hoc authorization
+ /// headers (e.g. ``x-foo-bar: baz-key``) are to be injected.
+ #[prost(message, repeated, tag="5")]
+ pub initial_metadata: ::prost::alloc::vec::Vec<HeaderValue>,
+ #[prost(oneof="grpc_service::TargetSpecifier", tags="1, 2")]
+ pub target_specifier: ::core::option::Option<grpc_service::TargetSpecifier>,
+}
+/// Nested message and enum types in `GrpcService`.
+pub mod grpc_service {
+ #[allow(clippy::derive_partial_eq_without_eq)]
+#[derive(Clone, PartialEq, ::prost::Message)]
+ pub struct EnvoyGrpc {
+ /// The name of the upstream gRPC cluster. SSL credentials will be supplied
+ /// in the :ref:`Cluster <envoy_api_msg_Cluster>` :ref:`transport_socket
+ /// <envoy_api_field_Cluster.transport_socket>`.
+ #[prost(string, tag="1")]
+ pub cluster_name: ::prost::alloc::string::String,
+ }
+ /// \[#next-free-field: 7\]
+ #[allow(clippy::derive_partial_eq_without_eq)]
+#[derive(Clone, PartialEq, ::prost::Message)]
+ pub struct GoogleGrpc {
+ /// The target URI when using the `Google C++ gRPC client
+ /// <<https://github.com/grpc/grpc>`_.> SSL credentials will be supplied in
+ /// :ref:`channel_credentials <envoy_api_field_core.GrpcService.GoogleGrpc.channel_credentials>`.
+ #[prost(string, tag="1")]
+ pub target_uri: ::prost::alloc::string::String,
+ #[prost(message, optional, tag="2")]
+ pub channel_credentials: ::core::option::Option<google_grpc::ChannelCredentials>,
+ /// A set of call credentials that can be composed with `channel credentials
+ /// <<https://grpc.io/docs/guides/auth.html#credential-types>`_.>
+ #[prost(message, repeated, tag="3")]
+ pub call_credentials: ::prost::alloc::vec::Vec<google_grpc::CallCredentials>,
+ /// The human readable prefix to use when emitting statistics for the gRPC
+ /// service.
+ ///
+ /// .. csv-table::
+ /// :header: Name, Type, Description
+ /// :widths: 1, 1, 2
+ ///
+ /// streams_total, Counter, Total number of streams opened
+ /// streams_closed_<gRPC status code>, Counter, Total streams closed with <gRPC status code>
+ #[prost(string, tag="4")]
+ pub stat_prefix: ::prost::alloc::string::String,
+ /// The name of the Google gRPC credentials factory to use. This must have been registered with
+ /// Envoy. If this is empty, a default credentials factory will be used that sets up channel
+ /// credentials based on other configuration parameters.
+ #[prost(string, tag="5")]
+ pub credentials_factory_name: ::prost::alloc::string::String,
+ /// Additional configuration for site-specific customizations of the Google
+ /// gRPC library.
+ #[prost(message, optional, tag="6")]
+ pub config: ::core::option::Option<super::super::super::super::super::google::protobuf::Struct>,
+ }
+ /// Nested message and enum types in `GoogleGrpc`.
+ pub mod google_grpc {
+ /// See <https://grpc.io/grpc/cpp/structgrpc_1_1_ssl_credentials_options.html.>
+ #[allow(clippy::derive_partial_eq_without_eq)]
+#[derive(Clone, PartialEq, ::prost::Message)]
+ pub struct SslCredentials {
+ /// PEM encoded server root certificates.
+ #[prost(message, optional, tag="1")]
+ pub root_certs: ::core::option::Option<super::super::DataSource>,
+ /// PEM encoded client private key.
+ #[prost(message, optional, tag="2")]
+ pub private_key: ::core::option::Option<super::super::DataSource>,
+ /// PEM encoded client certificate chain.
+ #[prost(message, optional, tag="3")]
+ pub cert_chain: ::core::option::Option<super::super::DataSource>,
+ }
+ /// Local channel credentials. Only UDS is supported for now.
+ /// See <https://github.com/grpc/grpc/pull/15909.>
+ #[allow(clippy::derive_partial_eq_without_eq)]
+#[derive(Clone, Copy, PartialEq, ::prost::Message)]
+ pub struct GoogleLocalCredentials {
+ }
+ /// See <https://grpc.io/docs/guides/auth.html#credential-types> to understand Channel and Call
+ /// credential types.
+ #[allow(clippy::derive_partial_eq_without_eq)]
+#[derive(Clone, PartialEq, ::prost::Message)]
+ pub struct ChannelCredentials {
+ #[prost(oneof="channel_credentials::CredentialSpecifier", tags="1, 2, 3")]
+ pub credential_specifier: ::core::option::Option<channel_credentials::CredentialSpecifier>,
+ }
+ /// Nested message and enum types in `ChannelCredentials`.
+ pub mod channel_credentials {
+ #[allow(clippy::derive_partial_eq_without_eq)]
+#[derive(Clone, PartialEq, ::prost::Oneof)]
+ pub enum CredentialSpecifier {
+ #[prost(message, tag="1")]
+ SslCredentials(super::SslCredentials),
+ /// <https://grpc.io/grpc/cpp/namespacegrpc.html#a6beb3ac70ff94bd2ebbd89b8f21d1f61>
+ #[prost(message, tag="2")]
+ GoogleDefault(super::super::super::super::super::super::super::google::protobuf::Empty),
+ #[prost(message, tag="3")]
+ LocalCredentials(super::GoogleLocalCredentials),
+ }
+ }
+ /// \[#next-free-field: 8\]
+ #[allow(clippy::derive_partial_eq_without_eq)]
+#[derive(Clone, PartialEq, ::prost::Message)]
+ pub struct CallCredentials {
+ #[prost(oneof="call_credentials::CredentialSpecifier", tags="1, 2, 3, 4, 5, 6, 7")]
+ pub credential_specifier: ::core::option::Option<call_credentials::CredentialSpecifier>,
+ }
+ /// Nested message and enum types in `CallCredentials`.
+ pub mod call_credentials {
+ #[allow(clippy::derive_partial_eq_without_eq)]
+#[derive(Clone, PartialEq, ::prost::Message)]
+ pub struct ServiceAccountJwtAccessCredentials {
+ #[prost(string, tag="1")]
+ pub json_key: ::prost::alloc::string::String,
+ #[prost(uint64, tag="2")]
+ pub token_lifetime_seconds: u64,
+ }
+ #[allow(clippy::derive_partial_eq_without_eq)]
+#[derive(Clone, PartialEq, ::prost::Message)]
+ pub struct GoogleIamCredentials {
+ #[prost(string, tag="1")]
+ pub authorization_token: ::prost::alloc::string::String,
+ #[prost(string, tag="2")]
+ pub authority_selector: ::prost::alloc::string::String,
+ }
+ #[allow(clippy::derive_partial_eq_without_eq)]
+#[derive(Clone, PartialEq, ::prost::Message)]
+ pub struct MetadataCredentialsFromPlugin {
+ #[prost(string, tag="1")]
+ pub name: ::prost::alloc::string::String,
+ #[prost(oneof="metadata_credentials_from_plugin::ConfigType", tags="2, 3")]
+ pub config_type: ::core::option::Option<metadata_credentials_from_plugin::ConfigType>,
+ }
+ /// Nested message and enum types in `MetadataCredentialsFromPlugin`.
+ pub mod metadata_credentials_from_plugin {
+ #[allow(clippy::derive_partial_eq_without_eq)]
+#[derive(Clone, PartialEq, ::prost::Oneof)]
+ pub enum ConfigType {
+ #[prost(message, tag="2")]
+ Config(super::super::super::super::super::super::super::super::google::protobuf::Struct),
+ #[prost(message, tag="3")]
+ TypedConfig(super::super::super::super::super::super::super::super::google::protobuf::Any),
+ }
+ }
+ /// Security token service configuration that allows Google gRPC to
+ /// fetch security token from an OAuth 2.0 authorization server.
+ /// See <https://tools.ietf.org/html/draft-ietf-oauth-token-exchange-16> and
+ /// <https://github.com/grpc/grpc/pull/19587.>
+ /// \[#next-free-field: 10\]
+ #[allow(clippy::derive_partial_eq_without_eq)]
+#[derive(Clone, PartialEq, ::prost::Message)]
+ pub struct StsService {
+ /// URI of the token exchange service that handles token exchange requests.
+ /// [#comment:TODO(asraa): Add URI validation when implemented. Tracked by
+ /// <https://github.com/bufbuild/protoc-gen-validate/issues/303]>
+ #[prost(string, tag="1")]
+ pub token_exchange_service_uri: ::prost::alloc::string::String,
+ /// Location of the target service or resource where the client
+ /// intends to use the requested security token.
+ #[prost(string, tag="2")]
+ pub resource: ::prost::alloc::string::String,
+ /// Logical name of the target service where the client intends to
+ /// use the requested security token.
+ #[prost(string, tag="3")]
+ pub audience: ::prost::alloc::string::String,
+ /// The desired scope of the requested security token in the
+ /// context of the service or resource where the token will be used.
+ #[prost(string, tag="4")]
+ pub scope: ::prost::alloc::string::String,
+ /// Type of the requested security token.
+ #[prost(string, tag="5")]
+ pub requested_token_type: ::prost::alloc::string::String,
+ /// The path of subject token, a security token that represents the
+ /// identity of the party on behalf of whom the request is being made.
+ #[prost(string, tag="6")]
+ pub subject_token_path: ::prost::alloc::string::String,
+ /// Type of the subject token.
+ #[prost(string, tag="7")]
+ pub subject_token_type: ::prost::alloc::string::String,
+ /// The path of actor token, a security token that represents the identity
+ /// of the acting party. The acting party is authorized to use the
+ /// requested security token and act on behalf of the subject.
+ #[prost(string, tag="8")]
+ pub actor_token_path: ::prost::alloc::string::String,
+ /// Type of the actor token.
+ #[prost(string, tag="9")]
+ pub actor_token_type: ::prost::alloc::string::String,
+ }
+ #[allow(clippy::derive_partial_eq_without_eq)]
+#[derive(Clone, PartialEq, ::prost::Oneof)]
+ pub enum CredentialSpecifier {
+ /// Access token credentials.
+ /// <https://grpc.io/grpc/cpp/namespacegrpc.html#ad3a80da696ffdaea943f0f858d7a360d.>
+ #[prost(string, tag="1")]
+ AccessToken(::prost::alloc::string::String),
+ /// Google Compute Engine credentials.
+ /// <https://grpc.io/grpc/cpp/namespacegrpc.html#a6beb3ac70ff94bd2ebbd89b8f21d1f61>
+ #[prost(message, tag="2")]
+ GoogleComputeEngine(super::super::super::super::super::super::super::google::protobuf::Empty),
+ /// Google refresh token credentials.
+ /// <https://grpc.io/grpc/cpp/namespacegrpc.html#a96901c997b91bc6513b08491e0dca37c.>
+ #[prost(string, tag="3")]
+ GoogleRefreshToken(::prost::alloc::string::String),
+ /// Service Account JWT Access credentials.
+ /// <https://grpc.io/grpc/cpp/namespacegrpc.html#a92a9f959d6102461f66ee973d8e9d3aa.>
+ #[prost(message, tag="4")]
+ ServiceAccountJwtAccess(ServiceAccountJwtAccessCredentials),
+ /// Google IAM credentials.
+ /// <https://grpc.io/grpc/cpp/namespacegrpc.html#a9fc1fc101b41e680d47028166e76f9d0.>
+ #[prost(message, tag="5")]
+ GoogleIam(GoogleIamCredentials),
+ /// Custom authenticator credentials.
+ /// <https://grpc.io/grpc/cpp/namespacegrpc.html#a823c6a4b19ffc71fb33e90154ee2ad07.>
+ /// <https://grpc.io/docs/guides/auth.html#extending-grpc-to-support-other-authentication-mechanisms.>
+ #[prost(message, tag="6")]
+ FromPlugin(MetadataCredentialsFromPlugin),
+ /// Custom security token service which implements OAuth 2.0 token exchange.
+ /// <https://tools.ietf.org/html/draft-ietf-oauth-token-exchange-16>
+ /// See <https://github.com/grpc/grpc/pull/19587.>
+ #[prost(message, tag="7")]
+ StsService(StsService),
+ }
+ }
+ }
+ #[allow(clippy::derive_partial_eq_without_eq)]
+#[derive(Clone, PartialEq, ::prost::Oneof)]
+ pub enum TargetSpecifier {
+ /// Envoy's in-built gRPC client.
+ /// See the :ref:`gRPC services overview <arch_overview_grpc_services>`
+ /// documentation for discussion on gRPC client selection.
+ #[prost(message, tag="1")]
+ EnvoyGrpc(EnvoyGrpc),
+ /// `Google C++ gRPC client <<https://github.com/grpc/grpc>`_>
+ /// See the :ref:`gRPC services overview <arch_overview_grpc_services>`
+ /// documentation for discussion on gRPC client selection.
+ #[prost(message, tag="2")]
+ GoogleGrpc(GoogleGrpc),
+ }
+}
+/// \[#not-implemented-hide:\]
+/// Configuration of the event reporting service endpoint.
+#[allow(clippy::derive_partial_eq_without_eq)]
+#[derive(Clone, PartialEq, ::prost::Message)]
+pub struct EventServiceConfig {
+ #[prost(oneof="event_service_config::ConfigSourceSpecifier", tags="1")]
+ pub config_source_specifier: ::core::option::Option<event_service_config::ConfigSourceSpecifier>,
+}
+/// Nested message and enum types in `EventServiceConfig`.
+pub mod event_service_config {
+ #[allow(clippy::derive_partial_eq_without_eq)]
+#[derive(Clone, PartialEq, ::prost::Oneof)]
+ pub enum ConfigSourceSpecifier {
+ /// Specifies the gRPC service that hosts the event reporting service.
+ #[prost(message, tag="1")]
+ GrpcService(super::GrpcService),
+ }
+}
+/// \[#next-free-field: 23\]
+#[allow(clippy::derive_partial_eq_without_eq)]
+#[derive(Clone, PartialEq, ::prost::Message)]
+pub struct HealthCheck {
+ /// The time to wait for a health check response. If the timeout is reached the
+ /// health check attempt will be considered a failure.
+ #[prost(message, optional, tag="1")]
+ pub timeout: ::core::option::Option<super::super::super::super::google::protobuf::Duration>,
+ /// The interval between health checks.
+ #[prost(message, optional, tag="2")]
+ pub interval: ::core::option::Option<super::super::super::super::google::protobuf::Duration>,
+ /// An optional jitter amount in milliseconds. If specified, Envoy will start health
+ /// checking after for a random time in ms between 0 and initial_jitter. This only
+ /// applies to the first health check.
+ #[prost(message, optional, tag="20")]
+ pub initial_jitter: ::core::option::Option<super::super::super::super::google::protobuf::Duration>,
+ /// An optional jitter amount in milliseconds. If specified, during every
+ /// interval Envoy will add interval_jitter to the wait time.
+ #[prost(message, optional, tag="3")]
+ pub interval_jitter: ::core::option::Option<super::super::super::super::google::protobuf::Duration>,
+ /// An optional jitter amount as a percentage of interval_ms. If specified,
+ /// during every interval Envoy will add interval_ms *
+ /// interval_jitter_percent / 100 to the wait time.
+ ///
+ /// If interval_jitter_ms and interval_jitter_percent are both set, both of
+ /// them will be used to increase the wait time.
+ #[prost(uint32, tag="18")]
+ pub interval_jitter_percent: u32,
+ /// The number of unhealthy health checks required before a host is marked
+ /// unhealthy. Note that for *http* health checking if a host responds with 503
+ /// this threshold is ignored and the host is considered unhealthy immediately.
+ #[prost(message, optional, tag="4")]
+ pub unhealthy_threshold: ::core::option::Option<super::super::super::super::google::protobuf::UInt32Value>,
+ /// The number of healthy health checks required before a host is marked
+ /// healthy. Note that during startup, only a single successful health check is
+ /// required to mark a host healthy.
+ #[prost(message, optional, tag="5")]
+ pub healthy_threshold: ::core::option::Option<super::super::super::super::google::protobuf::UInt32Value>,
+ /// \[#not-implemented-hide:\] Non-serving port for health checking.
+ #[prost(message, optional, tag="6")]
+ pub alt_port: ::core::option::Option<super::super::super::super::google::protobuf::UInt32Value>,
+ /// Reuse health check connection between health checks. Default is true.
+ #[prost(message, optional, tag="7")]
+ pub reuse_connection: ::core::option::Option<super::super::super::super::google::protobuf::BoolValue>,
+ /// The "no traffic interval" is a special health check interval that is used when a cluster has
+ /// never had traffic routed to it. This lower interval allows cluster information to be kept up to
+ /// date, without sending a potentially large amount of active health checking traffic for no
+ /// reason. Once a cluster has been used for traffic routing, Envoy will shift back to using the
+ /// standard health check interval that is defined. Note that this interval takes precedence over
+ /// any other.
+ ///
+ /// The default value for "no traffic interval" is 60 seconds.
+ #[prost(message, optional, tag="12")]
+ pub no_traffic_interval: ::core::option::Option<super::super::super::super::google::protobuf::Duration>,
+ /// The "unhealthy interval" is a health check interval that is used for hosts that are marked as
+ /// unhealthy. As soon as the host is marked as healthy, Envoy will shift back to using the
+ /// standard health check interval that is defined.
+ ///
+ /// The default value for "unhealthy interval" is the same as "interval".
+ #[prost(message, optional, tag="14")]
+ pub unhealthy_interval: ::core::option::Option<super::super::super::super::google::protobuf::Duration>,
+ /// The "unhealthy edge interval" is a special health check interval that is used for the first
+ /// health check right after a host is marked as unhealthy. For subsequent health checks
+ /// Envoy will shift back to using either "unhealthy interval" if present or the standard health
+ /// check interval that is defined.
+ ///
+ /// The default value for "unhealthy edge interval" is the same as "unhealthy interval".
+ #[prost(message, optional, tag="15")]
+ pub unhealthy_edge_interval: ::core::option::Option<super::super::super::super::google::protobuf::Duration>,
+ /// The "healthy edge interval" is a special health check interval that is used for the first
+ /// health check right after a host is marked as healthy. For subsequent health checks
+ /// Envoy will shift back to using the standard health check interval that is defined.
+ ///
+ /// The default value for "healthy edge interval" is the same as the default interval.
+ #[prost(message, optional, tag="16")]
+ pub healthy_edge_interval: ::core::option::Option<super::super::super::super::google::protobuf::Duration>,
+ /// Specifies the path to the :ref:`health check event log <arch_overview_health_check_logging>`.
+ /// If empty, no event log will be written.
+ #[prost(string, tag="17")]
+ pub event_log_path: ::prost::alloc::string::String,
+ /// \[#not-implemented-hide:\]
+ /// The gRPC service for the health check event service.
+ /// If empty, health check events won't be sent to a remote endpoint.
+ #[prost(message, optional, tag="22")]
+ pub event_service: ::core::option::Option<EventServiceConfig>,
+ /// If set to true, health check failure events will always be logged. If set to false, only the
+ /// initial health check failure event will be logged.
+ /// The default value is false.
+ #[prost(bool, tag="19")]
+ pub always_log_health_check_failures: bool,
+ /// This allows overriding the cluster TLS settings, just for health check connections.
+ #[prost(message, optional, tag="21")]
+ pub tls_options: ::core::option::Option<health_check::TlsOptions>,
+ #[prost(oneof="health_check::HealthChecker", tags="8, 9, 11, 13")]
+ pub health_checker: ::core::option::Option<health_check::HealthChecker>,
+}
+/// Nested message and enum types in `HealthCheck`.
+pub mod health_check {
+ /// Describes the encoding of the payload bytes in the payload.
+ #[allow(clippy::derive_partial_eq_without_eq)]
+#[derive(Clone, PartialEq, ::prost::Message)]
+ pub struct Payload {
+ #[prost(oneof="payload::Payload", tags="1, 2")]
+ pub payload: ::core::option::Option<payload::Payload>,
+ }
+ /// Nested message and enum types in `Payload`.
+ pub mod payload {
+ #[allow(clippy::derive_partial_eq_without_eq)]
+#[derive(Clone, PartialEq, ::prost::Oneof)]
+ pub enum Payload {
+ /// Hex encoded payload. E.g., "000000FF".
+ #[prost(string, tag="1")]
+ Text(::prost::alloc::string::String),
+ /// \[#not-implemented-hide:\] Binary payload.
+ #[prost(bytes, tag="2")]
+ Binary(::prost::alloc::vec::Vec<u8>),
+ }
+ }
+ /// \[#next-free-field: 12\]
+ #[allow(clippy::derive_partial_eq_without_eq)]
+#[derive(Clone, PartialEq, ::prost::Message)]
+ pub struct HttpHealthCheck {
+ /// The value of the host header in the HTTP health check request. If
+ /// left empty (default value), the name of the cluster this health check is associated
+ /// with will be used. The host header can be customized for a specific endpoint by setting the
+ /// :ref:`hostname <envoy_api_field_endpoint.Endpoint.HealthCheckConfig.hostname>` field.
+ #[prost(string, tag="1")]
+ pub host: ::prost::alloc::string::String,
+ /// Specifies the HTTP path that will be requested during health checking. For example
+ /// */healthcheck*.
+ #[prost(string, tag="2")]
+ pub path: ::prost::alloc::string::String,
+ /// \[#not-implemented-hide:\] HTTP specific payload.
+ #[prost(message, optional, tag="3")]
+ pub send: ::core::option::Option<Payload>,
+ /// \[#not-implemented-hide:\] HTTP specific response.
+ #[prost(message, optional, tag="4")]
+ pub receive: ::core::option::Option<Payload>,
+ /// An optional service name parameter which is used to validate the identity of
+ /// the health checked cluster. See the :ref:`architecture overview
+ /// <arch_overview_health_checking_identity>` for more information.
+ ///
+ /// .. attention::
+ ///
+ /// This field has been deprecated in favor of `service_name_matcher` for better flexibility
+ /// over matching with service-cluster name.
+ #[deprecated]
+ #[prost(string, tag="5")]
+ pub service_name: ::prost::alloc::string::String,
+ /// Specifies a list of HTTP headers that should be added to each request that is sent to the
+ /// health checked cluster. For more information, including details on header value syntax, see
+ /// the documentation on :ref:`custom request headers
+ /// <config_http_conn_man_headers_custom_request_headers>`.
+ #[prost(message, repeated, tag="6")]
+ pub request_headers_to_add: ::prost::alloc::vec::Vec<super::HeaderValueOption>,
+ /// Specifies a list of HTTP headers that should be removed from each request that is sent to the
+ /// health checked cluster.
+ #[prost(string, repeated, tag="8")]
+ pub request_headers_to_remove: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
+ /// If set, health checks will be made using http/2.
+ /// Deprecated, use :ref:`codec_client_type
+ /// <envoy_api_field_core.HealthCheck.HttpHealthCheck.codec_client_type>` instead.
+ #[deprecated]
+ #[prost(bool, tag="7")]
+ pub use_http2: bool,
+ /// Specifies a list of HTTP response statuses considered healthy. If provided, replaces default
+ /// 200-only policy - 200 must be included explicitly as needed. Ranges follow half-open
+ /// semantics of :ref:`Int64Range <envoy_api_msg_type.Int64Range>`. The start and end of each
+ /// range are required. Only statuses in the range [100, 600) are allowed.
+ #[prost(message, repeated, tag="9")]
+ pub expected_statuses: ::prost::alloc::vec::Vec<super::super::super::super::r#type::Int64Range>,
+ /// Use specified application protocol for health checks.
+ #[prost(enumeration="super::super::super::super::r#type::CodecClientType", tag="10")]
+ pub codec_client_type: i32,
+ /// An optional service name parameter which is used to validate the identity of
+ /// the health checked cluster using a :ref:`StringMatcher
+ /// <envoy_api_msg_type.matcher.StringMatcher>`. See the :ref:`architecture overview
+ /// <arch_overview_health_checking_identity>` for more information.
+ #[prost(message, optional, tag="11")]
+ pub service_name_matcher: ::core::option::Option<super::super::super::super::r#type::matcher::StringMatcher>,
+ }
+ #[allow(clippy::derive_partial_eq_without_eq)]
+#[derive(Clone, PartialEq, ::prost::Message)]
+ pub struct TcpHealthCheck {
+ /// Empty payloads imply a connect-only health check.
+ #[prost(message, optional, tag="1")]
+ pub send: ::core::option::Option<Payload>,
+ /// When checking the response, “fuzzy” matching is performed such that each
+ /// binary block must be found, and in the order specified, but not
+ /// necessarily contiguous.
+ #[prost(message, repeated, tag="2")]
+ pub receive: ::prost::alloc::vec::Vec<Payload>,
+ }
+ #[allow(clippy::derive_partial_eq_without_eq)]
+#[derive(Clone, PartialEq, ::prost::Message)]
+ pub struct RedisHealthCheck {
+ /// If set, optionally perform ``EXISTS <key>`` instead of ``PING``. A return value
+ /// from Redis of 0 (does not exist) is considered a passing healthcheck. A return value other
+ /// than 0 is considered a failure. This allows the user to mark a Redis instance for maintenance
+ /// by setting the specified key to any value and waiting for traffic to drain.
+ #[prost(string, tag="1")]
+ pub key: ::prost::alloc::string::String,
+ }
+ /// `grpc.health.v1.Health
+ /// <<https://github.com/grpc/grpc/blob/master/src/proto/grpc/health/v1/health.proto>`_-based>
+ /// healthcheck. See `gRPC doc <<https://github.com/grpc/grpc/blob/master/doc/health-checking.md>`_>
+ /// for details.
+ #[allow(clippy::derive_partial_eq_without_eq)]
+#[derive(Clone, PartialEq, ::prost::Message)]
+ pub struct GrpcHealthCheck {
+ /// An optional service name parameter which will be sent to gRPC service in
+ /// `grpc.health.v1.HealthCheckRequest
+ /// <<https://github.com/grpc/grpc/blob/master/src/proto/grpc/health/v1/health.proto#L20>`_.>
+ /// message. See `gRPC health-checking overview
+ /// <<https://github.com/grpc/grpc/blob/master/doc/health-checking.md>`_> for more information.
+ #[prost(string, tag="1")]
+ pub service_name: ::prost::alloc::string::String,
+ /// The value of the :authority header in the gRPC health check request. If
+ /// left empty (default value), the name of the cluster this health check is associated
+ /// with will be used. The authority header can be customized for a specific endpoint by setting
+ /// the :ref:`hostname <envoy_api_field_endpoint.Endpoint.HealthCheckConfig.hostname>` field.
+ #[prost(string, tag="2")]
+ pub authority: ::prost::alloc::string::String,
+ }
+ /// Custom health check.
+ #[allow(clippy::derive_partial_eq_without_eq)]
+#[derive(Clone, PartialEq, ::prost::Message)]
+ pub struct CustomHealthCheck {
+ /// The registered name of the custom health checker.
+ #[prost(string, tag="1")]
+ pub name: ::prost::alloc::string::String,
+ /// A custom health checker specific configuration which depends on the custom health checker
+ /// being instantiated. See :api:`envoy/config/health_checker` for reference.
+ #[prost(oneof="custom_health_check::ConfigType", tags="2, 3")]
+ pub config_type: ::core::option::Option<custom_health_check::ConfigType>,
+ }
+ /// Nested message and enum types in `CustomHealthCheck`.
+ pub mod custom_health_check {
+ /// A custom health checker specific configuration which depends on the custom health checker
+ /// being instantiated. See :api:`envoy/config/health_checker` for reference.
+ #[allow(clippy::derive_partial_eq_without_eq)]
+#[derive(Clone, PartialEq, ::prost::Oneof)]
+ pub enum ConfigType {
+ #[prost(message, tag="2")]
+ Config(super::super::super::super::super::super::google::protobuf::Struct),
+ #[prost(message, tag="3")]
+ TypedConfig(super::super::super::super::super::super::google::protobuf::Any),
+ }
+ }
+ /// Health checks occur over the transport socket specified for the cluster. This implies that if a
+ /// cluster is using a TLS-enabled transport socket, the health check will also occur over TLS.
+ ///
+ /// This allows overriding the cluster TLS settings, just for health check connections.
+ #[allow(clippy::derive_partial_eq_without_eq)]
+#[derive(Clone, PartialEq, ::prost::Message)]
+ pub struct TlsOptions {
+ /// Specifies the ALPN protocols for health check connections. This is useful if the
+ /// corresponding upstream is using ALPN-based :ref:`FilterChainMatch
+ /// <envoy_api_msg_listener.FilterChainMatch>` along with different protocols for health checks
+ /// versus data connections. If empty, no ALPN protocols will be set on health check connections.
+ #[prost(string, repeated, tag="1")]
+ pub alpn_protocols: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
+ }
+ #[allow(clippy::derive_partial_eq_without_eq)]
+#[derive(Clone, PartialEq, ::prost::Oneof)]
+ pub enum HealthChecker {
+ /// HTTP health check.
+ #[prost(message, tag="8")]
+ HttpHealthCheck(HttpHealthCheck),
+ /// TCP health check.
+ #[prost(message, tag="9")]
+ TcpHealthCheck(TcpHealthCheck),
+ /// gRPC health check.
+ #[prost(message, tag="11")]
+ GrpcHealthCheck(GrpcHealthCheck),
+ /// Custom health check.
+ #[prost(message, tag="13")]
+ CustomHealthCheck(CustomHealthCheck),
+ }
+}
+// \[#protodoc-title: Health check\]
+// * Health checking :ref:`architecture overview <arch_overview_health_checking>`.
+// * If health checking is configured for a cluster, additional statistics are emitted. They are
+// documented :ref:`here <config_cluster_manager_cluster_stats>`.
+
+/// Endpoint health status.
+#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
+#[repr(i32)]
+pub enum HealthStatus {
+ /// The health status is not known. This is interpreted by Envoy as *HEALTHY*.
+ Unknown = 0,
+ /// Healthy.
+ Healthy = 1,
+ /// Unhealthy.
+ Unhealthy = 2,
+ /// Connection draining in progress. E.g.,
+ /// `<<https://aws.amazon.com/blogs/aws/elb-connection-draining-remove-instances-from-service-with-care/>`_>
+ /// or
+ /// `<<https://cloud.google.com/compute/docs/load-balancing/enabling-connection-draining>`_.>
+ /// This is interpreted by Envoy as *UNHEALTHY*.
+ Draining = 3,
+ /// Health check timed out. This is part of HDS and is interpreted by Envoy as
+ /// *UNHEALTHY*.
+ Timeout = 4,
+ /// Degraded.
+ Degraded = 5,
+}
+impl HealthStatus {
+ /// String value of the enum field names used in the ProtoBuf definition.
+ ///
+ /// The values are not transformed in any way and thus are considered stable
+ /// (if the ProtoBuf definition does not change) and safe for programmatic use.
+ pub fn as_str_name(&self) -> &'static str {
+ match self {
+ HealthStatus::Unknown => "UNKNOWN",
+ HealthStatus::Healthy => "HEALTHY",
+ HealthStatus::Unhealthy => "UNHEALTHY",
+ HealthStatus::Draining => "DRAINING",
+ HealthStatus::Timeout => "TIMEOUT",
+ HealthStatus::Degraded => "DEGRADED",
+ }
+ }
+ /// Creates an enum from field names used in the ProtoBuf definition.
+ pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
+ match value {
+ "UNKNOWN" => Some(Self::Unknown),
+ "HEALTHY" => Some(Self::Healthy),
+ "UNHEALTHY" => Some(Self::Unhealthy),
+ "DRAINING" => Some(Self::Draining),
+ "TIMEOUT" => Some(Self::Timeout),
+ "DEGRADED" => Some(Self::Degraded),
+ _ => None,
+ }
+ }
+}
+/// API configuration source. This identifies the API type and cluster that Envoy
+/// will use to fetch an xDS API.
+/// \[#next-free-field: 9\]
+#[allow(clippy::derive_partial_eq_without_eq)]
+#[derive(Clone, PartialEq, ::prost::Message)]
+pub struct ApiConfigSource {
+ /// API type (gRPC, REST, delta gRPC)
+ #[prost(enumeration="api_config_source::ApiType", tag="1")]
+ pub api_type: i32,
+ /// API version for xDS transport protocol. This describes the xDS gRPC/REST
+ /// endpoint and version of \[Delta\]DiscoveryRequest/Response used on the wire.
+ #[prost(enumeration="ApiVersion", tag="8")]
+ pub transport_api_version: i32,
+ /// Cluster names should be used only with REST. If > 1
+ /// cluster is defined, clusters will be cycled through if any kind of failure
+ /// occurs.
+ ///
+ /// .. note::
+ ///
+ /// The cluster with name ``cluster_name`` must be statically defined and its
+ /// type must not be ``EDS``.
+ #[prost(string, repeated, tag="2")]
+ pub cluster_names: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
+ /// Multiple gRPC services be provided for GRPC. If > 1 cluster is defined,
+ /// services will be cycled through if any kind of failure occurs.
+ #[prost(message, repeated, tag="4")]
+ pub grpc_services: ::prost::alloc::vec::Vec<GrpcService>,
+ /// For REST APIs, the delay between successive polls.
+ #[prost(message, optional, tag="3")]
+ pub refresh_delay: ::core::option::Option<super::super::super::super::google::protobuf::Duration>,
+ /// For REST APIs, the request timeout. If not set, a default value of 1s will be used.
+ #[prost(message, optional, tag="5")]
+ pub request_timeout: ::core::option::Option<super::super::super::super::google::protobuf::Duration>,
+ /// For GRPC APIs, the rate limit settings. If present, discovery requests made by Envoy will be
+ /// rate limited.
+ #[prost(message, optional, tag="6")]
+ pub rate_limit_settings: ::core::option::Option<RateLimitSettings>,
+ /// Skip the node identifier in subsequent discovery requests for streaming gRPC config types.
+ #[prost(bool, tag="7")]
+ pub set_node_on_first_message_only: bool,
+}
+/// Nested message and enum types in `ApiConfigSource`.
+pub mod api_config_source {
+ /// APIs may be fetched via either REST or gRPC.
+ #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
+ #[repr(i32)]
+ pub enum ApiType {
+ /// Ideally this would be 'reserved 0' but one can't reserve the default
+ /// value. Instead we throw an exception if this is ever used.
+ UnsupportedRestLegacy = 0,
+ /// REST-JSON v2 API. The `canonical JSON encoding
+ /// <<https://developers.google.com/protocol-buffers/docs/proto3#json>`_> for
+ /// the v2 protos is used.
+ Rest = 1,
+ /// gRPC v2 API.
+ Grpc = 2,
+ /// Using the delta xDS gRPC service, i.e. DeltaDiscovery{Request,Response}
+ /// rather than Discovery{Request,Response}. Rather than sending Envoy the entire state
+ /// with every update, the xDS server only sends what has changed since the last update.
+ DeltaGrpc = 3,
+ }
+ impl ApiType {
+ /// String value of the enum field names used in the ProtoBuf definition.
+ ///
+ /// The values are not transformed in any way and thus are considered stable
+ /// (if the ProtoBuf definition does not change) and safe for programmatic use.
+ pub fn as_str_name(&self) -> &'static str {
+ match self {
+ ApiType::UnsupportedRestLegacy => "UNSUPPORTED_REST_LEGACY",
+ ApiType::Rest => "REST",
+ ApiType::Grpc => "GRPC",
+ ApiType::DeltaGrpc => "DELTA_GRPC",
+ }
+ }
+ /// Creates an enum from field names used in the ProtoBuf definition.
+ pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
+ match value {
+ "UNSUPPORTED_REST_LEGACY" => Some(Self::UnsupportedRestLegacy),
+ "REST" => Some(Self::Rest),
+ "GRPC" => Some(Self::Grpc),
+ "DELTA_GRPC" => Some(Self::DeltaGrpc),
+ _ => None,
+ }
+ }
+ }
+}
+/// Aggregated Discovery Service (ADS) options. This is currently empty, but when
+/// set in :ref:`ConfigSource <envoy_api_msg_core.ConfigSource>` can be used to
+/// specify that ADS is to be used.
+#[allow(clippy::derive_partial_eq_without_eq)]
+#[derive(Clone, Copy, PartialEq, ::prost::Message)]
+pub struct AggregatedConfigSource {
+}
+/// \[#not-implemented-hide:\]
+/// Self-referencing config source options. This is currently empty, but when
+/// set in :ref:`ConfigSource <envoy_api_msg_core.ConfigSource>` can be used to
+/// specify that other data can be obtained from the same server.
+#[allow(clippy::derive_partial_eq_without_eq)]
+#[derive(Clone, Copy, PartialEq, ::prost::Message)]
+pub struct SelfConfigSource {
+ /// API version for xDS transport protocol. This describes the xDS gRPC/REST
+ /// endpoint and version of \[Delta\]DiscoveryRequest/Response used on the wire.
+ #[prost(enumeration="ApiVersion", tag="1")]
+ pub transport_api_version: i32,
+}
+/// Rate Limit settings to be applied for discovery requests made by Envoy.
+#[allow(clippy::derive_partial_eq_without_eq)]
+#[derive(Clone, Copy, PartialEq, ::prost::Message)]
+pub struct RateLimitSettings {
+ /// Maximum number of tokens to be used for rate limiting discovery request calls. If not set, a
+ /// default value of 100 will be used.
+ #[prost(message, optional, tag="1")]
+ pub max_tokens: ::core::option::Option<super::super::super::super::google::protobuf::UInt32Value>,
+ /// Rate at which tokens will be filled per second. If not set, a default fill rate of 10 tokens
+ /// per second will be used.
+ #[prost(message, optional, tag="2")]
+ pub fill_rate: ::core::option::Option<super::super::super::super::google::protobuf::DoubleValue>,
+}
+/// Configuration for :ref:`listeners <config_listeners>`, :ref:`clusters
+/// <config_cluster_manager>`, :ref:`routes
+/// <envoy_api_msg_RouteConfiguration>`, :ref:`endpoints
+/// <arch_overview_service_discovery>` etc. may either be sourced from the
+/// filesystem or from an xDS API source. Filesystem configs are watched with
+/// inotify for updates.
+/// \[#next-free-field: 7\]
+#[allow(clippy::derive_partial_eq_without_eq)]
+#[derive(Clone, PartialEq, ::prost::Message)]
+pub struct ConfigSource {
+ /// When this timeout is specified, Envoy will wait no longer than the specified time for first
+ /// config response on this xDS subscription during the :ref:`initialization process
+ /// <arch_overview_initialization>`. After reaching the timeout, Envoy will move to the next
+ /// initialization phase, even if the first config is not delivered yet. The timer is activated
+ /// when the xDS API subscription starts, and is disarmed on first config update or on error. 0
+ /// means no timeout - Envoy will wait indefinitely for the first xDS config (unless another
+ /// timeout applies). The default is 15s.
+ #[prost(message, optional, tag="4")]
+ pub initial_fetch_timeout: ::core::option::Option<super::super::super::super::google::protobuf::Duration>,
+ /// API version for xDS resources. This implies the type URLs that the client
+ /// will request for resources and the resource type that the client will in
+ /// turn expect to be delivered.
+ #[prost(enumeration="ApiVersion", tag="6")]
+ pub resource_api_version: i32,
+ #[prost(oneof="config_source::ConfigSourceSpecifier", tags="1, 2, 3, 5")]
+ pub config_source_specifier: ::core::option::Option<config_source::ConfigSourceSpecifier>,
+}
+/// Nested message and enum types in `ConfigSource`.
+pub mod config_source {
+ #[allow(clippy::derive_partial_eq_without_eq)]
+#[derive(Clone, PartialEq, ::prost::Oneof)]
+ pub enum ConfigSourceSpecifier {
+ /// Path on the filesystem to source and watch for configuration updates.
+ /// When sourcing configuration for :ref:`secret <envoy_api_msg_auth.Secret>`,
+ /// the certificate and key files are also watched for updates.
+ ///
+ /// .. note::
+ ///
+ /// The path to the source must exist at config load time.
+ ///
+ /// .. note::
+ ///
+ /// Envoy will only watch the file path for *moves.* This is because in general only moves
+ /// are atomic. The same method of swapping files as is demonstrated in the
+ /// :ref:`runtime documentation <config_runtime_symbolic_link_swap>` can be used here also.
+ #[prost(string, tag="1")]
+ Path(::prost::alloc::string::String),
+ /// API configuration source.
+ #[prost(message, tag="2")]
+ ApiConfigSource(super::ApiConfigSource),
+ /// When set, ADS will be used to fetch resources. The ADS API configuration
+ /// source in the bootstrap configuration is used.
+ #[prost(message, tag="3")]
+ Ads(super::AggregatedConfigSource),
+ /// \[#not-implemented-hide:\]
+ /// When set, the client will access the resources from the same server it got the
+ /// ConfigSource from, although not necessarily from the same stream. This is similar to the
+ /// :ref:`ads<envoy_api_field.ConfigSource.ads>` field, except that the client may use a
+ /// different stream to the same server. As a result, this field can be used for things
+ /// like LRS that cannot be sent on an ADS stream. It can also be used to link from (e.g.)
+ /// LDS to RDS on the same server without requiring the management server to know its name
+ /// or required credentials.
+ /// [#next-major-version: In xDS v3, consider replacing the ads field with this one, since
+ /// this field can implicitly mean to use the same stream in the case where the ConfigSource
+ /// is provided via ADS and the specified data can also be obtained via ADS.]
+ #[prost(message, tag="5")]
+ Self_(super::SelfConfigSource),
+ }
+}
+// \[#protodoc-title: Configuration sources\]
+
+/// xDS API version. This is used to describe both resource and transport
+/// protocol versions (in distinct configuration fields).
+#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
+#[repr(i32)]
+pub enum ApiVersion {
+ /// When not specified, we assume v2, to ease migration to Envoy's stable API
+ /// versioning. If a client does not support v2 (e.g. due to deprecation), this
+ /// is an invalid value.
+ Auto = 0,
+ /// Use xDS v2 API.
+ V2 = 1,
+ /// Use xDS v3 API.
+ V3 = 2,
+}
+impl ApiVersion {
+ /// String value of the enum field names used in the ProtoBuf definition.
+ ///
+ /// The values are not transformed in any way and thus are considered stable
+ /// (if the ProtoBuf definition does not change) and safe for programmatic use.
+ pub fn as_str_name(&self) -> &'static str {
+ match self {
+ ApiVersion::Auto => "AUTO",
+ ApiVersion::V2 => "V2",
+ ApiVersion::V3 => "V3",
+ }
+ }
+ /// Creates an enum from field names used in the ProtoBuf definition.
+ pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
+ match value {
+ "AUTO" => Some(Self::Auto),
+ "V2" => Some(Self::V2),
+ "V3" => Some(Self::V3),
+ _ => None,
+ }
+ }
+}
+// \[#protodoc-title: Protocol options\]
+
+/// \[#not-implemented-hide:\]
+#[allow(clippy::derive_partial_eq_without_eq)]
+#[derive(Clone, Copy, PartialEq, ::prost::Message)]
+pub struct TcpProtocolOptions {
+}
+#[allow(clippy::derive_partial_eq_without_eq)]
+#[derive(Clone, Copy, PartialEq, ::prost::Message)]
+pub struct UpstreamHttpProtocolOptions {
+ /// Set transport socket `SNI <<https://en.wikipedia.org/wiki/Server_Name_Indication>`_> for new
+ /// upstream connections based on the downstream HTTP host/authority header, as seen by the
+ /// :ref:`router filter <config_http_filters_router>`.
+ #[prost(bool, tag="1")]
+ pub auto_sni: bool,
+ /// Automatic validate upstream presented certificate for new upstream connections based on the
+ /// downstream HTTP host/authority header, as seen by the
+ /// :ref:`router filter <config_http_filters_router>`.
+ /// This field is intended to set with `auto_sni` field.
+ #[prost(bool, tag="2")]
+ pub auto_san_validation: bool,
+}
+/// \[#next-free-field: 6\]
+#[allow(clippy::derive_partial_eq_without_eq)]
+#[derive(Clone, Copy, PartialEq, ::prost::Message)]
+pub struct HttpProtocolOptions {
+ /// The idle timeout for connections. The idle timeout is defined as the
+ /// period in which there are no active requests. When the
+ /// idle timeout is reached the connection will be closed. If the connection is an HTTP/2
+ /// downstream connection a drain sequence will occur prior to closing the connection, see
+ /// :ref:`drain_timeout
+ /// <envoy_api_field_config.filter.network.http_connection_manager.v2.HttpConnectionManager.drain_timeout>`.
+ /// Note that request based timeouts mean that HTTP/2 PINGs will not keep the connection alive.
+ /// If not specified, this defaults to 1 hour. To disable idle timeouts explicitly set this to 0.
+ ///
+ /// .. warning::
+ /// Disabling this timeout has a highly likelihood of yielding connection leaks due to lost TCP
+ /// FIN packets, etc.
+ #[prost(message, optional, tag="1")]
+ pub idle_timeout: ::core::option::Option<super::super::super::super::google::protobuf::Duration>,
+ /// The maximum duration of a connection. The duration is defined as a period since a connection
+ /// was established. If not set, there is no max duration. When max_connection_duration is reached
+ /// the connection will be closed. Drain sequence will occur prior to closing the connection if
+ /// if's applicable. See :ref:`drain_timeout
+ /// <envoy_api_field_config.filter.network.http_connection_manager.v2.HttpConnectionManager.drain_timeout>`.
+ /// Note: not implemented for upstream connections.
+ #[prost(message, optional, tag="3")]
+ pub max_connection_duration: ::core::option::Option<super::super::super::super::google::protobuf::Duration>,
+ /// The maximum number of headers. If unconfigured, the default
+ /// maximum number of request headers allowed is 100. Requests that exceed this limit will receive
+ /// a 431 response for HTTP/1.x and cause a stream reset for HTTP/2.
+ #[prost(message, optional, tag="2")]
+ pub max_headers_count: ::core::option::Option<super::super::super::super::google::protobuf::UInt32Value>,
+ /// Total duration to keep alive an HTTP request/response stream. If the time limit is reached the stream will be
+ /// reset independent of any other timeouts. If not specified, this value is not set.
+ #[prost(message, optional, tag="4")]
+ pub max_stream_duration: ::core::option::Option<super::super::super::super::google::protobuf::Duration>,
+ /// Action to take when a client request with a header name containing underscore characters is received.
+ /// If this setting is not specified, the value defaults to ALLOW.
+ /// Note: upstream responses are not affected by this setting.
+ #[prost(enumeration="http_protocol_options::HeadersWithUnderscoresAction", tag="5")]
+ pub headers_with_underscores_action: i32,
+}
+/// Nested message and enum types in `HttpProtocolOptions`.
+pub mod http_protocol_options {
+ /// Action to take when Envoy receives client request with header names containing underscore
+ /// characters.
+ /// Underscore character is allowed in header names by the RFC-7230 and this behavior is implemented
+ /// as a security measure due to systems that treat '_' and '-' as interchangeable. Envoy by default allows client request headers with underscore
+ /// characters.
+ #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
+ #[repr(i32)]
+ pub enum HeadersWithUnderscoresAction {
+ /// Allow headers with underscores. This is the default behavior.
+ Allow = 0,
+ /// Reject client request. HTTP/1 requests are rejected with the 400 status. HTTP/2 requests
+ /// end with the stream reset. The "httpN.requests_rejected_with_underscores_in_headers" counter
+ /// is incremented for each rejected request.
+ RejectRequest = 1,
+ /// Drop the header with name containing underscores. The header is dropped before the filter chain is
+ /// invoked and as such filters will not see dropped headers. The
+ /// "httpN.dropped_headers_with_underscores" is incremented for each dropped header.
+ DropHeader = 2,
+ }
+ impl HeadersWithUnderscoresAction {
+ /// String value of the enum field names used in the ProtoBuf definition.
+ ///
+ /// The values are not transformed in any way and thus are considered stable
+ /// (if the ProtoBuf definition does not change) and safe for programmatic use.
+ pub fn as_str_name(&self) -> &'static str {
+ match self {
+ HeadersWithUnderscoresAction::Allow => "ALLOW",
+ HeadersWithUnderscoresAction::RejectRequest => "REJECT_REQUEST",
+ HeadersWithUnderscoresAction::DropHeader => "DROP_HEADER",
+ }
+ }
+ /// Creates an enum from field names used in the ProtoBuf definition.
+ pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
+ match value {
+ "ALLOW" => Some(Self::Allow),
+ "REJECT_REQUEST" => Some(Self::RejectRequest),
+ "DROP_HEADER" => Some(Self::DropHeader),
+ _ => None,
+ }
+ }
+ }
+}
+/// \[#next-free-field: 6\]
+#[allow(clippy::derive_partial_eq_without_eq)]
+#[derive(Clone, PartialEq, ::prost::Message)]
+pub struct Http1ProtocolOptions {
+ /// Handle HTTP requests with absolute URLs in the requests. These requests
+ /// are generally sent by clients to forward/explicit proxies. This allows clients to configure
+ /// envoy as their HTTP proxy. In Unix, for example, this is typically done by setting the
+ /// *http_proxy* environment variable.
+ #[prost(message, optional, tag="1")]
+ pub allow_absolute_url: ::core::option::Option<super::super::super::super::google::protobuf::BoolValue>,
+ /// Handle incoming HTTP/1.0 and HTTP 0.9 requests.
+ /// This is off by default, and not fully standards compliant. There is support for pre-HTTP/1.1
+ /// style connect logic, dechunking, and handling lack of client host iff
+ /// *default_host_for_http_10* is configured.
+ #[prost(bool, tag="2")]
+ pub accept_http_10: bool,
+ /// A default host for HTTP/1.0 requests. This is highly suggested if *accept_http_10* is true as
+ /// Envoy does not otherwise support HTTP/1.0 without a Host header.
+ /// This is a no-op if *accept_http_10* is not true.
+ #[prost(string, tag="3")]
+ pub default_host_for_http_10: ::prost::alloc::string::String,
+ /// Describes how the keys for response headers should be formatted. By default, all header keys
+ /// are lower cased.
+ #[prost(message, optional, tag="4")]
+ pub header_key_format: ::core::option::Option<http1_protocol_options::HeaderKeyFormat>,
+ /// Enables trailers for HTTP/1. By default the HTTP/1 codec drops proxied trailers.
+ ///
+ /// .. attention::
+ ///
+ /// Note that this only happens when Envoy is chunk encoding which occurs when:
+ /// - The request is HTTP/1.1.
+ /// - Is neither a HEAD only request nor a HTTP Upgrade.
+ /// - Not a response to a HEAD request.
+ /// - The content length header is not present.
+ #[prost(bool, tag="5")]
+ pub enable_trailers: bool,
+}
+/// Nested message and enum types in `Http1ProtocolOptions`.
+pub mod http1_protocol_options {
+ #[allow(clippy::derive_partial_eq_without_eq)]
+#[derive(Clone, Copy, PartialEq, ::prost::Message)]
+ pub struct HeaderKeyFormat {
+ #[prost(oneof="header_key_format::HeaderFormat", tags="1")]
+ pub header_format: ::core::option::Option<header_key_format::HeaderFormat>,
+ }
+ /// Nested message and enum types in `HeaderKeyFormat`.
+ pub mod header_key_format {
+ #[allow(clippy::derive_partial_eq_without_eq)]
+#[derive(Clone, Copy, PartialEq, ::prost::Message)]
+ pub struct ProperCaseWords {
+ }
+ #[allow(clippy::derive_partial_eq_without_eq)]
+#[derive(Clone, Copy, PartialEq, ::prost::Oneof)]
+ pub enum HeaderFormat {
+ /// Formats the header by proper casing words: the first character and any character following
+ /// a special character will be capitalized if it's an alpha character. For example,
+ /// "content-type" becomes "Content-Type", and "foo$b#$are" becomes "Foo$B#$Are".
+ /// Note that while this results in most headers following conventional casing, certain headers
+ /// are not covered. For example, the "TE" header will be formatted as "Te".
+ #[prost(message, tag="1")]
+ ProperCaseWords(ProperCaseWords),
+ }
+ }
+}
+/// \[#next-free-field: 14\]
+#[allow(clippy::derive_partial_eq_without_eq)]
+#[derive(Clone, PartialEq, ::prost::Message)]
+pub struct Http2ProtocolOptions {
+ /// `Maximum table size <<https://httpwg.org/specs/rfc7541.html#rfc.section.4.2>`_>
+ /// (in octets) that the encoder is permitted to use for the dynamic HPACK table. Valid values
+ /// range from 0 to 4294967295 (2^32 - 1) and defaults to 4096. 0 effectively disables header
+ /// compression.
+ #[prost(message, optional, tag="1")]
+ pub hpack_table_size: ::core::option::Option<super::super::super::super::google::protobuf::UInt32Value>,
+ /// `Maximum concurrent streams <<https://httpwg.org/specs/rfc7540.html#rfc.section.5.1.2>`_>
+ /// allowed for peer on one HTTP/2 connection. Valid values range from 1 to 2147483647 (2^31 - 1)
+ /// and defaults to 2147483647.
+ ///
+ /// For upstream connections, this also limits how many streams Envoy will initiate concurrently
+ /// on a single connection. If the limit is reached, Envoy may queue requests or establish
+ /// additional connections (as allowed per circuit breaker limits).
+ #[prost(message, optional, tag="2")]
+ pub max_concurrent_streams: ::core::option::Option<super::super::super::super::google::protobuf::UInt32Value>,
+ /// `Initial stream-level flow-control window
+ /// <<https://httpwg.org/specs/rfc7540.html#rfc.section.6.9.2>`_> size. Valid values range from 65535
+ /// (2^16 - 1, HTTP/2 default) to 2147483647 (2^31 - 1, HTTP/2 maximum) and defaults to 268435456
+ /// (256 * 1024 * 1024).
+ ///
+ /// NOTE: 65535 is the initial window size from HTTP/2 spec. We only support increasing the default
+ /// window size now, so it's also the minimum.
+ ///
+ /// This field also acts as a soft limit on the number of bytes Envoy will buffer per-stream in the
+ /// HTTP/2 codec buffers. Once the buffer reaches this pointer, watermark callbacks will fire to
+ /// stop the flow of data to the codec buffers.
+ #[prost(message, optional, tag="3")]
+ pub initial_stream_window_size: ::core::option::Option<super::super::super::super::google::protobuf::UInt32Value>,
+ /// Similar to *initial_stream_window_size*, but for connection-level flow-control
+ /// window. Currently, this has the same minimum/maximum/default as *initial_stream_window_size*.
+ #[prost(message, optional, tag="4")]
+ pub initial_connection_window_size: ::core::option::Option<super::super::super::super::google::protobuf::UInt32Value>,
+ /// Allows proxying Websocket and other upgrades over H2 connect.
+ #[prost(bool, tag="5")]
+ pub allow_connect: bool,
+ /// \[#not-implemented-hide:\] Hiding until envoy has full metadata support.
+ /// Still under implementation. DO NOT USE.
+ ///
+ /// Allows metadata. See [metadata
+ /// docs](<https://github.com/envoyproxy/envoy/blob/main/source/docs/h2_metadata.md>) for more
+ /// information.
+ #[prost(bool, tag="6")]
+ pub allow_metadata: bool,
+ /// Limit the number of pending outbound downstream frames of all types (frames that are waiting to
+ /// be written into the socket). Exceeding this limit triggers flood mitigation and connection is
+ /// terminated. The ``http2.outbound_flood`` stat tracks the number of terminated connections due
+ /// to flood mitigation. The default limit is 10000.
+ /// \[#comment:TODO: implement same limits for upstream outbound frames as well.\]
+ #[prost(message, optional, tag="7")]
+ pub max_outbound_frames: ::core::option::Option<super::super::super::super::google::protobuf::UInt32Value>,
+ /// Limit the number of pending outbound downstream frames of types PING, SETTINGS and RST_STREAM,
+ /// preventing high memory utilization when receiving continuous stream of these frames. Exceeding
+ /// this limit triggers flood mitigation and connection is terminated. The
+ /// ``http2.outbound_control_flood`` stat tracks the number of terminated connections due to flood
+ /// mitigation. The default limit is 1000.
+ /// \[#comment:TODO: implement same limits for upstream outbound frames as well.\]
+ #[prost(message, optional, tag="8")]
+ pub max_outbound_control_frames: ::core::option::Option<super::super::super::super::google::protobuf::UInt32Value>,
+ /// Limit the number of consecutive inbound frames of types HEADERS, CONTINUATION and DATA with an
+ /// empty payload and no end stream flag. Those frames have no legitimate use and are abusive, but
+ /// might be a result of a broken HTTP/2 implementation. The `http2.inbound_empty_frames_flood``
+ /// stat tracks the number of connections terminated due to flood mitigation.
+ /// Setting this to 0 will terminate connection upon receiving first frame with an empty payload
+ /// and no end stream flag. The default limit is 1.
+ /// \[#comment:TODO: implement same limits for upstream inbound frames as well.\]
+ #[prost(message, optional, tag="9")]
+ pub max_consecutive_inbound_frames_with_empty_payload: ::core::option::Option<super::super::super::super::google::protobuf::UInt32Value>,
+ /// Limit the number of inbound PRIORITY frames allowed per each opened stream. If the number
+ /// of PRIORITY frames received over the lifetime of connection exceeds the value calculated
+ /// using this formula::
+ ///
+ /// max_inbound_priority_frames_per_stream * (1 + inbound_streams)
+ ///
+ /// the connection is terminated. The ``http2.inbound_priority_frames_flood`` stat tracks
+ /// the number of connections terminated due to flood mitigation. The default limit is 100.
+ /// \[#comment:TODO: implement same limits for upstream inbound frames as well.\]
+ #[prost(message, optional, tag="10")]
+ pub max_inbound_priority_frames_per_stream: ::core::option::Option<super::super::super::super::google::protobuf::UInt32Value>,
+ /// Limit the number of inbound WINDOW_UPDATE frames allowed per DATA frame sent. If the number
+ /// of WINDOW_UPDATE frames received over the lifetime of connection exceeds the value calculated
+ /// using this formula::
+ ///
+ /// 1 + 2 * (inbound_streams +
+ /// max_inbound_window_update_frames_per_data_frame_sent * outbound_data_frames)
+ ///
+ /// the connection is terminated. The ``http2.inbound_priority_frames_flood`` stat tracks
+ /// the number of connections terminated due to flood mitigation. The default limit is 10.
+ /// Setting this to 1 should be enough to support HTTP/2 implementations with basic flow control,
+ /// but more complex implementations that try to estimate available bandwidth require at least 2.
+ /// \[#comment:TODO: implement same limits for upstream inbound frames as well.\]
+ #[prost(message, optional, tag="11")]
+ pub max_inbound_window_update_frames_per_data_frame_sent: ::core::option::Option<super::super::super::super::google::protobuf::UInt32Value>,
+ /// Allows invalid HTTP messaging and headers. When this option is disabled (default), then
+ /// the whole HTTP/2 connection is terminated upon receiving invalid HEADERS frame. However,
+ /// when this option is enabled, only the offending stream is terminated.
+ ///
+ /// See `RFC7540, sec. 8.1 <<https://tools.ietf.org/html/rfc7540#section-8.1>`_> for details.
+ #[prost(bool, tag="12")]
+ pub stream_error_on_invalid_http_messaging: bool,
+ /// \[#not-implemented-hide:\]
+ /// Specifies SETTINGS frame parameters to be sent to the peer, with two exceptions:
+ ///
+ /// 1. SETTINGS_ENABLE_PUSH (0x2) is not configurable as HTTP/2 server push is not supported by
+ /// Envoy.
+ ///
+ /// 2. SETTINGS_ENABLE_CONNECT_PROTOCOL (0x8) is only configurable through the named field
+ /// 'allow_connect'.
+ ///
+ /// Note that custom parameters specified through this field can not also be set in the
+ /// corresponding named parameters:
+ ///
+ /// .. code-block:: text
+ ///
+ /// ID Field Name
+ /// ----------------
+ /// 0x1 hpack_table_size
+ /// 0x3 max_concurrent_streams
+ /// 0x4 initial_stream_window_size
+ ///
+ /// Collisions will trigger config validation failure on load/update. Likewise, inconsistencies
+ /// between custom parameters with the same identifier will trigger a failure.
+ ///
+ /// See `IANA HTTP/2 Settings
+ /// <<https://www.iana.org/assignments/http2-parameters/http2-parameters.xhtml#settings>`_> for
+ /// standardized identifiers.
+ #[prost(message, repeated, tag="13")]
+ pub custom_settings_parameters: ::prost::alloc::vec::Vec<http2_protocol_options::SettingsParameter>,
+}
+/// Nested message and enum types in `Http2ProtocolOptions`.
+pub mod http2_protocol_options {
+ /// Defines a parameter to be sent in the SETTINGS frame.
+ /// See `RFC7540, sec. 6.5.1 <<https://tools.ietf.org/html/rfc7540#section-6.5.1>`_> for details.
+ #[allow(clippy::derive_partial_eq_without_eq)]
+#[derive(Clone, Copy, PartialEq, ::prost::Message)]
+ pub struct SettingsParameter {
+ /// The 16 bit parameter identifier.
+ #[prost(message, optional, tag="1")]
+ pub identifier: ::core::option::Option<super::super::super::super::super::google::protobuf::UInt32Value>,
+ /// The 32 bit parameter value.
+ #[prost(message, optional, tag="2")]
+ pub value: ::core::option::Option<super::super::super::super::super::google::protobuf::UInt32Value>,
+ }
+}
+/// \[#not-implemented-hide:\]
+#[allow(clippy::derive_partial_eq_without_eq)]
+#[derive(Clone, PartialEq, ::prost::Message)]
+pub struct GrpcProtocolOptions {
+ #[prost(message, optional, tag="1")]
+ pub http2_protocol_options: ::core::option::Option<Http2ProtocolOptions>,
+}
+// \[#protodoc-title: gRPC method list\]
+
+/// A list of gRPC methods which can be used as an allowlist, for example.
+#[allow(clippy::derive_partial_eq_without_eq)]
+#[derive(Clone, PartialEq, ::prost::Message)]
+pub struct GrpcMethodList {
+ #[prost(message, repeated, tag="1")]
+ pub services: ::prost::alloc::vec::Vec<grpc_method_list::Service>,
+}
+/// Nested message and enum types in `GrpcMethodList`.
+pub mod grpc_method_list {
+ #[allow(clippy::derive_partial_eq_without_eq)]
+#[derive(Clone, PartialEq, ::prost::Message)]
+ pub struct Service {
+ /// The name of the gRPC service.
+ #[prost(string, tag="1")]
+ pub name: ::prost::alloc::string::String,
+ /// The names of the gRPC methods in this service.
+ #[prost(string, repeated, tag="2")]
+ pub method_names: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
+ }
+}
+// @@protoc_insertion_point(module)