quilkin_proto/generated/envoy/config/core/
v3.rs

1// This file is @generated by prost-build.
2#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
3pub struct Locality {
4    #[prost(string, tag = "1")]
5    pub region: ::prost::alloc::string::String,
6    #[prost(string, tag = "2")]
7    pub zone: ::prost::alloc::string::String,
8    #[prost(string, tag = "3")]
9    pub sub_zone: ::prost::alloc::string::String,
10}
11#[derive(Clone, PartialEq, ::prost::Message)]
12pub struct Node {
13    #[prost(string, tag = "1")]
14    pub id: ::prost::alloc::string::String,
15    #[prost(string, tag = "2")]
16    pub cluster: ::prost::alloc::string::String,
17    #[prost(message, optional, tag = "3")]
18    pub metadata: ::core::option::Option<::prost_types::Struct>,
19    #[prost(message, optional, tag = "4")]
20    pub locality: ::core::option::Option<Locality>,
21    #[prost(string, tag = "6")]
22    pub user_agent_name: ::prost::alloc::string::String,
23}
24#[derive(Clone, PartialEq, ::prost::Message)]
25pub struct Metadata {
26    #[prost(map = "string, message", tag = "1")]
27    pub filter_metadata:
28        ::std::collections::HashMap<::prost::alloc::string::String, ::prost_types::Struct>,
29    #[prost(map = "string, message", tag = "2")]
30    pub typed_filter_metadata:
31        ::std::collections::HashMap<::prost::alloc::string::String, ::prost_types::Any>,
32}
33#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
34pub struct RuntimeUInt32 {
35    #[prost(uint32, tag = "2")]
36    pub default_value: u32,
37    #[prost(string, tag = "3")]
38    pub runtime_key: ::prost::alloc::string::String,
39}
40#[derive(Clone, PartialEq, ::prost::Message)]
41pub struct RuntimePercent {
42    #[prost(message, optional, tag = "1")]
43    pub default_value: ::core::option::Option<super::super::super::kind::v3::Percent>,
44    #[prost(string, tag = "2")]
45    pub runtime_key: ::prost::alloc::string::String,
46}
47#[derive(Clone, PartialEq, ::prost::Message)]
48pub struct RuntimeDouble {
49    #[prost(double, tag = "1")]
50    pub default_value: f64,
51    #[prost(string, tag = "2")]
52    pub runtime_key: ::prost::alloc::string::String,
53}
54#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
55pub struct RuntimeFeatureFlag {
56    #[prost(message, optional, tag = "1")]
57    pub default_value: ::core::option::Option<bool>,
58    #[prost(string, tag = "2")]
59    pub runtime_key: ::prost::alloc::string::String,
60}
61#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
62pub struct QueryParameter {
63    #[prost(string, tag = "1")]
64    pub key: ::prost::alloc::string::String,
65    #[prost(string, tag = "2")]
66    pub value: ::prost::alloc::string::String,
67}
68#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
69pub struct HeaderValue {
70    #[prost(string, tag = "1")]
71    pub key: ::prost::alloc::string::String,
72    #[prost(string, tag = "2")]
73    pub value: ::prost::alloc::string::String,
74}
75#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
76pub struct HeaderValueOption {
77    #[prost(message, optional, tag = "1")]
78    pub header: ::core::option::Option<HeaderValue>,
79    #[prost(message, optional, tag = "2")]
80    pub append: ::core::option::Option<bool>,
81    #[prost(enumeration = "header_value_option::HeaderAppendAction", tag = "3")]
82    pub append_action: i32,
83}
84/// Nested message and enum types in `HeaderValueOption`.
85pub mod header_value_option {
86    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
87    #[repr(i32)]
88    pub enum HeaderAppendAction {
89        AppendIfExistsOrAdd = 0,
90        AddIfAbsent = 1,
91        OverwriteIfExistsOrAdd = 2,
92    }
93    impl HeaderAppendAction {
94        /// String value of the enum field names used in the ProtoBuf definition.
95        ///
96        /// The values are not transformed in any way and thus are considered stable
97        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
98        pub fn as_str_name(&self) -> &'static str {
99            match self {
100                Self::AppendIfExistsOrAdd => "APPEND_IF_EXISTS_OR_ADD",
101                Self::AddIfAbsent => "ADD_IF_ABSENT",
102                Self::OverwriteIfExistsOrAdd => "OVERWRITE_IF_EXISTS_OR_ADD",
103            }
104        }
105        /// Creates an enum from field names used in the ProtoBuf definition.
106        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
107            match value {
108                "APPEND_IF_EXISTS_OR_ADD" => Some(Self::AppendIfExistsOrAdd),
109                "ADD_IF_ABSENT" => Some(Self::AddIfAbsent),
110                "OVERWRITE_IF_EXISTS_OR_ADD" => Some(Self::OverwriteIfExistsOrAdd),
111                _ => None,
112            }
113        }
114    }
115}
116#[derive(Clone, PartialEq, ::prost::Message)]
117pub struct HeaderMap {
118    #[prost(message, repeated, tag = "1")]
119    pub headers: ::prost::alloc::vec::Vec<HeaderValue>,
120}
121#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
122pub struct WatchedDirectory {
123    #[prost(string, tag = "1")]
124    pub path: ::prost::alloc::string::String,
125}
126#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
127pub struct DataSource {
128    #[prost(oneof = "data_source::Specifier", tags = "1, 2, 3, 4")]
129    pub specifier: ::core::option::Option<data_source::Specifier>,
130}
131/// Nested message and enum types in `DataSource`.
132pub mod data_source {
133    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Oneof)]
134    pub enum Specifier {
135        #[prost(string, tag = "1")]
136        Filename(::prost::alloc::string::String),
137        #[prost(bytes, tag = "2")]
138        InlineBytes(::prost::alloc::vec::Vec<u8>),
139        #[prost(string, tag = "3")]
140        InlineString(::prost::alloc::string::String),
141        #[prost(string, tag = "4")]
142        EnvironmentVariable(::prost::alloc::string::String),
143    }
144}
145#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
146pub struct TransportSocket {
147    #[prost(string, tag = "1")]
148    pub name: ::prost::alloc::string::String,
149    #[prost(oneof = "transport_socket::ConfigType", tags = "3")]
150    pub config_type: ::core::option::Option<transport_socket::ConfigType>,
151}
152/// Nested message and enum types in `TransportSocket`.
153pub mod transport_socket {
154    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Oneof)]
155    pub enum ConfigType {
156        #[prost(message, tag = "3")]
157        TypedConfig(::prost_types::Any),
158    }
159}
160#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
161pub struct RuntimeFractionalPercent {
162    #[prost(message, optional, tag = "1")]
163    pub default_value: ::core::option::Option<super::super::super::kind::v3::FractionalPercent>,
164    #[prost(string, tag = "2")]
165    pub runtime_key: ::prost::alloc::string::String,
166}
167#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
168pub struct ControlPlane {
169    #[prost(string, tag = "1")]
170    pub identifier: ::prost::alloc::string::String,
171}
172#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
173#[repr(i32)]
174pub enum RoutingPriority {
175    Default = 0,
176    High = 1,
177}
178impl RoutingPriority {
179    /// String value of the enum field names used in the ProtoBuf definition.
180    ///
181    /// The values are not transformed in any way and thus are considered stable
182    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
183    pub fn as_str_name(&self) -> &'static str {
184        match self {
185            Self::Default => "DEFAULT",
186            Self::High => "HIGH",
187        }
188    }
189    /// Creates an enum from field names used in the ProtoBuf definition.
190    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
191        match value {
192            "DEFAULT" => Some(Self::Default),
193            "HIGH" => Some(Self::High),
194            _ => None,
195        }
196    }
197}
198#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
199#[repr(i32)]
200pub enum RequestMethod {
201    MethodUnspecified = 0,
202    Get = 1,
203    Head = 2,
204    Post = 3,
205    Put = 4,
206    Delete = 5,
207    Connect = 6,
208    Options = 7,
209    Trace = 8,
210    Patch = 9,
211}
212impl RequestMethod {
213    /// String value of the enum field names used in the ProtoBuf definition.
214    ///
215    /// The values are not transformed in any way and thus are considered stable
216    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
217    pub fn as_str_name(&self) -> &'static str {
218        match self {
219            Self::MethodUnspecified => "METHOD_UNSPECIFIED",
220            Self::Get => "GET",
221            Self::Head => "HEAD",
222            Self::Post => "POST",
223            Self::Put => "PUT",
224            Self::Delete => "DELETE",
225            Self::Connect => "CONNECT",
226            Self::Options => "OPTIONS",
227            Self::Trace => "TRACE",
228            Self::Patch => "PATCH",
229        }
230    }
231    /// Creates an enum from field names used in the ProtoBuf definition.
232    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
233        match value {
234            "METHOD_UNSPECIFIED" => Some(Self::MethodUnspecified),
235            "GET" => Some(Self::Get),
236            "HEAD" => Some(Self::Head),
237            "POST" => Some(Self::Post),
238            "PUT" => Some(Self::Put),
239            "DELETE" => Some(Self::Delete),
240            "CONNECT" => Some(Self::Connect),
241            "OPTIONS" => Some(Self::Options),
242            "TRACE" => Some(Self::Trace),
243            "PATCH" => Some(Self::Patch),
244            _ => None,
245        }
246    }
247}
248#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
249#[repr(i32)]
250pub enum TrafficDirection {
251    Unspecified = 0,
252    Inbound = 1,
253    Outbound = 2,
254}
255impl TrafficDirection {
256    /// String value of the enum field names used in the ProtoBuf definition.
257    ///
258    /// The values are not transformed in any way and thus are considered stable
259    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
260    pub fn as_str_name(&self) -> &'static str {
261        match self {
262            Self::Unspecified => "UNSPECIFIED",
263            Self::Inbound => "INBOUND",
264            Self::Outbound => "OUTBOUND",
265        }
266    }
267    /// Creates an enum from field names used in the ProtoBuf definition.
268    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
269        match value {
270            "UNSPECIFIED" => Some(Self::Unspecified),
271            "INBOUND" => Some(Self::Inbound),
272            "OUTBOUND" => Some(Self::Outbound),
273            _ => None,
274        }
275    }
276}
277#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
278pub struct TypedExtensionConfig {
279    #[prost(string, tag = "1")]
280    pub name: ::prost::alloc::string::String,
281    #[prost(message, optional, tag = "2")]
282    pub typed_config: ::core::option::Option<::prost_types::Any>,
283}
284#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
285pub struct ProxyProtocolConfig {
286    #[prost(enumeration = "proxy_protocol_config::Version", tag = "1")]
287    pub version: i32,
288}
289/// Nested message and enum types in `ProxyProtocolConfig`.
290pub mod proxy_protocol_config {
291    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
292    #[repr(i32)]
293    pub enum Version {
294        V1 = 0,
295        V2 = 1,
296    }
297    impl Version {
298        /// String value of the enum field names used in the ProtoBuf definition.
299        ///
300        /// The values are not transformed in any way and thus are considered stable
301        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
302        pub fn as_str_name(&self) -> &'static str {
303            match self {
304                Self::V1 => "V1",
305                Self::V2 => "V2",
306            }
307        }
308        /// Creates an enum from field names used in the ProtoBuf definition.
309        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
310            match value {
311                "V1" => Some(Self::V1),
312                "V2" => Some(Self::V2),
313                _ => None,
314            }
315        }
316    }
317}
318#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
319pub struct SocketOption {
320    #[prost(string, tag = "1")]
321    pub description: ::prost::alloc::string::String,
322    #[prost(int64, tag = "2")]
323    pub level: i64,
324    #[prost(int64, tag = "3")]
325    pub name: i64,
326    #[prost(enumeration = "socket_option::SocketState", tag = "6")]
327    pub state: i32,
328    #[prost(oneof = "socket_option::Value", tags = "4, 5")]
329    pub value: ::core::option::Option<socket_option::Value>,
330}
331/// Nested message and enum types in `SocketOption`.
332pub mod socket_option {
333    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
334    #[repr(i32)]
335    pub enum SocketState {
336        StatePrebind = 0,
337        StateBound = 1,
338        StateListening = 2,
339    }
340    impl SocketState {
341        /// String value of the enum field names used in the ProtoBuf definition.
342        ///
343        /// The values are not transformed in any way and thus are considered stable
344        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
345        pub fn as_str_name(&self) -> &'static str {
346            match self {
347                Self::StatePrebind => "STATE_PREBIND",
348                Self::StateBound => "STATE_BOUND",
349                Self::StateListening => "STATE_LISTENING",
350            }
351        }
352        /// Creates an enum from field names used in the ProtoBuf definition.
353        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
354            match value {
355                "STATE_PREBIND" => Some(Self::StatePrebind),
356                "STATE_BOUND" => Some(Self::StateBound),
357                "STATE_LISTENING" => Some(Self::StateListening),
358                _ => None,
359            }
360        }
361    }
362    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Oneof)]
363    pub enum Value {
364        #[prost(int64, tag = "4")]
365        IntValue(i64),
366        #[prost(bytes, tag = "5")]
367        BufValue(::prost::alloc::vec::Vec<u8>),
368    }
369}
370#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
371pub struct Pipe {
372    #[prost(string, tag = "1")]
373    pub path: ::prost::alloc::string::String,
374    #[prost(uint32, tag = "2")]
375    pub mode: u32,
376}
377#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
378pub struct EnvoyInternalAddress {
379    #[prost(oneof = "envoy_internal_address::AddressNameSpecifier", tags = "1")]
380    pub address_name_specifier:
381        ::core::option::Option<envoy_internal_address::AddressNameSpecifier>,
382}
383/// Nested message and enum types in `EnvoyInternalAddress`.
384pub mod envoy_internal_address {
385    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Oneof)]
386    pub enum AddressNameSpecifier {
387        #[prost(string, tag = "1")]
388        ServerListenerName(::prost::alloc::string::String),
389    }
390}
391#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
392pub struct SocketAddress {
393    #[prost(enumeration = "socket_address::Protocol", tag = "1")]
394    pub protocol: i32,
395    #[prost(string, tag = "2")]
396    pub address: ::prost::alloc::string::String,
397    #[prost(string, tag = "5")]
398    pub resolver_name: ::prost::alloc::string::String,
399    #[prost(bool, tag = "6")]
400    pub ipv4_compat: bool,
401    #[prost(oneof = "socket_address::PortSpecifier", tags = "3, 4")]
402    pub port_specifier: ::core::option::Option<socket_address::PortSpecifier>,
403}
404/// Nested message and enum types in `SocketAddress`.
405pub mod socket_address {
406    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
407    #[repr(i32)]
408    pub enum Protocol {
409        Tcp = 0,
410        Udp = 1,
411    }
412    impl Protocol {
413        /// String value of the enum field names used in the ProtoBuf definition.
414        ///
415        /// The values are not transformed in any way and thus are considered stable
416        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
417        pub fn as_str_name(&self) -> &'static str {
418            match self {
419                Self::Tcp => "TCP",
420                Self::Udp => "UDP",
421            }
422        }
423        /// Creates an enum from field names used in the ProtoBuf definition.
424        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
425            match value {
426                "TCP" => Some(Self::Tcp),
427                "UDP" => Some(Self::Udp),
428                _ => None,
429            }
430        }
431    }
432    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Oneof)]
433    pub enum PortSpecifier {
434        #[prost(uint32, tag = "3")]
435        PortValue(u32),
436        #[prost(string, tag = "4")]
437        NamedPort(::prost::alloc::string::String),
438    }
439}
440#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
441pub struct TcpKeepalive {
442    #[prost(message, optional, tag = "1")]
443    pub keepalive_probes: ::core::option::Option<u32>,
444    #[prost(message, optional, tag = "2")]
445    pub keepalive_time: ::core::option::Option<u32>,
446    #[prost(message, optional, tag = "3")]
447    pub keepalive_interval: ::core::option::Option<u32>,
448}
449#[derive(Clone, PartialEq, ::prost::Message)]
450pub struct BindConfig {
451    #[prost(message, optional, tag = "1")]
452    pub source_address: ::core::option::Option<SocketAddress>,
453    #[prost(message, optional, tag = "2")]
454    pub freebind: ::core::option::Option<bool>,
455    #[prost(message, repeated, tag = "3")]
456    pub socket_options: ::prost::alloc::vec::Vec<SocketOption>,
457}
458#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
459pub struct Address {
460    #[prost(oneof = "address::Address", tags = "1, 2, 3")]
461    pub address: ::core::option::Option<address::Address>,
462}
463/// Nested message and enum types in `Address`.
464pub mod address {
465    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Oneof)]
466    pub enum Address {
467        #[prost(message, tag = "1")]
468        SocketAddress(super::SocketAddress),
469        #[prost(message, tag = "2")]
470        Pipe(super::Pipe),
471        #[prost(message, tag = "3")]
472        EnvoyInternalAddress(super::EnvoyInternalAddress),
473    }
474}
475#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
476pub struct CidrRange {
477    #[prost(string, tag = "1")]
478    pub address_prefix: ::prost::alloc::string::String,
479    #[prost(message, optional, tag = "2")]
480    pub prefix_len: ::core::option::Option<u32>,
481}
482#[derive(Clone, PartialEq, ::prost::Message)]
483pub struct GrpcService {
484    #[prost(message, optional, tag = "3")]
485    pub timeout: ::core::option::Option<::prost_types::Duration>,
486    #[prost(message, repeated, tag = "5")]
487    pub initial_metadata: ::prost::alloc::vec::Vec<HeaderValue>,
488    #[prost(oneof = "grpc_service::TargetSpecifier", tags = "1, 2")]
489    pub target_specifier: ::core::option::Option<grpc_service::TargetSpecifier>,
490}
491/// Nested message and enum types in `GrpcService`.
492pub mod grpc_service {
493    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
494    pub struct EnvoyGrpc {
495        #[prost(string, tag = "1")]
496        pub cluster_name: ::prost::alloc::string::String,
497        #[prost(string, tag = "2")]
498        pub authority: ::prost::alloc::string::String,
499    }
500    #[derive(Clone, PartialEq, ::prost::Message)]
501    pub struct GoogleGrpc {
502        #[prost(string, tag = "1")]
503        pub target_uri: ::prost::alloc::string::String,
504        #[prost(message, optional, tag = "2")]
505        pub channel_credentials: ::core::option::Option<google_grpc::ChannelCredentials>,
506        #[prost(message, repeated, tag = "3")]
507        pub call_credentials: ::prost::alloc::vec::Vec<google_grpc::CallCredentials>,
508        #[prost(string, tag = "4")]
509        pub stat_prefix: ::prost::alloc::string::String,
510        #[prost(string, tag = "5")]
511        pub credentials_factory_name: ::prost::alloc::string::String,
512        #[prost(message, optional, tag = "6")]
513        pub config: ::core::option::Option<::prost_types::Struct>,
514        #[prost(message, optional, tag = "7")]
515        pub per_stream_buffer_limit_bytes: ::core::option::Option<u32>,
516        #[prost(message, optional, tag = "8")]
517        pub channel_args: ::core::option::Option<google_grpc::ChannelArgs>,
518    }
519    /// Nested message and enum types in `GoogleGrpc`.
520    pub mod google_grpc {
521        #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
522        pub struct SslCredentials {
523            #[prost(message, optional, tag = "1")]
524            pub root_certs: ::core::option::Option<super::super::DataSource>,
525            #[prost(message, optional, tag = "2")]
526            pub private_key: ::core::option::Option<super::super::DataSource>,
527            #[prost(message, optional, tag = "3")]
528            pub cert_chain: ::core::option::Option<super::super::DataSource>,
529        }
530        #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
531        pub struct GoogleLocalCredentials {}
532        #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
533        pub struct ChannelCredentials {
534            #[prost(oneof = "channel_credentials::CredentialSpecifier", tags = "1, 2, 3")]
535            pub credential_specifier:
536                ::core::option::Option<channel_credentials::CredentialSpecifier>,
537        }
538        /// Nested message and enum types in `ChannelCredentials`.
539        pub mod channel_credentials {
540            #[derive(Clone, PartialEq, Eq, Hash, ::prost::Oneof)]
541            pub enum CredentialSpecifier {
542                #[prost(message, tag = "1")]
543                SslCredentials(super::SslCredentials),
544                #[prost(message, tag = "2")]
545                GoogleDefault(()),
546                #[prost(message, tag = "3")]
547                LocalCredentials(super::GoogleLocalCredentials),
548            }
549        }
550        #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
551        pub struct CallCredentials {
552            #[prost(
553                oneof = "call_credentials::CredentialSpecifier",
554                tags = "1, 2, 3, 4, 5, 6, 7"
555            )]
556            pub credential_specifier: ::core::option::Option<call_credentials::CredentialSpecifier>,
557        }
558        /// Nested message and enum types in `CallCredentials`.
559        pub mod call_credentials {
560            #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
561            pub struct ServiceAccountJwtAccessCredentials {
562                #[prost(string, tag = "1")]
563                pub json_key: ::prost::alloc::string::String,
564                #[prost(uint64, tag = "2")]
565                pub token_lifetime_seconds: u64,
566            }
567            #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
568            pub struct GoogleIamCredentials {
569                #[prost(string, tag = "1")]
570                pub authorization_token: ::prost::alloc::string::String,
571                #[prost(string, tag = "2")]
572                pub authority_selector: ::prost::alloc::string::String,
573            }
574            #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
575            pub struct MetadataCredentialsFromPlugin {
576                #[prost(string, tag = "1")]
577                pub name: ::prost::alloc::string::String,
578                #[prost(oneof = "metadata_credentials_from_plugin::ConfigType", tags = "3")]
579                pub config_type:
580                    ::core::option::Option<metadata_credentials_from_plugin::ConfigType>,
581            }
582            /// Nested message and enum types in `MetadataCredentialsFromPlugin`.
583            pub mod metadata_credentials_from_plugin {
584                #[derive(Clone, PartialEq, Eq, Hash, ::prost::Oneof)]
585                pub enum ConfigType {
586                    #[prost(message, tag = "3")]
587                    TypedConfig(::prost_types::Any),
588                }
589            }
590            #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
591            pub struct StsService {
592                #[prost(string, tag = "1")]
593                pub token_exchange_service_uri: ::prost::alloc::string::String,
594                #[prost(string, tag = "2")]
595                pub resource: ::prost::alloc::string::String,
596                #[prost(string, tag = "3")]
597                pub audience: ::prost::alloc::string::String,
598                #[prost(string, tag = "4")]
599                pub scope: ::prost::alloc::string::String,
600                #[prost(string, tag = "5")]
601                pub requested_token_type: ::prost::alloc::string::String,
602                #[prost(string, tag = "6")]
603                pub subject_token_path: ::prost::alloc::string::String,
604                #[prost(string, tag = "7")]
605                pub subject_token_type: ::prost::alloc::string::String,
606                #[prost(string, tag = "8")]
607                pub actor_token_path: ::prost::alloc::string::String,
608                #[prost(string, tag = "9")]
609                pub actor_token_type: ::prost::alloc::string::String,
610            }
611            #[derive(Clone, PartialEq, Eq, Hash, ::prost::Oneof)]
612            pub enum CredentialSpecifier {
613                #[prost(string, tag = "1")]
614                AccessToken(::prost::alloc::string::String),
615                #[prost(message, tag = "2")]
616                GoogleComputeEngine(()),
617                #[prost(string, tag = "3")]
618                GoogleRefreshToken(::prost::alloc::string::String),
619                #[prost(message, tag = "4")]
620                ServiceAccountJwtAccess(ServiceAccountJwtAccessCredentials),
621                #[prost(message, tag = "5")]
622                GoogleIam(GoogleIamCredentials),
623                #[prost(message, tag = "6")]
624                FromPlugin(MetadataCredentialsFromPlugin),
625                #[prost(message, tag = "7")]
626                StsService(StsService),
627            }
628        }
629        #[derive(Clone, PartialEq, ::prost::Message)]
630        pub struct ChannelArgs {
631            #[prost(map = "string, message", tag = "1")]
632            pub args:
633                ::std::collections::HashMap<::prost::alloc::string::String, channel_args::Value>,
634        }
635        /// Nested message and enum types in `ChannelArgs`.
636        pub mod channel_args {
637            #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
638            pub struct Value {
639                #[prost(oneof = "value::ValueSpecifier", tags = "1, 2")]
640                pub value_specifier: ::core::option::Option<value::ValueSpecifier>,
641            }
642            /// Nested message and enum types in `Value`.
643            pub mod value {
644                #[derive(Clone, PartialEq, Eq, Hash, ::prost::Oneof)]
645                pub enum ValueSpecifier {
646                    #[prost(string, tag = "1")]
647                    StringValue(::prost::alloc::string::String),
648                    #[prost(int64, tag = "2")]
649                    IntValue(i64),
650                }
651            }
652        }
653    }
654    #[derive(Clone, PartialEq, ::prost::Oneof)]
655    pub enum TargetSpecifier {
656        #[prost(message, tag = "1")]
657        EnvoyGrpc(EnvoyGrpc),
658        #[prost(message, tag = "2")]
659        GoogleGrpc(GoogleGrpc),
660    }
661}
662#[derive(Clone, PartialEq, ::prost::Message)]
663pub struct ApiConfigSource {
664    #[prost(enumeration = "api_config_source::ApiType", tag = "1")]
665    pub api_type: i32,
666    #[prost(enumeration = "ApiVersion", tag = "8")]
667    pub transport_api_version: i32,
668    #[prost(string, repeated, tag = "2")]
669    pub cluster_names: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
670    #[prost(message, repeated, tag = "4")]
671    pub grpc_services: ::prost::alloc::vec::Vec<GrpcService>,
672    #[prost(message, optional, tag = "3")]
673    pub refresh_delay: ::core::option::Option<::prost_types::Duration>,
674    #[prost(message, optional, tag = "5")]
675    pub request_timeout: ::core::option::Option<::prost_types::Duration>,
676    #[prost(message, optional, tag = "6")]
677    pub rate_limit_settings: ::core::option::Option<RateLimitSettings>,
678    #[prost(bool, tag = "7")]
679    pub set_node_on_first_message_only: bool,
680    #[prost(message, repeated, tag = "9")]
681    pub config_validators: ::prost::alloc::vec::Vec<TypedExtensionConfig>,
682}
683/// Nested message and enum types in `ApiConfigSource`.
684pub mod api_config_source {
685    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
686    #[repr(i32)]
687    pub enum ApiType {
688        DeprecatedAndUnavailableDoNotUse = 0,
689        Rest = 1,
690        Grpc = 2,
691        DeltaGrpc = 3,
692        AggregatedGrpc = 5,
693        AggregatedDeltaGrpc = 6,
694    }
695    impl ApiType {
696        /// String value of the enum field names used in the ProtoBuf definition.
697        ///
698        /// The values are not transformed in any way and thus are considered stable
699        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
700        pub fn as_str_name(&self) -> &'static str {
701            match self {
702                Self::DeprecatedAndUnavailableDoNotUse => "DEPRECATED_AND_UNAVAILABLE_DO_NOT_USE",
703                Self::Rest => "REST",
704                Self::Grpc => "GRPC",
705                Self::DeltaGrpc => "DELTA_GRPC",
706                Self::AggregatedGrpc => "AGGREGATED_GRPC",
707                Self::AggregatedDeltaGrpc => "AGGREGATED_DELTA_GRPC",
708            }
709        }
710        /// Creates an enum from field names used in the ProtoBuf definition.
711        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
712            match value {
713                "DEPRECATED_AND_UNAVAILABLE_DO_NOT_USE" => {
714                    Some(Self::DeprecatedAndUnavailableDoNotUse)
715                }
716                "REST" => Some(Self::Rest),
717                "GRPC" => Some(Self::Grpc),
718                "DELTA_GRPC" => Some(Self::DeltaGrpc),
719                "AGGREGATED_GRPC" => Some(Self::AggregatedGrpc),
720                "AGGREGATED_DELTA_GRPC" => Some(Self::AggregatedDeltaGrpc),
721                _ => None,
722            }
723        }
724    }
725}
726#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
727pub struct AggregatedConfigSource {}
728#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
729pub struct SelfConfigSource {
730    #[prost(enumeration = "ApiVersion", tag = "1")]
731    pub transport_api_version: i32,
732}
733#[derive(Clone, Copy, PartialEq, ::prost::Message)]
734pub struct RateLimitSettings {
735    #[prost(message, optional, tag = "1")]
736    pub max_tokens: ::core::option::Option<u32>,
737    #[prost(message, optional, tag = "2")]
738    pub fill_rate: ::core::option::Option<f64>,
739}
740#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
741pub struct PathConfigSource {
742    #[prost(string, tag = "1")]
743    pub path: ::prost::alloc::string::String,
744    #[prost(message, optional, tag = "2")]
745    pub watched_directory: ::core::option::Option<WatchedDirectory>,
746}
747#[derive(Clone, PartialEq, ::prost::Message)]
748pub struct ConfigSource {
749    #[prost(message, repeated, tag = "7")]
750    pub authorities: ::prost::alloc::vec::Vec<super::super::super::super::xds::core::v3::Authority>,
751    #[prost(message, optional, tag = "4")]
752    pub initial_fetch_timeout: ::core::option::Option<::prost_types::Duration>,
753    #[prost(enumeration = "ApiVersion", tag = "6")]
754    pub resource_api_version: i32,
755    #[prost(oneof = "config_source::ConfigSourceSpecifier", tags = "1, 8, 2, 3, 5")]
756    pub config_source_specifier: ::core::option::Option<config_source::ConfigSourceSpecifier>,
757}
758/// Nested message and enum types in `ConfigSource`.
759pub mod config_source {
760    #[derive(Clone, PartialEq, ::prost::Oneof)]
761    pub enum ConfigSourceSpecifier {
762        #[prost(string, tag = "1")]
763        Path(::prost::alloc::string::String),
764        #[prost(message, tag = "8")]
765        PathConfigSource(super::PathConfigSource),
766        #[prost(message, tag = "2")]
767        ApiConfigSource(super::ApiConfigSource),
768        #[prost(message, tag = "3")]
769        Ads(super::AggregatedConfigSource),
770        #[prost(message, tag = "5")]
771        Self_(super::SelfConfigSource),
772    }
773}
774#[derive(Clone, PartialEq, ::prost::Message)]
775pub struct ExtensionConfigSource {
776    #[prost(message, optional, tag = "1")]
777    pub config_source: ::core::option::Option<ConfigSource>,
778    #[prost(message, optional, tag = "2")]
779    pub default_config: ::core::option::Option<::prost_types::Any>,
780    #[prost(bool, tag = "3")]
781    pub apply_default_config_without_warming: bool,
782    #[prost(string, repeated, tag = "4")]
783    pub type_urls: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
784}
785#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
786#[repr(i32)]
787pub enum ApiVersion {
788    Auto = 0,
789    V2 = 1,
790    V3 = 2,
791}
792impl ApiVersion {
793    /// String value of the enum field names used in the ProtoBuf definition.
794    ///
795    /// The values are not transformed in any way and thus are considered stable
796    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
797    pub fn as_str_name(&self) -> &'static str {
798        match self {
799            Self::Auto => "AUTO",
800            Self::V2 => "V2",
801            Self::V3 => "V3",
802        }
803    }
804    /// Creates an enum from field names used in the ProtoBuf definition.
805    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
806        match value {
807            "AUTO" => Some(Self::Auto),
808            "V2" => Some(Self::V2),
809            "V3" => Some(Self::V3),
810            _ => None,
811        }
812    }
813}
814#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
815pub struct UdpSocketConfig {
816    #[prost(message, optional, tag = "1")]
817    pub max_rx_datagram_size: ::core::option::Option<u64>,
818    #[prost(message, optional, tag = "2")]
819    pub prefer_gro: ::core::option::Option<bool>,
820}
821#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
822pub struct TcpProtocolOptions {}
823#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
824pub struct QuicKeepAliveSettings {
825    #[prost(message, optional, tag = "1")]
826    pub max_interval: ::core::option::Option<::prost_types::Duration>,
827    #[prost(message, optional, tag = "2")]
828    pub initial_interval: ::core::option::Option<::prost_types::Duration>,
829}
830#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
831pub struct QuicProtocolOptions {
832    #[prost(message, optional, tag = "1")]
833    pub max_concurrent_streams: ::core::option::Option<u32>,
834    #[prost(message, optional, tag = "2")]
835    pub initial_stream_window_size: ::core::option::Option<u32>,
836    #[prost(message, optional, tag = "3")]
837    pub initial_connection_window_size: ::core::option::Option<u32>,
838    #[prost(message, optional, tag = "4")]
839    pub num_timeouts_to_trigger_port_migration: ::core::option::Option<u32>,
840    #[prost(message, optional, tag = "5")]
841    pub connection_keepalive: ::core::option::Option<QuicKeepAliveSettings>,
842}
843#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
844pub struct UpstreamHttpProtocolOptions {
845    #[prost(bool, tag = "1")]
846    pub auto_sni: bool,
847    #[prost(bool, tag = "2")]
848    pub auto_san_validation: bool,
849    #[prost(string, tag = "3")]
850    pub override_auto_sni_header: ::prost::alloc::string::String,
851}
852#[derive(Clone, PartialEq, ::prost::Message)]
853pub struct AlternateProtocolsCacheOptions {
854    #[prost(string, tag = "1")]
855    pub name: ::prost::alloc::string::String,
856    #[prost(message, optional, tag = "2")]
857    pub max_entries: ::core::option::Option<u32>,
858    #[prost(message, optional, tag = "3")]
859    pub key_value_store_config: ::core::option::Option<TypedExtensionConfig>,
860    #[prost(message, repeated, tag = "4")]
861    pub prepopulated_entries:
862        ::prost::alloc::vec::Vec<alternate_protocols_cache_options::AlternateProtocolsCacheEntry>,
863}
864/// Nested message and enum types in `AlternateProtocolsCacheOptions`.
865pub mod alternate_protocols_cache_options {
866    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
867    pub struct AlternateProtocolsCacheEntry {
868        #[prost(string, tag = "1")]
869        pub hostname: ::prost::alloc::string::String,
870        #[prost(uint32, tag = "2")]
871        pub port: u32,
872    }
873}
874#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
875pub struct HttpProtocolOptions {
876    #[prost(message, optional, tag = "1")]
877    pub idle_timeout: ::core::option::Option<::prost_types::Duration>,
878    #[prost(message, optional, tag = "3")]
879    pub max_connection_duration: ::core::option::Option<::prost_types::Duration>,
880    #[prost(message, optional, tag = "2")]
881    pub max_headers_count: ::core::option::Option<u32>,
882    #[prost(message, optional, tag = "4")]
883    pub max_stream_duration: ::core::option::Option<::prost_types::Duration>,
884    #[prost(
885        enumeration = "http_protocol_options::HeadersWithUnderscoresAction",
886        tag = "5"
887    )]
888    pub headers_with_underscores_action: i32,
889    #[prost(message, optional, tag = "6")]
890    pub max_requests_per_connection: ::core::option::Option<u32>,
891}
892/// Nested message and enum types in `HttpProtocolOptions`.
893pub mod http_protocol_options {
894    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
895    #[repr(i32)]
896    pub enum HeadersWithUnderscoresAction {
897        Allow = 0,
898        RejectRequest = 1,
899        DropHeader = 2,
900    }
901    impl HeadersWithUnderscoresAction {
902        /// String value of the enum field names used in the ProtoBuf definition.
903        ///
904        /// The values are not transformed in any way and thus are considered stable
905        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
906        pub fn as_str_name(&self) -> &'static str {
907            match self {
908                Self::Allow => "ALLOW",
909                Self::RejectRequest => "REJECT_REQUEST",
910                Self::DropHeader => "DROP_HEADER",
911            }
912        }
913        /// Creates an enum from field names used in the ProtoBuf definition.
914        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
915            match value {
916                "ALLOW" => Some(Self::Allow),
917                "REJECT_REQUEST" => Some(Self::RejectRequest),
918                "DROP_HEADER" => Some(Self::DropHeader),
919                _ => None,
920            }
921        }
922    }
923}
924#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
925pub struct Http1ProtocolOptions {
926    #[prost(message, optional, tag = "1")]
927    pub allow_absolute_url: ::core::option::Option<bool>,
928    #[prost(bool, tag = "2")]
929    pub accept_http_10: bool,
930    #[prost(string, tag = "3")]
931    pub default_host_for_http_10: ::prost::alloc::string::String,
932    #[prost(message, optional, tag = "4")]
933    pub header_key_format: ::core::option::Option<http1_protocol_options::HeaderKeyFormat>,
934    #[prost(bool, tag = "5")]
935    pub enable_trailers: bool,
936    #[prost(bool, tag = "6")]
937    pub allow_chunked_length: bool,
938    #[prost(message, optional, tag = "7")]
939    pub override_stream_error_on_invalid_http_message: ::core::option::Option<bool>,
940}
941/// Nested message and enum types in `Http1ProtocolOptions`.
942pub mod http1_protocol_options {
943    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
944    pub struct HeaderKeyFormat {
945        #[prost(oneof = "header_key_format::HeaderFormat", tags = "1, 8")]
946        pub header_format: ::core::option::Option<header_key_format::HeaderFormat>,
947    }
948    /// Nested message and enum types in `HeaderKeyFormat`.
949    pub mod header_key_format {
950        #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
951        pub struct ProperCaseWords {}
952        #[derive(Clone, PartialEq, Eq, Hash, ::prost::Oneof)]
953        pub enum HeaderFormat {
954            #[prost(message, tag = "1")]
955            ProperCaseWords(ProperCaseWords),
956            #[prost(message, tag = "8")]
957            StatefulFormatter(super::super::TypedExtensionConfig),
958        }
959    }
960}
961#[derive(Clone, Copy, PartialEq, ::prost::Message)]
962pub struct KeepaliveSettings {
963    #[prost(message, optional, tag = "1")]
964    pub interval: ::core::option::Option<::prost_types::Duration>,
965    #[prost(message, optional, tag = "2")]
966    pub timeout: ::core::option::Option<::prost_types::Duration>,
967    #[prost(message, optional, tag = "3")]
968    pub interval_jitter: ::core::option::Option<super::super::super::kind::v3::Percent>,
969    #[prost(message, optional, tag = "4")]
970    pub connection_idle_interval: ::core::option::Option<::prost_types::Duration>,
971}
972#[derive(Clone, PartialEq, ::prost::Message)]
973pub struct Http2ProtocolOptions {
974    #[prost(message, optional, tag = "1")]
975    pub hpack_table_size: ::core::option::Option<u32>,
976    #[prost(message, optional, tag = "2")]
977    pub max_concurrent_streams: ::core::option::Option<u32>,
978    #[prost(message, optional, tag = "3")]
979    pub initial_stream_window_size: ::core::option::Option<u32>,
980    #[prost(message, optional, tag = "4")]
981    pub initial_connection_window_size: ::core::option::Option<u32>,
982    #[prost(bool, tag = "5")]
983    pub allow_connect: bool,
984    #[prost(bool, tag = "6")]
985    pub allow_metadata: bool,
986    #[prost(message, optional, tag = "7")]
987    pub max_outbound_frames: ::core::option::Option<u32>,
988    #[prost(message, optional, tag = "8")]
989    pub max_outbound_control_frames: ::core::option::Option<u32>,
990    #[prost(message, optional, tag = "9")]
991    pub max_consecutive_inbound_frames_with_empty_payload: ::core::option::Option<u32>,
992    #[prost(message, optional, tag = "10")]
993    pub max_inbound_priority_frames_per_stream: ::core::option::Option<u32>,
994    #[prost(message, optional, tag = "11")]
995    pub max_inbound_window_update_frames_per_data_frame_sent: ::core::option::Option<u32>,
996    #[deprecated]
997    #[prost(bool, tag = "12")]
998    pub stream_error_on_invalid_http_messaging: bool,
999    #[prost(message, optional, tag = "14")]
1000    pub override_stream_error_on_invalid_http_message: ::core::option::Option<bool>,
1001    #[prost(message, repeated, tag = "13")]
1002    pub custom_settings_parameters:
1003        ::prost::alloc::vec::Vec<http2_protocol_options::SettingsParameter>,
1004    #[prost(message, optional, tag = "15")]
1005    pub connection_keepalive: ::core::option::Option<KeepaliveSettings>,
1006}
1007/// Nested message and enum types in `Http2ProtocolOptions`.
1008pub mod http2_protocol_options {
1009    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
1010    pub struct SettingsParameter {
1011        #[prost(message, optional, tag = "1")]
1012        pub identifier: ::core::option::Option<u32>,
1013        #[prost(message, optional, tag = "2")]
1014        pub value: ::core::option::Option<u32>,
1015    }
1016}
1017#[derive(Clone, PartialEq, ::prost::Message)]
1018pub struct GrpcProtocolOptions {
1019    #[prost(message, optional, tag = "1")]
1020    pub http2_protocol_options: ::core::option::Option<Http2ProtocolOptions>,
1021}
1022#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
1023pub struct Http3ProtocolOptions {
1024    #[prost(message, optional, tag = "1")]
1025    pub quic_protocol_options: ::core::option::Option<QuicProtocolOptions>,
1026    #[prost(message, optional, tag = "2")]
1027    pub override_stream_error_on_invalid_http_message: ::core::option::Option<bool>,
1028    #[prost(bool, tag = "5")]
1029    pub allow_extended_connect: bool,
1030}
1031#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1032pub struct SchemeHeaderTransformation {
1033    #[prost(oneof = "scheme_header_transformation::Transformation", tags = "1")]
1034    pub transformation: ::core::option::Option<scheme_header_transformation::Transformation>,
1035}
1036/// Nested message and enum types in `SchemeHeaderTransformation`.
1037pub mod scheme_header_transformation {
1038    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Oneof)]
1039    pub enum Transformation {
1040        #[prost(string, tag = "1")]
1041        SchemeToOverwrite(::prost::alloc::string::String),
1042    }
1043}
1044#[derive(Clone, PartialEq, ::prost::Message)]
1045pub struct EventServiceConfig {
1046    #[prost(oneof = "event_service_config::ConfigSourceSpecifier", tags = "1")]
1047    pub config_source_specifier:
1048        ::core::option::Option<event_service_config::ConfigSourceSpecifier>,
1049}
1050/// Nested message and enum types in `EventServiceConfig`.
1051pub mod event_service_config {
1052    #[derive(Clone, PartialEq, ::prost::Oneof)]
1053    pub enum ConfigSourceSpecifier {
1054        #[prost(message, tag = "1")]
1055        GrpcService(super::GrpcService),
1056    }
1057}
1058#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1059pub struct HealthStatusSet {
1060    #[prost(enumeration = "HealthStatus", repeated, packed = "false", tag = "1")]
1061    pub statuses: ::prost::alloc::vec::Vec<i32>,
1062}
1063#[derive(Clone, PartialEq, ::prost::Message)]
1064pub struct HealthCheck {
1065    #[prost(message, optional, tag = "1")]
1066    pub timeout: ::core::option::Option<::prost_types::Duration>,
1067    #[prost(message, optional, tag = "2")]
1068    pub interval: ::core::option::Option<::prost_types::Duration>,
1069    #[prost(message, optional, tag = "20")]
1070    pub initial_jitter: ::core::option::Option<::prost_types::Duration>,
1071    #[prost(message, optional, tag = "3")]
1072    pub interval_jitter: ::core::option::Option<::prost_types::Duration>,
1073    #[prost(uint32, tag = "18")]
1074    pub interval_jitter_percent: u32,
1075    #[prost(message, optional, tag = "4")]
1076    pub unhealthy_threshold: ::core::option::Option<u32>,
1077    #[prost(message, optional, tag = "5")]
1078    pub healthy_threshold: ::core::option::Option<u32>,
1079    #[prost(message, optional, tag = "6")]
1080    pub alt_port: ::core::option::Option<u32>,
1081    #[prost(message, optional, tag = "7")]
1082    pub reuse_connection: ::core::option::Option<bool>,
1083    #[prost(message, optional, tag = "12")]
1084    pub no_traffic_interval: ::core::option::Option<::prost_types::Duration>,
1085    #[prost(message, optional, tag = "24")]
1086    pub no_traffic_healthy_interval: ::core::option::Option<::prost_types::Duration>,
1087    #[prost(message, optional, tag = "14")]
1088    pub unhealthy_interval: ::core::option::Option<::prost_types::Duration>,
1089    #[prost(message, optional, tag = "15")]
1090    pub unhealthy_edge_interval: ::core::option::Option<::prost_types::Duration>,
1091    #[prost(message, optional, tag = "16")]
1092    pub healthy_edge_interval: ::core::option::Option<::prost_types::Duration>,
1093    #[prost(string, tag = "17")]
1094    pub event_log_path: ::prost::alloc::string::String,
1095    #[prost(message, optional, tag = "22")]
1096    pub event_service: ::core::option::Option<EventServiceConfig>,
1097    #[prost(bool, tag = "19")]
1098    pub always_log_health_check_failures: bool,
1099    #[prost(message, optional, tag = "21")]
1100    pub tls_options: ::core::option::Option<health_check::TlsOptions>,
1101    #[prost(message, optional, tag = "23")]
1102    pub transport_socket_match_criteria: ::core::option::Option<::prost_types::Struct>,
1103    #[prost(oneof = "health_check::HealthChecker", tags = "8, 9, 11, 13")]
1104    pub health_checker: ::core::option::Option<health_check::HealthChecker>,
1105}
1106/// Nested message and enum types in `HealthCheck`.
1107pub mod health_check {
1108    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1109    pub struct Payload {
1110        #[prost(oneof = "payload::Payload", tags = "1, 2")]
1111        pub payload: ::core::option::Option<payload::Payload>,
1112    }
1113    /// Nested message and enum types in `Payload`.
1114    pub mod payload {
1115        #[derive(Clone, PartialEq, Eq, Hash, ::prost::Oneof)]
1116        pub enum Payload {
1117            #[prost(string, tag = "1")]
1118            Text(::prost::alloc::string::String),
1119            #[prost(bytes, tag = "2")]
1120            Binary(::prost::alloc::vec::Vec<u8>),
1121        }
1122    }
1123    #[derive(Clone, PartialEq, ::prost::Message)]
1124    pub struct HttpHealthCheck {
1125        #[prost(string, tag = "1")]
1126        pub host: ::prost::alloc::string::String,
1127        #[prost(string, tag = "2")]
1128        pub path: ::prost::alloc::string::String,
1129        #[prost(message, optional, tag = "3")]
1130        pub send: ::core::option::Option<Payload>,
1131        #[prost(message, optional, tag = "4")]
1132        pub receive: ::core::option::Option<Payload>,
1133        #[prost(message, repeated, tag = "6")]
1134        pub request_headers_to_add: ::prost::alloc::vec::Vec<super::HeaderValueOption>,
1135        #[prost(string, repeated, tag = "8")]
1136        pub request_headers_to_remove: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1137        #[prost(message, repeated, tag = "9")]
1138        pub expected_statuses:
1139            ::prost::alloc::vec::Vec<super::super::super::super::kind::v3::Int64Range>,
1140        #[prost(message, repeated, tag = "12")]
1141        pub retriable_statuses:
1142            ::prost::alloc::vec::Vec<super::super::super::super::kind::v3::Int64Range>,
1143        #[prost(
1144            enumeration = "super::super::super::super::kind::v3::CodecClientType",
1145            tag = "10"
1146        )]
1147        pub codec_client_type: i32,
1148        #[prost(message, optional, tag = "11")]
1149        pub service_name_matcher:
1150            ::core::option::Option<super::super::super::super::kind::matcher::v3::StringMatcher>,
1151    }
1152    #[derive(Clone, PartialEq, ::prost::Message)]
1153    pub struct TcpHealthCheck {
1154        #[prost(message, optional, tag = "1")]
1155        pub send: ::core::option::Option<Payload>,
1156        #[prost(message, repeated, tag = "2")]
1157        pub receive: ::prost::alloc::vec::Vec<Payload>,
1158    }
1159    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1160    pub struct RedisHealthCheck {
1161        #[prost(string, tag = "1")]
1162        pub key: ::prost::alloc::string::String,
1163    }
1164    #[derive(Clone, PartialEq, ::prost::Message)]
1165    pub struct GrpcHealthCheck {
1166        #[prost(string, tag = "1")]
1167        pub service_name: ::prost::alloc::string::String,
1168        #[prost(string, tag = "2")]
1169        pub authority: ::prost::alloc::string::String,
1170        #[prost(message, repeated, tag = "3")]
1171        pub initial_metadata: ::prost::alloc::vec::Vec<super::HeaderValueOption>,
1172    }
1173    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1174    pub struct CustomHealthCheck {
1175        #[prost(string, tag = "1")]
1176        pub name: ::prost::alloc::string::String,
1177        #[prost(oneof = "custom_health_check::ConfigType", tags = "3")]
1178        pub config_type: ::core::option::Option<custom_health_check::ConfigType>,
1179    }
1180    /// Nested message and enum types in `CustomHealthCheck`.
1181    pub mod custom_health_check {
1182        #[derive(Clone, PartialEq, Eq, Hash, ::prost::Oneof)]
1183        pub enum ConfigType {
1184            #[prost(message, tag = "3")]
1185            TypedConfig(::prost_types::Any),
1186        }
1187    }
1188    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1189    pub struct TlsOptions {
1190        #[prost(string, repeated, tag = "1")]
1191        pub alpn_protocols: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1192    }
1193    #[derive(Clone, PartialEq, ::prost::Oneof)]
1194    pub enum HealthChecker {
1195        #[prost(message, tag = "8")]
1196        HttpHealthCheck(HttpHealthCheck),
1197        #[prost(message, tag = "9")]
1198        TcpHealthCheck(TcpHealthCheck),
1199        #[prost(message, tag = "11")]
1200        GrpcHealthCheck(GrpcHealthCheck),
1201        #[prost(message, tag = "13")]
1202        CustomHealthCheck(CustomHealthCheck),
1203    }
1204}
1205#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1206#[repr(i32)]
1207pub enum HealthStatus {
1208    Unknown = 0,
1209    Healthy = 1,
1210    Unhealthy = 2,
1211    Draining = 3,
1212    Timeout = 4,
1213    Degraded = 5,
1214}
1215impl HealthStatus {
1216    /// String value of the enum field names used in the ProtoBuf definition.
1217    ///
1218    /// The values are not transformed in any way and thus are considered stable
1219    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1220    pub fn as_str_name(&self) -> &'static str {
1221        match self {
1222            Self::Unknown => "UNKNOWN",
1223            Self::Healthy => "HEALTHY",
1224            Self::Unhealthy => "UNHEALTHY",
1225            Self::Draining => "DRAINING",
1226            Self::Timeout => "TIMEOUT",
1227            Self::Degraded => "DEGRADED",
1228        }
1229    }
1230    /// Creates an enum from field names used in the ProtoBuf definition.
1231    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1232        match value {
1233            "UNKNOWN" => Some(Self::Unknown),
1234            "HEALTHY" => Some(Self::Healthy),
1235            "UNHEALTHY" => Some(Self::Unhealthy),
1236            "DRAINING" => Some(Self::Draining),
1237            "TIMEOUT" => Some(Self::Timeout),
1238            "DEGRADED" => Some(Self::Degraded),
1239            _ => None,
1240        }
1241    }
1242}