xds_api/generated/
envoy.data.accesslog.v3.rs

1// This file is @generated by prost-build.
2#[derive(Clone, PartialEq, ::prost::Message)]
3pub struct TcpAccessLogEntry {
4    /// Common properties shared by all Envoy access logs.
5    #[prost(message, optional, tag = "1")]
6    pub common_properties: ::core::option::Option<AccessLogCommon>,
7    /// Properties of the TCP connection.
8    #[prost(message, optional, tag = "2")]
9    pub connection_properties: ::core::option::Option<ConnectionProperties>,
10}
11impl ::prost::Name for TcpAccessLogEntry {
12    const NAME: &'static str = "TCPAccessLogEntry";
13    const PACKAGE: &'static str = "envoy.data.accesslog.v3";
14    fn full_name() -> ::prost::alloc::string::String {
15        "envoy.data.accesslog.v3.TCPAccessLogEntry".into()
16    }
17    fn type_url() -> ::prost::alloc::string::String {
18        "type.googleapis.com/envoy.data.accesslog.v3.TCPAccessLogEntry".into()
19    }
20}
21#[derive(Clone, PartialEq, ::prost::Message)]
22pub struct HttpAccessLogEntry {
23    /// Common properties shared by all Envoy access logs.
24    #[prost(message, optional, tag = "1")]
25    pub common_properties: ::core::option::Option<AccessLogCommon>,
26    #[prost(enumeration = "http_access_log_entry::HttpVersion", tag = "2")]
27    pub protocol_version: i32,
28    /// Description of the incoming HTTP request.
29    #[prost(message, optional, tag = "3")]
30    pub request: ::core::option::Option<HttpRequestProperties>,
31    /// Description of the outgoing HTTP response.
32    #[prost(message, optional, tag = "4")]
33    pub response: ::core::option::Option<HttpResponseProperties>,
34}
35/// Nested message and enum types in `HTTPAccessLogEntry`.
36pub mod http_access_log_entry {
37    /// HTTP version
38    #[derive(
39        Clone,
40        Copy,
41        Debug,
42        PartialEq,
43        Eq,
44        Hash,
45        PartialOrd,
46        Ord,
47        ::prost::Enumeration
48    )]
49    #[repr(i32)]
50    pub enum HttpVersion {
51        ProtocolUnspecified = 0,
52        Http10 = 1,
53        Http11 = 2,
54        Http2 = 3,
55        Http3 = 4,
56    }
57    impl HttpVersion {
58        /// String value of the enum field names used in the ProtoBuf definition.
59        ///
60        /// The values are not transformed in any way and thus are considered stable
61        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
62        pub fn as_str_name(&self) -> &'static str {
63            match self {
64                Self::ProtocolUnspecified => "PROTOCOL_UNSPECIFIED",
65                Self::Http10 => "HTTP10",
66                Self::Http11 => "HTTP11",
67                Self::Http2 => "HTTP2",
68                Self::Http3 => "HTTP3",
69            }
70        }
71        /// Creates an enum from field names used in the ProtoBuf definition.
72        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
73            match value {
74                "PROTOCOL_UNSPECIFIED" => Some(Self::ProtocolUnspecified),
75                "HTTP10" => Some(Self::Http10),
76                "HTTP11" => Some(Self::Http11),
77                "HTTP2" => Some(Self::Http2),
78                "HTTP3" => Some(Self::Http3),
79                _ => None,
80            }
81        }
82    }
83}
84impl ::prost::Name for HttpAccessLogEntry {
85    const NAME: &'static str = "HTTPAccessLogEntry";
86    const PACKAGE: &'static str = "envoy.data.accesslog.v3";
87    fn full_name() -> ::prost::alloc::string::String {
88        "envoy.data.accesslog.v3.HTTPAccessLogEntry".into()
89    }
90    fn type_url() -> ::prost::alloc::string::String {
91        "type.googleapis.com/envoy.data.accesslog.v3.HTTPAccessLogEntry".into()
92    }
93}
94/// Defines fields for a connection
95#[derive(Clone, Copy, PartialEq, ::prost::Message)]
96pub struct ConnectionProperties {
97    /// Number of bytes received from downstream.
98    #[prost(uint64, tag = "1")]
99    pub received_bytes: u64,
100    /// Number of bytes sent to downstream.
101    #[prost(uint64, tag = "2")]
102    pub sent_bytes: u64,
103}
104impl ::prost::Name for ConnectionProperties {
105    const NAME: &'static str = "ConnectionProperties";
106    const PACKAGE: &'static str = "envoy.data.accesslog.v3";
107    fn full_name() -> ::prost::alloc::string::String {
108        "envoy.data.accesslog.v3.ConnectionProperties".into()
109    }
110    fn type_url() -> ::prost::alloc::string::String {
111        "type.googleapis.com/envoy.data.accesslog.v3.ConnectionProperties".into()
112    }
113}
114/// Defines fields that are shared by all Envoy access logs.
115/// \[#next-free-field: 34\]
116#[derive(Clone, PartialEq, ::prost::Message)]
117pub struct AccessLogCommon {
118    /// \[#not-implemented-hide:\]
119    /// This field indicates the rate at which this log entry was sampled.
120    /// Valid range is (0.0, 1.0].
121    #[prost(double, tag = "1")]
122    pub sample_rate: f64,
123    /// This field is the remote/origin address on which the request from the user was received.
124    /// Note: This may not be the physical peer. E.g, if the remote address is inferred from for
125    /// example the x-forwarder-for header, proxy protocol, etc.
126    #[prost(message, optional, tag = "2")]
127    pub downstream_remote_address: ::core::option::Option<
128        super::super::super::config::core::v3::Address,
129    >,
130    /// This field is the local/destination address on which the request from the user was received.
131    #[prost(message, optional, tag = "3")]
132    pub downstream_local_address: ::core::option::Option<
133        super::super::super::config::core::v3::Address,
134    >,
135    /// If the connection is secure,S this field will contain TLS properties.
136    #[prost(message, optional, tag = "4")]
137    pub tls_properties: ::core::option::Option<TlsProperties>,
138    /// The time that Envoy started servicing this request. This is effectively the time that the first
139    /// downstream byte is received.
140    #[prost(message, optional, tag = "5")]
141    pub start_time: ::core::option::Option<
142        super::super::super::super::google::protobuf::Timestamp,
143    >,
144    /// Interval between the first downstream byte received and the last
145    /// downstream byte received (i.e. time it takes to receive a request).
146    #[prost(message, optional, tag = "6")]
147    pub time_to_last_rx_byte: ::core::option::Option<
148        super::super::super::super::google::protobuf::Duration,
149    >,
150    /// Interval between the first downstream byte received and the first upstream byte sent. There may
151    /// by considerable delta between ``time_to_last_rx_byte`` and this value due to filters.
152    /// Additionally, the same caveats apply as documented in ``time_to_last_downstream_tx_byte`` about
153    /// not accounting for kernel socket buffer time, etc.
154    #[prost(message, optional, tag = "7")]
155    pub time_to_first_upstream_tx_byte: ::core::option::Option<
156        super::super::super::super::google::protobuf::Duration,
157    >,
158    /// Interval between the first downstream byte received and the last upstream byte sent. There may
159    /// by considerable delta between ``time_to_last_rx_byte`` and this value due to filters.
160    /// Additionally, the same caveats apply as documented in ``time_to_last_downstream_tx_byte`` about
161    /// not accounting for kernel socket buffer time, etc.
162    #[prost(message, optional, tag = "8")]
163    pub time_to_last_upstream_tx_byte: ::core::option::Option<
164        super::super::super::super::google::protobuf::Duration,
165    >,
166    /// Interval between the first downstream byte received and the first upstream
167    /// byte received (i.e. time it takes to start receiving a response).
168    #[prost(message, optional, tag = "9")]
169    pub time_to_first_upstream_rx_byte: ::core::option::Option<
170        super::super::super::super::google::protobuf::Duration,
171    >,
172    /// Interval between the first downstream byte received and the last upstream
173    /// byte received (i.e. time it takes to receive a complete response).
174    #[prost(message, optional, tag = "10")]
175    pub time_to_last_upstream_rx_byte: ::core::option::Option<
176        super::super::super::super::google::protobuf::Duration,
177    >,
178    /// Interval between the first downstream byte received and the first downstream byte sent.
179    /// There may be a considerable delta between the ``time_to_first_upstream_rx_byte`` and this field
180    /// due to filters. Additionally, the same caveats apply as documented in
181    /// ``time_to_last_downstream_tx_byte`` about not accounting for kernel socket buffer time, etc.
182    #[prost(message, optional, tag = "11")]
183    pub time_to_first_downstream_tx_byte: ::core::option::Option<
184        super::super::super::super::google::protobuf::Duration,
185    >,
186    /// Interval between the first downstream byte received and the last downstream byte sent.
187    /// Depending on protocol, buffering, windowing, filters, etc. there may be a considerable delta
188    /// between ``time_to_last_upstream_rx_byte`` and this field. Note also that this is an approximate
189    /// time. In the current implementation it does not include kernel socket buffer time. In the
190    /// current implementation it also does not include send window buffering inside the HTTP/2 codec.
191    /// In the future it is likely that work will be done to make this duration more accurate.
192    #[prost(message, optional, tag = "12")]
193    pub time_to_last_downstream_tx_byte: ::core::option::Option<
194        super::super::super::super::google::protobuf::Duration,
195    >,
196    /// The upstream remote/destination address that handles this exchange. This does not include
197    /// retries.
198    #[prost(message, optional, tag = "13")]
199    pub upstream_remote_address: ::core::option::Option<
200        super::super::super::config::core::v3::Address,
201    >,
202    /// The upstream local/origin address that handles this exchange. This does not include retries.
203    #[prost(message, optional, tag = "14")]
204    pub upstream_local_address: ::core::option::Option<
205        super::super::super::config::core::v3::Address,
206    >,
207    /// The upstream cluster that ``upstream_remote_address`` belongs to.
208    #[prost(string, tag = "15")]
209    pub upstream_cluster: ::prost::alloc::string::String,
210    /// Flags indicating occurrences during request/response processing.
211    #[prost(message, optional, tag = "16")]
212    pub response_flags: ::core::option::Option<ResponseFlags>,
213    /// All metadata encountered during request processing, including endpoint
214    /// selection.
215    ///
216    /// This can be used to associate IDs attached to the various configurations
217    /// used to process this request with the access log entry. For example, a
218    /// route created from a higher level forwarding rule with some ID can place
219    /// that ID in this field and cross reference later. It can also be used to
220    /// determine if a canary endpoint was used or not.
221    #[prost(message, optional, tag = "17")]
222    pub metadata: ::core::option::Option<
223        super::super::super::config::core::v3::Metadata,
224    >,
225    /// If upstream connection failed due to transport socket (e.g. TLS handshake), provides the
226    /// failure reason from the transport socket. The format of this field depends on the configured
227    /// upstream transport socket. Common TLS failures are in
228    /// :ref:`TLS trouble shooting <arch_overview_ssl_trouble_shooting>`.
229    #[prost(string, tag = "18")]
230    pub upstream_transport_failure_reason: ::prost::alloc::string::String,
231    /// The name of the route
232    #[prost(string, tag = "19")]
233    pub route_name: ::prost::alloc::string::String,
234    /// This field is the downstream direct remote address on which the request from the user was
235    /// received. Note: This is always the physical peer, even if the remote address is inferred from
236    /// for example the x-forwarder-for header, proxy protocol, etc.
237    #[prost(message, optional, tag = "20")]
238    pub downstream_direct_remote_address: ::core::option::Option<
239        super::super::super::config::core::v3::Address,
240    >,
241    /// Map of filter state in stream info that have been configured to be logged. If the filter
242    /// state serialized to any message other than ``google.protobuf.Any`` it will be packed into
243    /// ``google.protobuf.Any``.
244    #[prost(map = "string, message", tag = "21")]
245    pub filter_state_objects: ::std::collections::HashMap<
246        ::prost::alloc::string::String,
247        super::super::super::super::google::protobuf::Any,
248    >,
249    /// A list of custom tags, which annotate logs with additional information.
250    /// To configure this value, users should configure
251    /// :ref:`custom_tags <envoy_v3_api_field_extensions.access_loggers.grpc.v3.CommonGrpcAccessLogConfig.custom_tags>`.
252    #[prost(map = "string, string", tag = "22")]
253    pub custom_tags: ::std::collections::HashMap<
254        ::prost::alloc::string::String,
255        ::prost::alloc::string::String,
256    >,
257    /// For HTTP: Total duration in milliseconds of the request from the start time to the last byte out.
258    /// For TCP: Total duration in milliseconds of the downstream connection.
259    /// This is the total duration of the request (i.e., when the request's ActiveStream is destroyed)
260    /// and may be longer than ``time_to_last_downstream_tx_byte``.
261    #[prost(message, optional, tag = "23")]
262    pub duration: ::core::option::Option<
263        super::super::super::super::google::protobuf::Duration,
264    >,
265    /// For HTTP: Number of times the request is attempted upstream. Note that the field is omitted when the request was never attempted upstream.
266    /// For TCP: Number of times the connection request is attempted upstream. Note that the field is omitted when the connect request was never attempted upstream.
267    #[prost(uint32, tag = "24")]
268    pub upstream_request_attempt_count: u32,
269    /// Connection termination details may provide additional information about why the connection was terminated by Envoy for L4 reasons.
270    #[prost(string, tag = "25")]
271    pub connection_termination_details: ::prost::alloc::string::String,
272    /// Optional unique id of stream (TCP connection, long-live HTTP2 stream, HTTP request) for logging and tracing.
273    /// This could be any format string that could be used to identify one stream.
274    #[prost(string, tag = "26")]
275    pub stream_id: ::prost::alloc::string::String,
276    /// If this log entry is final log entry that flushed after the stream completed or
277    /// intermediate log entry that flushed periodically during the stream.
278    /// There may be multiple intermediate log entries and only one final log entry for each
279    /// long-live stream (TCP connection, long-live HTTP2 stream).
280    /// And if it is necessary, unique ID or identifier can be added to the log entry
281    /// :ref:`stream_id <envoy_v3_api_field_data.accesslog.v3.AccessLogCommon.stream_id>` to
282    /// correlate all these intermediate log entries and final log entry.
283    ///
284    /// .. attention::
285    ///
286    ///    This field is deprecated in favor of ``access_log_type`` for better indication of the
287    ///    type of the access log record.
288    #[deprecated]
289    #[prost(bool, tag = "27")]
290    pub intermediate_log_entry: bool,
291    /// If downstream connection in listener failed due to transport socket (e.g. TLS handshake), provides the
292    /// failure reason from the transport socket. The format of this field depends on the configured downstream
293    /// transport socket. Common TLS failures are in :ref:`TLS trouble shooting <arch_overview_ssl_trouble_shooting>`.
294    #[prost(string, tag = "28")]
295    pub downstream_transport_failure_reason: ::prost::alloc::string::String,
296    /// For HTTP: Total number of bytes sent to the downstream by the http stream.
297    /// For TCP: Total number of bytes sent to the downstream by the tcp proxy.
298    #[prost(uint64, tag = "29")]
299    pub downstream_wire_bytes_sent: u64,
300    /// For HTTP: Total number of bytes received from the downstream by the http stream. Envoy over counts sizes of received HTTP/1.1 pipelined requests by adding up bytes of requests in the pipeline to the one currently being processed.
301    /// For TCP: Total number of bytes received from the downstream by the tcp proxy.
302    #[prost(uint64, tag = "30")]
303    pub downstream_wire_bytes_received: u64,
304    /// For HTTP: Total number of bytes sent to the upstream by the http stream. This value accumulates during upstream retries.
305    /// For TCP: Total number of bytes sent to the upstream by the tcp proxy.
306    #[prost(uint64, tag = "31")]
307    pub upstream_wire_bytes_sent: u64,
308    /// For HTTP: Total number of bytes received from the upstream by the http stream.
309    /// For TCP: Total number of bytes sent to the upstream by the tcp proxy.
310    #[prost(uint64, tag = "32")]
311    pub upstream_wire_bytes_received: u64,
312    /// The type of the access log, which indicates when the log was recorded.
313    /// See :ref:`ACCESS_LOG_TYPE <config_access_log_format_access_log_type>` for the available values.
314    /// In case the access log was recorded by a flow which does not correspond to one of the supported
315    /// values, then the default value will be ``NotSet``.
316    /// For more information about how access log behaves and when it is being recorded,
317    /// please refer to :ref:`access logging <arch_overview_access_logs>`.
318    #[prost(enumeration = "AccessLogType", tag = "33")]
319    pub access_log_type: i32,
320}
321impl ::prost::Name for AccessLogCommon {
322    const NAME: &'static str = "AccessLogCommon";
323    const PACKAGE: &'static str = "envoy.data.accesslog.v3";
324    fn full_name() -> ::prost::alloc::string::String {
325        "envoy.data.accesslog.v3.AccessLogCommon".into()
326    }
327    fn type_url() -> ::prost::alloc::string::String {
328        "type.googleapis.com/envoy.data.accesslog.v3.AccessLogCommon".into()
329    }
330}
331/// Flags indicating occurrences during request/response processing.
332/// \[#next-free-field: 29\]
333#[derive(Clone, Copy, PartialEq, ::prost::Message)]
334pub struct ResponseFlags {
335    /// Indicates local server healthcheck failed.
336    #[prost(bool, tag = "1")]
337    pub failed_local_healthcheck: bool,
338    /// Indicates there was no healthy upstream.
339    #[prost(bool, tag = "2")]
340    pub no_healthy_upstream: bool,
341    /// Indicates an there was an upstream request timeout.
342    #[prost(bool, tag = "3")]
343    pub upstream_request_timeout: bool,
344    /// Indicates local codec level reset was sent on the stream.
345    #[prost(bool, tag = "4")]
346    pub local_reset: bool,
347    /// Indicates remote codec level reset was received on the stream.
348    #[prost(bool, tag = "5")]
349    pub upstream_remote_reset: bool,
350    /// Indicates there was a local reset by a connection pool due to an initial connection failure.
351    #[prost(bool, tag = "6")]
352    pub upstream_connection_failure: bool,
353    /// Indicates the stream was reset due to an upstream connection termination.
354    #[prost(bool, tag = "7")]
355    pub upstream_connection_termination: bool,
356    /// Indicates the stream was reset because of a resource overflow.
357    #[prost(bool, tag = "8")]
358    pub upstream_overflow: bool,
359    /// Indicates no route was found for the request.
360    #[prost(bool, tag = "9")]
361    pub no_route_found: bool,
362    /// Indicates that the request was delayed before proxying.
363    #[prost(bool, tag = "10")]
364    pub delay_injected: bool,
365    /// Indicates that the request was aborted with an injected error code.
366    #[prost(bool, tag = "11")]
367    pub fault_injected: bool,
368    /// Indicates that the request was rate-limited locally.
369    #[prost(bool, tag = "12")]
370    pub rate_limited: bool,
371    /// Indicates if the request was deemed unauthorized and the reason for it.
372    #[prost(message, optional, tag = "13")]
373    pub unauthorized_details: ::core::option::Option<response_flags::Unauthorized>,
374    /// Indicates that the request was rejected because there was an error in rate limit service.
375    #[prost(bool, tag = "14")]
376    pub rate_limit_service_error: bool,
377    /// Indicates the stream was reset due to a downstream connection termination.
378    #[prost(bool, tag = "15")]
379    pub downstream_connection_termination: bool,
380    /// Indicates that the upstream retry limit was exceeded, resulting in a downstream error.
381    #[prost(bool, tag = "16")]
382    pub upstream_retry_limit_exceeded: bool,
383    /// Indicates that the stream idle timeout was hit, resulting in a downstream 408.
384    #[prost(bool, tag = "17")]
385    pub stream_idle_timeout: bool,
386    /// Indicates that the request was rejected because an envoy request header failed strict
387    /// validation.
388    #[prost(bool, tag = "18")]
389    pub invalid_envoy_request_headers: bool,
390    /// Indicates there was an HTTP protocol error on the downstream request.
391    #[prost(bool, tag = "19")]
392    pub downstream_protocol_error: bool,
393    /// Indicates there was a max stream duration reached on the upstream request.
394    #[prost(bool, tag = "20")]
395    pub upstream_max_stream_duration_reached: bool,
396    /// Indicates the response was served from a cache filter.
397    #[prost(bool, tag = "21")]
398    pub response_from_cache_filter: bool,
399    /// Indicates that a filter configuration is not available.
400    #[prost(bool, tag = "22")]
401    pub no_filter_config_found: bool,
402    /// Indicates that request or connection exceeded the downstream connection duration.
403    #[prost(bool, tag = "23")]
404    pub duration_timeout: bool,
405    /// Indicates there was an HTTP protocol error in the upstream response.
406    #[prost(bool, tag = "24")]
407    pub upstream_protocol_error: bool,
408    /// Indicates no cluster was found for the request.
409    #[prost(bool, tag = "25")]
410    pub no_cluster_found: bool,
411    /// Indicates overload manager terminated the request.
412    #[prost(bool, tag = "26")]
413    pub overload_manager: bool,
414    /// Indicates a DNS resolution failed.
415    #[prost(bool, tag = "27")]
416    pub dns_resolution_failure: bool,
417    /// Indicates a downstream remote codec level reset was received on the stream
418    #[prost(bool, tag = "28")]
419    pub downstream_remote_reset: bool,
420}
421/// Nested message and enum types in `ResponseFlags`.
422pub mod response_flags {
423    #[derive(Clone, Copy, PartialEq, ::prost::Message)]
424    pub struct Unauthorized {
425        #[prost(enumeration = "unauthorized::Reason", tag = "1")]
426        pub reason: i32,
427    }
428    /// Nested message and enum types in `Unauthorized`.
429    pub mod unauthorized {
430        /// Reasons why the request was unauthorized
431        #[derive(
432            Clone,
433            Copy,
434            Debug,
435            PartialEq,
436            Eq,
437            Hash,
438            PartialOrd,
439            Ord,
440            ::prost::Enumeration
441        )]
442        #[repr(i32)]
443        pub enum Reason {
444            Unspecified = 0,
445            /// The request was denied by the external authorization service.
446            ExternalService = 1,
447        }
448        impl Reason {
449            /// String value of the enum field names used in the ProtoBuf definition.
450            ///
451            /// The values are not transformed in any way and thus are considered stable
452            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
453            pub fn as_str_name(&self) -> &'static str {
454                match self {
455                    Self::Unspecified => "REASON_UNSPECIFIED",
456                    Self::ExternalService => "EXTERNAL_SERVICE",
457                }
458            }
459            /// Creates an enum from field names used in the ProtoBuf definition.
460            pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
461                match value {
462                    "REASON_UNSPECIFIED" => Some(Self::Unspecified),
463                    "EXTERNAL_SERVICE" => Some(Self::ExternalService),
464                    _ => None,
465                }
466            }
467        }
468    }
469    impl ::prost::Name for Unauthorized {
470        const NAME: &'static str = "Unauthorized";
471        const PACKAGE: &'static str = "envoy.data.accesslog.v3";
472        fn full_name() -> ::prost::alloc::string::String {
473            "envoy.data.accesslog.v3.ResponseFlags.Unauthorized".into()
474        }
475        fn type_url() -> ::prost::alloc::string::String {
476            "type.googleapis.com/envoy.data.accesslog.v3.ResponseFlags.Unauthorized"
477                .into()
478        }
479    }
480}
481impl ::prost::Name for ResponseFlags {
482    const NAME: &'static str = "ResponseFlags";
483    const PACKAGE: &'static str = "envoy.data.accesslog.v3";
484    fn full_name() -> ::prost::alloc::string::String {
485        "envoy.data.accesslog.v3.ResponseFlags".into()
486    }
487    fn type_url() -> ::prost::alloc::string::String {
488        "type.googleapis.com/envoy.data.accesslog.v3.ResponseFlags".into()
489    }
490}
491/// Properties of a negotiated TLS connection.
492/// \[#next-free-field: 8\]
493#[derive(Clone, PartialEq, ::prost::Message)]
494pub struct TlsProperties {
495    /// Version of TLS that was negotiated.
496    #[prost(enumeration = "tls_properties::TlsVersion", tag = "1")]
497    pub tls_version: i32,
498    /// TLS cipher suite negotiated during handshake. The value is a
499    /// four-digit hex code defined by the IANA TLS Cipher Suite Registry
500    /// (e.g. ``009C`` for ``TLS_RSA_WITH_AES_128_GCM_SHA256``).
501    ///
502    /// Here it is expressed as an integer.
503    #[prost(message, optional, tag = "2")]
504    pub tls_cipher_suite: ::core::option::Option<
505        super::super::super::super::google::protobuf::UInt32Value,
506    >,
507    /// SNI hostname from handshake.
508    #[prost(string, tag = "3")]
509    pub tls_sni_hostname: ::prost::alloc::string::String,
510    /// Properties of the local certificate used to negotiate TLS.
511    #[prost(message, optional, tag = "4")]
512    pub local_certificate_properties: ::core::option::Option<
513        tls_properties::CertificateProperties,
514    >,
515    /// Properties of the peer certificate used to negotiate TLS.
516    #[prost(message, optional, tag = "5")]
517    pub peer_certificate_properties: ::core::option::Option<
518        tls_properties::CertificateProperties,
519    >,
520    /// The TLS session ID.
521    #[prost(string, tag = "6")]
522    pub tls_session_id: ::prost::alloc::string::String,
523    /// The ``JA3`` fingerprint when ``JA3`` fingerprinting is enabled.
524    #[prost(string, tag = "7")]
525    pub ja3_fingerprint: ::prost::alloc::string::String,
526}
527/// Nested message and enum types in `TLSProperties`.
528pub mod tls_properties {
529    #[derive(Clone, PartialEq, ::prost::Message)]
530    pub struct CertificateProperties {
531        /// SANs present in the certificate.
532        #[prost(message, repeated, tag = "1")]
533        pub subject_alt_name: ::prost::alloc::vec::Vec<
534            certificate_properties::SubjectAltName,
535        >,
536        /// The subject field of the certificate.
537        #[prost(string, tag = "2")]
538        pub subject: ::prost::alloc::string::String,
539        /// The issuer field of the certificate.
540        #[prost(string, tag = "3")]
541        pub issuer: ::prost::alloc::string::String,
542    }
543    /// Nested message and enum types in `CertificateProperties`.
544    pub mod certificate_properties {
545        #[derive(Clone, PartialEq, ::prost::Message)]
546        pub struct SubjectAltName {
547            #[prost(oneof = "subject_alt_name::San", tags = "1, 2")]
548            pub san: ::core::option::Option<subject_alt_name::San>,
549        }
550        /// Nested message and enum types in `SubjectAltName`.
551        pub mod subject_alt_name {
552            #[derive(Clone, PartialEq, ::prost::Oneof)]
553            pub enum San {
554                #[prost(string, tag = "1")]
555                Uri(::prost::alloc::string::String),
556                /// \[#not-implemented-hide:\]
557                #[prost(string, tag = "2")]
558                Dns(::prost::alloc::string::String),
559            }
560        }
561        impl ::prost::Name for SubjectAltName {
562            const NAME: &'static str = "SubjectAltName";
563            const PACKAGE: &'static str = "envoy.data.accesslog.v3";
564            fn full_name() -> ::prost::alloc::string::String {
565                "envoy.data.accesslog.v3.TLSProperties.CertificateProperties.SubjectAltName"
566                    .into()
567            }
568            fn type_url() -> ::prost::alloc::string::String {
569                "type.googleapis.com/envoy.data.accesslog.v3.TLSProperties.CertificateProperties.SubjectAltName"
570                    .into()
571            }
572        }
573    }
574    impl ::prost::Name for CertificateProperties {
575        const NAME: &'static str = "CertificateProperties";
576        const PACKAGE: &'static str = "envoy.data.accesslog.v3";
577        fn full_name() -> ::prost::alloc::string::String {
578            "envoy.data.accesslog.v3.TLSProperties.CertificateProperties".into()
579        }
580        fn type_url() -> ::prost::alloc::string::String {
581            "type.googleapis.com/envoy.data.accesslog.v3.TLSProperties.CertificateProperties"
582                .into()
583        }
584    }
585    #[derive(
586        Clone,
587        Copy,
588        Debug,
589        PartialEq,
590        Eq,
591        Hash,
592        PartialOrd,
593        Ord,
594        ::prost::Enumeration
595    )]
596    #[repr(i32)]
597    pub enum TlsVersion {
598        VersionUnspecified = 0,
599        TlSv1 = 1,
600        TlSv11 = 2,
601        TlSv12 = 3,
602        TlSv13 = 4,
603    }
604    impl TlsVersion {
605        /// String value of the enum field names used in the ProtoBuf definition.
606        ///
607        /// The values are not transformed in any way and thus are considered stable
608        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
609        pub fn as_str_name(&self) -> &'static str {
610            match self {
611                Self::VersionUnspecified => "VERSION_UNSPECIFIED",
612                Self::TlSv1 => "TLSv1",
613                Self::TlSv11 => "TLSv1_1",
614                Self::TlSv12 => "TLSv1_2",
615                Self::TlSv13 => "TLSv1_3",
616            }
617        }
618        /// Creates an enum from field names used in the ProtoBuf definition.
619        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
620            match value {
621                "VERSION_UNSPECIFIED" => Some(Self::VersionUnspecified),
622                "TLSv1" => Some(Self::TlSv1),
623                "TLSv1_1" => Some(Self::TlSv11),
624                "TLSv1_2" => Some(Self::TlSv12),
625                "TLSv1_3" => Some(Self::TlSv13),
626                _ => None,
627            }
628        }
629    }
630}
631impl ::prost::Name for TlsProperties {
632    const NAME: &'static str = "TLSProperties";
633    const PACKAGE: &'static str = "envoy.data.accesslog.v3";
634    fn full_name() -> ::prost::alloc::string::String {
635        "envoy.data.accesslog.v3.TLSProperties".into()
636    }
637    fn type_url() -> ::prost::alloc::string::String {
638        "type.googleapis.com/envoy.data.accesslog.v3.TLSProperties".into()
639    }
640}
641/// \[#next-free-field: 16\]
642#[derive(Clone, PartialEq, ::prost::Message)]
643pub struct HttpRequestProperties {
644    /// The request method (RFC 7231/2616).
645    #[prost(
646        enumeration = "super::super::super::config::core::v3::RequestMethod",
647        tag = "1"
648    )]
649    pub request_method: i32,
650    /// The scheme portion of the incoming request URI.
651    #[prost(string, tag = "2")]
652    pub scheme: ::prost::alloc::string::String,
653    /// HTTP/2 ``:authority`` or HTTP/1.1 ``Host`` header value.
654    #[prost(string, tag = "3")]
655    pub authority: ::prost::alloc::string::String,
656    /// The port of the incoming request URI
657    /// (unused currently, as port is composed onto authority).
658    #[prost(message, optional, tag = "4")]
659    pub port: ::core::option::Option<
660        super::super::super::super::google::protobuf::UInt32Value,
661    >,
662    /// The path portion from the incoming request URI.
663    #[prost(string, tag = "5")]
664    pub path: ::prost::alloc::string::String,
665    /// Value of the ``User-Agent`` request header.
666    #[prost(string, tag = "6")]
667    pub user_agent: ::prost::alloc::string::String,
668    /// Value of the ``Referer`` request header.
669    #[prost(string, tag = "7")]
670    pub referer: ::prost::alloc::string::String,
671    /// Value of the ``X-Forwarded-For`` request header.
672    #[prost(string, tag = "8")]
673    pub forwarded_for: ::prost::alloc::string::String,
674    /// Value of the ``X-Request-Id`` request header
675    ///
676    /// This header is used by Envoy to uniquely identify a request.
677    /// It will be generated for all external requests and internal requests that
678    /// do not already have a request ID.
679    #[prost(string, tag = "9")]
680    pub request_id: ::prost::alloc::string::String,
681    /// Value of the ``X-Envoy-Original-Path`` request header.
682    #[prost(string, tag = "10")]
683    pub original_path: ::prost::alloc::string::String,
684    /// Size of the HTTP request headers in bytes.
685    ///
686    /// This value is captured from the OSI layer 7 perspective, i.e. it does not
687    /// include overhead from framing or encoding at other networking layers.
688    #[prost(uint64, tag = "11")]
689    pub request_headers_bytes: u64,
690    /// Size of the HTTP request body in bytes.
691    ///
692    /// This value is captured from the OSI layer 7 perspective, i.e. it does not
693    /// include overhead from framing or encoding at other networking layers.
694    #[prost(uint64, tag = "12")]
695    pub request_body_bytes: u64,
696    /// Map of additional headers that have been configured to be logged.
697    #[prost(map = "string, string", tag = "13")]
698    pub request_headers: ::std::collections::HashMap<
699        ::prost::alloc::string::String,
700        ::prost::alloc::string::String,
701    >,
702    /// Number of header bytes sent to the upstream by the http stream, including protocol overhead.
703    ///
704    /// This value accumulates during upstream retries.
705    #[prost(uint64, tag = "14")]
706    pub upstream_header_bytes_sent: u64,
707    /// Number of header bytes received from the downstream by the http stream, including protocol overhead.
708    #[prost(uint64, tag = "15")]
709    pub downstream_header_bytes_received: u64,
710}
711impl ::prost::Name for HttpRequestProperties {
712    const NAME: &'static str = "HTTPRequestProperties";
713    const PACKAGE: &'static str = "envoy.data.accesslog.v3";
714    fn full_name() -> ::prost::alloc::string::String {
715        "envoy.data.accesslog.v3.HTTPRequestProperties".into()
716    }
717    fn type_url() -> ::prost::alloc::string::String {
718        "type.googleapis.com/envoy.data.accesslog.v3.HTTPRequestProperties".into()
719    }
720}
721/// \[#next-free-field: 9\]
722#[derive(Clone, PartialEq, ::prost::Message)]
723pub struct HttpResponseProperties {
724    /// The HTTP response code returned by Envoy.
725    #[prost(message, optional, tag = "1")]
726    pub response_code: ::core::option::Option<
727        super::super::super::super::google::protobuf::UInt32Value,
728    >,
729    /// Size of the HTTP response headers in bytes.
730    ///
731    /// This value is captured from the OSI layer 7 perspective, i.e. it does not
732    /// include protocol overhead or overhead from framing or encoding at other networking layers.
733    #[prost(uint64, tag = "2")]
734    pub response_headers_bytes: u64,
735    /// Size of the HTTP response body in bytes.
736    ///
737    /// This value is captured from the OSI layer 7 perspective, i.e. it does not
738    /// include overhead from framing or encoding at other networking layers.
739    #[prost(uint64, tag = "3")]
740    pub response_body_bytes: u64,
741    /// Map of additional headers configured to be logged.
742    #[prost(map = "string, string", tag = "4")]
743    pub response_headers: ::std::collections::HashMap<
744        ::prost::alloc::string::String,
745        ::prost::alloc::string::String,
746    >,
747    /// Map of trailers configured to be logged.
748    #[prost(map = "string, string", tag = "5")]
749    pub response_trailers: ::std::collections::HashMap<
750        ::prost::alloc::string::String,
751        ::prost::alloc::string::String,
752    >,
753    /// The HTTP response code details.
754    #[prost(string, tag = "6")]
755    pub response_code_details: ::prost::alloc::string::String,
756    /// Number of header bytes received from the upstream by the http stream, including protocol overhead.
757    #[prost(uint64, tag = "7")]
758    pub upstream_header_bytes_received: u64,
759    /// Number of header bytes sent to the downstream by the http stream, including protocol overhead.
760    #[prost(uint64, tag = "8")]
761    pub downstream_header_bytes_sent: u64,
762}
763impl ::prost::Name for HttpResponseProperties {
764    const NAME: &'static str = "HTTPResponseProperties";
765    const PACKAGE: &'static str = "envoy.data.accesslog.v3";
766    fn full_name() -> ::prost::alloc::string::String {
767        "envoy.data.accesslog.v3.HTTPResponseProperties".into()
768    }
769    fn type_url() -> ::prost::alloc::string::String {
770        "type.googleapis.com/envoy.data.accesslog.v3.HTTPResponseProperties".into()
771    }
772}
773#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
774#[repr(i32)]
775pub enum AccessLogType {
776    NotSet = 0,
777    TcpUpstreamConnected = 1,
778    TcpPeriodic = 2,
779    TcpConnectionEnd = 3,
780    DownstreamStart = 4,
781    DownstreamPeriodic = 5,
782    DownstreamEnd = 6,
783    UpstreamPoolReady = 7,
784    UpstreamPeriodic = 8,
785    UpstreamEnd = 9,
786    DownstreamTunnelSuccessfullyEstablished = 10,
787    UdpTunnelUpstreamConnected = 11,
788    UdpPeriodic = 12,
789    UdpSessionEnd = 13,
790}
791impl AccessLogType {
792    /// String value of the enum field names used in the ProtoBuf definition.
793    ///
794    /// The values are not transformed in any way and thus are considered stable
795    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
796    pub fn as_str_name(&self) -> &'static str {
797        match self {
798            Self::NotSet => "NotSet",
799            Self::TcpUpstreamConnected => "TcpUpstreamConnected",
800            Self::TcpPeriodic => "TcpPeriodic",
801            Self::TcpConnectionEnd => "TcpConnectionEnd",
802            Self::DownstreamStart => "DownstreamStart",
803            Self::DownstreamPeriodic => "DownstreamPeriodic",
804            Self::DownstreamEnd => "DownstreamEnd",
805            Self::UpstreamPoolReady => "UpstreamPoolReady",
806            Self::UpstreamPeriodic => "UpstreamPeriodic",
807            Self::UpstreamEnd => "UpstreamEnd",
808            Self::DownstreamTunnelSuccessfullyEstablished => {
809                "DownstreamTunnelSuccessfullyEstablished"
810            }
811            Self::UdpTunnelUpstreamConnected => "UdpTunnelUpstreamConnected",
812            Self::UdpPeriodic => "UdpPeriodic",
813            Self::UdpSessionEnd => "UdpSessionEnd",
814        }
815    }
816    /// Creates an enum from field names used in the ProtoBuf definition.
817    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
818        match value {
819            "NotSet" => Some(Self::NotSet),
820            "TcpUpstreamConnected" => Some(Self::TcpUpstreamConnected),
821            "TcpPeriodic" => Some(Self::TcpPeriodic),
822            "TcpConnectionEnd" => Some(Self::TcpConnectionEnd),
823            "DownstreamStart" => Some(Self::DownstreamStart),
824            "DownstreamPeriodic" => Some(Self::DownstreamPeriodic),
825            "DownstreamEnd" => Some(Self::DownstreamEnd),
826            "UpstreamPoolReady" => Some(Self::UpstreamPoolReady),
827            "UpstreamPeriodic" => Some(Self::UpstreamPeriodic),
828            "UpstreamEnd" => Some(Self::UpstreamEnd),
829            "DownstreamTunnelSuccessfullyEstablished" => {
830                Some(Self::DownstreamTunnelSuccessfullyEstablished)
831            }
832            "UdpTunnelUpstreamConnected" => Some(Self::UdpTunnelUpstreamConnected),
833            "UdpPeriodic" => Some(Self::UdpPeriodic),
834            "UdpSessionEnd" => Some(Self::UdpSessionEnd),
835            _ => None,
836        }
837    }
838}