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 #[prost(uint32, optional, tag = "8", default = "5")]
957 pub sni_preread_timeout: ::core::option::Option<u32>,
958 #[prost(uint32, optional, tag = "9", default = "16384")]
964 pub sni_preread_max_bytes: ::core::option::Option<u32>,
965}
966#[derive(::serde::Serialize, ::serde::Deserialize)]
968#[derive(Ord, PartialOrd)]
969#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
970pub struct UdpListenerConfig {
971 #[prost(message, required, tag = "1")]
972 pub address: SocketAddress,
973 #[prost(message, optional, tag = "2")]
974 pub public_address: ::core::option::Option<SocketAddress>,
975 #[prost(uint32, required, tag = "3", default = "30")]
977 pub front_timeout: u32,
978 #[prost(uint32, required, tag = "4", default = "30")]
980 pub back_timeout: u32,
981 #[prost(uint32, required, tag = "5", default = "1500")]
983 pub max_rx_datagram_size: u32,
984 #[prost(uint32, required, tag = "6", default = "0")]
986 pub max_flows: u32,
987 #[prost(bool, required, tag = "7", default = "false")]
989 pub active: bool,
990}
991#[derive(::serde::Serialize, ::serde::Deserialize)]
1011#[derive(Ord, PartialOrd)]
1012#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
1013pub struct HstsConfig {
1014 #[prost(bool, optional, tag = "1")]
1018 pub enabled: ::core::option::Option<bool>,
1019 #[prost(uint32, optional, tag = "2")]
1023 pub max_age: ::core::option::Option<u32>,
1024 #[prost(bool, optional, tag = "3")]
1026 pub include_subdomains: ::core::option::Option<bool>,
1027 #[prost(bool, optional, tag = "4")]
1030 pub preload: ::core::option::Option<bool>,
1031 #[prost(bool, optional, tag = "5")]
1048 pub force_replace_backend: ::core::option::Option<bool>,
1049}
1050#[derive(::serde::Serialize, ::serde::Deserialize)]
1052#[derive(Ord, PartialOrd)]
1053#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1054pub struct CustomHttpAnswers {
1055 #[prost(string, optional, tag = "1")]
1057 pub answer_301: ::core::option::Option<::prost::alloc::string::String>,
1058 #[prost(string, optional, tag = "2")]
1060 pub answer_400: ::core::option::Option<::prost::alloc::string::String>,
1061 #[prost(string, optional, tag = "3")]
1063 pub answer_401: ::core::option::Option<::prost::alloc::string::String>,
1064 #[prost(string, optional, tag = "4")]
1066 pub answer_404: ::core::option::Option<::prost::alloc::string::String>,
1067 #[prost(string, optional, tag = "5")]
1069 pub answer_408: ::core::option::Option<::prost::alloc::string::String>,
1070 #[prost(string, optional, tag = "6")]
1072 pub answer_413: ::core::option::Option<::prost::alloc::string::String>,
1073 #[prost(string, optional, tag = "11")]
1075 pub answer_421: ::core::option::Option<::prost::alloc::string::String>,
1076 #[prost(string, optional, tag = "7")]
1078 pub answer_502: ::core::option::Option<::prost::alloc::string::String>,
1079 #[prost(string, optional, tag = "8")]
1081 pub answer_503: ::core::option::Option<::prost::alloc::string::String>,
1082 #[prost(string, optional, tag = "9")]
1084 pub answer_504: ::core::option::Option<::prost::alloc::string::String>,
1085 #[prost(string, optional, tag = "10")]
1087 pub answer_507: ::core::option::Option<::prost::alloc::string::String>,
1088 #[prost(string, optional, tag = "12")]
1090 pub answer_429: ::core::option::Option<::prost::alloc::string::String>,
1091}
1092#[derive(::serde::Serialize, ::serde::Deserialize)]
1093#[derive(Ord, PartialOrd)]
1094#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
1095pub struct ActivateListener {
1096 #[prost(message, required, tag = "1")]
1097 pub address: SocketAddress,
1098 #[prost(enumeration = "ListenerType", required, tag = "2")]
1099 pub proxy: i32,
1100 #[prost(bool, required, tag = "3")]
1101 pub from_scm: bool,
1102}
1103#[derive(::serde::Serialize, ::serde::Deserialize)]
1104#[derive(Ord, PartialOrd)]
1105#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
1106pub struct DeactivateListener {
1107 #[prost(message, required, tag = "1")]
1108 pub address: SocketAddress,
1109 #[prost(enumeration = "ListenerType", required, tag = "2")]
1110 pub proxy: i32,
1111 #[prost(bool, required, tag = "3")]
1112 pub to_scm: bool,
1113}
1114#[derive(::serde::Serialize, ::serde::Deserialize)]
1115#[derive(Ord, PartialOrd)]
1116#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
1117pub struct RemoveListener {
1118 #[prost(message, required, tag = "1")]
1119 pub address: SocketAddress,
1120 #[prost(enumeration = "ListenerType", required, tag = "2")]
1121 pub proxy: i32,
1122}
1123#[derive(::serde::Serialize, ::serde::Deserialize)]
1125#[derive(Ord, PartialOrd)]
1126#[derive(Hash, Eq)]
1127#[derive(Clone, PartialEq, ::prost::Message)]
1128pub struct ListenersList {
1129 #[prost(btree_map = "string, message", tag = "1")]
1131 pub http_listeners: ::prost::alloc::collections::BTreeMap<
1132 ::prost::alloc::string::String,
1133 HttpListenerConfig,
1134 >,
1135 #[prost(btree_map = "string, message", tag = "2")]
1137 pub https_listeners: ::prost::alloc::collections::BTreeMap<
1138 ::prost::alloc::string::String,
1139 HttpsListenerConfig,
1140 >,
1141 #[prost(btree_map = "string, message", tag = "3")]
1143 pub tcp_listeners: ::prost::alloc::collections::BTreeMap<
1144 ::prost::alloc::string::String,
1145 TcpListenerConfig,
1146 >,
1147 #[prost(btree_map = "string, message", tag = "4")]
1149 pub udp_listeners: ::prost::alloc::collections::BTreeMap<
1150 ::prost::alloc::string::String,
1151 UdpListenerConfig,
1152 >,
1153}
1154#[derive(::serde::Serialize, ::serde::Deserialize)]
1160#[derive(Ord, PartialOrd)]
1161#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1162pub struct Header {
1163 #[prost(enumeration = "HeaderPosition", required, tag = "1")]
1164 pub position: i32,
1165 #[prost(string, required, tag = "2")]
1166 pub key: ::prost::alloc::string::String,
1167 #[prost(string, required, tag = "3")]
1169 pub val: ::prost::alloc::string::String,
1170}
1171#[derive(::serde::Serialize, ::serde::Deserialize)]
1173#[derive(Ord, PartialOrd)]
1174#[derive(Hash, Eq)]
1175#[derive(Clone, PartialEq, ::prost::Message)]
1176pub struct RequestHttpFrontend {
1177 #[prost(string, optional, tag = "1")]
1178 pub cluster_id: ::core::option::Option<::prost::alloc::string::String>,
1179 #[prost(message, required, tag = "2")]
1180 pub address: SocketAddress,
1181 #[prost(string, required, tag = "3")]
1182 pub hostname: ::prost::alloc::string::String,
1183 #[prost(message, required, tag = "4")]
1184 pub path: PathRule,
1185 #[prost(string, optional, tag = "5")]
1186 pub method: ::core::option::Option<::prost::alloc::string::String>,
1187 #[prost(enumeration = "RulePosition", required, tag = "6", default = "Tree")]
1188 pub position: i32,
1189 #[prost(btree_map = "string, string", tag = "7")]
1191 pub tags: ::prost::alloc::collections::BTreeMap<
1192 ::prost::alloc::string::String,
1193 ::prost::alloc::string::String,
1194 >,
1195 #[prost(enumeration = "RedirectPolicy", optional, tag = "8", default = "Forward")]
1197 pub redirect: ::core::option::Option<i32>,
1198 #[prost(bool, optional, tag = "9")]
1202 pub required_auth: ::core::option::Option<bool>,
1203 #[prost(enumeration = "RedirectScheme", optional, tag = "10", default = "UseSame")]
1206 pub redirect_scheme: ::core::option::Option<i32>,
1207 #[prost(string, optional, tag = "11")]
1210 pub redirect_template: ::core::option::Option<::prost::alloc::string::String>,
1211 #[prost(string, optional, tag = "12")]
1215 pub rewrite_host: ::core::option::Option<::prost::alloc::string::String>,
1216 #[prost(string, optional, tag = "13")]
1218 pub rewrite_path: ::core::option::Option<::prost::alloc::string::String>,
1219 #[prost(uint32, optional, tag = "14")]
1221 pub rewrite_port: ::core::option::Option<u32>,
1222 #[prost(message, repeated, tag = "15")]
1225 #[serde(default)]
1226 pub headers: ::prost::alloc::vec::Vec<Header>,
1227 #[prost(message, optional, tag = "16")]
1237 pub hsts: ::core::option::Option<HstsConfig>,
1238}
1239#[derive(::serde::Serialize, ::serde::Deserialize)]
1240#[derive(Ord, PartialOrd)]
1241#[derive(Hash, Eq)]
1242#[derive(Clone, PartialEq, ::prost::Message)]
1243pub struct RequestTcpFrontend {
1244 #[prost(string, required, tag = "1")]
1245 pub cluster_id: ::prost::alloc::string::String,
1246 #[prost(message, required, tag = "2")]
1248 pub address: SocketAddress,
1249 #[prost(btree_map = "string, string", tag = "3")]
1251 pub tags: ::prost::alloc::collections::BTreeMap<
1252 ::prost::alloc::string::String,
1253 ::prost::alloc::string::String,
1254 >,
1255 #[prost(string, optional, tag = "4")]
1262 pub sni: ::core::option::Option<::prost::alloc::string::String>,
1263 #[prost(string, repeated, tag = "5")]
1269 #[serde(default)]
1270 pub alpn: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1271}
1272#[derive(::serde::Serialize, ::serde::Deserialize)]
1273#[derive(Ord, PartialOrd)]
1274#[derive(Hash, Eq)]
1275#[derive(Clone, PartialEq, ::prost::Message)]
1276pub struct RequestUdpFrontend {
1277 #[prost(string, required, tag = "1")]
1278 pub cluster_id: ::prost::alloc::string::String,
1279 #[prost(message, required, tag = "2")]
1281 pub address: SocketAddress,
1282 #[prost(btree_map = "string, string", tag = "3")]
1284 #[serde(default)]
1285 pub tags: ::prost::alloc::collections::BTreeMap<
1286 ::prost::alloc::string::String,
1287 ::prost::alloc::string::String,
1288 >,
1289}
1290#[derive(::serde::Serialize, ::serde::Deserialize)]
1292#[derive(Ord, PartialOrd)]
1293#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1294pub struct FrontendFilters {
1295 #[prost(bool, required, tag = "1")]
1296 pub http: bool,
1297 #[prost(bool, required, tag = "2")]
1298 pub https: bool,
1299 #[prost(bool, required, tag = "3")]
1300 pub tcp: bool,
1301 #[prost(string, optional, tag = "4")]
1302 pub domain: ::core::option::Option<::prost::alloc::string::String>,
1303}
1304#[derive(::serde::Serialize, ::serde::Deserialize)]
1306#[derive(Ord, PartialOrd)]
1307#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1308pub struct PathRule {
1309 #[prost(enumeration = "PathRuleKind", required, tag = "1")]
1311 pub kind: i32,
1312 #[prost(string, required, tag = "2")]
1314 pub value: ::prost::alloc::string::String,
1315}
1316#[derive(::serde::Serialize, ::serde::Deserialize)]
1318#[derive(Ord, PartialOrd)]
1319#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1320pub struct AddCertificate {
1321 #[prost(message, required, tag = "1")]
1322 pub address: SocketAddress,
1323 #[prost(message, required, tag = "2")]
1324 pub certificate: CertificateAndKey,
1325 #[prost(int64, optional, tag = "3")]
1327 pub expired_at: ::core::option::Option<i64>,
1328}
1329#[derive(::serde::Serialize, ::serde::Deserialize)]
1330#[derive(Ord, PartialOrd)]
1331#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1332pub struct RemoveCertificate {
1333 #[prost(message, required, tag = "1")]
1334 pub address: SocketAddress,
1335 #[prost(string, required, tag = "2")]
1337 pub fingerprint: ::prost::alloc::string::String,
1338}
1339#[derive(::serde::Serialize, ::serde::Deserialize)]
1340#[derive(Ord, PartialOrd)]
1341#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1342pub struct ReplaceCertificate {
1343 #[prost(message, required, tag = "1")]
1344 pub address: SocketAddress,
1345 #[prost(message, required, tag = "2")]
1346 pub new_certificate: CertificateAndKey,
1347 #[prost(string, required, tag = "3")]
1349 pub old_fingerprint: ::prost::alloc::string::String,
1350 #[prost(int64, optional, tag = "4")]
1352 pub new_expired_at: ::core::option::Option<i64>,
1353}
1354#[derive(::serde::Serialize, ::serde::Deserialize)]
1355#[derive(Ord, PartialOrd)]
1356#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1357pub struct CertificateAndKey {
1358 #[prost(string, required, tag = "1")]
1359 pub certificate: ::prost::alloc::string::String,
1360 #[prost(string, repeated, tag = "2")]
1361 pub certificate_chain: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1362 #[prost(string, required, tag = "3")]
1363 pub key: ::prost::alloc::string::String,
1364 #[prost(enumeration = "TlsVersion", repeated, packed = "false", tag = "4")]
1365 pub versions: ::prost::alloc::vec::Vec<i32>,
1366 #[prost(string, repeated, tag = "5")]
1369 pub names: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1370}
1371#[derive(::serde::Serialize, ::serde::Deserialize)]
1375#[derive(Ord, PartialOrd)]
1376#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1377pub struct QueryCertificatesFilters {
1378 #[prost(string, optional, tag = "1")]
1380 pub domain: ::core::option::Option<::prost::alloc::string::String>,
1381 #[prost(string, optional, tag = "2")]
1383 pub fingerprint: ::core::option::Option<::prost::alloc::string::String>,
1384}
1385#[derive(::serde::Serialize, ::serde::Deserialize)]
1387#[derive(Ord, PartialOrd)]
1388#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1389pub struct CertificateSummary {
1390 #[prost(string, required, tag = "1")]
1391 pub domain: ::prost::alloc::string::String,
1392 #[prost(string, required, tag = "2")]
1394 pub fingerprint: ::prost::alloc::string::String,
1395}
1396#[derive(::serde::Serialize, ::serde::Deserialize)]
1398#[derive(Ord, PartialOrd)]
1399#[derive(Hash, Eq)]
1400#[derive(Clone, PartialEq, ::prost::Message)]
1401pub struct ListOfCertificatesByAddress {
1402 #[prost(message, repeated, tag = "1")]
1403 pub certificates: ::prost::alloc::vec::Vec<CertificatesByAddress>,
1404}
1405#[derive(::serde::Serialize, ::serde::Deserialize)]
1407#[derive(Ord, PartialOrd)]
1408#[derive(Hash, Eq)]
1409#[derive(Clone, PartialEq, ::prost::Message)]
1410pub struct CertificatesByAddress {
1411 #[prost(message, required, tag = "1")]
1412 pub address: SocketAddress,
1413 #[prost(message, repeated, tag = "2")]
1414 pub certificate_summaries: ::prost::alloc::vec::Vec<CertificateSummary>,
1415}
1416#[derive(::serde::Serialize, ::serde::Deserialize)]
1418#[derive(Ord, PartialOrd)]
1419#[derive(Hash, Eq)]
1420#[derive(Clone, PartialEq, ::prost::Message)]
1421pub struct CertificatesWithFingerprints {
1422 #[prost(btree_map = "string, message", tag = "1")]
1424 pub certs: ::prost::alloc::collections::BTreeMap<
1425 ::prost::alloc::string::String,
1426 CertificateAndKey,
1427 >,
1428}
1429#[derive(::serde::Serialize, ::serde::Deserialize)]
1431#[derive(Ord, PartialOrd)]
1432#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1433pub struct UdpHealthConfig {
1434 #[prost(enumeration = "UdpHealthMode", optional, tag = "1")]
1436 pub mode: ::core::option::Option<i32>,
1437 #[prost(uint32, optional, tag = "2")]
1439 pub tcp_port: ::core::option::Option<u32>,
1440 #[prost(uint32, optional, tag = "3", default = "2")]
1442 pub rise: ::core::option::Option<u32>,
1443 #[prost(uint32, optional, tag = "4", default = "3")]
1445 pub fall: ::core::option::Option<u32>,
1446 #[prost(bool, optional, tag = "5", default = "true")]
1448 pub fail_open: ::core::option::Option<bool>,
1449 #[prost(bytes = "vec", optional, tag = "6")]
1451 pub udp_probe_payload: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
1452 #[prost(uint32, optional, tag = "7", default = "5")]
1454 pub probe_interval_seconds: ::core::option::Option<u32>,
1455 #[prost(uint32, optional, tag = "8", default = "2")]
1457 pub probe_timeout_seconds: ::core::option::Option<u32>,
1458}
1459#[derive(::serde::Serialize, ::serde::Deserialize)]
1461#[derive(Ord, PartialOrd)]
1462#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1463pub struct UdpClusterConfig {
1464 #[prost(enumeration = "UdpAffinityKey", optional, tag = "1")]
1466 pub affinity_key: ::core::option::Option<i32>,
1467 #[prost(uint32, optional, tag = "2")]
1469 pub responses: ::core::option::Option<u32>,
1470 #[prost(uint32, optional, tag = "3")]
1472 pub requests: ::core::option::Option<u32>,
1473 #[prost(bool, optional, tag = "4")]
1475 pub send_proxy_protocol: ::core::option::Option<bool>,
1476 #[prost(bool, optional, tag = "5")]
1478 pub proxy_protocol_every_datagram: ::core::option::Option<bool>,
1479 #[prost(message, optional, tag = "6")]
1481 pub health: ::core::option::Option<UdpHealthConfig>,
1482}
1483#[derive(::serde::Serialize, ::serde::Deserialize)]
1485#[derive(Ord, PartialOrd)]
1486#[derive(Hash, Eq)]
1487#[derive(Clone, PartialEq, ::prost::Message)]
1488pub struct Cluster {
1489 #[prost(string, required, tag = "1")]
1490 pub cluster_id: ::prost::alloc::string::String,
1491 #[prost(bool, required, tag = "2")]
1493 pub sticky_session: bool,
1494 #[prost(bool, required, tag = "3")]
1495 pub https_redirect: bool,
1496 #[prost(enumeration = "ProxyProtocolConfig", optional, tag = "4")]
1497 pub proxy_protocol: ::core::option::Option<i32>,
1498 #[prost(
1499 enumeration = "LoadBalancingAlgorithms",
1500 required,
1501 tag = "5",
1502 default = "RoundRobin"
1503 )]
1504 pub load_balancing: i32,
1505 #[prost(string, optional, tag = "6")]
1506 pub answer_503: ::core::option::Option<::prost::alloc::string::String>,
1507 #[prost(enumeration = "LoadMetric", optional, tag = "7")]
1508 pub load_metric: ::core::option::Option<i32>,
1509 #[prost(bool, optional, tag = "8")]
1513 pub http2: ::core::option::Option<bool>,
1514 #[prost(btree_map = "string, string", tag = "9")]
1517 #[serde(default)]
1518 pub answers: ::prost::alloc::collections::BTreeMap<
1519 ::prost::alloc::string::String,
1520 ::prost::alloc::string::String,
1521 >,
1522 #[prost(uint32, optional, tag = "10")]
1527 pub https_redirect_port: ::core::option::Option<u32>,
1528 #[prost(string, repeated, tag = "11")]
1535 #[serde(default)]
1536 pub authorized_hashes: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1537 #[prost(string, optional, tag = "12")]
1541 pub www_authenticate: ::core::option::Option<::prost::alloc::string::String>,
1542 #[prost(uint64, optional, tag = "13")]
1549 pub max_connections_per_ip: ::core::option::Option<u64>,
1550 #[prost(uint32, optional, tag = "14")]
1554 pub retry_after: ::core::option::Option<u32>,
1555 #[prost(message, optional, tag = "15")]
1560 pub health_check: ::core::option::Option<HealthCheckConfig>,
1561 #[prost(message, optional, tag = "16")]
1564 pub udp: ::core::option::Option<UdpClusterConfig>,
1565}
1566#[derive(::serde::Serialize, ::serde::Deserialize)]
1567#[derive(Ord, PartialOrd)]
1568#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1569pub struct HealthCheckConfig {
1570 #[prost(string, required, tag = "1")]
1571 pub uri: ::prost::alloc::string::String,
1572 #[prost(uint32, required, tag = "2", default = "10")]
1573 pub interval: u32,
1574 #[prost(uint32, required, tag = "3", default = "5")]
1575 pub timeout: u32,
1576 #[prost(uint32, required, tag = "4", default = "3")]
1577 pub healthy_threshold: u32,
1578 #[prost(uint32, required, tag = "5", default = "3")]
1579 pub unhealthy_threshold: u32,
1580 #[prost(uint32, required, tag = "6", default = "0")]
1588 pub expected_status: u32,
1589}
1590#[derive(::serde::Serialize, ::serde::Deserialize)]
1592#[derive(Ord, PartialOrd)]
1593#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1594pub struct AddBackend {
1595 #[prost(string, required, tag = "1")]
1596 pub cluster_id: ::prost::alloc::string::String,
1597 #[prost(string, required, tag = "2")]
1598 pub backend_id: ::prost::alloc::string::String,
1599 #[prost(message, required, tag = "3")]
1601 pub address: SocketAddress,
1602 #[prost(string, optional, tag = "4")]
1603 pub sticky_id: ::core::option::Option<::prost::alloc::string::String>,
1604 #[prost(message, optional, tag = "5")]
1605 pub load_balancing_parameters: ::core::option::Option<LoadBalancingParams>,
1606 #[prost(bool, optional, tag = "6")]
1607 pub backup: ::core::option::Option<bool>,
1608}
1609#[derive(::serde::Serialize, ::serde::Deserialize)]
1611#[derive(Ord, PartialOrd)]
1612#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1613pub struct RemoveBackend {
1614 #[prost(string, required, tag = "1")]
1615 pub cluster_id: ::prost::alloc::string::String,
1616 #[prost(string, required, tag = "2")]
1617 pub backend_id: ::prost::alloc::string::String,
1618 #[prost(message, required, tag = "3")]
1620 pub address: SocketAddress,
1621}
1622#[derive(::serde::Serialize, ::serde::Deserialize)]
1623#[derive(Ord, PartialOrd)]
1624#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
1625pub struct LoadBalancingParams {
1626 #[prost(int32, required, tag = "1")]
1627 pub weight: i32,
1628}
1629#[derive(::serde::Serialize, ::serde::Deserialize)]
1630#[derive(Ord, PartialOrd)]
1631#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1632pub struct QueryClusterByDomain {
1633 #[prost(string, required, tag = "1")]
1634 pub hostname: ::prost::alloc::string::String,
1635 #[prost(string, optional, tag = "2")]
1636 pub path: ::core::option::Option<::prost::alloc::string::String>,
1637}
1638#[derive(::serde::Serialize, ::serde::Deserialize)]
1640#[derive(Ord, PartialOrd)]
1641#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1642pub struct QueryMetricsOptions {
1643 #[prost(bool, required, tag = "1")]
1645 pub list: bool,
1646 #[prost(string, repeated, tag = "2")]
1648 pub cluster_ids: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1649 #[prost(string, repeated, tag = "3")]
1651 pub backend_ids: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1652 #[prost(string, repeated, tag = "4")]
1654 pub metric_names: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1655 #[prost(bool, required, tag = "5")]
1657 pub no_clusters: bool,
1658 #[prost(bool, required, tag = "6")]
1660 pub workers: bool,
1661}
1662#[derive(::serde::Serialize, ::serde::Deserialize)]
1664#[derive(Ord, PartialOrd)]
1665#[derive(Hash, Eq)]
1666#[derive(Clone, PartialEq, ::prost::Message)]
1667pub struct Response {
1668 #[prost(enumeration = "ResponseStatus", required, tag = "1", default = "Failure")]
1670 pub status: i32,
1671 #[prost(string, required, tag = "2")]
1673 pub message: ::prost::alloc::string::String,
1674 #[prost(message, optional, tag = "3")]
1676 pub content: ::core::option::Option<ResponseContent>,
1677}
1678#[derive(::serde::Serialize, ::serde::Deserialize)]
1680#[derive(Ord, PartialOrd)]
1681#[derive(Hash, Eq)]
1682#[derive(Clone, PartialEq, ::prost::Message)]
1683pub struct ResponseContent {
1684 #[prost(
1685 oneof = "response_content::ContentType",
1686 tags = "1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17"
1687 )]
1688 pub content_type: ::core::option::Option<response_content::ContentType>,
1689}
1690pub mod response_content {
1692 #[derive(::serde::Serialize, ::serde::Deserialize)]
1693 #[serde(rename_all = "SCREAMING_SNAKE_CASE")]
1694 #[derive(Hash, Eq, Ord, PartialOrd)]
1695 #[derive(Clone, PartialEq, ::prost::Oneof)]
1696 pub enum ContentType {
1697 #[prost(message, tag = "1")]
1699 Workers(super::WorkerInfos),
1700 #[prost(message, tag = "2")]
1702 Metrics(super::AggregatedMetrics),
1703 #[prost(message, tag = "3")]
1705 WorkerResponses(super::WorkerResponses),
1706 #[prost(message, tag = "4")]
1708 Event(super::Event),
1709 #[prost(message, tag = "5")]
1711 FrontendList(super::ListedFrontends),
1712 #[prost(message, tag = "6")]
1714 ListenersList(super::ListenersList),
1715 #[prost(message, tag = "7")]
1717 WorkerMetrics(super::WorkerMetrics),
1718 #[prost(message, tag = "8")]
1720 AvailableMetrics(super::AvailableMetrics),
1721 #[prost(message, tag = "9")]
1723 Clusters(super::ClusterInformations),
1724 #[prost(message, tag = "10")]
1726 ClusterHashes(super::ClusterHashes),
1727 #[prost(message, tag = "11")]
1729 CertificatesByAddress(super::ListOfCertificatesByAddress),
1730 #[prost(message, tag = "12")]
1732 CertificatesWithFingerprints(super::CertificatesWithFingerprints),
1733 #[prost(message, tag = "13")]
1735 RequestCounts(super::RequestCounts),
1736 #[prost(message, tag = "14")]
1738 MaxConnectionsPerIpLimit(super::MaxConnectionsPerIpLimit),
1739 #[prost(message, tag = "15")]
1742 HealthChecksList(super::HealthChecksList),
1743 #[prost(message, tag = "16")]
1747 MetricDetailStatus(super::MetricDetailStatus),
1748 #[prost(message, tag = "17")]
1758 WorkerMetricDetailStatus(super::WorkerMetricDetailStatus),
1759 }
1760}
1761#[derive(::serde::Serialize, ::serde::Deserialize)]
1762#[derive(Ord, PartialOrd)]
1763#[derive(Hash, Eq)]
1764#[derive(Clone, PartialEq, ::prost::Message)]
1765pub struct HealthChecksList {
1766 #[prost(btree_map = "string, message", tag = "1")]
1767 pub map: ::prost::alloc::collections::BTreeMap<
1768 ::prost::alloc::string::String,
1769 HealthCheckConfig,
1770 >,
1771}
1772#[derive(::serde::Serialize, ::serde::Deserialize)]
1774#[derive(Ord, PartialOrd)]
1775#[derive(Hash, Eq)]
1776#[derive(Clone, PartialEq, ::prost::Message)]
1777pub struct WorkerResponses {
1778 #[prost(btree_map = "string, message", tag = "1")]
1779 pub map: ::prost::alloc::collections::BTreeMap<
1780 ::prost::alloc::string::String,
1781 ResponseContent,
1782 >,
1783}
1784#[derive(::serde::Serialize, ::serde::Deserialize)]
1786#[derive(Ord, PartialOrd)]
1787#[derive(Hash, Eq)]
1788#[derive(Clone, PartialEq, ::prost::Message)]
1789pub struct ListedFrontends {
1790 #[prost(message, repeated, tag = "1")]
1791 pub http_frontends: ::prost::alloc::vec::Vec<RequestHttpFrontend>,
1792 #[prost(message, repeated, tag = "2")]
1793 pub https_frontends: ::prost::alloc::vec::Vec<RequestHttpFrontend>,
1794 #[prost(message, repeated, tag = "3")]
1795 pub tcp_frontends: ::prost::alloc::vec::Vec<RequestTcpFrontend>,
1796 #[prost(message, repeated, tag = "4")]
1797 pub udp_frontends: ::prost::alloc::vec::Vec<RequestUdpFrontend>,
1798}
1799#[derive(::serde::Serialize, ::serde::Deserialize)]
1800#[derive(Ord, PartialOrd)]
1801#[derive(Hash, Eq)]
1802#[derive(Clone, PartialEq, ::prost::Message)]
1803pub struct ClusterInformations {
1804 #[prost(message, repeated, tag = "1")]
1805 pub vec: ::prost::alloc::vec::Vec<ClusterInformation>,
1806}
1807#[derive(::serde::Serialize, ::serde::Deserialize)]
1810#[derive(Ord, PartialOrd)]
1811#[derive(Hash, Eq)]
1812#[derive(Clone, PartialEq, ::prost::Message)]
1813pub struct ClusterInformation {
1814 #[prost(message, optional, tag = "1")]
1815 pub configuration: ::core::option::Option<Cluster>,
1816 #[prost(message, repeated, tag = "2")]
1817 pub http_frontends: ::prost::alloc::vec::Vec<RequestHttpFrontend>,
1818 #[prost(message, repeated, tag = "3")]
1819 pub https_frontends: ::prost::alloc::vec::Vec<RequestHttpFrontend>,
1820 #[prost(message, repeated, tag = "4")]
1821 pub tcp_frontends: ::prost::alloc::vec::Vec<RequestTcpFrontend>,
1822 #[prost(message, repeated, tag = "5")]
1823 pub backends: ::prost::alloc::vec::Vec<AddBackend>,
1824 #[prost(message, repeated, tag = "6")]
1825 pub udp_frontends: ::prost::alloc::vec::Vec<RequestUdpFrontend>,
1826}
1827#[derive(::serde::Serialize, ::serde::Deserialize)]
1829#[derive(Ord, PartialOrd)]
1830#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1831pub struct Event {
1832 #[prost(enumeration = "EventKind", required, tag = "1")]
1833 pub kind: i32,
1834 #[prost(string, optional, tag = "2")]
1835 pub cluster_id: ::core::option::Option<::prost::alloc::string::String>,
1836 #[prost(string, optional, tag = "3")]
1837 pub backend_id: ::core::option::Option<::prost::alloc::string::String>,
1838 #[prost(message, optional, tag = "4")]
1839 pub address: ::core::option::Option<SocketAddress>,
1840 #[prost(message, optional, tag = "5")]
1849 pub metric_detail: ::core::option::Option<MetricDetailTransition>,
1850}
1851#[derive(::serde::Serialize, ::serde::Deserialize)]
1859#[derive(Ord, PartialOrd)]
1860#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1861pub struct MetricDetailTransition {
1862 #[prost(enumeration = "MetricDetail", required, tag = "1")]
1864 pub previous_effective: i32,
1865 #[prost(enumeration = "MetricDetail", required, tag = "2")]
1867 pub effective: i32,
1868 #[prost(string, required, tag = "3")]
1875 pub transition_kind: ::prost::alloc::string::String,
1876 #[prost(string, optional, tag = "4")]
1880 pub client_id: ::core::option::Option<::prost::alloc::string::String>,
1881}
1882#[derive(::serde::Serialize, ::serde::Deserialize)]
1883#[derive(Ord, PartialOrd)]
1884#[derive(Hash, Eq)]
1885#[derive(Clone, PartialEq, ::prost::Message)]
1886pub struct ClusterHashes {
1887 #[prost(btree_map = "string, uint64", tag = "1")]
1889 pub map: ::prost::alloc::collections::BTreeMap<::prost::alloc::string::String, u64>,
1890}
1891#[derive(::serde::Serialize, ::serde::Deserialize)]
1893#[derive(Ord, PartialOrd)]
1894#[derive(Hash, Eq)]
1895#[derive(Clone, PartialEq, ::prost::Message)]
1896pub struct WorkerInfos {
1897 #[prost(message, repeated, tag = "1")]
1898 pub vec: ::prost::alloc::vec::Vec<WorkerInfo>,
1899}
1900#[derive(::serde::Serialize, ::serde::Deserialize)]
1902#[derive(Ord, PartialOrd)]
1903#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
1904pub struct WorkerInfo {
1905 #[prost(uint32, required, tag = "1")]
1906 pub id: u32,
1907 #[prost(int32, required, tag = "2")]
1908 pub pid: i32,
1909 #[prost(enumeration = "RunState", required, tag = "3")]
1910 pub run_state: i32,
1911}
1912#[derive(::serde::Serialize, ::serde::Deserialize)]
1914#[derive(Ord, PartialOrd)]
1915#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1916pub struct AvailableMetrics {
1917 #[prost(string, repeated, tag = "1")]
1918 pub proxy_metrics: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1919 #[prost(string, repeated, tag = "2")]
1920 pub cluster_metrics: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1921}
1922#[derive(::serde::Serialize, ::serde::Deserialize)]
1924#[derive(Ord, PartialOrd)]
1925#[derive(Hash, Eq)]
1926#[derive(Clone, PartialEq, ::prost::Message)]
1927pub struct AggregatedMetrics {
1928 #[prost(btree_map = "string, message", tag = "1")]
1931 pub main: ::prost::alloc::collections::BTreeMap<
1932 ::prost::alloc::string::String,
1933 FilteredMetrics,
1934 >,
1935 #[prost(btree_map = "string, message", tag = "2")]
1938 pub workers: ::prost::alloc::collections::BTreeMap<
1939 ::prost::alloc::string::String,
1940 WorkerMetrics,
1941 >,
1942 #[prost(btree_map = "string, message", tag = "3")]
1945 pub clusters: ::prost::alloc::collections::BTreeMap<
1946 ::prost::alloc::string::String,
1947 ClusterMetrics,
1948 >,
1949 #[prost(btree_map = "string, message", tag = "4")]
1952 pub proxying: ::prost::alloc::collections::BTreeMap<
1953 ::prost::alloc::string::String,
1954 FilteredMetrics,
1955 >,
1956}
1957#[derive(::serde::Serialize, ::serde::Deserialize)]
1960#[derive(Ord, PartialOrd)]
1961#[derive(Hash, Eq)]
1962#[derive(Clone, PartialEq, ::prost::Message)]
1963pub struct WorkerMetrics {
1964 #[prost(btree_map = "string, message", tag = "1")]
1966 pub proxy: ::prost::alloc::collections::BTreeMap<
1967 ::prost::alloc::string::String,
1968 FilteredMetrics,
1969 >,
1970 #[prost(btree_map = "string, message", tag = "2")]
1972 pub clusters: ::prost::alloc::collections::BTreeMap<
1973 ::prost::alloc::string::String,
1974 ClusterMetrics,
1975 >,
1976}
1977#[derive(::serde::Serialize, ::serde::Deserialize)]
1979#[derive(Ord, PartialOrd)]
1980#[derive(Hash, Eq)]
1981#[derive(Clone, PartialEq, ::prost::Message)]
1982pub struct ClusterMetrics {
1983 #[prost(btree_map = "string, message", tag = "1")]
1985 pub cluster: ::prost::alloc::collections::BTreeMap<
1986 ::prost::alloc::string::String,
1987 FilteredMetrics,
1988 >,
1989 #[prost(message, repeated, tag = "2")]
1991 pub backends: ::prost::alloc::vec::Vec<BackendMetrics>,
1992}
1993#[derive(::serde::Serialize, ::serde::Deserialize)]
1994#[derive(Ord, PartialOrd)]
1995#[derive(Hash, Eq)]
1996#[derive(Clone, PartialEq, ::prost::Message)]
1997pub struct BackendMetrics {
1998 #[prost(string, required, tag = "1")]
1999 pub backend_id: ::prost::alloc::string::String,
2000 #[prost(btree_map = "string, message", tag = "2")]
2001 pub metrics: ::prost::alloc::collections::BTreeMap<
2002 ::prost::alloc::string::String,
2003 FilteredMetrics,
2004 >,
2005}
2006#[derive(::serde::Serialize, ::serde::Deserialize)]
2008#[derive(Ord, PartialOrd)]
2009#[derive(Hash, Eq)]
2010#[derive(Clone, PartialEq, ::prost::Message)]
2011pub struct FilteredMetrics {
2012 #[prost(oneof = "filtered_metrics::Inner", tags = "1, 2, 3, 4, 5, 6")]
2013 pub inner: ::core::option::Option<filtered_metrics::Inner>,
2014}
2015pub mod filtered_metrics {
2017 #[derive(::serde::Serialize, ::serde::Deserialize)]
2018 #[serde(rename_all = "SCREAMING_SNAKE_CASE")]
2019 #[derive(Hash, Eq, Ord, PartialOrd)]
2020 #[derive(Clone, PartialEq, ::prost::Oneof)]
2021 pub enum Inner {
2022 #[prost(uint64, tag = "1")]
2024 Gauge(u64),
2025 #[prost(int64, tag = "2")]
2027 Count(i64),
2028 #[prost(uint64, tag = "3")]
2030 Time(u64),
2031 #[prost(message, tag = "4")]
2032 Percentiles(super::Percentiles),
2033 #[prost(message, tag = "5")]
2034 TimeSerie(super::FilteredTimeSerie),
2035 #[prost(message, tag = "6")]
2036 Histogram(super::FilteredHistogram),
2037 }
2038}
2039#[derive(::serde::Serialize, ::serde::Deserialize)]
2040#[derive(Ord, PartialOrd)]
2041#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2042pub struct FilteredTimeSerie {
2043 #[prost(uint32, required, tag = "1")]
2044 pub last_second: u32,
2045 #[prost(uint32, repeated, packed = "false", tag = "2")]
2046 pub last_minute: ::prost::alloc::vec::Vec<u32>,
2047 #[prost(uint32, repeated, packed = "false", tag = "3")]
2048 pub last_hour: ::prost::alloc::vec::Vec<u32>,
2049}
2050#[derive(::serde::Serialize, ::serde::Deserialize)]
2051#[derive(Ord, PartialOrd)]
2052#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
2053pub struct Percentiles {
2054 #[prost(uint64, required, tag = "1")]
2055 pub samples: u64,
2056 #[prost(uint64, required, tag = "2")]
2057 pub p_50: u64,
2058 #[prost(uint64, required, tag = "3")]
2059 pub p_90: u64,
2060 #[prost(uint64, required, tag = "4")]
2061 pub p_99: u64,
2062 #[prost(uint64, required, tag = "5")]
2063 pub p_99_9: u64,
2064 #[prost(uint64, required, tag = "6")]
2065 pub p_99_99: u64,
2066 #[prost(uint64, required, tag = "7")]
2067 pub p_99_999: u64,
2068 #[prost(uint64, required, tag = "8")]
2069 pub p_100: u64,
2070 #[prost(uint64, required, tag = "9")]
2071 pub sum: u64,
2072}
2073#[derive(::serde::Serialize, ::serde::Deserialize)]
2075#[derive(Ord, PartialOrd)]
2076#[derive(Hash, Eq)]
2077#[derive(Clone, PartialEq, ::prost::Message)]
2078pub struct FilteredHistogram {
2079 #[prost(uint64, required, tag = "1")]
2080 pub sum: u64,
2081 #[prost(uint64, required, tag = "2")]
2082 pub count: u64,
2083 #[prost(message, repeated, tag = "3")]
2084 pub buckets: ::prost::alloc::vec::Vec<Bucket>,
2085}
2086#[derive(::serde::Serialize, ::serde::Deserialize)]
2088#[derive(Ord, PartialOrd)]
2089#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
2090pub struct Bucket {
2091 #[prost(uint64, required, tag = "1")]
2092 pub count: u64,
2093 #[prost(uint64, required, tag = "2")]
2095 pub le: u64,
2096}
2097#[derive(::serde::Serialize, ::serde::Deserialize)]
2098#[derive(Ord, PartialOrd)]
2099#[derive(Hash, Eq)]
2100#[derive(Clone, PartialEq, ::prost::Message)]
2101pub struct RequestCounts {
2102 #[prost(btree_map = "string, int32", tag = "1")]
2103 pub map: ::prost::alloc::collections::BTreeMap<::prost::alloc::string::String, i32>,
2104}
2105#[derive(::serde::Serialize, ::serde::Deserialize)]
2108#[derive(Ord, PartialOrd)]
2109#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
2110pub struct MaxConnectionsPerIpLimit {
2111 #[prost(uint64, required, tag = "1")]
2112 pub limit: u64,
2113}
2114#[derive(::serde::Serialize, ::serde::Deserialize)]
2118#[derive(Ord, PartialOrd)]
2119#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
2120pub struct SocketAddress {
2121 #[prost(message, required, tag = "1")]
2122 pub ip: IpAddress,
2123 #[prost(uint32, required, tag = "2")]
2124 pub port: u32,
2125}
2126#[derive(::serde::Serialize, ::serde::Deserialize)]
2127#[derive(Ord, PartialOrd)]
2128#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
2129pub struct IpAddress {
2130 #[prost(oneof = "ip_address::Inner", tags = "1, 2")]
2131 pub inner: ::core::option::Option<ip_address::Inner>,
2132}
2133pub mod ip_address {
2135 #[derive(::serde::Serialize, ::serde::Deserialize)]
2136 #[serde(rename_all = "SCREAMING_SNAKE_CASE")]
2137 #[derive(Ord, PartialOrd)]
2138 #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Oneof)]
2139 pub enum Inner {
2140 #[prost(fixed32, tag = "1")]
2141 V4(u32),
2142 #[prost(message, tag = "2")]
2143 V6(super::Uint128),
2144 }
2145}
2146#[derive(::serde::Serialize, ::serde::Deserialize)]
2148#[derive(Ord, PartialOrd)]
2149#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
2150pub struct Uint128 {
2151 #[prost(uint64, required, tag = "1")]
2153 pub low: u64,
2154 #[prost(uint64, required, tag = "2")]
2156 pub high: u64,
2157}
2158#[derive(::serde::Serialize, ::serde::Deserialize)]
2160#[derive(Ord, PartialOrd)]
2161#[derive(Hash, Eq)]
2162#[derive(Clone, PartialEq, ::prost::Message)]
2163pub struct WorkerRequest {
2164 #[prost(string, required, tag = "1")]
2165 pub id: ::prost::alloc::string::String,
2166 #[prost(message, required, tag = "2")]
2167 pub content: Request,
2168}
2169#[derive(::serde::Serialize, ::serde::Deserialize)]
2171#[derive(Ord, PartialOrd)]
2172#[derive(Hash, Eq)]
2173#[derive(Clone, PartialEq, ::prost::Message)]
2174pub struct WorkerResponse {
2175 #[prost(string, required, tag = "1")]
2176 pub id: ::prost::alloc::string::String,
2177 #[prost(enumeration = "ResponseStatus", required, tag = "2")]
2178 pub status: i32,
2179 #[prost(string, required, tag = "3")]
2181 pub message: ::prost::alloc::string::String,
2182 #[prost(message, optional, tag = "4")]
2183 pub content: ::core::option::Option<ResponseContent>,
2184}
2185#[derive(::serde::Serialize, ::serde::Deserialize)]
2231#[derive(Ord, PartialOrd)]
2232#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2233pub struct SetMetricDetail {
2234 #[prost(string, required, tag = "1")]
2238 pub client_id: ::prost::alloc::string::String,
2239 #[prost(enumeration = "MetricDetail", optional, tag = "2")]
2241 pub detail: ::core::option::Option<i32>,
2242 #[prost(uint32, optional, tag = "3")]
2247 pub ttl_seconds: ::core::option::Option<u32>,
2248 #[prost(bool, optional, tag = "4")]
2251 pub clear: ::core::option::Option<bool>,
2252 #[prost(string, optional, tag = "5")]
2255 pub reason: ::core::option::Option<::prost::alloc::string::String>,
2256 #[prost(int32, optional, tag = "6")]
2268 pub peer_pid: ::core::option::Option<i32>,
2269 #[prost(string, optional, tag = "7")]
2270 pub peer_session_ulid: ::core::option::Option<::prost::alloc::string::String>,
2271}
2272#[derive(::serde::Serialize, ::serde::Deserialize)]
2277#[derive(Ord, PartialOrd)]
2278#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
2279pub struct WorkerMetricDetailStatus {
2280 #[prost(enumeration = "MetricDetail", required, tag = "1")]
2283 pub configured: i32,
2284 #[prost(enumeration = "MetricDetail", required, tag = "2")]
2286 pub effective: i32,
2287 #[prost(enumeration = "MetricDetail", required, tag = "3")]
2289 pub previous_effective: i32,
2290 #[prost(uint32, required, tag = "4")]
2293 pub active_lease_count: u32,
2294}
2295#[derive(::serde::Serialize, ::serde::Deserialize)]
2299#[derive(Ord, PartialOrd)]
2300#[derive(Hash, Eq)]
2301#[derive(Clone, PartialEq, ::prost::Message)]
2302pub struct MetricDetailStatus {
2303 #[prost(enumeration = "MetricDetail", required, tag = "1")]
2306 pub configured: i32,
2307 #[prost(enumeration = "MetricDetail", required, tag = "2")]
2309 pub effective: i32,
2310 #[prost(enumeration = "MetricDetail", required, tag = "3")]
2312 pub previous_effective: i32,
2313 #[prost(btree_map = "string, message", tag = "4")]
2316 pub workers: ::prost::alloc::collections::BTreeMap<
2317 ::prost::alloc::string::String,
2318 WorkerMetricDetailStatus,
2319 >,
2320}
2321#[derive(::serde::Serialize, ::serde::Deserialize)]
2323#[derive(Ord, PartialOrd)]
2324#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2325pub struct ServerMetricsConfig {
2326 #[prost(string, required, tag = "1")]
2327 pub address: ::prost::alloc::string::String,
2328 #[prost(bool, required, tag = "2")]
2329 pub tagged_metrics: bool,
2330 #[prost(string, optional, tag = "3")]
2331 pub prefix: ::core::option::Option<::prost::alloc::string::String>,
2332 #[prost(enumeration = "MetricDetail", optional, tag = "4")]
2335 pub detail: ::core::option::Option<i32>,
2336}
2337#[derive(::serde::Serialize, ::serde::Deserialize)]
2340#[derive(Ord, PartialOrd)]
2341#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2342pub struct ServerConfig {
2343 #[prost(uint64, required, tag = "1", default = "10000")]
2344 pub max_connections: u64,
2345 #[prost(uint32, required, tag = "2", default = "60")]
2346 pub front_timeout: u32,
2347 #[prost(uint32, required, tag = "3", default = "30")]
2348 pub back_timeout: u32,
2349 #[prost(uint32, required, tag = "4", default = "3")]
2350 pub connect_timeout: u32,
2351 #[prost(uint32, required, tag = "5", default = "1800")]
2352 pub zombie_check_interval: u32,
2353 #[prost(uint32, required, tag = "6", default = "60")]
2354 pub accept_queue_timeout: u32,
2355 #[prost(uint64, required, tag = "7", default = "1")]
2356 pub min_buffers: u64,
2357 #[prost(uint64, required, tag = "8", default = "1000")]
2358 pub max_buffers: u64,
2359 #[prost(uint64, required, tag = "9", default = "16393")]
2360 pub buffer_size: u64,
2361 #[prost(string, required, tag = "10", default = "info")]
2362 pub log_level: ::prost::alloc::string::String,
2363 #[prost(string, required, tag = "11", default = "stdout")]
2364 pub log_target: ::prost::alloc::string::String,
2365 #[prost(string, optional, tag = "12")]
2366 pub access_logs_target: ::core::option::Option<::prost::alloc::string::String>,
2367 #[prost(uint64, required, tag = "13", default = "1000000")]
2368 pub command_buffer_size: u64,
2369 #[prost(uint64, required, tag = "14", default = "2000000")]
2370 pub max_command_buffer_size: u64,
2371 #[prost(message, optional, tag = "15")]
2372 pub metrics: ::core::option::Option<ServerMetricsConfig>,
2373 #[prost(enumeration = "ProtobufAccessLogFormat", required, tag = "16")]
2374 pub access_log_format: i32,
2375 #[prost(bool, required, tag = "17")]
2376 pub log_colored: bool,
2377 #[prost(string, optional, tag = "18")]
2383 pub audit_logs_target: ::core::option::Option<::prost::alloc::string::String>,
2384 #[prost(string, optional, tag = "19")]
2387 pub audit_logs_json_target: ::core::option::Option<::prost::alloc::string::String>,
2388 #[prost(uint64, optional, tag = "20")]
2396 pub slab_entries_per_connection: ::core::option::Option<u64>,
2397 #[prost(uint64, optional, tag = "21")]
2407 pub basic_auth_max_credential_bytes: ::core::option::Option<u64>,
2408 #[prost(bool, optional, tag = "22", default = "false")]
2412 pub evict_on_queue_full: ::core::option::Option<bool>,
2413 #[prost(uint64, optional, tag = "23", default = "0")]
2421 pub max_connections_per_ip: ::core::option::Option<u64>,
2422 #[prost(uint32, optional, tag = "24", default = "60")]
2429 pub retry_after: ::core::option::Option<u32>,
2430 #[prost(uint64, optional, tag = "25")]
2442 pub splice_pipe_capacity_bytes: ::core::option::Option<u64>,
2443}
2444#[derive(::serde::Serialize, ::serde::Deserialize)]
2446#[derive(Ord, PartialOrd)]
2447#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2448pub struct ListenersCount {
2449 #[prost(string, repeated, tag = "1")]
2451 pub http: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2452 #[prost(string, repeated, tag = "2")]
2454 pub tls: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2455 #[prost(string, repeated, tag = "3")]
2457 pub tcp: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2458 #[prost(string, repeated, tag = "4")]
2460 pub udp: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2461}
2462#[derive(::serde::Serialize, ::serde::Deserialize)]
2465#[derive(Ord, PartialOrd)]
2466#[derive(Hash, Eq)]
2467#[derive(Clone, PartialEq, ::prost::Message)]
2468pub struct InitialState {
2469 #[prost(message, repeated, tag = "1")]
2470 pub requests: ::prost::alloc::vec::Vec<WorkerRequest>,
2471}
2472#[derive(::serde::Serialize, ::serde::Deserialize)]
2473#[derive(Ord, PartialOrd)]
2474#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2475pub struct OpenTelemetry {
2476 #[prost(string, required, tag = "1")]
2477 pub trace_id: ::prost::alloc::string::String,
2478 #[prost(string, required, tag = "2")]
2479 pub span_id: ::prost::alloc::string::String,
2480 #[prost(string, optional, tag = "3")]
2481 pub parent_span_id: ::core::option::Option<::prost::alloc::string::String>,
2482}
2483#[derive(::serde::Serialize, ::serde::Deserialize)]
2485#[derive(Ord, PartialOrd)]
2486#[derive(Hash, Eq)]
2487#[derive(Clone, PartialEq, ::prost::Message)]
2488pub struct ProtobufAccessLog {
2489 #[prost(string, optional, tag = "1")]
2491 pub message: ::core::option::Option<::prost::alloc::string::String>,
2492 #[prost(message, required, tag = "2")]
2494 pub request_id: Uint128,
2495 #[prost(string, optional, tag = "3")]
2497 pub cluster_id: ::core::option::Option<::prost::alloc::string::String>,
2498 #[prost(string, optional, tag = "4")]
2500 pub backend_id: ::core::option::Option<::prost::alloc::string::String>,
2501 #[prost(message, optional, tag = "5")]
2503 pub session_address: ::core::option::Option<SocketAddress>,
2504 #[prost(message, optional, tag = "6")]
2506 pub backend_address: ::core::option::Option<SocketAddress>,
2507 #[prost(string, required, tag = "7")]
2509 pub protocol: ::prost::alloc::string::String,
2510 #[prost(message, required, tag = "8")]
2512 pub endpoint: ProtobufEndpoint,
2513 #[prost(uint64, optional, tag = "9")]
2515 pub client_rtt: ::core::option::Option<u64>,
2516 #[prost(uint64, optional, tag = "10")]
2518 pub server_rtt: ::core::option::Option<u64>,
2519 #[prost(uint64, required, tag = "13")]
2521 pub service_time: u64,
2522 #[prost(uint64, required, tag = "14")]
2524 pub bytes_in: u64,
2525 #[prost(uint64, required, tag = "15")]
2527 pub bytes_out: u64,
2528 #[prost(string, optional, tag = "16")]
2530 pub user_agent: ::core::option::Option<::prost::alloc::string::String>,
2531 #[prost(btree_map = "string, string", tag = "17")]
2533 pub tags: ::prost::alloc::collections::BTreeMap<
2534 ::prost::alloc::string::String,
2535 ::prost::alloc::string::String,
2536 >,
2537 #[prost(string, required, tag = "18")]
2539 pub tag: ::prost::alloc::string::String,
2540 #[prost(message, required, tag = "19")]
2542 pub time: Uint128,
2543 #[prost(uint64, optional, tag = "20")]
2547 pub request_time: ::core::option::Option<u64>,
2548 #[prost(uint64, optional, tag = "21")]
2550 pub response_time: ::core::option::Option<u64>,
2551 #[prost(message, optional, tag = "22")]
2553 pub otel: ::core::option::Option<OpenTelemetry>,
2554 #[prost(message, optional, tag = "23")]
2558 pub session_id: ::core::option::Option<Uint128>,
2559 #[prost(string, optional, tag = "24")]
2564 pub x_request_id: ::core::option::Option<::prost::alloc::string::String>,
2565 #[prost(string, optional, tag = "25")]
2569 pub tls_version: ::core::option::Option<::prost::alloc::string::String>,
2570 #[prost(string, optional, tag = "26")]
2575 pub tls_cipher: ::core::option::Option<::prost::alloc::string::String>,
2576 #[prost(string, optional, tag = "27")]
2580 pub tls_sni: ::core::option::Option<::prost::alloc::string::String>,
2581 #[prost(string, optional, tag = "28")]
2584 pub tls_alpn: ::core::option::Option<::prost::alloc::string::String>,
2585 #[prost(string, optional, tag = "29")]
2590 pub xff_chain: ::core::option::Option<::prost::alloc::string::String>,
2591 #[prost(message, optional, tag = "30")]
2599 pub start_time: ::core::option::Option<Uint128>,
2600}
2601#[derive(::serde::Serialize, ::serde::Deserialize)]
2602#[derive(Ord, PartialOrd)]
2603#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2604pub struct ProtobufEndpoint {
2605 #[prost(oneof = "protobuf_endpoint::Inner", tags = "1, 2")]
2606 pub inner: ::core::option::Option<protobuf_endpoint::Inner>,
2607}
2608pub mod protobuf_endpoint {
2610 #[derive(::serde::Serialize, ::serde::Deserialize)]
2611 #[serde(rename_all = "SCREAMING_SNAKE_CASE")]
2612 #[derive(Ord, PartialOrd)]
2613 #[derive(Clone, PartialEq, Eq, Hash, ::prost::Oneof)]
2614 pub enum Inner {
2615 #[prost(message, tag = "1")]
2616 Http(super::HttpEndpoint),
2617 #[prost(message, tag = "2")]
2618 Tcp(super::TcpEndpoint),
2619 }
2620}
2621#[derive(::serde::Serialize, ::serde::Deserialize)]
2622#[derive(Ord, PartialOrd)]
2623#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2624pub struct HttpEndpoint {
2625 #[prost(string, optional, tag = "1")]
2626 pub method: ::core::option::Option<::prost::alloc::string::String>,
2627 #[prost(string, optional, tag = "2")]
2628 pub authority: ::core::option::Option<::prost::alloc::string::String>,
2629 #[prost(string, optional, tag = "3")]
2630 pub path: ::core::option::Option<::prost::alloc::string::String>,
2631 #[prost(uint32, optional, tag = "4")]
2634 pub status: ::core::option::Option<u32>,
2635 #[prost(string, optional, tag = "5")]
2636 pub reason: ::core::option::Option<::prost::alloc::string::String>,
2637}
2638#[derive(::serde::Serialize, ::serde::Deserialize)]
2639#[derive(Ord, PartialOrd)]
2640#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
2641pub struct TcpEndpoint {}
2642#[derive(::serde::Serialize, ::serde::Deserialize)]
2643#[serde(rename_all = "SCREAMING_SNAKE_CASE")]
2644#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2645#[repr(i32)]
2646pub enum ListenerType {
2647 Http = 0,
2648 Https = 1,
2649 Tcp = 2,
2650 Udp = 3,
2651}
2652impl ListenerType {
2653 pub fn as_str_name(&self) -> &'static str {
2658 match self {
2659 Self::Http => "HTTP",
2660 Self::Https => "HTTPS",
2661 Self::Tcp => "TCP",
2662 Self::Udp => "UDP",
2663 }
2664 }
2665 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2667 match value {
2668 "HTTP" => Some(Self::Http),
2669 "HTTPS" => Some(Self::Https),
2670 "TCP" => Some(Self::Tcp),
2671 "UDP" => Some(Self::Udp),
2672 _ => None,
2673 }
2674 }
2675}
2676#[derive(::serde::Serialize, ::serde::Deserialize)]
2689#[serde(rename_all = "SCREAMING_SNAKE_CASE")]
2690#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2691#[repr(i32)]
2692pub enum RedirectPolicy {
2693 Forward = 0,
2694 Permanent = 1,
2695 Unauthorized = 2,
2696 Found = 3,
2697 PermanentRedirect = 4,
2698}
2699impl RedirectPolicy {
2700 pub fn as_str_name(&self) -> &'static str {
2705 match self {
2706 Self::Forward => "FORWARD",
2707 Self::Permanent => "PERMANENT",
2708 Self::Unauthorized => "UNAUTHORIZED",
2709 Self::Found => "FOUND",
2710 Self::PermanentRedirect => "PERMANENT_REDIRECT",
2711 }
2712 }
2713 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2715 match value {
2716 "FORWARD" => Some(Self::Forward),
2717 "PERMANENT" => Some(Self::Permanent),
2718 "UNAUTHORIZED" => Some(Self::Unauthorized),
2719 "FOUND" => Some(Self::Found),
2720 "PERMANENT_REDIRECT" => Some(Self::PermanentRedirect),
2721 _ => None,
2722 }
2723 }
2724}
2725#[derive(::serde::Serialize, ::serde::Deserialize)]
2729#[serde(rename_all = "SCREAMING_SNAKE_CASE")]
2730#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2731#[repr(i32)]
2732pub enum RedirectScheme {
2733 UseSame = 0,
2734 UseHttp = 1,
2735 UseHttps = 2,
2736}
2737impl RedirectScheme {
2738 pub fn as_str_name(&self) -> &'static str {
2743 match self {
2744 Self::UseSame => "USE_SAME",
2745 Self::UseHttp => "USE_HTTP",
2746 Self::UseHttps => "USE_HTTPS",
2747 }
2748 }
2749 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2751 match value {
2752 "USE_SAME" => Some(Self::UseSame),
2753 "USE_HTTP" => Some(Self::UseHttp),
2754 "USE_HTTPS" => Some(Self::UseHttps),
2755 _ => None,
2756 }
2757 }
2758}
2759#[derive(::serde::Serialize, ::serde::Deserialize)]
2764#[serde(rename_all = "SCREAMING_SNAKE_CASE")]
2765#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2766#[repr(i32)]
2767pub enum HeaderPosition {
2768 Unspecified = 0,
2774 Request = 1,
2775 Response = 2,
2776 Both = 3,
2777}
2778impl HeaderPosition {
2779 pub fn as_str_name(&self) -> &'static str {
2784 match self {
2785 Self::Unspecified => "HEADER_POSITION_UNSPECIFIED",
2786 Self::Request => "REQUEST",
2787 Self::Response => "RESPONSE",
2788 Self::Both => "BOTH",
2789 }
2790 }
2791 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2793 match value {
2794 "HEADER_POSITION_UNSPECIFIED" => Some(Self::Unspecified),
2795 "REQUEST" => Some(Self::Request),
2796 "RESPONSE" => Some(Self::Response),
2797 "BOTH" => Some(Self::Both),
2798 _ => None,
2799 }
2800 }
2801}
2802#[derive(::serde::Serialize, ::serde::Deserialize)]
2804#[serde(rename_all = "SCREAMING_SNAKE_CASE")]
2805#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2806#[repr(i32)]
2807pub enum PathRuleKind {
2808 Prefix = 0,
2810 Regex = 1,
2812 Equals = 2,
2814}
2815impl PathRuleKind {
2816 pub fn as_str_name(&self) -> &'static str {
2821 match self {
2822 Self::Prefix => "PREFIX",
2823 Self::Regex => "REGEX",
2824 Self::Equals => "EQUALS",
2825 }
2826 }
2827 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2829 match value {
2830 "PREFIX" => Some(Self::Prefix),
2831 "REGEX" => Some(Self::Regex),
2832 "EQUALS" => Some(Self::Equals),
2833 _ => None,
2834 }
2835 }
2836}
2837#[derive(::serde::Serialize, ::serde::Deserialize)]
2839#[serde(rename_all = "SCREAMING_SNAKE_CASE")]
2840#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2841#[repr(i32)]
2842pub enum RulePosition {
2843 Pre = 0,
2844 Post = 1,
2845 Tree = 2,
2846}
2847impl RulePosition {
2848 pub fn as_str_name(&self) -> &'static str {
2853 match self {
2854 Self::Pre => "PRE",
2855 Self::Post => "POST",
2856 Self::Tree => "TREE",
2857 }
2858 }
2859 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2861 match value {
2862 "PRE" => Some(Self::Pre),
2863 "POST" => Some(Self::Post),
2864 "TREE" => Some(Self::Tree),
2865 _ => None,
2866 }
2867 }
2868}
2869#[derive(::serde::Serialize, ::serde::Deserialize)]
2870#[serde(rename_all = "SCREAMING_SNAKE_CASE")]
2871#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2872#[repr(i32)]
2873pub enum TlsVersion {
2874 SslV2 = 0,
2875 SslV3 = 1,
2876 TlsV10 = 2,
2877 TlsV11 = 3,
2878 TlsV12 = 4,
2879 TlsV13 = 5,
2880}
2881impl TlsVersion {
2882 pub fn as_str_name(&self) -> &'static str {
2887 match self {
2888 Self::SslV2 => "SSL_V2",
2889 Self::SslV3 => "SSL_V3",
2890 Self::TlsV10 => "TLS_V1_0",
2891 Self::TlsV11 => "TLS_V1_1",
2892 Self::TlsV12 => "TLS_V1_2",
2893 Self::TlsV13 => "TLS_V1_3",
2894 }
2895 }
2896 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2898 match value {
2899 "SSL_V2" => Some(Self::SslV2),
2900 "SSL_V3" => Some(Self::SslV3),
2901 "TLS_V1_0" => Some(Self::TlsV10),
2902 "TLS_V1_1" => Some(Self::TlsV11),
2903 "TLS_V1_2" => Some(Self::TlsV12),
2904 "TLS_V1_3" => Some(Self::TlsV13),
2905 _ => None,
2906 }
2907 }
2908}
2909#[derive(::serde::Serialize, ::serde::Deserialize)]
2913#[serde(rename_all = "SCREAMING_SNAKE_CASE")]
2914#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2915#[repr(i32)]
2916pub enum UdpAffinityKey {
2917 SourceIp = 0,
2918 SourceIpPort = 1,
2919}
2920impl UdpAffinityKey {
2921 pub fn as_str_name(&self) -> &'static str {
2926 match self {
2927 Self::SourceIp => "SOURCE_IP",
2928 Self::SourceIpPort => "SOURCE_IP_PORT",
2929 }
2930 }
2931 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2933 match value {
2934 "SOURCE_IP" => Some(Self::SourceIp),
2935 "SOURCE_IP_PORT" => Some(Self::SourceIpPort),
2936 _ => None,
2937 }
2938 }
2939}
2940#[derive(::serde::Serialize, ::serde::Deserialize)]
2944#[serde(rename_all = "SCREAMING_SNAKE_CASE")]
2945#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2946#[repr(i32)]
2947pub enum UdpHealthMode {
2948 HealthOff = 0,
2949 TcpProbe = 1,
2950 UdpProbe = 2,
2951}
2952impl UdpHealthMode {
2953 pub fn as_str_name(&self) -> &'static str {
2958 match self {
2959 Self::HealthOff => "HEALTH_OFF",
2960 Self::TcpProbe => "TCP_PROBE",
2961 Self::UdpProbe => "UDP_PROBE",
2962 }
2963 }
2964 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2966 match value {
2967 "HEALTH_OFF" => Some(Self::HealthOff),
2968 "TCP_PROBE" => Some(Self::TcpProbe),
2969 "UDP_PROBE" => Some(Self::UdpProbe),
2970 _ => None,
2971 }
2972 }
2973}
2974#[derive(::serde::Serialize, ::serde::Deserialize)]
2975#[serde(rename_all = "SCREAMING_SNAKE_CASE")]
2976#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2977#[repr(i32)]
2978pub enum LoadBalancingAlgorithms {
2979 RoundRobin = 0,
2980 Random = 1,
2981 LeastLoaded = 2,
2982 PowerOfTwo = 3,
2983 Hrw = 4,
2987 Maglev = 5,
2990}
2991impl LoadBalancingAlgorithms {
2992 pub fn as_str_name(&self) -> &'static str {
2997 match self {
2998 Self::RoundRobin => "ROUND_ROBIN",
2999 Self::Random => "RANDOM",
3000 Self::LeastLoaded => "LEAST_LOADED",
3001 Self::PowerOfTwo => "POWER_OF_TWO",
3002 Self::Hrw => "HRW",
3003 Self::Maglev => "MAGLEV",
3004 }
3005 }
3006 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
3008 match value {
3009 "ROUND_ROBIN" => Some(Self::RoundRobin),
3010 "RANDOM" => Some(Self::Random),
3011 "LEAST_LOADED" => Some(Self::LeastLoaded),
3012 "POWER_OF_TWO" => Some(Self::PowerOfTwo),
3013 "HRW" => Some(Self::Hrw),
3014 "MAGLEV" => Some(Self::Maglev),
3015 _ => None,
3016 }
3017 }
3018}
3019#[derive(::serde::Serialize, ::serde::Deserialize)]
3020#[serde(rename_all = "SCREAMING_SNAKE_CASE")]
3021#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
3022#[repr(i32)]
3023pub enum ProxyProtocolConfig {
3024 ExpectHeader = 0,
3025 SendHeader = 1,
3026 RelayHeader = 2,
3027}
3028impl ProxyProtocolConfig {
3029 pub fn as_str_name(&self) -> &'static str {
3034 match self {
3035 Self::ExpectHeader => "EXPECT_HEADER",
3036 Self::SendHeader => "SEND_HEADER",
3037 Self::RelayHeader => "RELAY_HEADER",
3038 }
3039 }
3040 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
3042 match value {
3043 "EXPECT_HEADER" => Some(Self::ExpectHeader),
3044 "SEND_HEADER" => Some(Self::SendHeader),
3045 "RELAY_HEADER" => Some(Self::RelayHeader),
3046 _ => None,
3047 }
3048 }
3049}
3050#[derive(::serde::Serialize, ::serde::Deserialize)]
3052#[serde(rename_all = "SCREAMING_SNAKE_CASE")]
3053#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
3054#[repr(i32)]
3055pub enum LoadMetric {
3056 Connections = 0,
3058 Requests = 1,
3060 ConnectionTime = 2,
3062}
3063impl LoadMetric {
3064 pub fn as_str_name(&self) -> &'static str {
3069 match self {
3070 Self::Connections => "CONNECTIONS",
3071 Self::Requests => "REQUESTS",
3072 Self::ConnectionTime => "CONNECTION_TIME",
3073 }
3074 }
3075 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
3077 match value {
3078 "CONNECTIONS" => Some(Self::Connections),
3079 "REQUESTS" => Some(Self::Requests),
3080 "CONNECTION_TIME" => Some(Self::ConnectionTime),
3081 _ => None,
3082 }
3083 }
3084}
3085#[derive(::serde::Serialize, ::serde::Deserialize)]
3087#[serde(rename_all = "SCREAMING_SNAKE_CASE")]
3088#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
3089#[repr(i32)]
3090pub enum MetricsConfiguration {
3091 Enabled = 0,
3093 Disabled = 1,
3095 Clear = 2,
3097}
3098impl MetricsConfiguration {
3099 pub fn as_str_name(&self) -> &'static str {
3104 match self {
3105 Self::Enabled => "ENABLED",
3106 Self::Disabled => "DISABLED",
3107 Self::Clear => "CLEAR",
3108 }
3109 }
3110 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
3112 match value {
3113 "ENABLED" => Some(Self::Enabled),
3114 "DISABLED" => Some(Self::Disabled),
3115 "CLEAR" => Some(Self::Clear),
3116 _ => None,
3117 }
3118 }
3119}
3120#[derive(::serde::Serialize, ::serde::Deserialize)]
3121#[serde(rename_all = "SCREAMING_SNAKE_CASE")]
3122#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
3123#[repr(i32)]
3124pub enum EventKind {
3125 BackendDown = 0,
3126 BackendUp = 1,
3127 NoAvailableBackends = 2,
3128 RemovedBackendHasNoConnections = 3,
3129 ClusterAdded = 4,
3136 ClusterRemoved = 5,
3137 FrontendAdded = 6,
3138 FrontendRemoved = 7,
3139 CertificateAdded = 8,
3140 CertificateRemoved = 9,
3141 CertificateReplaced = 10,
3142 ListenerActivated = 11,
3143 ListenerDeactivated = 12,
3144 ConfigurationReloaded = 13,
3145 WorkerKilled = 14,
3146 WorkerRelaunched = 15,
3147 LoggingLevelChanged = 16,
3148 MetricsConfigured = 17,
3149 ListenerUpdated = 18,
3151 StateLoaded = 19,
3155 StateSaved = 20,
3157 ListenerAdded = 21,
3161 ListenerRemoved = 22,
3165 SozuStopRequested = 23,
3169 MainUpgraded = 24,
3171 WorkerUpgraded = 25,
3173 EventsSubscribed = 26,
3176 HealthCheckHealthy = 27,
3182 HealthCheckUnhealthy = 28,
3184 ClusterRecovered = 29,
3188 MetricDetailChanged = 30,
3202}
3203impl EventKind {
3204 pub fn as_str_name(&self) -> &'static str {
3209 match self {
3210 Self::BackendDown => "BACKEND_DOWN",
3211 Self::BackendUp => "BACKEND_UP",
3212 Self::NoAvailableBackends => "NO_AVAILABLE_BACKENDS",
3213 Self::RemovedBackendHasNoConnections => "REMOVED_BACKEND_HAS_NO_CONNECTIONS",
3214 Self::ClusterAdded => "CLUSTER_ADDED",
3215 Self::ClusterRemoved => "CLUSTER_REMOVED",
3216 Self::FrontendAdded => "FRONTEND_ADDED",
3217 Self::FrontendRemoved => "FRONTEND_REMOVED",
3218 Self::CertificateAdded => "CERTIFICATE_ADDED",
3219 Self::CertificateRemoved => "CERTIFICATE_REMOVED",
3220 Self::CertificateReplaced => "CERTIFICATE_REPLACED",
3221 Self::ListenerActivated => "LISTENER_ACTIVATED",
3222 Self::ListenerDeactivated => "LISTENER_DEACTIVATED",
3223 Self::ConfigurationReloaded => "CONFIGURATION_RELOADED",
3224 Self::WorkerKilled => "WORKER_KILLED",
3225 Self::WorkerRelaunched => "WORKER_RELAUNCHED",
3226 Self::LoggingLevelChanged => "LOGGING_LEVEL_CHANGED",
3227 Self::MetricsConfigured => "METRICS_CONFIGURED",
3228 Self::ListenerUpdated => "LISTENER_UPDATED",
3229 Self::StateLoaded => "STATE_LOADED",
3230 Self::StateSaved => "STATE_SAVED",
3231 Self::ListenerAdded => "LISTENER_ADDED",
3232 Self::ListenerRemoved => "LISTENER_REMOVED",
3233 Self::SozuStopRequested => "SOZU_STOP_REQUESTED",
3234 Self::MainUpgraded => "MAIN_UPGRADED",
3235 Self::WorkerUpgraded => "WORKER_UPGRADED",
3236 Self::EventsSubscribed => "EVENTS_SUBSCRIBED",
3237 Self::HealthCheckHealthy => "HEALTH_CHECK_HEALTHY",
3238 Self::HealthCheckUnhealthy => "HEALTH_CHECK_UNHEALTHY",
3239 Self::ClusterRecovered => "CLUSTER_RECOVERED",
3240 Self::MetricDetailChanged => "METRIC_DETAIL_CHANGED",
3241 }
3242 }
3243 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
3245 match value {
3246 "BACKEND_DOWN" => Some(Self::BackendDown),
3247 "BACKEND_UP" => Some(Self::BackendUp),
3248 "NO_AVAILABLE_BACKENDS" => Some(Self::NoAvailableBackends),
3249 "REMOVED_BACKEND_HAS_NO_CONNECTIONS" => {
3250 Some(Self::RemovedBackendHasNoConnections)
3251 }
3252 "CLUSTER_ADDED" => Some(Self::ClusterAdded),
3253 "CLUSTER_REMOVED" => Some(Self::ClusterRemoved),
3254 "FRONTEND_ADDED" => Some(Self::FrontendAdded),
3255 "FRONTEND_REMOVED" => Some(Self::FrontendRemoved),
3256 "CERTIFICATE_ADDED" => Some(Self::CertificateAdded),
3257 "CERTIFICATE_REMOVED" => Some(Self::CertificateRemoved),
3258 "CERTIFICATE_REPLACED" => Some(Self::CertificateReplaced),
3259 "LISTENER_ACTIVATED" => Some(Self::ListenerActivated),
3260 "LISTENER_DEACTIVATED" => Some(Self::ListenerDeactivated),
3261 "CONFIGURATION_RELOADED" => Some(Self::ConfigurationReloaded),
3262 "WORKER_KILLED" => Some(Self::WorkerKilled),
3263 "WORKER_RELAUNCHED" => Some(Self::WorkerRelaunched),
3264 "LOGGING_LEVEL_CHANGED" => Some(Self::LoggingLevelChanged),
3265 "METRICS_CONFIGURED" => Some(Self::MetricsConfigured),
3266 "LISTENER_UPDATED" => Some(Self::ListenerUpdated),
3267 "STATE_LOADED" => Some(Self::StateLoaded),
3268 "STATE_SAVED" => Some(Self::StateSaved),
3269 "LISTENER_ADDED" => Some(Self::ListenerAdded),
3270 "LISTENER_REMOVED" => Some(Self::ListenerRemoved),
3271 "SOZU_STOP_REQUESTED" => Some(Self::SozuStopRequested),
3272 "MAIN_UPGRADED" => Some(Self::MainUpgraded),
3273 "WORKER_UPGRADED" => Some(Self::WorkerUpgraded),
3274 "EVENTS_SUBSCRIBED" => Some(Self::EventsSubscribed),
3275 "HEALTH_CHECK_HEALTHY" => Some(Self::HealthCheckHealthy),
3276 "HEALTH_CHECK_UNHEALTHY" => Some(Self::HealthCheckUnhealthy),
3277 "CLUSTER_RECOVERED" => Some(Self::ClusterRecovered),
3278 "METRIC_DETAIL_CHANGED" => Some(Self::MetricDetailChanged),
3279 _ => None,
3280 }
3281 }
3282}
3283#[derive(::serde::Serialize, ::serde::Deserialize)]
3284#[serde(rename_all = "SCREAMING_SNAKE_CASE")]
3285#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
3286#[repr(i32)]
3287pub enum ResponseStatus {
3288 Ok = 0,
3289 Processing = 1,
3290 Failure = 2,
3291}
3292impl ResponseStatus {
3293 pub fn as_str_name(&self) -> &'static str {
3298 match self {
3299 Self::Ok => "OK",
3300 Self::Processing => "PROCESSING",
3301 Self::Failure => "FAILURE",
3302 }
3303 }
3304 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
3306 match value {
3307 "OK" => Some(Self::Ok),
3308 "PROCESSING" => Some(Self::Processing),
3309 "FAILURE" => Some(Self::Failure),
3310 _ => None,
3311 }
3312 }
3313}
3314#[derive(::serde::Serialize, ::serde::Deserialize)]
3316#[serde(rename_all = "SCREAMING_SNAKE_CASE")]
3317#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
3318#[repr(i32)]
3319pub enum RunState {
3320 Running = 0,
3321 Stopping = 1,
3322 Stopped = 2,
3323 NotAnswering = 3,
3324}
3325impl RunState {
3326 pub fn as_str_name(&self) -> &'static str {
3331 match self {
3332 Self::Running => "RUNNING",
3333 Self::Stopping => "STOPPING",
3334 Self::Stopped => "STOPPED",
3335 Self::NotAnswering => "NOT_ANSWERING",
3336 }
3337 }
3338 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
3340 match value {
3341 "RUNNING" => Some(Self::Running),
3342 "STOPPING" => Some(Self::Stopping),
3343 "STOPPED" => Some(Self::Stopped),
3344 "NOT_ANSWERING" => Some(Self::NotAnswering),
3345 _ => None,
3346 }
3347 }
3348}
3349#[derive(::serde::Serialize, ::serde::Deserialize)]
3356#[serde(rename_all = "SCREAMING_SNAKE_CASE")]
3357#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
3358#[repr(i32)]
3359pub enum MetricDetail {
3360 DetailProcess = 0,
3362 DetailFrontend = 1,
3364 DetailCluster = 2,
3366 DetailBackend = 3,
3368}
3369impl MetricDetail {
3370 pub fn as_str_name(&self) -> &'static str {
3375 match self {
3376 Self::DetailProcess => "DETAIL_PROCESS",
3377 Self::DetailFrontend => "DETAIL_FRONTEND",
3378 Self::DetailCluster => "DETAIL_CLUSTER",
3379 Self::DetailBackend => "DETAIL_BACKEND",
3380 }
3381 }
3382 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
3384 match value {
3385 "DETAIL_PROCESS" => Some(Self::DetailProcess),
3386 "DETAIL_FRONTEND" => Some(Self::DetailFrontend),
3387 "DETAIL_CLUSTER" => Some(Self::DetailCluster),
3388 "DETAIL_BACKEND" => Some(Self::DetailBackend),
3389 _ => None,
3390 }
3391 }
3392}
3393#[derive(::serde::Serialize, ::serde::Deserialize)]
3394#[serde(rename_all = "SCREAMING_SNAKE_CASE")]
3395#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
3396#[repr(i32)]
3397pub enum ProtobufAccessLogFormat {
3398 Ascii = 1,
3399 Protobuf = 2,
3400}
3401impl ProtobufAccessLogFormat {
3402 pub fn as_str_name(&self) -> &'static str {
3407 match self {
3408 Self::Ascii => "Ascii",
3409 Self::Protobuf => "Protobuf",
3410 }
3411 }
3412 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
3414 match value {
3415 "Ascii" => Some(Self::Ascii),
3416 "Protobuf" => Some(Self::Protobuf),
3417 _ => None,
3418 }
3419 }
3420}