1#[derive(::serde::Serialize, ::serde::Deserialize)]
4#[derive(Ord, PartialOrd)]
5#[derive(Eq)]
6#[derive(Hash)]
7#[derive(Clone, PartialEq, ::prost::Message)]
8#[prost(skip_debug)]
9pub struct Request {
10 #[prost(
11 oneof = "request::RequestType",
12 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"
13 )]
14 pub request_type: ::core::option::Option<request::RequestType>,
15}
16pub mod request {
18 #[derive(::serde::Serialize, ::serde::Deserialize)]
19 #[serde(rename_all = "SCREAMING_SNAKE_CASE")]
20 #[allow(clippy::large_enum_variant)]
21 #[derive(Hash, Eq, Ord, PartialOrd)]
22 #[derive(Clone, PartialEq, ::prost::Oneof)]
23 #[prost(skip_debug)]
24 pub enum RequestType {
25 #[prost(string, tag = "1")]
32 SaveState(::prost::alloc::string::String),
33 #[prost(string, tag = "2")]
35 LoadState(::prost::alloc::string::String),
36 #[prost(message, tag = "4")]
38 ListWorkers(super::ListWorkers),
39 #[prost(message, tag = "5")]
41 ListFrontends(super::FrontendFilters),
42 #[prost(message, tag = "6")]
44 ListListeners(super::ListListeners),
45 #[prost(string, tag = "7")]
50 LaunchWorker(::prost::alloc::string::String),
51 #[prost(message, tag = "8")]
53 UpgradeMain(super::UpgradeMain),
54 #[prost(uint32, tag = "9")]
56 UpgradeWorker(u32),
57 #[prost(message, tag = "10")]
59 SubscribeEvents(super::SubscribeEvents),
60 #[prost(string, tag = "11")]
64 ReloadConfiguration(::prost::alloc::string::String),
65 #[prost(message, tag = "12")]
67 Status(super::Status),
68 #[prost(message, tag = "13")]
70 AddCluster(super::Cluster),
71 #[prost(string, tag = "14")]
73 RemoveCluster(::prost::alloc::string::String),
74 #[prost(message, tag = "15")]
76 AddHttpFrontend(super::RequestHttpFrontend),
77 #[prost(message, tag = "16")]
79 RemoveHttpFrontend(super::RequestHttpFrontend),
80 #[prost(message, tag = "17")]
82 AddHttpsFrontend(super::RequestHttpFrontend),
83 #[prost(message, tag = "18")]
85 RemoveHttpsFrontend(super::RequestHttpFrontend),
86 #[prost(message, tag = "19")]
88 AddCertificate(super::AddCertificate),
89 #[prost(message, tag = "20")]
91 ReplaceCertificate(super::ReplaceCertificate),
92 #[prost(message, tag = "21")]
94 RemoveCertificate(super::RemoveCertificate),
95 #[prost(message, tag = "22")]
97 AddTcpFrontend(super::RequestTcpFrontend),
98 #[prost(message, tag = "23")]
100 RemoveTcpFrontend(super::RequestTcpFrontend),
101 #[prost(message, tag = "24")]
103 AddBackend(super::AddBackend),
104 #[prost(message, tag = "25")]
106 RemoveBackend(super::RemoveBackend),
107 #[prost(message, tag = "26")]
109 AddHttpListener(super::HttpListenerConfig),
110 #[prost(message, tag = "27")]
112 AddHttpsListener(super::HttpsListenerConfig),
113 #[prost(message, tag = "28")]
115 AddTcpListener(super::TcpListenerConfig),
116 #[prost(message, tag = "29")]
118 RemoveListener(super::RemoveListener),
119 #[prost(message, tag = "30")]
121 ActivateListener(super::ActivateListener),
122 #[prost(message, tag = "31")]
124 DeactivateListener(super::DeactivateListener),
125 #[prost(string, tag = "35")]
127 QueryClusterById(::prost::alloc::string::String),
128 #[prost(message, tag = "36")]
130 QueryClustersByDomain(super::QueryClusterByDomain),
131 #[prost(message, tag = "37")]
133 QueryClustersHashes(super::QueryClustersHashes),
134 #[prost(message, tag = "38")]
136 QueryMetrics(super::QueryMetricsOptions),
137 #[prost(message, tag = "39")]
139 SoftStop(super::SoftStop),
140 #[prost(message, tag = "40")]
142 HardStop(super::HardStop),
143 #[prost(enumeration = "super::MetricsConfiguration", tag = "41")]
145 ConfigureMetrics(i32),
146 #[prost(string, tag = "42")]
148 Logging(::prost::alloc::string::String),
149 #[prost(message, tag = "43")]
151 ReturnListenSockets(super::ReturnListenSockets),
152 #[prost(message, tag = "44")]
154 QueryCertificatesFromTheState(super::QueryCertificatesFilters),
155 #[prost(message, tag = "45")]
157 QueryCertificatesFromWorkers(super::QueryCertificatesFilters),
158 #[prost(message, tag = "46")]
161 CountRequests(super::CountRequests),
162 #[prost(message, tag = "47")]
164 UpdateHttpListener(super::UpdateHttpListenerConfig),
165 #[prost(message, tag = "48")]
167 UpdateHttpsListener(super::UpdateHttpsListenerConfig),
168 #[prost(message, tag = "49")]
170 UpdateTcpListener(super::UpdateTcpListenerConfig),
171 #[prost(uint64, tag = "50")]
175 SetMaxConnectionsPerIp(u64),
176 #[prost(message, tag = "51")]
179 QueryMaxConnectionsPerIp(super::QueryMaxConnectionsPerIp),
180 #[prost(message, tag = "52")]
185 SetHealthCheck(super::SetHealthCheck),
186 #[prost(string, tag = "53")]
188 RemoveHealthCheck(::prost::alloc::string::String),
189 #[prost(message, tag = "54")]
191 QueryHealthChecks(super::QueryHealthChecks),
192 #[prost(message, tag = "55")]
199 SetMetricDetail(super::SetMetricDetail),
200 #[prost(message, tag = "56")]
202 AddUdpListener(super::UdpListenerConfig),
203 #[prost(message, tag = "57")]
205 UpdateUdpListener(super::UpdateUdpListenerConfig),
206 #[prost(message, tag = "58")]
208 AddUdpFrontend(super::RequestUdpFrontend),
209 #[prost(message, tag = "59")]
211 RemoveUdpFrontend(super::RequestUdpFrontend),
212 }
213}
214#[derive(::serde::Serialize, ::serde::Deserialize)]
215#[derive(Ord, PartialOrd)]
216#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
217pub struct QueryHealthChecks {
218 #[prost(string, optional, tag = "1")]
219 pub cluster_id: ::core::option::Option<::prost::alloc::string::String>,
220}
221#[derive(::serde::Serialize, ::serde::Deserialize)]
222#[derive(Ord, PartialOrd)]
223#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
224pub struct SetHealthCheck {
225 #[prost(string, required, tag = "1")]
226 pub cluster_id: ::prost::alloc::string::String,
227 #[prost(message, required, tag = "2")]
228 pub config: HealthCheckConfig,
229}
230#[derive(::serde::Serialize, ::serde::Deserialize)]
231#[derive(Ord, PartialOrd)]
232#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
233pub struct ListWorkers {}
234#[derive(::serde::Serialize, ::serde::Deserialize)]
235#[derive(Ord, PartialOrd)]
236#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
237pub struct ListListeners {}
238#[derive(::serde::Serialize, ::serde::Deserialize)]
239#[derive(Ord, PartialOrd)]
240#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
241pub struct UpgradeMain {}
242#[derive(::serde::Serialize, ::serde::Deserialize)]
243#[derive(Ord, PartialOrd)]
244#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
245pub struct SubscribeEvents {}
246#[derive(::serde::Serialize, ::serde::Deserialize)]
247#[derive(Ord, PartialOrd)]
248#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
249pub struct Status {}
250#[derive(::serde::Serialize, ::serde::Deserialize)]
251#[derive(Ord, PartialOrd)]
252#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
253pub struct QueryClustersHashes {}
254#[derive(::serde::Serialize, ::serde::Deserialize)]
255#[derive(Ord, PartialOrd)]
256#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
257pub struct SoftStop {}
258#[derive(::serde::Serialize, ::serde::Deserialize)]
259#[derive(Ord, PartialOrd)]
260#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
261pub struct HardStop {}
262#[derive(::serde::Serialize, ::serde::Deserialize)]
263#[derive(Ord, PartialOrd)]
264#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
265pub struct ReturnListenSockets {}
266#[derive(::serde::Serialize, ::serde::Deserialize)]
267#[derive(Ord, PartialOrd)]
268#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
269pub struct CountRequests {}
270#[derive(::serde::Serialize, ::serde::Deserialize)]
271#[derive(Ord, PartialOrd)]
272#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
273pub struct QueryMaxConnectionsPerIp {}
274#[derive(::serde::Serialize, ::serde::Deserialize)]
279#[derive(Ord, PartialOrd)]
280#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
281pub struct AlpnProtocols {
282 #[prost(string, repeated, tag = "1")]
283 pub values: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
284}
285#[derive(::serde::Serialize, ::serde::Deserialize)]
291#[derive(Ord, PartialOrd)]
292#[derive(Hash, Eq)]
293#[derive(Clone, PartialEq, ::prost::Message)]
294#[prost(skip_debug)]
295pub struct UpdateHttpListenerConfig {
296 #[prost(message, required, tag = "1")]
298 pub address: SocketAddress,
299 #[prost(message, optional, tag = "2")]
300 pub public_address: ::core::option::Option<SocketAddress>,
301 #[prost(bool, optional, tag = "3")]
302 pub expect_proxy: ::core::option::Option<bool>,
303 #[prost(string, optional, tag = "4")]
304 pub sticky_name: ::core::option::Option<::prost::alloc::string::String>,
305 #[prost(uint32, optional, tag = "5")]
307 pub front_timeout: ::core::option::Option<u32>,
308 #[prost(uint32, optional, tag = "6")]
310 pub back_timeout: ::core::option::Option<u32>,
311 #[prost(uint32, optional, tag = "7")]
313 pub connect_timeout: ::core::option::Option<u32>,
314 #[prost(uint32, optional, tag = "8")]
316 pub request_timeout: ::core::option::Option<u32>,
317 #[prost(message, optional, tag = "9")]
321 pub http_answers: ::core::option::Option<CustomHttpAnswers>,
322 #[prost(uint32, optional, tag = "20")]
326 pub h2_max_rst_stream_per_window: ::core::option::Option<u32>,
327 #[prost(uint32, optional, tag = "21")]
329 pub h2_max_ping_per_window: ::core::option::Option<u32>,
330 #[prost(uint32, optional, tag = "22")]
332 pub h2_max_settings_per_window: ::core::option::Option<u32>,
333 #[prost(uint32, optional, tag = "23")]
335 pub h2_max_empty_data_per_window: ::core::option::Option<u32>,
336 #[prost(uint32, optional, tag = "24")]
338 pub h2_max_continuation_frames: ::core::option::Option<u32>,
339 #[prost(uint32, optional, tag = "25")]
341 pub h2_max_glitch_count: ::core::option::Option<u32>,
342 #[prost(uint32, optional, tag = "26")]
344 pub h2_initial_connection_window: ::core::option::Option<u32>,
345 #[prost(uint32, optional, tag = "27")]
347 pub h2_max_concurrent_streams: ::core::option::Option<u32>,
348 #[prost(uint32, optional, tag = "28")]
350 pub h2_stream_shrink_ratio: ::core::option::Option<u32>,
351 #[prost(uint64, optional, tag = "29")]
353 pub h2_max_rst_stream_lifetime: ::core::option::Option<u64>,
354 #[prost(uint64, optional, tag = "30")]
356 pub h2_max_rst_stream_abusive_lifetime: ::core::option::Option<u64>,
357 #[prost(uint64, optional, tag = "31")]
359 pub h2_max_rst_stream_emitted_lifetime: ::core::option::Option<u64>,
360 #[prost(uint32, optional, tag = "32")]
362 pub h2_max_header_list_size: ::core::option::Option<u32>,
363 #[prost(uint32, optional, tag = "33")]
365 pub h2_max_header_table_size: ::core::option::Option<u32>,
366 #[prost(uint32, optional, tag = "34")]
368 pub h2_stream_idle_timeout_seconds: ::core::option::Option<u32>,
369 #[prost(uint32, optional, tag = "35")]
371 pub h2_graceful_shutdown_deadline_seconds: ::core::option::Option<u32>,
372 #[prost(uint32, optional, tag = "36")]
374 pub h2_max_window_update_stream0_per_window: ::core::option::Option<u32>,
375 #[prost(string, optional, tag = "37")]
377 pub sozu_id_header: ::core::option::Option<::prost::alloc::string::String>,
378 #[prost(btree_map = "string, string", tag = "38")]
384 pub answers: ::prost::alloc::collections::BTreeMap<
385 ::prost::alloc::string::String,
386 ::prost::alloc::string::String,
387 >,
388 #[prost(bool, optional, tag = "39")]
391 pub elide_x_real_ip: ::core::option::Option<bool>,
392 #[prost(bool, optional, tag = "40")]
395 pub send_x_real_ip: ::core::option::Option<bool>,
396 #[prost(uint32, optional, tag = "41")]
398 pub h2_max_header_fields: ::core::option::Option<u32>,
399}
400#[derive(::serde::Serialize, ::serde::Deserialize)]
408#[derive(Ord, PartialOrd)]
409#[derive(Hash, Eq)]
410#[derive(Clone, PartialEq, ::prost::Message)]
411#[prost(skip_debug)]
412pub struct UpdateHttpsListenerConfig {
413 #[prost(message, required, tag = "1")]
415 pub address: SocketAddress,
416 #[prost(message, optional, tag = "2")]
417 pub public_address: ::core::option::Option<SocketAddress>,
418 #[prost(bool, optional, tag = "3")]
419 pub expect_proxy: ::core::option::Option<bool>,
420 #[prost(string, optional, tag = "4")]
421 pub sticky_name: ::core::option::Option<::prost::alloc::string::String>,
422 #[prost(uint32, optional, tag = "5")]
424 pub front_timeout: ::core::option::Option<u32>,
425 #[prost(uint32, optional, tag = "6")]
427 pub back_timeout: ::core::option::Option<u32>,
428 #[prost(uint32, optional, tag = "7")]
430 pub connect_timeout: ::core::option::Option<u32>,
431 #[prost(uint32, optional, tag = "8")]
433 pub request_timeout: ::core::option::Option<u32>,
434 #[prost(message, optional, tag = "9")]
438 pub http_answers: ::core::option::Option<CustomHttpAnswers>,
439 #[prost(message, optional, tag = "10")]
444 pub alpn_protocols: ::core::option::Option<AlpnProtocols>,
445 #[prost(bool, optional, tag = "11")]
447 pub strict_sni_binding: ::core::option::Option<bool>,
448 #[prost(bool, optional, tag = "12")]
450 pub disable_http11: ::core::option::Option<bool>,
451 #[prost(uint32, optional, tag = "20")]
455 pub h2_max_rst_stream_per_window: ::core::option::Option<u32>,
456 #[prost(uint32, optional, tag = "21")]
458 pub h2_max_ping_per_window: ::core::option::Option<u32>,
459 #[prost(uint32, optional, tag = "22")]
461 pub h2_max_settings_per_window: ::core::option::Option<u32>,
462 #[prost(uint32, optional, tag = "23")]
464 pub h2_max_empty_data_per_window: ::core::option::Option<u32>,
465 #[prost(uint32, optional, tag = "24")]
467 pub h2_max_continuation_frames: ::core::option::Option<u32>,
468 #[prost(uint32, optional, tag = "25")]
470 pub h2_max_glitch_count: ::core::option::Option<u32>,
471 #[prost(uint32, optional, tag = "26")]
473 pub h2_initial_connection_window: ::core::option::Option<u32>,
474 #[prost(uint32, optional, tag = "27")]
476 pub h2_max_concurrent_streams: ::core::option::Option<u32>,
477 #[prost(uint32, optional, tag = "28")]
479 pub h2_stream_shrink_ratio: ::core::option::Option<u32>,
480 #[prost(uint64, optional, tag = "29")]
482 pub h2_max_rst_stream_lifetime: ::core::option::Option<u64>,
483 #[prost(uint64, optional, tag = "30")]
485 pub h2_max_rst_stream_abusive_lifetime: ::core::option::Option<u64>,
486 #[prost(uint64, optional, tag = "31")]
488 pub h2_max_rst_stream_emitted_lifetime: ::core::option::Option<u64>,
489 #[prost(uint32, optional, tag = "32")]
491 pub h2_max_header_list_size: ::core::option::Option<u32>,
492 #[prost(uint32, optional, tag = "33")]
494 pub h2_max_header_table_size: ::core::option::Option<u32>,
495 #[prost(uint32, optional, tag = "34")]
497 pub h2_stream_idle_timeout_seconds: ::core::option::Option<u32>,
498 #[prost(uint32, optional, tag = "35")]
500 pub h2_graceful_shutdown_deadline_seconds: ::core::option::Option<u32>,
501 #[prost(uint32, optional, tag = "36")]
503 pub h2_max_window_update_stream0_per_window: ::core::option::Option<u32>,
504 #[prost(string, optional, tag = "37")]
506 pub sozu_id_header: ::core::option::Option<::prost::alloc::string::String>,
507 #[prost(btree_map = "string, string", tag = "38")]
513 pub answers: ::prost::alloc::collections::BTreeMap<
514 ::prost::alloc::string::String,
515 ::prost::alloc::string::String,
516 >,
517 #[prost(bool, optional, tag = "39")]
520 pub elide_x_real_ip: ::core::option::Option<bool>,
521 #[prost(bool, optional, tag = "40")]
524 pub send_x_real_ip: ::core::option::Option<bool>,
525 #[prost(message, optional, tag = "41")]
533 pub hsts: ::core::option::Option<HstsConfig>,
534 #[prost(uint32, optional, tag = "42")]
536 pub h2_max_header_fields: ::core::option::Option<u32>,
537}
538#[derive(::serde::Serialize, ::serde::Deserialize)]
543#[derive(Ord, PartialOrd)]
544#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
545pub struct UpdateTcpListenerConfig {
546 #[prost(message, required, tag = "1")]
548 pub address: SocketAddress,
549 #[prost(message, optional, tag = "2")]
550 pub public_address: ::core::option::Option<SocketAddress>,
551 #[prost(bool, optional, tag = "3")]
552 pub expect_proxy: ::core::option::Option<bool>,
553 #[prost(uint32, optional, tag = "4")]
555 pub front_timeout: ::core::option::Option<u32>,
556 #[prost(uint32, optional, tag = "5")]
558 pub back_timeout: ::core::option::Option<u32>,
559 #[prost(uint32, optional, tag = "6")]
561 pub connect_timeout: ::core::option::Option<u32>,
562}
563#[derive(::serde::Serialize, ::serde::Deserialize)]
569#[derive(Ord, PartialOrd)]
570#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
571pub struct UpdateUdpListenerConfig {
572 #[prost(message, required, tag = "1")]
574 pub address: SocketAddress,
575 #[prost(message, optional, tag = "2")]
576 pub public_address: ::core::option::Option<SocketAddress>,
577 #[prost(uint32, optional, tag = "3")]
579 pub front_timeout: ::core::option::Option<u32>,
580 #[prost(uint32, optional, tag = "4")]
582 pub back_timeout: ::core::option::Option<u32>,
583 #[prost(uint32, optional, tag = "5")]
585 pub max_rx_datagram_size: ::core::option::Option<u32>,
586 #[prost(uint32, optional, tag = "6")]
588 pub max_flows: ::core::option::Option<u32>,
589}
590#[derive(::serde::Serialize, ::serde::Deserialize)]
592#[derive(Ord, PartialOrd)]
593#[derive(Hash, Eq)]
594#[derive(Clone, PartialEq, ::prost::Message)]
595#[prost(skip_debug)]
596pub struct HttpListenerConfig {
597 #[prost(message, required, tag = "1")]
598 pub address: SocketAddress,
599 #[prost(message, optional, tag = "2")]
600 pub public_address: ::core::option::Option<SocketAddress>,
601 #[prost(bool, required, tag = "5", default = "false")]
602 pub expect_proxy: bool,
603 #[prost(string, required, tag = "6")]
604 pub sticky_name: ::prost::alloc::string::String,
605 #[prost(uint32, required, tag = "7", default = "60")]
607 pub front_timeout: u32,
608 #[prost(uint32, required, tag = "8", default = "30")]
610 pub back_timeout: u32,
611 #[prost(uint32, required, tag = "9", default = "3")]
613 pub connect_timeout: u32,
614 #[prost(uint32, required, tag = "10", default = "10")]
616 pub request_timeout: u32,
617 #[prost(bool, required, tag = "11", default = "false")]
619 pub active: bool,
620 #[prost(message, optional, tag = "12")]
624 pub http_answers: ::core::option::Option<CustomHttpAnswers>,
625 #[prost(uint32, optional, tag = "13")]
629 pub h2_max_rst_stream_per_window: ::core::option::Option<u32>,
630 #[prost(uint32, optional, tag = "14")]
632 pub h2_max_ping_per_window: ::core::option::Option<u32>,
633 #[prost(uint32, optional, tag = "15")]
635 pub h2_max_settings_per_window: ::core::option::Option<u32>,
636 #[prost(uint32, optional, tag = "16")]
638 pub h2_max_empty_data_per_window: ::core::option::Option<u32>,
639 #[prost(uint32, optional, tag = "17")]
641 pub h2_max_continuation_frames: ::core::option::Option<u32>,
642 #[prost(uint32, optional, tag = "18")]
644 pub h2_max_glitch_count: ::core::option::Option<u32>,
645 #[prost(uint32, optional, tag = "19")]
649 pub h2_initial_connection_window: ::core::option::Option<u32>,
650 #[prost(uint32, optional, tag = "20")]
653 pub h2_max_concurrent_streams: ::core::option::Option<u32>,
654 #[prost(uint32, optional, tag = "21")]
657 pub h2_stream_shrink_ratio: ::core::option::Option<u32>,
658 #[prost(uint64, optional, tag = "22")]
661 pub h2_max_rst_stream_lifetime: ::core::option::Option<u64>,
662 #[prost(uint64, optional, tag = "23")]
666 pub h2_max_rst_stream_abusive_lifetime: ::core::option::Option<u64>,
667 #[prost(uint64, optional, tag = "27")]
675 pub h2_max_rst_stream_emitted_lifetime: ::core::option::Option<u64>,
676 #[prost(uint32, optional, tag = "24")]
679 pub h2_max_header_list_size: ::core::option::Option<u32>,
680 #[prost(uint32, optional, tag = "25")]
688 pub h2_stream_idle_timeout_seconds: ::core::option::Option<u32>,
689 #[prost(uint32, optional, tag = "26")]
693 pub h2_max_header_table_size: ::core::option::Option<u32>,
694 #[prost(uint32, optional, tag = "28")]
698 pub h2_graceful_shutdown_deadline_seconds: ::core::option::Option<u32>,
699 #[prost(uint32, optional, tag = "29")]
704 pub h2_max_window_update_stream0_per_window: ::core::option::Option<u32>,
705 #[prost(string, optional, tag = "30")]
709 pub sozu_id_header: ::core::option::Option<::prost::alloc::string::String>,
710 #[prost(btree_map = "string, string", tag = "31")]
715 #[serde(default)]
716 pub answers: ::prost::alloc::collections::BTreeMap<
717 ::prost::alloc::string::String,
718 ::prost::alloc::string::String,
719 >,
720 #[prost(bool, optional, tag = "32", default = "false")]
724 pub elide_x_real_ip: ::core::option::Option<bool>,
725 #[prost(bool, optional, tag = "33", default = "false")]
730 pub send_x_real_ip: ::core::option::Option<bool>,
731 #[prost(uint32, optional, tag = "34")]
736 pub h2_max_header_fields: ::core::option::Option<u32>,
737}
738#[derive(::serde::Serialize, ::serde::Deserialize)]
740#[derive(Ord, PartialOrd)]
741#[derive(Hash, Eq)]
742#[derive(Clone, PartialEq, ::prost::Message)]
743#[prost(skip_debug)]
744pub struct HttpsListenerConfig {
745 #[prost(message, required, tag = "1")]
746 pub address: SocketAddress,
747 #[prost(message, optional, tag = "2")]
748 pub public_address: ::core::option::Option<SocketAddress>,
749 #[prost(bool, required, tag = "5", default = "false")]
750 pub expect_proxy: bool,
751 #[prost(string, required, tag = "6")]
752 pub sticky_name: ::prost::alloc::string::String,
753 #[prost(uint32, required, tag = "7", default = "60")]
755 pub front_timeout: u32,
756 #[prost(uint32, required, tag = "8", default = "30")]
758 pub back_timeout: u32,
759 #[prost(uint32, required, tag = "9", default = "3")]
761 pub connect_timeout: u32,
762 #[prost(uint32, required, tag = "10", default = "10")]
764 pub request_timeout: u32,
765 #[prost(bool, required, tag = "11", default = "false")]
767 pub active: bool,
768 #[prost(enumeration = "TlsVersion", repeated, packed = "false", tag = "12")]
770 pub versions: ::prost::alloc::vec::Vec<i32>,
771 #[prost(string, repeated, tag = "13")]
772 pub cipher_list: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
773 #[prost(string, repeated, tag = "14")]
774 pub cipher_suites: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
775 #[prost(string, repeated, tag = "15")]
776 pub signature_algorithms: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
777 #[prost(string, repeated, tag = "16")]
778 pub groups_list: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
779 #[prost(string, optional, tag = "17")]
780 pub certificate: ::core::option::Option<::prost::alloc::string::String>,
781 #[prost(string, repeated, tag = "18")]
782 pub certificate_chain: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
783 #[prost(string, optional, tag = "19")]
784 pub key: ::core::option::Option<::prost::alloc::string::String>,
785 #[prost(uint64, required, tag = "20")]
789 pub send_tls13_tickets: u64,
790 #[prost(message, optional, tag = "21")]
794 pub http_answers: ::core::option::Option<CustomHttpAnswers>,
795 #[prost(string, repeated, tag = "22")]
798 #[serde(default)]
799 pub alpn_protocols: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
800 #[prost(uint32, optional, tag = "23")]
804 pub h2_max_rst_stream_per_window: ::core::option::Option<u32>,
805 #[prost(uint32, optional, tag = "24")]
807 pub h2_max_ping_per_window: ::core::option::Option<u32>,
808 #[prost(uint32, optional, tag = "25")]
810 pub h2_max_settings_per_window: ::core::option::Option<u32>,
811 #[prost(uint32, optional, tag = "26")]
813 pub h2_max_empty_data_per_window: ::core::option::Option<u32>,
814 #[prost(uint32, optional, tag = "27")]
816 pub h2_max_continuation_frames: ::core::option::Option<u32>,
817 #[prost(uint32, optional, tag = "28")]
819 pub h2_max_glitch_count: ::core::option::Option<u32>,
820 #[prost(uint32, optional, tag = "29")]
824 pub h2_initial_connection_window: ::core::option::Option<u32>,
825 #[prost(uint32, optional, tag = "30")]
828 pub h2_max_concurrent_streams: ::core::option::Option<u32>,
829 #[prost(uint32, optional, tag = "31")]
832 pub h2_stream_shrink_ratio: ::core::option::Option<u32>,
833 #[prost(uint64, optional, tag = "32")]
836 pub h2_max_rst_stream_lifetime: ::core::option::Option<u64>,
837 #[prost(uint64, optional, tag = "33")]
841 pub h2_max_rst_stream_abusive_lifetime: ::core::option::Option<u64>,
842 #[prost(uint64, optional, tag = "39")]
850 pub h2_max_rst_stream_emitted_lifetime: ::core::option::Option<u64>,
851 #[prost(uint32, optional, tag = "34")]
854 pub h2_max_header_list_size: ::core::option::Option<u32>,
855 #[prost(bool, optional, tag = "35")]
861 pub strict_sni_binding: ::core::option::Option<bool>,
862 #[prost(bool, optional, tag = "36")]
868 pub disable_http11: ::core::option::Option<bool>,
869 #[prost(uint32, optional, tag = "37")]
877 pub h2_stream_idle_timeout_seconds: ::core::option::Option<u32>,
878 #[prost(uint32, optional, tag = "38")]
882 pub h2_max_header_table_size: ::core::option::Option<u32>,
883 #[prost(uint32, optional, tag = "40")]
887 pub h2_graceful_shutdown_deadline_seconds: ::core::option::Option<u32>,
888 #[prost(uint32, optional, tag = "41")]
893 pub h2_max_window_update_stream0_per_window: ::core::option::Option<u32>,
894 #[prost(string, optional, tag = "42")]
898 pub sozu_id_header: ::core::option::Option<::prost::alloc::string::String>,
899 #[prost(btree_map = "string, string", tag = "43")]
904 #[serde(default)]
905 pub answers: ::prost::alloc::collections::BTreeMap<
906 ::prost::alloc::string::String,
907 ::prost::alloc::string::String,
908 >,
909 #[prost(bool, optional, tag = "44", default = "false")]
913 pub elide_x_real_ip: ::core::option::Option<bool>,
914 #[prost(bool, optional, tag = "45", default = "false")]
919 pub send_x_real_ip: ::core::option::Option<bool>,
920 #[prost(message, optional, tag = "46")]
927 pub hsts: ::core::option::Option<HstsConfig>,
928 #[prost(uint32, optional, tag = "47")]
933 pub h2_max_header_fields: ::core::option::Option<u32>,
934}
935#[derive(::serde::Serialize, ::serde::Deserialize)]
937#[derive(Ord, PartialOrd)]
938#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
939pub struct TcpListenerConfig {
940 #[prost(message, required, tag = "1")]
941 pub address: SocketAddress,
942 #[prost(message, optional, tag = "2")]
943 pub public_address: ::core::option::Option<SocketAddress>,
944 #[prost(bool, required, tag = "3", default = "false")]
945 pub expect_proxy: bool,
946 #[prost(uint32, required, tag = "4", default = "60")]
948 pub front_timeout: u32,
949 #[prost(uint32, required, tag = "5", default = "30")]
951 pub back_timeout: u32,
952 #[prost(uint32, required, tag = "6", default = "3")]
954 pub connect_timeout: u32,
955 #[prost(bool, required, tag = "7", default = "false")]
957 pub active: bool,
958 #[prost(uint32, optional, tag = "8", default = "5")]
963 pub sni_preread_timeout: ::core::option::Option<u32>,
964 #[prost(uint32, optional, tag = "9", default = "16384")]
970 pub sni_preread_max_bytes: ::core::option::Option<u32>,
971}
972#[derive(::serde::Serialize, ::serde::Deserialize)]
974#[derive(Ord, PartialOrd)]
975#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
976pub struct UdpListenerConfig {
977 #[prost(message, required, tag = "1")]
978 pub address: SocketAddress,
979 #[prost(message, optional, tag = "2")]
980 pub public_address: ::core::option::Option<SocketAddress>,
981 #[prost(uint32, required, tag = "3", default = "30")]
983 pub front_timeout: u32,
984 #[prost(uint32, required, tag = "4", default = "30")]
986 pub back_timeout: u32,
987 #[prost(uint32, required, tag = "5", default = "1500")]
989 pub max_rx_datagram_size: u32,
990 #[prost(uint32, required, tag = "6", default = "0")]
992 pub max_flows: u32,
993 #[prost(bool, required, tag = "7", default = "false")]
995 pub active: bool,
996}
997#[derive(::serde::Serialize, ::serde::Deserialize)]
1017#[derive(Ord, PartialOrd)]
1018#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
1019pub struct HstsConfig {
1020 #[prost(bool, optional, tag = "1")]
1024 pub enabled: ::core::option::Option<bool>,
1025 #[prost(uint32, optional, tag = "2")]
1029 pub max_age: ::core::option::Option<u32>,
1030 #[prost(bool, optional, tag = "3")]
1032 pub include_subdomains: ::core::option::Option<bool>,
1033 #[prost(bool, optional, tag = "4")]
1036 pub preload: ::core::option::Option<bool>,
1037 #[prost(bool, optional, tag = "5")]
1054 pub force_replace_backend: ::core::option::Option<bool>,
1055}
1056#[derive(::serde::Serialize, ::serde::Deserialize)]
1058#[derive(Ord, PartialOrd)]
1059#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1060pub struct CustomHttpAnswers {
1061 #[prost(string, optional, tag = "1")]
1063 pub answer_301: ::core::option::Option<::prost::alloc::string::String>,
1064 #[prost(string, optional, tag = "2")]
1066 pub answer_400: ::core::option::Option<::prost::alloc::string::String>,
1067 #[prost(string, optional, tag = "3")]
1069 pub answer_401: ::core::option::Option<::prost::alloc::string::String>,
1070 #[prost(string, optional, tag = "4")]
1072 pub answer_404: ::core::option::Option<::prost::alloc::string::String>,
1073 #[prost(string, optional, tag = "5")]
1075 pub answer_408: ::core::option::Option<::prost::alloc::string::String>,
1076 #[prost(string, optional, tag = "6")]
1078 pub answer_413: ::core::option::Option<::prost::alloc::string::String>,
1079 #[prost(string, optional, tag = "11")]
1081 pub answer_421: ::core::option::Option<::prost::alloc::string::String>,
1082 #[prost(string, optional, tag = "7")]
1084 pub answer_502: ::core::option::Option<::prost::alloc::string::String>,
1085 #[prost(string, optional, tag = "8")]
1087 pub answer_503: ::core::option::Option<::prost::alloc::string::String>,
1088 #[prost(string, optional, tag = "9")]
1090 pub answer_504: ::core::option::Option<::prost::alloc::string::String>,
1091 #[prost(string, optional, tag = "10")]
1093 pub answer_507: ::core::option::Option<::prost::alloc::string::String>,
1094 #[prost(string, optional, tag = "12")]
1096 pub answer_429: ::core::option::Option<::prost::alloc::string::String>,
1097}
1098#[derive(::serde::Serialize, ::serde::Deserialize)]
1099#[derive(Ord, PartialOrd)]
1100#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
1101pub struct ActivateListener {
1102 #[prost(message, required, tag = "1")]
1103 pub address: SocketAddress,
1104 #[prost(enumeration = "ListenerType", required, tag = "2")]
1105 pub proxy: i32,
1106 #[prost(bool, required, tag = "3")]
1107 pub from_scm: bool,
1108}
1109#[derive(::serde::Serialize, ::serde::Deserialize)]
1110#[derive(Ord, PartialOrd)]
1111#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
1112pub struct DeactivateListener {
1113 #[prost(message, required, tag = "1")]
1114 pub address: SocketAddress,
1115 #[prost(enumeration = "ListenerType", required, tag = "2")]
1116 pub proxy: i32,
1117 #[prost(bool, required, tag = "3")]
1118 pub to_scm: bool,
1119}
1120#[derive(::serde::Serialize, ::serde::Deserialize)]
1121#[derive(Ord, PartialOrd)]
1122#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
1123pub struct RemoveListener {
1124 #[prost(message, required, tag = "1")]
1125 pub address: SocketAddress,
1126 #[prost(enumeration = "ListenerType", required, tag = "2")]
1127 pub proxy: i32,
1128}
1129#[derive(::serde::Serialize, ::serde::Deserialize)]
1131#[derive(Ord, PartialOrd)]
1132#[derive(Hash, Eq)]
1133#[derive(Clone, PartialEq, ::prost::Message)]
1134pub struct ListenersList {
1135 #[prost(btree_map = "string, message", tag = "1")]
1137 pub http_listeners: ::prost::alloc::collections::BTreeMap<
1138 ::prost::alloc::string::String,
1139 HttpListenerConfig,
1140 >,
1141 #[prost(btree_map = "string, message", tag = "2")]
1143 pub https_listeners: ::prost::alloc::collections::BTreeMap<
1144 ::prost::alloc::string::String,
1145 HttpsListenerConfig,
1146 >,
1147 #[prost(btree_map = "string, message", tag = "3")]
1149 pub tcp_listeners: ::prost::alloc::collections::BTreeMap<
1150 ::prost::alloc::string::String,
1151 TcpListenerConfig,
1152 >,
1153 #[prost(btree_map = "string, message", tag = "4")]
1155 pub udp_listeners: ::prost::alloc::collections::BTreeMap<
1156 ::prost::alloc::string::String,
1157 UdpListenerConfig,
1158 >,
1159}
1160#[derive(::serde::Serialize, ::serde::Deserialize)]
1166#[derive(Ord, PartialOrd)]
1167#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1168#[prost(skip_debug)]
1169pub struct Header {
1170 #[prost(enumeration = "HeaderPosition", required, tag = "1")]
1171 pub position: i32,
1172 #[prost(string, required, tag = "2")]
1173 pub key: ::prost::alloc::string::String,
1174 #[prost(string, required, tag = "3")]
1176 pub val: ::prost::alloc::string::String,
1177}
1178#[derive(::serde::Serialize, ::serde::Deserialize)]
1180#[derive(Ord, PartialOrd)]
1181#[derive(Hash, Eq)]
1182#[derive(Clone, PartialEq, ::prost::Message)]
1183#[prost(skip_debug)]
1184pub struct RequestHttpFrontend {
1185 #[prost(string, optional, tag = "1")]
1186 pub cluster_id: ::core::option::Option<::prost::alloc::string::String>,
1187 #[prost(message, required, tag = "2")]
1188 pub address: SocketAddress,
1189 #[prost(string, required, tag = "3")]
1190 pub hostname: ::prost::alloc::string::String,
1191 #[prost(message, required, tag = "4")]
1192 pub path: PathRule,
1193 #[prost(string, optional, tag = "5")]
1194 pub method: ::core::option::Option<::prost::alloc::string::String>,
1195 #[prost(enumeration = "RulePosition", required, tag = "6", default = "Tree")]
1196 pub position: i32,
1197 #[prost(btree_map = "string, string", tag = "7")]
1199 pub tags: ::prost::alloc::collections::BTreeMap<
1200 ::prost::alloc::string::String,
1201 ::prost::alloc::string::String,
1202 >,
1203 #[prost(enumeration = "RedirectPolicy", optional, tag = "8", default = "Forward")]
1205 pub redirect: ::core::option::Option<i32>,
1206 #[prost(bool, optional, tag = "9")]
1210 pub required_auth: ::core::option::Option<bool>,
1211 #[prost(enumeration = "RedirectScheme", optional, tag = "10", default = "UseSame")]
1214 pub redirect_scheme: ::core::option::Option<i32>,
1215 #[prost(string, optional, tag = "11")]
1218 pub redirect_template: ::core::option::Option<::prost::alloc::string::String>,
1219 #[prost(string, optional, tag = "12")]
1223 pub rewrite_host: ::core::option::Option<::prost::alloc::string::String>,
1224 #[prost(string, optional, tag = "13")]
1226 pub rewrite_path: ::core::option::Option<::prost::alloc::string::String>,
1227 #[prost(uint32, optional, tag = "14")]
1229 pub rewrite_port: ::core::option::Option<u32>,
1230 #[prost(message, repeated, tag = "15")]
1233 #[serde(default)]
1234 pub headers: ::prost::alloc::vec::Vec<Header>,
1235 #[prost(message, optional, tag = "16")]
1245 pub hsts: ::core::option::Option<HstsConfig>,
1246}
1247#[derive(::serde::Serialize, ::serde::Deserialize)]
1248#[derive(Ord, PartialOrd)]
1249#[derive(Hash, Eq)]
1250#[derive(Clone, PartialEq, ::prost::Message)]
1251#[prost(skip_debug)]
1252pub struct RequestTcpFrontend {
1253 #[prost(string, required, tag = "1")]
1254 pub cluster_id: ::prost::alloc::string::String,
1255 #[prost(message, required, tag = "2")]
1257 pub address: SocketAddress,
1258 #[prost(btree_map = "string, string", tag = "3")]
1260 pub tags: ::prost::alloc::collections::BTreeMap<
1261 ::prost::alloc::string::String,
1262 ::prost::alloc::string::String,
1263 >,
1264 #[prost(string, optional, tag = "4")]
1271 pub sni: ::core::option::Option<::prost::alloc::string::String>,
1272 #[prost(string, repeated, tag = "5")]
1278 #[serde(default)]
1279 pub alpn: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1280}
1281#[derive(::serde::Serialize, ::serde::Deserialize)]
1282#[derive(Ord, PartialOrd)]
1283#[derive(Hash, Eq)]
1284#[derive(Clone, PartialEq, ::prost::Message)]
1285pub struct RequestUdpFrontend {
1286 #[prost(string, required, tag = "1")]
1287 pub cluster_id: ::prost::alloc::string::String,
1288 #[prost(message, required, tag = "2")]
1290 pub address: SocketAddress,
1291 #[prost(btree_map = "string, string", tag = "3")]
1293 #[serde(default)]
1294 pub tags: ::prost::alloc::collections::BTreeMap<
1295 ::prost::alloc::string::String,
1296 ::prost::alloc::string::String,
1297 >,
1298}
1299#[derive(::serde::Serialize, ::serde::Deserialize)]
1301#[derive(Ord, PartialOrd)]
1302#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1303pub struct FrontendFilters {
1304 #[prost(bool, required, tag = "1")]
1305 pub http: bool,
1306 #[prost(bool, required, tag = "2")]
1307 pub https: bool,
1308 #[prost(bool, required, tag = "3")]
1309 pub tcp: bool,
1310 #[prost(string, optional, tag = "4")]
1311 pub domain: ::core::option::Option<::prost::alloc::string::String>,
1312}
1313#[derive(::serde::Serialize, ::serde::Deserialize)]
1315#[derive(Ord, PartialOrd)]
1316#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1317pub struct PathRule {
1318 #[prost(enumeration = "PathRuleKind", required, tag = "1")]
1320 pub kind: i32,
1321 #[prost(string, required, tag = "2")]
1323 pub value: ::prost::alloc::string::String,
1324}
1325#[derive(::serde::Serialize, ::serde::Deserialize)]
1327#[derive(Ord, PartialOrd)]
1328#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1329pub struct AddCertificate {
1330 #[prost(message, required, tag = "1")]
1331 pub address: SocketAddress,
1332 #[prost(message, required, tag = "2")]
1333 pub certificate: CertificateAndKey,
1334 #[prost(int64, optional, tag = "3")]
1336 pub expired_at: ::core::option::Option<i64>,
1337}
1338#[derive(::serde::Serialize, ::serde::Deserialize)]
1339#[derive(Ord, PartialOrd)]
1340#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1341#[prost(skip_debug)]
1342pub struct RemoveCertificate {
1343 #[prost(message, required, tag = "1")]
1344 pub address: SocketAddress,
1345 #[prost(string, required, tag = "2")]
1347 pub fingerprint: ::prost::alloc::string::String,
1348}
1349#[derive(::serde::Serialize, ::serde::Deserialize)]
1350#[derive(Ord, PartialOrd)]
1351#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1352#[prost(skip_debug)]
1353pub struct ReplaceCertificate {
1354 #[prost(message, required, tag = "1")]
1355 pub address: SocketAddress,
1356 #[prost(message, required, tag = "2")]
1357 pub new_certificate: CertificateAndKey,
1358 #[prost(string, required, tag = "3")]
1360 pub old_fingerprint: ::prost::alloc::string::String,
1361 #[prost(int64, optional, tag = "4")]
1363 pub new_expired_at: ::core::option::Option<i64>,
1364}
1365#[derive(::serde::Serialize, ::serde::Deserialize)]
1366#[derive(Ord, PartialOrd)]
1367#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1368#[prost(skip_debug)]
1369pub struct CertificateAndKey {
1370 #[prost(string, required, tag = "1")]
1371 pub certificate: ::prost::alloc::string::String,
1372 #[prost(string, repeated, tag = "2")]
1373 pub certificate_chain: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1374 #[prost(string, required, tag = "3")]
1375 pub key: ::prost::alloc::string::String,
1376 #[prost(enumeration = "TlsVersion", repeated, packed = "false", tag = "4")]
1377 pub versions: ::prost::alloc::vec::Vec<i32>,
1378 #[prost(string, repeated, tag = "5")]
1381 pub names: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1382}
1383#[derive(::serde::Serialize, ::serde::Deserialize)]
1387#[derive(Ord, PartialOrd)]
1388#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1389#[prost(skip_debug)]
1390pub struct QueryCertificatesFilters {
1391 #[prost(string, optional, tag = "1")]
1393 pub domain: ::core::option::Option<::prost::alloc::string::String>,
1394 #[prost(string, optional, tag = "2")]
1396 pub fingerprint: ::core::option::Option<::prost::alloc::string::String>,
1397}
1398#[derive(::serde::Serialize, ::serde::Deserialize)]
1400#[derive(Ord, PartialOrd)]
1401#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1402#[prost(skip_debug)]
1403pub struct CertificateSummary {
1404 #[prost(string, required, tag = "1")]
1405 pub domain: ::prost::alloc::string::String,
1406 #[prost(string, required, tag = "2")]
1408 pub fingerprint: ::prost::alloc::string::String,
1409}
1410#[derive(::serde::Serialize, ::serde::Deserialize)]
1412#[derive(Ord, PartialOrd)]
1413#[derive(Hash, Eq)]
1414#[derive(Clone, PartialEq, ::prost::Message)]
1415#[prost(skip_debug)]
1416pub struct ListOfCertificatesByAddress {
1417 #[prost(message, repeated, tag = "1")]
1418 pub certificates: ::prost::alloc::vec::Vec<CertificatesByAddress>,
1419}
1420#[derive(::serde::Serialize, ::serde::Deserialize)]
1422#[derive(Ord, PartialOrd)]
1423#[derive(Hash, Eq)]
1424#[derive(Clone, PartialEq, ::prost::Message)]
1425#[prost(skip_debug)]
1426pub struct CertificatesByAddress {
1427 #[prost(message, required, tag = "1")]
1428 pub address: SocketAddress,
1429 #[prost(message, repeated, tag = "2")]
1430 pub certificate_summaries: ::prost::alloc::vec::Vec<CertificateSummary>,
1431}
1432#[derive(::serde::Serialize, ::serde::Deserialize)]
1434#[derive(Ord, PartialOrd)]
1435#[derive(Hash, Eq)]
1436#[derive(Clone, PartialEq, ::prost::Message)]
1437#[prost(skip_debug)]
1438pub struct CertificatesWithFingerprints {
1439 #[prost(btree_map = "string, message", tag = "1")]
1441 pub certs: ::prost::alloc::collections::BTreeMap<
1442 ::prost::alloc::string::String,
1443 CertificateAndKey,
1444 >,
1445}
1446#[derive(::serde::Serialize, ::serde::Deserialize)]
1448#[derive(Ord, PartialOrd)]
1449#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1450pub struct UdpHealthConfig {
1451 #[prost(enumeration = "UdpHealthMode", optional, tag = "1")]
1453 pub mode: ::core::option::Option<i32>,
1454 #[prost(uint32, optional, tag = "2")]
1456 pub tcp_port: ::core::option::Option<u32>,
1457 #[prost(uint32, optional, tag = "3", default = "2")]
1459 pub rise: ::core::option::Option<u32>,
1460 #[prost(uint32, optional, tag = "4", default = "3")]
1462 pub fall: ::core::option::Option<u32>,
1463 #[prost(bool, optional, tag = "5", default = "true")]
1465 pub fail_open: ::core::option::Option<bool>,
1466 #[prost(bytes = "vec", optional, tag = "6")]
1468 pub udp_probe_payload: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
1469 #[prost(uint32, optional, tag = "7", default = "5")]
1471 pub probe_interval_seconds: ::core::option::Option<u32>,
1472 #[prost(uint32, optional, tag = "8", default = "2")]
1474 pub probe_timeout_seconds: ::core::option::Option<u32>,
1475}
1476#[derive(::serde::Serialize, ::serde::Deserialize)]
1478#[derive(Ord, PartialOrd)]
1479#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1480pub struct UdpClusterConfig {
1481 #[prost(enumeration = "UdpAffinityKey", optional, tag = "1")]
1483 pub affinity_key: ::core::option::Option<i32>,
1484 #[prost(uint32, optional, tag = "2")]
1486 pub responses: ::core::option::Option<u32>,
1487 #[prost(uint32, optional, tag = "3")]
1489 pub requests: ::core::option::Option<u32>,
1490 #[prost(bool, optional, tag = "4")]
1492 pub send_proxy_protocol: ::core::option::Option<bool>,
1493 #[prost(bool, optional, tag = "5")]
1495 pub proxy_protocol_every_datagram: ::core::option::Option<bool>,
1496 #[prost(message, optional, tag = "6")]
1498 pub health: ::core::option::Option<UdpHealthConfig>,
1499}
1500#[derive(::serde::Serialize, ::serde::Deserialize)]
1502#[derive(Ord, PartialOrd)]
1503#[derive(Hash, Eq)]
1504#[derive(Clone, PartialEq, ::prost::Message)]
1505#[prost(skip_debug)]
1506pub struct Cluster {
1507 #[prost(string, required, tag = "1")]
1508 pub cluster_id: ::prost::alloc::string::String,
1509 #[prost(bool, required, tag = "2")]
1511 pub sticky_session: bool,
1512 #[prost(bool, required, tag = "3")]
1513 pub https_redirect: bool,
1514 #[prost(enumeration = "ProxyProtocolConfig", optional, tag = "4")]
1515 pub proxy_protocol: ::core::option::Option<i32>,
1516 #[prost(
1517 enumeration = "LoadBalancingAlgorithms",
1518 required,
1519 tag = "5",
1520 default = "RoundRobin"
1521 )]
1522 pub load_balancing: i32,
1523 #[prost(string, optional, tag = "6")]
1524 pub answer_503: ::core::option::Option<::prost::alloc::string::String>,
1525 #[prost(enumeration = "LoadMetric", optional, tag = "7")]
1526 pub load_metric: ::core::option::Option<i32>,
1527 #[prost(bool, optional, tag = "8")]
1531 pub http2: ::core::option::Option<bool>,
1532 #[prost(btree_map = "string, string", tag = "9")]
1535 #[serde(default)]
1536 pub answers: ::prost::alloc::collections::BTreeMap<
1537 ::prost::alloc::string::String,
1538 ::prost::alloc::string::String,
1539 >,
1540 #[prost(uint32, optional, tag = "10")]
1545 pub https_redirect_port: ::core::option::Option<u32>,
1546 #[prost(string, repeated, tag = "11")]
1553 #[serde(default)]
1554 pub authorized_hashes: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1555 #[prost(string, optional, tag = "12")]
1559 pub www_authenticate: ::core::option::Option<::prost::alloc::string::String>,
1560 #[prost(uint64, optional, tag = "13")]
1567 pub max_connections_per_ip: ::core::option::Option<u64>,
1568 #[prost(uint32, optional, tag = "14")]
1572 pub retry_after: ::core::option::Option<u32>,
1573 #[prost(message, optional, tag = "15")]
1578 pub health_check: ::core::option::Option<HealthCheckConfig>,
1579 #[prost(message, optional, tag = "16")]
1582 pub udp: ::core::option::Option<UdpClusterConfig>,
1583}
1584#[derive(::serde::Serialize, ::serde::Deserialize)]
1585#[derive(Ord, PartialOrd)]
1586#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1587pub struct HealthCheckConfig {
1588 #[prost(string, required, tag = "1")]
1589 pub uri: ::prost::alloc::string::String,
1590 #[prost(uint32, required, tag = "2", default = "10")]
1591 pub interval: u32,
1592 #[prost(uint32, required, tag = "3", default = "5")]
1593 pub timeout: u32,
1594 #[prost(uint32, required, tag = "4", default = "3")]
1595 pub healthy_threshold: u32,
1596 #[prost(uint32, required, tag = "5", default = "3")]
1597 pub unhealthy_threshold: u32,
1598 #[prost(uint32, required, tag = "6", default = "0")]
1606 pub expected_status: u32,
1607}
1608#[derive(::serde::Serialize, ::serde::Deserialize)]
1610#[derive(Ord, PartialOrd)]
1611#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1612pub struct AddBackend {
1613 #[prost(string, required, tag = "1")]
1614 pub cluster_id: ::prost::alloc::string::String,
1615 #[prost(string, required, tag = "2")]
1616 pub backend_id: ::prost::alloc::string::String,
1617 #[prost(message, required, tag = "3")]
1619 pub address: SocketAddress,
1620 #[prost(string, optional, tag = "4")]
1621 pub sticky_id: ::core::option::Option<::prost::alloc::string::String>,
1622 #[prost(message, optional, tag = "5")]
1623 pub load_balancing_parameters: ::core::option::Option<LoadBalancingParams>,
1624 #[prost(bool, optional, tag = "6")]
1625 pub backup: ::core::option::Option<bool>,
1626}
1627#[derive(::serde::Serialize, ::serde::Deserialize)]
1629#[derive(Ord, PartialOrd)]
1630#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1631pub struct RemoveBackend {
1632 #[prost(string, required, tag = "1")]
1633 pub cluster_id: ::prost::alloc::string::String,
1634 #[prost(string, required, tag = "2")]
1635 pub backend_id: ::prost::alloc::string::String,
1636 #[prost(message, required, tag = "3")]
1638 pub address: SocketAddress,
1639}
1640#[derive(::serde::Serialize, ::serde::Deserialize)]
1641#[derive(Ord, PartialOrd)]
1642#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
1643pub struct LoadBalancingParams {
1644 #[prost(int32, required, tag = "1")]
1645 pub weight: i32,
1646}
1647#[derive(::serde::Serialize, ::serde::Deserialize)]
1648#[derive(Ord, PartialOrd)]
1649#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1650pub struct QueryClusterByDomain {
1651 #[prost(string, required, tag = "1")]
1652 pub hostname: ::prost::alloc::string::String,
1653 #[prost(string, optional, tag = "2")]
1654 pub path: ::core::option::Option<::prost::alloc::string::String>,
1655}
1656#[derive(::serde::Serialize, ::serde::Deserialize)]
1658#[derive(Ord, PartialOrd)]
1659#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1660pub struct QueryMetricsOptions {
1661 #[prost(bool, required, tag = "1")]
1663 pub list: bool,
1664 #[prost(string, repeated, tag = "2")]
1666 pub cluster_ids: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1667 #[prost(string, repeated, tag = "3")]
1669 pub backend_ids: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1670 #[prost(string, repeated, tag = "4")]
1672 pub metric_names: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1673 #[prost(bool, required, tag = "5")]
1675 pub no_clusters: bool,
1676 #[prost(bool, required, tag = "6")]
1678 pub workers: bool,
1679}
1680#[derive(::serde::Serialize, ::serde::Deserialize)]
1682#[derive(Ord, PartialOrd)]
1683#[derive(Hash, Eq)]
1684#[derive(Clone, PartialEq, ::prost::Message)]
1685pub struct Response {
1686 #[prost(enumeration = "ResponseStatus", required, tag = "1", default = "Failure")]
1688 pub status: i32,
1689 #[prost(string, required, tag = "2")]
1691 pub message: ::prost::alloc::string::String,
1692 #[prost(message, optional, tag = "3")]
1694 pub content: ::core::option::Option<ResponseContent>,
1695}
1696#[derive(::serde::Serialize, ::serde::Deserialize)]
1698#[derive(Ord, PartialOrd)]
1699#[derive(Hash, Eq)]
1700#[derive(Clone, PartialEq, ::prost::Message)]
1701#[prost(skip_debug)]
1702pub struct ResponseContent {
1703 #[prost(
1704 oneof = "response_content::ContentType",
1705 tags = "1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17"
1706 )]
1707 pub content_type: ::core::option::Option<response_content::ContentType>,
1708}
1709pub mod response_content {
1711 #[derive(::serde::Serialize, ::serde::Deserialize)]
1712 #[serde(rename_all = "SCREAMING_SNAKE_CASE")]
1713 #[derive(Hash, Eq, Ord, PartialOrd)]
1714 #[derive(Clone, PartialEq, ::prost::Oneof)]
1715 #[prost(skip_debug)]
1716 pub enum ContentType {
1717 #[prost(message, tag = "1")]
1719 Workers(super::WorkerInfos),
1720 #[prost(message, tag = "2")]
1722 Metrics(super::AggregatedMetrics),
1723 #[prost(message, tag = "3")]
1725 WorkerResponses(super::WorkerResponses),
1726 #[prost(message, tag = "4")]
1728 Event(super::Event),
1729 #[prost(message, tag = "5")]
1731 FrontendList(super::ListedFrontends),
1732 #[prost(message, tag = "6")]
1734 ListenersList(super::ListenersList),
1735 #[prost(message, tag = "7")]
1737 WorkerMetrics(super::WorkerMetrics),
1738 #[prost(message, tag = "8")]
1740 AvailableMetrics(super::AvailableMetrics),
1741 #[prost(message, tag = "9")]
1743 Clusters(super::ClusterInformations),
1744 #[prost(message, tag = "10")]
1746 ClusterHashes(super::ClusterHashes),
1747 #[prost(message, tag = "11")]
1749 CertificatesByAddress(super::ListOfCertificatesByAddress),
1750 #[prost(message, tag = "12")]
1752 CertificatesWithFingerprints(super::CertificatesWithFingerprints),
1753 #[prost(message, tag = "13")]
1755 RequestCounts(super::RequestCounts),
1756 #[prost(message, tag = "14")]
1758 MaxConnectionsPerIpLimit(super::MaxConnectionsPerIpLimit),
1759 #[prost(message, tag = "15")]
1762 HealthChecksList(super::HealthChecksList),
1763 #[prost(message, tag = "16")]
1767 MetricDetailStatus(super::MetricDetailStatus),
1768 #[prost(message, tag = "17")]
1778 WorkerMetricDetailStatus(super::WorkerMetricDetailStatus),
1779 }
1780}
1781#[derive(::serde::Serialize, ::serde::Deserialize)]
1782#[derive(Ord, PartialOrd)]
1783#[derive(Hash, Eq)]
1784#[derive(Clone, PartialEq, ::prost::Message)]
1785pub struct HealthChecksList {
1786 #[prost(btree_map = "string, message", tag = "1")]
1787 pub map: ::prost::alloc::collections::BTreeMap<
1788 ::prost::alloc::string::String,
1789 HealthCheckConfig,
1790 >,
1791}
1792#[derive(::serde::Serialize, ::serde::Deserialize)]
1794#[derive(Ord, PartialOrd)]
1795#[derive(Hash, Eq)]
1796#[derive(Clone, PartialEq, ::prost::Message)]
1797#[prost(skip_debug)]
1798pub struct WorkerResponses {
1799 #[prost(btree_map = "string, message", tag = "1")]
1800 pub map: ::prost::alloc::collections::BTreeMap<
1801 ::prost::alloc::string::String,
1802 ResponseContent,
1803 >,
1804}
1805#[derive(::serde::Serialize, ::serde::Deserialize)]
1807#[derive(Ord, PartialOrd)]
1808#[derive(Hash, Eq)]
1809#[derive(Clone, PartialEq, ::prost::Message)]
1810pub struct ListedFrontends {
1811 #[prost(message, repeated, tag = "1")]
1812 pub http_frontends: ::prost::alloc::vec::Vec<RequestHttpFrontend>,
1813 #[prost(message, repeated, tag = "2")]
1814 pub https_frontends: ::prost::alloc::vec::Vec<RequestHttpFrontend>,
1815 #[prost(message, repeated, tag = "3")]
1816 pub tcp_frontends: ::prost::alloc::vec::Vec<RequestTcpFrontend>,
1817 #[prost(message, repeated, tag = "4")]
1818 pub udp_frontends: ::prost::alloc::vec::Vec<RequestUdpFrontend>,
1819}
1820#[derive(::serde::Serialize, ::serde::Deserialize)]
1821#[derive(Ord, PartialOrd)]
1822#[derive(Hash, Eq)]
1823#[derive(Clone, PartialEq, ::prost::Message)]
1824pub struct ClusterInformations {
1825 #[prost(message, repeated, tag = "1")]
1826 pub vec: ::prost::alloc::vec::Vec<ClusterInformation>,
1827}
1828#[derive(::serde::Serialize, ::serde::Deserialize)]
1831#[derive(Ord, PartialOrd)]
1832#[derive(Hash, Eq)]
1833#[derive(Clone, PartialEq, ::prost::Message)]
1834pub struct ClusterInformation {
1835 #[prost(message, optional, tag = "1")]
1836 pub configuration: ::core::option::Option<Cluster>,
1837 #[prost(message, repeated, tag = "2")]
1838 pub http_frontends: ::prost::alloc::vec::Vec<RequestHttpFrontend>,
1839 #[prost(message, repeated, tag = "3")]
1840 pub https_frontends: ::prost::alloc::vec::Vec<RequestHttpFrontend>,
1841 #[prost(message, repeated, tag = "4")]
1842 pub tcp_frontends: ::prost::alloc::vec::Vec<RequestTcpFrontend>,
1843 #[prost(message, repeated, tag = "5")]
1844 pub backends: ::prost::alloc::vec::Vec<AddBackend>,
1845 #[prost(message, repeated, tag = "6")]
1846 pub udp_frontends: ::prost::alloc::vec::Vec<RequestUdpFrontend>,
1847}
1848#[derive(::serde::Serialize, ::serde::Deserialize)]
1850#[derive(Ord, PartialOrd)]
1851#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1852pub struct Event {
1853 #[prost(enumeration = "EventKind", required, tag = "1")]
1854 pub kind: i32,
1855 #[prost(string, optional, tag = "2")]
1856 pub cluster_id: ::core::option::Option<::prost::alloc::string::String>,
1857 #[prost(string, optional, tag = "3")]
1858 pub backend_id: ::core::option::Option<::prost::alloc::string::String>,
1859 #[prost(message, optional, tag = "4")]
1860 pub address: ::core::option::Option<SocketAddress>,
1861 #[prost(message, optional, tag = "5")]
1870 pub metric_detail: ::core::option::Option<MetricDetailTransition>,
1871}
1872#[derive(::serde::Serialize, ::serde::Deserialize)]
1880#[derive(Ord, PartialOrd)]
1881#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1882pub struct MetricDetailTransition {
1883 #[prost(enumeration = "MetricDetail", required, tag = "1")]
1885 pub previous_effective: i32,
1886 #[prost(enumeration = "MetricDetail", required, tag = "2")]
1888 pub effective: i32,
1889 #[prost(string, required, tag = "3")]
1896 pub transition_kind: ::prost::alloc::string::String,
1897 #[prost(string, optional, tag = "4")]
1901 pub client_id: ::core::option::Option<::prost::alloc::string::String>,
1902}
1903#[derive(::serde::Serialize, ::serde::Deserialize)]
1904#[derive(Ord, PartialOrd)]
1905#[derive(Hash, Eq)]
1906#[derive(Clone, PartialEq, ::prost::Message)]
1907pub struct ClusterHashes {
1908 #[prost(btree_map = "string, uint64", tag = "1")]
1910 pub map: ::prost::alloc::collections::BTreeMap<::prost::alloc::string::String, u64>,
1911}
1912#[derive(::serde::Serialize, ::serde::Deserialize)]
1914#[derive(Ord, PartialOrd)]
1915#[derive(Hash, Eq)]
1916#[derive(Clone, PartialEq, ::prost::Message)]
1917pub struct WorkerInfos {
1918 #[prost(message, repeated, tag = "1")]
1919 pub vec: ::prost::alloc::vec::Vec<WorkerInfo>,
1920}
1921#[derive(::serde::Serialize, ::serde::Deserialize)]
1923#[derive(Ord, PartialOrd)]
1924#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
1925pub struct WorkerInfo {
1926 #[prost(uint32, required, tag = "1")]
1927 pub id: u32,
1928 #[prost(int32, required, tag = "2")]
1929 pub pid: i32,
1930 #[prost(enumeration = "RunState", required, tag = "3")]
1931 pub run_state: i32,
1932}
1933#[derive(::serde::Serialize, ::serde::Deserialize)]
1935#[derive(Ord, PartialOrd)]
1936#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1937pub struct AvailableMetrics {
1938 #[prost(string, repeated, tag = "1")]
1939 pub proxy_metrics: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1940 #[prost(string, repeated, tag = "2")]
1941 pub cluster_metrics: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1942}
1943#[derive(::serde::Serialize, ::serde::Deserialize)]
1945#[derive(Ord, PartialOrd)]
1946#[derive(Hash, Eq)]
1947#[derive(Clone, PartialEq, ::prost::Message)]
1948pub struct AggregatedMetrics {
1949 #[prost(btree_map = "string, message", tag = "1")]
1952 pub main: ::prost::alloc::collections::BTreeMap<
1953 ::prost::alloc::string::String,
1954 FilteredMetrics,
1955 >,
1956 #[prost(btree_map = "string, message", tag = "2")]
1959 pub workers: ::prost::alloc::collections::BTreeMap<
1960 ::prost::alloc::string::String,
1961 WorkerMetrics,
1962 >,
1963 #[prost(btree_map = "string, message", tag = "3")]
1966 pub clusters: ::prost::alloc::collections::BTreeMap<
1967 ::prost::alloc::string::String,
1968 ClusterMetrics,
1969 >,
1970 #[prost(btree_map = "string, message", tag = "4")]
1973 pub proxying: ::prost::alloc::collections::BTreeMap<
1974 ::prost::alloc::string::String,
1975 FilteredMetrics,
1976 >,
1977}
1978#[derive(::serde::Serialize, ::serde::Deserialize)]
1981#[derive(Ord, PartialOrd)]
1982#[derive(Hash, Eq)]
1983#[derive(Clone, PartialEq, ::prost::Message)]
1984pub struct WorkerMetrics {
1985 #[prost(btree_map = "string, message", tag = "1")]
1987 pub proxy: ::prost::alloc::collections::BTreeMap<
1988 ::prost::alloc::string::String,
1989 FilteredMetrics,
1990 >,
1991 #[prost(btree_map = "string, message", tag = "2")]
1993 pub clusters: ::prost::alloc::collections::BTreeMap<
1994 ::prost::alloc::string::String,
1995 ClusterMetrics,
1996 >,
1997}
1998#[derive(::serde::Serialize, ::serde::Deserialize)]
2000#[derive(Ord, PartialOrd)]
2001#[derive(Hash, Eq)]
2002#[derive(Clone, PartialEq, ::prost::Message)]
2003pub struct ClusterMetrics {
2004 #[prost(btree_map = "string, message", tag = "1")]
2006 pub cluster: ::prost::alloc::collections::BTreeMap<
2007 ::prost::alloc::string::String,
2008 FilteredMetrics,
2009 >,
2010 #[prost(message, repeated, tag = "2")]
2012 pub backends: ::prost::alloc::vec::Vec<BackendMetrics>,
2013}
2014#[derive(::serde::Serialize, ::serde::Deserialize)]
2015#[derive(Ord, PartialOrd)]
2016#[derive(Hash, Eq)]
2017#[derive(Clone, PartialEq, ::prost::Message)]
2018pub struct BackendMetrics {
2019 #[prost(string, required, tag = "1")]
2020 pub backend_id: ::prost::alloc::string::String,
2021 #[prost(btree_map = "string, message", tag = "2")]
2022 pub metrics: ::prost::alloc::collections::BTreeMap<
2023 ::prost::alloc::string::String,
2024 FilteredMetrics,
2025 >,
2026}
2027#[derive(::serde::Serialize, ::serde::Deserialize)]
2029#[derive(Ord, PartialOrd)]
2030#[derive(Hash, Eq)]
2031#[derive(Clone, PartialEq, ::prost::Message)]
2032pub struct FilteredMetrics {
2033 #[prost(oneof = "filtered_metrics::Inner", tags = "1, 2, 3, 4, 5, 6")]
2034 pub inner: ::core::option::Option<filtered_metrics::Inner>,
2035}
2036pub mod filtered_metrics {
2038 #[derive(::serde::Serialize, ::serde::Deserialize)]
2039 #[serde(rename_all = "SCREAMING_SNAKE_CASE")]
2040 #[derive(Hash, Eq, Ord, PartialOrd)]
2041 #[derive(Clone, PartialEq, ::prost::Oneof)]
2042 pub enum Inner {
2043 #[prost(uint64, tag = "1")]
2045 Gauge(u64),
2046 #[prost(int64, tag = "2")]
2048 Count(i64),
2049 #[prost(uint64, tag = "3")]
2051 Time(u64),
2052 #[prost(message, tag = "4")]
2053 Percentiles(super::Percentiles),
2054 #[prost(message, tag = "5")]
2055 TimeSerie(super::FilteredTimeSerie),
2056 #[prost(message, tag = "6")]
2057 Histogram(super::FilteredHistogram),
2058 }
2059}
2060#[derive(::serde::Serialize, ::serde::Deserialize)]
2061#[derive(Ord, PartialOrd)]
2062#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2063pub struct FilteredTimeSerie {
2064 #[prost(uint32, required, tag = "1")]
2065 pub last_second: u32,
2066 #[prost(uint32, repeated, packed = "false", tag = "2")]
2067 pub last_minute: ::prost::alloc::vec::Vec<u32>,
2068 #[prost(uint32, repeated, packed = "false", tag = "3")]
2069 pub last_hour: ::prost::alloc::vec::Vec<u32>,
2070}
2071#[derive(::serde::Serialize, ::serde::Deserialize)]
2072#[derive(Ord, PartialOrd)]
2073#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
2074pub struct Percentiles {
2075 #[prost(uint64, required, tag = "1")]
2076 pub samples: u64,
2077 #[prost(uint64, required, tag = "2")]
2078 pub p_50: u64,
2079 #[prost(uint64, required, tag = "3")]
2080 pub p_90: u64,
2081 #[prost(uint64, required, tag = "4")]
2082 pub p_99: u64,
2083 #[prost(uint64, required, tag = "5")]
2084 pub p_99_9: u64,
2085 #[prost(uint64, required, tag = "6")]
2086 pub p_99_99: u64,
2087 #[prost(uint64, required, tag = "7")]
2088 pub p_99_999: u64,
2089 #[prost(uint64, required, tag = "8")]
2090 pub p_100: u64,
2091 #[prost(uint64, required, tag = "9")]
2092 pub sum: u64,
2093}
2094#[derive(::serde::Serialize, ::serde::Deserialize)]
2096#[derive(Ord, PartialOrd)]
2097#[derive(Hash, Eq)]
2098#[derive(Clone, PartialEq, ::prost::Message)]
2099pub struct FilteredHistogram {
2100 #[prost(uint64, required, tag = "1")]
2101 pub sum: u64,
2102 #[prost(uint64, required, tag = "2")]
2103 pub count: u64,
2104 #[prost(message, repeated, tag = "3")]
2105 pub buckets: ::prost::alloc::vec::Vec<Bucket>,
2106}
2107#[derive(::serde::Serialize, ::serde::Deserialize)]
2109#[derive(Ord, PartialOrd)]
2110#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
2111pub struct Bucket {
2112 #[prost(uint64, required, tag = "1")]
2113 pub count: u64,
2114 #[prost(uint64, required, tag = "2")]
2116 pub le: u64,
2117}
2118#[derive(::serde::Serialize, ::serde::Deserialize)]
2119#[derive(Ord, PartialOrd)]
2120#[derive(Hash, Eq)]
2121#[derive(Clone, PartialEq, ::prost::Message)]
2122pub struct RequestCounts {
2123 #[prost(btree_map = "string, int32", tag = "1")]
2124 pub map: ::prost::alloc::collections::BTreeMap<::prost::alloc::string::String, i32>,
2125}
2126#[derive(::serde::Serialize, ::serde::Deserialize)]
2129#[derive(Ord, PartialOrd)]
2130#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
2131pub struct MaxConnectionsPerIpLimit {
2132 #[prost(uint64, required, tag = "1")]
2133 pub limit: u64,
2134}
2135#[derive(::serde::Serialize, ::serde::Deserialize)]
2139#[derive(Ord, PartialOrd)]
2140#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
2141pub struct SocketAddress {
2142 #[prost(message, required, tag = "1")]
2143 pub ip: IpAddress,
2144 #[prost(uint32, required, tag = "2")]
2145 pub port: u32,
2146}
2147#[derive(::serde::Serialize, ::serde::Deserialize)]
2148#[derive(Ord, PartialOrd)]
2149#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
2150pub struct IpAddress {
2151 #[prost(oneof = "ip_address::Inner", tags = "1, 2")]
2152 pub inner: ::core::option::Option<ip_address::Inner>,
2153}
2154pub mod ip_address {
2156 #[derive(::serde::Serialize, ::serde::Deserialize)]
2157 #[serde(rename_all = "SCREAMING_SNAKE_CASE")]
2158 #[derive(Ord, PartialOrd)]
2159 #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Oneof)]
2160 pub enum Inner {
2161 #[prost(fixed32, tag = "1")]
2162 V4(u32),
2163 #[prost(message, tag = "2")]
2164 V6(super::Uint128),
2165 }
2166}
2167#[derive(::serde::Serialize, ::serde::Deserialize)]
2169#[derive(Ord, PartialOrd)]
2170#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
2171pub struct Uint128 {
2172 #[prost(uint64, required, tag = "1")]
2174 pub low: u64,
2175 #[prost(uint64, required, tag = "2")]
2177 pub high: u64,
2178}
2179#[derive(::serde::Serialize, ::serde::Deserialize)]
2181#[derive(Ord, PartialOrd)]
2182#[derive(Hash, Eq)]
2183#[derive(Clone, PartialEq, ::prost::Message)]
2184#[prost(skip_debug)]
2185pub struct WorkerRequest {
2186 #[prost(string, required, tag = "1")]
2187 pub id: ::prost::alloc::string::String,
2188 #[prost(message, required, tag = "2")]
2189 pub content: Request,
2190}
2191#[derive(::serde::Serialize, ::serde::Deserialize)]
2193#[derive(Ord, PartialOrd)]
2194#[derive(Hash, Eq)]
2195#[derive(Clone, PartialEq, ::prost::Message)]
2196#[prost(skip_debug)]
2197pub struct WorkerResponse {
2198 #[prost(string, required, tag = "1")]
2199 pub id: ::prost::alloc::string::String,
2200 #[prost(enumeration = "ResponseStatus", required, tag = "2")]
2201 pub status: i32,
2202 #[prost(string, required, tag = "3")]
2204 pub message: ::prost::alloc::string::String,
2205 #[prost(message, optional, tag = "4")]
2206 pub content: ::core::option::Option<ResponseContent>,
2207}
2208#[derive(::serde::Serialize, ::serde::Deserialize)]
2254#[derive(Ord, PartialOrd)]
2255#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2256pub struct SetMetricDetail {
2257 #[prost(string, required, tag = "1")]
2261 pub client_id: ::prost::alloc::string::String,
2262 #[prost(enumeration = "MetricDetail", optional, tag = "2")]
2264 pub detail: ::core::option::Option<i32>,
2265 #[prost(uint32, optional, tag = "3")]
2270 pub ttl_seconds: ::core::option::Option<u32>,
2271 #[prost(bool, optional, tag = "4")]
2274 pub clear: ::core::option::Option<bool>,
2275 #[prost(string, optional, tag = "5")]
2278 pub reason: ::core::option::Option<::prost::alloc::string::String>,
2279 #[prost(int32, optional, tag = "6")]
2291 pub peer_pid: ::core::option::Option<i32>,
2292 #[prost(string, optional, tag = "7")]
2293 pub peer_session_ulid: ::core::option::Option<::prost::alloc::string::String>,
2294}
2295#[derive(::serde::Serialize, ::serde::Deserialize)]
2300#[derive(Ord, PartialOrd)]
2301#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
2302pub struct WorkerMetricDetailStatus {
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(uint32, required, tag = "4")]
2316 pub active_lease_count: u32,
2317}
2318#[derive(::serde::Serialize, ::serde::Deserialize)]
2322#[derive(Ord, PartialOrd)]
2323#[derive(Hash, Eq)]
2324#[derive(Clone, PartialEq, ::prost::Message)]
2325pub struct MetricDetailStatus {
2326 #[prost(enumeration = "MetricDetail", required, tag = "1")]
2329 pub configured: i32,
2330 #[prost(enumeration = "MetricDetail", required, tag = "2")]
2332 pub effective: i32,
2333 #[prost(enumeration = "MetricDetail", required, tag = "3")]
2335 pub previous_effective: i32,
2336 #[prost(btree_map = "string, message", tag = "4")]
2339 pub workers: ::prost::alloc::collections::BTreeMap<
2340 ::prost::alloc::string::String,
2341 WorkerMetricDetailStatus,
2342 >,
2343}
2344#[derive(::serde::Serialize, ::serde::Deserialize)]
2346#[derive(Ord, PartialOrd)]
2347#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2348pub struct ServerMetricsConfig {
2349 #[prost(string, required, tag = "1")]
2350 pub address: ::prost::alloc::string::String,
2351 #[prost(bool, required, tag = "2")]
2352 pub tagged_metrics: bool,
2353 #[prost(string, optional, tag = "3")]
2354 pub prefix: ::core::option::Option<::prost::alloc::string::String>,
2355 #[prost(enumeration = "MetricDetail", optional, tag = "4")]
2358 pub detail: ::core::option::Option<i32>,
2359}
2360#[derive(::serde::Serialize, ::serde::Deserialize)]
2363#[derive(Ord, PartialOrd)]
2364#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2365pub struct ServerConfig {
2366 #[prost(uint64, required, tag = "1", default = "10000")]
2367 pub max_connections: u64,
2368 #[prost(uint32, required, tag = "2", default = "60")]
2369 pub front_timeout: u32,
2370 #[prost(uint32, required, tag = "3", default = "30")]
2371 pub back_timeout: u32,
2372 #[prost(uint32, required, tag = "4", default = "3")]
2373 pub connect_timeout: u32,
2374 #[prost(uint32, required, tag = "5", default = "1800")]
2375 pub zombie_check_interval: u32,
2376 #[prost(uint32, required, tag = "6", default = "60")]
2377 pub accept_queue_timeout: u32,
2378 #[prost(uint64, required, tag = "7", default = "1")]
2379 pub min_buffers: u64,
2380 #[prost(uint64, required, tag = "8", default = "1000")]
2381 pub max_buffers: u64,
2382 #[prost(uint64, required, tag = "9", default = "16393")]
2383 pub buffer_size: u64,
2384 #[prost(string, required, tag = "10", default = "info")]
2385 pub log_level: ::prost::alloc::string::String,
2386 #[prost(string, required, tag = "11", default = "stdout")]
2387 pub log_target: ::prost::alloc::string::String,
2388 #[prost(string, optional, tag = "12")]
2389 pub access_logs_target: ::core::option::Option<::prost::alloc::string::String>,
2390 #[prost(uint64, required, tag = "13", default = "1000000")]
2391 pub command_buffer_size: u64,
2392 #[prost(uint64, required, tag = "14", default = "2000000")]
2393 pub max_command_buffer_size: u64,
2394 #[prost(message, optional, tag = "15")]
2395 pub metrics: ::core::option::Option<ServerMetricsConfig>,
2396 #[prost(enumeration = "ProtobufAccessLogFormat", required, tag = "16")]
2397 pub access_log_format: i32,
2398 #[prost(bool, required, tag = "17")]
2399 pub log_colored: bool,
2400 #[prost(string, optional, tag = "18")]
2406 pub audit_logs_target: ::core::option::Option<::prost::alloc::string::String>,
2407 #[prost(string, optional, tag = "19")]
2410 pub audit_logs_json_target: ::core::option::Option<::prost::alloc::string::String>,
2411 #[prost(uint64, optional, tag = "20")]
2419 pub slab_entries_per_connection: ::core::option::Option<u64>,
2420 #[prost(uint64, optional, tag = "21")]
2430 pub basic_auth_max_credential_bytes: ::core::option::Option<u64>,
2431 #[prost(bool, optional, tag = "22", default = "false")]
2435 pub evict_on_queue_full: ::core::option::Option<bool>,
2436 #[prost(uint64, optional, tag = "23", default = "0")]
2444 pub max_connections_per_ip: ::core::option::Option<u64>,
2445 #[prost(uint32, optional, tag = "24", default = "60")]
2452 pub retry_after: ::core::option::Option<u32>,
2453 #[prost(uint64, optional, tag = "25")]
2465 pub splice_pipe_capacity_bytes: ::core::option::Option<u64>,
2466}
2467#[derive(::serde::Serialize, ::serde::Deserialize)]
2469#[derive(Ord, PartialOrd)]
2470#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2471pub struct ListenersCount {
2472 #[prost(string, repeated, tag = "1")]
2474 pub http: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2475 #[prost(string, repeated, tag = "2")]
2477 pub tls: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2478 #[prost(string, repeated, tag = "3")]
2480 pub tcp: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2481 #[prost(string, repeated, tag = "4")]
2483 pub udp: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2484}
2485#[derive(::serde::Serialize, ::serde::Deserialize)]
2488#[derive(Ord, PartialOrd)]
2489#[derive(Hash, Eq)]
2490#[derive(Clone, PartialEq, ::prost::Message)]
2491pub struct InitialState {
2492 #[prost(message, repeated, tag = "1")]
2493 pub requests: ::prost::alloc::vec::Vec<WorkerRequest>,
2494}
2495#[derive(::serde::Serialize, ::serde::Deserialize)]
2496#[derive(Ord, PartialOrd)]
2497#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2498pub struct OpenTelemetry {
2499 #[prost(string, required, tag = "1")]
2500 pub trace_id: ::prost::alloc::string::String,
2501 #[prost(string, required, tag = "2")]
2502 pub span_id: ::prost::alloc::string::String,
2503 #[prost(string, optional, tag = "3")]
2504 pub parent_span_id: ::core::option::Option<::prost::alloc::string::String>,
2505}
2506#[derive(::serde::Serialize, ::serde::Deserialize)]
2508#[derive(Ord, PartialOrd)]
2509#[derive(Hash, Eq)]
2510#[derive(Clone, PartialEq, ::prost::Message)]
2511pub struct ProtobufAccessLog {
2512 #[prost(string, optional, tag = "1")]
2514 pub message: ::core::option::Option<::prost::alloc::string::String>,
2515 #[prost(message, required, tag = "2")]
2517 pub request_id: Uint128,
2518 #[prost(string, optional, tag = "3")]
2520 pub cluster_id: ::core::option::Option<::prost::alloc::string::String>,
2521 #[prost(string, optional, tag = "4")]
2523 pub backend_id: ::core::option::Option<::prost::alloc::string::String>,
2524 #[prost(message, optional, tag = "5")]
2526 pub session_address: ::core::option::Option<SocketAddress>,
2527 #[prost(message, optional, tag = "6")]
2529 pub backend_address: ::core::option::Option<SocketAddress>,
2530 #[prost(string, required, tag = "7")]
2532 pub protocol: ::prost::alloc::string::String,
2533 #[prost(message, required, tag = "8")]
2535 pub endpoint: ProtobufEndpoint,
2536 #[prost(uint64, optional, tag = "9")]
2538 pub client_rtt: ::core::option::Option<u64>,
2539 #[prost(uint64, optional, tag = "10")]
2541 pub server_rtt: ::core::option::Option<u64>,
2542 #[prost(uint64, required, tag = "13")]
2544 pub service_time: u64,
2545 #[prost(uint64, required, tag = "14")]
2547 pub bytes_in: u64,
2548 #[prost(uint64, required, tag = "15")]
2550 pub bytes_out: u64,
2551 #[prost(string, optional, tag = "16")]
2553 pub user_agent: ::core::option::Option<::prost::alloc::string::String>,
2554 #[prost(btree_map = "string, string", tag = "17")]
2556 pub tags: ::prost::alloc::collections::BTreeMap<
2557 ::prost::alloc::string::String,
2558 ::prost::alloc::string::String,
2559 >,
2560 #[prost(string, required, tag = "18")]
2562 pub tag: ::prost::alloc::string::String,
2563 #[prost(message, required, tag = "19")]
2565 pub time: Uint128,
2566 #[prost(uint64, optional, tag = "20")]
2570 pub request_time: ::core::option::Option<u64>,
2571 #[prost(uint64, optional, tag = "21")]
2573 pub response_time: ::core::option::Option<u64>,
2574 #[prost(message, optional, tag = "22")]
2576 pub otel: ::core::option::Option<OpenTelemetry>,
2577 #[prost(message, optional, tag = "23")]
2581 pub session_id: ::core::option::Option<Uint128>,
2582 #[prost(string, optional, tag = "24")]
2587 pub x_request_id: ::core::option::Option<::prost::alloc::string::String>,
2588 #[prost(string, optional, tag = "25")]
2592 pub tls_version: ::core::option::Option<::prost::alloc::string::String>,
2593 #[prost(string, optional, tag = "26")]
2598 pub tls_cipher: ::core::option::Option<::prost::alloc::string::String>,
2599 #[prost(string, optional, tag = "27")]
2603 pub tls_sni: ::core::option::Option<::prost::alloc::string::String>,
2604 #[prost(string, optional, tag = "28")]
2607 pub tls_alpn: ::core::option::Option<::prost::alloc::string::String>,
2608 #[prost(string, optional, tag = "29")]
2613 pub xff_chain: ::core::option::Option<::prost::alloc::string::String>,
2614 #[prost(message, optional, tag = "30")]
2622 pub start_time: ::core::option::Option<Uint128>,
2623}
2624#[derive(::serde::Serialize, ::serde::Deserialize)]
2625#[derive(Ord, PartialOrd)]
2626#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2627pub struct ProtobufEndpoint {
2628 #[prost(oneof = "protobuf_endpoint::Inner", tags = "1, 2")]
2629 pub inner: ::core::option::Option<protobuf_endpoint::Inner>,
2630}
2631pub mod protobuf_endpoint {
2633 #[derive(::serde::Serialize, ::serde::Deserialize)]
2634 #[serde(rename_all = "SCREAMING_SNAKE_CASE")]
2635 #[derive(Ord, PartialOrd)]
2636 #[derive(Clone, PartialEq, Eq, Hash, ::prost::Oneof)]
2637 pub enum Inner {
2638 #[prost(message, tag = "1")]
2639 Http(super::HttpEndpoint),
2640 #[prost(message, tag = "2")]
2641 Tcp(super::TcpEndpoint),
2642 }
2643}
2644#[derive(::serde::Serialize, ::serde::Deserialize)]
2645#[derive(Ord, PartialOrd)]
2646#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2647pub struct HttpEndpoint {
2648 #[prost(string, optional, tag = "1")]
2649 pub method: ::core::option::Option<::prost::alloc::string::String>,
2650 #[prost(string, optional, tag = "2")]
2651 pub authority: ::core::option::Option<::prost::alloc::string::String>,
2652 #[prost(string, optional, tag = "3")]
2653 pub path: ::core::option::Option<::prost::alloc::string::String>,
2654 #[prost(uint32, optional, tag = "4")]
2657 pub status: ::core::option::Option<u32>,
2658 #[prost(string, optional, tag = "5")]
2659 pub reason: ::core::option::Option<::prost::alloc::string::String>,
2660}
2661#[derive(::serde::Serialize, ::serde::Deserialize)]
2662#[derive(Ord, PartialOrd)]
2663#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
2664pub struct TcpEndpoint {}
2665#[derive(::serde::Serialize, ::serde::Deserialize)]
2666#[serde(rename_all = "SCREAMING_SNAKE_CASE")]
2667#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2668#[repr(i32)]
2669pub enum ListenerType {
2670 Http = 0,
2671 Https = 1,
2672 Tcp = 2,
2673 Udp = 3,
2674}
2675impl ListenerType {
2676 pub fn as_str_name(&self) -> &'static str {
2681 match self {
2682 Self::Http => "HTTP",
2683 Self::Https => "HTTPS",
2684 Self::Tcp => "TCP",
2685 Self::Udp => "UDP",
2686 }
2687 }
2688 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2690 match value {
2691 "HTTP" => Some(Self::Http),
2692 "HTTPS" => Some(Self::Https),
2693 "TCP" => Some(Self::Tcp),
2694 "UDP" => Some(Self::Udp),
2695 _ => None,
2696 }
2697 }
2698}
2699#[derive(::serde::Serialize, ::serde::Deserialize)]
2712#[serde(rename_all = "SCREAMING_SNAKE_CASE")]
2713#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2714#[repr(i32)]
2715pub enum RedirectPolicy {
2716 Forward = 0,
2717 Permanent = 1,
2718 Unauthorized = 2,
2719 Found = 3,
2720 PermanentRedirect = 4,
2721}
2722impl RedirectPolicy {
2723 pub fn as_str_name(&self) -> &'static str {
2728 match self {
2729 Self::Forward => "FORWARD",
2730 Self::Permanent => "PERMANENT",
2731 Self::Unauthorized => "UNAUTHORIZED",
2732 Self::Found => "FOUND",
2733 Self::PermanentRedirect => "PERMANENT_REDIRECT",
2734 }
2735 }
2736 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2738 match value {
2739 "FORWARD" => Some(Self::Forward),
2740 "PERMANENT" => Some(Self::Permanent),
2741 "UNAUTHORIZED" => Some(Self::Unauthorized),
2742 "FOUND" => Some(Self::Found),
2743 "PERMANENT_REDIRECT" => Some(Self::PermanentRedirect),
2744 _ => None,
2745 }
2746 }
2747}
2748#[derive(::serde::Serialize, ::serde::Deserialize)]
2752#[serde(rename_all = "SCREAMING_SNAKE_CASE")]
2753#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2754#[repr(i32)]
2755pub enum RedirectScheme {
2756 UseSame = 0,
2757 UseHttp = 1,
2758 UseHttps = 2,
2759}
2760impl RedirectScheme {
2761 pub fn as_str_name(&self) -> &'static str {
2766 match self {
2767 Self::UseSame => "USE_SAME",
2768 Self::UseHttp => "USE_HTTP",
2769 Self::UseHttps => "USE_HTTPS",
2770 }
2771 }
2772 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2774 match value {
2775 "USE_SAME" => Some(Self::UseSame),
2776 "USE_HTTP" => Some(Self::UseHttp),
2777 "USE_HTTPS" => Some(Self::UseHttps),
2778 _ => None,
2779 }
2780 }
2781}
2782#[derive(::serde::Serialize, ::serde::Deserialize)]
2787#[serde(rename_all = "SCREAMING_SNAKE_CASE")]
2788#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2789#[repr(i32)]
2790pub enum HeaderPosition {
2791 Unspecified = 0,
2797 Request = 1,
2798 Response = 2,
2799 Both = 3,
2800}
2801impl HeaderPosition {
2802 pub fn as_str_name(&self) -> &'static str {
2807 match self {
2808 Self::Unspecified => "HEADER_POSITION_UNSPECIFIED",
2809 Self::Request => "REQUEST",
2810 Self::Response => "RESPONSE",
2811 Self::Both => "BOTH",
2812 }
2813 }
2814 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2816 match value {
2817 "HEADER_POSITION_UNSPECIFIED" => Some(Self::Unspecified),
2818 "REQUEST" => Some(Self::Request),
2819 "RESPONSE" => Some(Self::Response),
2820 "BOTH" => Some(Self::Both),
2821 _ => None,
2822 }
2823 }
2824}
2825#[derive(::serde::Serialize, ::serde::Deserialize)]
2827#[serde(rename_all = "SCREAMING_SNAKE_CASE")]
2828#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2829#[repr(i32)]
2830pub enum PathRuleKind {
2831 Prefix = 0,
2833 Regex = 1,
2835 Equals = 2,
2837}
2838impl PathRuleKind {
2839 pub fn as_str_name(&self) -> &'static str {
2844 match self {
2845 Self::Prefix => "PREFIX",
2846 Self::Regex => "REGEX",
2847 Self::Equals => "EQUALS",
2848 }
2849 }
2850 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2852 match value {
2853 "PREFIX" => Some(Self::Prefix),
2854 "REGEX" => Some(Self::Regex),
2855 "EQUALS" => Some(Self::Equals),
2856 _ => None,
2857 }
2858 }
2859}
2860#[derive(::serde::Serialize, ::serde::Deserialize)]
2862#[serde(rename_all = "SCREAMING_SNAKE_CASE")]
2863#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2864#[repr(i32)]
2865pub enum RulePosition {
2866 Pre = 0,
2867 Post = 1,
2868 Tree = 2,
2869}
2870impl RulePosition {
2871 pub fn as_str_name(&self) -> &'static str {
2876 match self {
2877 Self::Pre => "PRE",
2878 Self::Post => "POST",
2879 Self::Tree => "TREE",
2880 }
2881 }
2882 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2884 match value {
2885 "PRE" => Some(Self::Pre),
2886 "POST" => Some(Self::Post),
2887 "TREE" => Some(Self::Tree),
2888 _ => None,
2889 }
2890 }
2891}
2892#[derive(::serde::Serialize, ::serde::Deserialize)]
2893#[serde(rename_all = "SCREAMING_SNAKE_CASE")]
2894#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2895#[repr(i32)]
2896pub enum TlsVersion {
2897 SslV2 = 0,
2898 SslV3 = 1,
2899 TlsV10 = 2,
2900 TlsV11 = 3,
2901 TlsV12 = 4,
2902 TlsV13 = 5,
2903}
2904impl TlsVersion {
2905 pub fn as_str_name(&self) -> &'static str {
2910 match self {
2911 Self::SslV2 => "SSL_V2",
2912 Self::SslV3 => "SSL_V3",
2913 Self::TlsV10 => "TLS_V1_0",
2914 Self::TlsV11 => "TLS_V1_1",
2915 Self::TlsV12 => "TLS_V1_2",
2916 Self::TlsV13 => "TLS_V1_3",
2917 }
2918 }
2919 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2921 match value {
2922 "SSL_V2" => Some(Self::SslV2),
2923 "SSL_V3" => Some(Self::SslV3),
2924 "TLS_V1_0" => Some(Self::TlsV10),
2925 "TLS_V1_1" => Some(Self::TlsV11),
2926 "TLS_V1_2" => Some(Self::TlsV12),
2927 "TLS_V1_3" => Some(Self::TlsV13),
2928 _ => None,
2929 }
2930 }
2931}
2932#[derive(::serde::Serialize, ::serde::Deserialize)]
2936#[serde(rename_all = "SCREAMING_SNAKE_CASE")]
2937#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2938#[repr(i32)]
2939pub enum UdpAffinityKey {
2940 SourceIp = 0,
2941 SourceIpPort = 1,
2942}
2943impl UdpAffinityKey {
2944 pub fn as_str_name(&self) -> &'static str {
2949 match self {
2950 Self::SourceIp => "SOURCE_IP",
2951 Self::SourceIpPort => "SOURCE_IP_PORT",
2952 }
2953 }
2954 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2956 match value {
2957 "SOURCE_IP" => Some(Self::SourceIp),
2958 "SOURCE_IP_PORT" => Some(Self::SourceIpPort),
2959 _ => None,
2960 }
2961 }
2962}
2963#[derive(::serde::Serialize, ::serde::Deserialize)]
2967#[serde(rename_all = "SCREAMING_SNAKE_CASE")]
2968#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2969#[repr(i32)]
2970pub enum UdpHealthMode {
2971 HealthOff = 0,
2972 TcpProbe = 1,
2973 UdpProbe = 2,
2974}
2975impl UdpHealthMode {
2976 pub fn as_str_name(&self) -> &'static str {
2981 match self {
2982 Self::HealthOff => "HEALTH_OFF",
2983 Self::TcpProbe => "TCP_PROBE",
2984 Self::UdpProbe => "UDP_PROBE",
2985 }
2986 }
2987 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2989 match value {
2990 "HEALTH_OFF" => Some(Self::HealthOff),
2991 "TCP_PROBE" => Some(Self::TcpProbe),
2992 "UDP_PROBE" => Some(Self::UdpProbe),
2993 _ => None,
2994 }
2995 }
2996}
2997#[derive(::serde::Serialize, ::serde::Deserialize)]
2998#[serde(rename_all = "SCREAMING_SNAKE_CASE")]
2999#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
3000#[repr(i32)]
3001pub enum LoadBalancingAlgorithms {
3002 RoundRobin = 0,
3003 Random = 1,
3004 LeastLoaded = 2,
3005 PowerOfTwo = 3,
3006 Hrw = 4,
3010 Maglev = 5,
3013}
3014impl LoadBalancingAlgorithms {
3015 pub fn as_str_name(&self) -> &'static str {
3020 match self {
3021 Self::RoundRobin => "ROUND_ROBIN",
3022 Self::Random => "RANDOM",
3023 Self::LeastLoaded => "LEAST_LOADED",
3024 Self::PowerOfTwo => "POWER_OF_TWO",
3025 Self::Hrw => "HRW",
3026 Self::Maglev => "MAGLEV",
3027 }
3028 }
3029 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
3031 match value {
3032 "ROUND_ROBIN" => Some(Self::RoundRobin),
3033 "RANDOM" => Some(Self::Random),
3034 "LEAST_LOADED" => Some(Self::LeastLoaded),
3035 "POWER_OF_TWO" => Some(Self::PowerOfTwo),
3036 "HRW" => Some(Self::Hrw),
3037 "MAGLEV" => Some(Self::Maglev),
3038 _ => None,
3039 }
3040 }
3041}
3042#[derive(::serde::Serialize, ::serde::Deserialize)]
3043#[serde(rename_all = "SCREAMING_SNAKE_CASE")]
3044#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
3045#[repr(i32)]
3046pub enum ProxyProtocolConfig {
3047 ExpectHeader = 0,
3048 SendHeader = 1,
3049 RelayHeader = 2,
3050}
3051impl ProxyProtocolConfig {
3052 pub fn as_str_name(&self) -> &'static str {
3057 match self {
3058 Self::ExpectHeader => "EXPECT_HEADER",
3059 Self::SendHeader => "SEND_HEADER",
3060 Self::RelayHeader => "RELAY_HEADER",
3061 }
3062 }
3063 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
3065 match value {
3066 "EXPECT_HEADER" => Some(Self::ExpectHeader),
3067 "SEND_HEADER" => Some(Self::SendHeader),
3068 "RELAY_HEADER" => Some(Self::RelayHeader),
3069 _ => None,
3070 }
3071 }
3072}
3073#[derive(::serde::Serialize, ::serde::Deserialize)]
3075#[serde(rename_all = "SCREAMING_SNAKE_CASE")]
3076#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
3077#[repr(i32)]
3078pub enum LoadMetric {
3079 Connections = 0,
3081 Requests = 1,
3083 ConnectionTime = 2,
3085}
3086impl LoadMetric {
3087 pub fn as_str_name(&self) -> &'static str {
3092 match self {
3093 Self::Connections => "CONNECTIONS",
3094 Self::Requests => "REQUESTS",
3095 Self::ConnectionTime => "CONNECTION_TIME",
3096 }
3097 }
3098 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
3100 match value {
3101 "CONNECTIONS" => Some(Self::Connections),
3102 "REQUESTS" => Some(Self::Requests),
3103 "CONNECTION_TIME" => Some(Self::ConnectionTime),
3104 _ => None,
3105 }
3106 }
3107}
3108#[derive(::serde::Serialize, ::serde::Deserialize)]
3110#[serde(rename_all = "SCREAMING_SNAKE_CASE")]
3111#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
3112#[repr(i32)]
3113pub enum MetricsConfiguration {
3114 Enabled = 0,
3116 Disabled = 1,
3118 Clear = 2,
3120}
3121impl MetricsConfiguration {
3122 pub fn as_str_name(&self) -> &'static str {
3127 match self {
3128 Self::Enabled => "ENABLED",
3129 Self::Disabled => "DISABLED",
3130 Self::Clear => "CLEAR",
3131 }
3132 }
3133 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
3135 match value {
3136 "ENABLED" => Some(Self::Enabled),
3137 "DISABLED" => Some(Self::Disabled),
3138 "CLEAR" => Some(Self::Clear),
3139 _ => None,
3140 }
3141 }
3142}
3143#[derive(::serde::Serialize, ::serde::Deserialize)]
3144#[serde(rename_all = "SCREAMING_SNAKE_CASE")]
3145#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
3146#[repr(i32)]
3147pub enum EventKind {
3148 BackendDown = 0,
3149 BackendUp = 1,
3150 NoAvailableBackends = 2,
3151 RemovedBackendHasNoConnections = 3,
3152 ClusterAdded = 4,
3159 ClusterRemoved = 5,
3160 FrontendAdded = 6,
3161 FrontendRemoved = 7,
3162 CertificateAdded = 8,
3163 CertificateRemoved = 9,
3164 CertificateReplaced = 10,
3165 ListenerActivated = 11,
3166 ListenerDeactivated = 12,
3167 ConfigurationReloaded = 13,
3168 WorkerKilled = 14,
3169 WorkerRelaunched = 15,
3170 LoggingLevelChanged = 16,
3171 MetricsConfigured = 17,
3172 ListenerUpdated = 18,
3174 StateLoaded = 19,
3178 StateSaved = 20,
3180 ListenerAdded = 21,
3184 ListenerRemoved = 22,
3188 SozuStopRequested = 23,
3192 MainUpgraded = 24,
3194 WorkerUpgraded = 25,
3196 EventsSubscribed = 26,
3199 HealthCheckHealthy = 27,
3205 HealthCheckUnhealthy = 28,
3207 ClusterRecovered = 29,
3211 MetricDetailChanged = 30,
3225}
3226impl EventKind {
3227 pub fn as_str_name(&self) -> &'static str {
3232 match self {
3233 Self::BackendDown => "BACKEND_DOWN",
3234 Self::BackendUp => "BACKEND_UP",
3235 Self::NoAvailableBackends => "NO_AVAILABLE_BACKENDS",
3236 Self::RemovedBackendHasNoConnections => "REMOVED_BACKEND_HAS_NO_CONNECTIONS",
3237 Self::ClusterAdded => "CLUSTER_ADDED",
3238 Self::ClusterRemoved => "CLUSTER_REMOVED",
3239 Self::FrontendAdded => "FRONTEND_ADDED",
3240 Self::FrontendRemoved => "FRONTEND_REMOVED",
3241 Self::CertificateAdded => "CERTIFICATE_ADDED",
3242 Self::CertificateRemoved => "CERTIFICATE_REMOVED",
3243 Self::CertificateReplaced => "CERTIFICATE_REPLACED",
3244 Self::ListenerActivated => "LISTENER_ACTIVATED",
3245 Self::ListenerDeactivated => "LISTENER_DEACTIVATED",
3246 Self::ConfigurationReloaded => "CONFIGURATION_RELOADED",
3247 Self::WorkerKilled => "WORKER_KILLED",
3248 Self::WorkerRelaunched => "WORKER_RELAUNCHED",
3249 Self::LoggingLevelChanged => "LOGGING_LEVEL_CHANGED",
3250 Self::MetricsConfigured => "METRICS_CONFIGURED",
3251 Self::ListenerUpdated => "LISTENER_UPDATED",
3252 Self::StateLoaded => "STATE_LOADED",
3253 Self::StateSaved => "STATE_SAVED",
3254 Self::ListenerAdded => "LISTENER_ADDED",
3255 Self::ListenerRemoved => "LISTENER_REMOVED",
3256 Self::SozuStopRequested => "SOZU_STOP_REQUESTED",
3257 Self::MainUpgraded => "MAIN_UPGRADED",
3258 Self::WorkerUpgraded => "WORKER_UPGRADED",
3259 Self::EventsSubscribed => "EVENTS_SUBSCRIBED",
3260 Self::HealthCheckHealthy => "HEALTH_CHECK_HEALTHY",
3261 Self::HealthCheckUnhealthy => "HEALTH_CHECK_UNHEALTHY",
3262 Self::ClusterRecovered => "CLUSTER_RECOVERED",
3263 Self::MetricDetailChanged => "METRIC_DETAIL_CHANGED",
3264 }
3265 }
3266 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
3268 match value {
3269 "BACKEND_DOWN" => Some(Self::BackendDown),
3270 "BACKEND_UP" => Some(Self::BackendUp),
3271 "NO_AVAILABLE_BACKENDS" => Some(Self::NoAvailableBackends),
3272 "REMOVED_BACKEND_HAS_NO_CONNECTIONS" => {
3273 Some(Self::RemovedBackendHasNoConnections)
3274 }
3275 "CLUSTER_ADDED" => Some(Self::ClusterAdded),
3276 "CLUSTER_REMOVED" => Some(Self::ClusterRemoved),
3277 "FRONTEND_ADDED" => Some(Self::FrontendAdded),
3278 "FRONTEND_REMOVED" => Some(Self::FrontendRemoved),
3279 "CERTIFICATE_ADDED" => Some(Self::CertificateAdded),
3280 "CERTIFICATE_REMOVED" => Some(Self::CertificateRemoved),
3281 "CERTIFICATE_REPLACED" => Some(Self::CertificateReplaced),
3282 "LISTENER_ACTIVATED" => Some(Self::ListenerActivated),
3283 "LISTENER_DEACTIVATED" => Some(Self::ListenerDeactivated),
3284 "CONFIGURATION_RELOADED" => Some(Self::ConfigurationReloaded),
3285 "WORKER_KILLED" => Some(Self::WorkerKilled),
3286 "WORKER_RELAUNCHED" => Some(Self::WorkerRelaunched),
3287 "LOGGING_LEVEL_CHANGED" => Some(Self::LoggingLevelChanged),
3288 "METRICS_CONFIGURED" => Some(Self::MetricsConfigured),
3289 "LISTENER_UPDATED" => Some(Self::ListenerUpdated),
3290 "STATE_LOADED" => Some(Self::StateLoaded),
3291 "STATE_SAVED" => Some(Self::StateSaved),
3292 "LISTENER_ADDED" => Some(Self::ListenerAdded),
3293 "LISTENER_REMOVED" => Some(Self::ListenerRemoved),
3294 "SOZU_STOP_REQUESTED" => Some(Self::SozuStopRequested),
3295 "MAIN_UPGRADED" => Some(Self::MainUpgraded),
3296 "WORKER_UPGRADED" => Some(Self::WorkerUpgraded),
3297 "EVENTS_SUBSCRIBED" => Some(Self::EventsSubscribed),
3298 "HEALTH_CHECK_HEALTHY" => Some(Self::HealthCheckHealthy),
3299 "HEALTH_CHECK_UNHEALTHY" => Some(Self::HealthCheckUnhealthy),
3300 "CLUSTER_RECOVERED" => Some(Self::ClusterRecovered),
3301 "METRIC_DETAIL_CHANGED" => Some(Self::MetricDetailChanged),
3302 _ => None,
3303 }
3304 }
3305}
3306#[derive(::serde::Serialize, ::serde::Deserialize)]
3307#[serde(rename_all = "SCREAMING_SNAKE_CASE")]
3308#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
3309#[repr(i32)]
3310pub enum ResponseStatus {
3311 Ok = 0,
3312 Processing = 1,
3313 Failure = 2,
3314}
3315impl ResponseStatus {
3316 pub fn as_str_name(&self) -> &'static str {
3321 match self {
3322 Self::Ok => "OK",
3323 Self::Processing => "PROCESSING",
3324 Self::Failure => "FAILURE",
3325 }
3326 }
3327 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
3329 match value {
3330 "OK" => Some(Self::Ok),
3331 "PROCESSING" => Some(Self::Processing),
3332 "FAILURE" => Some(Self::Failure),
3333 _ => None,
3334 }
3335 }
3336}
3337#[derive(::serde::Serialize, ::serde::Deserialize)]
3339#[serde(rename_all = "SCREAMING_SNAKE_CASE")]
3340#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
3341#[repr(i32)]
3342pub enum RunState {
3343 Running = 0,
3344 Stopping = 1,
3345 Stopped = 2,
3346 NotAnswering = 3,
3347}
3348impl RunState {
3349 pub fn as_str_name(&self) -> &'static str {
3354 match self {
3355 Self::Running => "RUNNING",
3356 Self::Stopping => "STOPPING",
3357 Self::Stopped => "STOPPED",
3358 Self::NotAnswering => "NOT_ANSWERING",
3359 }
3360 }
3361 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
3363 match value {
3364 "RUNNING" => Some(Self::Running),
3365 "STOPPING" => Some(Self::Stopping),
3366 "STOPPED" => Some(Self::Stopped),
3367 "NOT_ANSWERING" => Some(Self::NotAnswering),
3368 _ => None,
3369 }
3370 }
3371}
3372#[derive(::serde::Serialize, ::serde::Deserialize)]
3379#[serde(rename_all = "SCREAMING_SNAKE_CASE")]
3380#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
3381#[repr(i32)]
3382pub enum MetricDetail {
3383 DetailProcess = 0,
3385 DetailFrontend = 1,
3387 DetailCluster = 2,
3389 DetailBackend = 3,
3391}
3392impl MetricDetail {
3393 pub fn as_str_name(&self) -> &'static str {
3398 match self {
3399 Self::DetailProcess => "DETAIL_PROCESS",
3400 Self::DetailFrontend => "DETAIL_FRONTEND",
3401 Self::DetailCluster => "DETAIL_CLUSTER",
3402 Self::DetailBackend => "DETAIL_BACKEND",
3403 }
3404 }
3405 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
3407 match value {
3408 "DETAIL_PROCESS" => Some(Self::DetailProcess),
3409 "DETAIL_FRONTEND" => Some(Self::DetailFrontend),
3410 "DETAIL_CLUSTER" => Some(Self::DetailCluster),
3411 "DETAIL_BACKEND" => Some(Self::DetailBackend),
3412 _ => None,
3413 }
3414 }
3415}
3416#[derive(::serde::Serialize, ::serde::Deserialize)]
3417#[serde(rename_all = "SCREAMING_SNAKE_CASE")]
3418#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
3419#[repr(i32)]
3420pub enum ProtobufAccessLogFormat {
3421 Ascii = 1,
3422 Protobuf = 2,
3423}
3424impl ProtobufAccessLogFormat {
3425 pub fn as_str_name(&self) -> &'static str {
3430 match self {
3431 Self::Ascii => "Ascii",
3432 Self::Protobuf => "Protobuf",
3433 }
3434 }
3435 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
3437 match value {
3438 "Ascii" => Some(Self::Ascii),
3439 "Protobuf" => Some(Self::Protobuf),
3440 _ => None,
3441 }
3442 }
3443}