#[derive(::serde::Serialize, ::serde::Deserialize)]
#[derive(Ord, PartialOrd)]
#[derive(Eq)]
#[derive(Hash)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct Request {
#[prost(
oneof = "request::RequestType",
tags = "1, 2, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55"
)]
pub request_type: ::core::option::Option<request::RequestType>,
}
pub mod request {
#[derive(::serde::Serialize, ::serde::Deserialize)]
#[serde(rename_all = "SCREAMING_SNAKE_CASE")]
#[allow(clippy::large_enum_variant)]
#[derive(Hash, Eq, Ord, PartialOrd)]
#[derive(Clone, PartialEq, ::prost::Oneof)]
pub enum RequestType {
#[prost(string, tag = "1")]
SaveState(::prost::alloc::string::String),
#[prost(string, tag = "2")]
LoadState(::prost::alloc::string::String),
#[prost(message, tag = "4")]
ListWorkers(super::ListWorkers),
#[prost(message, tag = "5")]
ListFrontends(super::FrontendFilters),
#[prost(message, tag = "6")]
ListListeners(super::ListListeners),
#[prost(string, tag = "7")]
LaunchWorker(::prost::alloc::string::String),
#[prost(message, tag = "8")]
UpgradeMain(super::UpgradeMain),
#[prost(uint32, tag = "9")]
UpgradeWorker(u32),
#[prost(message, tag = "10")]
SubscribeEvents(super::SubscribeEvents),
#[prost(string, tag = "11")]
ReloadConfiguration(::prost::alloc::string::String),
#[prost(message, tag = "12")]
Status(super::Status),
#[prost(message, tag = "13")]
AddCluster(super::Cluster),
#[prost(string, tag = "14")]
RemoveCluster(::prost::alloc::string::String),
#[prost(message, tag = "15")]
AddHttpFrontend(super::RequestHttpFrontend),
#[prost(message, tag = "16")]
RemoveHttpFrontend(super::RequestHttpFrontend),
#[prost(message, tag = "17")]
AddHttpsFrontend(super::RequestHttpFrontend),
#[prost(message, tag = "18")]
RemoveHttpsFrontend(super::RequestHttpFrontend),
#[prost(message, tag = "19")]
AddCertificate(super::AddCertificate),
#[prost(message, tag = "20")]
ReplaceCertificate(super::ReplaceCertificate),
#[prost(message, tag = "21")]
RemoveCertificate(super::RemoveCertificate),
#[prost(message, tag = "22")]
AddTcpFrontend(super::RequestTcpFrontend),
#[prost(message, tag = "23")]
RemoveTcpFrontend(super::RequestTcpFrontend),
#[prost(message, tag = "24")]
AddBackend(super::AddBackend),
#[prost(message, tag = "25")]
RemoveBackend(super::RemoveBackend),
#[prost(message, tag = "26")]
AddHttpListener(super::HttpListenerConfig),
#[prost(message, tag = "27")]
AddHttpsListener(super::HttpsListenerConfig),
#[prost(message, tag = "28")]
AddTcpListener(super::TcpListenerConfig),
#[prost(message, tag = "29")]
RemoveListener(super::RemoveListener),
#[prost(message, tag = "30")]
ActivateListener(super::ActivateListener),
#[prost(message, tag = "31")]
DeactivateListener(super::DeactivateListener),
#[prost(string, tag = "35")]
QueryClusterById(::prost::alloc::string::String),
#[prost(message, tag = "36")]
QueryClustersByDomain(super::QueryClusterByDomain),
#[prost(message, tag = "37")]
QueryClustersHashes(super::QueryClustersHashes),
#[prost(message, tag = "38")]
QueryMetrics(super::QueryMetricsOptions),
#[prost(message, tag = "39")]
SoftStop(super::SoftStop),
#[prost(message, tag = "40")]
HardStop(super::HardStop),
#[prost(enumeration = "super::MetricsConfiguration", tag = "41")]
ConfigureMetrics(i32),
#[prost(string, tag = "42")]
Logging(::prost::alloc::string::String),
#[prost(message, tag = "43")]
ReturnListenSockets(super::ReturnListenSockets),
#[prost(message, tag = "44")]
QueryCertificatesFromTheState(super::QueryCertificatesFilters),
#[prost(message, tag = "45")]
QueryCertificatesFromWorkers(super::QueryCertificatesFilters),
#[prost(message, tag = "46")]
CountRequests(super::CountRequests),
#[prost(message, tag = "47")]
UpdateHttpListener(super::UpdateHttpListenerConfig),
#[prost(message, tag = "48")]
UpdateHttpsListener(super::UpdateHttpsListenerConfig),
#[prost(message, tag = "49")]
UpdateTcpListener(super::UpdateTcpListenerConfig),
#[prost(uint64, tag = "50")]
SetMaxConnectionsPerIp(u64),
#[prost(message, tag = "51")]
QueryMaxConnectionsPerIp(super::QueryMaxConnectionsPerIp),
#[prost(message, tag = "52")]
SetHealthCheck(super::SetHealthCheck),
#[prost(string, tag = "53")]
RemoveHealthCheck(::prost::alloc::string::String),
#[prost(message, tag = "54")]
QueryHealthChecks(super::QueryHealthChecks),
#[prost(message, tag = "55")]
SetMetricDetail(super::SetMetricDetail),
}
}
#[derive(::serde::Serialize, ::serde::Deserialize)]
#[derive(Ord, PartialOrd)]
#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
pub struct QueryHealthChecks {
#[prost(string, optional, tag = "1")]
pub cluster_id: ::core::option::Option<::prost::alloc::string::String>,
}
#[derive(::serde::Serialize, ::serde::Deserialize)]
#[derive(Ord, PartialOrd)]
#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
pub struct SetHealthCheck {
#[prost(string, required, tag = "1")]
pub cluster_id: ::prost::alloc::string::String,
#[prost(message, required, tag = "2")]
pub config: HealthCheckConfig,
}
#[derive(::serde::Serialize, ::serde::Deserialize)]
#[derive(Ord, PartialOrd)]
#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
pub struct ListWorkers {}
#[derive(::serde::Serialize, ::serde::Deserialize)]
#[derive(Ord, PartialOrd)]
#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
pub struct ListListeners {}
#[derive(::serde::Serialize, ::serde::Deserialize)]
#[derive(Ord, PartialOrd)]
#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
pub struct UpgradeMain {}
#[derive(::serde::Serialize, ::serde::Deserialize)]
#[derive(Ord, PartialOrd)]
#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
pub struct SubscribeEvents {}
#[derive(::serde::Serialize, ::serde::Deserialize)]
#[derive(Ord, PartialOrd)]
#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
pub struct Status {}
#[derive(::serde::Serialize, ::serde::Deserialize)]
#[derive(Ord, PartialOrd)]
#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
pub struct QueryClustersHashes {}
#[derive(::serde::Serialize, ::serde::Deserialize)]
#[derive(Ord, PartialOrd)]
#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
pub struct SoftStop {}
#[derive(::serde::Serialize, ::serde::Deserialize)]
#[derive(Ord, PartialOrd)]
#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
pub struct HardStop {}
#[derive(::serde::Serialize, ::serde::Deserialize)]
#[derive(Ord, PartialOrd)]
#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
pub struct ReturnListenSockets {}
#[derive(::serde::Serialize, ::serde::Deserialize)]
#[derive(Ord, PartialOrd)]
#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
pub struct CountRequests {}
#[derive(::serde::Serialize, ::serde::Deserialize)]
#[derive(Ord, PartialOrd)]
#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
pub struct QueryMaxConnectionsPerIp {}
#[derive(::serde::Serialize, ::serde::Deserialize)]
#[derive(Ord, PartialOrd)]
#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
pub struct AlpnProtocols {
#[prost(string, repeated, tag = "1")]
pub values: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
}
#[derive(::serde::Serialize, ::serde::Deserialize)]
#[derive(Ord, PartialOrd)]
#[derive(Hash, Eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct UpdateHttpListenerConfig {
#[prost(message, required, tag = "1")]
pub address: SocketAddress,
#[prost(message, optional, tag = "2")]
pub public_address: ::core::option::Option<SocketAddress>,
#[prost(bool, optional, tag = "3")]
pub expect_proxy: ::core::option::Option<bool>,
#[prost(string, optional, tag = "4")]
pub sticky_name: ::core::option::Option<::prost::alloc::string::String>,
#[prost(uint32, optional, tag = "5")]
pub front_timeout: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "6")]
pub back_timeout: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "7")]
pub connect_timeout: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "8")]
pub request_timeout: ::core::option::Option<u32>,
#[prost(message, optional, tag = "9")]
pub http_answers: ::core::option::Option<CustomHttpAnswers>,
#[prost(uint32, optional, tag = "20")]
pub h2_max_rst_stream_per_window: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "21")]
pub h2_max_ping_per_window: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "22")]
pub h2_max_settings_per_window: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "23")]
pub h2_max_empty_data_per_window: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "24")]
pub h2_max_continuation_frames: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "25")]
pub h2_max_glitch_count: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "26")]
pub h2_initial_connection_window: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "27")]
pub h2_max_concurrent_streams: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "28")]
pub h2_stream_shrink_ratio: ::core::option::Option<u32>,
#[prost(uint64, optional, tag = "29")]
pub h2_max_rst_stream_lifetime: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "30")]
pub h2_max_rst_stream_abusive_lifetime: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "31")]
pub h2_max_rst_stream_emitted_lifetime: ::core::option::Option<u64>,
#[prost(uint32, optional, tag = "32")]
pub h2_max_header_list_size: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "33")]
pub h2_max_header_table_size: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "34")]
pub h2_stream_idle_timeout_seconds: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "35")]
pub h2_graceful_shutdown_deadline_seconds: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "36")]
pub h2_max_window_update_stream0_per_window: ::core::option::Option<u32>,
#[prost(string, optional, tag = "37")]
pub sozu_id_header: ::core::option::Option<::prost::alloc::string::String>,
#[prost(btree_map = "string, string", tag = "38")]
pub answers: ::prost::alloc::collections::BTreeMap<
::prost::alloc::string::String,
::prost::alloc::string::String,
>,
#[prost(bool, optional, tag = "39")]
pub elide_x_real_ip: ::core::option::Option<bool>,
#[prost(bool, optional, tag = "40")]
pub send_x_real_ip: ::core::option::Option<bool>,
}
#[derive(::serde::Serialize, ::serde::Deserialize)]
#[derive(Ord, PartialOrd)]
#[derive(Hash, Eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct UpdateHttpsListenerConfig {
#[prost(message, required, tag = "1")]
pub address: SocketAddress,
#[prost(message, optional, tag = "2")]
pub public_address: ::core::option::Option<SocketAddress>,
#[prost(bool, optional, tag = "3")]
pub expect_proxy: ::core::option::Option<bool>,
#[prost(string, optional, tag = "4")]
pub sticky_name: ::core::option::Option<::prost::alloc::string::String>,
#[prost(uint32, optional, tag = "5")]
pub front_timeout: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "6")]
pub back_timeout: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "7")]
pub connect_timeout: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "8")]
pub request_timeout: ::core::option::Option<u32>,
#[prost(message, optional, tag = "9")]
pub http_answers: ::core::option::Option<CustomHttpAnswers>,
#[prost(message, optional, tag = "10")]
pub alpn_protocols: ::core::option::Option<AlpnProtocols>,
#[prost(bool, optional, tag = "11")]
pub strict_sni_binding: ::core::option::Option<bool>,
#[prost(bool, optional, tag = "12")]
pub disable_http11: ::core::option::Option<bool>,
#[prost(uint32, optional, tag = "20")]
pub h2_max_rst_stream_per_window: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "21")]
pub h2_max_ping_per_window: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "22")]
pub h2_max_settings_per_window: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "23")]
pub h2_max_empty_data_per_window: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "24")]
pub h2_max_continuation_frames: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "25")]
pub h2_max_glitch_count: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "26")]
pub h2_initial_connection_window: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "27")]
pub h2_max_concurrent_streams: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "28")]
pub h2_stream_shrink_ratio: ::core::option::Option<u32>,
#[prost(uint64, optional, tag = "29")]
pub h2_max_rst_stream_lifetime: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "30")]
pub h2_max_rst_stream_abusive_lifetime: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "31")]
pub h2_max_rst_stream_emitted_lifetime: ::core::option::Option<u64>,
#[prost(uint32, optional, tag = "32")]
pub h2_max_header_list_size: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "33")]
pub h2_max_header_table_size: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "34")]
pub h2_stream_idle_timeout_seconds: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "35")]
pub h2_graceful_shutdown_deadline_seconds: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "36")]
pub h2_max_window_update_stream0_per_window: ::core::option::Option<u32>,
#[prost(string, optional, tag = "37")]
pub sozu_id_header: ::core::option::Option<::prost::alloc::string::String>,
#[prost(btree_map = "string, string", tag = "38")]
pub answers: ::prost::alloc::collections::BTreeMap<
::prost::alloc::string::String,
::prost::alloc::string::String,
>,
#[prost(bool, optional, tag = "39")]
pub elide_x_real_ip: ::core::option::Option<bool>,
#[prost(bool, optional, tag = "40")]
pub send_x_real_ip: ::core::option::Option<bool>,
#[prost(message, optional, tag = "41")]
pub hsts: ::core::option::Option<HstsConfig>,
}
#[derive(::serde::Serialize, ::serde::Deserialize)]
#[derive(Ord, PartialOrd)]
#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
pub struct UpdateTcpListenerConfig {
#[prost(message, required, tag = "1")]
pub address: SocketAddress,
#[prost(message, optional, tag = "2")]
pub public_address: ::core::option::Option<SocketAddress>,
#[prost(bool, optional, tag = "3")]
pub expect_proxy: ::core::option::Option<bool>,
#[prost(uint32, optional, tag = "4")]
pub front_timeout: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "5")]
pub back_timeout: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "6")]
pub connect_timeout: ::core::option::Option<u32>,
}
#[derive(::serde::Serialize, ::serde::Deserialize)]
#[derive(Ord, PartialOrd)]
#[derive(Hash, Eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct HttpListenerConfig {
#[prost(message, required, tag = "1")]
pub address: SocketAddress,
#[prost(message, optional, tag = "2")]
pub public_address: ::core::option::Option<SocketAddress>,
#[prost(bool, required, tag = "5", default = "false")]
pub expect_proxy: bool,
#[prost(string, required, tag = "6")]
pub sticky_name: ::prost::alloc::string::String,
#[prost(uint32, required, tag = "7", default = "60")]
pub front_timeout: u32,
#[prost(uint32, required, tag = "8", default = "30")]
pub back_timeout: u32,
#[prost(uint32, required, tag = "9", default = "3")]
pub connect_timeout: u32,
#[prost(uint32, required, tag = "10", default = "10")]
pub request_timeout: u32,
#[prost(bool, required, tag = "11", default = "false")]
pub active: bool,
#[prost(message, optional, tag = "12")]
pub http_answers: ::core::option::Option<CustomHttpAnswers>,
#[prost(uint32, optional, tag = "13")]
pub h2_max_rst_stream_per_window: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "14")]
pub h2_max_ping_per_window: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "15")]
pub h2_max_settings_per_window: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "16")]
pub h2_max_empty_data_per_window: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "17")]
pub h2_max_continuation_frames: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "18")]
pub h2_max_glitch_count: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "19")]
pub h2_initial_connection_window: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "20")]
pub h2_max_concurrent_streams: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "21")]
pub h2_stream_shrink_ratio: ::core::option::Option<u32>,
#[prost(uint64, optional, tag = "22")]
pub h2_max_rst_stream_lifetime: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "23")]
pub h2_max_rst_stream_abusive_lifetime: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "27")]
pub h2_max_rst_stream_emitted_lifetime: ::core::option::Option<u64>,
#[prost(uint32, optional, tag = "24")]
pub h2_max_header_list_size: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "25")]
pub h2_stream_idle_timeout_seconds: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "26")]
pub h2_max_header_table_size: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "28")]
pub h2_graceful_shutdown_deadline_seconds: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "29")]
pub h2_max_window_update_stream0_per_window: ::core::option::Option<u32>,
#[prost(string, optional, tag = "30")]
pub sozu_id_header: ::core::option::Option<::prost::alloc::string::String>,
#[prost(btree_map = "string, string", tag = "31")]
#[serde(default)]
pub answers: ::prost::alloc::collections::BTreeMap<
::prost::alloc::string::String,
::prost::alloc::string::String,
>,
#[prost(bool, optional, tag = "32", default = "false")]
pub elide_x_real_ip: ::core::option::Option<bool>,
#[prost(bool, optional, tag = "33", default = "false")]
pub send_x_real_ip: ::core::option::Option<bool>,
}
#[derive(::serde::Serialize, ::serde::Deserialize)]
#[derive(Ord, PartialOrd)]
#[derive(Hash, Eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct HttpsListenerConfig {
#[prost(message, required, tag = "1")]
pub address: SocketAddress,
#[prost(message, optional, tag = "2")]
pub public_address: ::core::option::Option<SocketAddress>,
#[prost(bool, required, tag = "5", default = "false")]
pub expect_proxy: bool,
#[prost(string, required, tag = "6")]
pub sticky_name: ::prost::alloc::string::String,
#[prost(uint32, required, tag = "7", default = "60")]
pub front_timeout: u32,
#[prost(uint32, required, tag = "8", default = "30")]
pub back_timeout: u32,
#[prost(uint32, required, tag = "9", default = "3")]
pub connect_timeout: u32,
#[prost(uint32, required, tag = "10", default = "10")]
pub request_timeout: u32,
#[prost(bool, required, tag = "11", default = "false")]
pub active: bool,
#[prost(enumeration = "TlsVersion", repeated, packed = "false", tag = "12")]
pub versions: ::prost::alloc::vec::Vec<i32>,
#[prost(string, repeated, tag = "13")]
pub cipher_list: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
#[prost(string, repeated, tag = "14")]
pub cipher_suites: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
#[prost(string, repeated, tag = "15")]
pub signature_algorithms: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
#[prost(string, repeated, tag = "16")]
pub groups_list: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
#[prost(string, optional, tag = "17")]
pub certificate: ::core::option::Option<::prost::alloc::string::String>,
#[prost(string, repeated, tag = "18")]
pub certificate_chain: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
#[prost(string, optional, tag = "19")]
pub key: ::core::option::Option<::prost::alloc::string::String>,
#[prost(uint64, required, tag = "20")]
pub send_tls13_tickets: u64,
#[prost(message, optional, tag = "21")]
pub http_answers: ::core::option::Option<CustomHttpAnswers>,
#[prost(string, repeated, tag = "22")]
#[serde(default)]
pub alpn_protocols: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
#[prost(uint32, optional, tag = "23")]
pub h2_max_rst_stream_per_window: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "24")]
pub h2_max_ping_per_window: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "25")]
pub h2_max_settings_per_window: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "26")]
pub h2_max_empty_data_per_window: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "27")]
pub h2_max_continuation_frames: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "28")]
pub h2_max_glitch_count: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "29")]
pub h2_initial_connection_window: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "30")]
pub h2_max_concurrent_streams: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "31")]
pub h2_stream_shrink_ratio: ::core::option::Option<u32>,
#[prost(uint64, optional, tag = "32")]
pub h2_max_rst_stream_lifetime: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "33")]
pub h2_max_rst_stream_abusive_lifetime: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "39")]
pub h2_max_rst_stream_emitted_lifetime: ::core::option::Option<u64>,
#[prost(uint32, optional, tag = "34")]
pub h2_max_header_list_size: ::core::option::Option<u32>,
#[prost(bool, optional, tag = "35")]
pub strict_sni_binding: ::core::option::Option<bool>,
#[prost(bool, optional, tag = "36")]
pub disable_http11: ::core::option::Option<bool>,
#[prost(uint32, optional, tag = "37")]
pub h2_stream_idle_timeout_seconds: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "38")]
pub h2_max_header_table_size: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "40")]
pub h2_graceful_shutdown_deadline_seconds: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "41")]
pub h2_max_window_update_stream0_per_window: ::core::option::Option<u32>,
#[prost(string, optional, tag = "42")]
pub sozu_id_header: ::core::option::Option<::prost::alloc::string::String>,
#[prost(btree_map = "string, string", tag = "43")]
#[serde(default)]
pub answers: ::prost::alloc::collections::BTreeMap<
::prost::alloc::string::String,
::prost::alloc::string::String,
>,
#[prost(bool, optional, tag = "44", default = "false")]
pub elide_x_real_ip: ::core::option::Option<bool>,
#[prost(bool, optional, tag = "45", default = "false")]
pub send_x_real_ip: ::core::option::Option<bool>,
#[prost(message, optional, tag = "46")]
pub hsts: ::core::option::Option<HstsConfig>,
}
#[derive(::serde::Serialize, ::serde::Deserialize)]
#[derive(Ord, PartialOrd)]
#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
pub struct TcpListenerConfig {
#[prost(message, required, tag = "1")]
pub address: SocketAddress,
#[prost(message, optional, tag = "2")]
pub public_address: ::core::option::Option<SocketAddress>,
#[prost(bool, required, tag = "3", default = "false")]
pub expect_proxy: bool,
#[prost(uint32, required, tag = "4", default = "60")]
pub front_timeout: u32,
#[prost(uint32, required, tag = "5", default = "30")]
pub back_timeout: u32,
#[prost(uint32, required, tag = "6", default = "3")]
pub connect_timeout: u32,
#[prost(bool, required, tag = "7", default = "false")]
pub active: bool,
}
#[derive(::serde::Serialize, ::serde::Deserialize)]
#[derive(Ord, PartialOrd)]
#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
pub struct HstsConfig {
#[prost(bool, optional, tag = "1")]
pub enabled: ::core::option::Option<bool>,
#[prost(uint32, optional, tag = "2")]
pub max_age: ::core::option::Option<u32>,
#[prost(bool, optional, tag = "3")]
pub include_subdomains: ::core::option::Option<bool>,
#[prost(bool, optional, tag = "4")]
pub preload: ::core::option::Option<bool>,
#[prost(bool, optional, tag = "5")]
pub force_replace_backend: ::core::option::Option<bool>,
}
#[derive(::serde::Serialize, ::serde::Deserialize)]
#[derive(Ord, PartialOrd)]
#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
pub struct CustomHttpAnswers {
#[prost(string, optional, tag = "1")]
pub answer_301: ::core::option::Option<::prost::alloc::string::String>,
#[prost(string, optional, tag = "2")]
pub answer_400: ::core::option::Option<::prost::alloc::string::String>,
#[prost(string, optional, tag = "3")]
pub answer_401: ::core::option::Option<::prost::alloc::string::String>,
#[prost(string, optional, tag = "4")]
pub answer_404: ::core::option::Option<::prost::alloc::string::String>,
#[prost(string, optional, tag = "5")]
pub answer_408: ::core::option::Option<::prost::alloc::string::String>,
#[prost(string, optional, tag = "6")]
pub answer_413: ::core::option::Option<::prost::alloc::string::String>,
#[prost(string, optional, tag = "11")]
pub answer_421: ::core::option::Option<::prost::alloc::string::String>,
#[prost(string, optional, tag = "7")]
pub answer_502: ::core::option::Option<::prost::alloc::string::String>,
#[prost(string, optional, tag = "8")]
pub answer_503: ::core::option::Option<::prost::alloc::string::String>,
#[prost(string, optional, tag = "9")]
pub answer_504: ::core::option::Option<::prost::alloc::string::String>,
#[prost(string, optional, tag = "10")]
pub answer_507: ::core::option::Option<::prost::alloc::string::String>,
#[prost(string, optional, tag = "12")]
pub answer_429: ::core::option::Option<::prost::alloc::string::String>,
}
#[derive(::serde::Serialize, ::serde::Deserialize)]
#[derive(Ord, PartialOrd)]
#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
pub struct ActivateListener {
#[prost(message, required, tag = "1")]
pub address: SocketAddress,
#[prost(enumeration = "ListenerType", required, tag = "2")]
pub proxy: i32,
#[prost(bool, required, tag = "3")]
pub from_scm: bool,
}
#[derive(::serde::Serialize, ::serde::Deserialize)]
#[derive(Ord, PartialOrd)]
#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
pub struct DeactivateListener {
#[prost(message, required, tag = "1")]
pub address: SocketAddress,
#[prost(enumeration = "ListenerType", required, tag = "2")]
pub proxy: i32,
#[prost(bool, required, tag = "3")]
pub to_scm: bool,
}
#[derive(::serde::Serialize, ::serde::Deserialize)]
#[derive(Ord, PartialOrd)]
#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
pub struct RemoveListener {
#[prost(message, required, tag = "1")]
pub address: SocketAddress,
#[prost(enumeration = "ListenerType", required, tag = "2")]
pub proxy: i32,
}
#[derive(::serde::Serialize, ::serde::Deserialize)]
#[derive(Ord, PartialOrd)]
#[derive(Hash, Eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct ListenersList {
#[prost(btree_map = "string, message", tag = "1")]
pub http_listeners: ::prost::alloc::collections::BTreeMap<
::prost::alloc::string::String,
HttpListenerConfig,
>,
#[prost(btree_map = "string, message", tag = "2")]
pub https_listeners: ::prost::alloc::collections::BTreeMap<
::prost::alloc::string::String,
HttpsListenerConfig,
>,
#[prost(btree_map = "string, message", tag = "3")]
pub tcp_listeners: ::prost::alloc::collections::BTreeMap<
::prost::alloc::string::String,
TcpListenerConfig,
>,
}
#[derive(::serde::Serialize, ::serde::Deserialize)]
#[derive(Ord, PartialOrd)]
#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
pub struct Header {
#[prost(enumeration = "HeaderPosition", required, tag = "1")]
pub position: i32,
#[prost(string, required, tag = "2")]
pub key: ::prost::alloc::string::String,
#[prost(string, required, tag = "3")]
pub val: ::prost::alloc::string::String,
}
#[derive(::serde::Serialize, ::serde::Deserialize)]
#[derive(Ord, PartialOrd)]
#[derive(Hash, Eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct RequestHttpFrontend {
#[prost(string, optional, tag = "1")]
pub cluster_id: ::core::option::Option<::prost::alloc::string::String>,
#[prost(message, required, tag = "2")]
pub address: SocketAddress,
#[prost(string, required, tag = "3")]
pub hostname: ::prost::alloc::string::String,
#[prost(message, required, tag = "4")]
pub path: PathRule,
#[prost(string, optional, tag = "5")]
pub method: ::core::option::Option<::prost::alloc::string::String>,
#[prost(enumeration = "RulePosition", required, tag = "6", default = "Tree")]
pub position: i32,
#[prost(btree_map = "string, string", tag = "7")]
pub tags: ::prost::alloc::collections::BTreeMap<
::prost::alloc::string::String,
::prost::alloc::string::String,
>,
#[prost(enumeration = "RedirectPolicy", optional, tag = "8", default = "Forward")]
pub redirect: ::core::option::Option<i32>,
#[prost(bool, optional, tag = "9")]
pub required_auth: ::core::option::Option<bool>,
#[prost(enumeration = "RedirectScheme", optional, tag = "10", default = "UseSame")]
pub redirect_scheme: ::core::option::Option<i32>,
#[prost(string, optional, tag = "11")]
pub redirect_template: ::core::option::Option<::prost::alloc::string::String>,
#[prost(string, optional, tag = "12")]
pub rewrite_host: ::core::option::Option<::prost::alloc::string::String>,
#[prost(string, optional, tag = "13")]
pub rewrite_path: ::core::option::Option<::prost::alloc::string::String>,
#[prost(uint32, optional, tag = "14")]
pub rewrite_port: ::core::option::Option<u32>,
#[prost(message, repeated, tag = "15")]
#[serde(default)]
pub headers: ::prost::alloc::vec::Vec<Header>,
#[prost(message, optional, tag = "16")]
pub hsts: ::core::option::Option<HstsConfig>,
}
#[derive(::serde::Serialize, ::serde::Deserialize)]
#[derive(Ord, PartialOrd)]
#[derive(Hash, Eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct RequestTcpFrontend {
#[prost(string, required, tag = "1")]
pub cluster_id: ::prost::alloc::string::String,
#[prost(message, required, tag = "2")]
pub address: SocketAddress,
#[prost(btree_map = "string, string", tag = "3")]
pub tags: ::prost::alloc::collections::BTreeMap<
::prost::alloc::string::String,
::prost::alloc::string::String,
>,
}
#[derive(::serde::Serialize, ::serde::Deserialize)]
#[derive(Ord, PartialOrd)]
#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
pub struct FrontendFilters {
#[prost(bool, required, tag = "1")]
pub http: bool,
#[prost(bool, required, tag = "2")]
pub https: bool,
#[prost(bool, required, tag = "3")]
pub tcp: bool,
#[prost(string, optional, tag = "4")]
pub domain: ::core::option::Option<::prost::alloc::string::String>,
}
#[derive(::serde::Serialize, ::serde::Deserialize)]
#[derive(Ord, PartialOrd)]
#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
pub struct PathRule {
#[prost(enumeration = "PathRuleKind", required, tag = "1")]
pub kind: i32,
#[prost(string, required, tag = "2")]
pub value: ::prost::alloc::string::String,
}
#[derive(::serde::Serialize, ::serde::Deserialize)]
#[derive(Ord, PartialOrd)]
#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
pub struct AddCertificate {
#[prost(message, required, tag = "1")]
pub address: SocketAddress,
#[prost(message, required, tag = "2")]
pub certificate: CertificateAndKey,
#[prost(int64, optional, tag = "3")]
pub expired_at: ::core::option::Option<i64>,
}
#[derive(::serde::Serialize, ::serde::Deserialize)]
#[derive(Ord, PartialOrd)]
#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
pub struct RemoveCertificate {
#[prost(message, required, tag = "1")]
pub address: SocketAddress,
#[prost(string, required, tag = "2")]
pub fingerprint: ::prost::alloc::string::String,
}
#[derive(::serde::Serialize, ::serde::Deserialize)]
#[derive(Ord, PartialOrd)]
#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
pub struct ReplaceCertificate {
#[prost(message, required, tag = "1")]
pub address: SocketAddress,
#[prost(message, required, tag = "2")]
pub new_certificate: CertificateAndKey,
#[prost(string, required, tag = "3")]
pub old_fingerprint: ::prost::alloc::string::String,
#[prost(int64, optional, tag = "4")]
pub new_expired_at: ::core::option::Option<i64>,
}
#[derive(::serde::Serialize, ::serde::Deserialize)]
#[derive(Ord, PartialOrd)]
#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
pub struct CertificateAndKey {
#[prost(string, required, tag = "1")]
pub certificate: ::prost::alloc::string::String,
#[prost(string, repeated, tag = "2")]
pub certificate_chain: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
#[prost(string, required, tag = "3")]
pub key: ::prost::alloc::string::String,
#[prost(enumeration = "TlsVersion", repeated, packed = "false", tag = "4")]
pub versions: ::prost::alloc::vec::Vec<i32>,
#[prost(string, repeated, tag = "5")]
pub names: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
}
#[derive(::serde::Serialize, ::serde::Deserialize)]
#[derive(Ord, PartialOrd)]
#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
pub struct QueryCertificatesFilters {
#[prost(string, optional, tag = "1")]
pub domain: ::core::option::Option<::prost::alloc::string::String>,
#[prost(string, optional, tag = "2")]
pub fingerprint: ::core::option::Option<::prost::alloc::string::String>,
}
#[derive(::serde::Serialize, ::serde::Deserialize)]
#[derive(Ord, PartialOrd)]
#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
pub struct CertificateSummary {
#[prost(string, required, tag = "1")]
pub domain: ::prost::alloc::string::String,
#[prost(string, required, tag = "2")]
pub fingerprint: ::prost::alloc::string::String,
}
#[derive(::serde::Serialize, ::serde::Deserialize)]
#[derive(Ord, PartialOrd)]
#[derive(Hash, Eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct ListOfCertificatesByAddress {
#[prost(message, repeated, tag = "1")]
pub certificates: ::prost::alloc::vec::Vec<CertificatesByAddress>,
}
#[derive(::serde::Serialize, ::serde::Deserialize)]
#[derive(Ord, PartialOrd)]
#[derive(Hash, Eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct CertificatesByAddress {
#[prost(message, required, tag = "1")]
pub address: SocketAddress,
#[prost(message, repeated, tag = "2")]
pub certificate_summaries: ::prost::alloc::vec::Vec<CertificateSummary>,
}
#[derive(::serde::Serialize, ::serde::Deserialize)]
#[derive(Ord, PartialOrd)]
#[derive(Hash, Eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct CertificatesWithFingerprints {
#[prost(btree_map = "string, message", tag = "1")]
pub certs: ::prost::alloc::collections::BTreeMap<
::prost::alloc::string::String,
CertificateAndKey,
>,
}
#[derive(::serde::Serialize, ::serde::Deserialize)]
#[derive(Ord, PartialOrd)]
#[derive(Hash, Eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct Cluster {
#[prost(string, required, tag = "1")]
pub cluster_id: ::prost::alloc::string::String,
#[prost(bool, required, tag = "2")]
pub sticky_session: bool,
#[prost(bool, required, tag = "3")]
pub https_redirect: bool,
#[prost(enumeration = "ProxyProtocolConfig", optional, tag = "4")]
pub proxy_protocol: ::core::option::Option<i32>,
#[prost(
enumeration = "LoadBalancingAlgorithms",
required,
tag = "5",
default = "RoundRobin"
)]
pub load_balancing: i32,
#[prost(string, optional, tag = "6")]
pub answer_503: ::core::option::Option<::prost::alloc::string::String>,
#[prost(enumeration = "LoadMetric", optional, tag = "7")]
pub load_metric: ::core::option::Option<i32>,
#[prost(bool, optional, tag = "8")]
pub http2: ::core::option::Option<bool>,
#[prost(btree_map = "string, string", tag = "9")]
#[serde(default)]
pub answers: ::prost::alloc::collections::BTreeMap<
::prost::alloc::string::String,
::prost::alloc::string::String,
>,
#[prost(uint32, optional, tag = "10")]
pub https_redirect_port: ::core::option::Option<u32>,
#[prost(string, repeated, tag = "11")]
#[serde(default)]
pub authorized_hashes: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
#[prost(string, optional, tag = "12")]
pub www_authenticate: ::core::option::Option<::prost::alloc::string::String>,
#[prost(uint64, optional, tag = "13")]
pub max_connections_per_ip: ::core::option::Option<u64>,
#[prost(uint32, optional, tag = "14")]
pub retry_after: ::core::option::Option<u32>,
#[prost(message, optional, tag = "15")]
pub health_check: ::core::option::Option<HealthCheckConfig>,
}
#[derive(::serde::Serialize, ::serde::Deserialize)]
#[derive(Ord, PartialOrd)]
#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
pub struct HealthCheckConfig {
#[prost(string, required, tag = "1")]
pub uri: ::prost::alloc::string::String,
#[prost(uint32, required, tag = "2", default = "10")]
pub interval: u32,
#[prost(uint32, required, tag = "3", default = "5")]
pub timeout: u32,
#[prost(uint32, required, tag = "4", default = "3")]
pub healthy_threshold: u32,
#[prost(uint32, required, tag = "5", default = "3")]
pub unhealthy_threshold: u32,
#[prost(uint32, required, tag = "6", default = "0")]
pub expected_status: u32,
}
#[derive(::serde::Serialize, ::serde::Deserialize)]
#[derive(Ord, PartialOrd)]
#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
pub struct AddBackend {
#[prost(string, required, tag = "1")]
pub cluster_id: ::prost::alloc::string::String,
#[prost(string, required, tag = "2")]
pub backend_id: ::prost::alloc::string::String,
#[prost(message, required, tag = "3")]
pub address: SocketAddress,
#[prost(string, optional, tag = "4")]
pub sticky_id: ::core::option::Option<::prost::alloc::string::String>,
#[prost(message, optional, tag = "5")]
pub load_balancing_parameters: ::core::option::Option<LoadBalancingParams>,
#[prost(bool, optional, tag = "6")]
pub backup: ::core::option::Option<bool>,
}
#[derive(::serde::Serialize, ::serde::Deserialize)]
#[derive(Ord, PartialOrd)]
#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
pub struct RemoveBackend {
#[prost(string, required, tag = "1")]
pub cluster_id: ::prost::alloc::string::String,
#[prost(string, required, tag = "2")]
pub backend_id: ::prost::alloc::string::String,
#[prost(message, required, tag = "3")]
pub address: SocketAddress,
}
#[derive(::serde::Serialize, ::serde::Deserialize)]
#[derive(Ord, PartialOrd)]
#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
pub struct LoadBalancingParams {
#[prost(int32, required, tag = "1")]
pub weight: i32,
}
#[derive(::serde::Serialize, ::serde::Deserialize)]
#[derive(Ord, PartialOrd)]
#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
pub struct QueryClusterByDomain {
#[prost(string, required, tag = "1")]
pub hostname: ::prost::alloc::string::String,
#[prost(string, optional, tag = "2")]
pub path: ::core::option::Option<::prost::alloc::string::String>,
}
#[derive(::serde::Serialize, ::serde::Deserialize)]
#[derive(Ord, PartialOrd)]
#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
pub struct QueryMetricsOptions {
#[prost(bool, required, tag = "1")]
pub list: bool,
#[prost(string, repeated, tag = "2")]
pub cluster_ids: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
#[prost(string, repeated, tag = "3")]
pub backend_ids: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
#[prost(string, repeated, tag = "4")]
pub metric_names: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
#[prost(bool, required, tag = "5")]
pub no_clusters: bool,
#[prost(bool, required, tag = "6")]
pub workers: bool,
}
#[derive(::serde::Serialize, ::serde::Deserialize)]
#[derive(Ord, PartialOrd)]
#[derive(Hash, Eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct Response {
#[prost(enumeration = "ResponseStatus", required, tag = "1", default = "Failure")]
pub status: i32,
#[prost(string, required, tag = "2")]
pub message: ::prost::alloc::string::String,
#[prost(message, optional, tag = "3")]
pub content: ::core::option::Option<ResponseContent>,
}
#[derive(::serde::Serialize, ::serde::Deserialize)]
#[derive(Ord, PartialOrd)]
#[derive(Hash, Eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct ResponseContent {
#[prost(
oneof = "response_content::ContentType",
tags = "1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17"
)]
pub content_type: ::core::option::Option<response_content::ContentType>,
}
pub mod response_content {
#[derive(::serde::Serialize, ::serde::Deserialize)]
#[serde(rename_all = "SCREAMING_SNAKE_CASE")]
#[derive(Hash, Eq, Ord, PartialOrd)]
#[derive(Clone, PartialEq, ::prost::Oneof)]
pub enum ContentType {
#[prost(message, tag = "1")]
Workers(super::WorkerInfos),
#[prost(message, tag = "2")]
Metrics(super::AggregatedMetrics),
#[prost(message, tag = "3")]
WorkerResponses(super::WorkerResponses),
#[prost(message, tag = "4")]
Event(super::Event),
#[prost(message, tag = "5")]
FrontendList(super::ListedFrontends),
#[prost(message, tag = "6")]
ListenersList(super::ListenersList),
#[prost(message, tag = "7")]
WorkerMetrics(super::WorkerMetrics),
#[prost(message, tag = "8")]
AvailableMetrics(super::AvailableMetrics),
#[prost(message, tag = "9")]
Clusters(super::ClusterInformations),
#[prost(message, tag = "10")]
ClusterHashes(super::ClusterHashes),
#[prost(message, tag = "11")]
CertificatesByAddress(super::ListOfCertificatesByAddress),
#[prost(message, tag = "12")]
CertificatesWithFingerprints(super::CertificatesWithFingerprints),
#[prost(message, tag = "13")]
RequestCounts(super::RequestCounts),
#[prost(message, tag = "14")]
MaxConnectionsPerIpLimit(super::MaxConnectionsPerIpLimit),
#[prost(message, tag = "15")]
HealthChecksList(super::HealthChecksList),
#[prost(message, tag = "16")]
MetricDetailStatus(super::MetricDetailStatus),
#[prost(message, tag = "17")]
WorkerMetricDetailStatus(super::WorkerMetricDetailStatus),
}
}
#[derive(::serde::Serialize, ::serde::Deserialize)]
#[derive(Ord, PartialOrd)]
#[derive(Hash, Eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct HealthChecksList {
#[prost(btree_map = "string, message", tag = "1")]
pub map: ::prost::alloc::collections::BTreeMap<
::prost::alloc::string::String,
HealthCheckConfig,
>,
}
#[derive(::serde::Serialize, ::serde::Deserialize)]
#[derive(Ord, PartialOrd)]
#[derive(Hash, Eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct WorkerResponses {
#[prost(btree_map = "string, message", tag = "1")]
pub map: ::prost::alloc::collections::BTreeMap<
::prost::alloc::string::String,
ResponseContent,
>,
}
#[derive(::serde::Serialize, ::serde::Deserialize)]
#[derive(Ord, PartialOrd)]
#[derive(Hash, Eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct ListedFrontends {
#[prost(message, repeated, tag = "1")]
pub http_frontends: ::prost::alloc::vec::Vec<RequestHttpFrontend>,
#[prost(message, repeated, tag = "2")]
pub https_frontends: ::prost::alloc::vec::Vec<RequestHttpFrontend>,
#[prost(message, repeated, tag = "3")]
pub tcp_frontends: ::prost::alloc::vec::Vec<RequestTcpFrontend>,
}
#[derive(::serde::Serialize, ::serde::Deserialize)]
#[derive(Ord, PartialOrd)]
#[derive(Hash, Eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct ClusterInformations {
#[prost(message, repeated, tag = "1")]
pub vec: ::prost::alloc::vec::Vec<ClusterInformation>,
}
#[derive(::serde::Serialize, ::serde::Deserialize)]
#[derive(Ord, PartialOrd)]
#[derive(Hash, Eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct ClusterInformation {
#[prost(message, optional, tag = "1")]
pub configuration: ::core::option::Option<Cluster>,
#[prost(message, repeated, tag = "2")]
pub http_frontends: ::prost::alloc::vec::Vec<RequestHttpFrontend>,
#[prost(message, repeated, tag = "3")]
pub https_frontends: ::prost::alloc::vec::Vec<RequestHttpFrontend>,
#[prost(message, repeated, tag = "4")]
pub tcp_frontends: ::prost::alloc::vec::Vec<RequestTcpFrontend>,
#[prost(message, repeated, tag = "5")]
pub backends: ::prost::alloc::vec::Vec<AddBackend>,
}
#[derive(::serde::Serialize, ::serde::Deserialize)]
#[derive(Ord, PartialOrd)]
#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
pub struct Event {
#[prost(enumeration = "EventKind", required, tag = "1")]
pub kind: i32,
#[prost(string, optional, tag = "2")]
pub cluster_id: ::core::option::Option<::prost::alloc::string::String>,
#[prost(string, optional, tag = "3")]
pub backend_id: ::core::option::Option<::prost::alloc::string::String>,
#[prost(message, optional, tag = "4")]
pub address: ::core::option::Option<SocketAddress>,
#[prost(message, optional, tag = "5")]
pub metric_detail: ::core::option::Option<MetricDetailTransition>,
}
#[derive(::serde::Serialize, ::serde::Deserialize)]
#[derive(Ord, PartialOrd)]
#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
pub struct MetricDetailTransition {
#[prost(enumeration = "MetricDetail", required, tag = "1")]
pub previous_effective: i32,
#[prost(enumeration = "MetricDetail", required, tag = "2")]
pub effective: i32,
#[prost(string, required, tag = "3")]
pub transition_kind: ::prost::alloc::string::String,
#[prost(string, optional, tag = "4")]
pub client_id: ::core::option::Option<::prost::alloc::string::String>,
}
#[derive(::serde::Serialize, ::serde::Deserialize)]
#[derive(Ord, PartialOrd)]
#[derive(Hash, Eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct ClusterHashes {
#[prost(btree_map = "string, uint64", tag = "1")]
pub map: ::prost::alloc::collections::BTreeMap<::prost::alloc::string::String, u64>,
}
#[derive(::serde::Serialize, ::serde::Deserialize)]
#[derive(Ord, PartialOrd)]
#[derive(Hash, Eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct WorkerInfos {
#[prost(message, repeated, tag = "1")]
pub vec: ::prost::alloc::vec::Vec<WorkerInfo>,
}
#[derive(::serde::Serialize, ::serde::Deserialize)]
#[derive(Ord, PartialOrd)]
#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
pub struct WorkerInfo {
#[prost(uint32, required, tag = "1")]
pub id: u32,
#[prost(int32, required, tag = "2")]
pub pid: i32,
#[prost(enumeration = "RunState", required, tag = "3")]
pub run_state: i32,
}
#[derive(::serde::Serialize, ::serde::Deserialize)]
#[derive(Ord, PartialOrd)]
#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
pub struct AvailableMetrics {
#[prost(string, repeated, tag = "1")]
pub proxy_metrics: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
#[prost(string, repeated, tag = "2")]
pub cluster_metrics: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
}
#[derive(::serde::Serialize, ::serde::Deserialize)]
#[derive(Ord, PartialOrd)]
#[derive(Hash, Eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct AggregatedMetrics {
#[prost(btree_map = "string, message", tag = "1")]
pub main: ::prost::alloc::collections::BTreeMap<
::prost::alloc::string::String,
FilteredMetrics,
>,
#[prost(btree_map = "string, message", tag = "2")]
pub workers: ::prost::alloc::collections::BTreeMap<
::prost::alloc::string::String,
WorkerMetrics,
>,
#[prost(btree_map = "string, message", tag = "3")]
pub clusters: ::prost::alloc::collections::BTreeMap<
::prost::alloc::string::String,
ClusterMetrics,
>,
#[prost(btree_map = "string, message", tag = "4")]
pub proxying: ::prost::alloc::collections::BTreeMap<
::prost::alloc::string::String,
FilteredMetrics,
>,
}
#[derive(::serde::Serialize, ::serde::Deserialize)]
#[derive(Ord, PartialOrd)]
#[derive(Hash, Eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct WorkerMetrics {
#[prost(btree_map = "string, message", tag = "1")]
pub proxy: ::prost::alloc::collections::BTreeMap<
::prost::alloc::string::String,
FilteredMetrics,
>,
#[prost(btree_map = "string, message", tag = "2")]
pub clusters: ::prost::alloc::collections::BTreeMap<
::prost::alloc::string::String,
ClusterMetrics,
>,
}
#[derive(::serde::Serialize, ::serde::Deserialize)]
#[derive(Ord, PartialOrd)]
#[derive(Hash, Eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct ClusterMetrics {
#[prost(btree_map = "string, message", tag = "1")]
pub cluster: ::prost::alloc::collections::BTreeMap<
::prost::alloc::string::String,
FilteredMetrics,
>,
#[prost(message, repeated, tag = "2")]
pub backends: ::prost::alloc::vec::Vec<BackendMetrics>,
}
#[derive(::serde::Serialize, ::serde::Deserialize)]
#[derive(Ord, PartialOrd)]
#[derive(Hash, Eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct BackendMetrics {
#[prost(string, required, tag = "1")]
pub backend_id: ::prost::alloc::string::String,
#[prost(btree_map = "string, message", tag = "2")]
pub metrics: ::prost::alloc::collections::BTreeMap<
::prost::alloc::string::String,
FilteredMetrics,
>,
}
#[derive(::serde::Serialize, ::serde::Deserialize)]
#[derive(Ord, PartialOrd)]
#[derive(Hash, Eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct FilteredMetrics {
#[prost(oneof = "filtered_metrics::Inner", tags = "1, 2, 3, 4, 5, 6")]
pub inner: ::core::option::Option<filtered_metrics::Inner>,
}
pub mod filtered_metrics {
#[derive(::serde::Serialize, ::serde::Deserialize)]
#[serde(rename_all = "SCREAMING_SNAKE_CASE")]
#[derive(Hash, Eq, Ord, PartialOrd)]
#[derive(Clone, PartialEq, ::prost::Oneof)]
pub enum Inner {
#[prost(uint64, tag = "1")]
Gauge(u64),
#[prost(int64, tag = "2")]
Count(i64),
#[prost(uint64, tag = "3")]
Time(u64),
#[prost(message, tag = "4")]
Percentiles(super::Percentiles),
#[prost(message, tag = "5")]
TimeSerie(super::FilteredTimeSerie),
#[prost(message, tag = "6")]
Histogram(super::FilteredHistogram),
}
}
#[derive(::serde::Serialize, ::serde::Deserialize)]
#[derive(Ord, PartialOrd)]
#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
pub struct FilteredTimeSerie {
#[prost(uint32, required, tag = "1")]
pub last_second: u32,
#[prost(uint32, repeated, packed = "false", tag = "2")]
pub last_minute: ::prost::alloc::vec::Vec<u32>,
#[prost(uint32, repeated, packed = "false", tag = "3")]
pub last_hour: ::prost::alloc::vec::Vec<u32>,
}
#[derive(::serde::Serialize, ::serde::Deserialize)]
#[derive(Ord, PartialOrd)]
#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
pub struct Percentiles {
#[prost(uint64, required, tag = "1")]
pub samples: u64,
#[prost(uint64, required, tag = "2")]
pub p_50: u64,
#[prost(uint64, required, tag = "3")]
pub p_90: u64,
#[prost(uint64, required, tag = "4")]
pub p_99: u64,
#[prost(uint64, required, tag = "5")]
pub p_99_9: u64,
#[prost(uint64, required, tag = "6")]
pub p_99_99: u64,
#[prost(uint64, required, tag = "7")]
pub p_99_999: u64,
#[prost(uint64, required, tag = "8")]
pub p_100: u64,
#[prost(uint64, required, tag = "9")]
pub sum: u64,
}
#[derive(::serde::Serialize, ::serde::Deserialize)]
#[derive(Ord, PartialOrd)]
#[derive(Hash, Eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct FilteredHistogram {
#[prost(uint64, required, tag = "1")]
pub sum: u64,
#[prost(uint64, required, tag = "2")]
pub count: u64,
#[prost(message, repeated, tag = "3")]
pub buckets: ::prost::alloc::vec::Vec<Bucket>,
}
#[derive(::serde::Serialize, ::serde::Deserialize)]
#[derive(Ord, PartialOrd)]
#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
pub struct Bucket {
#[prost(uint64, required, tag = "1")]
pub count: u64,
#[prost(uint64, required, tag = "2")]
pub le: u64,
}
#[derive(::serde::Serialize, ::serde::Deserialize)]
#[derive(Ord, PartialOrd)]
#[derive(Hash, Eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct RequestCounts {
#[prost(btree_map = "string, int32", tag = "1")]
pub map: ::prost::alloc::collections::BTreeMap<::prost::alloc::string::String, i32>,
}
#[derive(::serde::Serialize, ::serde::Deserialize)]
#[derive(Ord, PartialOrd)]
#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
pub struct MaxConnectionsPerIpLimit {
#[prost(uint64, required, tag = "1")]
pub limit: u64,
}
#[derive(::serde::Serialize, ::serde::Deserialize)]
#[derive(Ord, PartialOrd)]
#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
pub struct SocketAddress {
#[prost(message, required, tag = "1")]
pub ip: IpAddress,
#[prost(uint32, required, tag = "2")]
pub port: u32,
}
#[derive(::serde::Serialize, ::serde::Deserialize)]
#[derive(Ord, PartialOrd)]
#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
pub struct IpAddress {
#[prost(oneof = "ip_address::Inner", tags = "1, 2")]
pub inner: ::core::option::Option<ip_address::Inner>,
}
pub mod ip_address {
#[derive(::serde::Serialize, ::serde::Deserialize)]
#[serde(rename_all = "SCREAMING_SNAKE_CASE")]
#[derive(Ord, PartialOrd)]
#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Oneof)]
pub enum Inner {
#[prost(fixed32, tag = "1")]
V4(u32),
#[prost(message, tag = "2")]
V6(super::Uint128),
}
}
#[derive(::serde::Serialize, ::serde::Deserialize)]
#[derive(Ord, PartialOrd)]
#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
pub struct Uint128 {
#[prost(uint64, required, tag = "1")]
pub low: u64,
#[prost(uint64, required, tag = "2")]
pub high: u64,
}
#[derive(::serde::Serialize, ::serde::Deserialize)]
#[derive(Ord, PartialOrd)]
#[derive(Hash, Eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct WorkerRequest {
#[prost(string, required, tag = "1")]
pub id: ::prost::alloc::string::String,
#[prost(message, required, tag = "2")]
pub content: Request,
}
#[derive(::serde::Serialize, ::serde::Deserialize)]
#[derive(Ord, PartialOrd)]
#[derive(Hash, Eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct WorkerResponse {
#[prost(string, required, tag = "1")]
pub id: ::prost::alloc::string::String,
#[prost(enumeration = "ResponseStatus", required, tag = "2")]
pub status: i32,
#[prost(string, required, tag = "3")]
pub message: ::prost::alloc::string::String,
#[prost(message, optional, tag = "4")]
pub content: ::core::option::Option<ResponseContent>,
}
#[derive(::serde::Serialize, ::serde::Deserialize)]
#[derive(Ord, PartialOrd)]
#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
pub struct SetMetricDetail {
#[prost(string, required, tag = "1")]
pub client_id: ::prost::alloc::string::String,
#[prost(enumeration = "MetricDetail", optional, tag = "2")]
pub detail: ::core::option::Option<i32>,
#[prost(uint32, optional, tag = "3")]
pub ttl_seconds: ::core::option::Option<u32>,
#[prost(bool, optional, tag = "4")]
pub clear: ::core::option::Option<bool>,
#[prost(string, optional, tag = "5")]
pub reason: ::core::option::Option<::prost::alloc::string::String>,
#[prost(int32, optional, tag = "6")]
pub peer_pid: ::core::option::Option<i32>,
#[prost(string, optional, tag = "7")]
pub peer_session_ulid: ::core::option::Option<::prost::alloc::string::String>,
}
#[derive(::serde::Serialize, ::serde::Deserialize)]
#[derive(Ord, PartialOrd)]
#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
pub struct WorkerMetricDetailStatus {
#[prost(enumeration = "MetricDetail", required, tag = "1")]
pub configured: i32,
#[prost(enumeration = "MetricDetail", required, tag = "2")]
pub effective: i32,
#[prost(enumeration = "MetricDetail", required, tag = "3")]
pub previous_effective: i32,
#[prost(uint32, required, tag = "4")]
pub active_lease_count: u32,
}
#[derive(::serde::Serialize, ::serde::Deserialize)]
#[derive(Ord, PartialOrd)]
#[derive(Hash, Eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct MetricDetailStatus {
#[prost(enumeration = "MetricDetail", required, tag = "1")]
pub configured: i32,
#[prost(enumeration = "MetricDetail", required, tag = "2")]
pub effective: i32,
#[prost(enumeration = "MetricDetail", required, tag = "3")]
pub previous_effective: i32,
#[prost(btree_map = "string, message", tag = "4")]
pub workers: ::prost::alloc::collections::BTreeMap<
::prost::alloc::string::String,
WorkerMetricDetailStatus,
>,
}
#[derive(::serde::Serialize, ::serde::Deserialize)]
#[derive(Ord, PartialOrd)]
#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
pub struct ServerMetricsConfig {
#[prost(string, required, tag = "1")]
pub address: ::prost::alloc::string::String,
#[prost(bool, required, tag = "2")]
pub tagged_metrics: bool,
#[prost(string, optional, tag = "3")]
pub prefix: ::core::option::Option<::prost::alloc::string::String>,
#[prost(enumeration = "MetricDetail", optional, tag = "4")]
pub detail: ::core::option::Option<i32>,
}
#[derive(::serde::Serialize, ::serde::Deserialize)]
#[derive(Ord, PartialOrd)]
#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
pub struct ServerConfig {
#[prost(uint64, required, tag = "1", default = "10000")]
pub max_connections: u64,
#[prost(uint32, required, tag = "2", default = "60")]
pub front_timeout: u32,
#[prost(uint32, required, tag = "3", default = "30")]
pub back_timeout: u32,
#[prost(uint32, required, tag = "4", default = "3")]
pub connect_timeout: u32,
#[prost(uint32, required, tag = "5", default = "1800")]
pub zombie_check_interval: u32,
#[prost(uint32, required, tag = "6", default = "60")]
pub accept_queue_timeout: u32,
#[prost(uint64, required, tag = "7", default = "1")]
pub min_buffers: u64,
#[prost(uint64, required, tag = "8", default = "1000")]
pub max_buffers: u64,
#[prost(uint64, required, tag = "9", default = "16393")]
pub buffer_size: u64,
#[prost(string, required, tag = "10", default = "info")]
pub log_level: ::prost::alloc::string::String,
#[prost(string, required, tag = "11", default = "stdout")]
pub log_target: ::prost::alloc::string::String,
#[prost(string, optional, tag = "12")]
pub access_logs_target: ::core::option::Option<::prost::alloc::string::String>,
#[prost(uint64, required, tag = "13", default = "1000000")]
pub command_buffer_size: u64,
#[prost(uint64, required, tag = "14", default = "2000000")]
pub max_command_buffer_size: u64,
#[prost(message, optional, tag = "15")]
pub metrics: ::core::option::Option<ServerMetricsConfig>,
#[prost(enumeration = "ProtobufAccessLogFormat", required, tag = "16")]
pub access_log_format: i32,
#[prost(bool, required, tag = "17")]
pub log_colored: bool,
#[prost(string, optional, tag = "18")]
pub audit_logs_target: ::core::option::Option<::prost::alloc::string::String>,
#[prost(string, optional, tag = "19")]
pub audit_logs_json_target: ::core::option::Option<::prost::alloc::string::String>,
#[prost(uint64, optional, tag = "20")]
pub slab_entries_per_connection: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "21")]
pub basic_auth_max_credential_bytes: ::core::option::Option<u64>,
#[prost(bool, optional, tag = "22", default = "false")]
pub evict_on_queue_full: ::core::option::Option<bool>,
#[prost(uint64, optional, tag = "23", default = "0")]
pub max_connections_per_ip: ::core::option::Option<u64>,
#[prost(uint32, optional, tag = "24", default = "60")]
pub retry_after: ::core::option::Option<u32>,
#[prost(uint64, optional, tag = "25")]
pub splice_pipe_capacity_bytes: ::core::option::Option<u64>,
}
#[derive(::serde::Serialize, ::serde::Deserialize)]
#[derive(Ord, PartialOrd)]
#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
pub struct ListenersCount {
#[prost(string, repeated, tag = "1")]
pub http: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
#[prost(string, repeated, tag = "2")]
pub tls: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
#[prost(string, repeated, tag = "3")]
pub tcp: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
}
#[derive(::serde::Serialize, ::serde::Deserialize)]
#[derive(Ord, PartialOrd)]
#[derive(Hash, Eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct InitialState {
#[prost(message, repeated, tag = "1")]
pub requests: ::prost::alloc::vec::Vec<WorkerRequest>,
}
#[derive(::serde::Serialize, ::serde::Deserialize)]
#[derive(Ord, PartialOrd)]
#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
pub struct OpenTelemetry {
#[prost(string, required, tag = "1")]
pub trace_id: ::prost::alloc::string::String,
#[prost(string, required, tag = "2")]
pub span_id: ::prost::alloc::string::String,
#[prost(string, optional, tag = "3")]
pub parent_span_id: ::core::option::Option<::prost::alloc::string::String>,
}
#[derive(::serde::Serialize, ::serde::Deserialize)]
#[derive(Ord, PartialOrd)]
#[derive(Hash, Eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct ProtobufAccessLog {
#[prost(string, optional, tag = "1")]
pub message: ::core::option::Option<::prost::alloc::string::String>,
#[prost(message, required, tag = "2")]
pub request_id: Uint128,
#[prost(string, optional, tag = "3")]
pub cluster_id: ::core::option::Option<::prost::alloc::string::String>,
#[prost(string, optional, tag = "4")]
pub backend_id: ::core::option::Option<::prost::alloc::string::String>,
#[prost(message, optional, tag = "5")]
pub session_address: ::core::option::Option<SocketAddress>,
#[prost(message, optional, tag = "6")]
pub backend_address: ::core::option::Option<SocketAddress>,
#[prost(string, required, tag = "7")]
pub protocol: ::prost::alloc::string::String,
#[prost(message, required, tag = "8")]
pub endpoint: ProtobufEndpoint,
#[prost(uint64, optional, tag = "9")]
pub client_rtt: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "10")]
pub server_rtt: ::core::option::Option<u64>,
#[prost(uint64, required, tag = "13")]
pub service_time: u64,
#[prost(uint64, required, tag = "14")]
pub bytes_in: u64,
#[prost(uint64, required, tag = "15")]
pub bytes_out: u64,
#[prost(string, optional, tag = "16")]
pub user_agent: ::core::option::Option<::prost::alloc::string::String>,
#[prost(btree_map = "string, string", tag = "17")]
pub tags: ::prost::alloc::collections::BTreeMap<
::prost::alloc::string::String,
::prost::alloc::string::String,
>,
#[prost(string, required, tag = "18")]
pub tag: ::prost::alloc::string::String,
#[prost(message, required, tag = "19")]
pub time: Uint128,
#[prost(uint64, optional, tag = "20")]
pub request_time: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "21")]
pub response_time: ::core::option::Option<u64>,
#[prost(message, optional, tag = "22")]
pub otel: ::core::option::Option<OpenTelemetry>,
#[prost(message, optional, tag = "23")]
pub session_id: ::core::option::Option<Uint128>,
#[prost(string, optional, tag = "24")]
pub x_request_id: ::core::option::Option<::prost::alloc::string::String>,
#[prost(string, optional, tag = "25")]
pub tls_version: ::core::option::Option<::prost::alloc::string::String>,
#[prost(string, optional, tag = "26")]
pub tls_cipher: ::core::option::Option<::prost::alloc::string::String>,
#[prost(string, optional, tag = "27")]
pub tls_sni: ::core::option::Option<::prost::alloc::string::String>,
#[prost(string, optional, tag = "28")]
pub tls_alpn: ::core::option::Option<::prost::alloc::string::String>,
#[prost(string, optional, tag = "29")]
pub xff_chain: ::core::option::Option<::prost::alloc::string::String>,
}
#[derive(::serde::Serialize, ::serde::Deserialize)]
#[derive(Ord, PartialOrd)]
#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
pub struct ProtobufEndpoint {
#[prost(oneof = "protobuf_endpoint::Inner", tags = "1, 2")]
pub inner: ::core::option::Option<protobuf_endpoint::Inner>,
}
pub mod protobuf_endpoint {
#[derive(::serde::Serialize, ::serde::Deserialize)]
#[serde(rename_all = "SCREAMING_SNAKE_CASE")]
#[derive(Ord, PartialOrd)]
#[derive(Clone, PartialEq, Eq, Hash, ::prost::Oneof)]
pub enum Inner {
#[prost(message, tag = "1")]
Http(super::HttpEndpoint),
#[prost(message, tag = "2")]
Tcp(super::TcpEndpoint),
}
}
#[derive(::serde::Serialize, ::serde::Deserialize)]
#[derive(Ord, PartialOrd)]
#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
pub struct HttpEndpoint {
#[prost(string, optional, tag = "1")]
pub method: ::core::option::Option<::prost::alloc::string::String>,
#[prost(string, optional, tag = "2")]
pub authority: ::core::option::Option<::prost::alloc::string::String>,
#[prost(string, optional, tag = "3")]
pub path: ::core::option::Option<::prost::alloc::string::String>,
#[prost(uint32, optional, tag = "4")]
pub status: ::core::option::Option<u32>,
#[prost(string, optional, tag = "5")]
pub reason: ::core::option::Option<::prost::alloc::string::String>,
}
#[derive(::serde::Serialize, ::serde::Deserialize)]
#[derive(Ord, PartialOrd)]
#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
pub struct TcpEndpoint {}
#[derive(::serde::Serialize, ::serde::Deserialize)]
#[serde(rename_all = "SCREAMING_SNAKE_CASE")]
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
#[repr(i32)]
pub enum ListenerType {
Http = 0,
Https = 1,
Tcp = 2,
}
impl ListenerType {
pub fn as_str_name(&self) -> &'static str {
match self {
Self::Http => "HTTP",
Self::Https => "HTTPS",
Self::Tcp => "TCP",
}
}
pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
match value {
"HTTP" => Some(Self::Http),
"HTTPS" => Some(Self::Https),
"TCP" => Some(Self::Tcp),
_ => None,
}
}
}
#[derive(::serde::Serialize, ::serde::Deserialize)]
#[serde(rename_all = "SCREAMING_SNAKE_CASE")]
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
#[repr(i32)]
pub enum RedirectPolicy {
Forward = 0,
Permanent = 1,
Unauthorized = 2,
Found = 3,
PermanentRedirect = 4,
}
impl RedirectPolicy {
pub fn as_str_name(&self) -> &'static str {
match self {
Self::Forward => "FORWARD",
Self::Permanent => "PERMANENT",
Self::Unauthorized => "UNAUTHORIZED",
Self::Found => "FOUND",
Self::PermanentRedirect => "PERMANENT_REDIRECT",
}
}
pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
match value {
"FORWARD" => Some(Self::Forward),
"PERMANENT" => Some(Self::Permanent),
"UNAUTHORIZED" => Some(Self::Unauthorized),
"FOUND" => Some(Self::Found),
"PERMANENT_REDIRECT" => Some(Self::PermanentRedirect),
_ => None,
}
}
}
#[derive(::serde::Serialize, ::serde::Deserialize)]
#[serde(rename_all = "SCREAMING_SNAKE_CASE")]
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
#[repr(i32)]
pub enum RedirectScheme {
UseSame = 0,
UseHttp = 1,
UseHttps = 2,
}
impl RedirectScheme {
pub fn as_str_name(&self) -> &'static str {
match self {
Self::UseSame => "USE_SAME",
Self::UseHttp => "USE_HTTP",
Self::UseHttps => "USE_HTTPS",
}
}
pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
match value {
"USE_SAME" => Some(Self::UseSame),
"USE_HTTP" => Some(Self::UseHttp),
"USE_HTTPS" => Some(Self::UseHttps),
_ => None,
}
}
}
#[derive(::serde::Serialize, ::serde::Deserialize)]
#[serde(rename_all = "SCREAMING_SNAKE_CASE")]
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
#[repr(i32)]
pub enum HeaderPosition {
Unspecified = 0,
Request = 1,
Response = 2,
Both = 3,
}
impl HeaderPosition {
pub fn as_str_name(&self) -> &'static str {
match self {
Self::Unspecified => "HEADER_POSITION_UNSPECIFIED",
Self::Request => "REQUEST",
Self::Response => "RESPONSE",
Self::Both => "BOTH",
}
}
pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
match value {
"HEADER_POSITION_UNSPECIFIED" => Some(Self::Unspecified),
"REQUEST" => Some(Self::Request),
"RESPONSE" => Some(Self::Response),
"BOTH" => Some(Self::Both),
_ => None,
}
}
}
#[derive(::serde::Serialize, ::serde::Deserialize)]
#[serde(rename_all = "SCREAMING_SNAKE_CASE")]
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
#[repr(i32)]
pub enum PathRuleKind {
Prefix = 0,
Regex = 1,
Equals = 2,
}
impl PathRuleKind {
pub fn as_str_name(&self) -> &'static str {
match self {
Self::Prefix => "PREFIX",
Self::Regex => "REGEX",
Self::Equals => "EQUALS",
}
}
pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
match value {
"PREFIX" => Some(Self::Prefix),
"REGEX" => Some(Self::Regex),
"EQUALS" => Some(Self::Equals),
_ => None,
}
}
}
#[derive(::serde::Serialize, ::serde::Deserialize)]
#[serde(rename_all = "SCREAMING_SNAKE_CASE")]
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
#[repr(i32)]
pub enum RulePosition {
Pre = 0,
Post = 1,
Tree = 2,
}
impl RulePosition {
pub fn as_str_name(&self) -> &'static str {
match self {
Self::Pre => "PRE",
Self::Post => "POST",
Self::Tree => "TREE",
}
}
pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
match value {
"PRE" => Some(Self::Pre),
"POST" => Some(Self::Post),
"TREE" => Some(Self::Tree),
_ => None,
}
}
}
#[derive(::serde::Serialize, ::serde::Deserialize)]
#[serde(rename_all = "SCREAMING_SNAKE_CASE")]
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
#[repr(i32)]
pub enum TlsVersion {
SslV2 = 0,
SslV3 = 1,
TlsV10 = 2,
TlsV11 = 3,
TlsV12 = 4,
TlsV13 = 5,
}
impl TlsVersion {
pub fn as_str_name(&self) -> &'static str {
match self {
Self::SslV2 => "SSL_V2",
Self::SslV3 => "SSL_V3",
Self::TlsV10 => "TLS_V1_0",
Self::TlsV11 => "TLS_V1_1",
Self::TlsV12 => "TLS_V1_2",
Self::TlsV13 => "TLS_V1_3",
}
}
pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
match value {
"SSL_V2" => Some(Self::SslV2),
"SSL_V3" => Some(Self::SslV3),
"TLS_V1_0" => Some(Self::TlsV10),
"TLS_V1_1" => Some(Self::TlsV11),
"TLS_V1_2" => Some(Self::TlsV12),
"TLS_V1_3" => Some(Self::TlsV13),
_ => None,
}
}
}
#[derive(::serde::Serialize, ::serde::Deserialize)]
#[serde(rename_all = "SCREAMING_SNAKE_CASE")]
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
#[repr(i32)]
pub enum LoadBalancingAlgorithms {
RoundRobin = 0,
Random = 1,
LeastLoaded = 2,
PowerOfTwo = 3,
}
impl LoadBalancingAlgorithms {
pub fn as_str_name(&self) -> &'static str {
match self {
Self::RoundRobin => "ROUND_ROBIN",
Self::Random => "RANDOM",
Self::LeastLoaded => "LEAST_LOADED",
Self::PowerOfTwo => "POWER_OF_TWO",
}
}
pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
match value {
"ROUND_ROBIN" => Some(Self::RoundRobin),
"RANDOM" => Some(Self::Random),
"LEAST_LOADED" => Some(Self::LeastLoaded),
"POWER_OF_TWO" => Some(Self::PowerOfTwo),
_ => None,
}
}
}
#[derive(::serde::Serialize, ::serde::Deserialize)]
#[serde(rename_all = "SCREAMING_SNAKE_CASE")]
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
#[repr(i32)]
pub enum ProxyProtocolConfig {
ExpectHeader = 0,
SendHeader = 1,
RelayHeader = 2,
}
impl ProxyProtocolConfig {
pub fn as_str_name(&self) -> &'static str {
match self {
Self::ExpectHeader => "EXPECT_HEADER",
Self::SendHeader => "SEND_HEADER",
Self::RelayHeader => "RELAY_HEADER",
}
}
pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
match value {
"EXPECT_HEADER" => Some(Self::ExpectHeader),
"SEND_HEADER" => Some(Self::SendHeader),
"RELAY_HEADER" => Some(Self::RelayHeader),
_ => None,
}
}
}
#[derive(::serde::Serialize, ::serde::Deserialize)]
#[serde(rename_all = "SCREAMING_SNAKE_CASE")]
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
#[repr(i32)]
pub enum LoadMetric {
Connections = 0,
Requests = 1,
ConnectionTime = 2,
}
impl LoadMetric {
pub fn as_str_name(&self) -> &'static str {
match self {
Self::Connections => "CONNECTIONS",
Self::Requests => "REQUESTS",
Self::ConnectionTime => "CONNECTION_TIME",
}
}
pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
match value {
"CONNECTIONS" => Some(Self::Connections),
"REQUESTS" => Some(Self::Requests),
"CONNECTION_TIME" => Some(Self::ConnectionTime),
_ => None,
}
}
}
#[derive(::serde::Serialize, ::serde::Deserialize)]
#[serde(rename_all = "SCREAMING_SNAKE_CASE")]
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
#[repr(i32)]
pub enum MetricsConfiguration {
Enabled = 0,
Disabled = 1,
Clear = 2,
}
impl MetricsConfiguration {
pub fn as_str_name(&self) -> &'static str {
match self {
Self::Enabled => "ENABLED",
Self::Disabled => "DISABLED",
Self::Clear => "CLEAR",
}
}
pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
match value {
"ENABLED" => Some(Self::Enabled),
"DISABLED" => Some(Self::Disabled),
"CLEAR" => Some(Self::Clear),
_ => None,
}
}
}
#[derive(::serde::Serialize, ::serde::Deserialize)]
#[serde(rename_all = "SCREAMING_SNAKE_CASE")]
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
#[repr(i32)]
pub enum EventKind {
BackendDown = 0,
BackendUp = 1,
NoAvailableBackends = 2,
RemovedBackendHasNoConnections = 3,
ClusterAdded = 4,
ClusterRemoved = 5,
FrontendAdded = 6,
FrontendRemoved = 7,
CertificateAdded = 8,
CertificateRemoved = 9,
CertificateReplaced = 10,
ListenerActivated = 11,
ListenerDeactivated = 12,
ConfigurationReloaded = 13,
WorkerKilled = 14,
WorkerRelaunched = 15,
LoggingLevelChanged = 16,
MetricsConfigured = 17,
ListenerUpdated = 18,
StateLoaded = 19,
StateSaved = 20,
ListenerAdded = 21,
ListenerRemoved = 22,
SozuStopRequested = 23,
MainUpgraded = 24,
WorkerUpgraded = 25,
EventsSubscribed = 26,
HealthCheckHealthy = 27,
HealthCheckUnhealthy = 28,
ClusterRecovered = 29,
MetricDetailChanged = 30,
}
impl EventKind {
pub fn as_str_name(&self) -> &'static str {
match self {
Self::BackendDown => "BACKEND_DOWN",
Self::BackendUp => "BACKEND_UP",
Self::NoAvailableBackends => "NO_AVAILABLE_BACKENDS",
Self::RemovedBackendHasNoConnections => "REMOVED_BACKEND_HAS_NO_CONNECTIONS",
Self::ClusterAdded => "CLUSTER_ADDED",
Self::ClusterRemoved => "CLUSTER_REMOVED",
Self::FrontendAdded => "FRONTEND_ADDED",
Self::FrontendRemoved => "FRONTEND_REMOVED",
Self::CertificateAdded => "CERTIFICATE_ADDED",
Self::CertificateRemoved => "CERTIFICATE_REMOVED",
Self::CertificateReplaced => "CERTIFICATE_REPLACED",
Self::ListenerActivated => "LISTENER_ACTIVATED",
Self::ListenerDeactivated => "LISTENER_DEACTIVATED",
Self::ConfigurationReloaded => "CONFIGURATION_RELOADED",
Self::WorkerKilled => "WORKER_KILLED",
Self::WorkerRelaunched => "WORKER_RELAUNCHED",
Self::LoggingLevelChanged => "LOGGING_LEVEL_CHANGED",
Self::MetricsConfigured => "METRICS_CONFIGURED",
Self::ListenerUpdated => "LISTENER_UPDATED",
Self::StateLoaded => "STATE_LOADED",
Self::StateSaved => "STATE_SAVED",
Self::ListenerAdded => "LISTENER_ADDED",
Self::ListenerRemoved => "LISTENER_REMOVED",
Self::SozuStopRequested => "SOZU_STOP_REQUESTED",
Self::MainUpgraded => "MAIN_UPGRADED",
Self::WorkerUpgraded => "WORKER_UPGRADED",
Self::EventsSubscribed => "EVENTS_SUBSCRIBED",
Self::HealthCheckHealthy => "HEALTH_CHECK_HEALTHY",
Self::HealthCheckUnhealthy => "HEALTH_CHECK_UNHEALTHY",
Self::ClusterRecovered => "CLUSTER_RECOVERED",
Self::MetricDetailChanged => "METRIC_DETAIL_CHANGED",
}
}
pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
match value {
"BACKEND_DOWN" => Some(Self::BackendDown),
"BACKEND_UP" => Some(Self::BackendUp),
"NO_AVAILABLE_BACKENDS" => Some(Self::NoAvailableBackends),
"REMOVED_BACKEND_HAS_NO_CONNECTIONS" => {
Some(Self::RemovedBackendHasNoConnections)
}
"CLUSTER_ADDED" => Some(Self::ClusterAdded),
"CLUSTER_REMOVED" => Some(Self::ClusterRemoved),
"FRONTEND_ADDED" => Some(Self::FrontendAdded),
"FRONTEND_REMOVED" => Some(Self::FrontendRemoved),
"CERTIFICATE_ADDED" => Some(Self::CertificateAdded),
"CERTIFICATE_REMOVED" => Some(Self::CertificateRemoved),
"CERTIFICATE_REPLACED" => Some(Self::CertificateReplaced),
"LISTENER_ACTIVATED" => Some(Self::ListenerActivated),
"LISTENER_DEACTIVATED" => Some(Self::ListenerDeactivated),
"CONFIGURATION_RELOADED" => Some(Self::ConfigurationReloaded),
"WORKER_KILLED" => Some(Self::WorkerKilled),
"WORKER_RELAUNCHED" => Some(Self::WorkerRelaunched),
"LOGGING_LEVEL_CHANGED" => Some(Self::LoggingLevelChanged),
"METRICS_CONFIGURED" => Some(Self::MetricsConfigured),
"LISTENER_UPDATED" => Some(Self::ListenerUpdated),
"STATE_LOADED" => Some(Self::StateLoaded),
"STATE_SAVED" => Some(Self::StateSaved),
"LISTENER_ADDED" => Some(Self::ListenerAdded),
"LISTENER_REMOVED" => Some(Self::ListenerRemoved),
"SOZU_STOP_REQUESTED" => Some(Self::SozuStopRequested),
"MAIN_UPGRADED" => Some(Self::MainUpgraded),
"WORKER_UPGRADED" => Some(Self::WorkerUpgraded),
"EVENTS_SUBSCRIBED" => Some(Self::EventsSubscribed),
"HEALTH_CHECK_HEALTHY" => Some(Self::HealthCheckHealthy),
"HEALTH_CHECK_UNHEALTHY" => Some(Self::HealthCheckUnhealthy),
"CLUSTER_RECOVERED" => Some(Self::ClusterRecovered),
"METRIC_DETAIL_CHANGED" => Some(Self::MetricDetailChanged),
_ => None,
}
}
}
#[derive(::serde::Serialize, ::serde::Deserialize)]
#[serde(rename_all = "SCREAMING_SNAKE_CASE")]
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
#[repr(i32)]
pub enum ResponseStatus {
Ok = 0,
Processing = 1,
Failure = 2,
}
impl ResponseStatus {
pub fn as_str_name(&self) -> &'static str {
match self {
Self::Ok => "OK",
Self::Processing => "PROCESSING",
Self::Failure => "FAILURE",
}
}
pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
match value {
"OK" => Some(Self::Ok),
"PROCESSING" => Some(Self::Processing),
"FAILURE" => Some(Self::Failure),
_ => None,
}
}
}
#[derive(::serde::Serialize, ::serde::Deserialize)]
#[serde(rename_all = "SCREAMING_SNAKE_CASE")]
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
#[repr(i32)]
pub enum RunState {
Running = 0,
Stopping = 1,
Stopped = 2,
NotAnswering = 3,
}
impl RunState {
pub fn as_str_name(&self) -> &'static str {
match self {
Self::Running => "RUNNING",
Self::Stopping => "STOPPING",
Self::Stopped => "STOPPED",
Self::NotAnswering => "NOT_ANSWERING",
}
}
pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
match value {
"RUNNING" => Some(Self::Running),
"STOPPING" => Some(Self::Stopping),
"STOPPED" => Some(Self::Stopped),
"NOT_ANSWERING" => Some(Self::NotAnswering),
_ => None,
}
}
}
#[derive(::serde::Serialize, ::serde::Deserialize)]
#[serde(rename_all = "SCREAMING_SNAKE_CASE")]
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
#[repr(i32)]
pub enum MetricDetail {
DetailProcess = 0,
DetailFrontend = 1,
DetailCluster = 2,
DetailBackend = 3,
}
impl MetricDetail {
pub fn as_str_name(&self) -> &'static str {
match self {
Self::DetailProcess => "DETAIL_PROCESS",
Self::DetailFrontend => "DETAIL_FRONTEND",
Self::DetailCluster => "DETAIL_CLUSTER",
Self::DetailBackend => "DETAIL_BACKEND",
}
}
pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
match value {
"DETAIL_PROCESS" => Some(Self::DetailProcess),
"DETAIL_FRONTEND" => Some(Self::DetailFrontend),
"DETAIL_CLUSTER" => Some(Self::DetailCluster),
"DETAIL_BACKEND" => Some(Self::DetailBackend),
_ => None,
}
}
}
#[derive(::serde::Serialize, ::serde::Deserialize)]
#[serde(rename_all = "SCREAMING_SNAKE_CASE")]
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
#[repr(i32)]
pub enum ProtobufAccessLogFormat {
Ascii = 1,
Protobuf = 2,
}
impl ProtobufAccessLogFormat {
pub fn as_str_name(&self) -> &'static str {
match self {
Self::Ascii => "Ascii",
Self::Protobuf => "Protobuf",
}
}
pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
match value {
"Ascii" => Some(Self::Ascii),
"Protobuf" => Some(Self::Protobuf),
_ => None,
}
}
}