1#[derive(::serde::Serialize, ::serde::Deserialize)]
4#[derive(Hash, Eq, Ord, PartialOrd)]
5#[derive(Clone, PartialEq, ::prost::Message)]
6pub struct Request {
7 #[prost(
8 oneof = "request::RequestType",
9 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"
10 )]
11 pub request_type: ::core::option::Option<request::RequestType>,
12}
13pub mod request {
15 #[derive(::serde::Serialize, ::serde::Deserialize)]
16 #[serde(rename_all = "SCREAMING_SNAKE_CASE")]
17 #[derive(Hash, Eq, Ord, PartialOrd)]
18 #[derive(Clone, PartialEq, ::prost::Oneof)]
19 pub enum RequestType {
20 #[prost(string, tag = "1")]
27 SaveState(::prost::alloc::string::String),
28 #[prost(string, tag = "2")]
30 LoadState(::prost::alloc::string::String),
31 #[prost(message, tag = "4")]
33 ListWorkers(super::ListWorkers),
34 #[prost(message, tag = "5")]
36 ListFrontends(super::FrontendFilters),
37 #[prost(message, tag = "6")]
39 ListListeners(super::ListListeners),
40 #[prost(string, tag = "7")]
45 LaunchWorker(::prost::alloc::string::String),
46 #[prost(message, tag = "8")]
48 UpgradeMain(super::UpgradeMain),
49 #[prost(uint32, tag = "9")]
51 UpgradeWorker(u32),
52 #[prost(message, tag = "10")]
54 SubscribeEvents(super::SubscribeEvents),
55 #[prost(string, tag = "11")]
59 ReloadConfiguration(::prost::alloc::string::String),
60 #[prost(message, tag = "12")]
62 Status(super::Status),
63 #[prost(message, tag = "13")]
65 AddCluster(super::Cluster),
66 #[prost(string, tag = "14")]
68 RemoveCluster(::prost::alloc::string::String),
69 #[prost(message, tag = "15")]
71 AddHttpFrontend(super::RequestHttpFrontend),
72 #[prost(message, tag = "16")]
74 RemoveHttpFrontend(super::RequestHttpFrontend),
75 #[prost(message, tag = "17")]
77 AddHttpsFrontend(super::RequestHttpFrontend),
78 #[prost(message, tag = "18")]
80 RemoveHttpsFrontend(super::RequestHttpFrontend),
81 #[prost(message, tag = "19")]
83 AddCertificate(super::AddCertificate),
84 #[prost(message, tag = "20")]
86 ReplaceCertificate(super::ReplaceCertificate),
87 #[prost(message, tag = "21")]
89 RemoveCertificate(super::RemoveCertificate),
90 #[prost(message, tag = "22")]
92 AddTcpFrontend(super::RequestTcpFrontend),
93 #[prost(message, tag = "23")]
95 RemoveTcpFrontend(super::RequestTcpFrontend),
96 #[prost(message, tag = "24")]
98 AddBackend(super::AddBackend),
99 #[prost(message, tag = "25")]
101 RemoveBackend(super::RemoveBackend),
102 #[prost(message, tag = "26")]
104 AddHttpListener(super::HttpListenerConfig),
105 #[prost(message, tag = "27")]
107 AddHttpsListener(super::HttpsListenerConfig),
108 #[prost(message, tag = "28")]
110 AddTcpListener(super::TcpListenerConfig),
111 #[prost(message, tag = "29")]
113 RemoveListener(super::RemoveListener),
114 #[prost(message, tag = "30")]
116 ActivateListener(super::ActivateListener),
117 #[prost(message, tag = "31")]
119 DeactivateListener(super::DeactivateListener),
120 #[prost(string, tag = "35")]
122 QueryClusterById(::prost::alloc::string::String),
123 #[prost(message, tag = "36")]
125 QueryClustersByDomain(super::QueryClusterByDomain),
126 #[prost(message, tag = "37")]
128 QueryClustersHashes(super::QueryClustersHashes),
129 #[prost(message, tag = "38")]
131 QueryMetrics(super::QueryMetricsOptions),
132 #[prost(message, tag = "39")]
134 SoftStop(super::SoftStop),
135 #[prost(message, tag = "40")]
137 HardStop(super::HardStop),
138 #[prost(enumeration = "super::MetricsConfiguration", tag = "41")]
140 ConfigureMetrics(i32),
141 #[prost(string, tag = "42")]
143 Logging(::prost::alloc::string::String),
144 #[prost(message, tag = "43")]
146 ReturnListenSockets(super::ReturnListenSockets),
147 #[prost(message, tag = "44")]
149 QueryCertificatesFromTheState(super::QueryCertificatesFilters),
150 #[prost(message, tag = "45")]
152 QueryCertificatesFromWorkers(super::QueryCertificatesFilters),
153 #[prost(message, tag = "46")]
156 CountRequests(super::CountRequests),
157 }
158}
159#[derive(::serde::Serialize, ::serde::Deserialize)]
160#[derive(Hash, Eq, Ord, PartialOrd)]
161#[derive(Clone, Copy, PartialEq, ::prost::Message)]
162pub struct ListWorkers {}
163#[derive(::serde::Serialize, ::serde::Deserialize)]
164#[derive(Hash, Eq, Ord, PartialOrd)]
165#[derive(Clone, Copy, PartialEq, ::prost::Message)]
166pub struct ListListeners {}
167#[derive(::serde::Serialize, ::serde::Deserialize)]
168#[derive(Hash, Eq, Ord, PartialOrd)]
169#[derive(Clone, Copy, PartialEq, ::prost::Message)]
170pub struct UpgradeMain {}
171#[derive(::serde::Serialize, ::serde::Deserialize)]
172#[derive(Hash, Eq, Ord, PartialOrd)]
173#[derive(Clone, Copy, PartialEq, ::prost::Message)]
174pub struct SubscribeEvents {}
175#[derive(::serde::Serialize, ::serde::Deserialize)]
176#[derive(Hash, Eq, Ord, PartialOrd)]
177#[derive(Clone, Copy, PartialEq, ::prost::Message)]
178pub struct Status {}
179#[derive(::serde::Serialize, ::serde::Deserialize)]
180#[derive(Hash, Eq, Ord, PartialOrd)]
181#[derive(Clone, Copy, PartialEq, ::prost::Message)]
182pub struct QueryClustersHashes {}
183#[derive(::serde::Serialize, ::serde::Deserialize)]
184#[derive(Hash, Eq, Ord, PartialOrd)]
185#[derive(Clone, Copy, PartialEq, ::prost::Message)]
186pub struct SoftStop {}
187#[derive(::serde::Serialize, ::serde::Deserialize)]
188#[derive(Hash, Eq, Ord, PartialOrd)]
189#[derive(Clone, Copy, PartialEq, ::prost::Message)]
190pub struct HardStop {}
191#[derive(::serde::Serialize, ::serde::Deserialize)]
192#[derive(Hash, Eq, Ord, PartialOrd)]
193#[derive(Clone, Copy, PartialEq, ::prost::Message)]
194pub struct ReturnListenSockets {}
195#[derive(::serde::Serialize, ::serde::Deserialize)]
196#[derive(Hash, Eq, Ord, PartialOrd)]
197#[derive(Clone, Copy, PartialEq, ::prost::Message)]
198pub struct CountRequests {}
199#[derive(::serde::Serialize, ::serde::Deserialize)]
201#[derive(Hash, Eq, Ord, PartialOrd)]
202#[derive(Clone, PartialEq, ::prost::Message)]
203pub struct HttpListenerConfig {
204 #[prost(message, required, tag = "1")]
205 pub address: SocketAddress,
206 #[prost(message, optional, tag = "2")]
207 pub public_address: ::core::option::Option<SocketAddress>,
208 #[prost(bool, required, tag = "5", default = "false")]
209 pub expect_proxy: bool,
210 #[prost(string, required, tag = "6")]
211 pub sticky_name: ::prost::alloc::string::String,
212 #[prost(uint32, required, tag = "7", default = "60")]
214 pub front_timeout: u32,
215 #[prost(uint32, required, tag = "8", default = "30")]
217 pub back_timeout: u32,
218 #[prost(uint32, required, tag = "9", default = "3")]
220 pub connect_timeout: u32,
221 #[prost(uint32, required, tag = "10", default = "10")]
223 pub request_timeout: u32,
224 #[prost(bool, required, tag = "11", default = "false")]
226 pub active: bool,
227 #[prost(message, optional, tag = "12")]
228 pub http_answers: ::core::option::Option<CustomHttpAnswers>,
229}
230#[derive(::serde::Serialize, ::serde::Deserialize)]
232#[derive(Hash, Eq, Ord, PartialOrd)]
233#[derive(Clone, PartialEq, ::prost::Message)]
234pub struct HttpsListenerConfig {
235 #[prost(message, required, tag = "1")]
236 pub address: SocketAddress,
237 #[prost(message, optional, tag = "2")]
238 pub public_address: ::core::option::Option<SocketAddress>,
239 #[prost(bool, required, tag = "5", default = "false")]
240 pub expect_proxy: bool,
241 #[prost(string, required, tag = "6")]
242 pub sticky_name: ::prost::alloc::string::String,
243 #[prost(uint32, required, tag = "7", default = "60")]
245 pub front_timeout: u32,
246 #[prost(uint32, required, tag = "8", default = "30")]
248 pub back_timeout: u32,
249 #[prost(uint32, required, tag = "9", default = "3")]
251 pub connect_timeout: u32,
252 #[prost(uint32, required, tag = "10", default = "10")]
254 pub request_timeout: u32,
255 #[prost(bool, required, tag = "11", default = "false")]
257 pub active: bool,
258 #[prost(enumeration = "TlsVersion", repeated, packed = "false", tag = "12")]
260 pub versions: ::prost::alloc::vec::Vec<i32>,
261 #[prost(string, repeated, tag = "13")]
262 pub cipher_list: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
263 #[prost(string, repeated, tag = "14")]
264 pub cipher_suites: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
265 #[prost(string, repeated, tag = "15")]
266 pub signature_algorithms: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
267 #[prost(string, repeated, tag = "16")]
268 pub groups_list: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
269 #[prost(string, optional, tag = "17")]
270 pub certificate: ::core::option::Option<::prost::alloc::string::String>,
271 #[prost(string, repeated, tag = "18")]
272 pub certificate_chain: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
273 #[prost(string, optional, tag = "19")]
274 pub key: ::core::option::Option<::prost::alloc::string::String>,
275 #[prost(uint64, required, tag = "20")]
279 pub send_tls13_tickets: u64,
280 #[prost(message, optional, tag = "21")]
281 pub http_answers: ::core::option::Option<CustomHttpAnswers>,
282}
283#[derive(::serde::Serialize, ::serde::Deserialize)]
285#[derive(Hash, Eq, Ord, PartialOrd)]
286#[derive(Clone, Copy, PartialEq, ::prost::Message)]
287pub struct TcpListenerConfig {
288 #[prost(message, required, tag = "1")]
289 pub address: SocketAddress,
290 #[prost(message, optional, tag = "2")]
291 pub public_address: ::core::option::Option<SocketAddress>,
292 #[prost(bool, required, tag = "3", default = "false")]
293 pub expect_proxy: bool,
294 #[prost(uint32, required, tag = "4", default = "60")]
296 pub front_timeout: u32,
297 #[prost(uint32, required, tag = "5", default = "30")]
299 pub back_timeout: u32,
300 #[prost(uint32, required, tag = "6", default = "3")]
302 pub connect_timeout: u32,
303 #[prost(bool, required, tag = "7", default = "false")]
305 pub active: bool,
306}
307#[derive(::serde::Serialize, ::serde::Deserialize)]
309#[derive(Hash, Eq, Ord, PartialOrd)]
310#[derive(Clone, PartialEq, ::prost::Message)]
311pub struct CustomHttpAnswers {
312 #[prost(string, optional, tag = "1")]
314 pub answer_301: ::core::option::Option<::prost::alloc::string::String>,
315 #[prost(string, optional, tag = "2")]
317 pub answer_400: ::core::option::Option<::prost::alloc::string::String>,
318 #[prost(string, optional, tag = "3")]
320 pub answer_401: ::core::option::Option<::prost::alloc::string::String>,
321 #[prost(string, optional, tag = "4")]
323 pub answer_404: ::core::option::Option<::prost::alloc::string::String>,
324 #[prost(string, optional, tag = "5")]
326 pub answer_408: ::core::option::Option<::prost::alloc::string::String>,
327 #[prost(string, optional, tag = "6")]
329 pub answer_413: ::core::option::Option<::prost::alloc::string::String>,
330 #[prost(string, optional, tag = "7")]
332 pub answer_502: ::core::option::Option<::prost::alloc::string::String>,
333 #[prost(string, optional, tag = "8")]
335 pub answer_503: ::core::option::Option<::prost::alloc::string::String>,
336 #[prost(string, optional, tag = "9")]
338 pub answer_504: ::core::option::Option<::prost::alloc::string::String>,
339 #[prost(string, optional, tag = "10")]
341 pub answer_507: ::core::option::Option<::prost::alloc::string::String>,
342}
343#[derive(::serde::Serialize, ::serde::Deserialize)]
344#[derive(Hash, Eq, Ord, PartialOrd)]
345#[derive(Clone, Copy, PartialEq, ::prost::Message)]
346pub struct ActivateListener {
347 #[prost(message, required, tag = "1")]
348 pub address: SocketAddress,
349 #[prost(enumeration = "ListenerType", required, tag = "2")]
350 pub proxy: i32,
351 #[prost(bool, required, tag = "3")]
352 pub from_scm: bool,
353}
354#[derive(::serde::Serialize, ::serde::Deserialize)]
355#[derive(Hash, Eq, Ord, PartialOrd)]
356#[derive(Clone, Copy, PartialEq, ::prost::Message)]
357pub struct DeactivateListener {
358 #[prost(message, required, tag = "1")]
359 pub address: SocketAddress,
360 #[prost(enumeration = "ListenerType", required, tag = "2")]
361 pub proxy: i32,
362 #[prost(bool, required, tag = "3")]
363 pub to_scm: bool,
364}
365#[derive(::serde::Serialize, ::serde::Deserialize)]
366#[derive(Hash, Eq, Ord, PartialOrd)]
367#[derive(Clone, Copy, PartialEq, ::prost::Message)]
368pub struct RemoveListener {
369 #[prost(message, required, tag = "1")]
370 pub address: SocketAddress,
371 #[prost(enumeration = "ListenerType", required, tag = "2")]
372 pub proxy: i32,
373}
374#[derive(::serde::Serialize, ::serde::Deserialize)]
376#[derive(Hash, Eq, Ord, PartialOrd)]
377#[derive(Clone, PartialEq, ::prost::Message)]
378pub struct ListenersList {
379 #[prost(btree_map = "string, message", tag = "1")]
381 pub http_listeners: ::prost::alloc::collections::BTreeMap<
382 ::prost::alloc::string::String,
383 HttpListenerConfig,
384 >,
385 #[prost(btree_map = "string, message", tag = "2")]
387 pub https_listeners: ::prost::alloc::collections::BTreeMap<
388 ::prost::alloc::string::String,
389 HttpsListenerConfig,
390 >,
391 #[prost(btree_map = "string, message", tag = "3")]
393 pub tcp_listeners: ::prost::alloc::collections::BTreeMap<
394 ::prost::alloc::string::String,
395 TcpListenerConfig,
396 >,
397}
398#[derive(::serde::Serialize, ::serde::Deserialize)]
400#[derive(Hash, Eq, Ord, PartialOrd)]
401#[derive(Clone, PartialEq, ::prost::Message)]
402pub struct RequestHttpFrontend {
403 #[prost(string, optional, tag = "1")]
404 pub cluster_id: ::core::option::Option<::prost::alloc::string::String>,
405 #[prost(message, required, tag = "2")]
406 pub address: SocketAddress,
407 #[prost(string, required, tag = "3")]
408 pub hostname: ::prost::alloc::string::String,
409 #[prost(message, required, tag = "4")]
410 pub path: PathRule,
411 #[prost(string, optional, tag = "5")]
412 pub method: ::core::option::Option<::prost::alloc::string::String>,
413 #[prost(enumeration = "RulePosition", required, tag = "6", default = "Tree")]
414 pub position: i32,
415 #[prost(btree_map = "string, string", tag = "7")]
417 pub tags: ::prost::alloc::collections::BTreeMap<
418 ::prost::alloc::string::String,
419 ::prost::alloc::string::String,
420 >,
421}
422#[derive(::serde::Serialize, ::serde::Deserialize)]
423#[derive(Hash, Eq, Ord, PartialOrd)]
424#[derive(Clone, PartialEq, ::prost::Message)]
425pub struct RequestTcpFrontend {
426 #[prost(string, required, tag = "1")]
427 pub cluster_id: ::prost::alloc::string::String,
428 #[prost(message, required, tag = "2")]
430 pub address: SocketAddress,
431 #[prost(btree_map = "string, string", tag = "3")]
433 pub tags: ::prost::alloc::collections::BTreeMap<
434 ::prost::alloc::string::String,
435 ::prost::alloc::string::String,
436 >,
437}
438#[derive(::serde::Serialize, ::serde::Deserialize)]
440#[derive(Hash, Eq, Ord, PartialOrd)]
441#[derive(Clone, PartialEq, ::prost::Message)]
442pub struct FrontendFilters {
443 #[prost(bool, required, tag = "1")]
444 pub http: bool,
445 #[prost(bool, required, tag = "2")]
446 pub https: bool,
447 #[prost(bool, required, tag = "3")]
448 pub tcp: bool,
449 #[prost(string, optional, tag = "4")]
450 pub domain: ::core::option::Option<::prost::alloc::string::String>,
451}
452#[derive(::serde::Serialize, ::serde::Deserialize)]
454#[derive(Hash, Eq, Ord, PartialOrd)]
455#[derive(Clone, PartialEq, ::prost::Message)]
456pub struct PathRule {
457 #[prost(enumeration = "PathRuleKind", required, tag = "1")]
459 pub kind: i32,
460 #[prost(string, required, tag = "2")]
462 pub value: ::prost::alloc::string::String,
463}
464#[derive(::serde::Serialize, ::serde::Deserialize)]
466#[derive(Hash, Eq, Ord, PartialOrd)]
467#[derive(Clone, PartialEq, ::prost::Message)]
468pub struct AddCertificate {
469 #[prost(message, required, tag = "1")]
470 pub address: SocketAddress,
471 #[prost(message, required, tag = "2")]
472 pub certificate: CertificateAndKey,
473 #[prost(int64, optional, tag = "3")]
475 pub expired_at: ::core::option::Option<i64>,
476}
477#[derive(::serde::Serialize, ::serde::Deserialize)]
478#[derive(Hash, Eq, Ord, PartialOrd)]
479#[derive(Clone, PartialEq, ::prost::Message)]
480pub struct RemoveCertificate {
481 #[prost(message, required, tag = "1")]
482 pub address: SocketAddress,
483 #[prost(string, required, tag = "2")]
485 pub fingerprint: ::prost::alloc::string::String,
486}
487#[derive(::serde::Serialize, ::serde::Deserialize)]
488#[derive(Hash, Eq, Ord, PartialOrd)]
489#[derive(Clone, PartialEq, ::prost::Message)]
490pub struct ReplaceCertificate {
491 #[prost(message, required, tag = "1")]
492 pub address: SocketAddress,
493 #[prost(message, required, tag = "2")]
494 pub new_certificate: CertificateAndKey,
495 #[prost(string, required, tag = "3")]
497 pub old_fingerprint: ::prost::alloc::string::String,
498 #[prost(int64, optional, tag = "4")]
500 pub new_expired_at: ::core::option::Option<i64>,
501}
502#[derive(::serde::Serialize, ::serde::Deserialize)]
503#[derive(Hash, Eq, Ord, PartialOrd)]
504#[derive(Clone, PartialEq, ::prost::Message)]
505pub struct CertificateAndKey {
506 #[prost(string, required, tag = "1")]
507 pub certificate: ::prost::alloc::string::String,
508 #[prost(string, repeated, tag = "2")]
509 pub certificate_chain: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
510 #[prost(string, required, tag = "3")]
511 pub key: ::prost::alloc::string::String,
512 #[prost(enumeration = "TlsVersion", repeated, packed = "false", tag = "4")]
513 pub versions: ::prost::alloc::vec::Vec<i32>,
514 #[prost(string, repeated, tag = "5")]
517 pub names: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
518}
519#[derive(::serde::Serialize, ::serde::Deserialize)]
523#[derive(Hash, Eq, Ord, PartialOrd)]
524#[derive(Clone, PartialEq, ::prost::Message)]
525pub struct QueryCertificatesFilters {
526 #[prost(string, optional, tag = "1")]
528 pub domain: ::core::option::Option<::prost::alloc::string::String>,
529 #[prost(string, optional, tag = "2")]
531 pub fingerprint: ::core::option::Option<::prost::alloc::string::String>,
532}
533#[derive(::serde::Serialize, ::serde::Deserialize)]
535#[derive(Hash, Eq, Ord, PartialOrd)]
536#[derive(Clone, PartialEq, ::prost::Message)]
537pub struct CertificateSummary {
538 #[prost(string, required, tag = "1")]
539 pub domain: ::prost::alloc::string::String,
540 #[prost(string, required, tag = "2")]
542 pub fingerprint: ::prost::alloc::string::String,
543}
544#[derive(::serde::Serialize, ::serde::Deserialize)]
546#[derive(Hash, Eq, Ord, PartialOrd)]
547#[derive(Clone, PartialEq, ::prost::Message)]
548pub struct ListOfCertificatesByAddress {
549 #[prost(message, repeated, tag = "1")]
550 pub certificates: ::prost::alloc::vec::Vec<CertificatesByAddress>,
551}
552#[derive(::serde::Serialize, ::serde::Deserialize)]
554#[derive(Hash, Eq, Ord, PartialOrd)]
555#[derive(Clone, PartialEq, ::prost::Message)]
556pub struct CertificatesByAddress {
557 #[prost(message, required, tag = "1")]
558 pub address: SocketAddress,
559 #[prost(message, repeated, tag = "2")]
560 pub certificate_summaries: ::prost::alloc::vec::Vec<CertificateSummary>,
561}
562#[derive(::serde::Serialize, ::serde::Deserialize)]
564#[derive(Hash, Eq, Ord, PartialOrd)]
565#[derive(Clone, PartialEq, ::prost::Message)]
566pub struct CertificatesWithFingerprints {
567 #[prost(btree_map = "string, message", tag = "1")]
569 pub certs: ::prost::alloc::collections::BTreeMap<
570 ::prost::alloc::string::String,
571 CertificateAndKey,
572 >,
573}
574#[derive(::serde::Serialize, ::serde::Deserialize)]
576#[derive(Hash, Eq, Ord, PartialOrd)]
577#[derive(Clone, PartialEq, ::prost::Message)]
578pub struct Cluster {
579 #[prost(string, required, tag = "1")]
580 pub cluster_id: ::prost::alloc::string::String,
581 #[prost(bool, required, tag = "2")]
583 pub sticky_session: bool,
584 #[prost(bool, required, tag = "3")]
585 pub https_redirect: bool,
586 #[prost(enumeration = "ProxyProtocolConfig", optional, tag = "4")]
587 pub proxy_protocol: ::core::option::Option<i32>,
588 #[prost(
589 enumeration = "LoadBalancingAlgorithms",
590 required,
591 tag = "5",
592 default = "RoundRobin"
593 )]
594 pub load_balancing: i32,
595 #[prost(string, optional, tag = "6")]
596 pub answer_503: ::core::option::Option<::prost::alloc::string::String>,
597 #[prost(enumeration = "LoadMetric", optional, tag = "7")]
598 pub load_metric: ::core::option::Option<i32>,
599}
600#[derive(::serde::Serialize, ::serde::Deserialize)]
602#[derive(Hash, Eq, Ord, PartialOrd)]
603#[derive(Clone, PartialEq, ::prost::Message)]
604pub struct AddBackend {
605 #[prost(string, required, tag = "1")]
606 pub cluster_id: ::prost::alloc::string::String,
607 #[prost(string, required, tag = "2")]
608 pub backend_id: ::prost::alloc::string::String,
609 #[prost(message, required, tag = "3")]
611 pub address: SocketAddress,
612 #[prost(string, optional, tag = "4")]
613 pub sticky_id: ::core::option::Option<::prost::alloc::string::String>,
614 #[prost(message, optional, tag = "5")]
615 pub load_balancing_parameters: ::core::option::Option<LoadBalancingParams>,
616 #[prost(bool, optional, tag = "6")]
617 pub backup: ::core::option::Option<bool>,
618}
619#[derive(::serde::Serialize, ::serde::Deserialize)]
621#[derive(Hash, Eq, Ord, PartialOrd)]
622#[derive(Clone, PartialEq, ::prost::Message)]
623pub struct RemoveBackend {
624 #[prost(string, required, tag = "1")]
625 pub cluster_id: ::prost::alloc::string::String,
626 #[prost(string, required, tag = "2")]
627 pub backend_id: ::prost::alloc::string::String,
628 #[prost(message, required, tag = "3")]
630 pub address: SocketAddress,
631}
632#[derive(::serde::Serialize, ::serde::Deserialize)]
633#[derive(Hash, Eq, Ord, PartialOrd)]
634#[derive(Clone, Copy, PartialEq, ::prost::Message)]
635pub struct LoadBalancingParams {
636 #[prost(int32, required, tag = "1")]
637 pub weight: i32,
638}
639#[derive(::serde::Serialize, ::serde::Deserialize)]
640#[derive(Hash, Eq, Ord, PartialOrd)]
641#[derive(Clone, PartialEq, ::prost::Message)]
642pub struct QueryClusterByDomain {
643 #[prost(string, required, tag = "1")]
644 pub hostname: ::prost::alloc::string::String,
645 #[prost(string, optional, tag = "2")]
646 pub path: ::core::option::Option<::prost::alloc::string::String>,
647}
648#[derive(::serde::Serialize, ::serde::Deserialize)]
650#[derive(Hash, Eq, Ord, PartialOrd)]
651#[derive(Clone, PartialEq, ::prost::Message)]
652pub struct QueryMetricsOptions {
653 #[prost(bool, required, tag = "1")]
655 pub list: bool,
656 #[prost(string, repeated, tag = "2")]
658 pub cluster_ids: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
659 #[prost(string, repeated, tag = "3")]
661 pub backend_ids: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
662 #[prost(string, repeated, tag = "4")]
664 pub metric_names: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
665 #[prost(bool, required, tag = "5")]
667 pub no_clusters: bool,
668 #[prost(bool, required, tag = "6")]
670 pub workers: bool,
671}
672#[derive(::serde::Serialize, ::serde::Deserialize)]
674#[derive(Hash, Eq, Ord, PartialOrd)]
675#[derive(Clone, PartialEq, ::prost::Message)]
676pub struct Response {
677 #[prost(enumeration = "ResponseStatus", required, tag = "1", default = "Failure")]
679 pub status: i32,
680 #[prost(string, required, tag = "2")]
682 pub message: ::prost::alloc::string::String,
683 #[prost(message, optional, tag = "3")]
685 pub content: ::core::option::Option<ResponseContent>,
686}
687#[derive(::serde::Serialize, ::serde::Deserialize)]
689#[derive(Hash, Eq, Ord, PartialOrd)]
690#[derive(Clone, PartialEq, ::prost::Message)]
691pub struct ResponseContent {
692 #[prost(
693 oneof = "response_content::ContentType",
694 tags = "1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13"
695 )]
696 pub content_type: ::core::option::Option<response_content::ContentType>,
697}
698pub mod response_content {
700 #[derive(::serde::Serialize, ::serde::Deserialize)]
701 #[serde(rename_all = "SCREAMING_SNAKE_CASE")]
702 #[derive(Hash, Eq, Ord, PartialOrd)]
703 #[derive(Clone, PartialEq, ::prost::Oneof)]
704 pub enum ContentType {
705 #[prost(message, tag = "1")]
707 Workers(super::WorkerInfos),
708 #[prost(message, tag = "2")]
710 Metrics(super::AggregatedMetrics),
711 #[prost(message, tag = "3")]
713 WorkerResponses(super::WorkerResponses),
714 #[prost(message, tag = "4")]
716 Event(super::Event),
717 #[prost(message, tag = "5")]
719 FrontendList(super::ListedFrontends),
720 #[prost(message, tag = "6")]
722 ListenersList(super::ListenersList),
723 #[prost(message, tag = "7")]
725 WorkerMetrics(super::WorkerMetrics),
726 #[prost(message, tag = "8")]
728 AvailableMetrics(super::AvailableMetrics),
729 #[prost(message, tag = "9")]
731 Clusters(super::ClusterInformations),
732 #[prost(message, tag = "10")]
734 ClusterHashes(super::ClusterHashes),
735 #[prost(message, tag = "11")]
737 CertificatesByAddress(super::ListOfCertificatesByAddress),
738 #[prost(message, tag = "12")]
740 CertificatesWithFingerprints(super::CertificatesWithFingerprints),
741 #[prost(message, tag = "13")]
743 RequestCounts(super::RequestCounts),
744 }
745}
746#[derive(::serde::Serialize, ::serde::Deserialize)]
748#[derive(Hash, Eq, Ord, PartialOrd)]
749#[derive(Clone, PartialEq, ::prost::Message)]
750pub struct WorkerResponses {
751 #[prost(btree_map = "string, message", tag = "1")]
752 pub map: ::prost::alloc::collections::BTreeMap<
753 ::prost::alloc::string::String,
754 ResponseContent,
755 >,
756}
757#[derive(::serde::Serialize, ::serde::Deserialize)]
759#[derive(Hash, Eq, Ord, PartialOrd)]
760#[derive(Clone, PartialEq, ::prost::Message)]
761pub struct ListedFrontends {
762 #[prost(message, repeated, tag = "1")]
763 pub http_frontends: ::prost::alloc::vec::Vec<RequestHttpFrontend>,
764 #[prost(message, repeated, tag = "2")]
765 pub https_frontends: ::prost::alloc::vec::Vec<RequestHttpFrontend>,
766 #[prost(message, repeated, tag = "3")]
767 pub tcp_frontends: ::prost::alloc::vec::Vec<RequestTcpFrontend>,
768}
769#[derive(::serde::Serialize, ::serde::Deserialize)]
770#[derive(Hash, Eq, Ord, PartialOrd)]
771#[derive(Clone, PartialEq, ::prost::Message)]
772pub struct ClusterInformations {
773 #[prost(message, repeated, tag = "1")]
774 pub vec: ::prost::alloc::vec::Vec<ClusterInformation>,
775}
776#[derive(::serde::Serialize, ::serde::Deserialize)]
779#[derive(Hash, Eq, Ord, PartialOrd)]
780#[derive(Clone, PartialEq, ::prost::Message)]
781pub struct ClusterInformation {
782 #[prost(message, optional, tag = "1")]
783 pub configuration: ::core::option::Option<Cluster>,
784 #[prost(message, repeated, tag = "2")]
785 pub http_frontends: ::prost::alloc::vec::Vec<RequestHttpFrontend>,
786 #[prost(message, repeated, tag = "3")]
787 pub https_frontends: ::prost::alloc::vec::Vec<RequestHttpFrontend>,
788 #[prost(message, repeated, tag = "4")]
789 pub tcp_frontends: ::prost::alloc::vec::Vec<RequestTcpFrontend>,
790 #[prost(message, repeated, tag = "5")]
791 pub backends: ::prost::alloc::vec::Vec<AddBackend>,
792}
793#[derive(::serde::Serialize, ::serde::Deserialize)]
795#[derive(Hash, Eq, Ord, PartialOrd)]
796#[derive(Clone, PartialEq, ::prost::Message)]
797pub struct Event {
798 #[prost(enumeration = "EventKind", required, tag = "1")]
799 pub kind: i32,
800 #[prost(string, optional, tag = "2")]
801 pub cluster_id: ::core::option::Option<::prost::alloc::string::String>,
802 #[prost(string, optional, tag = "3")]
803 pub backend_id: ::core::option::Option<::prost::alloc::string::String>,
804 #[prost(message, optional, tag = "4")]
805 pub address: ::core::option::Option<SocketAddress>,
806}
807#[derive(::serde::Serialize, ::serde::Deserialize)]
808#[derive(Hash, Eq, Ord, PartialOrd)]
809#[derive(Clone, PartialEq, ::prost::Message)]
810pub struct ClusterHashes {
811 #[prost(btree_map = "string, uint64", tag = "1")]
813 pub map: ::prost::alloc::collections::BTreeMap<::prost::alloc::string::String, u64>,
814}
815#[derive(::serde::Serialize, ::serde::Deserialize)]
817#[derive(Hash, Eq, Ord, PartialOrd)]
818#[derive(Clone, PartialEq, ::prost::Message)]
819pub struct WorkerInfos {
820 #[prost(message, repeated, tag = "1")]
821 pub vec: ::prost::alloc::vec::Vec<WorkerInfo>,
822}
823#[derive(::serde::Serialize, ::serde::Deserialize)]
825#[derive(Hash, Eq, Ord, PartialOrd)]
826#[derive(Clone, Copy, PartialEq, ::prost::Message)]
827pub struct WorkerInfo {
828 #[prost(uint32, required, tag = "1")]
829 pub id: u32,
830 #[prost(int32, required, tag = "2")]
831 pub pid: i32,
832 #[prost(enumeration = "RunState", required, tag = "3")]
833 pub run_state: i32,
834}
835#[derive(::serde::Serialize, ::serde::Deserialize)]
837#[derive(Hash, Eq, Ord, PartialOrd)]
838#[derive(Clone, PartialEq, ::prost::Message)]
839pub struct AvailableMetrics {
840 #[prost(string, repeated, tag = "1")]
841 pub proxy_metrics: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
842 #[prost(string, repeated, tag = "2")]
843 pub cluster_metrics: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
844}
845#[derive(::serde::Serialize, ::serde::Deserialize)]
847#[derive(Hash, Eq, Ord, PartialOrd)]
848#[derive(Clone, PartialEq, ::prost::Message)]
849pub struct AggregatedMetrics {
850 #[prost(btree_map = "string, message", tag = "1")]
853 pub main: ::prost::alloc::collections::BTreeMap<
854 ::prost::alloc::string::String,
855 FilteredMetrics,
856 >,
857 #[prost(btree_map = "string, message", tag = "2")]
860 pub workers: ::prost::alloc::collections::BTreeMap<
861 ::prost::alloc::string::String,
862 WorkerMetrics,
863 >,
864 #[prost(btree_map = "string, message", tag = "3")]
867 pub clusters: ::prost::alloc::collections::BTreeMap<
868 ::prost::alloc::string::String,
869 ClusterMetrics,
870 >,
871 #[prost(btree_map = "string, message", tag = "4")]
874 pub proxying: ::prost::alloc::collections::BTreeMap<
875 ::prost::alloc::string::String,
876 FilteredMetrics,
877 >,
878}
879#[derive(::serde::Serialize, ::serde::Deserialize)]
882#[derive(Hash, Eq, Ord, PartialOrd)]
883#[derive(Clone, PartialEq, ::prost::Message)]
884pub struct WorkerMetrics {
885 #[prost(btree_map = "string, message", tag = "1")]
887 pub proxy: ::prost::alloc::collections::BTreeMap<
888 ::prost::alloc::string::String,
889 FilteredMetrics,
890 >,
891 #[prost(btree_map = "string, message", tag = "2")]
893 pub clusters: ::prost::alloc::collections::BTreeMap<
894 ::prost::alloc::string::String,
895 ClusterMetrics,
896 >,
897}
898#[derive(::serde::Serialize, ::serde::Deserialize)]
900#[derive(Hash, Eq, Ord, PartialOrd)]
901#[derive(Clone, PartialEq, ::prost::Message)]
902pub struct ClusterMetrics {
903 #[prost(btree_map = "string, message", tag = "1")]
905 pub cluster: ::prost::alloc::collections::BTreeMap<
906 ::prost::alloc::string::String,
907 FilteredMetrics,
908 >,
909 #[prost(message, repeated, tag = "2")]
911 pub backends: ::prost::alloc::vec::Vec<BackendMetrics>,
912}
913#[derive(::serde::Serialize, ::serde::Deserialize)]
914#[derive(Hash, Eq, Ord, PartialOrd)]
915#[derive(Clone, PartialEq, ::prost::Message)]
916pub struct BackendMetrics {
917 #[prost(string, required, tag = "1")]
918 pub backend_id: ::prost::alloc::string::String,
919 #[prost(btree_map = "string, message", tag = "2")]
920 pub metrics: ::prost::alloc::collections::BTreeMap<
921 ::prost::alloc::string::String,
922 FilteredMetrics,
923 >,
924}
925#[derive(::serde::Serialize, ::serde::Deserialize)]
927#[derive(Hash, Eq, Ord, PartialOrd)]
928#[derive(Clone, PartialEq, ::prost::Message)]
929pub struct FilteredMetrics {
930 #[prost(oneof = "filtered_metrics::Inner", tags = "1, 2, 3, 4, 5, 6")]
931 pub inner: ::core::option::Option<filtered_metrics::Inner>,
932}
933pub mod filtered_metrics {
935 #[derive(::serde::Serialize, ::serde::Deserialize)]
936 #[serde(rename_all = "SCREAMING_SNAKE_CASE")]
937 #[derive(Hash, Eq, Ord, PartialOrd)]
938 #[derive(Clone, PartialEq, ::prost::Oneof)]
939 pub enum Inner {
940 #[prost(uint64, tag = "1")]
942 Gauge(u64),
943 #[prost(int64, tag = "2")]
945 Count(i64),
946 #[prost(uint64, tag = "3")]
948 Time(u64),
949 #[prost(message, tag = "4")]
950 Percentiles(super::Percentiles),
951 #[prost(message, tag = "5")]
952 TimeSerie(super::FilteredTimeSerie),
953 #[prost(message, tag = "6")]
954 Histogram(super::FilteredHistogram),
955 }
956}
957#[derive(::serde::Serialize, ::serde::Deserialize)]
958#[derive(Hash, Eq, Ord, PartialOrd)]
959#[derive(Clone, PartialEq, ::prost::Message)]
960pub struct FilteredTimeSerie {
961 #[prost(uint32, required, tag = "1")]
962 pub last_second: u32,
963 #[prost(uint32, repeated, packed = "false", tag = "2")]
964 pub last_minute: ::prost::alloc::vec::Vec<u32>,
965 #[prost(uint32, repeated, packed = "false", tag = "3")]
966 pub last_hour: ::prost::alloc::vec::Vec<u32>,
967}
968#[derive(::serde::Serialize, ::serde::Deserialize)]
969#[derive(Hash, Eq, Ord, PartialOrd)]
970#[derive(Clone, Copy, PartialEq, ::prost::Message)]
971pub struct Percentiles {
972 #[prost(uint64, required, tag = "1")]
973 pub samples: u64,
974 #[prost(uint64, required, tag = "2")]
975 pub p_50: u64,
976 #[prost(uint64, required, tag = "3")]
977 pub p_90: u64,
978 #[prost(uint64, required, tag = "4")]
979 pub p_99: u64,
980 #[prost(uint64, required, tag = "5")]
981 pub p_99_9: u64,
982 #[prost(uint64, required, tag = "6")]
983 pub p_99_99: u64,
984 #[prost(uint64, required, tag = "7")]
985 pub p_99_999: u64,
986 #[prost(uint64, required, tag = "8")]
987 pub p_100: u64,
988 #[prost(uint64, required, tag = "9")]
989 pub sum: u64,
990}
991#[derive(::serde::Serialize, ::serde::Deserialize)]
993#[derive(Hash, Eq, Ord, PartialOrd)]
994#[derive(Clone, PartialEq, ::prost::Message)]
995pub struct FilteredHistogram {
996 #[prost(uint64, required, tag = "1")]
997 pub sum: u64,
998 #[prost(uint64, required, tag = "2")]
999 pub count: u64,
1000 #[prost(message, repeated, tag = "3")]
1001 pub buckets: ::prost::alloc::vec::Vec<Bucket>,
1002}
1003#[derive(::serde::Serialize, ::serde::Deserialize)]
1005#[derive(Hash, Eq, Ord, PartialOrd)]
1006#[derive(Clone, Copy, PartialEq, ::prost::Message)]
1007pub struct Bucket {
1008 #[prost(uint64, required, tag = "1")]
1009 pub count: u64,
1010 #[prost(uint64, required, tag = "2")]
1012 pub le: u64,
1013}
1014#[derive(::serde::Serialize, ::serde::Deserialize)]
1015#[derive(Hash, Eq, Ord, PartialOrd)]
1016#[derive(Clone, PartialEq, ::prost::Message)]
1017pub struct RequestCounts {
1018 #[prost(btree_map = "string, int32", tag = "1")]
1019 pub map: ::prost::alloc::collections::BTreeMap<::prost::alloc::string::String, i32>,
1020}
1021#[derive(::serde::Serialize, ::serde::Deserialize)]
1025#[derive(Hash, Eq, Ord, PartialOrd)]
1026#[derive(Clone, Copy, PartialEq, ::prost::Message)]
1027pub struct SocketAddress {
1028 #[prost(message, required, tag = "1")]
1029 pub ip: IpAddress,
1030 #[prost(uint32, required, tag = "2")]
1031 pub port: u32,
1032}
1033#[derive(::serde::Serialize, ::serde::Deserialize)]
1034#[derive(Hash, Eq, Ord, PartialOrd)]
1035#[derive(Clone, Copy, PartialEq, ::prost::Message)]
1036pub struct IpAddress {
1037 #[prost(oneof = "ip_address::Inner", tags = "1, 2")]
1038 pub inner: ::core::option::Option<ip_address::Inner>,
1039}
1040pub mod ip_address {
1042 #[derive(::serde::Serialize, ::serde::Deserialize)]
1043 #[serde(rename_all = "SCREAMING_SNAKE_CASE")]
1044 #[derive(Hash, Eq, Ord, PartialOrd)]
1045 #[derive(Clone, Copy, PartialEq, ::prost::Oneof)]
1046 pub enum Inner {
1047 #[prost(fixed32, tag = "1")]
1048 V4(u32),
1049 #[prost(message, tag = "2")]
1050 V6(super::Uint128),
1051 }
1052}
1053#[derive(::serde::Serialize, ::serde::Deserialize)]
1055#[derive(Hash, Eq, Ord, PartialOrd)]
1056#[derive(Clone, Copy, PartialEq, ::prost::Message)]
1057pub struct Uint128 {
1058 #[prost(uint64, required, tag = "1")]
1060 pub low: u64,
1061 #[prost(uint64, required, tag = "2")]
1063 pub high: u64,
1064}
1065#[derive(::serde::Serialize, ::serde::Deserialize)]
1067#[derive(Hash, Eq, Ord, PartialOrd)]
1068#[derive(Clone, PartialEq, ::prost::Message)]
1069pub struct WorkerRequest {
1070 #[prost(string, required, tag = "1")]
1071 pub id: ::prost::alloc::string::String,
1072 #[prost(message, required, tag = "2")]
1073 pub content: Request,
1074}
1075#[derive(::serde::Serialize, ::serde::Deserialize)]
1077#[derive(Hash, Eq, Ord, PartialOrd)]
1078#[derive(Clone, PartialEq, ::prost::Message)]
1079pub struct WorkerResponse {
1080 #[prost(string, required, tag = "1")]
1081 pub id: ::prost::alloc::string::String,
1082 #[prost(enumeration = "ResponseStatus", required, tag = "2")]
1083 pub status: i32,
1084 #[prost(string, required, tag = "3")]
1086 pub message: ::prost::alloc::string::String,
1087 #[prost(message, optional, tag = "4")]
1088 pub content: ::core::option::Option<ResponseContent>,
1089}
1090#[derive(::serde::Serialize, ::serde::Deserialize)]
1092#[derive(Hash, Eq, Ord, PartialOrd)]
1093#[derive(Clone, PartialEq, ::prost::Message)]
1094pub struct ServerMetricsConfig {
1095 #[prost(string, required, tag = "1")]
1096 pub address: ::prost::alloc::string::String,
1097 #[prost(bool, required, tag = "2")]
1098 pub tagged_metrics: bool,
1099 #[prost(string, optional, tag = "3")]
1100 pub prefix: ::core::option::Option<::prost::alloc::string::String>,
1101}
1102#[derive(::serde::Serialize, ::serde::Deserialize)]
1105#[derive(Hash, Eq, Ord, PartialOrd)]
1106#[derive(Clone, PartialEq, ::prost::Message)]
1107pub struct ServerConfig {
1108 #[prost(uint64, required, tag = "1", default = "10000")]
1109 pub max_connections: u64,
1110 #[prost(uint32, required, tag = "2", default = "60")]
1111 pub front_timeout: u32,
1112 #[prost(uint32, required, tag = "3", default = "30")]
1113 pub back_timeout: u32,
1114 #[prost(uint32, required, tag = "4", default = "3")]
1115 pub connect_timeout: u32,
1116 #[prost(uint32, required, tag = "5", default = "1800")]
1117 pub zombie_check_interval: u32,
1118 #[prost(uint32, required, tag = "6", default = "60")]
1119 pub accept_queue_timeout: u32,
1120 #[prost(uint64, required, tag = "7", default = "1")]
1121 pub min_buffers: u64,
1122 #[prost(uint64, required, tag = "8", default = "1000")]
1123 pub max_buffers: u64,
1124 #[prost(uint64, required, tag = "9", default = "16393")]
1125 pub buffer_size: u64,
1126 #[prost(string, required, tag = "10", default = "info")]
1127 pub log_level: ::prost::alloc::string::String,
1128 #[prost(string, required, tag = "11", default = "stdout")]
1129 pub log_target: ::prost::alloc::string::String,
1130 #[prost(string, optional, tag = "12")]
1131 pub access_logs_target: ::core::option::Option<::prost::alloc::string::String>,
1132 #[prost(uint64, required, tag = "13", default = "1000000")]
1133 pub command_buffer_size: u64,
1134 #[prost(uint64, required, tag = "14", default = "2000000")]
1135 pub max_command_buffer_size: u64,
1136 #[prost(message, optional, tag = "15")]
1137 pub metrics: ::core::option::Option<ServerMetricsConfig>,
1138 #[prost(enumeration = "ProtobufAccessLogFormat", required, tag = "16")]
1139 pub access_log_format: i32,
1140 #[prost(bool, required, tag = "17")]
1141 pub log_colored: bool,
1142}
1143#[derive(::serde::Serialize, ::serde::Deserialize)]
1145#[derive(Hash, Eq, Ord, PartialOrd)]
1146#[derive(Clone, PartialEq, ::prost::Message)]
1147pub struct ListenersCount {
1148 #[prost(string, repeated, tag = "1")]
1150 pub http: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1151 #[prost(string, repeated, tag = "2")]
1153 pub tls: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1154 #[prost(string, repeated, tag = "3")]
1156 pub tcp: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1157}
1158#[derive(::serde::Serialize, ::serde::Deserialize)]
1161#[derive(Hash, Eq, Ord, PartialOrd)]
1162#[derive(Clone, PartialEq, ::prost::Message)]
1163pub struct InitialState {
1164 #[prost(message, repeated, tag = "1")]
1165 pub requests: ::prost::alloc::vec::Vec<WorkerRequest>,
1166}
1167#[derive(::serde::Serialize, ::serde::Deserialize)]
1169#[derive(Hash, Eq, Ord, PartialOrd)]
1170#[derive(Clone, PartialEq, ::prost::Message)]
1171pub struct ProtobufAccessLog {
1172 #[prost(string, optional, tag = "1")]
1174 pub message: ::core::option::Option<::prost::alloc::string::String>,
1175 #[prost(message, required, tag = "2")]
1177 pub request_id: Uint128,
1178 #[prost(string, optional, tag = "3")]
1180 pub cluster_id: ::core::option::Option<::prost::alloc::string::String>,
1181 #[prost(string, optional, tag = "4")]
1183 pub backend_id: ::core::option::Option<::prost::alloc::string::String>,
1184 #[prost(message, optional, tag = "5")]
1186 pub session_address: ::core::option::Option<SocketAddress>,
1187 #[prost(message, optional, tag = "6")]
1189 pub backend_address: ::core::option::Option<SocketAddress>,
1190 #[prost(string, required, tag = "7")]
1192 pub protocol: ::prost::alloc::string::String,
1193 #[prost(message, required, tag = "8")]
1195 pub endpoint: ProtobufEndpoint,
1196 #[prost(uint64, optional, tag = "9")]
1198 pub client_rtt: ::core::option::Option<u64>,
1199 #[prost(uint64, optional, tag = "10")]
1201 pub server_rtt: ::core::option::Option<u64>,
1202 #[prost(uint64, required, tag = "13")]
1204 pub service_time: u64,
1205 #[prost(uint64, required, tag = "14")]
1207 pub bytes_in: u64,
1208 #[prost(uint64, required, tag = "15")]
1210 pub bytes_out: u64,
1211 #[prost(string, optional, tag = "16")]
1213 pub user_agent: ::core::option::Option<::prost::alloc::string::String>,
1214 #[prost(btree_map = "string, string", tag = "17")]
1216 pub tags: ::prost::alloc::collections::BTreeMap<
1217 ::prost::alloc::string::String,
1218 ::prost::alloc::string::String,
1219 >,
1220 #[prost(string, required, tag = "18")]
1222 pub tag: ::prost::alloc::string::String,
1223 #[prost(message, required, tag = "19")]
1225 pub time: Uint128,
1226 #[prost(uint64, optional, tag = "20")]
1230 pub request_time: ::core::option::Option<u64>,
1231 #[prost(uint64, optional, tag = "21")]
1233 pub response_time: ::core::option::Option<u64>,
1234}
1235#[derive(::serde::Serialize, ::serde::Deserialize)]
1236#[derive(Hash, Eq, Ord, PartialOrd)]
1237#[derive(Clone, PartialEq, ::prost::Message)]
1238pub struct ProtobufEndpoint {
1239 #[prost(oneof = "protobuf_endpoint::Inner", tags = "1, 2")]
1240 pub inner: ::core::option::Option<protobuf_endpoint::Inner>,
1241}
1242pub mod protobuf_endpoint {
1244 #[derive(::serde::Serialize, ::serde::Deserialize)]
1245 #[serde(rename_all = "SCREAMING_SNAKE_CASE")]
1246 #[derive(Hash, Eq, Ord, PartialOrd)]
1247 #[derive(Clone, PartialEq, ::prost::Oneof)]
1248 pub enum Inner {
1249 #[prost(message, tag = "1")]
1250 Http(super::HttpEndpoint),
1251 #[prost(message, tag = "2")]
1252 Tcp(super::TcpEndpoint),
1253 }
1254}
1255#[derive(::serde::Serialize, ::serde::Deserialize)]
1256#[derive(Hash, Eq, Ord, PartialOrd)]
1257#[derive(Clone, PartialEq, ::prost::Message)]
1258pub struct HttpEndpoint {
1259 #[prost(string, optional, tag = "1")]
1260 pub method: ::core::option::Option<::prost::alloc::string::String>,
1261 #[prost(string, optional, tag = "2")]
1262 pub authority: ::core::option::Option<::prost::alloc::string::String>,
1263 #[prost(string, optional, tag = "3")]
1264 pub path: ::core::option::Option<::prost::alloc::string::String>,
1265 #[prost(uint32, optional, tag = "4")]
1268 pub status: ::core::option::Option<u32>,
1269 #[prost(string, optional, tag = "5")]
1270 pub reason: ::core::option::Option<::prost::alloc::string::String>,
1271}
1272#[derive(::serde::Serialize, ::serde::Deserialize)]
1273#[derive(Hash, Eq, Ord, PartialOrd)]
1274#[derive(Clone, Copy, PartialEq, ::prost::Message)]
1275pub struct TcpEndpoint {}
1276#[derive(::serde::Serialize, ::serde::Deserialize)]
1277#[serde(rename_all = "SCREAMING_SNAKE_CASE")]
1278#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1279#[repr(i32)]
1280pub enum ListenerType {
1281 Http = 0,
1282 Https = 1,
1283 Tcp = 2,
1284}
1285impl ListenerType {
1286 pub fn as_str_name(&self) -> &'static str {
1291 match self {
1292 Self::Http => "HTTP",
1293 Self::Https => "HTTPS",
1294 Self::Tcp => "TCP",
1295 }
1296 }
1297 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1299 match value {
1300 "HTTP" => Some(Self::Http),
1301 "HTTPS" => Some(Self::Https),
1302 "TCP" => Some(Self::Tcp),
1303 _ => None,
1304 }
1305 }
1306}
1307#[derive(::serde::Serialize, ::serde::Deserialize)]
1309#[serde(rename_all = "SCREAMING_SNAKE_CASE")]
1310#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1311#[repr(i32)]
1312pub enum PathRuleKind {
1313 Prefix = 0,
1315 Regex = 1,
1317 Equals = 2,
1319}
1320impl PathRuleKind {
1321 pub fn as_str_name(&self) -> &'static str {
1326 match self {
1327 Self::Prefix => "PREFIX",
1328 Self::Regex => "REGEX",
1329 Self::Equals => "EQUALS",
1330 }
1331 }
1332 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1334 match value {
1335 "PREFIX" => Some(Self::Prefix),
1336 "REGEX" => Some(Self::Regex),
1337 "EQUALS" => Some(Self::Equals),
1338 _ => None,
1339 }
1340 }
1341}
1342#[derive(::serde::Serialize, ::serde::Deserialize)]
1344#[serde(rename_all = "SCREAMING_SNAKE_CASE")]
1345#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1346#[repr(i32)]
1347pub enum RulePosition {
1348 Pre = 0,
1349 Post = 1,
1350 Tree = 2,
1351}
1352impl RulePosition {
1353 pub fn as_str_name(&self) -> &'static str {
1358 match self {
1359 Self::Pre => "PRE",
1360 Self::Post => "POST",
1361 Self::Tree => "TREE",
1362 }
1363 }
1364 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1366 match value {
1367 "PRE" => Some(Self::Pre),
1368 "POST" => Some(Self::Post),
1369 "TREE" => Some(Self::Tree),
1370 _ => None,
1371 }
1372 }
1373}
1374#[derive(::serde::Serialize, ::serde::Deserialize)]
1375#[serde(rename_all = "SCREAMING_SNAKE_CASE")]
1376#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1377#[repr(i32)]
1378pub enum TlsVersion {
1379 SslV2 = 0,
1380 SslV3 = 1,
1381 TlsV10 = 2,
1382 TlsV11 = 3,
1383 TlsV12 = 4,
1384 TlsV13 = 5,
1385}
1386impl TlsVersion {
1387 pub fn as_str_name(&self) -> &'static str {
1392 match self {
1393 Self::SslV2 => "SSL_V2",
1394 Self::SslV3 => "SSL_V3",
1395 Self::TlsV10 => "TLS_V1_0",
1396 Self::TlsV11 => "TLS_V1_1",
1397 Self::TlsV12 => "TLS_V1_2",
1398 Self::TlsV13 => "TLS_V1_3",
1399 }
1400 }
1401 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1403 match value {
1404 "SSL_V2" => Some(Self::SslV2),
1405 "SSL_V3" => Some(Self::SslV3),
1406 "TLS_V1_0" => Some(Self::TlsV10),
1407 "TLS_V1_1" => Some(Self::TlsV11),
1408 "TLS_V1_2" => Some(Self::TlsV12),
1409 "TLS_V1_3" => Some(Self::TlsV13),
1410 _ => None,
1411 }
1412 }
1413}
1414#[derive(::serde::Serialize, ::serde::Deserialize)]
1415#[serde(rename_all = "SCREAMING_SNAKE_CASE")]
1416#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1417#[repr(i32)]
1418pub enum LoadBalancingAlgorithms {
1419 RoundRobin = 0,
1420 Random = 1,
1421 LeastLoaded = 2,
1422 PowerOfTwo = 3,
1423}
1424impl LoadBalancingAlgorithms {
1425 pub fn as_str_name(&self) -> &'static str {
1430 match self {
1431 Self::RoundRobin => "ROUND_ROBIN",
1432 Self::Random => "RANDOM",
1433 Self::LeastLoaded => "LEAST_LOADED",
1434 Self::PowerOfTwo => "POWER_OF_TWO",
1435 }
1436 }
1437 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1439 match value {
1440 "ROUND_ROBIN" => Some(Self::RoundRobin),
1441 "RANDOM" => Some(Self::Random),
1442 "LEAST_LOADED" => Some(Self::LeastLoaded),
1443 "POWER_OF_TWO" => Some(Self::PowerOfTwo),
1444 _ => None,
1445 }
1446 }
1447}
1448#[derive(::serde::Serialize, ::serde::Deserialize)]
1449#[serde(rename_all = "SCREAMING_SNAKE_CASE")]
1450#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1451#[repr(i32)]
1452pub enum ProxyProtocolConfig {
1453 ExpectHeader = 0,
1454 SendHeader = 1,
1455 RelayHeader = 2,
1456}
1457impl ProxyProtocolConfig {
1458 pub fn as_str_name(&self) -> &'static str {
1463 match self {
1464 Self::ExpectHeader => "EXPECT_HEADER",
1465 Self::SendHeader => "SEND_HEADER",
1466 Self::RelayHeader => "RELAY_HEADER",
1467 }
1468 }
1469 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1471 match value {
1472 "EXPECT_HEADER" => Some(Self::ExpectHeader),
1473 "SEND_HEADER" => Some(Self::SendHeader),
1474 "RELAY_HEADER" => Some(Self::RelayHeader),
1475 _ => None,
1476 }
1477 }
1478}
1479#[derive(::serde::Serialize, ::serde::Deserialize)]
1481#[serde(rename_all = "SCREAMING_SNAKE_CASE")]
1482#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1483#[repr(i32)]
1484pub enum LoadMetric {
1485 Connections = 0,
1487 Requests = 1,
1489 ConnectionTime = 2,
1491}
1492impl LoadMetric {
1493 pub fn as_str_name(&self) -> &'static str {
1498 match self {
1499 Self::Connections => "CONNECTIONS",
1500 Self::Requests => "REQUESTS",
1501 Self::ConnectionTime => "CONNECTION_TIME",
1502 }
1503 }
1504 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1506 match value {
1507 "CONNECTIONS" => Some(Self::Connections),
1508 "REQUESTS" => Some(Self::Requests),
1509 "CONNECTION_TIME" => Some(Self::ConnectionTime),
1510 _ => None,
1511 }
1512 }
1513}
1514#[derive(::serde::Serialize, ::serde::Deserialize)]
1516#[serde(rename_all = "SCREAMING_SNAKE_CASE")]
1517#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1518#[repr(i32)]
1519pub enum MetricsConfiguration {
1520 Enabled = 0,
1522 Disabled = 1,
1524 Clear = 2,
1526}
1527impl MetricsConfiguration {
1528 pub fn as_str_name(&self) -> &'static str {
1533 match self {
1534 Self::Enabled => "ENABLED",
1535 Self::Disabled => "DISABLED",
1536 Self::Clear => "CLEAR",
1537 }
1538 }
1539 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1541 match value {
1542 "ENABLED" => Some(Self::Enabled),
1543 "DISABLED" => Some(Self::Disabled),
1544 "CLEAR" => Some(Self::Clear),
1545 _ => None,
1546 }
1547 }
1548}
1549#[derive(::serde::Serialize, ::serde::Deserialize)]
1550#[serde(rename_all = "SCREAMING_SNAKE_CASE")]
1551#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1552#[repr(i32)]
1553pub enum EventKind {
1554 BackendDown = 0,
1555 BackendUp = 1,
1556 NoAvailableBackends = 2,
1557 RemovedBackendHasNoConnections = 3,
1558}
1559impl EventKind {
1560 pub fn as_str_name(&self) -> &'static str {
1565 match self {
1566 Self::BackendDown => "BACKEND_DOWN",
1567 Self::BackendUp => "BACKEND_UP",
1568 Self::NoAvailableBackends => "NO_AVAILABLE_BACKENDS",
1569 Self::RemovedBackendHasNoConnections => "REMOVED_BACKEND_HAS_NO_CONNECTIONS",
1570 }
1571 }
1572 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1574 match value {
1575 "BACKEND_DOWN" => Some(Self::BackendDown),
1576 "BACKEND_UP" => Some(Self::BackendUp),
1577 "NO_AVAILABLE_BACKENDS" => Some(Self::NoAvailableBackends),
1578 "REMOVED_BACKEND_HAS_NO_CONNECTIONS" => {
1579 Some(Self::RemovedBackendHasNoConnections)
1580 }
1581 _ => None,
1582 }
1583 }
1584}
1585#[derive(::serde::Serialize, ::serde::Deserialize)]
1586#[serde(rename_all = "SCREAMING_SNAKE_CASE")]
1587#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1588#[repr(i32)]
1589pub enum ResponseStatus {
1590 Ok = 0,
1591 Processing = 1,
1592 Failure = 2,
1593}
1594impl ResponseStatus {
1595 pub fn as_str_name(&self) -> &'static str {
1600 match self {
1601 Self::Ok => "OK",
1602 Self::Processing => "PROCESSING",
1603 Self::Failure => "FAILURE",
1604 }
1605 }
1606 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1608 match value {
1609 "OK" => Some(Self::Ok),
1610 "PROCESSING" => Some(Self::Processing),
1611 "FAILURE" => Some(Self::Failure),
1612 _ => None,
1613 }
1614 }
1615}
1616#[derive(::serde::Serialize, ::serde::Deserialize)]
1618#[serde(rename_all = "SCREAMING_SNAKE_CASE")]
1619#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1620#[repr(i32)]
1621pub enum RunState {
1622 Running = 0,
1623 Stopping = 1,
1624 Stopped = 2,
1625 NotAnswering = 3,
1626}
1627impl RunState {
1628 pub fn as_str_name(&self) -> &'static str {
1633 match self {
1634 Self::Running => "RUNNING",
1635 Self::Stopping => "STOPPING",
1636 Self::Stopped => "STOPPED",
1637 Self::NotAnswering => "NOT_ANSWERING",
1638 }
1639 }
1640 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1642 match value {
1643 "RUNNING" => Some(Self::Running),
1644 "STOPPING" => Some(Self::Stopping),
1645 "STOPPED" => Some(Self::Stopped),
1646 "NOT_ANSWERING" => Some(Self::NotAnswering),
1647 _ => None,
1648 }
1649 }
1650}
1651#[derive(::serde::Serialize, ::serde::Deserialize)]
1652#[serde(rename_all = "SCREAMING_SNAKE_CASE")]
1653#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1654#[repr(i32)]
1655pub enum ProtobufAccessLogFormat {
1656 Ascii = 1,
1657 Protobuf = 2,
1658}
1659impl ProtobufAccessLogFormat {
1660 pub fn as_str_name(&self) -> &'static str {
1665 match self {
1666 Self::Ascii => "Ascii",
1667 Self::Protobuf => "Protobuf",
1668 }
1669 }
1670 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1672 match value {
1673 "Ascii" => Some(Self::Ascii),
1674 "Protobuf" => Some(Self::Protobuf),
1675 _ => None,
1676 }
1677 }
1678}