// This file is @generated by prost-build.
/// Configuration for DataSourceServerPreferredAddressConfig.
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct DataSourceServerPreferredAddressConfig {
    /// The IPv4 address to advertise to clients for Server Preferred Address.
    #[prost(message, optional, tag = "1")]
    pub ipv4_config: ::core::option::Option<
        data_source_server_preferred_address_config::AddressFamilyConfig,
    >,
    /// The IPv6 address to advertise to clients for Server Preferred Address.
    #[prost(message, optional, tag = "2")]
    pub ipv6_config: ::core::option::Option<
        data_source_server_preferred_address_config::AddressFamilyConfig,
    >,
}
/// Nested message and enum types in `DataSourceServerPreferredAddressConfig`.
pub mod data_source_server_preferred_address_config {
    /// Addresses for server preferred address for a single address family (IPv4 or IPv6).
    #[derive(Clone, PartialEq, ::prost::Message)]
    pub struct AddressFamilyConfig {
        /// The server preferred address sent to clients. The data must contain an IP address string.
        #[prost(message, optional, tag = "1")]
        pub address: ::core::option::Option<
            super::super::super::super::super::config::core::v3::DataSource,
        >,
        /// The server preferred address port sent to clients. The data must contain a integer port value.
        ///
        /// If this is not specified, the listener's port is used.
        ///
        ///
        /// Note: Envoy currently must receive all packets for a QUIC connection on the same port, so unless
        /// : ref:`dnat_address <envoy_v3_api_field_extensions.quic.server_preferred_address.v3.DataSourceServerPreferredAddressConfig.AddressFamilyConfig.dnat_address>`
        ///   is configured, this must be left unset.
        #[prost(message, optional, tag = "2")]
        pub port: ::core::option::Option<
            super::super::super::super::super::config::core::v3::DataSource,
        >,
        /// If there is a DNAT between the client and Envoy, the address that Envoy will observe
        /// server preferred address packets being sent to. If this is not specified, it is assumed
        /// there is no DNAT and the server preferred address packets will be sent to the address advertised
        /// to clients for server preferred address.
        #[prost(message, optional, tag = "3")]
        pub dnat_address: ::core::option::Option<
            super::super::super::super::super::config::core::v3::DataSource,
        >,
    }
}
/// Configuration for FixedServerPreferredAddressConfig.
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct FixedServerPreferredAddressConfig {
    /// String representation of IPv4 address, i.e. "127.0.0.2".
    /// If not specified, none will be configured.
    #[prost(string, tag = "1")]
    pub ipv4_address: ::prost::alloc::string::String,
    ///
    /// The IPv4 address to advertise to clients for Server Preferred Address.
    /// This field takes precedence over
    /// : ref:`ipv4_address <envoy_v3_api_field_extensions.quic.server_preferred_address.v3.FixedServerPreferredAddressConfig.ipv4_address>`.
    #[prost(message, optional, tag = "3")]
    pub ipv4_config: ::core::option::Option<
        fixed_server_preferred_address_config::AddressFamilyConfig,
    >,
    /// String representation of IPv6 address, i.e. "::1".
    /// If not specified, none will be configured.
    #[prost(string, tag = "2")]
    pub ipv6_address: ::prost::alloc::string::String,
    ///
    /// The IPv6 address to advertise to clients for Server Preferred Address.
    /// This field takes precedence over
    /// : ref:`ipv6_address <envoy_v3_api_field_extensions.quic.server_preferred_address.v3.FixedServerPreferredAddressConfig.ipv6_address>`.
    #[prost(message, optional, tag = "4")]
    pub ipv6_config: ::core::option::Option<
        fixed_server_preferred_address_config::AddressFamilyConfig,
    >,
}
/// Nested message and enum types in `FixedServerPreferredAddressConfig`.
pub mod fixed_server_preferred_address_config {
    /// Addresses for server preferred address for a single address family (IPv4 or IPv6).
    #[derive(Clone, PartialEq, ::prost::Message)]
    pub struct AddressFamilyConfig {
        /// The server preferred address sent to clients.
        ///
        /// .. note::
        ///
        ///
        /// Envoy currently requires all packets for a QUIC connection to arrive on the same port. Therefore, unless a
        /// : ref:`dnat_address <envoy_v3_api_field_extensions.quic.server_preferred_address.v3.FixedServerPreferredAddressConfig.AddressFamilyConfig.dnat_address>`
        ///   is explicitly configured, the port specified here must be set to zero. In such cases, Envoy will automatically
        ///   use the listener's port.
        #[prost(message, optional, tag = "1")]
        pub address: ::core::option::Option<
            super::super::super::super::super::config::core::v3::SocketAddress,
        >,
        /// If a DNAT exists between the client and Envoy, this is the address where Envoy will observe incoming server
        /// preferred address packets. If unspecified, Envoy assumes there is no DNAT, and packets will be sent directly
        /// to the address advertised to clients as the server preferred address.
        ///
        /// .. note::
        ///
        /// Envoy currently requires all packets for a QUIC connection to arrive on the same port. Consequently, the
        /// port for this address must be set to zero, with Envoy defaulting to the listener's port instead.
        #[prost(message, optional, tag = "2")]
        pub dnat_address: ::core::option::Option<
            super::super::super::super::super::config::core::v3::SocketAddress,
        >,
    }
}
