1#[derive(::serde::Serialize, ::serde::Deserialize)]
4#[derive(Ord, PartialOrd)]
5#[derive(Eq)]
6#[derive(Hash)]
7#[derive(Clone, PartialEq, ::prost::Message)]
8pub struct Request {
9 #[prost(
10 oneof = "request::RequestType",
11 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, 56, 57, 58, 59"
12 )]
13 pub request_type: ::core::option::Option<request::RequestType>,
14}
15pub mod request {
17 #[derive(::serde::Serialize, ::serde::Deserialize)]
18 #[serde(rename_all = "SCREAMING_SNAKE_CASE")]
19 #[allow(clippy::large_enum_variant)]
20 #[derive(Hash, Eq, Ord, PartialOrd)]
21 #[derive(Clone, PartialEq, ::prost::Oneof)]
22 pub enum RequestType {
23 #[prost(string, tag = "1")]
30 SaveState(::prost::alloc::string::String),
31 #[prost(string, tag = "2")]
33 LoadState(::prost::alloc::string::String),
34 #[prost(message, tag = "4")]
36 ListWorkers(super::ListWorkers),
37 #[prost(message, tag = "5")]
39 ListFrontends(super::FrontendFilters),
40 #[prost(message, tag = "6")]
42 ListListeners(super::ListListeners),
43 #[prost(string, tag = "7")]
48 LaunchWorker(::prost::alloc::string::String),
49 #[prost(message, tag = "8")]
51 UpgradeMain(super::UpgradeMain),
52 #[prost(uint32, tag = "9")]
54 UpgradeWorker(u32),
55 #[prost(message, tag = "10")]
57 SubscribeEvents(super::SubscribeEvents),
58 #[prost(string, tag = "11")]
62 ReloadConfiguration(::prost::alloc::string::String),
63 #[prost(message, tag = "12")]
65 Status(super::Status),
66 #[prost(message, tag = "13")]
68 AddCluster(super::Cluster),
69 #[prost(string, tag = "14")]
71 RemoveCluster(::prost::alloc::string::String),
72 #[prost(message, tag = "15")]
74 AddHttpFrontend(super::RequestHttpFrontend),
75 #[prost(message, tag = "16")]
77 RemoveHttpFrontend(super::RequestHttpFrontend),
78 #[prost(message, tag = "17")]
80 AddHttpsFrontend(super::RequestHttpFrontend),
81 #[prost(message, tag = "18")]
83 RemoveHttpsFrontend(super::RequestHttpFrontend),
84 #[prost(message, tag = "19")]
86 AddCertificate(super::AddCertificate),
87 #[prost(message, tag = "20")]
89 ReplaceCertificate(super::ReplaceCertificate),
90 #[prost(message, tag = "21")]
92 RemoveCertificate(super::RemoveCertificate),
93 #[prost(message, tag = "22")]
95 AddTcpFrontend(super::RequestTcpFrontend),
96 #[prost(message, tag = "23")]
98 RemoveTcpFrontend(super::RequestTcpFrontend),
99 #[prost(message, tag = "24")]
101 AddBackend(super::AddBackend),
102 #[prost(message, tag = "25")]
104 RemoveBackend(super::RemoveBackend),
105 #[prost(message, tag = "26")]
107 AddHttpListener(super::HttpListenerConfig),
108 #[prost(message, tag = "27")]
110 AddHttpsListener(super::HttpsListenerConfig),
111 #[prost(message, tag = "28")]
113 AddTcpListener(super::TcpListenerConfig),
114 #[prost(message, tag = "29")]
116 RemoveListener(super::RemoveListener),
117 #[prost(message, tag = "30")]
119 ActivateListener(super::ActivateListener),
120 #[prost(message, tag = "31")]
122 DeactivateListener(super::DeactivateListener),
123 #[prost(string, tag = "35")]
125 QueryClusterById(::prost::alloc::string::String),
126 #[prost(message, tag = "36")]
128 QueryClustersByDomain(super::QueryClusterByDomain),
129 #[prost(message, tag = "37")]
131 QueryClustersHashes(super::QueryClustersHashes),
132 #[prost(message, tag = "38")]
134 QueryMetrics(super::QueryMetricsOptions),
135 #[prost(message, tag = "39")]
137 SoftStop(super::SoftStop),
138 #[prost(message, tag = "40")]
140 HardStop(super::HardStop),
141 #[prost(enumeration = "super::MetricsConfiguration", tag = "41")]
143 ConfigureMetrics(i32),
144 #[prost(string, tag = "42")]
146 Logging(::prost::alloc::string::String),
147 #[prost(message, tag = "43")]
149 ReturnListenSockets(super::ReturnListenSockets),
150 #[prost(message, tag = "44")]
152 QueryCertificatesFromTheState(super::QueryCertificatesFilters),
153 #[prost(message, tag = "45")]
155 QueryCertificatesFromWorkers(super::QueryCertificatesFilters),
156 #[prost(message, tag = "46")]
159 CountRequests(super::CountRequests),
160 #[prost(message, tag = "47")]
162 UpdateHttpListener(super::UpdateHttpListenerConfig),
163 #[prost(message, tag = "48")]
165 UpdateHttpsListener(super::UpdateHttpsListenerConfig),
166 #[prost(message, tag = "49")]
168 UpdateTcpListener(super::UpdateTcpListenerConfig),
169 #[prost(uint64, tag = "50")]
173 SetMaxConnectionsPerIp(u64),
174 #[prost(message, tag = "51")]
177 QueryMaxConnectionsPerIp(super::QueryMaxConnectionsPerIp),
178 #[prost(message, tag = "52")]
183 SetHealthCheck(super::SetHealthCheck),
184 #[prost(string, tag = "53")]
186 RemoveHealthCheck(::prost::alloc::string::String),
187 #[prost(message, tag = "54")]
189 QueryHealthChecks(super::QueryHealthChecks),
190 #[prost(message, tag = "55")]
197 SetMetricDetail(super::SetMetricDetail),
198 #[prost(message, tag = "56")]
200 AddUdpListener(super::UdpListenerConfig),
201 #[prost(message, tag = "57")]
203 UpdateUdpListener(super::UpdateUdpListenerConfig),
204 #[prost(message, tag = "58")]
206 AddUdpFrontend(super::RequestUdpFrontend),
207 #[prost(message, tag = "59")]
209 RemoveUdpFrontend(super::RequestUdpFrontend),
210 }
211}
212#[derive(::serde::Serialize, ::serde::Deserialize)]
213#[derive(Ord, PartialOrd)]
214#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
215pub struct QueryHealthChecks {
216 #[prost(string, optional, tag = "1")]
217 pub cluster_id: ::core::option::Option<::prost::alloc::string::String>,
218}
219#[derive(::serde::Serialize, ::serde::Deserialize)]
220#[derive(Ord, PartialOrd)]
221#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
222pub struct SetHealthCheck {
223 #[prost(string, required, tag = "1")]
224 pub cluster_id: ::prost::alloc::string::String,
225 #[prost(message, required, tag = "2")]
226 pub config: HealthCheckConfig,
227}
228#[derive(::serde::Serialize, ::serde::Deserialize)]
229#[derive(Ord, PartialOrd)]
230#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
231pub struct ListWorkers {}
232#[derive(::serde::Serialize, ::serde::Deserialize)]
233#[derive(Ord, PartialOrd)]
234#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
235pub struct ListListeners {}
236#[derive(::serde::Serialize, ::serde::Deserialize)]
237#[derive(Ord, PartialOrd)]
238#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
239pub struct UpgradeMain {}
240#[derive(::serde::Serialize, ::serde::Deserialize)]
241#[derive(Ord, PartialOrd)]
242#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
243pub struct SubscribeEvents {}
244#[derive(::serde::Serialize, ::serde::Deserialize)]
245#[derive(Ord, PartialOrd)]
246#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
247pub struct Status {}
248#[derive(::serde::Serialize, ::serde::Deserialize)]
249#[derive(Ord, PartialOrd)]
250#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
251pub struct QueryClustersHashes {}
252#[derive(::serde::Serialize, ::serde::Deserialize)]
253#[derive(Ord, PartialOrd)]
254#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
255pub struct SoftStop {}
256#[derive(::serde::Serialize, ::serde::Deserialize)]
257#[derive(Ord, PartialOrd)]
258#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
259pub struct HardStop {}
260#[derive(::serde::Serialize, ::serde::Deserialize)]
261#[derive(Ord, PartialOrd)]
262#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
263pub struct ReturnListenSockets {}
264#[derive(::serde::Serialize, ::serde::Deserialize)]
265#[derive(Ord, PartialOrd)]
266#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
267pub struct CountRequests {}
268#[derive(::serde::Serialize, ::serde::Deserialize)]
269#[derive(Ord, PartialOrd)]
270#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
271pub struct QueryMaxConnectionsPerIp {}
272#[derive(::serde::Serialize, ::serde::Deserialize)]
277#[derive(Ord, PartialOrd)]
278#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
279pub struct AlpnProtocols {
280 #[prost(string, repeated, tag = "1")]
281 pub values: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
282}
283#[derive(::serde::Serialize, ::serde::Deserialize)]
289#[derive(Ord, PartialOrd)]
290#[derive(Hash, Eq)]
291#[derive(Clone, PartialEq, ::prost::Message)]
292pub struct UpdateHttpListenerConfig {
293 #[prost(message, required, tag = "1")]
295 pub address: SocketAddress,
296 #[prost(message, optional, tag = "2")]
297 pub public_address: ::core::option::Option<SocketAddress>,
298 #[prost(bool, optional, tag = "3")]
299 pub expect_proxy: ::core::option::Option<bool>,
300 #[prost(string, optional, tag = "4")]
301 pub sticky_name: ::core::option::Option<::prost::alloc::string::String>,
302 #[prost(uint32, optional, tag = "5")]
304 pub front_timeout: ::core::option::Option<u32>,
305 #[prost(uint32, optional, tag = "6")]
307 pub back_timeout: ::core::option::Option<u32>,
308 #[prost(uint32, optional, tag = "7")]
310 pub connect_timeout: ::core::option::Option<u32>,
311 #[prost(uint32, optional, tag = "8")]
313 pub request_timeout: ::core::option::Option<u32>,
314 #[prost(message, optional, tag = "9")]
318 pub http_answers: ::core::option::Option<CustomHttpAnswers>,
319 #[prost(uint32, optional, tag = "20")]
323 pub h2_max_rst_stream_per_window: ::core::option::Option<u32>,
324 #[prost(uint32, optional, tag = "21")]
326 pub h2_max_ping_per_window: ::core::option::Option<u32>,
327 #[prost(uint32, optional, tag = "22")]
329 pub h2_max_settings_per_window: ::core::option::Option<u32>,
330 #[prost(uint32, optional, tag = "23")]
332 pub h2_max_empty_data_per_window: ::core::option::Option<u32>,
333 #[prost(uint32, optional, tag = "24")]
335 pub h2_max_continuation_frames: ::core::option::Option<u32>,
336 #[prost(uint32, optional, tag = "25")]
338 pub h2_max_glitch_count: ::core::option::Option<u32>,
339 #[prost(uint32, optional, tag = "26")]
341 pub h2_initial_connection_window: ::core::option::Option<u32>,
342 #[prost(uint32, optional, tag = "27")]
344 pub h2_max_concurrent_streams: ::core::option::Option<u32>,
345 #[prost(uint32, optional, tag = "28")]
347 pub h2_stream_shrink_ratio: ::core::option::Option<u32>,
348 #[prost(uint64, optional, tag = "29")]
350 pub h2_max_rst_stream_lifetime: ::core::option::Option<u64>,
351 #[prost(uint64, optional, tag = "30")]
353 pub h2_max_rst_stream_abusive_lifetime: ::core::option::Option<u64>,
354 #[prost(uint64, optional, tag = "31")]
356 pub h2_max_rst_stream_emitted_lifetime: ::core::option::Option<u64>,
357 #[prost(uint32, optional, tag = "32")]
359 pub h2_max_header_list_size: ::core::option::Option<u32>,
360 #[prost(uint32, optional, tag = "33")]
362 pub h2_max_header_table_size: ::core::option::Option<u32>,
363 #[prost(uint32, optional, tag = "34")]
365 pub h2_stream_idle_timeout_seconds: ::core::option::Option<u32>,
366 #[prost(uint32, optional, tag = "35")]
368 pub h2_graceful_shutdown_deadline_seconds: ::core::option::Option<u32>,
369 #[prost(uint32, optional, tag = "36")]
371 pub h2_max_window_update_stream0_per_window: ::core::option::Option<u32>,
372 #[prost(string, optional, tag = "37")]
374 pub sozu_id_header: ::core::option::Option<::prost::alloc::string::String>,
375 #[prost(btree_map = "string, string", tag = "38")]
381 pub answers: ::prost::alloc::collections::BTreeMap<
382 ::prost::alloc::string::String,
383 ::prost::alloc::string::String,
384 >,
385 #[prost(bool, optional, tag = "39")]
388 pub elide_x_real_ip: ::core::option::Option<bool>,
389 #[prost(bool, optional, tag = "40")]
392 pub send_x_real_ip: ::core::option::Option<bool>,
393 #[prost(uint32, optional, tag = "41")]
395 pub h2_max_header_fields: ::core::option::Option<u32>,
396}
397#[derive(::serde::Serialize, ::serde::Deserialize)]
405#[derive(Ord, PartialOrd)]
406#[derive(Hash, Eq)]
407#[derive(Clone, PartialEq, ::prost::Message)]
408pub struct UpdateHttpsListenerConfig {
409 #[prost(message, required, tag = "1")]
411 pub address: SocketAddress,
412 #[prost(message, optional, tag = "2")]
413 pub public_address: ::core::option::Option<SocketAddress>,
414 #[prost(bool, optional, tag = "3")]
415 pub expect_proxy: ::core::option::Option<bool>,
416 #[prost(string, optional, tag = "4")]
417 pub sticky_name: ::core::option::Option<::prost::alloc::string::String>,
418 #[prost(uint32, optional, tag = "5")]
420 pub front_timeout: ::core::option::Option<u32>,
421 #[prost(uint32, optional, tag = "6")]
423 pub back_timeout: ::core::option::Option<u32>,
424 #[prost(uint32, optional, tag = "7")]
426 pub connect_timeout: ::core::option::Option<u32>,
427 #[prost(uint32, optional, tag = "8")]
429 pub request_timeout: ::core::option::Option<u32>,
430 #[prost(message, optional, tag = "9")]
434 pub http_answers: ::core::option::Option<CustomHttpAnswers>,
435 #[prost(message, optional, tag = "10")]
440 pub alpn_protocols: ::core::option::Option<AlpnProtocols>,
441 #[prost(bool, optional, tag = "11")]
443 pub strict_sni_binding: ::core::option::Option<bool>,
444 #[prost(bool, optional, tag = "12")]
446 pub disable_http11: ::core::option::Option<bool>,
447 #[prost(uint32, optional, tag = "20")]
451 pub h2_max_rst_stream_per_window: ::core::option::Option<u32>,
452 #[prost(uint32, optional, tag = "21")]
454 pub h2_max_ping_per_window: ::core::option::Option<u32>,
455 #[prost(uint32, optional, tag = "22")]
457 pub h2_max_settings_per_window: ::core::option::Option<u32>,
458 #[prost(uint32, optional, tag = "23")]
460 pub h2_max_empty_data_per_window: ::core::option::Option<u32>,
461 #[prost(uint32, optional, tag = "24")]
463 pub h2_max_continuation_frames: ::core::option::Option<u32>,
464 #[prost(uint32, optional, tag = "25")]
466 pub h2_max_glitch_count: ::core::option::Option<u32>,
467 #[prost(uint32, optional, tag = "26")]
469 pub h2_initial_connection_window: ::core::option::Option<u32>,
470 #[prost(uint32, optional, tag = "27")]
472 pub h2_max_concurrent_streams: ::core::option::Option<u32>,
473 #[prost(uint32, optional, tag = "28")]
475 pub h2_stream_shrink_ratio: ::core::option::Option<u32>,
476 #[prost(uint64, optional, tag = "29")]
478 pub h2_max_rst_stream_lifetime: ::core::option::Option<u64>,
479 #[prost(uint64, optional, tag = "30")]
481 pub h2_max_rst_stream_abusive_lifetime: ::core::option::Option<u64>,
482 #[prost(uint64, optional, tag = "31")]
484 pub h2_max_rst_stream_emitted_lifetime: ::core::option::Option<u64>,
485 #[prost(uint32, optional, tag = "32")]
487 pub h2_max_header_list_size: ::core::option::Option<u32>,
488 #[prost(uint32, optional, tag = "33")]
490 pub h2_max_header_table_size: ::core::option::Option<u32>,
491 #[prost(uint32, optional, tag = "34")]
493 pub h2_stream_idle_timeout_seconds: ::core::option::Option<u32>,
494 #[prost(uint32, optional, tag = "35")]
496 pub h2_graceful_shutdown_deadline_seconds: ::core::option::Option<u32>,
497 #[prost(uint32, optional, tag = "36")]
499 pub h2_max_window_update_stream0_per_window: ::core::option::Option<u32>,
500 #[prost(string, optional, tag = "37")]
502 pub sozu_id_header: ::core::option::Option<::prost::alloc::string::String>,
503 #[prost(btree_map = "string, string", tag = "38")]
509 pub answers: ::prost::alloc::collections::BTreeMap<
510 ::prost::alloc::string::String,
511 ::prost::alloc::string::String,
512 >,
513 #[prost(bool, optional, tag = "39")]
516 pub elide_x_real_ip: ::core::option::Option<bool>,
517 #[prost(bool, optional, tag = "40")]
520 pub send_x_real_ip: ::core::option::Option<bool>,
521 #[prost(message, optional, tag = "41")]
529 pub hsts: ::core::option::Option<HstsConfig>,
530 #[prost(uint32, optional, tag = "42")]
532 pub h2_max_header_fields: ::core::option::Option<u32>,
533}
534#[derive(::serde::Serialize, ::serde::Deserialize)]
539#[derive(Ord, PartialOrd)]
540#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
541pub struct UpdateTcpListenerConfig {
542 #[prost(message, required, tag = "1")]
544 pub address: SocketAddress,
545 #[prost(message, optional, tag = "2")]
546 pub public_address: ::core::option::Option<SocketAddress>,
547 #[prost(bool, optional, tag = "3")]
548 pub expect_proxy: ::core::option::Option<bool>,
549 #[prost(uint32, optional, tag = "4")]
551 pub front_timeout: ::core::option::Option<u32>,
552 #[prost(uint32, optional, tag = "5")]
554 pub back_timeout: ::core::option::Option<u32>,
555 #[prost(uint32, optional, tag = "6")]
557 pub connect_timeout: ::core::option::Option<u32>,
558}
559#[derive(::serde::Serialize, ::serde::Deserialize)]
565#[derive(Ord, PartialOrd)]
566#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
567pub struct UpdateUdpListenerConfig {
568 #[prost(message, required, tag = "1")]
570 pub address: SocketAddress,
571 #[prost(message, optional, tag = "2")]
572 pub public_address: ::core::option::Option<SocketAddress>,
573 #[prost(uint32, optional, tag = "3")]
575 pub front_timeout: ::core::option::Option<u32>,
576 #[prost(uint32, optional, tag = "4")]
578 pub back_timeout: ::core::option::Option<u32>,
579 #[prost(uint32, optional, tag = "5")]
581 pub max_rx_datagram_size: ::core::option::Option<u32>,
582 #[prost(uint32, optional, tag = "6")]
584 pub max_flows: ::core::option::Option<u32>,
585}
586#[derive(::serde::Serialize, ::serde::Deserialize)]
588#[derive(Ord, PartialOrd)]
589#[derive(Hash, Eq)]
590#[derive(Clone, PartialEq, ::prost::Message)]
591pub struct HttpListenerConfig {
592 #[prost(message, required, tag = "1")]
593 pub address: SocketAddress,
594 #[prost(message, optional, tag = "2")]
595 pub public_address: ::core::option::Option<SocketAddress>,
596 #[prost(bool, required, tag = "5", default = "false")]
597 pub expect_proxy: bool,
598 #[prost(string, required, tag = "6")]
599 pub sticky_name: ::prost::alloc::string::String,
600 #[prost(uint32, required, tag = "7", default = "60")]
602 pub front_timeout: u32,
603 #[prost(uint32, required, tag = "8", default = "30")]
605 pub back_timeout: u32,
606 #[prost(uint32, required, tag = "9", default = "3")]
608 pub connect_timeout: u32,
609 #[prost(uint32, required, tag = "10", default = "10")]
611 pub request_timeout: u32,
612 #[prost(bool, required, tag = "11", default = "false")]
614 pub active: bool,
615 #[prost(message, optional, tag = "12")]
619 pub http_answers: ::core::option::Option<CustomHttpAnswers>,
620 #[prost(uint32, optional, tag = "13")]
624 pub h2_max_rst_stream_per_window: ::core::option::Option<u32>,
625 #[prost(uint32, optional, tag = "14")]
627 pub h2_max_ping_per_window: ::core::option::Option<u32>,
628 #[prost(uint32, optional, tag = "15")]
630 pub h2_max_settings_per_window: ::core::option::Option<u32>,
631 #[prost(uint32, optional, tag = "16")]
633 pub h2_max_empty_data_per_window: ::core::option::Option<u32>,
634 #[prost(uint32, optional, tag = "17")]
636 pub h2_max_continuation_frames: ::core::option::Option<u32>,
637 #[prost(uint32, optional, tag = "18")]
639 pub h2_max_glitch_count: ::core::option::Option<u32>,
640 #[prost(uint32, optional, tag = "19")]
644 pub h2_initial_connection_window: ::core::option::Option<u32>,
645 #[prost(uint32, optional, tag = "20")]
648 pub h2_max_concurrent_streams: ::core::option::Option<u32>,
649 #[prost(uint32, optional, tag = "21")]
652 pub h2_stream_shrink_ratio: ::core::option::Option<u32>,
653 #[prost(uint64, optional, tag = "22")]
656 pub h2_max_rst_stream_lifetime: ::core::option::Option<u64>,
657 #[prost(uint64, optional, tag = "23")]
661 pub h2_max_rst_stream_abusive_lifetime: ::core::option::Option<u64>,
662 #[prost(uint64, optional, tag = "27")]
670 pub h2_max_rst_stream_emitted_lifetime: ::core::option::Option<u64>,
671 #[prost(uint32, optional, tag = "24")]
674 pub h2_max_header_list_size: ::core::option::Option<u32>,
675 #[prost(uint32, optional, tag = "25")]
683 pub h2_stream_idle_timeout_seconds: ::core::option::Option<u32>,
684 #[prost(uint32, optional, tag = "26")]
688 pub h2_max_header_table_size: ::core::option::Option<u32>,
689 #[prost(uint32, optional, tag = "28")]
693 pub h2_graceful_shutdown_deadline_seconds: ::core::option::Option<u32>,
694 #[prost(uint32, optional, tag = "29")]
699 pub h2_max_window_update_stream0_per_window: ::core::option::Option<u32>,
700 #[prost(string, optional, tag = "30")]
704 pub sozu_id_header: ::core::option::Option<::prost::alloc::string::String>,
705 #[prost(btree_map = "string, string", tag = "31")]
710 #[serde(default)]
711 pub answers: ::prost::alloc::collections::BTreeMap<
712 ::prost::alloc::string::String,
713 ::prost::alloc::string::String,
714 >,
715 #[prost(bool, optional, tag = "32", default = "false")]
719 pub elide_x_real_ip: ::core::option::Option<bool>,
720 #[prost(bool, optional, tag = "33", default = "false")]
725 pub send_x_real_ip: ::core::option::Option<bool>,
726 #[prost(uint32, optional, tag = "34")]
731 pub h2_max_header_fields: ::core::option::Option<u32>,
732}
733#[derive(::serde::Serialize, ::serde::Deserialize)]
735#[derive(Ord, PartialOrd)]
736#[derive(Hash, Eq)]
737#[derive(Clone, PartialEq, ::prost::Message)]
738pub struct HttpsListenerConfig {
739 #[prost(message, required, tag = "1")]
740 pub address: SocketAddress,
741 #[prost(message, optional, tag = "2")]
742 pub public_address: ::core::option::Option<SocketAddress>,
743 #[prost(bool, required, tag = "5", default = "false")]
744 pub expect_proxy: bool,
745 #[prost(string, required, tag = "6")]
746 pub sticky_name: ::prost::alloc::string::String,
747 #[prost(uint32, required, tag = "7", default = "60")]
749 pub front_timeout: u32,
750 #[prost(uint32, required, tag = "8", default = "30")]
752 pub back_timeout: u32,
753 #[prost(uint32, required, tag = "9", default = "3")]
755 pub connect_timeout: u32,
756 #[prost(uint32, required, tag = "10", default = "10")]
758 pub request_timeout: u32,
759 #[prost(bool, required, tag = "11", default = "false")]
761 pub active: bool,
762 #[prost(enumeration = "TlsVersion", repeated, packed = "false", tag = "12")]
764 pub versions: ::prost::alloc::vec::Vec<i32>,
765 #[prost(string, repeated, tag = "13")]
766 pub cipher_list: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
767 #[prost(string, repeated, tag = "14")]
768 pub cipher_suites: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
769 #[prost(string, repeated, tag = "15")]
770 pub signature_algorithms: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
771 #[prost(string, repeated, tag = "16")]
772 pub groups_list: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
773 #[prost(string, optional, tag = "17")]
774 pub certificate: ::core::option::Option<::prost::alloc::string::String>,
775 #[prost(string, repeated, tag = "18")]
776 pub certificate_chain: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
777 #[prost(string, optional, tag = "19")]
778 pub key: ::core::option::Option<::prost::alloc::string::String>,
779 #[prost(uint64, required, tag = "20")]
783 pub send_tls13_tickets: u64,
784 #[prost(message, optional, tag = "21")]
788 pub http_answers: ::core::option::Option<CustomHttpAnswers>,
789 #[prost(string, repeated, tag = "22")]
792 #[serde(default)]
793 pub alpn_protocols: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
794 #[prost(uint32, optional, tag = "23")]
798 pub h2_max_rst_stream_per_window: ::core::option::Option<u32>,
799 #[prost(uint32, optional, tag = "24")]
801 pub h2_max_ping_per_window: ::core::option::Option<u32>,
802 #[prost(uint32, optional, tag = "25")]
804 pub h2_max_settings_per_window: ::core::option::Option<u32>,
805 #[prost(uint32, optional, tag = "26")]
807 pub h2_max_empty_data_per_window: ::core::option::Option<u32>,
808 #[prost(uint32, optional, tag = "27")]
810 pub h2_max_continuation_frames: ::core::option::Option<u32>,
811 #[prost(uint32, optional, tag = "28")]
813 pub h2_max_glitch_count: ::core::option::Option<u32>,
814 #[prost(uint32, optional, tag = "29")]
818 pub h2_initial_connection_window: ::core::option::Option<u32>,
819 #[prost(uint32, optional, tag = "30")]
822 pub h2_max_concurrent_streams: ::core::option::Option<u32>,
823 #[prost(uint32, optional, tag = "31")]
826 pub h2_stream_shrink_ratio: ::core::option::Option<u32>,
827 #[prost(uint64, optional, tag = "32")]
830 pub h2_max_rst_stream_lifetime: ::core::option::Option<u64>,
831 #[prost(uint64, optional, tag = "33")]
835 pub h2_max_rst_stream_abusive_lifetime: ::core::option::Option<u64>,
836 #[prost(uint64, optional, tag = "39")]
844 pub h2_max_rst_stream_emitted_lifetime: ::core::option::Option<u64>,
845 #[prost(uint32, optional, tag = "34")]
848 pub h2_max_header_list_size: ::core::option::Option<u32>,
849 #[prost(bool, optional, tag = "35")]
855 pub strict_sni_binding: ::core::option::Option<bool>,
856 #[prost(bool, optional, tag = "36")]
862 pub disable_http11: ::core::option::Option<bool>,
863 #[prost(uint32, optional, tag = "37")]
871 pub h2_stream_idle_timeout_seconds: ::core::option::Option<u32>,
872 #[prost(uint32, optional, tag = "38")]
876 pub h2_max_header_table_size: ::core::option::Option<u32>,
877 #[prost(uint32, optional, tag = "40")]
881 pub h2_graceful_shutdown_deadline_seconds: ::core::option::Option<u32>,
882 #[prost(uint32, optional, tag = "41")]
887 pub h2_max_window_update_stream0_per_window: ::core::option::Option<u32>,
888 #[prost(string, optional, tag = "42")]
892 pub sozu_id_header: ::core::option::Option<::prost::alloc::string::String>,
893 #[prost(btree_map = "string, string", tag = "43")]
898 #[serde(default)]
899 pub answers: ::prost::alloc::collections::BTreeMap<
900 ::prost::alloc::string::String,
901 ::prost::alloc::string::String,
902 >,
903 #[prost(bool, optional, tag = "44", default = "false")]
907 pub elide_x_real_ip: ::core::option::Option<bool>,
908 #[prost(bool, optional, tag = "45", default = "false")]
913 pub send_x_real_ip: ::core::option::Option<bool>,
914 #[prost(message, optional, tag = "46")]
921 pub hsts: ::core::option::Option<HstsConfig>,
922 #[prost(uint32, optional, tag = "47")]
927 pub h2_max_header_fields: ::core::option::Option<u32>,
928}
929#[derive(::serde::Serialize, ::serde::Deserialize)]
931#[derive(Ord, PartialOrd)]
932#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
933pub struct TcpListenerConfig {
934 #[prost(message, required, tag = "1")]
935 pub address: SocketAddress,
936 #[prost(message, optional, tag = "2")]
937 pub public_address: ::core::option::Option<SocketAddress>,
938 #[prost(bool, required, tag = "3", default = "false")]
939 pub expect_proxy: bool,
940 #[prost(uint32, required, tag = "4", default = "60")]
942 pub front_timeout: u32,
943 #[prost(uint32, required, tag = "5", default = "30")]
945 pub back_timeout: u32,
946 #[prost(uint32, required, tag = "6", default = "3")]
948 pub connect_timeout: u32,
949 #[prost(bool, required, tag = "7", default = "false")]
951 pub active: bool,
952}
953#[derive(::serde::Serialize, ::serde::Deserialize)]
955#[derive(Ord, PartialOrd)]
956#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
957pub struct UdpListenerConfig {
958 #[prost(message, required, tag = "1")]
959 pub address: SocketAddress,
960 #[prost(message, optional, tag = "2")]
961 pub public_address: ::core::option::Option<SocketAddress>,
962 #[prost(uint32, required, tag = "3", default = "30")]
964 pub front_timeout: u32,
965 #[prost(uint32, required, tag = "4", default = "30")]
967 pub back_timeout: u32,
968 #[prost(uint32, required, tag = "5", default = "1500")]
970 pub max_rx_datagram_size: u32,
971 #[prost(uint32, required, tag = "6", default = "0")]
973 pub max_flows: u32,
974 #[prost(bool, required, tag = "7", default = "false")]
976 pub active: bool,
977}
978#[derive(::serde::Serialize, ::serde::Deserialize)]
998#[derive(Ord, PartialOrd)]
999#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
1000pub struct HstsConfig {
1001 #[prost(bool, optional, tag = "1")]
1005 pub enabled: ::core::option::Option<bool>,
1006 #[prost(uint32, optional, tag = "2")]
1010 pub max_age: ::core::option::Option<u32>,
1011 #[prost(bool, optional, tag = "3")]
1013 pub include_subdomains: ::core::option::Option<bool>,
1014 #[prost(bool, optional, tag = "4")]
1017 pub preload: ::core::option::Option<bool>,
1018 #[prost(bool, optional, tag = "5")]
1035 pub force_replace_backend: ::core::option::Option<bool>,
1036}
1037#[derive(::serde::Serialize, ::serde::Deserialize)]
1039#[derive(Ord, PartialOrd)]
1040#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1041pub struct CustomHttpAnswers {
1042 #[prost(string, optional, tag = "1")]
1044 pub answer_301: ::core::option::Option<::prost::alloc::string::String>,
1045 #[prost(string, optional, tag = "2")]
1047 pub answer_400: ::core::option::Option<::prost::alloc::string::String>,
1048 #[prost(string, optional, tag = "3")]
1050 pub answer_401: ::core::option::Option<::prost::alloc::string::String>,
1051 #[prost(string, optional, tag = "4")]
1053 pub answer_404: ::core::option::Option<::prost::alloc::string::String>,
1054 #[prost(string, optional, tag = "5")]
1056 pub answer_408: ::core::option::Option<::prost::alloc::string::String>,
1057 #[prost(string, optional, tag = "6")]
1059 pub answer_413: ::core::option::Option<::prost::alloc::string::String>,
1060 #[prost(string, optional, tag = "11")]
1062 pub answer_421: ::core::option::Option<::prost::alloc::string::String>,
1063 #[prost(string, optional, tag = "7")]
1065 pub answer_502: ::core::option::Option<::prost::alloc::string::String>,
1066 #[prost(string, optional, tag = "8")]
1068 pub answer_503: ::core::option::Option<::prost::alloc::string::String>,
1069 #[prost(string, optional, tag = "9")]
1071 pub answer_504: ::core::option::Option<::prost::alloc::string::String>,
1072 #[prost(string, optional, tag = "10")]
1074 pub answer_507: ::core::option::Option<::prost::alloc::string::String>,
1075 #[prost(string, optional, tag = "12")]
1077 pub answer_429: ::core::option::Option<::prost::alloc::string::String>,
1078}
1079#[derive(::serde::Serialize, ::serde::Deserialize)]
1080#[derive(Ord, PartialOrd)]
1081#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
1082pub struct ActivateListener {
1083 #[prost(message, required, tag = "1")]
1084 pub address: SocketAddress,
1085 #[prost(enumeration = "ListenerType", required, tag = "2")]
1086 pub proxy: i32,
1087 #[prost(bool, required, tag = "3")]
1088 pub from_scm: bool,
1089}
1090#[derive(::serde::Serialize, ::serde::Deserialize)]
1091#[derive(Ord, PartialOrd)]
1092#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
1093pub struct DeactivateListener {
1094 #[prost(message, required, tag = "1")]
1095 pub address: SocketAddress,
1096 #[prost(enumeration = "ListenerType", required, tag = "2")]
1097 pub proxy: i32,
1098 #[prost(bool, required, tag = "3")]
1099 pub to_scm: bool,
1100}
1101#[derive(::serde::Serialize, ::serde::Deserialize)]
1102#[derive(Ord, PartialOrd)]
1103#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
1104pub struct RemoveListener {
1105 #[prost(message, required, tag = "1")]
1106 pub address: SocketAddress,
1107 #[prost(enumeration = "ListenerType", required, tag = "2")]
1108 pub proxy: i32,
1109}
1110#[derive(::serde::Serialize, ::serde::Deserialize)]
1112#[derive(Ord, PartialOrd)]
1113#[derive(Hash, Eq)]
1114#[derive(Clone, PartialEq, ::prost::Message)]
1115pub struct ListenersList {
1116 #[prost(btree_map = "string, message", tag = "1")]
1118 pub http_listeners: ::prost::alloc::collections::BTreeMap<
1119 ::prost::alloc::string::String,
1120 HttpListenerConfig,
1121 >,
1122 #[prost(btree_map = "string, message", tag = "2")]
1124 pub https_listeners: ::prost::alloc::collections::BTreeMap<
1125 ::prost::alloc::string::String,
1126 HttpsListenerConfig,
1127 >,
1128 #[prost(btree_map = "string, message", tag = "3")]
1130 pub tcp_listeners: ::prost::alloc::collections::BTreeMap<
1131 ::prost::alloc::string::String,
1132 TcpListenerConfig,
1133 >,
1134 #[prost(btree_map = "string, message", tag = "4")]
1136 pub udp_listeners: ::prost::alloc::collections::BTreeMap<
1137 ::prost::alloc::string::String,
1138 UdpListenerConfig,
1139 >,
1140}
1141#[derive(::serde::Serialize, ::serde::Deserialize)]
1147#[derive(Ord, PartialOrd)]
1148#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1149pub struct Header {
1150 #[prost(enumeration = "HeaderPosition", required, tag = "1")]
1151 pub position: i32,
1152 #[prost(string, required, tag = "2")]
1153 pub key: ::prost::alloc::string::String,
1154 #[prost(string, required, tag = "3")]
1156 pub val: ::prost::alloc::string::String,
1157}
1158#[derive(::serde::Serialize, ::serde::Deserialize)]
1160#[derive(Ord, PartialOrd)]
1161#[derive(Hash, Eq)]
1162#[derive(Clone, PartialEq, ::prost::Message)]
1163pub struct RequestHttpFrontend {
1164 #[prost(string, optional, tag = "1")]
1165 pub cluster_id: ::core::option::Option<::prost::alloc::string::String>,
1166 #[prost(message, required, tag = "2")]
1167 pub address: SocketAddress,
1168 #[prost(string, required, tag = "3")]
1169 pub hostname: ::prost::alloc::string::String,
1170 #[prost(message, required, tag = "4")]
1171 pub path: PathRule,
1172 #[prost(string, optional, tag = "5")]
1173 pub method: ::core::option::Option<::prost::alloc::string::String>,
1174 #[prost(enumeration = "RulePosition", required, tag = "6", default = "Tree")]
1175 pub position: i32,
1176 #[prost(btree_map = "string, string", tag = "7")]
1178 pub tags: ::prost::alloc::collections::BTreeMap<
1179 ::prost::alloc::string::String,
1180 ::prost::alloc::string::String,
1181 >,
1182 #[prost(enumeration = "RedirectPolicy", optional, tag = "8", default = "Forward")]
1184 pub redirect: ::core::option::Option<i32>,
1185 #[prost(bool, optional, tag = "9")]
1189 pub required_auth: ::core::option::Option<bool>,
1190 #[prost(enumeration = "RedirectScheme", optional, tag = "10", default = "UseSame")]
1193 pub redirect_scheme: ::core::option::Option<i32>,
1194 #[prost(string, optional, tag = "11")]
1197 pub redirect_template: ::core::option::Option<::prost::alloc::string::String>,
1198 #[prost(string, optional, tag = "12")]
1202 pub rewrite_host: ::core::option::Option<::prost::alloc::string::String>,
1203 #[prost(string, optional, tag = "13")]
1205 pub rewrite_path: ::core::option::Option<::prost::alloc::string::String>,
1206 #[prost(uint32, optional, tag = "14")]
1208 pub rewrite_port: ::core::option::Option<u32>,
1209 #[prost(message, repeated, tag = "15")]
1212 #[serde(default)]
1213 pub headers: ::prost::alloc::vec::Vec<Header>,
1214 #[prost(message, optional, tag = "16")]
1224 pub hsts: ::core::option::Option<HstsConfig>,
1225}
1226#[derive(::serde::Serialize, ::serde::Deserialize)]
1227#[derive(Ord, PartialOrd)]
1228#[derive(Hash, Eq)]
1229#[derive(Clone, PartialEq, ::prost::Message)]
1230pub struct RequestTcpFrontend {
1231 #[prost(string, required, tag = "1")]
1232 pub cluster_id: ::prost::alloc::string::String,
1233 #[prost(message, required, tag = "2")]
1235 pub address: SocketAddress,
1236 #[prost(btree_map = "string, string", tag = "3")]
1238 pub tags: ::prost::alloc::collections::BTreeMap<
1239 ::prost::alloc::string::String,
1240 ::prost::alloc::string::String,
1241 >,
1242}
1243#[derive(::serde::Serialize, ::serde::Deserialize)]
1244#[derive(Ord, PartialOrd)]
1245#[derive(Hash, Eq)]
1246#[derive(Clone, PartialEq, ::prost::Message)]
1247pub struct RequestUdpFrontend {
1248 #[prost(string, required, tag = "1")]
1249 pub cluster_id: ::prost::alloc::string::String,
1250 #[prost(message, required, tag = "2")]
1252 pub address: SocketAddress,
1253 #[prost(btree_map = "string, string", tag = "3")]
1255 #[serde(default)]
1256 pub tags: ::prost::alloc::collections::BTreeMap<
1257 ::prost::alloc::string::String,
1258 ::prost::alloc::string::String,
1259 >,
1260}
1261#[derive(::serde::Serialize, ::serde::Deserialize)]
1263#[derive(Ord, PartialOrd)]
1264#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1265pub struct FrontendFilters {
1266 #[prost(bool, required, tag = "1")]
1267 pub http: bool,
1268 #[prost(bool, required, tag = "2")]
1269 pub https: bool,
1270 #[prost(bool, required, tag = "3")]
1271 pub tcp: bool,
1272 #[prost(string, optional, tag = "4")]
1273 pub domain: ::core::option::Option<::prost::alloc::string::String>,
1274}
1275#[derive(::serde::Serialize, ::serde::Deserialize)]
1277#[derive(Ord, PartialOrd)]
1278#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1279pub struct PathRule {
1280 #[prost(enumeration = "PathRuleKind", required, tag = "1")]
1282 pub kind: i32,
1283 #[prost(string, required, tag = "2")]
1285 pub value: ::prost::alloc::string::String,
1286}
1287#[derive(::serde::Serialize, ::serde::Deserialize)]
1289#[derive(Ord, PartialOrd)]
1290#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1291pub struct AddCertificate {
1292 #[prost(message, required, tag = "1")]
1293 pub address: SocketAddress,
1294 #[prost(message, required, tag = "2")]
1295 pub certificate: CertificateAndKey,
1296 #[prost(int64, optional, tag = "3")]
1298 pub expired_at: ::core::option::Option<i64>,
1299}
1300#[derive(::serde::Serialize, ::serde::Deserialize)]
1301#[derive(Ord, PartialOrd)]
1302#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1303pub struct RemoveCertificate {
1304 #[prost(message, required, tag = "1")]
1305 pub address: SocketAddress,
1306 #[prost(string, required, tag = "2")]
1308 pub fingerprint: ::prost::alloc::string::String,
1309}
1310#[derive(::serde::Serialize, ::serde::Deserialize)]
1311#[derive(Ord, PartialOrd)]
1312#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1313pub struct ReplaceCertificate {
1314 #[prost(message, required, tag = "1")]
1315 pub address: SocketAddress,
1316 #[prost(message, required, tag = "2")]
1317 pub new_certificate: CertificateAndKey,
1318 #[prost(string, required, tag = "3")]
1320 pub old_fingerprint: ::prost::alloc::string::String,
1321 #[prost(int64, optional, tag = "4")]
1323 pub new_expired_at: ::core::option::Option<i64>,
1324}
1325#[derive(::serde::Serialize, ::serde::Deserialize)]
1326#[derive(Ord, PartialOrd)]
1327#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1328pub struct CertificateAndKey {
1329 #[prost(string, required, tag = "1")]
1330 pub certificate: ::prost::alloc::string::String,
1331 #[prost(string, repeated, tag = "2")]
1332 pub certificate_chain: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1333 #[prost(string, required, tag = "3")]
1334 pub key: ::prost::alloc::string::String,
1335 #[prost(enumeration = "TlsVersion", repeated, packed = "false", tag = "4")]
1336 pub versions: ::prost::alloc::vec::Vec<i32>,
1337 #[prost(string, repeated, tag = "5")]
1340 pub names: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1341}
1342#[derive(::serde::Serialize, ::serde::Deserialize)]
1346#[derive(Ord, PartialOrd)]
1347#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1348pub struct QueryCertificatesFilters {
1349 #[prost(string, optional, tag = "1")]
1351 pub domain: ::core::option::Option<::prost::alloc::string::String>,
1352 #[prost(string, optional, tag = "2")]
1354 pub fingerprint: ::core::option::Option<::prost::alloc::string::String>,
1355}
1356#[derive(::serde::Serialize, ::serde::Deserialize)]
1358#[derive(Ord, PartialOrd)]
1359#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1360pub struct CertificateSummary {
1361 #[prost(string, required, tag = "1")]
1362 pub domain: ::prost::alloc::string::String,
1363 #[prost(string, required, tag = "2")]
1365 pub fingerprint: ::prost::alloc::string::String,
1366}
1367#[derive(::serde::Serialize, ::serde::Deserialize)]
1369#[derive(Ord, PartialOrd)]
1370#[derive(Hash, Eq)]
1371#[derive(Clone, PartialEq, ::prost::Message)]
1372pub struct ListOfCertificatesByAddress {
1373 #[prost(message, repeated, tag = "1")]
1374 pub certificates: ::prost::alloc::vec::Vec<CertificatesByAddress>,
1375}
1376#[derive(::serde::Serialize, ::serde::Deserialize)]
1378#[derive(Ord, PartialOrd)]
1379#[derive(Hash, Eq)]
1380#[derive(Clone, PartialEq, ::prost::Message)]
1381pub struct CertificatesByAddress {
1382 #[prost(message, required, tag = "1")]
1383 pub address: SocketAddress,
1384 #[prost(message, repeated, tag = "2")]
1385 pub certificate_summaries: ::prost::alloc::vec::Vec<CertificateSummary>,
1386}
1387#[derive(::serde::Serialize, ::serde::Deserialize)]
1389#[derive(Ord, PartialOrd)]
1390#[derive(Hash, Eq)]
1391#[derive(Clone, PartialEq, ::prost::Message)]
1392pub struct CertificatesWithFingerprints {
1393 #[prost(btree_map = "string, message", tag = "1")]
1395 pub certs: ::prost::alloc::collections::BTreeMap<
1396 ::prost::alloc::string::String,
1397 CertificateAndKey,
1398 >,
1399}
1400#[derive(::serde::Serialize, ::serde::Deserialize)]
1402#[derive(Ord, PartialOrd)]
1403#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1404pub struct UdpHealthConfig {
1405 #[prost(enumeration = "UdpHealthMode", optional, tag = "1")]
1407 pub mode: ::core::option::Option<i32>,
1408 #[prost(uint32, optional, tag = "2")]
1410 pub tcp_port: ::core::option::Option<u32>,
1411 #[prost(uint32, optional, tag = "3", default = "2")]
1413 pub rise: ::core::option::Option<u32>,
1414 #[prost(uint32, optional, tag = "4", default = "3")]
1416 pub fall: ::core::option::Option<u32>,
1417 #[prost(bool, optional, tag = "5", default = "true")]
1419 pub fail_open: ::core::option::Option<bool>,
1420 #[prost(bytes = "vec", optional, tag = "6")]
1422 pub udp_probe_payload: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
1423 #[prost(uint32, optional, tag = "7", default = "5")]
1425 pub probe_interval_seconds: ::core::option::Option<u32>,
1426 #[prost(uint32, optional, tag = "8", default = "2")]
1428 pub probe_timeout_seconds: ::core::option::Option<u32>,
1429}
1430#[derive(::serde::Serialize, ::serde::Deserialize)]
1432#[derive(Ord, PartialOrd)]
1433#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1434pub struct UdpClusterConfig {
1435 #[prost(enumeration = "UdpAffinityKey", optional, tag = "1")]
1437 pub affinity_key: ::core::option::Option<i32>,
1438 #[prost(uint32, optional, tag = "2")]
1440 pub responses: ::core::option::Option<u32>,
1441 #[prost(uint32, optional, tag = "3")]
1443 pub requests: ::core::option::Option<u32>,
1444 #[prost(bool, optional, tag = "4")]
1446 pub send_proxy_protocol: ::core::option::Option<bool>,
1447 #[prost(bool, optional, tag = "5")]
1449 pub proxy_protocol_every_datagram: ::core::option::Option<bool>,
1450 #[prost(message, optional, tag = "6")]
1452 pub health: ::core::option::Option<UdpHealthConfig>,
1453}
1454#[derive(::serde::Serialize, ::serde::Deserialize)]
1456#[derive(Ord, PartialOrd)]
1457#[derive(Hash, Eq)]
1458#[derive(Clone, PartialEq, ::prost::Message)]
1459pub struct Cluster {
1460 #[prost(string, required, tag = "1")]
1461 pub cluster_id: ::prost::alloc::string::String,
1462 #[prost(bool, required, tag = "2")]
1464 pub sticky_session: bool,
1465 #[prost(bool, required, tag = "3")]
1466 pub https_redirect: bool,
1467 #[prost(enumeration = "ProxyProtocolConfig", optional, tag = "4")]
1468 pub proxy_protocol: ::core::option::Option<i32>,
1469 #[prost(
1470 enumeration = "LoadBalancingAlgorithms",
1471 required,
1472 tag = "5",
1473 default = "RoundRobin"
1474 )]
1475 pub load_balancing: i32,
1476 #[prost(string, optional, tag = "6")]
1477 pub answer_503: ::core::option::Option<::prost::alloc::string::String>,
1478 #[prost(enumeration = "LoadMetric", optional, tag = "7")]
1479 pub load_metric: ::core::option::Option<i32>,
1480 #[prost(bool, optional, tag = "8")]
1484 pub http2: ::core::option::Option<bool>,
1485 #[prost(btree_map = "string, string", tag = "9")]
1488 #[serde(default)]
1489 pub answers: ::prost::alloc::collections::BTreeMap<
1490 ::prost::alloc::string::String,
1491 ::prost::alloc::string::String,
1492 >,
1493 #[prost(uint32, optional, tag = "10")]
1498 pub https_redirect_port: ::core::option::Option<u32>,
1499 #[prost(string, repeated, tag = "11")]
1506 #[serde(default)]
1507 pub authorized_hashes: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1508 #[prost(string, optional, tag = "12")]
1512 pub www_authenticate: ::core::option::Option<::prost::alloc::string::String>,
1513 #[prost(uint64, optional, tag = "13")]
1520 pub max_connections_per_ip: ::core::option::Option<u64>,
1521 #[prost(uint32, optional, tag = "14")]
1525 pub retry_after: ::core::option::Option<u32>,
1526 #[prost(message, optional, tag = "15")]
1531 pub health_check: ::core::option::Option<HealthCheckConfig>,
1532 #[prost(message, optional, tag = "16")]
1535 pub udp: ::core::option::Option<UdpClusterConfig>,
1536}
1537#[derive(::serde::Serialize, ::serde::Deserialize)]
1538#[derive(Ord, PartialOrd)]
1539#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1540pub struct HealthCheckConfig {
1541 #[prost(string, required, tag = "1")]
1542 pub uri: ::prost::alloc::string::String,
1543 #[prost(uint32, required, tag = "2", default = "10")]
1544 pub interval: u32,
1545 #[prost(uint32, required, tag = "3", default = "5")]
1546 pub timeout: u32,
1547 #[prost(uint32, required, tag = "4", default = "3")]
1548 pub healthy_threshold: u32,
1549 #[prost(uint32, required, tag = "5", default = "3")]
1550 pub unhealthy_threshold: u32,
1551 #[prost(uint32, required, tag = "6", default = "0")]
1559 pub expected_status: u32,
1560}
1561#[derive(::serde::Serialize, ::serde::Deserialize)]
1563#[derive(Ord, PartialOrd)]
1564#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1565pub struct AddBackend {
1566 #[prost(string, required, tag = "1")]
1567 pub cluster_id: ::prost::alloc::string::String,
1568 #[prost(string, required, tag = "2")]
1569 pub backend_id: ::prost::alloc::string::String,
1570 #[prost(message, required, tag = "3")]
1572 pub address: SocketAddress,
1573 #[prost(string, optional, tag = "4")]
1574 pub sticky_id: ::core::option::Option<::prost::alloc::string::String>,
1575 #[prost(message, optional, tag = "5")]
1576 pub load_balancing_parameters: ::core::option::Option<LoadBalancingParams>,
1577 #[prost(bool, optional, tag = "6")]
1578 pub backup: ::core::option::Option<bool>,
1579}
1580#[derive(::serde::Serialize, ::serde::Deserialize)]
1582#[derive(Ord, PartialOrd)]
1583#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1584pub struct RemoveBackend {
1585 #[prost(string, required, tag = "1")]
1586 pub cluster_id: ::prost::alloc::string::String,
1587 #[prost(string, required, tag = "2")]
1588 pub backend_id: ::prost::alloc::string::String,
1589 #[prost(message, required, tag = "3")]
1591 pub address: SocketAddress,
1592}
1593#[derive(::serde::Serialize, ::serde::Deserialize)]
1594#[derive(Ord, PartialOrd)]
1595#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
1596pub struct LoadBalancingParams {
1597 #[prost(int32, required, tag = "1")]
1598 pub weight: i32,
1599}
1600#[derive(::serde::Serialize, ::serde::Deserialize)]
1601#[derive(Ord, PartialOrd)]
1602#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1603pub struct QueryClusterByDomain {
1604 #[prost(string, required, tag = "1")]
1605 pub hostname: ::prost::alloc::string::String,
1606 #[prost(string, optional, tag = "2")]
1607 pub path: ::core::option::Option<::prost::alloc::string::String>,
1608}
1609#[derive(::serde::Serialize, ::serde::Deserialize)]
1611#[derive(Ord, PartialOrd)]
1612#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1613pub struct QueryMetricsOptions {
1614 #[prost(bool, required, tag = "1")]
1616 pub list: bool,
1617 #[prost(string, repeated, tag = "2")]
1619 pub cluster_ids: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1620 #[prost(string, repeated, tag = "3")]
1622 pub backend_ids: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1623 #[prost(string, repeated, tag = "4")]
1625 pub metric_names: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1626 #[prost(bool, required, tag = "5")]
1628 pub no_clusters: bool,
1629 #[prost(bool, required, tag = "6")]
1631 pub workers: bool,
1632}
1633#[derive(::serde::Serialize, ::serde::Deserialize)]
1635#[derive(Ord, PartialOrd)]
1636#[derive(Hash, Eq)]
1637#[derive(Clone, PartialEq, ::prost::Message)]
1638pub struct Response {
1639 #[prost(enumeration = "ResponseStatus", required, tag = "1", default = "Failure")]
1641 pub status: i32,
1642 #[prost(string, required, tag = "2")]
1644 pub message: ::prost::alloc::string::String,
1645 #[prost(message, optional, tag = "3")]
1647 pub content: ::core::option::Option<ResponseContent>,
1648}
1649#[derive(::serde::Serialize, ::serde::Deserialize)]
1651#[derive(Ord, PartialOrd)]
1652#[derive(Hash, Eq)]
1653#[derive(Clone, PartialEq, ::prost::Message)]
1654pub struct ResponseContent {
1655 #[prost(
1656 oneof = "response_content::ContentType",
1657 tags = "1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17"
1658 )]
1659 pub content_type: ::core::option::Option<response_content::ContentType>,
1660}
1661pub mod response_content {
1663 #[derive(::serde::Serialize, ::serde::Deserialize)]
1664 #[serde(rename_all = "SCREAMING_SNAKE_CASE")]
1665 #[derive(Hash, Eq, Ord, PartialOrd)]
1666 #[derive(Clone, PartialEq, ::prost::Oneof)]
1667 pub enum ContentType {
1668 #[prost(message, tag = "1")]
1670 Workers(super::WorkerInfos),
1671 #[prost(message, tag = "2")]
1673 Metrics(super::AggregatedMetrics),
1674 #[prost(message, tag = "3")]
1676 WorkerResponses(super::WorkerResponses),
1677 #[prost(message, tag = "4")]
1679 Event(super::Event),
1680 #[prost(message, tag = "5")]
1682 FrontendList(super::ListedFrontends),
1683 #[prost(message, tag = "6")]
1685 ListenersList(super::ListenersList),
1686 #[prost(message, tag = "7")]
1688 WorkerMetrics(super::WorkerMetrics),
1689 #[prost(message, tag = "8")]
1691 AvailableMetrics(super::AvailableMetrics),
1692 #[prost(message, tag = "9")]
1694 Clusters(super::ClusterInformations),
1695 #[prost(message, tag = "10")]
1697 ClusterHashes(super::ClusterHashes),
1698 #[prost(message, tag = "11")]
1700 CertificatesByAddress(super::ListOfCertificatesByAddress),
1701 #[prost(message, tag = "12")]
1703 CertificatesWithFingerprints(super::CertificatesWithFingerprints),
1704 #[prost(message, tag = "13")]
1706 RequestCounts(super::RequestCounts),
1707 #[prost(message, tag = "14")]
1709 MaxConnectionsPerIpLimit(super::MaxConnectionsPerIpLimit),
1710 #[prost(message, tag = "15")]
1713 HealthChecksList(super::HealthChecksList),
1714 #[prost(message, tag = "16")]
1718 MetricDetailStatus(super::MetricDetailStatus),
1719 #[prost(message, tag = "17")]
1729 WorkerMetricDetailStatus(super::WorkerMetricDetailStatus),
1730 }
1731}
1732#[derive(::serde::Serialize, ::serde::Deserialize)]
1733#[derive(Ord, PartialOrd)]
1734#[derive(Hash, Eq)]
1735#[derive(Clone, PartialEq, ::prost::Message)]
1736pub struct HealthChecksList {
1737 #[prost(btree_map = "string, message", tag = "1")]
1738 pub map: ::prost::alloc::collections::BTreeMap<
1739 ::prost::alloc::string::String,
1740 HealthCheckConfig,
1741 >,
1742}
1743#[derive(::serde::Serialize, ::serde::Deserialize)]
1745#[derive(Ord, PartialOrd)]
1746#[derive(Hash, Eq)]
1747#[derive(Clone, PartialEq, ::prost::Message)]
1748pub struct WorkerResponses {
1749 #[prost(btree_map = "string, message", tag = "1")]
1750 pub map: ::prost::alloc::collections::BTreeMap<
1751 ::prost::alloc::string::String,
1752 ResponseContent,
1753 >,
1754}
1755#[derive(::serde::Serialize, ::serde::Deserialize)]
1757#[derive(Ord, PartialOrd)]
1758#[derive(Hash, Eq)]
1759#[derive(Clone, PartialEq, ::prost::Message)]
1760pub struct ListedFrontends {
1761 #[prost(message, repeated, tag = "1")]
1762 pub http_frontends: ::prost::alloc::vec::Vec<RequestHttpFrontend>,
1763 #[prost(message, repeated, tag = "2")]
1764 pub https_frontends: ::prost::alloc::vec::Vec<RequestHttpFrontend>,
1765 #[prost(message, repeated, tag = "3")]
1766 pub tcp_frontends: ::prost::alloc::vec::Vec<RequestTcpFrontend>,
1767 #[prost(message, repeated, tag = "4")]
1768 pub udp_frontends: ::prost::alloc::vec::Vec<RequestUdpFrontend>,
1769}
1770#[derive(::serde::Serialize, ::serde::Deserialize)]
1771#[derive(Ord, PartialOrd)]
1772#[derive(Hash, Eq)]
1773#[derive(Clone, PartialEq, ::prost::Message)]
1774pub struct ClusterInformations {
1775 #[prost(message, repeated, tag = "1")]
1776 pub vec: ::prost::alloc::vec::Vec<ClusterInformation>,
1777}
1778#[derive(::serde::Serialize, ::serde::Deserialize)]
1781#[derive(Ord, PartialOrd)]
1782#[derive(Hash, Eq)]
1783#[derive(Clone, PartialEq, ::prost::Message)]
1784pub struct ClusterInformation {
1785 #[prost(message, optional, tag = "1")]
1786 pub configuration: ::core::option::Option<Cluster>,
1787 #[prost(message, repeated, tag = "2")]
1788 pub http_frontends: ::prost::alloc::vec::Vec<RequestHttpFrontend>,
1789 #[prost(message, repeated, tag = "3")]
1790 pub https_frontends: ::prost::alloc::vec::Vec<RequestHttpFrontend>,
1791 #[prost(message, repeated, tag = "4")]
1792 pub tcp_frontends: ::prost::alloc::vec::Vec<RequestTcpFrontend>,
1793 #[prost(message, repeated, tag = "5")]
1794 pub backends: ::prost::alloc::vec::Vec<AddBackend>,
1795 #[prost(message, repeated, tag = "6")]
1796 pub udp_frontends: ::prost::alloc::vec::Vec<RequestUdpFrontend>,
1797}
1798#[derive(::serde::Serialize, ::serde::Deserialize)]
1800#[derive(Ord, PartialOrd)]
1801#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1802pub struct Event {
1803 #[prost(enumeration = "EventKind", required, tag = "1")]
1804 pub kind: i32,
1805 #[prost(string, optional, tag = "2")]
1806 pub cluster_id: ::core::option::Option<::prost::alloc::string::String>,
1807 #[prost(string, optional, tag = "3")]
1808 pub backend_id: ::core::option::Option<::prost::alloc::string::String>,
1809 #[prost(message, optional, tag = "4")]
1810 pub address: ::core::option::Option<SocketAddress>,
1811 #[prost(message, optional, tag = "5")]
1820 pub metric_detail: ::core::option::Option<MetricDetailTransition>,
1821}
1822#[derive(::serde::Serialize, ::serde::Deserialize)]
1830#[derive(Ord, PartialOrd)]
1831#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1832pub struct MetricDetailTransition {
1833 #[prost(enumeration = "MetricDetail", required, tag = "1")]
1835 pub previous_effective: i32,
1836 #[prost(enumeration = "MetricDetail", required, tag = "2")]
1838 pub effective: i32,
1839 #[prost(string, required, tag = "3")]
1846 pub transition_kind: ::prost::alloc::string::String,
1847 #[prost(string, optional, tag = "4")]
1851 pub client_id: ::core::option::Option<::prost::alloc::string::String>,
1852}
1853#[derive(::serde::Serialize, ::serde::Deserialize)]
1854#[derive(Ord, PartialOrd)]
1855#[derive(Hash, Eq)]
1856#[derive(Clone, PartialEq, ::prost::Message)]
1857pub struct ClusterHashes {
1858 #[prost(btree_map = "string, uint64", tag = "1")]
1860 pub map: ::prost::alloc::collections::BTreeMap<::prost::alloc::string::String, u64>,
1861}
1862#[derive(::serde::Serialize, ::serde::Deserialize)]
1864#[derive(Ord, PartialOrd)]
1865#[derive(Hash, Eq)]
1866#[derive(Clone, PartialEq, ::prost::Message)]
1867pub struct WorkerInfos {
1868 #[prost(message, repeated, tag = "1")]
1869 pub vec: ::prost::alloc::vec::Vec<WorkerInfo>,
1870}
1871#[derive(::serde::Serialize, ::serde::Deserialize)]
1873#[derive(Ord, PartialOrd)]
1874#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
1875pub struct WorkerInfo {
1876 #[prost(uint32, required, tag = "1")]
1877 pub id: u32,
1878 #[prost(int32, required, tag = "2")]
1879 pub pid: i32,
1880 #[prost(enumeration = "RunState", required, tag = "3")]
1881 pub run_state: i32,
1882}
1883#[derive(::serde::Serialize, ::serde::Deserialize)]
1885#[derive(Ord, PartialOrd)]
1886#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1887pub struct AvailableMetrics {
1888 #[prost(string, repeated, tag = "1")]
1889 pub proxy_metrics: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1890 #[prost(string, repeated, tag = "2")]
1891 pub cluster_metrics: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1892}
1893#[derive(::serde::Serialize, ::serde::Deserialize)]
1895#[derive(Ord, PartialOrd)]
1896#[derive(Hash, Eq)]
1897#[derive(Clone, PartialEq, ::prost::Message)]
1898pub struct AggregatedMetrics {
1899 #[prost(btree_map = "string, message", tag = "1")]
1902 pub main: ::prost::alloc::collections::BTreeMap<
1903 ::prost::alloc::string::String,
1904 FilteredMetrics,
1905 >,
1906 #[prost(btree_map = "string, message", tag = "2")]
1909 pub workers: ::prost::alloc::collections::BTreeMap<
1910 ::prost::alloc::string::String,
1911 WorkerMetrics,
1912 >,
1913 #[prost(btree_map = "string, message", tag = "3")]
1916 pub clusters: ::prost::alloc::collections::BTreeMap<
1917 ::prost::alloc::string::String,
1918 ClusterMetrics,
1919 >,
1920 #[prost(btree_map = "string, message", tag = "4")]
1923 pub proxying: ::prost::alloc::collections::BTreeMap<
1924 ::prost::alloc::string::String,
1925 FilteredMetrics,
1926 >,
1927}
1928#[derive(::serde::Serialize, ::serde::Deserialize)]
1931#[derive(Ord, PartialOrd)]
1932#[derive(Hash, Eq)]
1933#[derive(Clone, PartialEq, ::prost::Message)]
1934pub struct WorkerMetrics {
1935 #[prost(btree_map = "string, message", tag = "1")]
1937 pub proxy: ::prost::alloc::collections::BTreeMap<
1938 ::prost::alloc::string::String,
1939 FilteredMetrics,
1940 >,
1941 #[prost(btree_map = "string, message", tag = "2")]
1943 pub clusters: ::prost::alloc::collections::BTreeMap<
1944 ::prost::alloc::string::String,
1945 ClusterMetrics,
1946 >,
1947}
1948#[derive(::serde::Serialize, ::serde::Deserialize)]
1950#[derive(Ord, PartialOrd)]
1951#[derive(Hash, Eq)]
1952#[derive(Clone, PartialEq, ::prost::Message)]
1953pub struct ClusterMetrics {
1954 #[prost(btree_map = "string, message", tag = "1")]
1956 pub cluster: ::prost::alloc::collections::BTreeMap<
1957 ::prost::alloc::string::String,
1958 FilteredMetrics,
1959 >,
1960 #[prost(message, repeated, tag = "2")]
1962 pub backends: ::prost::alloc::vec::Vec<BackendMetrics>,
1963}
1964#[derive(::serde::Serialize, ::serde::Deserialize)]
1965#[derive(Ord, PartialOrd)]
1966#[derive(Hash, Eq)]
1967#[derive(Clone, PartialEq, ::prost::Message)]
1968pub struct BackendMetrics {
1969 #[prost(string, required, tag = "1")]
1970 pub backend_id: ::prost::alloc::string::String,
1971 #[prost(btree_map = "string, message", tag = "2")]
1972 pub metrics: ::prost::alloc::collections::BTreeMap<
1973 ::prost::alloc::string::String,
1974 FilteredMetrics,
1975 >,
1976}
1977#[derive(::serde::Serialize, ::serde::Deserialize)]
1979#[derive(Ord, PartialOrd)]
1980#[derive(Hash, Eq)]
1981#[derive(Clone, PartialEq, ::prost::Message)]
1982pub struct FilteredMetrics {
1983 #[prost(oneof = "filtered_metrics::Inner", tags = "1, 2, 3, 4, 5, 6")]
1984 pub inner: ::core::option::Option<filtered_metrics::Inner>,
1985}
1986pub mod filtered_metrics {
1988 #[derive(::serde::Serialize, ::serde::Deserialize)]
1989 #[serde(rename_all = "SCREAMING_SNAKE_CASE")]
1990 #[derive(Hash, Eq, Ord, PartialOrd)]
1991 #[derive(Clone, PartialEq, ::prost::Oneof)]
1992 pub enum Inner {
1993 #[prost(uint64, tag = "1")]
1995 Gauge(u64),
1996 #[prost(int64, tag = "2")]
1998 Count(i64),
1999 #[prost(uint64, tag = "3")]
2001 Time(u64),
2002 #[prost(message, tag = "4")]
2003 Percentiles(super::Percentiles),
2004 #[prost(message, tag = "5")]
2005 TimeSerie(super::FilteredTimeSerie),
2006 #[prost(message, tag = "6")]
2007 Histogram(super::FilteredHistogram),
2008 }
2009}
2010#[derive(::serde::Serialize, ::serde::Deserialize)]
2011#[derive(Ord, PartialOrd)]
2012#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2013pub struct FilteredTimeSerie {
2014 #[prost(uint32, required, tag = "1")]
2015 pub last_second: u32,
2016 #[prost(uint32, repeated, packed = "false", tag = "2")]
2017 pub last_minute: ::prost::alloc::vec::Vec<u32>,
2018 #[prost(uint32, repeated, packed = "false", tag = "3")]
2019 pub last_hour: ::prost::alloc::vec::Vec<u32>,
2020}
2021#[derive(::serde::Serialize, ::serde::Deserialize)]
2022#[derive(Ord, PartialOrd)]
2023#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
2024pub struct Percentiles {
2025 #[prost(uint64, required, tag = "1")]
2026 pub samples: u64,
2027 #[prost(uint64, required, tag = "2")]
2028 pub p_50: u64,
2029 #[prost(uint64, required, tag = "3")]
2030 pub p_90: u64,
2031 #[prost(uint64, required, tag = "4")]
2032 pub p_99: u64,
2033 #[prost(uint64, required, tag = "5")]
2034 pub p_99_9: u64,
2035 #[prost(uint64, required, tag = "6")]
2036 pub p_99_99: u64,
2037 #[prost(uint64, required, tag = "7")]
2038 pub p_99_999: u64,
2039 #[prost(uint64, required, tag = "8")]
2040 pub p_100: u64,
2041 #[prost(uint64, required, tag = "9")]
2042 pub sum: u64,
2043}
2044#[derive(::serde::Serialize, ::serde::Deserialize)]
2046#[derive(Ord, PartialOrd)]
2047#[derive(Hash, Eq)]
2048#[derive(Clone, PartialEq, ::prost::Message)]
2049pub struct FilteredHistogram {
2050 #[prost(uint64, required, tag = "1")]
2051 pub sum: u64,
2052 #[prost(uint64, required, tag = "2")]
2053 pub count: u64,
2054 #[prost(message, repeated, tag = "3")]
2055 pub buckets: ::prost::alloc::vec::Vec<Bucket>,
2056}
2057#[derive(::serde::Serialize, ::serde::Deserialize)]
2059#[derive(Ord, PartialOrd)]
2060#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
2061pub struct Bucket {
2062 #[prost(uint64, required, tag = "1")]
2063 pub count: u64,
2064 #[prost(uint64, required, tag = "2")]
2066 pub le: u64,
2067}
2068#[derive(::serde::Serialize, ::serde::Deserialize)]
2069#[derive(Ord, PartialOrd)]
2070#[derive(Hash, Eq)]
2071#[derive(Clone, PartialEq, ::prost::Message)]
2072pub struct RequestCounts {
2073 #[prost(btree_map = "string, int32", tag = "1")]
2074 pub map: ::prost::alloc::collections::BTreeMap<::prost::alloc::string::String, i32>,
2075}
2076#[derive(::serde::Serialize, ::serde::Deserialize)]
2079#[derive(Ord, PartialOrd)]
2080#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
2081pub struct MaxConnectionsPerIpLimit {
2082 #[prost(uint64, required, tag = "1")]
2083 pub limit: u64,
2084}
2085#[derive(::serde::Serialize, ::serde::Deserialize)]
2089#[derive(Ord, PartialOrd)]
2090#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
2091pub struct SocketAddress {
2092 #[prost(message, required, tag = "1")]
2093 pub ip: IpAddress,
2094 #[prost(uint32, required, tag = "2")]
2095 pub port: u32,
2096}
2097#[derive(::serde::Serialize, ::serde::Deserialize)]
2098#[derive(Ord, PartialOrd)]
2099#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
2100pub struct IpAddress {
2101 #[prost(oneof = "ip_address::Inner", tags = "1, 2")]
2102 pub inner: ::core::option::Option<ip_address::Inner>,
2103}
2104pub mod ip_address {
2106 #[derive(::serde::Serialize, ::serde::Deserialize)]
2107 #[serde(rename_all = "SCREAMING_SNAKE_CASE")]
2108 #[derive(Ord, PartialOrd)]
2109 #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Oneof)]
2110 pub enum Inner {
2111 #[prost(fixed32, tag = "1")]
2112 V4(u32),
2113 #[prost(message, tag = "2")]
2114 V6(super::Uint128),
2115 }
2116}
2117#[derive(::serde::Serialize, ::serde::Deserialize)]
2119#[derive(Ord, PartialOrd)]
2120#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
2121pub struct Uint128 {
2122 #[prost(uint64, required, tag = "1")]
2124 pub low: u64,
2125 #[prost(uint64, required, tag = "2")]
2127 pub high: u64,
2128}
2129#[derive(::serde::Serialize, ::serde::Deserialize)]
2131#[derive(Ord, PartialOrd)]
2132#[derive(Hash, Eq)]
2133#[derive(Clone, PartialEq, ::prost::Message)]
2134pub struct WorkerRequest {
2135 #[prost(string, required, tag = "1")]
2136 pub id: ::prost::alloc::string::String,
2137 #[prost(message, required, tag = "2")]
2138 pub content: Request,
2139}
2140#[derive(::serde::Serialize, ::serde::Deserialize)]
2142#[derive(Ord, PartialOrd)]
2143#[derive(Hash, Eq)]
2144#[derive(Clone, PartialEq, ::prost::Message)]
2145pub struct WorkerResponse {
2146 #[prost(string, required, tag = "1")]
2147 pub id: ::prost::alloc::string::String,
2148 #[prost(enumeration = "ResponseStatus", required, tag = "2")]
2149 pub status: i32,
2150 #[prost(string, required, tag = "3")]
2152 pub message: ::prost::alloc::string::String,
2153 #[prost(message, optional, tag = "4")]
2154 pub content: ::core::option::Option<ResponseContent>,
2155}
2156#[derive(::serde::Serialize, ::serde::Deserialize)]
2202#[derive(Ord, PartialOrd)]
2203#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2204pub struct SetMetricDetail {
2205 #[prost(string, required, tag = "1")]
2209 pub client_id: ::prost::alloc::string::String,
2210 #[prost(enumeration = "MetricDetail", optional, tag = "2")]
2212 pub detail: ::core::option::Option<i32>,
2213 #[prost(uint32, optional, tag = "3")]
2218 pub ttl_seconds: ::core::option::Option<u32>,
2219 #[prost(bool, optional, tag = "4")]
2222 pub clear: ::core::option::Option<bool>,
2223 #[prost(string, optional, tag = "5")]
2226 pub reason: ::core::option::Option<::prost::alloc::string::String>,
2227 #[prost(int32, optional, tag = "6")]
2239 pub peer_pid: ::core::option::Option<i32>,
2240 #[prost(string, optional, tag = "7")]
2241 pub peer_session_ulid: ::core::option::Option<::prost::alloc::string::String>,
2242}
2243#[derive(::serde::Serialize, ::serde::Deserialize)]
2248#[derive(Ord, PartialOrd)]
2249#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
2250pub struct WorkerMetricDetailStatus {
2251 #[prost(enumeration = "MetricDetail", required, tag = "1")]
2254 pub configured: i32,
2255 #[prost(enumeration = "MetricDetail", required, tag = "2")]
2257 pub effective: i32,
2258 #[prost(enumeration = "MetricDetail", required, tag = "3")]
2260 pub previous_effective: i32,
2261 #[prost(uint32, required, tag = "4")]
2264 pub active_lease_count: u32,
2265}
2266#[derive(::serde::Serialize, ::serde::Deserialize)]
2270#[derive(Ord, PartialOrd)]
2271#[derive(Hash, Eq)]
2272#[derive(Clone, PartialEq, ::prost::Message)]
2273pub struct MetricDetailStatus {
2274 #[prost(enumeration = "MetricDetail", required, tag = "1")]
2277 pub configured: i32,
2278 #[prost(enumeration = "MetricDetail", required, tag = "2")]
2280 pub effective: i32,
2281 #[prost(enumeration = "MetricDetail", required, tag = "3")]
2283 pub previous_effective: i32,
2284 #[prost(btree_map = "string, message", tag = "4")]
2287 pub workers: ::prost::alloc::collections::BTreeMap<
2288 ::prost::alloc::string::String,
2289 WorkerMetricDetailStatus,
2290 >,
2291}
2292#[derive(::serde::Serialize, ::serde::Deserialize)]
2294#[derive(Ord, PartialOrd)]
2295#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2296pub struct ServerMetricsConfig {
2297 #[prost(string, required, tag = "1")]
2298 pub address: ::prost::alloc::string::String,
2299 #[prost(bool, required, tag = "2")]
2300 pub tagged_metrics: bool,
2301 #[prost(string, optional, tag = "3")]
2302 pub prefix: ::core::option::Option<::prost::alloc::string::String>,
2303 #[prost(enumeration = "MetricDetail", optional, tag = "4")]
2306 pub detail: ::core::option::Option<i32>,
2307}
2308#[derive(::serde::Serialize, ::serde::Deserialize)]
2311#[derive(Ord, PartialOrd)]
2312#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2313pub struct ServerConfig {
2314 #[prost(uint64, required, tag = "1", default = "10000")]
2315 pub max_connections: u64,
2316 #[prost(uint32, required, tag = "2", default = "60")]
2317 pub front_timeout: u32,
2318 #[prost(uint32, required, tag = "3", default = "30")]
2319 pub back_timeout: u32,
2320 #[prost(uint32, required, tag = "4", default = "3")]
2321 pub connect_timeout: u32,
2322 #[prost(uint32, required, tag = "5", default = "1800")]
2323 pub zombie_check_interval: u32,
2324 #[prost(uint32, required, tag = "6", default = "60")]
2325 pub accept_queue_timeout: u32,
2326 #[prost(uint64, required, tag = "7", default = "1")]
2327 pub min_buffers: u64,
2328 #[prost(uint64, required, tag = "8", default = "1000")]
2329 pub max_buffers: u64,
2330 #[prost(uint64, required, tag = "9", default = "16393")]
2331 pub buffer_size: u64,
2332 #[prost(string, required, tag = "10", default = "info")]
2333 pub log_level: ::prost::alloc::string::String,
2334 #[prost(string, required, tag = "11", default = "stdout")]
2335 pub log_target: ::prost::alloc::string::String,
2336 #[prost(string, optional, tag = "12")]
2337 pub access_logs_target: ::core::option::Option<::prost::alloc::string::String>,
2338 #[prost(uint64, required, tag = "13", default = "1000000")]
2339 pub command_buffer_size: u64,
2340 #[prost(uint64, required, tag = "14", default = "2000000")]
2341 pub max_command_buffer_size: u64,
2342 #[prost(message, optional, tag = "15")]
2343 pub metrics: ::core::option::Option<ServerMetricsConfig>,
2344 #[prost(enumeration = "ProtobufAccessLogFormat", required, tag = "16")]
2345 pub access_log_format: i32,
2346 #[prost(bool, required, tag = "17")]
2347 pub log_colored: bool,
2348 #[prost(string, optional, tag = "18")]
2354 pub audit_logs_target: ::core::option::Option<::prost::alloc::string::String>,
2355 #[prost(string, optional, tag = "19")]
2358 pub audit_logs_json_target: ::core::option::Option<::prost::alloc::string::String>,
2359 #[prost(uint64, optional, tag = "20")]
2367 pub slab_entries_per_connection: ::core::option::Option<u64>,
2368 #[prost(uint64, optional, tag = "21")]
2378 pub basic_auth_max_credential_bytes: ::core::option::Option<u64>,
2379 #[prost(bool, optional, tag = "22", default = "false")]
2383 pub evict_on_queue_full: ::core::option::Option<bool>,
2384 #[prost(uint64, optional, tag = "23", default = "0")]
2392 pub max_connections_per_ip: ::core::option::Option<u64>,
2393 #[prost(uint32, optional, tag = "24", default = "60")]
2400 pub retry_after: ::core::option::Option<u32>,
2401 #[prost(uint64, optional, tag = "25")]
2413 pub splice_pipe_capacity_bytes: ::core::option::Option<u64>,
2414}
2415#[derive(::serde::Serialize, ::serde::Deserialize)]
2417#[derive(Ord, PartialOrd)]
2418#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2419pub struct ListenersCount {
2420 #[prost(string, repeated, tag = "1")]
2422 pub http: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2423 #[prost(string, repeated, tag = "2")]
2425 pub tls: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2426 #[prost(string, repeated, tag = "3")]
2428 pub tcp: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2429 #[prost(string, repeated, tag = "4")]
2431 pub udp: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2432}
2433#[derive(::serde::Serialize, ::serde::Deserialize)]
2436#[derive(Ord, PartialOrd)]
2437#[derive(Hash, Eq)]
2438#[derive(Clone, PartialEq, ::prost::Message)]
2439pub struct InitialState {
2440 #[prost(message, repeated, tag = "1")]
2441 pub requests: ::prost::alloc::vec::Vec<WorkerRequest>,
2442}
2443#[derive(::serde::Serialize, ::serde::Deserialize)]
2444#[derive(Ord, PartialOrd)]
2445#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2446pub struct OpenTelemetry {
2447 #[prost(string, required, tag = "1")]
2448 pub trace_id: ::prost::alloc::string::String,
2449 #[prost(string, required, tag = "2")]
2450 pub span_id: ::prost::alloc::string::String,
2451 #[prost(string, optional, tag = "3")]
2452 pub parent_span_id: ::core::option::Option<::prost::alloc::string::String>,
2453}
2454#[derive(::serde::Serialize, ::serde::Deserialize)]
2456#[derive(Ord, PartialOrd)]
2457#[derive(Hash, Eq)]
2458#[derive(Clone, PartialEq, ::prost::Message)]
2459pub struct ProtobufAccessLog {
2460 #[prost(string, optional, tag = "1")]
2462 pub message: ::core::option::Option<::prost::alloc::string::String>,
2463 #[prost(message, required, tag = "2")]
2465 pub request_id: Uint128,
2466 #[prost(string, optional, tag = "3")]
2468 pub cluster_id: ::core::option::Option<::prost::alloc::string::String>,
2469 #[prost(string, optional, tag = "4")]
2471 pub backend_id: ::core::option::Option<::prost::alloc::string::String>,
2472 #[prost(message, optional, tag = "5")]
2474 pub session_address: ::core::option::Option<SocketAddress>,
2475 #[prost(message, optional, tag = "6")]
2477 pub backend_address: ::core::option::Option<SocketAddress>,
2478 #[prost(string, required, tag = "7")]
2480 pub protocol: ::prost::alloc::string::String,
2481 #[prost(message, required, tag = "8")]
2483 pub endpoint: ProtobufEndpoint,
2484 #[prost(uint64, optional, tag = "9")]
2486 pub client_rtt: ::core::option::Option<u64>,
2487 #[prost(uint64, optional, tag = "10")]
2489 pub server_rtt: ::core::option::Option<u64>,
2490 #[prost(uint64, required, tag = "13")]
2492 pub service_time: u64,
2493 #[prost(uint64, required, tag = "14")]
2495 pub bytes_in: u64,
2496 #[prost(uint64, required, tag = "15")]
2498 pub bytes_out: u64,
2499 #[prost(string, optional, tag = "16")]
2501 pub user_agent: ::core::option::Option<::prost::alloc::string::String>,
2502 #[prost(btree_map = "string, string", tag = "17")]
2504 pub tags: ::prost::alloc::collections::BTreeMap<
2505 ::prost::alloc::string::String,
2506 ::prost::alloc::string::String,
2507 >,
2508 #[prost(string, required, tag = "18")]
2510 pub tag: ::prost::alloc::string::String,
2511 #[prost(message, required, tag = "19")]
2513 pub time: Uint128,
2514 #[prost(uint64, optional, tag = "20")]
2518 pub request_time: ::core::option::Option<u64>,
2519 #[prost(uint64, optional, tag = "21")]
2521 pub response_time: ::core::option::Option<u64>,
2522 #[prost(message, optional, tag = "22")]
2524 pub otel: ::core::option::Option<OpenTelemetry>,
2525 #[prost(message, optional, tag = "23")]
2529 pub session_id: ::core::option::Option<Uint128>,
2530 #[prost(string, optional, tag = "24")]
2535 pub x_request_id: ::core::option::Option<::prost::alloc::string::String>,
2536 #[prost(string, optional, tag = "25")]
2540 pub tls_version: ::core::option::Option<::prost::alloc::string::String>,
2541 #[prost(string, optional, tag = "26")]
2546 pub tls_cipher: ::core::option::Option<::prost::alloc::string::String>,
2547 #[prost(string, optional, tag = "27")]
2551 pub tls_sni: ::core::option::Option<::prost::alloc::string::String>,
2552 #[prost(string, optional, tag = "28")]
2555 pub tls_alpn: ::core::option::Option<::prost::alloc::string::String>,
2556 #[prost(string, optional, tag = "29")]
2561 pub xff_chain: ::core::option::Option<::prost::alloc::string::String>,
2562 #[prost(message, optional, tag = "30")]
2570 pub start_time: ::core::option::Option<Uint128>,
2571}
2572#[derive(::serde::Serialize, ::serde::Deserialize)]
2573#[derive(Ord, PartialOrd)]
2574#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2575pub struct ProtobufEndpoint {
2576 #[prost(oneof = "protobuf_endpoint::Inner", tags = "1, 2")]
2577 pub inner: ::core::option::Option<protobuf_endpoint::Inner>,
2578}
2579pub mod protobuf_endpoint {
2581 #[derive(::serde::Serialize, ::serde::Deserialize)]
2582 #[serde(rename_all = "SCREAMING_SNAKE_CASE")]
2583 #[derive(Ord, PartialOrd)]
2584 #[derive(Clone, PartialEq, Eq, Hash, ::prost::Oneof)]
2585 pub enum Inner {
2586 #[prost(message, tag = "1")]
2587 Http(super::HttpEndpoint),
2588 #[prost(message, tag = "2")]
2589 Tcp(super::TcpEndpoint),
2590 }
2591}
2592#[derive(::serde::Serialize, ::serde::Deserialize)]
2593#[derive(Ord, PartialOrd)]
2594#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2595pub struct HttpEndpoint {
2596 #[prost(string, optional, tag = "1")]
2597 pub method: ::core::option::Option<::prost::alloc::string::String>,
2598 #[prost(string, optional, tag = "2")]
2599 pub authority: ::core::option::Option<::prost::alloc::string::String>,
2600 #[prost(string, optional, tag = "3")]
2601 pub path: ::core::option::Option<::prost::alloc::string::String>,
2602 #[prost(uint32, optional, tag = "4")]
2605 pub status: ::core::option::Option<u32>,
2606 #[prost(string, optional, tag = "5")]
2607 pub reason: ::core::option::Option<::prost::alloc::string::String>,
2608}
2609#[derive(::serde::Serialize, ::serde::Deserialize)]
2610#[derive(Ord, PartialOrd)]
2611#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
2612pub struct TcpEndpoint {}
2613#[derive(::serde::Serialize, ::serde::Deserialize)]
2614#[serde(rename_all = "SCREAMING_SNAKE_CASE")]
2615#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2616#[repr(i32)]
2617pub enum ListenerType {
2618 Http = 0,
2619 Https = 1,
2620 Tcp = 2,
2621 Udp = 3,
2622}
2623impl ListenerType {
2624 pub fn as_str_name(&self) -> &'static str {
2629 match self {
2630 Self::Http => "HTTP",
2631 Self::Https => "HTTPS",
2632 Self::Tcp => "TCP",
2633 Self::Udp => "UDP",
2634 }
2635 }
2636 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2638 match value {
2639 "HTTP" => Some(Self::Http),
2640 "HTTPS" => Some(Self::Https),
2641 "TCP" => Some(Self::Tcp),
2642 "UDP" => Some(Self::Udp),
2643 _ => None,
2644 }
2645 }
2646}
2647#[derive(::serde::Serialize, ::serde::Deserialize)]
2660#[serde(rename_all = "SCREAMING_SNAKE_CASE")]
2661#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2662#[repr(i32)]
2663pub enum RedirectPolicy {
2664 Forward = 0,
2665 Permanent = 1,
2666 Unauthorized = 2,
2667 Found = 3,
2668 PermanentRedirect = 4,
2669}
2670impl RedirectPolicy {
2671 pub fn as_str_name(&self) -> &'static str {
2676 match self {
2677 Self::Forward => "FORWARD",
2678 Self::Permanent => "PERMANENT",
2679 Self::Unauthorized => "UNAUTHORIZED",
2680 Self::Found => "FOUND",
2681 Self::PermanentRedirect => "PERMANENT_REDIRECT",
2682 }
2683 }
2684 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2686 match value {
2687 "FORWARD" => Some(Self::Forward),
2688 "PERMANENT" => Some(Self::Permanent),
2689 "UNAUTHORIZED" => Some(Self::Unauthorized),
2690 "FOUND" => Some(Self::Found),
2691 "PERMANENT_REDIRECT" => Some(Self::PermanentRedirect),
2692 _ => None,
2693 }
2694 }
2695}
2696#[derive(::serde::Serialize, ::serde::Deserialize)]
2700#[serde(rename_all = "SCREAMING_SNAKE_CASE")]
2701#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2702#[repr(i32)]
2703pub enum RedirectScheme {
2704 UseSame = 0,
2705 UseHttp = 1,
2706 UseHttps = 2,
2707}
2708impl RedirectScheme {
2709 pub fn as_str_name(&self) -> &'static str {
2714 match self {
2715 Self::UseSame => "USE_SAME",
2716 Self::UseHttp => "USE_HTTP",
2717 Self::UseHttps => "USE_HTTPS",
2718 }
2719 }
2720 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2722 match value {
2723 "USE_SAME" => Some(Self::UseSame),
2724 "USE_HTTP" => Some(Self::UseHttp),
2725 "USE_HTTPS" => Some(Self::UseHttps),
2726 _ => None,
2727 }
2728 }
2729}
2730#[derive(::serde::Serialize, ::serde::Deserialize)]
2735#[serde(rename_all = "SCREAMING_SNAKE_CASE")]
2736#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2737#[repr(i32)]
2738pub enum HeaderPosition {
2739 Unspecified = 0,
2745 Request = 1,
2746 Response = 2,
2747 Both = 3,
2748}
2749impl HeaderPosition {
2750 pub fn as_str_name(&self) -> &'static str {
2755 match self {
2756 Self::Unspecified => "HEADER_POSITION_UNSPECIFIED",
2757 Self::Request => "REQUEST",
2758 Self::Response => "RESPONSE",
2759 Self::Both => "BOTH",
2760 }
2761 }
2762 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2764 match value {
2765 "HEADER_POSITION_UNSPECIFIED" => Some(Self::Unspecified),
2766 "REQUEST" => Some(Self::Request),
2767 "RESPONSE" => Some(Self::Response),
2768 "BOTH" => Some(Self::Both),
2769 _ => None,
2770 }
2771 }
2772}
2773#[derive(::serde::Serialize, ::serde::Deserialize)]
2775#[serde(rename_all = "SCREAMING_SNAKE_CASE")]
2776#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2777#[repr(i32)]
2778pub enum PathRuleKind {
2779 Prefix = 0,
2781 Regex = 1,
2783 Equals = 2,
2785}
2786impl PathRuleKind {
2787 pub fn as_str_name(&self) -> &'static str {
2792 match self {
2793 Self::Prefix => "PREFIX",
2794 Self::Regex => "REGEX",
2795 Self::Equals => "EQUALS",
2796 }
2797 }
2798 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2800 match value {
2801 "PREFIX" => Some(Self::Prefix),
2802 "REGEX" => Some(Self::Regex),
2803 "EQUALS" => Some(Self::Equals),
2804 _ => None,
2805 }
2806 }
2807}
2808#[derive(::serde::Serialize, ::serde::Deserialize)]
2810#[serde(rename_all = "SCREAMING_SNAKE_CASE")]
2811#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2812#[repr(i32)]
2813pub enum RulePosition {
2814 Pre = 0,
2815 Post = 1,
2816 Tree = 2,
2817}
2818impl RulePosition {
2819 pub fn as_str_name(&self) -> &'static str {
2824 match self {
2825 Self::Pre => "PRE",
2826 Self::Post => "POST",
2827 Self::Tree => "TREE",
2828 }
2829 }
2830 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2832 match value {
2833 "PRE" => Some(Self::Pre),
2834 "POST" => Some(Self::Post),
2835 "TREE" => Some(Self::Tree),
2836 _ => None,
2837 }
2838 }
2839}
2840#[derive(::serde::Serialize, ::serde::Deserialize)]
2841#[serde(rename_all = "SCREAMING_SNAKE_CASE")]
2842#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2843#[repr(i32)]
2844pub enum TlsVersion {
2845 SslV2 = 0,
2846 SslV3 = 1,
2847 TlsV10 = 2,
2848 TlsV11 = 3,
2849 TlsV12 = 4,
2850 TlsV13 = 5,
2851}
2852impl TlsVersion {
2853 pub fn as_str_name(&self) -> &'static str {
2858 match self {
2859 Self::SslV2 => "SSL_V2",
2860 Self::SslV3 => "SSL_V3",
2861 Self::TlsV10 => "TLS_V1_0",
2862 Self::TlsV11 => "TLS_V1_1",
2863 Self::TlsV12 => "TLS_V1_2",
2864 Self::TlsV13 => "TLS_V1_3",
2865 }
2866 }
2867 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2869 match value {
2870 "SSL_V2" => Some(Self::SslV2),
2871 "SSL_V3" => Some(Self::SslV3),
2872 "TLS_V1_0" => Some(Self::TlsV10),
2873 "TLS_V1_1" => Some(Self::TlsV11),
2874 "TLS_V1_2" => Some(Self::TlsV12),
2875 "TLS_V1_3" => Some(Self::TlsV13),
2876 _ => None,
2877 }
2878 }
2879}
2880#[derive(::serde::Serialize, ::serde::Deserialize)]
2884#[serde(rename_all = "SCREAMING_SNAKE_CASE")]
2885#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2886#[repr(i32)]
2887pub enum UdpAffinityKey {
2888 SourceIp = 0,
2889 SourceIpPort = 1,
2890}
2891impl UdpAffinityKey {
2892 pub fn as_str_name(&self) -> &'static str {
2897 match self {
2898 Self::SourceIp => "SOURCE_IP",
2899 Self::SourceIpPort => "SOURCE_IP_PORT",
2900 }
2901 }
2902 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2904 match value {
2905 "SOURCE_IP" => Some(Self::SourceIp),
2906 "SOURCE_IP_PORT" => Some(Self::SourceIpPort),
2907 _ => None,
2908 }
2909 }
2910}
2911#[derive(::serde::Serialize, ::serde::Deserialize)]
2915#[serde(rename_all = "SCREAMING_SNAKE_CASE")]
2916#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2917#[repr(i32)]
2918pub enum UdpHealthMode {
2919 HealthOff = 0,
2920 TcpProbe = 1,
2921 UdpProbe = 2,
2922}
2923impl UdpHealthMode {
2924 pub fn as_str_name(&self) -> &'static str {
2929 match self {
2930 Self::HealthOff => "HEALTH_OFF",
2931 Self::TcpProbe => "TCP_PROBE",
2932 Self::UdpProbe => "UDP_PROBE",
2933 }
2934 }
2935 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2937 match value {
2938 "HEALTH_OFF" => Some(Self::HealthOff),
2939 "TCP_PROBE" => Some(Self::TcpProbe),
2940 "UDP_PROBE" => Some(Self::UdpProbe),
2941 _ => None,
2942 }
2943 }
2944}
2945#[derive(::serde::Serialize, ::serde::Deserialize)]
2946#[serde(rename_all = "SCREAMING_SNAKE_CASE")]
2947#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2948#[repr(i32)]
2949pub enum LoadBalancingAlgorithms {
2950 RoundRobin = 0,
2951 Random = 1,
2952 LeastLoaded = 2,
2953 PowerOfTwo = 3,
2954 Hrw = 4,
2958 Maglev = 5,
2961}
2962impl LoadBalancingAlgorithms {
2963 pub fn as_str_name(&self) -> &'static str {
2968 match self {
2969 Self::RoundRobin => "ROUND_ROBIN",
2970 Self::Random => "RANDOM",
2971 Self::LeastLoaded => "LEAST_LOADED",
2972 Self::PowerOfTwo => "POWER_OF_TWO",
2973 Self::Hrw => "HRW",
2974 Self::Maglev => "MAGLEV",
2975 }
2976 }
2977 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2979 match value {
2980 "ROUND_ROBIN" => Some(Self::RoundRobin),
2981 "RANDOM" => Some(Self::Random),
2982 "LEAST_LOADED" => Some(Self::LeastLoaded),
2983 "POWER_OF_TWO" => Some(Self::PowerOfTwo),
2984 "HRW" => Some(Self::Hrw),
2985 "MAGLEV" => Some(Self::Maglev),
2986 _ => None,
2987 }
2988 }
2989}
2990#[derive(::serde::Serialize, ::serde::Deserialize)]
2991#[serde(rename_all = "SCREAMING_SNAKE_CASE")]
2992#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2993#[repr(i32)]
2994pub enum ProxyProtocolConfig {
2995 ExpectHeader = 0,
2996 SendHeader = 1,
2997 RelayHeader = 2,
2998}
2999impl ProxyProtocolConfig {
3000 pub fn as_str_name(&self) -> &'static str {
3005 match self {
3006 Self::ExpectHeader => "EXPECT_HEADER",
3007 Self::SendHeader => "SEND_HEADER",
3008 Self::RelayHeader => "RELAY_HEADER",
3009 }
3010 }
3011 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
3013 match value {
3014 "EXPECT_HEADER" => Some(Self::ExpectHeader),
3015 "SEND_HEADER" => Some(Self::SendHeader),
3016 "RELAY_HEADER" => Some(Self::RelayHeader),
3017 _ => None,
3018 }
3019 }
3020}
3021#[derive(::serde::Serialize, ::serde::Deserialize)]
3023#[serde(rename_all = "SCREAMING_SNAKE_CASE")]
3024#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
3025#[repr(i32)]
3026pub enum LoadMetric {
3027 Connections = 0,
3029 Requests = 1,
3031 ConnectionTime = 2,
3033}
3034impl LoadMetric {
3035 pub fn as_str_name(&self) -> &'static str {
3040 match self {
3041 Self::Connections => "CONNECTIONS",
3042 Self::Requests => "REQUESTS",
3043 Self::ConnectionTime => "CONNECTION_TIME",
3044 }
3045 }
3046 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
3048 match value {
3049 "CONNECTIONS" => Some(Self::Connections),
3050 "REQUESTS" => Some(Self::Requests),
3051 "CONNECTION_TIME" => Some(Self::ConnectionTime),
3052 _ => None,
3053 }
3054 }
3055}
3056#[derive(::serde::Serialize, ::serde::Deserialize)]
3058#[serde(rename_all = "SCREAMING_SNAKE_CASE")]
3059#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
3060#[repr(i32)]
3061pub enum MetricsConfiguration {
3062 Enabled = 0,
3064 Disabled = 1,
3066 Clear = 2,
3068}
3069impl MetricsConfiguration {
3070 pub fn as_str_name(&self) -> &'static str {
3075 match self {
3076 Self::Enabled => "ENABLED",
3077 Self::Disabled => "DISABLED",
3078 Self::Clear => "CLEAR",
3079 }
3080 }
3081 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
3083 match value {
3084 "ENABLED" => Some(Self::Enabled),
3085 "DISABLED" => Some(Self::Disabled),
3086 "CLEAR" => Some(Self::Clear),
3087 _ => None,
3088 }
3089 }
3090}
3091#[derive(::serde::Serialize, ::serde::Deserialize)]
3092#[serde(rename_all = "SCREAMING_SNAKE_CASE")]
3093#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
3094#[repr(i32)]
3095pub enum EventKind {
3096 BackendDown = 0,
3097 BackendUp = 1,
3098 NoAvailableBackends = 2,
3099 RemovedBackendHasNoConnections = 3,
3100 ClusterAdded = 4,
3107 ClusterRemoved = 5,
3108 FrontendAdded = 6,
3109 FrontendRemoved = 7,
3110 CertificateAdded = 8,
3111 CertificateRemoved = 9,
3112 CertificateReplaced = 10,
3113 ListenerActivated = 11,
3114 ListenerDeactivated = 12,
3115 ConfigurationReloaded = 13,
3116 WorkerKilled = 14,
3117 WorkerRelaunched = 15,
3118 LoggingLevelChanged = 16,
3119 MetricsConfigured = 17,
3120 ListenerUpdated = 18,
3122 StateLoaded = 19,
3126 StateSaved = 20,
3128 ListenerAdded = 21,
3132 ListenerRemoved = 22,
3136 SozuStopRequested = 23,
3140 MainUpgraded = 24,
3142 WorkerUpgraded = 25,
3144 EventsSubscribed = 26,
3147 HealthCheckHealthy = 27,
3153 HealthCheckUnhealthy = 28,
3155 ClusterRecovered = 29,
3159 MetricDetailChanged = 30,
3173}
3174impl EventKind {
3175 pub fn as_str_name(&self) -> &'static str {
3180 match self {
3181 Self::BackendDown => "BACKEND_DOWN",
3182 Self::BackendUp => "BACKEND_UP",
3183 Self::NoAvailableBackends => "NO_AVAILABLE_BACKENDS",
3184 Self::RemovedBackendHasNoConnections => "REMOVED_BACKEND_HAS_NO_CONNECTIONS",
3185 Self::ClusterAdded => "CLUSTER_ADDED",
3186 Self::ClusterRemoved => "CLUSTER_REMOVED",
3187 Self::FrontendAdded => "FRONTEND_ADDED",
3188 Self::FrontendRemoved => "FRONTEND_REMOVED",
3189 Self::CertificateAdded => "CERTIFICATE_ADDED",
3190 Self::CertificateRemoved => "CERTIFICATE_REMOVED",
3191 Self::CertificateReplaced => "CERTIFICATE_REPLACED",
3192 Self::ListenerActivated => "LISTENER_ACTIVATED",
3193 Self::ListenerDeactivated => "LISTENER_DEACTIVATED",
3194 Self::ConfigurationReloaded => "CONFIGURATION_RELOADED",
3195 Self::WorkerKilled => "WORKER_KILLED",
3196 Self::WorkerRelaunched => "WORKER_RELAUNCHED",
3197 Self::LoggingLevelChanged => "LOGGING_LEVEL_CHANGED",
3198 Self::MetricsConfigured => "METRICS_CONFIGURED",
3199 Self::ListenerUpdated => "LISTENER_UPDATED",
3200 Self::StateLoaded => "STATE_LOADED",
3201 Self::StateSaved => "STATE_SAVED",
3202 Self::ListenerAdded => "LISTENER_ADDED",
3203 Self::ListenerRemoved => "LISTENER_REMOVED",
3204 Self::SozuStopRequested => "SOZU_STOP_REQUESTED",
3205 Self::MainUpgraded => "MAIN_UPGRADED",
3206 Self::WorkerUpgraded => "WORKER_UPGRADED",
3207 Self::EventsSubscribed => "EVENTS_SUBSCRIBED",
3208 Self::HealthCheckHealthy => "HEALTH_CHECK_HEALTHY",
3209 Self::HealthCheckUnhealthy => "HEALTH_CHECK_UNHEALTHY",
3210 Self::ClusterRecovered => "CLUSTER_RECOVERED",
3211 Self::MetricDetailChanged => "METRIC_DETAIL_CHANGED",
3212 }
3213 }
3214 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
3216 match value {
3217 "BACKEND_DOWN" => Some(Self::BackendDown),
3218 "BACKEND_UP" => Some(Self::BackendUp),
3219 "NO_AVAILABLE_BACKENDS" => Some(Self::NoAvailableBackends),
3220 "REMOVED_BACKEND_HAS_NO_CONNECTIONS" => {
3221 Some(Self::RemovedBackendHasNoConnections)
3222 }
3223 "CLUSTER_ADDED" => Some(Self::ClusterAdded),
3224 "CLUSTER_REMOVED" => Some(Self::ClusterRemoved),
3225 "FRONTEND_ADDED" => Some(Self::FrontendAdded),
3226 "FRONTEND_REMOVED" => Some(Self::FrontendRemoved),
3227 "CERTIFICATE_ADDED" => Some(Self::CertificateAdded),
3228 "CERTIFICATE_REMOVED" => Some(Self::CertificateRemoved),
3229 "CERTIFICATE_REPLACED" => Some(Self::CertificateReplaced),
3230 "LISTENER_ACTIVATED" => Some(Self::ListenerActivated),
3231 "LISTENER_DEACTIVATED" => Some(Self::ListenerDeactivated),
3232 "CONFIGURATION_RELOADED" => Some(Self::ConfigurationReloaded),
3233 "WORKER_KILLED" => Some(Self::WorkerKilled),
3234 "WORKER_RELAUNCHED" => Some(Self::WorkerRelaunched),
3235 "LOGGING_LEVEL_CHANGED" => Some(Self::LoggingLevelChanged),
3236 "METRICS_CONFIGURED" => Some(Self::MetricsConfigured),
3237 "LISTENER_UPDATED" => Some(Self::ListenerUpdated),
3238 "STATE_LOADED" => Some(Self::StateLoaded),
3239 "STATE_SAVED" => Some(Self::StateSaved),
3240 "LISTENER_ADDED" => Some(Self::ListenerAdded),
3241 "LISTENER_REMOVED" => Some(Self::ListenerRemoved),
3242 "SOZU_STOP_REQUESTED" => Some(Self::SozuStopRequested),
3243 "MAIN_UPGRADED" => Some(Self::MainUpgraded),
3244 "WORKER_UPGRADED" => Some(Self::WorkerUpgraded),
3245 "EVENTS_SUBSCRIBED" => Some(Self::EventsSubscribed),
3246 "HEALTH_CHECK_HEALTHY" => Some(Self::HealthCheckHealthy),
3247 "HEALTH_CHECK_UNHEALTHY" => Some(Self::HealthCheckUnhealthy),
3248 "CLUSTER_RECOVERED" => Some(Self::ClusterRecovered),
3249 "METRIC_DETAIL_CHANGED" => Some(Self::MetricDetailChanged),
3250 _ => None,
3251 }
3252 }
3253}
3254#[derive(::serde::Serialize, ::serde::Deserialize)]
3255#[serde(rename_all = "SCREAMING_SNAKE_CASE")]
3256#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
3257#[repr(i32)]
3258pub enum ResponseStatus {
3259 Ok = 0,
3260 Processing = 1,
3261 Failure = 2,
3262}
3263impl ResponseStatus {
3264 pub fn as_str_name(&self) -> &'static str {
3269 match self {
3270 Self::Ok => "OK",
3271 Self::Processing => "PROCESSING",
3272 Self::Failure => "FAILURE",
3273 }
3274 }
3275 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
3277 match value {
3278 "OK" => Some(Self::Ok),
3279 "PROCESSING" => Some(Self::Processing),
3280 "FAILURE" => Some(Self::Failure),
3281 _ => None,
3282 }
3283 }
3284}
3285#[derive(::serde::Serialize, ::serde::Deserialize)]
3287#[serde(rename_all = "SCREAMING_SNAKE_CASE")]
3288#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
3289#[repr(i32)]
3290pub enum RunState {
3291 Running = 0,
3292 Stopping = 1,
3293 Stopped = 2,
3294 NotAnswering = 3,
3295}
3296impl RunState {
3297 pub fn as_str_name(&self) -> &'static str {
3302 match self {
3303 Self::Running => "RUNNING",
3304 Self::Stopping => "STOPPING",
3305 Self::Stopped => "STOPPED",
3306 Self::NotAnswering => "NOT_ANSWERING",
3307 }
3308 }
3309 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
3311 match value {
3312 "RUNNING" => Some(Self::Running),
3313 "STOPPING" => Some(Self::Stopping),
3314 "STOPPED" => Some(Self::Stopped),
3315 "NOT_ANSWERING" => Some(Self::NotAnswering),
3316 _ => None,
3317 }
3318 }
3319}
3320#[derive(::serde::Serialize, ::serde::Deserialize)]
3327#[serde(rename_all = "SCREAMING_SNAKE_CASE")]
3328#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
3329#[repr(i32)]
3330pub enum MetricDetail {
3331 DetailProcess = 0,
3333 DetailFrontend = 1,
3335 DetailCluster = 2,
3337 DetailBackend = 3,
3339}
3340impl MetricDetail {
3341 pub fn as_str_name(&self) -> &'static str {
3346 match self {
3347 Self::DetailProcess => "DETAIL_PROCESS",
3348 Self::DetailFrontend => "DETAIL_FRONTEND",
3349 Self::DetailCluster => "DETAIL_CLUSTER",
3350 Self::DetailBackend => "DETAIL_BACKEND",
3351 }
3352 }
3353 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
3355 match value {
3356 "DETAIL_PROCESS" => Some(Self::DetailProcess),
3357 "DETAIL_FRONTEND" => Some(Self::DetailFrontend),
3358 "DETAIL_CLUSTER" => Some(Self::DetailCluster),
3359 "DETAIL_BACKEND" => Some(Self::DetailBackend),
3360 _ => None,
3361 }
3362 }
3363}
3364#[derive(::serde::Serialize, ::serde::Deserialize)]
3365#[serde(rename_all = "SCREAMING_SNAKE_CASE")]
3366#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
3367#[repr(i32)]
3368pub enum ProtobufAccessLogFormat {
3369 Ascii = 1,
3370 Protobuf = 2,
3371}
3372impl ProtobufAccessLogFormat {
3373 pub fn as_str_name(&self) -> &'static str {
3378 match self {
3379 Self::Ascii => "Ascii",
3380 Self::Protobuf => "Protobuf",
3381 }
3382 }
3383 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
3385 match value {
3386 "Ascii" => Some(Self::Ascii),
3387 "Protobuf" => Some(Self::Protobuf),
3388 _ => None,
3389 }
3390 }
3391}