gitee.com/zhaochuninhefei/gmgo@v0.0.31-0.20240209061119-069254a02979/go-control-plane/envoy/api/v2/cluster.pb.go (about) 1 // Code generated by protoc-gen-go. DO NOT EDIT. 2 // versions: 3 // protoc-gen-go v1.25.0 4 // protoc v3.16.0 5 // source: envoy/api/v2/cluster.proto 6 7 package envoy_api_v2 8 9 import ( 10 _ "github.com/cncf/xds/go/udpa/annotations" 11 _ "gitee.com/zhaochuninhefei/gmgo/go-control-plane/envoy/annotations" 12 auth "gitee.com/zhaochuninhefei/gmgo/go-control-plane/envoy/api/v2/auth" 13 cluster "gitee.com/zhaochuninhefei/gmgo/go-control-plane/envoy/api/v2/cluster" 14 core "gitee.com/zhaochuninhefei/gmgo/go-control-plane/envoy/api/v2/core" 15 _type "gitee.com/zhaochuninhefei/gmgo/go-control-plane/envoy/type" 16 _ "github.com/envoyproxy/protoc-gen-validate/validate" 17 proto "github.com/golang/protobuf/proto" 18 any "github.com/golang/protobuf/ptypes/any" 19 duration "github.com/golang/protobuf/ptypes/duration" 20 _struct "github.com/golang/protobuf/ptypes/struct" 21 wrappers "github.com/golang/protobuf/ptypes/wrappers" 22 protoreflect "google.golang.org/protobuf/reflect/protoreflect" 23 protoimpl "google.golang.org/protobuf/runtime/protoimpl" 24 reflect "reflect" 25 sync "sync" 26 ) 27 28 const ( 29 // Verify that this generated code is sufficiently up-to-date. 30 _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) 31 // Verify that runtime/protoimpl is sufficiently up-to-date. 32 _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) 33 ) 34 35 // This is a compile-time assertion that a sufficiently up-to-date version 36 // of the legacy proto package is being used. 37 const _ = proto.ProtoPackageIsVersion4 38 39 // Refer to :ref:`service discovery type <arch_overview_service_discovery_types>` 40 // for an explanation on each type. 41 type Cluster_DiscoveryType int32 42 43 const ( 44 // Refer to the :ref:`static discovery type<arch_overview_service_discovery_types_static>` 45 // for an explanation. 46 Cluster_STATIC Cluster_DiscoveryType = 0 47 // Refer to the :ref:`strict DNS discovery 48 // type<arch_overview_service_discovery_types_strict_dns>` 49 // for an explanation. 50 Cluster_STRICT_DNS Cluster_DiscoveryType = 1 51 // Refer to the :ref:`logical DNS discovery 52 // type<arch_overview_service_discovery_types_logical_dns>` 53 // for an explanation. 54 Cluster_LOGICAL_DNS Cluster_DiscoveryType = 2 55 // Refer to the :ref:`service discovery type<arch_overview_service_discovery_types_eds>` 56 // for an explanation. 57 Cluster_EDS Cluster_DiscoveryType = 3 58 // Refer to the :ref:`original destination discovery 59 // type<arch_overview_service_discovery_types_original_destination>` 60 // for an explanation. 61 Cluster_ORIGINAL_DST Cluster_DiscoveryType = 4 62 ) 63 64 // Enum value maps for Cluster_DiscoveryType. 65 var ( 66 Cluster_DiscoveryType_name = map[int32]string{ 67 0: "STATIC", 68 1: "STRICT_DNS", 69 2: "LOGICAL_DNS", 70 3: "EDS", 71 4: "ORIGINAL_DST", 72 } 73 Cluster_DiscoveryType_value = map[string]int32{ 74 "STATIC": 0, 75 "STRICT_DNS": 1, 76 "LOGICAL_DNS": 2, 77 "EDS": 3, 78 "ORIGINAL_DST": 4, 79 } 80 ) 81 82 func (x Cluster_DiscoveryType) Enum() *Cluster_DiscoveryType { 83 p := new(Cluster_DiscoveryType) 84 *p = x 85 return p 86 } 87 88 func (x Cluster_DiscoveryType) String() string { 89 return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) 90 } 91 92 func (Cluster_DiscoveryType) Descriptor() protoreflect.EnumDescriptor { 93 return file_envoy_api_v2_cluster_proto_enumTypes[0].Descriptor() 94 } 95 96 func (Cluster_DiscoveryType) Type() protoreflect.EnumType { 97 return &file_envoy_api_v2_cluster_proto_enumTypes[0] 98 } 99 100 func (x Cluster_DiscoveryType) Number() protoreflect.EnumNumber { 101 return protoreflect.EnumNumber(x) 102 } 103 104 // Deprecated: Use Cluster_DiscoveryType.Descriptor instead. 105 func (Cluster_DiscoveryType) EnumDescriptor() ([]byte, []int) { 106 return file_envoy_api_v2_cluster_proto_rawDescGZIP(), []int{0, 0} 107 } 108 109 // Refer to :ref:`load balancer type <arch_overview_load_balancing_types>` architecture 110 // overview section for information on each type. 111 type Cluster_LbPolicy int32 112 113 const ( 114 // Refer to the :ref:`round robin load balancing 115 // policy<arch_overview_load_balancing_types_round_robin>` 116 // for an explanation. 117 Cluster_ROUND_ROBIN Cluster_LbPolicy = 0 118 // Refer to the :ref:`least request load balancing 119 // policy<arch_overview_load_balancing_types_least_request>` 120 // for an explanation. 121 Cluster_LEAST_REQUEST Cluster_LbPolicy = 1 122 // Refer to the :ref:`ring hash load balancing 123 // policy<arch_overview_load_balancing_types_ring_hash>` 124 // for an explanation. 125 Cluster_RING_HASH Cluster_LbPolicy = 2 126 // Refer to the :ref:`random load balancing 127 // policy<arch_overview_load_balancing_types_random>` 128 // for an explanation. 129 Cluster_RANDOM Cluster_LbPolicy = 3 130 // Refer to the :ref:`original destination load balancing 131 // policy<arch_overview_load_balancing_types_original_destination>` 132 // for an explanation. 133 // 134 // .. attention:: 135 // 136 // **This load balancing policy is deprecated**. Use CLUSTER_PROVIDED instead. 137 // 138 // 139 // Deprecated: Do not use. 140 Cluster_ORIGINAL_DST_LB Cluster_LbPolicy = 4 141 // Refer to the :ref:`Maglev load balancing policy<arch_overview_load_balancing_types_maglev>` 142 // for an explanation. 143 Cluster_MAGLEV Cluster_LbPolicy = 5 144 // This load balancer type must be specified if the configured cluster provides a cluster 145 // specific load balancer. Consult the configured cluster's documentation for whether to set 146 // this option or not. 147 Cluster_CLUSTER_PROVIDED Cluster_LbPolicy = 6 148 // [#not-implemented-hide:] Use the new :ref:`load_balancing_policy 149 // <envoy_api_field_Cluster.load_balancing_policy>` field to determine the LB policy. 150 // [#next-major-version: In the v3 API, we should consider deprecating the lb_policy field 151 // and instead using the new load_balancing_policy field as the one and only mechanism for 152 // configuring this.] 153 Cluster_LOAD_BALANCING_POLICY_CONFIG Cluster_LbPolicy = 7 154 ) 155 156 // Enum value maps for Cluster_LbPolicy. 157 var ( 158 Cluster_LbPolicy_name = map[int32]string{ 159 0: "ROUND_ROBIN", 160 1: "LEAST_REQUEST", 161 2: "RING_HASH", 162 3: "RANDOM", 163 4: "ORIGINAL_DST_LB", 164 5: "MAGLEV", 165 6: "CLUSTER_PROVIDED", 166 7: "LOAD_BALANCING_POLICY_CONFIG", 167 } 168 Cluster_LbPolicy_value = map[string]int32{ 169 "ROUND_ROBIN": 0, 170 "LEAST_REQUEST": 1, 171 "RING_HASH": 2, 172 "RANDOM": 3, 173 "ORIGINAL_DST_LB": 4, 174 "MAGLEV": 5, 175 "CLUSTER_PROVIDED": 6, 176 "LOAD_BALANCING_POLICY_CONFIG": 7, 177 } 178 ) 179 180 func (x Cluster_LbPolicy) Enum() *Cluster_LbPolicy { 181 p := new(Cluster_LbPolicy) 182 *p = x 183 return p 184 } 185 186 func (x Cluster_LbPolicy) String() string { 187 return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) 188 } 189 190 func (Cluster_LbPolicy) Descriptor() protoreflect.EnumDescriptor { 191 return file_envoy_api_v2_cluster_proto_enumTypes[1].Descriptor() 192 } 193 194 func (Cluster_LbPolicy) Type() protoreflect.EnumType { 195 return &file_envoy_api_v2_cluster_proto_enumTypes[1] 196 } 197 198 func (x Cluster_LbPolicy) Number() protoreflect.EnumNumber { 199 return protoreflect.EnumNumber(x) 200 } 201 202 // Deprecated: Use Cluster_LbPolicy.Descriptor instead. 203 func (Cluster_LbPolicy) EnumDescriptor() ([]byte, []int) { 204 return file_envoy_api_v2_cluster_proto_rawDescGZIP(), []int{0, 1} 205 } 206 207 // When V4_ONLY is selected, the DNS resolver will only perform a lookup for 208 // addresses in the IPv4 family. If V6_ONLY is selected, the DNS resolver will 209 // only perform a lookup for addresses in the IPv6 family. If AUTO is 210 // specified, the DNS resolver will first perform a lookup for addresses in 211 // the IPv6 family and fallback to a lookup for addresses in the IPv4 family. 212 // For cluster types other than 213 // :ref:`STRICT_DNS<envoy_api_enum_value_Cluster.DiscoveryType.STRICT_DNS>` and 214 // :ref:`LOGICAL_DNS<envoy_api_enum_value_Cluster.DiscoveryType.LOGICAL_DNS>`, 215 // this setting is 216 // ignored. 217 type Cluster_DnsLookupFamily int32 218 219 const ( 220 Cluster_AUTO Cluster_DnsLookupFamily = 0 221 Cluster_V4_ONLY Cluster_DnsLookupFamily = 1 222 Cluster_V6_ONLY Cluster_DnsLookupFamily = 2 223 ) 224 225 // Enum value maps for Cluster_DnsLookupFamily. 226 var ( 227 Cluster_DnsLookupFamily_name = map[int32]string{ 228 0: "AUTO", 229 1: "V4_ONLY", 230 2: "V6_ONLY", 231 } 232 Cluster_DnsLookupFamily_value = map[string]int32{ 233 "AUTO": 0, 234 "V4_ONLY": 1, 235 "V6_ONLY": 2, 236 } 237 ) 238 239 func (x Cluster_DnsLookupFamily) Enum() *Cluster_DnsLookupFamily { 240 p := new(Cluster_DnsLookupFamily) 241 *p = x 242 return p 243 } 244 245 func (x Cluster_DnsLookupFamily) String() string { 246 return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) 247 } 248 249 func (Cluster_DnsLookupFamily) Descriptor() protoreflect.EnumDescriptor { 250 return file_envoy_api_v2_cluster_proto_enumTypes[2].Descriptor() 251 } 252 253 func (Cluster_DnsLookupFamily) Type() protoreflect.EnumType { 254 return &file_envoy_api_v2_cluster_proto_enumTypes[2] 255 } 256 257 func (x Cluster_DnsLookupFamily) Number() protoreflect.EnumNumber { 258 return protoreflect.EnumNumber(x) 259 } 260 261 // Deprecated: Use Cluster_DnsLookupFamily.Descriptor instead. 262 func (Cluster_DnsLookupFamily) EnumDescriptor() ([]byte, []int) { 263 return file_envoy_api_v2_cluster_proto_rawDescGZIP(), []int{0, 2} 264 } 265 266 type Cluster_ClusterProtocolSelection int32 267 268 const ( 269 // Cluster can only operate on one of the possible upstream protocols (HTTP1.1, HTTP2). 270 // If :ref:`http2_protocol_options <envoy_api_field_Cluster.http2_protocol_options>` are 271 // present, HTTP2 will be used, otherwise HTTP1.1 will be used. 272 Cluster_USE_CONFIGURED_PROTOCOL Cluster_ClusterProtocolSelection = 0 273 // Use HTTP1.1 or HTTP2, depending on which one is used on the downstream connection. 274 Cluster_USE_DOWNSTREAM_PROTOCOL Cluster_ClusterProtocolSelection = 1 275 ) 276 277 // Enum value maps for Cluster_ClusterProtocolSelection. 278 var ( 279 Cluster_ClusterProtocolSelection_name = map[int32]string{ 280 0: "USE_CONFIGURED_PROTOCOL", 281 1: "USE_DOWNSTREAM_PROTOCOL", 282 } 283 Cluster_ClusterProtocolSelection_value = map[string]int32{ 284 "USE_CONFIGURED_PROTOCOL": 0, 285 "USE_DOWNSTREAM_PROTOCOL": 1, 286 } 287 ) 288 289 func (x Cluster_ClusterProtocolSelection) Enum() *Cluster_ClusterProtocolSelection { 290 p := new(Cluster_ClusterProtocolSelection) 291 *p = x 292 return p 293 } 294 295 func (x Cluster_ClusterProtocolSelection) String() string { 296 return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) 297 } 298 299 func (Cluster_ClusterProtocolSelection) Descriptor() protoreflect.EnumDescriptor { 300 return file_envoy_api_v2_cluster_proto_enumTypes[3].Descriptor() 301 } 302 303 func (Cluster_ClusterProtocolSelection) Type() protoreflect.EnumType { 304 return &file_envoy_api_v2_cluster_proto_enumTypes[3] 305 } 306 307 func (x Cluster_ClusterProtocolSelection) Number() protoreflect.EnumNumber { 308 return protoreflect.EnumNumber(x) 309 } 310 311 // Deprecated: Use Cluster_ClusterProtocolSelection.Descriptor instead. 312 func (Cluster_ClusterProtocolSelection) EnumDescriptor() ([]byte, []int) { 313 return file_envoy_api_v2_cluster_proto_rawDescGZIP(), []int{0, 3} 314 } 315 316 // If NO_FALLBACK is selected, a result 317 // equivalent to no healthy hosts is reported. If ANY_ENDPOINT is selected, 318 // any cluster endpoint may be returned (subject to policy, health checks, 319 // etc). If DEFAULT_SUBSET is selected, load balancing is performed over the 320 // endpoints matching the values from the default_subset field. 321 type Cluster_LbSubsetConfig_LbSubsetFallbackPolicy int32 322 323 const ( 324 Cluster_LbSubsetConfig_NO_FALLBACK Cluster_LbSubsetConfig_LbSubsetFallbackPolicy = 0 325 Cluster_LbSubsetConfig_ANY_ENDPOINT Cluster_LbSubsetConfig_LbSubsetFallbackPolicy = 1 326 Cluster_LbSubsetConfig_DEFAULT_SUBSET Cluster_LbSubsetConfig_LbSubsetFallbackPolicy = 2 327 ) 328 329 // Enum value maps for Cluster_LbSubsetConfig_LbSubsetFallbackPolicy. 330 var ( 331 Cluster_LbSubsetConfig_LbSubsetFallbackPolicy_name = map[int32]string{ 332 0: "NO_FALLBACK", 333 1: "ANY_ENDPOINT", 334 2: "DEFAULT_SUBSET", 335 } 336 Cluster_LbSubsetConfig_LbSubsetFallbackPolicy_value = map[string]int32{ 337 "NO_FALLBACK": 0, 338 "ANY_ENDPOINT": 1, 339 "DEFAULT_SUBSET": 2, 340 } 341 ) 342 343 func (x Cluster_LbSubsetConfig_LbSubsetFallbackPolicy) Enum() *Cluster_LbSubsetConfig_LbSubsetFallbackPolicy { 344 p := new(Cluster_LbSubsetConfig_LbSubsetFallbackPolicy) 345 *p = x 346 return p 347 } 348 349 func (x Cluster_LbSubsetConfig_LbSubsetFallbackPolicy) String() string { 350 return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) 351 } 352 353 func (Cluster_LbSubsetConfig_LbSubsetFallbackPolicy) Descriptor() protoreflect.EnumDescriptor { 354 return file_envoy_api_v2_cluster_proto_enumTypes[4].Descriptor() 355 } 356 357 func (Cluster_LbSubsetConfig_LbSubsetFallbackPolicy) Type() protoreflect.EnumType { 358 return &file_envoy_api_v2_cluster_proto_enumTypes[4] 359 } 360 361 func (x Cluster_LbSubsetConfig_LbSubsetFallbackPolicy) Number() protoreflect.EnumNumber { 362 return protoreflect.EnumNumber(x) 363 } 364 365 // Deprecated: Use Cluster_LbSubsetConfig_LbSubsetFallbackPolicy.Descriptor instead. 366 func (Cluster_LbSubsetConfig_LbSubsetFallbackPolicy) EnumDescriptor() ([]byte, []int) { 367 return file_envoy_api_v2_cluster_proto_rawDescGZIP(), []int{0, 3, 0} 368 } 369 370 // Allows to override top level fallback policy per selector. 371 type Cluster_LbSubsetConfig_LbSubsetSelector_LbSubsetSelectorFallbackPolicy int32 372 373 const ( 374 // If NOT_DEFINED top level config fallback policy is used instead. 375 Cluster_LbSubsetConfig_LbSubsetSelector_NOT_DEFINED Cluster_LbSubsetConfig_LbSubsetSelector_LbSubsetSelectorFallbackPolicy = 0 376 // If NO_FALLBACK is selected, a result equivalent to no healthy hosts is reported. 377 Cluster_LbSubsetConfig_LbSubsetSelector_NO_FALLBACK Cluster_LbSubsetConfig_LbSubsetSelector_LbSubsetSelectorFallbackPolicy = 1 378 // If ANY_ENDPOINT is selected, any cluster endpoint may be returned 379 // (subject to policy, health checks, etc). 380 Cluster_LbSubsetConfig_LbSubsetSelector_ANY_ENDPOINT Cluster_LbSubsetConfig_LbSubsetSelector_LbSubsetSelectorFallbackPolicy = 2 381 // If DEFAULT_SUBSET is selected, load balancing is performed over the 382 // endpoints matching the values from the default_subset field. 383 Cluster_LbSubsetConfig_LbSubsetSelector_DEFAULT_SUBSET Cluster_LbSubsetConfig_LbSubsetSelector_LbSubsetSelectorFallbackPolicy = 3 384 // If KEYS_SUBSET is selected, subset selector matching is performed again with metadata 385 // keys reduced to 386 // :ref:`fallback_keys_subset<envoy_api_field_Cluster.LbSubsetConfig.LbSubsetSelector.fallback_keys_subset>`. 387 // It allows for a fallback to a different, less specific selector if some of the keys of 388 // the selector are considered optional. 389 Cluster_LbSubsetConfig_LbSubsetSelector_KEYS_SUBSET Cluster_LbSubsetConfig_LbSubsetSelector_LbSubsetSelectorFallbackPolicy = 4 390 ) 391 392 // Enum value maps for Cluster_LbSubsetConfig_LbSubsetSelector_LbSubsetSelectorFallbackPolicy. 393 var ( 394 Cluster_LbSubsetConfig_LbSubsetSelector_LbSubsetSelectorFallbackPolicy_name = map[int32]string{ 395 0: "NOT_DEFINED", 396 1: "NO_FALLBACK", 397 2: "ANY_ENDPOINT", 398 3: "DEFAULT_SUBSET", 399 4: "KEYS_SUBSET", 400 } 401 Cluster_LbSubsetConfig_LbSubsetSelector_LbSubsetSelectorFallbackPolicy_value = map[string]int32{ 402 "NOT_DEFINED": 0, 403 "NO_FALLBACK": 1, 404 "ANY_ENDPOINT": 2, 405 "DEFAULT_SUBSET": 3, 406 "KEYS_SUBSET": 4, 407 } 408 ) 409 410 func (x Cluster_LbSubsetConfig_LbSubsetSelector_LbSubsetSelectorFallbackPolicy) Enum() *Cluster_LbSubsetConfig_LbSubsetSelector_LbSubsetSelectorFallbackPolicy { 411 p := new(Cluster_LbSubsetConfig_LbSubsetSelector_LbSubsetSelectorFallbackPolicy) 412 *p = x 413 return p 414 } 415 416 func (x Cluster_LbSubsetConfig_LbSubsetSelector_LbSubsetSelectorFallbackPolicy) String() string { 417 return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) 418 } 419 420 func (Cluster_LbSubsetConfig_LbSubsetSelector_LbSubsetSelectorFallbackPolicy) Descriptor() protoreflect.EnumDescriptor { 421 return file_envoy_api_v2_cluster_proto_enumTypes[5].Descriptor() 422 } 423 424 func (Cluster_LbSubsetConfig_LbSubsetSelector_LbSubsetSelectorFallbackPolicy) Type() protoreflect.EnumType { 425 return &file_envoy_api_v2_cluster_proto_enumTypes[5] 426 } 427 428 func (x Cluster_LbSubsetConfig_LbSubsetSelector_LbSubsetSelectorFallbackPolicy) Number() protoreflect.EnumNumber { 429 return protoreflect.EnumNumber(x) 430 } 431 432 // Deprecated: Use Cluster_LbSubsetConfig_LbSubsetSelector_LbSubsetSelectorFallbackPolicy.Descriptor instead. 433 func (Cluster_LbSubsetConfig_LbSubsetSelector_LbSubsetSelectorFallbackPolicy) EnumDescriptor() ([]byte, []int) { 434 return file_envoy_api_v2_cluster_proto_rawDescGZIP(), []int{0, 3, 0, 0} 435 } 436 437 // The hash function used to hash hosts onto the ketama ring. 438 type Cluster_RingHashLbConfig_HashFunction int32 439 440 const ( 441 // Use `xxHash <https://github.com/Cyan4973/xxHash>`_, this is the default hash function. 442 Cluster_RingHashLbConfig_XX_HASH Cluster_RingHashLbConfig_HashFunction = 0 443 // Use `MurmurHash2 <https://sites.google.com/site/murmurhash/>`_, this is compatible with 444 // std:hash<string> in GNU libstdc++ 3.4.20 or above. This is typically the case when compiled 445 // on Linux and not macOS. 446 Cluster_RingHashLbConfig_MURMUR_HASH_2 Cluster_RingHashLbConfig_HashFunction = 1 447 ) 448 449 // Enum value maps for Cluster_RingHashLbConfig_HashFunction. 450 var ( 451 Cluster_RingHashLbConfig_HashFunction_name = map[int32]string{ 452 0: "XX_HASH", 453 1: "MURMUR_HASH_2", 454 } 455 Cluster_RingHashLbConfig_HashFunction_value = map[string]int32{ 456 "XX_HASH": 0, 457 "MURMUR_HASH_2": 1, 458 } 459 ) 460 461 func (x Cluster_RingHashLbConfig_HashFunction) Enum() *Cluster_RingHashLbConfig_HashFunction { 462 p := new(Cluster_RingHashLbConfig_HashFunction) 463 *p = x 464 return p 465 } 466 467 func (x Cluster_RingHashLbConfig_HashFunction) String() string { 468 return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) 469 } 470 471 func (Cluster_RingHashLbConfig_HashFunction) Descriptor() protoreflect.EnumDescriptor { 472 return file_envoy_api_v2_cluster_proto_enumTypes[6].Descriptor() 473 } 474 475 func (Cluster_RingHashLbConfig_HashFunction) Type() protoreflect.EnumType { 476 return &file_envoy_api_v2_cluster_proto_enumTypes[6] 477 } 478 479 func (x Cluster_RingHashLbConfig_HashFunction) Number() protoreflect.EnumNumber { 480 return protoreflect.EnumNumber(x) 481 } 482 483 // Deprecated: Use Cluster_RingHashLbConfig_HashFunction.Descriptor instead. 484 func (Cluster_RingHashLbConfig_HashFunction) EnumDescriptor() ([]byte, []int) { 485 return file_envoy_api_v2_cluster_proto_rawDescGZIP(), []int{0, 5, 0} 486 } 487 488 // Configuration for a single upstream cluster. 489 // [#next-free-field: 48] 490 type Cluster struct { 491 state protoimpl.MessageState 492 sizeCache protoimpl.SizeCache 493 unknownFields protoimpl.UnknownFields 494 495 // Configuration to use different transport sockets for different endpoints. 496 // The entry of *envoy.transport_socket_match* in the 497 // :ref:`LbEndpoint.Metadata <envoy_api_field_endpoint.LbEndpoint.metadata>` 498 // is used to match against the transport sockets as they appear in the list. The first 499 // :ref:`match <envoy_api_msg_Cluster.TransportSocketMatch>` is used. 500 // For example, with the following match 501 // 502 // .. code-block:: yaml 503 // 504 // transport_socket_matches: 505 // - name: "enableMTLS" 506 // match: 507 // acceptMTLS: true 508 // transport_socket: 509 // name: envoy.transport_sockets.tls 510 // config: { ... } # tls socket configuration 511 // - name: "defaultToPlaintext" 512 // match: {} 513 // transport_socket: 514 // name: envoy.transport_sockets.raw_buffer 515 // 516 // Connections to the endpoints whose metadata value under *envoy.transport_socket_match* 517 // having "acceptMTLS"/"true" key/value pair use the "enableMTLS" socket configuration. 518 // 519 // If a :ref:`socket match <envoy_api_msg_Cluster.TransportSocketMatch>` with empty match 520 // criteria is provided, that always match any endpoint. For example, the "defaultToPlaintext" 521 // socket match in case above. 522 // 523 // If an endpoint metadata's value under *envoy.transport_socket_match* does not match any 524 // *TransportSocketMatch*, socket configuration fallbacks to use the *tls_context* or 525 // *transport_socket* specified in this cluster. 526 // 527 // This field allows gradual and flexible transport socket configuration changes. 528 // 529 // The metadata of endpoints in EDS can indicate transport socket capabilities. For example, 530 // an endpoint's metadata can have two key value pairs as "acceptMTLS": "true", 531 // "acceptPlaintext": "true". While some other endpoints, only accepting plaintext traffic 532 // has "acceptPlaintext": "true" metadata information. 533 // 534 // Then the xDS server can configure the CDS to a client, Envoy A, to send mutual TLS 535 // traffic for endpoints with "acceptMTLS": "true", by adding a corresponding 536 // *TransportSocketMatch* in this field. Other client Envoys receive CDS without 537 // *transport_socket_match* set, and still send plain text traffic to the same cluster. 538 // 539 // [#comment:TODO(incfly): add a detailed architecture doc on intended usage.] 540 TransportSocketMatches []*Cluster_TransportSocketMatch `protobuf:"bytes,43,rep,name=transport_socket_matches,json=transportSocketMatches,proto3" json:"transport_socket_matches,omitempty"` 541 // Supplies the name of the cluster which must be unique across all clusters. 542 // The cluster name is used when emitting 543 // :ref:`statistics <config_cluster_manager_cluster_stats>` if :ref:`alt_stat_name 544 // <envoy_api_field_Cluster.alt_stat_name>` is not provided. 545 // Any ``:`` in the cluster name will be converted to ``_`` when emitting statistics. 546 Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` 547 // An optional alternative to the cluster name to be used while emitting stats. 548 // Any ``:`` in the name will be converted to ``_`` when emitting statistics. This should not be 549 // confused with :ref:`Router Filter Header 550 // <config_http_filters_router_x-envoy-upstream-alt-stat-name>`. 551 AltStatName string `protobuf:"bytes,28,opt,name=alt_stat_name,json=altStatName,proto3" json:"alt_stat_name,omitempty"` 552 // Types that are assignable to ClusterDiscoveryType: 553 // *Cluster_Type 554 // *Cluster_ClusterType 555 ClusterDiscoveryType isCluster_ClusterDiscoveryType `protobuf_oneof:"cluster_discovery_type"` 556 // Configuration to use for EDS updates for the Cluster. 557 EdsClusterConfig *Cluster_EdsClusterConfig `protobuf:"bytes,3,opt,name=eds_cluster_config,json=edsClusterConfig,proto3" json:"eds_cluster_config,omitempty"` 558 // The timeout for new network connections to hosts in the cluster. 559 ConnectTimeout *duration.Duration `protobuf:"bytes,4,opt,name=connect_timeout,json=connectTimeout,proto3" json:"connect_timeout,omitempty"` 560 // Soft limit on size of the cluster’s connections read and write buffers. If 561 // unspecified, an implementation defined default is applied (1MiB). 562 PerConnectionBufferLimitBytes *wrappers.UInt32Value `protobuf:"bytes,5,opt,name=per_connection_buffer_limit_bytes,json=perConnectionBufferLimitBytes,proto3" json:"per_connection_buffer_limit_bytes,omitempty"` 563 // The :ref:`load balancer type <arch_overview_load_balancing_types>` to use 564 // when picking a host in the cluster. 565 LbPolicy Cluster_LbPolicy `protobuf:"varint,6,opt,name=lb_policy,json=lbPolicy,proto3,enum=envoy.api.v2.Cluster_LbPolicy" json:"lb_policy,omitempty"` 566 // If the service discovery type is 567 // :ref:`STATIC<envoy_api_enum_value_Cluster.DiscoveryType.STATIC>`, 568 // :ref:`STRICT_DNS<envoy_api_enum_value_Cluster.DiscoveryType.STRICT_DNS>` 569 // or :ref:`LOGICAL_DNS<envoy_api_enum_value_Cluster.DiscoveryType.LOGICAL_DNS>`, 570 // then hosts is required. 571 // 572 // .. attention:: 573 // 574 // **This field is deprecated**. Set the 575 // :ref:`load_assignment<envoy_api_field_Cluster.load_assignment>` field instead. 576 // 577 // 578 // Deprecated: Do not use. 579 Hosts []*core.Address `protobuf:"bytes,7,rep,name=hosts,proto3" json:"hosts,omitempty"` 580 // Setting this is required for specifying members of 581 // :ref:`STATIC<envoy_api_enum_value_Cluster.DiscoveryType.STATIC>`, 582 // :ref:`STRICT_DNS<envoy_api_enum_value_Cluster.DiscoveryType.STRICT_DNS>` 583 // or :ref:`LOGICAL_DNS<envoy_api_enum_value_Cluster.DiscoveryType.LOGICAL_DNS>` clusters. 584 // This field supersedes the *hosts* field in the v2 API. 585 // 586 // .. attention:: 587 // 588 // Setting this allows non-EDS cluster types to contain embedded EDS equivalent 589 // :ref:`endpoint assignments<envoy_api_msg_ClusterLoadAssignment>`. 590 // 591 LoadAssignment *ClusterLoadAssignment `protobuf:"bytes,33,opt,name=load_assignment,json=loadAssignment,proto3" json:"load_assignment,omitempty"` 592 // Optional :ref:`active health checking <arch_overview_health_checking>` 593 // configuration for the cluster. If no 594 // configuration is specified no health checking will be done and all cluster 595 // members will be considered healthy at all times. 596 HealthChecks []*core.HealthCheck `protobuf:"bytes,8,rep,name=health_checks,json=healthChecks,proto3" json:"health_checks,omitempty"` 597 // Optional maximum requests for a single upstream connection. This parameter 598 // is respected by both the HTTP/1.1 and HTTP/2 connection pool 599 // implementations. If not specified, there is no limit. Setting this 600 // parameter to 1 will effectively disable keep alive. 601 MaxRequestsPerConnection *wrappers.UInt32Value `protobuf:"bytes,9,opt,name=max_requests_per_connection,json=maxRequestsPerConnection,proto3" json:"max_requests_per_connection,omitempty"` 602 // Optional :ref:`circuit breaking <arch_overview_circuit_break>` for the cluster. 603 CircuitBreakers *cluster.CircuitBreakers `protobuf:"bytes,10,opt,name=circuit_breakers,json=circuitBreakers,proto3" json:"circuit_breakers,omitempty"` 604 // The TLS configuration for connections to the upstream cluster. 605 // 606 // .. attention:: 607 // 608 // **This field is deprecated**. Use `transport_socket` with name `tls` instead. If both are 609 // set, `transport_socket` takes priority. 610 // 611 // Deprecated: Do not use. 612 TlsContext *auth.UpstreamTlsContext `protobuf:"bytes,11,opt,name=tls_context,json=tlsContext,proto3" json:"tls_context,omitempty"` 613 // HTTP protocol options that are applied only to upstream HTTP connections. 614 // These options apply to all HTTP versions. 615 UpstreamHttpProtocolOptions *core.UpstreamHttpProtocolOptions `protobuf:"bytes,46,opt,name=upstream_http_protocol_options,json=upstreamHttpProtocolOptions,proto3" json:"upstream_http_protocol_options,omitempty"` 616 // Additional options when handling HTTP requests upstream. These options will be applicable to 617 // both HTTP1 and HTTP2 requests. 618 CommonHttpProtocolOptions *core.HttpProtocolOptions `protobuf:"bytes,29,opt,name=common_http_protocol_options,json=commonHttpProtocolOptions,proto3" json:"common_http_protocol_options,omitempty"` 619 // Additional options when handling HTTP1 requests. 620 HttpProtocolOptions *core.Http1ProtocolOptions `protobuf:"bytes,13,opt,name=http_protocol_options,json=httpProtocolOptions,proto3" json:"http_protocol_options,omitempty"` 621 // Even if default HTTP2 protocol options are desired, this field must be 622 // set so that Envoy will assume that the upstream supports HTTP/2 when 623 // making new HTTP connection pool connections. Currently, Envoy only 624 // supports prior knowledge for upstream connections. Even if TLS is used 625 // with ALPN, `http2_protocol_options` must be specified. As an aside this allows HTTP/2 626 // connections to happen over plain text. 627 Http2ProtocolOptions *core.Http2ProtocolOptions `protobuf:"bytes,14,opt,name=http2_protocol_options,json=http2ProtocolOptions,proto3" json:"http2_protocol_options,omitempty"` 628 // The extension_protocol_options field is used to provide extension-specific protocol options 629 // for upstream connections. The key should match the extension filter name, such as 630 // "envoy.filters.network.thrift_proxy". See the extension's documentation for details on 631 // specific options. 632 // 633 // Deprecated: Do not use. 634 ExtensionProtocolOptions map[string]*_struct.Struct `protobuf:"bytes,35,rep,name=extension_protocol_options,json=extensionProtocolOptions,proto3" json:"extension_protocol_options,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` 635 // The extension_protocol_options field is used to provide extension-specific protocol options 636 // for upstream connections. The key should match the extension filter name, such as 637 // "envoy.filters.network.thrift_proxy". See the extension's documentation for details on 638 // specific options. 639 TypedExtensionProtocolOptions map[string]*any.Any `protobuf:"bytes,36,rep,name=typed_extension_protocol_options,json=typedExtensionProtocolOptions,proto3" json:"typed_extension_protocol_options,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` 640 // If the DNS refresh rate is specified and the cluster type is either 641 // :ref:`STRICT_DNS<envoy_api_enum_value_Cluster.DiscoveryType.STRICT_DNS>`, 642 // or :ref:`LOGICAL_DNS<envoy_api_enum_value_Cluster.DiscoveryType.LOGICAL_DNS>`, 643 // this value is used as the cluster’s DNS refresh 644 // rate. The value configured must be at least 1ms. If this setting is not specified, the 645 // value defaults to 5000ms. For cluster types other than 646 // :ref:`STRICT_DNS<envoy_api_enum_value_Cluster.DiscoveryType.STRICT_DNS>` 647 // and :ref:`LOGICAL_DNS<envoy_api_enum_value_Cluster.DiscoveryType.LOGICAL_DNS>` 648 // this setting is ignored. 649 DnsRefreshRate *duration.Duration `protobuf:"bytes,16,opt,name=dns_refresh_rate,json=dnsRefreshRate,proto3" json:"dns_refresh_rate,omitempty"` 650 // If the DNS failure refresh rate is specified and the cluster type is either 651 // :ref:`STRICT_DNS<envoy_api_enum_value_Cluster.DiscoveryType.STRICT_DNS>`, 652 // or :ref:`LOGICAL_DNS<envoy_api_enum_value_Cluster.DiscoveryType.LOGICAL_DNS>`, 653 // this is used as the cluster’s DNS refresh rate when requests are failing. If this setting is 654 // not specified, the failure refresh rate defaults to the DNS refresh rate. For cluster types 655 // other than :ref:`STRICT_DNS<envoy_api_enum_value_Cluster.DiscoveryType.STRICT_DNS>` and 656 // :ref:`LOGICAL_DNS<envoy_api_enum_value_Cluster.DiscoveryType.LOGICAL_DNS>` this setting is 657 // ignored. 658 DnsFailureRefreshRate *Cluster_RefreshRate `protobuf:"bytes,44,opt,name=dns_failure_refresh_rate,json=dnsFailureRefreshRate,proto3" json:"dns_failure_refresh_rate,omitempty"` 659 // Optional configuration for setting cluster's DNS refresh rate. If the value is set to true, 660 // cluster's DNS refresh rate will be set to resource record's TTL which comes from DNS 661 // resolution. 662 RespectDnsTtl bool `protobuf:"varint,39,opt,name=respect_dns_ttl,json=respectDnsTtl,proto3" json:"respect_dns_ttl,omitempty"` 663 // The DNS IP address resolution policy. If this setting is not specified, the 664 // value defaults to 665 // :ref:`AUTO<envoy_api_enum_value_Cluster.DnsLookupFamily.AUTO>`. 666 DnsLookupFamily Cluster_DnsLookupFamily `protobuf:"varint,17,opt,name=dns_lookup_family,json=dnsLookupFamily,proto3,enum=envoy.api.v2.Cluster_DnsLookupFamily" json:"dns_lookup_family,omitempty"` 667 // If DNS resolvers are specified and the cluster type is either 668 // :ref:`STRICT_DNS<envoy_api_enum_value_Cluster.DiscoveryType.STRICT_DNS>`, 669 // or :ref:`LOGICAL_DNS<envoy_api_enum_value_Cluster.DiscoveryType.LOGICAL_DNS>`, 670 // this value is used to specify the cluster’s dns resolvers. 671 // If this setting is not specified, the value defaults to the default 672 // resolver, which uses /etc/resolv.conf for configuration. For cluster types 673 // other than 674 // :ref:`STRICT_DNS<envoy_api_enum_value_Cluster.DiscoveryType.STRICT_DNS>` 675 // and :ref:`LOGICAL_DNS<envoy_api_enum_value_Cluster.DiscoveryType.LOGICAL_DNS>` 676 // this setting is ignored. 677 // Setting this value causes failure if the 678 // ``envoy.restart_features.use_apple_api_for_dns_lookups`` runtime value is true during 679 // server startup. Apple's API only allows overriding DNS resolvers via system settings. 680 DnsResolvers []*core.Address `protobuf:"bytes,18,rep,name=dns_resolvers,json=dnsResolvers,proto3" json:"dns_resolvers,omitempty"` 681 // [#next-major-version: Reconcile DNS options in a single message.] 682 // Always use TCP queries instead of UDP queries for DNS lookups. 683 // Setting this value causes failure if the 684 // ``envoy.restart_features.use_apple_api_for_dns_lookups`` runtime value is true during 685 // server startup. Apple' API only uses UDP for DNS resolution. 686 UseTcpForDnsLookups bool `protobuf:"varint,45,opt,name=use_tcp_for_dns_lookups,json=useTcpForDnsLookups,proto3" json:"use_tcp_for_dns_lookups,omitempty"` 687 // If specified, outlier detection will be enabled for this upstream cluster. 688 // Each of the configuration values can be overridden via 689 // :ref:`runtime values <config_cluster_manager_cluster_runtime_outlier_detection>`. 690 OutlierDetection *cluster.OutlierDetection `protobuf:"bytes,19,opt,name=outlier_detection,json=outlierDetection,proto3" json:"outlier_detection,omitempty"` 691 // The interval for removing stale hosts from a cluster type 692 // :ref:`ORIGINAL_DST<envoy_api_enum_value_Cluster.DiscoveryType.ORIGINAL_DST>`. 693 // Hosts are considered stale if they have not been used 694 // as upstream destinations during this interval. New hosts are added 695 // to original destination clusters on demand as new connections are 696 // redirected to Envoy, causing the number of hosts in the cluster to 697 // grow over time. Hosts that are not stale (they are actively used as 698 // destinations) are kept in the cluster, which allows connections to 699 // them remain open, saving the latency that would otherwise be spent 700 // on opening new connections. If this setting is not specified, the 701 // value defaults to 5000ms. For cluster types other than 702 // :ref:`ORIGINAL_DST<envoy_api_enum_value_Cluster.DiscoveryType.ORIGINAL_DST>` 703 // this setting is ignored. 704 CleanupInterval *duration.Duration `protobuf:"bytes,20,opt,name=cleanup_interval,json=cleanupInterval,proto3" json:"cleanup_interval,omitempty"` 705 // Optional configuration used to bind newly established upstream connections. 706 // This overrides any bind_config specified in the bootstrap proto. 707 // If the address and port are empty, no bind will be performed. 708 UpstreamBindConfig *core.BindConfig `protobuf:"bytes,21,opt,name=upstream_bind_config,json=upstreamBindConfig,proto3" json:"upstream_bind_config,omitempty"` 709 // Configuration for load balancing subsetting. 710 LbSubsetConfig *Cluster_LbSubsetConfig `protobuf:"bytes,22,opt,name=lb_subset_config,json=lbSubsetConfig,proto3" json:"lb_subset_config,omitempty"` 711 // Optional configuration for the load balancing algorithm selected by 712 // LbPolicy. Currently only 713 // :ref:`RING_HASH<envoy_api_enum_value_Cluster.LbPolicy.RING_HASH>` and 714 // :ref:`LEAST_REQUEST<envoy_api_enum_value_Cluster.LbPolicy.LEAST_REQUEST>` 715 // has additional configuration options. 716 // Specifying ring_hash_lb_config or least_request_lb_config without setting the corresponding 717 // LbPolicy will generate an error at runtime. 718 // 719 // Types that are assignable to LbConfig: 720 // *Cluster_RingHashLbConfig_ 721 // *Cluster_OriginalDstLbConfig_ 722 // *Cluster_LeastRequestLbConfig_ 723 LbConfig isCluster_LbConfig `protobuf_oneof:"lb_config"` 724 // Common configuration for all load balancer implementations. 725 CommonLbConfig *Cluster_CommonLbConfig `protobuf:"bytes,27,opt,name=common_lb_config,json=commonLbConfig,proto3" json:"common_lb_config,omitempty"` 726 // Optional custom transport socket implementation to use for upstream connections. 727 // To setup TLS, set a transport socket with name `tls` and 728 // :ref:`UpstreamTlsContexts <envoy_api_msg_auth.UpstreamTlsContext>` in the `typed_config`. 729 // If no transport socket configuration is specified, new connections 730 // will be set up with plaintext. 731 TransportSocket *core.TransportSocket `protobuf:"bytes,24,opt,name=transport_socket,json=transportSocket,proto3" json:"transport_socket,omitempty"` 732 // The Metadata field can be used to provide additional information about the 733 // cluster. It can be used for stats, logging, and varying filter behavior. 734 // Fields should use reverse DNS notation to denote which entity within Envoy 735 // will need the information. For instance, if the metadata is intended for 736 // the Router filter, the filter name should be specified as *envoy.filters.http.router*. 737 Metadata *core.Metadata `protobuf:"bytes,25,opt,name=metadata,proto3" json:"metadata,omitempty"` 738 // Determines how Envoy selects the protocol used to speak to upstream hosts. 739 ProtocolSelection Cluster_ClusterProtocolSelection `protobuf:"varint,26,opt,name=protocol_selection,json=protocolSelection,proto3,enum=envoy.api.v2.Cluster_ClusterProtocolSelection" json:"protocol_selection,omitempty"` 740 // Optional options for upstream connections. 741 UpstreamConnectionOptions *UpstreamConnectionOptions `protobuf:"bytes,30,opt,name=upstream_connection_options,json=upstreamConnectionOptions,proto3" json:"upstream_connection_options,omitempty"` 742 // If an upstream host becomes unhealthy (as determined by the configured health checks 743 // or outlier detection), immediately close all connections to the failed host. 744 // 745 // .. note:: 746 // 747 // This is currently only supported for connections created by tcp_proxy. 748 // 749 // .. note:: 750 // 751 // The current implementation of this feature closes all connections immediately when 752 // the unhealthy status is detected. If there are a large number of connections open 753 // to an upstream host that becomes unhealthy, Envoy may spend a substantial amount of 754 // time exclusively closing these connections, and not processing any other traffic. 755 CloseConnectionsOnHostHealthFailure bool `protobuf:"varint,31,opt,name=close_connections_on_host_health_failure,json=closeConnectionsOnHostHealthFailure,proto3" json:"close_connections_on_host_health_failure,omitempty"` 756 // If set to true, Envoy will ignore the health value of a host when processing its removal 757 // from service discovery. This means that if active health checking is used, Envoy will *not* 758 // wait for the endpoint to go unhealthy before removing it. 759 DrainConnectionsOnHostRemoval bool `protobuf:"varint,32,opt,name=drain_connections_on_host_removal,json=drainConnectionsOnHostRemoval,proto3" json:"drain_connections_on_host_removal,omitempty"` 760 // An (optional) network filter chain, listed in the order the filters should be applied. 761 // The chain will be applied to all outgoing connections that Envoy makes to the upstream 762 // servers of this cluster. 763 Filters []*cluster.Filter `protobuf:"bytes,40,rep,name=filters,proto3" json:"filters,omitempty"` 764 // [#not-implemented-hide:] New mechanism for LB policy configuration. Used only if the 765 // :ref:`lb_policy<envoy_api_field_Cluster.lb_policy>` field has the value 766 // :ref:`LOAD_BALANCING_POLICY_CONFIG<envoy_api_enum_value_Cluster.LbPolicy.LOAD_BALANCING_POLICY_CONFIG>`. 767 LoadBalancingPolicy *LoadBalancingPolicy `protobuf:"bytes,41,opt,name=load_balancing_policy,json=loadBalancingPolicy,proto3" json:"load_balancing_policy,omitempty"` 768 // [#not-implemented-hide:] 769 // If present, tells the client where to send load reports via LRS. If not present, the 770 // client will fall back to a client-side default, which may be either (a) don't send any 771 // load reports or (b) send load reports for all clusters to a single default server 772 // (which may be configured in the bootstrap file). 773 // 774 // Note that if multiple clusters point to the same LRS server, the client may choose to 775 // create a separate stream for each cluster or it may choose to coalesce the data for 776 // multiple clusters onto a single stream. Either way, the client must make sure to send 777 // the data for any given cluster on no more than one stream. 778 // 779 // [#next-major-version: In the v3 API, we should consider restructuring this somehow, 780 // maybe by allowing LRS to go on the ADS stream, or maybe by moving some of the negotiation 781 // from the LRS stream here.] 782 LrsServer *core.ConfigSource `protobuf:"bytes,42,opt,name=lrs_server,json=lrsServer,proto3" json:"lrs_server,omitempty"` 783 // If track_timeout_budgets is true, the :ref:`timeout budget histograms 784 // <config_cluster_manager_cluster_stats_timeout_budgets>` will be published for each 785 // request. These show what percentage of a request's per try and global timeout was used. A value 786 // of 0 would indicate that none of the timeout was used or that the timeout was infinite. A value 787 // of 100 would indicate that the request took the entirety of the timeout given to it. 788 TrackTimeoutBudgets bool `protobuf:"varint,47,opt,name=track_timeout_budgets,json=trackTimeoutBudgets,proto3" json:"track_timeout_budgets,omitempty"` 789 } 790 791 func (x *Cluster) Reset() { 792 *x = Cluster{} 793 if protoimpl.UnsafeEnabled { 794 mi := &file_envoy_api_v2_cluster_proto_msgTypes[0] 795 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 796 ms.StoreMessageInfo(mi) 797 } 798 } 799 800 func (x *Cluster) String() string { 801 return protoimpl.X.MessageStringOf(x) 802 } 803 804 func (*Cluster) ProtoMessage() {} 805 806 func (x *Cluster) ProtoReflect() protoreflect.Message { 807 mi := &file_envoy_api_v2_cluster_proto_msgTypes[0] 808 if protoimpl.UnsafeEnabled && x != nil { 809 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 810 if ms.LoadMessageInfo() == nil { 811 ms.StoreMessageInfo(mi) 812 } 813 return ms 814 } 815 return mi.MessageOf(x) 816 } 817 818 // Deprecated: Use Cluster.ProtoReflect.Descriptor instead. 819 func (*Cluster) Descriptor() ([]byte, []int) { 820 return file_envoy_api_v2_cluster_proto_rawDescGZIP(), []int{0} 821 } 822 823 func (x *Cluster) GetTransportSocketMatches() []*Cluster_TransportSocketMatch { 824 if x != nil { 825 return x.TransportSocketMatches 826 } 827 return nil 828 } 829 830 func (x *Cluster) GetName() string { 831 if x != nil { 832 return x.Name 833 } 834 return "" 835 } 836 837 func (x *Cluster) GetAltStatName() string { 838 if x != nil { 839 return x.AltStatName 840 } 841 return "" 842 } 843 844 func (m *Cluster) GetClusterDiscoveryType() isCluster_ClusterDiscoveryType { 845 if m != nil { 846 return m.ClusterDiscoveryType 847 } 848 return nil 849 } 850 851 func (x *Cluster) GetType() Cluster_DiscoveryType { 852 if x, ok := x.GetClusterDiscoveryType().(*Cluster_Type); ok { 853 return x.Type 854 } 855 return Cluster_STATIC 856 } 857 858 func (x *Cluster) GetClusterType() *Cluster_CustomClusterType { 859 if x, ok := x.GetClusterDiscoveryType().(*Cluster_ClusterType); ok { 860 return x.ClusterType 861 } 862 return nil 863 } 864 865 func (x *Cluster) GetEdsClusterConfig() *Cluster_EdsClusterConfig { 866 if x != nil { 867 return x.EdsClusterConfig 868 } 869 return nil 870 } 871 872 func (x *Cluster) GetConnectTimeout() *duration.Duration { 873 if x != nil { 874 return x.ConnectTimeout 875 } 876 return nil 877 } 878 879 func (x *Cluster) GetPerConnectionBufferLimitBytes() *wrappers.UInt32Value { 880 if x != nil { 881 return x.PerConnectionBufferLimitBytes 882 } 883 return nil 884 } 885 886 func (x *Cluster) GetLbPolicy() Cluster_LbPolicy { 887 if x != nil { 888 return x.LbPolicy 889 } 890 return Cluster_ROUND_ROBIN 891 } 892 893 // Deprecated: Do not use. 894 func (x *Cluster) GetHosts() []*core.Address { 895 if x != nil { 896 return x.Hosts 897 } 898 return nil 899 } 900 901 func (x *Cluster) GetLoadAssignment() *ClusterLoadAssignment { 902 if x != nil { 903 return x.LoadAssignment 904 } 905 return nil 906 } 907 908 func (x *Cluster) GetHealthChecks() []*core.HealthCheck { 909 if x != nil { 910 return x.HealthChecks 911 } 912 return nil 913 } 914 915 func (x *Cluster) GetMaxRequestsPerConnection() *wrappers.UInt32Value { 916 if x != nil { 917 return x.MaxRequestsPerConnection 918 } 919 return nil 920 } 921 922 func (x *Cluster) GetCircuitBreakers() *cluster.CircuitBreakers { 923 if x != nil { 924 return x.CircuitBreakers 925 } 926 return nil 927 } 928 929 // Deprecated: Do not use. 930 func (x *Cluster) GetTlsContext() *auth.UpstreamTlsContext { 931 if x != nil { 932 return x.TlsContext 933 } 934 return nil 935 } 936 937 func (x *Cluster) GetUpstreamHttpProtocolOptions() *core.UpstreamHttpProtocolOptions { 938 if x != nil { 939 return x.UpstreamHttpProtocolOptions 940 } 941 return nil 942 } 943 944 func (x *Cluster) GetCommonHttpProtocolOptions() *core.HttpProtocolOptions { 945 if x != nil { 946 return x.CommonHttpProtocolOptions 947 } 948 return nil 949 } 950 951 func (x *Cluster) GetHttpProtocolOptions() *core.Http1ProtocolOptions { 952 if x != nil { 953 return x.HttpProtocolOptions 954 } 955 return nil 956 } 957 958 func (x *Cluster) GetHttp2ProtocolOptions() *core.Http2ProtocolOptions { 959 if x != nil { 960 return x.Http2ProtocolOptions 961 } 962 return nil 963 } 964 965 // Deprecated: Do not use. 966 func (x *Cluster) GetExtensionProtocolOptions() map[string]*_struct.Struct { 967 if x != nil { 968 return x.ExtensionProtocolOptions 969 } 970 return nil 971 } 972 973 func (x *Cluster) GetTypedExtensionProtocolOptions() map[string]*any.Any { 974 if x != nil { 975 return x.TypedExtensionProtocolOptions 976 } 977 return nil 978 } 979 980 func (x *Cluster) GetDnsRefreshRate() *duration.Duration { 981 if x != nil { 982 return x.DnsRefreshRate 983 } 984 return nil 985 } 986 987 func (x *Cluster) GetDnsFailureRefreshRate() *Cluster_RefreshRate { 988 if x != nil { 989 return x.DnsFailureRefreshRate 990 } 991 return nil 992 } 993 994 func (x *Cluster) GetRespectDnsTtl() bool { 995 if x != nil { 996 return x.RespectDnsTtl 997 } 998 return false 999 } 1000 1001 func (x *Cluster) GetDnsLookupFamily() Cluster_DnsLookupFamily { 1002 if x != nil { 1003 return x.DnsLookupFamily 1004 } 1005 return Cluster_AUTO 1006 } 1007 1008 func (x *Cluster) GetDnsResolvers() []*core.Address { 1009 if x != nil { 1010 return x.DnsResolvers 1011 } 1012 return nil 1013 } 1014 1015 func (x *Cluster) GetUseTcpForDnsLookups() bool { 1016 if x != nil { 1017 return x.UseTcpForDnsLookups 1018 } 1019 return false 1020 } 1021 1022 func (x *Cluster) GetOutlierDetection() *cluster.OutlierDetection { 1023 if x != nil { 1024 return x.OutlierDetection 1025 } 1026 return nil 1027 } 1028 1029 func (x *Cluster) GetCleanupInterval() *duration.Duration { 1030 if x != nil { 1031 return x.CleanupInterval 1032 } 1033 return nil 1034 } 1035 1036 func (x *Cluster) GetUpstreamBindConfig() *core.BindConfig { 1037 if x != nil { 1038 return x.UpstreamBindConfig 1039 } 1040 return nil 1041 } 1042 1043 func (x *Cluster) GetLbSubsetConfig() *Cluster_LbSubsetConfig { 1044 if x != nil { 1045 return x.LbSubsetConfig 1046 } 1047 return nil 1048 } 1049 1050 func (m *Cluster) GetLbConfig() isCluster_LbConfig { 1051 if m != nil { 1052 return m.LbConfig 1053 } 1054 return nil 1055 } 1056 1057 func (x *Cluster) GetRingHashLbConfig() *Cluster_RingHashLbConfig { 1058 if x, ok := x.GetLbConfig().(*Cluster_RingHashLbConfig_); ok { 1059 return x.RingHashLbConfig 1060 } 1061 return nil 1062 } 1063 1064 func (x *Cluster) GetOriginalDstLbConfig() *Cluster_OriginalDstLbConfig { 1065 if x, ok := x.GetLbConfig().(*Cluster_OriginalDstLbConfig_); ok { 1066 return x.OriginalDstLbConfig 1067 } 1068 return nil 1069 } 1070 1071 func (x *Cluster) GetLeastRequestLbConfig() *Cluster_LeastRequestLbConfig { 1072 if x, ok := x.GetLbConfig().(*Cluster_LeastRequestLbConfig_); ok { 1073 return x.LeastRequestLbConfig 1074 } 1075 return nil 1076 } 1077 1078 func (x *Cluster) GetCommonLbConfig() *Cluster_CommonLbConfig { 1079 if x != nil { 1080 return x.CommonLbConfig 1081 } 1082 return nil 1083 } 1084 1085 func (x *Cluster) GetTransportSocket() *core.TransportSocket { 1086 if x != nil { 1087 return x.TransportSocket 1088 } 1089 return nil 1090 } 1091 1092 func (x *Cluster) GetMetadata() *core.Metadata { 1093 if x != nil { 1094 return x.Metadata 1095 } 1096 return nil 1097 } 1098 1099 func (x *Cluster) GetProtocolSelection() Cluster_ClusterProtocolSelection { 1100 if x != nil { 1101 return x.ProtocolSelection 1102 } 1103 return Cluster_USE_CONFIGURED_PROTOCOL 1104 } 1105 1106 func (x *Cluster) GetUpstreamConnectionOptions() *UpstreamConnectionOptions { 1107 if x != nil { 1108 return x.UpstreamConnectionOptions 1109 } 1110 return nil 1111 } 1112 1113 func (x *Cluster) GetCloseConnectionsOnHostHealthFailure() bool { 1114 if x != nil { 1115 return x.CloseConnectionsOnHostHealthFailure 1116 } 1117 return false 1118 } 1119 1120 func (x *Cluster) GetDrainConnectionsOnHostRemoval() bool { 1121 if x != nil { 1122 return x.DrainConnectionsOnHostRemoval 1123 } 1124 return false 1125 } 1126 1127 func (x *Cluster) GetFilters() []*cluster.Filter { 1128 if x != nil { 1129 return x.Filters 1130 } 1131 return nil 1132 } 1133 1134 func (x *Cluster) GetLoadBalancingPolicy() *LoadBalancingPolicy { 1135 if x != nil { 1136 return x.LoadBalancingPolicy 1137 } 1138 return nil 1139 } 1140 1141 func (x *Cluster) GetLrsServer() *core.ConfigSource { 1142 if x != nil { 1143 return x.LrsServer 1144 } 1145 return nil 1146 } 1147 1148 func (x *Cluster) GetTrackTimeoutBudgets() bool { 1149 if x != nil { 1150 return x.TrackTimeoutBudgets 1151 } 1152 return false 1153 } 1154 1155 type isCluster_ClusterDiscoveryType interface { 1156 isCluster_ClusterDiscoveryType() 1157 } 1158 1159 type Cluster_Type struct { 1160 // The :ref:`service discovery type <arch_overview_service_discovery_types>` 1161 // to use for resolving the cluster. 1162 Type Cluster_DiscoveryType `protobuf:"varint,2,opt,name=type,proto3,enum=envoy.api.v2.Cluster_DiscoveryType,oneof"` 1163 } 1164 1165 type Cluster_ClusterType struct { 1166 // The custom cluster type. 1167 ClusterType *Cluster_CustomClusterType `protobuf:"bytes,38,opt,name=cluster_type,json=clusterType,proto3,oneof"` 1168 } 1169 1170 func (*Cluster_Type) isCluster_ClusterDiscoveryType() {} 1171 1172 func (*Cluster_ClusterType) isCluster_ClusterDiscoveryType() {} 1173 1174 type isCluster_LbConfig interface { 1175 isCluster_LbConfig() 1176 } 1177 1178 type Cluster_RingHashLbConfig_ struct { 1179 // Optional configuration for the Ring Hash load balancing policy. 1180 RingHashLbConfig *Cluster_RingHashLbConfig `protobuf:"bytes,23,opt,name=ring_hash_lb_config,json=ringHashLbConfig,proto3,oneof"` 1181 } 1182 1183 type Cluster_OriginalDstLbConfig_ struct { 1184 // Optional configuration for the Original Destination load balancing policy. 1185 OriginalDstLbConfig *Cluster_OriginalDstLbConfig `protobuf:"bytes,34,opt,name=original_dst_lb_config,json=originalDstLbConfig,proto3,oneof"` 1186 } 1187 1188 type Cluster_LeastRequestLbConfig_ struct { 1189 // Optional configuration for the LeastRequest load balancing policy. 1190 LeastRequestLbConfig *Cluster_LeastRequestLbConfig `protobuf:"bytes,37,opt,name=least_request_lb_config,json=leastRequestLbConfig,proto3,oneof"` 1191 } 1192 1193 func (*Cluster_RingHashLbConfig_) isCluster_LbConfig() {} 1194 1195 func (*Cluster_OriginalDstLbConfig_) isCluster_LbConfig() {} 1196 1197 func (*Cluster_LeastRequestLbConfig_) isCluster_LbConfig() {} 1198 1199 // [#not-implemented-hide:] Extensible load balancing policy configuration. 1200 // 1201 // Every LB policy defined via this mechanism will be identified via a unique name using reverse 1202 // DNS notation. If the policy needs configuration parameters, it must define a message for its 1203 // own configuration, which will be stored in the config field. The name of the policy will tell 1204 // clients which type of message they should expect to see in the config field. 1205 // 1206 // Note that there are cases where it is useful to be able to independently select LB policies 1207 // for choosing a locality and for choosing an endpoint within that locality. For example, a 1208 // given deployment may always use the same policy to choose the locality, but for choosing the 1209 // endpoint within the locality, some clusters may use weighted-round-robin, while others may 1210 // use some sort of session-based balancing. 1211 // 1212 // This can be accomplished via hierarchical LB policies, where the parent LB policy creates a 1213 // child LB policy for each locality. For each request, the parent chooses the locality and then 1214 // delegates to the child policy for that locality to choose the endpoint within the locality. 1215 // 1216 // To facilitate this, the config message for the top-level LB policy may include a field of 1217 // type LoadBalancingPolicy that specifies the child policy. 1218 type LoadBalancingPolicy struct { 1219 state protoimpl.MessageState 1220 sizeCache protoimpl.SizeCache 1221 unknownFields protoimpl.UnknownFields 1222 1223 // Each client will iterate over the list in order and stop at the first policy that it 1224 // supports. This provides a mechanism for starting to use new LB policies that are not yet 1225 // supported by all clients. 1226 Policies []*LoadBalancingPolicy_Policy `protobuf:"bytes,1,rep,name=policies,proto3" json:"policies,omitempty"` 1227 } 1228 1229 func (x *LoadBalancingPolicy) Reset() { 1230 *x = LoadBalancingPolicy{} 1231 if protoimpl.UnsafeEnabled { 1232 mi := &file_envoy_api_v2_cluster_proto_msgTypes[1] 1233 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1234 ms.StoreMessageInfo(mi) 1235 } 1236 } 1237 1238 func (x *LoadBalancingPolicy) String() string { 1239 return protoimpl.X.MessageStringOf(x) 1240 } 1241 1242 func (*LoadBalancingPolicy) ProtoMessage() {} 1243 1244 func (x *LoadBalancingPolicy) ProtoReflect() protoreflect.Message { 1245 mi := &file_envoy_api_v2_cluster_proto_msgTypes[1] 1246 if protoimpl.UnsafeEnabled && x != nil { 1247 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1248 if ms.LoadMessageInfo() == nil { 1249 ms.StoreMessageInfo(mi) 1250 } 1251 return ms 1252 } 1253 return mi.MessageOf(x) 1254 } 1255 1256 // Deprecated: Use LoadBalancingPolicy.ProtoReflect.Descriptor instead. 1257 func (*LoadBalancingPolicy) Descriptor() ([]byte, []int) { 1258 return file_envoy_api_v2_cluster_proto_rawDescGZIP(), []int{1} 1259 } 1260 1261 func (x *LoadBalancingPolicy) GetPolicies() []*LoadBalancingPolicy_Policy { 1262 if x != nil { 1263 return x.Policies 1264 } 1265 return nil 1266 } 1267 1268 // An extensible structure containing the address Envoy should bind to when 1269 // establishing upstream connections. 1270 type UpstreamBindConfig struct { 1271 state protoimpl.MessageState 1272 sizeCache protoimpl.SizeCache 1273 unknownFields protoimpl.UnknownFields 1274 1275 // The address Envoy should bind to when establishing upstream connections. 1276 SourceAddress *core.Address `protobuf:"bytes,1,opt,name=source_address,json=sourceAddress,proto3" json:"source_address,omitempty"` 1277 } 1278 1279 func (x *UpstreamBindConfig) Reset() { 1280 *x = UpstreamBindConfig{} 1281 if protoimpl.UnsafeEnabled { 1282 mi := &file_envoy_api_v2_cluster_proto_msgTypes[2] 1283 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1284 ms.StoreMessageInfo(mi) 1285 } 1286 } 1287 1288 func (x *UpstreamBindConfig) String() string { 1289 return protoimpl.X.MessageStringOf(x) 1290 } 1291 1292 func (*UpstreamBindConfig) ProtoMessage() {} 1293 1294 func (x *UpstreamBindConfig) ProtoReflect() protoreflect.Message { 1295 mi := &file_envoy_api_v2_cluster_proto_msgTypes[2] 1296 if protoimpl.UnsafeEnabled && x != nil { 1297 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1298 if ms.LoadMessageInfo() == nil { 1299 ms.StoreMessageInfo(mi) 1300 } 1301 return ms 1302 } 1303 return mi.MessageOf(x) 1304 } 1305 1306 // Deprecated: Use UpstreamBindConfig.ProtoReflect.Descriptor instead. 1307 func (*UpstreamBindConfig) Descriptor() ([]byte, []int) { 1308 return file_envoy_api_v2_cluster_proto_rawDescGZIP(), []int{2} 1309 } 1310 1311 func (x *UpstreamBindConfig) GetSourceAddress() *core.Address { 1312 if x != nil { 1313 return x.SourceAddress 1314 } 1315 return nil 1316 } 1317 1318 type UpstreamConnectionOptions struct { 1319 state protoimpl.MessageState 1320 sizeCache protoimpl.SizeCache 1321 unknownFields protoimpl.UnknownFields 1322 1323 // If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives. 1324 TcpKeepalive *core.TcpKeepalive `protobuf:"bytes,1,opt,name=tcp_keepalive,json=tcpKeepalive,proto3" json:"tcp_keepalive,omitempty"` 1325 } 1326 1327 func (x *UpstreamConnectionOptions) Reset() { 1328 *x = UpstreamConnectionOptions{} 1329 if protoimpl.UnsafeEnabled { 1330 mi := &file_envoy_api_v2_cluster_proto_msgTypes[3] 1331 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1332 ms.StoreMessageInfo(mi) 1333 } 1334 } 1335 1336 func (x *UpstreamConnectionOptions) String() string { 1337 return protoimpl.X.MessageStringOf(x) 1338 } 1339 1340 func (*UpstreamConnectionOptions) ProtoMessage() {} 1341 1342 func (x *UpstreamConnectionOptions) ProtoReflect() protoreflect.Message { 1343 mi := &file_envoy_api_v2_cluster_proto_msgTypes[3] 1344 if protoimpl.UnsafeEnabled && x != nil { 1345 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1346 if ms.LoadMessageInfo() == nil { 1347 ms.StoreMessageInfo(mi) 1348 } 1349 return ms 1350 } 1351 return mi.MessageOf(x) 1352 } 1353 1354 // Deprecated: Use UpstreamConnectionOptions.ProtoReflect.Descriptor instead. 1355 func (*UpstreamConnectionOptions) Descriptor() ([]byte, []int) { 1356 return file_envoy_api_v2_cluster_proto_rawDescGZIP(), []int{3} 1357 } 1358 1359 func (x *UpstreamConnectionOptions) GetTcpKeepalive() *core.TcpKeepalive { 1360 if x != nil { 1361 return x.TcpKeepalive 1362 } 1363 return nil 1364 } 1365 1366 // TransportSocketMatch specifies what transport socket config will be used 1367 // when the match conditions are satisfied. 1368 type Cluster_TransportSocketMatch struct { 1369 state protoimpl.MessageState 1370 sizeCache protoimpl.SizeCache 1371 unknownFields protoimpl.UnknownFields 1372 1373 // The name of the match, used in stats generation. 1374 Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` 1375 // Optional endpoint metadata match criteria. 1376 // The connection to the endpoint with metadata matching what is set in this field 1377 // will use the transport socket configuration specified here. 1378 // The endpoint's metadata entry in *envoy.transport_socket_match* is used to match 1379 // against the values specified in this field. 1380 Match *_struct.Struct `protobuf:"bytes,2,opt,name=match,proto3" json:"match,omitempty"` 1381 // The configuration of the transport socket. 1382 TransportSocket *core.TransportSocket `protobuf:"bytes,3,opt,name=transport_socket,json=transportSocket,proto3" json:"transport_socket,omitempty"` 1383 } 1384 1385 func (x *Cluster_TransportSocketMatch) Reset() { 1386 *x = Cluster_TransportSocketMatch{} 1387 if protoimpl.UnsafeEnabled { 1388 mi := &file_envoy_api_v2_cluster_proto_msgTypes[4] 1389 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1390 ms.StoreMessageInfo(mi) 1391 } 1392 } 1393 1394 func (x *Cluster_TransportSocketMatch) String() string { 1395 return protoimpl.X.MessageStringOf(x) 1396 } 1397 1398 func (*Cluster_TransportSocketMatch) ProtoMessage() {} 1399 1400 func (x *Cluster_TransportSocketMatch) ProtoReflect() protoreflect.Message { 1401 mi := &file_envoy_api_v2_cluster_proto_msgTypes[4] 1402 if protoimpl.UnsafeEnabled && x != nil { 1403 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1404 if ms.LoadMessageInfo() == nil { 1405 ms.StoreMessageInfo(mi) 1406 } 1407 return ms 1408 } 1409 return mi.MessageOf(x) 1410 } 1411 1412 // Deprecated: Use Cluster_TransportSocketMatch.ProtoReflect.Descriptor instead. 1413 func (*Cluster_TransportSocketMatch) Descriptor() ([]byte, []int) { 1414 return file_envoy_api_v2_cluster_proto_rawDescGZIP(), []int{0, 0} 1415 } 1416 1417 func (x *Cluster_TransportSocketMatch) GetName() string { 1418 if x != nil { 1419 return x.Name 1420 } 1421 return "" 1422 } 1423 1424 func (x *Cluster_TransportSocketMatch) GetMatch() *_struct.Struct { 1425 if x != nil { 1426 return x.Match 1427 } 1428 return nil 1429 } 1430 1431 func (x *Cluster_TransportSocketMatch) GetTransportSocket() *core.TransportSocket { 1432 if x != nil { 1433 return x.TransportSocket 1434 } 1435 return nil 1436 } 1437 1438 // Extended cluster type. 1439 type Cluster_CustomClusterType struct { 1440 state protoimpl.MessageState 1441 sizeCache protoimpl.SizeCache 1442 unknownFields protoimpl.UnknownFields 1443 1444 // The type of the cluster to instantiate. The name must match a supported cluster type. 1445 Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` 1446 // Cluster specific configuration which depends on the cluster being instantiated. 1447 // See the supported cluster for further documentation. 1448 TypedConfig *any.Any `protobuf:"bytes,2,opt,name=typed_config,json=typedConfig,proto3" json:"typed_config,omitempty"` 1449 } 1450 1451 func (x *Cluster_CustomClusterType) Reset() { 1452 *x = Cluster_CustomClusterType{} 1453 if protoimpl.UnsafeEnabled { 1454 mi := &file_envoy_api_v2_cluster_proto_msgTypes[5] 1455 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1456 ms.StoreMessageInfo(mi) 1457 } 1458 } 1459 1460 func (x *Cluster_CustomClusterType) String() string { 1461 return protoimpl.X.MessageStringOf(x) 1462 } 1463 1464 func (*Cluster_CustomClusterType) ProtoMessage() {} 1465 1466 func (x *Cluster_CustomClusterType) ProtoReflect() protoreflect.Message { 1467 mi := &file_envoy_api_v2_cluster_proto_msgTypes[5] 1468 if protoimpl.UnsafeEnabled && x != nil { 1469 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1470 if ms.LoadMessageInfo() == nil { 1471 ms.StoreMessageInfo(mi) 1472 } 1473 return ms 1474 } 1475 return mi.MessageOf(x) 1476 } 1477 1478 // Deprecated: Use Cluster_CustomClusterType.ProtoReflect.Descriptor instead. 1479 func (*Cluster_CustomClusterType) Descriptor() ([]byte, []int) { 1480 return file_envoy_api_v2_cluster_proto_rawDescGZIP(), []int{0, 1} 1481 } 1482 1483 func (x *Cluster_CustomClusterType) GetName() string { 1484 if x != nil { 1485 return x.Name 1486 } 1487 return "" 1488 } 1489 1490 func (x *Cluster_CustomClusterType) GetTypedConfig() *any.Any { 1491 if x != nil { 1492 return x.TypedConfig 1493 } 1494 return nil 1495 } 1496 1497 // Only valid when discovery type is EDS. 1498 type Cluster_EdsClusterConfig struct { 1499 state protoimpl.MessageState 1500 sizeCache protoimpl.SizeCache 1501 unknownFields protoimpl.UnknownFields 1502 1503 // Configuration for the source of EDS updates for this Cluster. 1504 EdsConfig *core.ConfigSource `protobuf:"bytes,1,opt,name=eds_config,json=edsConfig,proto3" json:"eds_config,omitempty"` 1505 // Optional alternative to cluster name to present to EDS. This does not 1506 // have the same restrictions as cluster name, i.e. it may be arbitrary 1507 // length. 1508 ServiceName string `protobuf:"bytes,2,opt,name=service_name,json=serviceName,proto3" json:"service_name,omitempty"` 1509 } 1510 1511 func (x *Cluster_EdsClusterConfig) Reset() { 1512 *x = Cluster_EdsClusterConfig{} 1513 if protoimpl.UnsafeEnabled { 1514 mi := &file_envoy_api_v2_cluster_proto_msgTypes[6] 1515 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1516 ms.StoreMessageInfo(mi) 1517 } 1518 } 1519 1520 func (x *Cluster_EdsClusterConfig) String() string { 1521 return protoimpl.X.MessageStringOf(x) 1522 } 1523 1524 func (*Cluster_EdsClusterConfig) ProtoMessage() {} 1525 1526 func (x *Cluster_EdsClusterConfig) ProtoReflect() protoreflect.Message { 1527 mi := &file_envoy_api_v2_cluster_proto_msgTypes[6] 1528 if protoimpl.UnsafeEnabled && x != nil { 1529 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1530 if ms.LoadMessageInfo() == nil { 1531 ms.StoreMessageInfo(mi) 1532 } 1533 return ms 1534 } 1535 return mi.MessageOf(x) 1536 } 1537 1538 // Deprecated: Use Cluster_EdsClusterConfig.ProtoReflect.Descriptor instead. 1539 func (*Cluster_EdsClusterConfig) Descriptor() ([]byte, []int) { 1540 return file_envoy_api_v2_cluster_proto_rawDescGZIP(), []int{0, 2} 1541 } 1542 1543 func (x *Cluster_EdsClusterConfig) GetEdsConfig() *core.ConfigSource { 1544 if x != nil { 1545 return x.EdsConfig 1546 } 1547 return nil 1548 } 1549 1550 func (x *Cluster_EdsClusterConfig) GetServiceName() string { 1551 if x != nil { 1552 return x.ServiceName 1553 } 1554 return "" 1555 } 1556 1557 // Optionally divide the endpoints in this cluster into subsets defined by 1558 // endpoint metadata and selected by route and weighted cluster metadata. 1559 // [#next-free-field: 8] 1560 type Cluster_LbSubsetConfig struct { 1561 state protoimpl.MessageState 1562 sizeCache protoimpl.SizeCache 1563 unknownFields protoimpl.UnknownFields 1564 1565 // The behavior used when no endpoint subset matches the selected route's 1566 // metadata. The value defaults to 1567 // :ref:`NO_FALLBACK<envoy_api_enum_value_Cluster.LbSubsetConfig.LbSubsetFallbackPolicy.NO_FALLBACK>`. 1568 FallbackPolicy Cluster_LbSubsetConfig_LbSubsetFallbackPolicy `protobuf:"varint,1,opt,name=fallback_policy,json=fallbackPolicy,proto3,enum=envoy.api.v2.Cluster_LbSubsetConfig_LbSubsetFallbackPolicy" json:"fallback_policy,omitempty"` 1569 // Specifies the default subset of endpoints used during fallback if 1570 // fallback_policy is 1571 // :ref:`DEFAULT_SUBSET<envoy_api_enum_value_Cluster.LbSubsetConfig.LbSubsetFallbackPolicy.DEFAULT_SUBSET>`. 1572 // Each field in default_subset is 1573 // compared to the matching LbEndpoint.Metadata under the *envoy.lb* 1574 // namespace. It is valid for no hosts to match, in which case the behavior 1575 // is the same as a fallback_policy of 1576 // :ref:`NO_FALLBACK<envoy_api_enum_value_Cluster.LbSubsetConfig.LbSubsetFallbackPolicy.NO_FALLBACK>`. 1577 DefaultSubset *_struct.Struct `protobuf:"bytes,2,opt,name=default_subset,json=defaultSubset,proto3" json:"default_subset,omitempty"` 1578 // For each entry, LbEndpoint.Metadata's 1579 // *envoy.lb* namespace is traversed and a subset is created for each unique 1580 // combination of key and value. For example: 1581 // 1582 // .. code-block:: json 1583 // 1584 // { "subset_selectors": [ 1585 // { "keys": [ "version" ] }, 1586 // { "keys": [ "stage", "hardware_type" ] } 1587 // ]} 1588 // 1589 // A subset is matched when the metadata from the selected route and 1590 // weighted cluster contains the same keys and values as the subset's 1591 // metadata. The same host may appear in multiple subsets. 1592 SubsetSelectors []*Cluster_LbSubsetConfig_LbSubsetSelector `protobuf:"bytes,3,rep,name=subset_selectors,json=subsetSelectors,proto3" json:"subset_selectors,omitempty"` 1593 // If true, routing to subsets will take into account the localities and locality weights of the 1594 // endpoints when making the routing decision. 1595 // 1596 // There are some potential pitfalls associated with enabling this feature, as the resulting 1597 // traffic split after applying both a subset match and locality weights might be undesirable. 1598 // 1599 // Consider for example a situation in which you have 50/50 split across two localities X/Y 1600 // which have 100 hosts each without subsetting. If the subset LB results in X having only 1 1601 // host selected but Y having 100, then a lot more load is being dumped on the single host in X 1602 // than originally anticipated in the load balancing assignment delivered via EDS. 1603 LocalityWeightAware bool `protobuf:"varint,4,opt,name=locality_weight_aware,json=localityWeightAware,proto3" json:"locality_weight_aware,omitempty"` 1604 // When used with locality_weight_aware, scales the weight of each locality by the ratio 1605 // of hosts in the subset vs hosts in the original subset. This aims to even out the load 1606 // going to an individual locality if said locality is disproportionately affected by the 1607 // subset predicate. 1608 ScaleLocalityWeight bool `protobuf:"varint,5,opt,name=scale_locality_weight,json=scaleLocalityWeight,proto3" json:"scale_locality_weight,omitempty"` 1609 // If true, when a fallback policy is configured and its corresponding subset fails to find 1610 // a host this will cause any host to be selected instead. 1611 // 1612 // This is useful when using the default subset as the fallback policy, given the default 1613 // subset might become empty. With this option enabled, if that happens the LB will attempt 1614 // to select a host from the entire cluster. 1615 PanicModeAny bool `protobuf:"varint,6,opt,name=panic_mode_any,json=panicModeAny,proto3" json:"panic_mode_any,omitempty"` 1616 // If true, metadata specified for a metadata key will be matched against the corresponding 1617 // endpoint metadata if the endpoint metadata matches the value exactly OR it is a list value 1618 // and any of the elements in the list matches the criteria. 1619 ListAsAny bool `protobuf:"varint,7,opt,name=list_as_any,json=listAsAny,proto3" json:"list_as_any,omitempty"` 1620 } 1621 1622 func (x *Cluster_LbSubsetConfig) Reset() { 1623 *x = Cluster_LbSubsetConfig{} 1624 if protoimpl.UnsafeEnabled { 1625 mi := &file_envoy_api_v2_cluster_proto_msgTypes[7] 1626 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1627 ms.StoreMessageInfo(mi) 1628 } 1629 } 1630 1631 func (x *Cluster_LbSubsetConfig) String() string { 1632 return protoimpl.X.MessageStringOf(x) 1633 } 1634 1635 func (*Cluster_LbSubsetConfig) ProtoMessage() {} 1636 1637 func (x *Cluster_LbSubsetConfig) ProtoReflect() protoreflect.Message { 1638 mi := &file_envoy_api_v2_cluster_proto_msgTypes[7] 1639 if protoimpl.UnsafeEnabled && x != nil { 1640 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1641 if ms.LoadMessageInfo() == nil { 1642 ms.StoreMessageInfo(mi) 1643 } 1644 return ms 1645 } 1646 return mi.MessageOf(x) 1647 } 1648 1649 // Deprecated: Use Cluster_LbSubsetConfig.ProtoReflect.Descriptor instead. 1650 func (*Cluster_LbSubsetConfig) Descriptor() ([]byte, []int) { 1651 return file_envoy_api_v2_cluster_proto_rawDescGZIP(), []int{0, 3} 1652 } 1653 1654 func (x *Cluster_LbSubsetConfig) GetFallbackPolicy() Cluster_LbSubsetConfig_LbSubsetFallbackPolicy { 1655 if x != nil { 1656 return x.FallbackPolicy 1657 } 1658 return Cluster_LbSubsetConfig_NO_FALLBACK 1659 } 1660 1661 func (x *Cluster_LbSubsetConfig) GetDefaultSubset() *_struct.Struct { 1662 if x != nil { 1663 return x.DefaultSubset 1664 } 1665 return nil 1666 } 1667 1668 func (x *Cluster_LbSubsetConfig) GetSubsetSelectors() []*Cluster_LbSubsetConfig_LbSubsetSelector { 1669 if x != nil { 1670 return x.SubsetSelectors 1671 } 1672 return nil 1673 } 1674 1675 func (x *Cluster_LbSubsetConfig) GetLocalityWeightAware() bool { 1676 if x != nil { 1677 return x.LocalityWeightAware 1678 } 1679 return false 1680 } 1681 1682 func (x *Cluster_LbSubsetConfig) GetScaleLocalityWeight() bool { 1683 if x != nil { 1684 return x.ScaleLocalityWeight 1685 } 1686 return false 1687 } 1688 1689 func (x *Cluster_LbSubsetConfig) GetPanicModeAny() bool { 1690 if x != nil { 1691 return x.PanicModeAny 1692 } 1693 return false 1694 } 1695 1696 func (x *Cluster_LbSubsetConfig) GetListAsAny() bool { 1697 if x != nil { 1698 return x.ListAsAny 1699 } 1700 return false 1701 } 1702 1703 // Specific configuration for the LeastRequest load balancing policy. 1704 type Cluster_LeastRequestLbConfig struct { 1705 state protoimpl.MessageState 1706 sizeCache protoimpl.SizeCache 1707 unknownFields protoimpl.UnknownFields 1708 1709 // The number of random healthy hosts from which the host with the fewest active requests will 1710 // be chosen. Defaults to 2 so that we perform two-choice selection if the field is not set. 1711 ChoiceCount *wrappers.UInt32Value `protobuf:"bytes,1,opt,name=choice_count,json=choiceCount,proto3" json:"choice_count,omitempty"` 1712 } 1713 1714 func (x *Cluster_LeastRequestLbConfig) Reset() { 1715 *x = Cluster_LeastRequestLbConfig{} 1716 if protoimpl.UnsafeEnabled { 1717 mi := &file_envoy_api_v2_cluster_proto_msgTypes[8] 1718 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1719 ms.StoreMessageInfo(mi) 1720 } 1721 } 1722 1723 func (x *Cluster_LeastRequestLbConfig) String() string { 1724 return protoimpl.X.MessageStringOf(x) 1725 } 1726 1727 func (*Cluster_LeastRequestLbConfig) ProtoMessage() {} 1728 1729 func (x *Cluster_LeastRequestLbConfig) ProtoReflect() protoreflect.Message { 1730 mi := &file_envoy_api_v2_cluster_proto_msgTypes[8] 1731 if protoimpl.UnsafeEnabled && x != nil { 1732 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1733 if ms.LoadMessageInfo() == nil { 1734 ms.StoreMessageInfo(mi) 1735 } 1736 return ms 1737 } 1738 return mi.MessageOf(x) 1739 } 1740 1741 // Deprecated: Use Cluster_LeastRequestLbConfig.ProtoReflect.Descriptor instead. 1742 func (*Cluster_LeastRequestLbConfig) Descriptor() ([]byte, []int) { 1743 return file_envoy_api_v2_cluster_proto_rawDescGZIP(), []int{0, 4} 1744 } 1745 1746 func (x *Cluster_LeastRequestLbConfig) GetChoiceCount() *wrappers.UInt32Value { 1747 if x != nil { 1748 return x.ChoiceCount 1749 } 1750 return nil 1751 } 1752 1753 // Specific configuration for the :ref:`RingHash<arch_overview_load_balancing_types_ring_hash>` 1754 // load balancing policy. 1755 type Cluster_RingHashLbConfig struct { 1756 state protoimpl.MessageState 1757 sizeCache protoimpl.SizeCache 1758 unknownFields protoimpl.UnknownFields 1759 1760 // Minimum hash ring size. The larger the ring is (that is, the more hashes there are for each 1761 // provided host) the better the request distribution will reflect the desired weights. Defaults 1762 // to 1024 entries, and limited to 8M entries. See also 1763 // :ref:`maximum_ring_size<envoy_api_field_Cluster.RingHashLbConfig.maximum_ring_size>`. 1764 MinimumRingSize *wrappers.UInt64Value `protobuf:"bytes,1,opt,name=minimum_ring_size,json=minimumRingSize,proto3" json:"minimum_ring_size,omitempty"` 1765 // The hash function used to hash hosts onto the ketama ring. The value defaults to 1766 // :ref:`XX_HASH<envoy_api_enum_value_Cluster.RingHashLbConfig.HashFunction.XX_HASH>`. 1767 HashFunction Cluster_RingHashLbConfig_HashFunction `protobuf:"varint,3,opt,name=hash_function,json=hashFunction,proto3,enum=envoy.api.v2.Cluster_RingHashLbConfig_HashFunction" json:"hash_function,omitempty"` 1768 // Maximum hash ring size. Defaults to 8M entries, and limited to 8M entries, but can be lowered 1769 // to further constrain resource use. See also 1770 // :ref:`minimum_ring_size<envoy_api_field_Cluster.RingHashLbConfig.minimum_ring_size>`. 1771 MaximumRingSize *wrappers.UInt64Value `protobuf:"bytes,4,opt,name=maximum_ring_size,json=maximumRingSize,proto3" json:"maximum_ring_size,omitempty"` 1772 } 1773 1774 func (x *Cluster_RingHashLbConfig) Reset() { 1775 *x = Cluster_RingHashLbConfig{} 1776 if protoimpl.UnsafeEnabled { 1777 mi := &file_envoy_api_v2_cluster_proto_msgTypes[9] 1778 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1779 ms.StoreMessageInfo(mi) 1780 } 1781 } 1782 1783 func (x *Cluster_RingHashLbConfig) String() string { 1784 return protoimpl.X.MessageStringOf(x) 1785 } 1786 1787 func (*Cluster_RingHashLbConfig) ProtoMessage() {} 1788 1789 func (x *Cluster_RingHashLbConfig) ProtoReflect() protoreflect.Message { 1790 mi := &file_envoy_api_v2_cluster_proto_msgTypes[9] 1791 if protoimpl.UnsafeEnabled && x != nil { 1792 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1793 if ms.LoadMessageInfo() == nil { 1794 ms.StoreMessageInfo(mi) 1795 } 1796 return ms 1797 } 1798 return mi.MessageOf(x) 1799 } 1800 1801 // Deprecated: Use Cluster_RingHashLbConfig.ProtoReflect.Descriptor instead. 1802 func (*Cluster_RingHashLbConfig) Descriptor() ([]byte, []int) { 1803 return file_envoy_api_v2_cluster_proto_rawDescGZIP(), []int{0, 5} 1804 } 1805 1806 func (x *Cluster_RingHashLbConfig) GetMinimumRingSize() *wrappers.UInt64Value { 1807 if x != nil { 1808 return x.MinimumRingSize 1809 } 1810 return nil 1811 } 1812 1813 func (x *Cluster_RingHashLbConfig) GetHashFunction() Cluster_RingHashLbConfig_HashFunction { 1814 if x != nil { 1815 return x.HashFunction 1816 } 1817 return Cluster_RingHashLbConfig_XX_HASH 1818 } 1819 1820 func (x *Cluster_RingHashLbConfig) GetMaximumRingSize() *wrappers.UInt64Value { 1821 if x != nil { 1822 return x.MaximumRingSize 1823 } 1824 return nil 1825 } 1826 1827 // Specific configuration for the 1828 // :ref:`Original Destination <arch_overview_load_balancing_types_original_destination>` 1829 // load balancing policy. 1830 type Cluster_OriginalDstLbConfig struct { 1831 state protoimpl.MessageState 1832 sizeCache protoimpl.SizeCache 1833 unknownFields protoimpl.UnknownFields 1834 1835 // When true, :ref:`x-envoy-original-dst-host 1836 // <config_http_conn_man_headers_x-envoy-original-dst-host>` can be used to override destination 1837 // address. 1838 // 1839 // .. attention:: 1840 // 1841 // This header isn't sanitized by default, so enabling this feature allows HTTP clients to 1842 // route traffic to arbitrary hosts and/or ports, which may have serious security 1843 // consequences. 1844 // 1845 // .. note:: 1846 // 1847 // If the header appears multiple times only the first value is used. 1848 UseHttpHeader bool `protobuf:"varint,1,opt,name=use_http_header,json=useHttpHeader,proto3" json:"use_http_header,omitempty"` 1849 } 1850 1851 func (x *Cluster_OriginalDstLbConfig) Reset() { 1852 *x = Cluster_OriginalDstLbConfig{} 1853 if protoimpl.UnsafeEnabled { 1854 mi := &file_envoy_api_v2_cluster_proto_msgTypes[10] 1855 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1856 ms.StoreMessageInfo(mi) 1857 } 1858 } 1859 1860 func (x *Cluster_OriginalDstLbConfig) String() string { 1861 return protoimpl.X.MessageStringOf(x) 1862 } 1863 1864 func (*Cluster_OriginalDstLbConfig) ProtoMessage() {} 1865 1866 func (x *Cluster_OriginalDstLbConfig) ProtoReflect() protoreflect.Message { 1867 mi := &file_envoy_api_v2_cluster_proto_msgTypes[10] 1868 if protoimpl.UnsafeEnabled && x != nil { 1869 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1870 if ms.LoadMessageInfo() == nil { 1871 ms.StoreMessageInfo(mi) 1872 } 1873 return ms 1874 } 1875 return mi.MessageOf(x) 1876 } 1877 1878 // Deprecated: Use Cluster_OriginalDstLbConfig.ProtoReflect.Descriptor instead. 1879 func (*Cluster_OriginalDstLbConfig) Descriptor() ([]byte, []int) { 1880 return file_envoy_api_v2_cluster_proto_rawDescGZIP(), []int{0, 6} 1881 } 1882 1883 func (x *Cluster_OriginalDstLbConfig) GetUseHttpHeader() bool { 1884 if x != nil { 1885 return x.UseHttpHeader 1886 } 1887 return false 1888 } 1889 1890 // Common configuration for all load balancer implementations. 1891 // [#next-free-field: 8] 1892 type Cluster_CommonLbConfig struct { 1893 state protoimpl.MessageState 1894 sizeCache protoimpl.SizeCache 1895 unknownFields protoimpl.UnknownFields 1896 1897 // Configures the :ref:`healthy panic threshold <arch_overview_load_balancing_panic_threshold>`. 1898 // If not specified, the default is 50%. 1899 // To disable panic mode, set to 0%. 1900 // 1901 // .. note:: 1902 // The specified percent will be truncated to the nearest 1%. 1903 HealthyPanicThreshold *_type.Percent `protobuf:"bytes,1,opt,name=healthy_panic_threshold,json=healthyPanicThreshold,proto3" json:"healthy_panic_threshold,omitempty"` 1904 // Types that are assignable to LocalityConfigSpecifier: 1905 // *Cluster_CommonLbConfig_ZoneAwareLbConfig_ 1906 // *Cluster_CommonLbConfig_LocalityWeightedLbConfig_ 1907 LocalityConfigSpecifier isCluster_CommonLbConfig_LocalityConfigSpecifier `protobuf_oneof:"locality_config_specifier"` 1908 // If set, all health check/weight/metadata updates that happen within this duration will be 1909 // merged and delivered in one shot when the duration expires. The start of the duration is when 1910 // the first update happens. This is useful for big clusters, with potentially noisy deploys 1911 // that might trigger excessive CPU usage due to a constant stream of healthcheck state changes 1912 // or metadata updates. The first set of updates to be seen apply immediately (e.g.: a new 1913 // cluster). Please always keep in mind that the use of sandbox technologies may change this 1914 // behavior. 1915 // 1916 // If this is not set, we default to a merge window of 1000ms. To disable it, set the merge 1917 // window to 0. 1918 // 1919 // Note: merging does not apply to cluster membership changes (e.g.: adds/removes); this is 1920 // because merging those updates isn't currently safe. See 1921 // https://github.com/envoyproxy/envoy/pull/3941. 1922 UpdateMergeWindow *duration.Duration `protobuf:"bytes,4,opt,name=update_merge_window,json=updateMergeWindow,proto3" json:"update_merge_window,omitempty"` 1923 // If set to true, Envoy will not consider new hosts when computing load balancing weights until 1924 // they have been health checked for the first time. This will have no effect unless 1925 // active health checking is also configured. 1926 // 1927 // Ignoring a host means that for any load balancing calculations that adjust weights based 1928 // on the ratio of eligible hosts and total hosts (priority spillover, locality weighting and 1929 // panic mode) Envoy will exclude these hosts in the denominator. 1930 // 1931 // For example, with hosts in two priorities P0 and P1, where P0 looks like 1932 // {healthy, unhealthy (new), unhealthy (new)} 1933 // and where P1 looks like 1934 // {healthy, healthy} 1935 // all traffic will still hit P0, as 1 / (3 - 2) = 1. 1936 // 1937 // Enabling this will allow scaling up the number of hosts for a given cluster without entering 1938 // panic mode or triggering priority spillover, assuming the hosts pass the first health check. 1939 // 1940 // If panic mode is triggered, new hosts are still eligible for traffic; they simply do not 1941 // contribute to the calculation when deciding whether panic mode is enabled or not. 1942 IgnoreNewHostsUntilFirstHc bool `protobuf:"varint,5,opt,name=ignore_new_hosts_until_first_hc,json=ignoreNewHostsUntilFirstHc,proto3" json:"ignore_new_hosts_until_first_hc,omitempty"` 1943 // If set to `true`, the cluster manager will drain all existing 1944 // connections to upstream hosts whenever hosts are added or removed from the cluster. 1945 CloseConnectionsOnHostSetChange bool `protobuf:"varint,6,opt,name=close_connections_on_host_set_change,json=closeConnectionsOnHostSetChange,proto3" json:"close_connections_on_host_set_change,omitempty"` 1946 // Common Configuration for all consistent hashing load balancers (MaglevLb, RingHashLb, etc.) 1947 ConsistentHashingLbConfig *Cluster_CommonLbConfig_ConsistentHashingLbConfig `protobuf:"bytes,7,opt,name=consistent_hashing_lb_config,json=consistentHashingLbConfig,proto3" json:"consistent_hashing_lb_config,omitempty"` 1948 } 1949 1950 func (x *Cluster_CommonLbConfig) Reset() { 1951 *x = Cluster_CommonLbConfig{} 1952 if protoimpl.UnsafeEnabled { 1953 mi := &file_envoy_api_v2_cluster_proto_msgTypes[11] 1954 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1955 ms.StoreMessageInfo(mi) 1956 } 1957 } 1958 1959 func (x *Cluster_CommonLbConfig) String() string { 1960 return protoimpl.X.MessageStringOf(x) 1961 } 1962 1963 func (*Cluster_CommonLbConfig) ProtoMessage() {} 1964 1965 func (x *Cluster_CommonLbConfig) ProtoReflect() protoreflect.Message { 1966 mi := &file_envoy_api_v2_cluster_proto_msgTypes[11] 1967 if protoimpl.UnsafeEnabled && x != nil { 1968 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1969 if ms.LoadMessageInfo() == nil { 1970 ms.StoreMessageInfo(mi) 1971 } 1972 return ms 1973 } 1974 return mi.MessageOf(x) 1975 } 1976 1977 // Deprecated: Use Cluster_CommonLbConfig.ProtoReflect.Descriptor instead. 1978 func (*Cluster_CommonLbConfig) Descriptor() ([]byte, []int) { 1979 return file_envoy_api_v2_cluster_proto_rawDescGZIP(), []int{0, 7} 1980 } 1981 1982 func (x *Cluster_CommonLbConfig) GetHealthyPanicThreshold() *_type.Percent { 1983 if x != nil { 1984 return x.HealthyPanicThreshold 1985 } 1986 return nil 1987 } 1988 1989 func (m *Cluster_CommonLbConfig) GetLocalityConfigSpecifier() isCluster_CommonLbConfig_LocalityConfigSpecifier { 1990 if m != nil { 1991 return m.LocalityConfigSpecifier 1992 } 1993 return nil 1994 } 1995 1996 func (x *Cluster_CommonLbConfig) GetZoneAwareLbConfig() *Cluster_CommonLbConfig_ZoneAwareLbConfig { 1997 if x, ok := x.GetLocalityConfigSpecifier().(*Cluster_CommonLbConfig_ZoneAwareLbConfig_); ok { 1998 return x.ZoneAwareLbConfig 1999 } 2000 return nil 2001 } 2002 2003 func (x *Cluster_CommonLbConfig) GetLocalityWeightedLbConfig() *Cluster_CommonLbConfig_LocalityWeightedLbConfig { 2004 if x, ok := x.GetLocalityConfigSpecifier().(*Cluster_CommonLbConfig_LocalityWeightedLbConfig_); ok { 2005 return x.LocalityWeightedLbConfig 2006 } 2007 return nil 2008 } 2009 2010 func (x *Cluster_CommonLbConfig) GetUpdateMergeWindow() *duration.Duration { 2011 if x != nil { 2012 return x.UpdateMergeWindow 2013 } 2014 return nil 2015 } 2016 2017 func (x *Cluster_CommonLbConfig) GetIgnoreNewHostsUntilFirstHc() bool { 2018 if x != nil { 2019 return x.IgnoreNewHostsUntilFirstHc 2020 } 2021 return false 2022 } 2023 2024 func (x *Cluster_CommonLbConfig) GetCloseConnectionsOnHostSetChange() bool { 2025 if x != nil { 2026 return x.CloseConnectionsOnHostSetChange 2027 } 2028 return false 2029 } 2030 2031 func (x *Cluster_CommonLbConfig) GetConsistentHashingLbConfig() *Cluster_CommonLbConfig_ConsistentHashingLbConfig { 2032 if x != nil { 2033 return x.ConsistentHashingLbConfig 2034 } 2035 return nil 2036 } 2037 2038 type isCluster_CommonLbConfig_LocalityConfigSpecifier interface { 2039 isCluster_CommonLbConfig_LocalityConfigSpecifier() 2040 } 2041 2042 type Cluster_CommonLbConfig_ZoneAwareLbConfig_ struct { 2043 ZoneAwareLbConfig *Cluster_CommonLbConfig_ZoneAwareLbConfig `protobuf:"bytes,2,opt,name=zone_aware_lb_config,json=zoneAwareLbConfig,proto3,oneof"` 2044 } 2045 2046 type Cluster_CommonLbConfig_LocalityWeightedLbConfig_ struct { 2047 LocalityWeightedLbConfig *Cluster_CommonLbConfig_LocalityWeightedLbConfig `protobuf:"bytes,3,opt,name=locality_weighted_lb_config,json=localityWeightedLbConfig,proto3,oneof"` 2048 } 2049 2050 func (*Cluster_CommonLbConfig_ZoneAwareLbConfig_) isCluster_CommonLbConfig_LocalityConfigSpecifier() { 2051 } 2052 2053 func (*Cluster_CommonLbConfig_LocalityWeightedLbConfig_) isCluster_CommonLbConfig_LocalityConfigSpecifier() { 2054 } 2055 2056 type Cluster_RefreshRate struct { 2057 state protoimpl.MessageState 2058 sizeCache protoimpl.SizeCache 2059 unknownFields protoimpl.UnknownFields 2060 2061 // Specifies the base interval between refreshes. This parameter is required and must be greater 2062 // than zero and less than 2063 // :ref:`max_interval <envoy_api_field_Cluster.RefreshRate.max_interval>`. 2064 BaseInterval *duration.Duration `protobuf:"bytes,1,opt,name=base_interval,json=baseInterval,proto3" json:"base_interval,omitempty"` 2065 // Specifies the maximum interval between refreshes. This parameter is optional, but must be 2066 // greater than or equal to the 2067 // :ref:`base_interval <envoy_api_field_Cluster.RefreshRate.base_interval>` if set. The default 2068 // is 10 times the :ref:`base_interval <envoy_api_field_Cluster.RefreshRate.base_interval>`. 2069 MaxInterval *duration.Duration `protobuf:"bytes,2,opt,name=max_interval,json=maxInterval,proto3" json:"max_interval,omitempty"` 2070 } 2071 2072 func (x *Cluster_RefreshRate) Reset() { 2073 *x = Cluster_RefreshRate{} 2074 if protoimpl.UnsafeEnabled { 2075 mi := &file_envoy_api_v2_cluster_proto_msgTypes[12] 2076 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 2077 ms.StoreMessageInfo(mi) 2078 } 2079 } 2080 2081 func (x *Cluster_RefreshRate) String() string { 2082 return protoimpl.X.MessageStringOf(x) 2083 } 2084 2085 func (*Cluster_RefreshRate) ProtoMessage() {} 2086 2087 func (x *Cluster_RefreshRate) ProtoReflect() protoreflect.Message { 2088 mi := &file_envoy_api_v2_cluster_proto_msgTypes[12] 2089 if protoimpl.UnsafeEnabled && x != nil { 2090 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 2091 if ms.LoadMessageInfo() == nil { 2092 ms.StoreMessageInfo(mi) 2093 } 2094 return ms 2095 } 2096 return mi.MessageOf(x) 2097 } 2098 2099 // Deprecated: Use Cluster_RefreshRate.ProtoReflect.Descriptor instead. 2100 func (*Cluster_RefreshRate) Descriptor() ([]byte, []int) { 2101 return file_envoy_api_v2_cluster_proto_rawDescGZIP(), []int{0, 8} 2102 } 2103 2104 func (x *Cluster_RefreshRate) GetBaseInterval() *duration.Duration { 2105 if x != nil { 2106 return x.BaseInterval 2107 } 2108 return nil 2109 } 2110 2111 func (x *Cluster_RefreshRate) GetMaxInterval() *duration.Duration { 2112 if x != nil { 2113 return x.MaxInterval 2114 } 2115 return nil 2116 } 2117 2118 // Specifications for subsets. 2119 type Cluster_LbSubsetConfig_LbSubsetSelector struct { 2120 state protoimpl.MessageState 2121 sizeCache protoimpl.SizeCache 2122 unknownFields protoimpl.UnknownFields 2123 2124 // List of keys to match with the weighted cluster metadata. 2125 Keys []string `protobuf:"bytes,1,rep,name=keys,proto3" json:"keys,omitempty"` 2126 // The behavior used when no endpoint subset matches the selected route's 2127 // metadata. 2128 FallbackPolicy Cluster_LbSubsetConfig_LbSubsetSelector_LbSubsetSelectorFallbackPolicy `protobuf:"varint,2,opt,name=fallback_policy,json=fallbackPolicy,proto3,enum=envoy.api.v2.Cluster_LbSubsetConfig_LbSubsetSelector_LbSubsetSelectorFallbackPolicy" json:"fallback_policy,omitempty"` 2129 // Subset of 2130 // :ref:`keys<envoy_api_field_Cluster.LbSubsetConfig.LbSubsetSelector.keys>` used by 2131 // :ref:`KEYS_SUBSET<envoy_api_enum_value_Cluster.LbSubsetConfig.LbSubsetSelector.LbSubsetSelectorFallbackPolicy.KEYS_SUBSET>` 2132 // fallback policy. 2133 // It has to be a non empty list if KEYS_SUBSET fallback policy is selected. 2134 // For any other fallback policy the parameter is not used and should not be set. 2135 // Only values also present in 2136 // :ref:`keys<envoy_api_field_Cluster.LbSubsetConfig.LbSubsetSelector.keys>` are allowed, but 2137 // `fallback_keys_subset` cannot be equal to `keys`. 2138 FallbackKeysSubset []string `protobuf:"bytes,3,rep,name=fallback_keys_subset,json=fallbackKeysSubset,proto3" json:"fallback_keys_subset,omitempty"` 2139 } 2140 2141 func (x *Cluster_LbSubsetConfig_LbSubsetSelector) Reset() { 2142 *x = Cluster_LbSubsetConfig_LbSubsetSelector{} 2143 if protoimpl.UnsafeEnabled { 2144 mi := &file_envoy_api_v2_cluster_proto_msgTypes[15] 2145 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 2146 ms.StoreMessageInfo(mi) 2147 } 2148 } 2149 2150 func (x *Cluster_LbSubsetConfig_LbSubsetSelector) String() string { 2151 return protoimpl.X.MessageStringOf(x) 2152 } 2153 2154 func (*Cluster_LbSubsetConfig_LbSubsetSelector) ProtoMessage() {} 2155 2156 func (x *Cluster_LbSubsetConfig_LbSubsetSelector) ProtoReflect() protoreflect.Message { 2157 mi := &file_envoy_api_v2_cluster_proto_msgTypes[15] 2158 if protoimpl.UnsafeEnabled && x != nil { 2159 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 2160 if ms.LoadMessageInfo() == nil { 2161 ms.StoreMessageInfo(mi) 2162 } 2163 return ms 2164 } 2165 return mi.MessageOf(x) 2166 } 2167 2168 // Deprecated: Use Cluster_LbSubsetConfig_LbSubsetSelector.ProtoReflect.Descriptor instead. 2169 func (*Cluster_LbSubsetConfig_LbSubsetSelector) Descriptor() ([]byte, []int) { 2170 return file_envoy_api_v2_cluster_proto_rawDescGZIP(), []int{0, 3, 0} 2171 } 2172 2173 func (x *Cluster_LbSubsetConfig_LbSubsetSelector) GetKeys() []string { 2174 if x != nil { 2175 return x.Keys 2176 } 2177 return nil 2178 } 2179 2180 func (x *Cluster_LbSubsetConfig_LbSubsetSelector) GetFallbackPolicy() Cluster_LbSubsetConfig_LbSubsetSelector_LbSubsetSelectorFallbackPolicy { 2181 if x != nil { 2182 return x.FallbackPolicy 2183 } 2184 return Cluster_LbSubsetConfig_LbSubsetSelector_NOT_DEFINED 2185 } 2186 2187 func (x *Cluster_LbSubsetConfig_LbSubsetSelector) GetFallbackKeysSubset() []string { 2188 if x != nil { 2189 return x.FallbackKeysSubset 2190 } 2191 return nil 2192 } 2193 2194 // Configuration for :ref:`zone aware routing 2195 // <arch_overview_load_balancing_zone_aware_routing>`. 2196 type Cluster_CommonLbConfig_ZoneAwareLbConfig struct { 2197 state protoimpl.MessageState 2198 sizeCache protoimpl.SizeCache 2199 unknownFields protoimpl.UnknownFields 2200 2201 // Configures percentage of requests that will be considered for zone aware routing 2202 // if zone aware routing is configured. If not specified, the default is 100%. 2203 // * :ref:`runtime values <config_cluster_manager_cluster_runtime_zone_routing>`. 2204 // * :ref:`Zone aware routing support <arch_overview_load_balancing_zone_aware_routing>`. 2205 RoutingEnabled *_type.Percent `protobuf:"bytes,1,opt,name=routing_enabled,json=routingEnabled,proto3" json:"routing_enabled,omitempty"` 2206 // Configures minimum upstream cluster size required for zone aware routing 2207 // If upstream cluster size is less than specified, zone aware routing is not performed 2208 // even if zone aware routing is configured. If not specified, the default is 6. 2209 // * :ref:`runtime values <config_cluster_manager_cluster_runtime_zone_routing>`. 2210 // * :ref:`Zone aware routing support <arch_overview_load_balancing_zone_aware_routing>`. 2211 MinClusterSize *wrappers.UInt64Value `protobuf:"bytes,2,opt,name=min_cluster_size,json=minClusterSize,proto3" json:"min_cluster_size,omitempty"` 2212 // If set to true, Envoy will not consider any hosts when the cluster is in :ref:`panic 2213 // mode<arch_overview_load_balancing_panic_threshold>`. Instead, the cluster will fail all 2214 // requests as if all hosts are unhealthy. This can help avoid potentially overwhelming a 2215 // failing service. 2216 FailTrafficOnPanic bool `protobuf:"varint,3,opt,name=fail_traffic_on_panic,json=failTrafficOnPanic,proto3" json:"fail_traffic_on_panic,omitempty"` 2217 } 2218 2219 func (x *Cluster_CommonLbConfig_ZoneAwareLbConfig) Reset() { 2220 *x = Cluster_CommonLbConfig_ZoneAwareLbConfig{} 2221 if protoimpl.UnsafeEnabled { 2222 mi := &file_envoy_api_v2_cluster_proto_msgTypes[16] 2223 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 2224 ms.StoreMessageInfo(mi) 2225 } 2226 } 2227 2228 func (x *Cluster_CommonLbConfig_ZoneAwareLbConfig) String() string { 2229 return protoimpl.X.MessageStringOf(x) 2230 } 2231 2232 func (*Cluster_CommonLbConfig_ZoneAwareLbConfig) ProtoMessage() {} 2233 2234 func (x *Cluster_CommonLbConfig_ZoneAwareLbConfig) ProtoReflect() protoreflect.Message { 2235 mi := &file_envoy_api_v2_cluster_proto_msgTypes[16] 2236 if protoimpl.UnsafeEnabled && x != nil { 2237 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 2238 if ms.LoadMessageInfo() == nil { 2239 ms.StoreMessageInfo(mi) 2240 } 2241 return ms 2242 } 2243 return mi.MessageOf(x) 2244 } 2245 2246 // Deprecated: Use Cluster_CommonLbConfig_ZoneAwareLbConfig.ProtoReflect.Descriptor instead. 2247 func (*Cluster_CommonLbConfig_ZoneAwareLbConfig) Descriptor() ([]byte, []int) { 2248 return file_envoy_api_v2_cluster_proto_rawDescGZIP(), []int{0, 7, 0} 2249 } 2250 2251 func (x *Cluster_CommonLbConfig_ZoneAwareLbConfig) GetRoutingEnabled() *_type.Percent { 2252 if x != nil { 2253 return x.RoutingEnabled 2254 } 2255 return nil 2256 } 2257 2258 func (x *Cluster_CommonLbConfig_ZoneAwareLbConfig) GetMinClusterSize() *wrappers.UInt64Value { 2259 if x != nil { 2260 return x.MinClusterSize 2261 } 2262 return nil 2263 } 2264 2265 func (x *Cluster_CommonLbConfig_ZoneAwareLbConfig) GetFailTrafficOnPanic() bool { 2266 if x != nil { 2267 return x.FailTrafficOnPanic 2268 } 2269 return false 2270 } 2271 2272 // Configuration for :ref:`locality weighted load balancing 2273 // <arch_overview_load_balancing_locality_weighted_lb>` 2274 type Cluster_CommonLbConfig_LocalityWeightedLbConfig struct { 2275 state protoimpl.MessageState 2276 sizeCache protoimpl.SizeCache 2277 unknownFields protoimpl.UnknownFields 2278 } 2279 2280 func (x *Cluster_CommonLbConfig_LocalityWeightedLbConfig) Reset() { 2281 *x = Cluster_CommonLbConfig_LocalityWeightedLbConfig{} 2282 if protoimpl.UnsafeEnabled { 2283 mi := &file_envoy_api_v2_cluster_proto_msgTypes[17] 2284 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 2285 ms.StoreMessageInfo(mi) 2286 } 2287 } 2288 2289 func (x *Cluster_CommonLbConfig_LocalityWeightedLbConfig) String() string { 2290 return protoimpl.X.MessageStringOf(x) 2291 } 2292 2293 func (*Cluster_CommonLbConfig_LocalityWeightedLbConfig) ProtoMessage() {} 2294 2295 func (x *Cluster_CommonLbConfig_LocalityWeightedLbConfig) ProtoReflect() protoreflect.Message { 2296 mi := &file_envoy_api_v2_cluster_proto_msgTypes[17] 2297 if protoimpl.UnsafeEnabled && x != nil { 2298 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 2299 if ms.LoadMessageInfo() == nil { 2300 ms.StoreMessageInfo(mi) 2301 } 2302 return ms 2303 } 2304 return mi.MessageOf(x) 2305 } 2306 2307 // Deprecated: Use Cluster_CommonLbConfig_LocalityWeightedLbConfig.ProtoReflect.Descriptor instead. 2308 func (*Cluster_CommonLbConfig_LocalityWeightedLbConfig) Descriptor() ([]byte, []int) { 2309 return file_envoy_api_v2_cluster_proto_rawDescGZIP(), []int{0, 7, 1} 2310 } 2311 2312 // Common Configuration for all consistent hashing load balancers (MaglevLb, RingHashLb, etc.) 2313 type Cluster_CommonLbConfig_ConsistentHashingLbConfig struct { 2314 state protoimpl.MessageState 2315 sizeCache protoimpl.SizeCache 2316 unknownFields protoimpl.UnknownFields 2317 2318 // If set to `true`, the cluster will use hostname instead of the resolved 2319 // address as the key to consistently hash to an upstream host. Only valid for StrictDNS clusters with hostnames which resolve to a single IP address. 2320 UseHostnameForHashing bool `protobuf:"varint,1,opt,name=use_hostname_for_hashing,json=useHostnameForHashing,proto3" json:"use_hostname_for_hashing,omitempty"` 2321 } 2322 2323 func (x *Cluster_CommonLbConfig_ConsistentHashingLbConfig) Reset() { 2324 *x = Cluster_CommonLbConfig_ConsistentHashingLbConfig{} 2325 if protoimpl.UnsafeEnabled { 2326 mi := &file_envoy_api_v2_cluster_proto_msgTypes[18] 2327 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 2328 ms.StoreMessageInfo(mi) 2329 } 2330 } 2331 2332 func (x *Cluster_CommonLbConfig_ConsistentHashingLbConfig) String() string { 2333 return protoimpl.X.MessageStringOf(x) 2334 } 2335 2336 func (*Cluster_CommonLbConfig_ConsistentHashingLbConfig) ProtoMessage() {} 2337 2338 func (x *Cluster_CommonLbConfig_ConsistentHashingLbConfig) ProtoReflect() protoreflect.Message { 2339 mi := &file_envoy_api_v2_cluster_proto_msgTypes[18] 2340 if protoimpl.UnsafeEnabled && x != nil { 2341 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 2342 if ms.LoadMessageInfo() == nil { 2343 ms.StoreMessageInfo(mi) 2344 } 2345 return ms 2346 } 2347 return mi.MessageOf(x) 2348 } 2349 2350 // Deprecated: Use Cluster_CommonLbConfig_ConsistentHashingLbConfig.ProtoReflect.Descriptor instead. 2351 func (*Cluster_CommonLbConfig_ConsistentHashingLbConfig) Descriptor() ([]byte, []int) { 2352 return file_envoy_api_v2_cluster_proto_rawDescGZIP(), []int{0, 7, 2} 2353 } 2354 2355 func (x *Cluster_CommonLbConfig_ConsistentHashingLbConfig) GetUseHostnameForHashing() bool { 2356 if x != nil { 2357 return x.UseHostnameForHashing 2358 } 2359 return false 2360 } 2361 2362 type LoadBalancingPolicy_Policy struct { 2363 state protoimpl.MessageState 2364 sizeCache protoimpl.SizeCache 2365 unknownFields protoimpl.UnknownFields 2366 2367 // Required. The name of the LB policy. 2368 Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` 2369 // Optional config for the LB policy. 2370 // No more than one of these two fields may be populated. 2371 // 2372 // Deprecated: Do not use. 2373 Config *_struct.Struct `protobuf:"bytes,2,opt,name=config,proto3" json:"config,omitempty"` 2374 TypedConfig *any.Any `protobuf:"bytes,3,opt,name=typed_config,json=typedConfig,proto3" json:"typed_config,omitempty"` 2375 } 2376 2377 func (x *LoadBalancingPolicy_Policy) Reset() { 2378 *x = LoadBalancingPolicy_Policy{} 2379 if protoimpl.UnsafeEnabled { 2380 mi := &file_envoy_api_v2_cluster_proto_msgTypes[19] 2381 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 2382 ms.StoreMessageInfo(mi) 2383 } 2384 } 2385 2386 func (x *LoadBalancingPolicy_Policy) String() string { 2387 return protoimpl.X.MessageStringOf(x) 2388 } 2389 2390 func (*LoadBalancingPolicy_Policy) ProtoMessage() {} 2391 2392 func (x *LoadBalancingPolicy_Policy) ProtoReflect() protoreflect.Message { 2393 mi := &file_envoy_api_v2_cluster_proto_msgTypes[19] 2394 if protoimpl.UnsafeEnabled && x != nil { 2395 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 2396 if ms.LoadMessageInfo() == nil { 2397 ms.StoreMessageInfo(mi) 2398 } 2399 return ms 2400 } 2401 return mi.MessageOf(x) 2402 } 2403 2404 // Deprecated: Use LoadBalancingPolicy_Policy.ProtoReflect.Descriptor instead. 2405 func (*LoadBalancingPolicy_Policy) Descriptor() ([]byte, []int) { 2406 return file_envoy_api_v2_cluster_proto_rawDescGZIP(), []int{1, 0} 2407 } 2408 2409 func (x *LoadBalancingPolicy_Policy) GetName() string { 2410 if x != nil { 2411 return x.Name 2412 } 2413 return "" 2414 } 2415 2416 // Deprecated: Do not use. 2417 func (x *LoadBalancingPolicy_Policy) GetConfig() *_struct.Struct { 2418 if x != nil { 2419 return x.Config 2420 } 2421 return nil 2422 } 2423 2424 func (x *LoadBalancingPolicy_Policy) GetTypedConfig() *any.Any { 2425 if x != nil { 2426 return x.TypedConfig 2427 } 2428 return nil 2429 } 2430 2431 var File_envoy_api_v2_cluster_proto protoreflect.FileDescriptor 2432 2433 var file_envoy_api_v2_cluster_proto_rawDesc = []byte{ 2434 0x0a, 0x1a, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x32, 0x2f, 0x63, 2435 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0c, 0x65, 0x6e, 2436 0x76, 0x6f, 0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x1a, 0x1b, 0x65, 0x6e, 0x76, 0x6f, 2437 0x79, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x32, 0x2f, 0x61, 0x75, 0x74, 0x68, 0x2f, 0x74, 0x6c, 2438 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x2a, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2f, 0x61, 2439 0x70, 0x69, 0x2f, 0x76, 0x32, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2f, 0x63, 0x69, 2440 0x72, 0x63, 0x75, 0x69, 0x74, 0x5f, 0x62, 0x72, 0x65, 0x61, 0x6b, 0x65, 0x72, 0x2e, 0x70, 0x72, 2441 0x6f, 0x74, 0x6f, 0x1a, 0x21, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 2442 0x32, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2f, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 2443 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x2c, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2f, 0x61, 0x70, 2444 0x69, 0x2f, 0x76, 0x32, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2f, 0x6f, 0x75, 0x74, 2445 0x6c, 0x69, 0x65, 0x72, 0x5f, 0x64, 0x65, 0x74, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x70, 2446 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1f, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2f, 0x61, 0x70, 0x69, 0x2f, 2447 0x76, 0x32, 0x2f, 0x63, 0x6f, 0x72, 0x65, 0x2f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x2e, 2448 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1c, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2f, 0x61, 0x70, 0x69, 2449 0x2f, 0x76, 0x32, 0x2f, 0x63, 0x6f, 0x72, 0x65, 0x2f, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x70, 0x72, 2450 0x6f, 0x74, 0x6f, 0x1a, 0x25, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 2451 0x32, 0x2f, 0x63, 0x6f, 0x72, 0x65, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x5f, 0x73, 0x6f, 2452 0x75, 0x72, 0x63, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x24, 0x65, 0x6e, 0x76, 0x6f, 2453 0x79, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x32, 0x2f, 0x63, 0x6f, 0x72, 0x65, 0x2f, 0x68, 0x65, 2454 0x61, 0x6c, 0x74, 0x68, 0x5f, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 2455 0x1a, 0x20, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x32, 0x2f, 0x63, 2456 0x6f, 0x72, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x70, 0x72, 0x6f, 2457 0x74, 0x6f, 0x1a, 0x1b, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x32, 2458 0x2f, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 2459 0x18, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x2f, 0x70, 0x65, 0x72, 0x63, 2460 0x65, 0x6e, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x19, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 2461 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x61, 0x6e, 0x79, 0x2e, 0x70, 2462 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 2463 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x70, 2464 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 2465 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x2e, 0x70, 0x72, 0x6f, 2466 0x74, 0x6f, 0x1a, 0x1e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 2467 0x62, 0x75, 0x66, 0x2f, 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x73, 0x2e, 0x70, 0x72, 0x6f, 2468 0x74, 0x6f, 0x1a, 0x23, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 2469 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x64, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x69, 0x6f, 2470 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1e, 0x75, 0x64, 0x70, 0x61, 0x2f, 0x61, 0x6e, 2471 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x6d, 0x69, 0x67, 0x72, 0x61, 0x74, 2472 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1d, 0x75, 0x64, 0x70, 0x61, 0x2f, 0x61, 0x6e, 2473 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 2474 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x17, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 2475 0x2f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 2476 0xd8, 0x39, 0x0a, 0x07, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x12, 0x64, 0x0a, 0x18, 0x74, 2477 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x73, 0x6f, 0x63, 0x6b, 0x65, 0x74, 0x5f, 2478 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x73, 0x18, 0x2b, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 2479 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x43, 0x6c, 0x75, 2480 0x73, 0x74, 0x65, 0x72, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x53, 0x6f, 2481 0x63, 0x6b, 0x65, 0x74, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x52, 0x16, 0x74, 0x72, 0x61, 0x6e, 0x73, 2482 0x70, 0x6f, 0x72, 0x74, 0x53, 0x6f, 0x63, 0x6b, 0x65, 0x74, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x65, 2483 0x73, 0x12, 0x1b, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 2484 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x20, 0x01, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x22, 2485 0x0a, 0x0d, 0x61, 0x6c, 0x74, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 2486 0x1c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x61, 0x6c, 0x74, 0x53, 0x74, 0x61, 0x74, 0x4e, 0x61, 2487 0x6d, 0x65, 0x12, 0x43, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 2488 0x32, 0x23, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 2489 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 2490 0x79, 0x54, 0x79, 0x70, 0x65, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x82, 0x01, 0x02, 0x10, 0x01, 0x48, 2491 0x00, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x4c, 0x0a, 0x0c, 0x63, 0x6c, 0x75, 0x73, 0x74, 2492 0x65, 0x72, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x26, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 2493 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x43, 0x6c, 0x75, 2494 0x73, 0x74, 0x65, 0x72, 0x2e, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x43, 0x6c, 0x75, 0x73, 0x74, 2495 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x48, 0x00, 0x52, 0x0b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 2496 0x72, 0x54, 0x79, 0x70, 0x65, 0x12, 0x54, 0x0a, 0x12, 0x65, 0x64, 0x73, 0x5f, 0x63, 0x6c, 0x75, 2497 0x73, 0x74, 0x65, 0x72, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 2498 0x0b, 0x32, 0x26, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 2499 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x45, 0x64, 0x73, 0x43, 0x6c, 0x75, 0x73, 2500 0x74, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x10, 0x65, 0x64, 0x73, 0x43, 0x6c, 2501 0x75, 0x73, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x4c, 0x0a, 0x0f, 0x63, 2502 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, 0x04, 2503 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 2504 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 2505 0x08, 0xfa, 0x42, 0x05, 0xaa, 0x01, 0x02, 0x2a, 0x00, 0x52, 0x0e, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 2506 0x63, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x12, 0x66, 0x0a, 0x21, 0x70, 0x65, 0x72, 2507 0x5f, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x62, 0x75, 0x66, 0x66, 2508 0x65, 0x72, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x05, 2509 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 2510 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x56, 0x61, 0x6c, 2511 0x75, 0x65, 0x52, 0x1d, 0x70, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 2512 0x6e, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x42, 0x79, 0x74, 0x65, 2513 0x73, 0x12, 0x45, 0x0a, 0x09, 0x6c, 0x62, 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x18, 0x06, 2514 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1e, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x61, 0x70, 0x69, 2515 0x2e, 0x76, 0x32, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x4c, 0x62, 0x50, 0x6f, 2516 0x6c, 0x69, 0x63, 0x79, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x82, 0x01, 0x02, 0x10, 0x01, 0x52, 0x08, 2517 0x6c, 0x62, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x34, 0x0a, 0x05, 0x68, 0x6f, 0x73, 0x74, 2518 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 2519 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x41, 0x64, 0x64, 0x72, 2520 0x65, 0x73, 0x73, 0x42, 0x02, 0x18, 0x01, 0x52, 0x05, 0x68, 0x6f, 0x73, 0x74, 0x73, 0x12, 0x4c, 2521 0x0a, 0x0f, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x61, 0x73, 0x73, 0x69, 0x67, 0x6e, 0x6d, 0x65, 0x6e, 2522 0x74, 0x18, 0x21, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 2523 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x4c, 0x6f, 2524 0x61, 0x64, 0x41, 0x73, 0x73, 0x69, 0x67, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x0e, 0x6c, 0x6f, 2525 0x61, 0x64, 0x41, 0x73, 0x73, 0x69, 0x67, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x43, 0x0a, 0x0d, 2526 0x68, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x5f, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x18, 0x08, 0x20, 2527 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e, 2528 0x76, 0x32, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x43, 0x68, 2529 0x65, 0x63, 0x6b, 0x52, 0x0c, 0x68, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x43, 0x68, 0x65, 0x63, 0x6b, 2530 0x73, 0x12, 0x5b, 0x0a, 0x1b, 0x6d, 0x61, 0x78, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 2531 0x73, 0x5f, 0x70, 0x65, 0x72, 0x5f, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 2532 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 2533 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x56, 2534 0x61, 0x6c, 0x75, 0x65, 0x52, 0x18, 0x6d, 0x61, 0x78, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 2535 0x73, 0x50, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x50, 2536 0x0a, 0x10, 0x63, 0x69, 0x72, 0x63, 0x75, 0x69, 0x74, 0x5f, 0x62, 0x72, 0x65, 0x61, 0x6b, 0x65, 2537 0x72, 0x73, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 2538 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 2539 0x43, 0x69, 0x72, 0x63, 0x75, 0x69, 0x74, 0x42, 0x72, 0x65, 0x61, 0x6b, 0x65, 0x72, 0x73, 0x52, 2540 0x0f, 0x63, 0x69, 0x72, 0x63, 0x75, 0x69, 0x74, 0x42, 0x72, 0x65, 0x61, 0x6b, 0x65, 0x72, 0x73, 2541 0x12, 0x50, 0x0a, 0x0b, 0x74, 0x6c, 0x73, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x18, 2542 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x61, 0x70, 2543 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x61, 0x75, 0x74, 0x68, 0x2e, 0x55, 0x70, 0x73, 0x74, 0x72, 0x65, 2544 0x61, 0x6d, 0x54, 0x6c, 0x73, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x42, 0x08, 0x18, 0x01, 2545 0xb8, 0xee, 0xf2, 0xd2, 0x05, 0x01, 0x52, 0x0a, 0x74, 0x6c, 0x73, 0x43, 0x6f, 0x6e, 0x74, 0x65, 2546 0x78, 0x74, 0x12, 0x73, 0x0a, 0x1e, 0x75, 0x70, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x5f, 0x68, 2547 0x74, 0x74, 0x70, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x5f, 0x6f, 0x70, 0x74, 2548 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x2e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x65, 0x6e, 0x76, 2549 0x6f, 0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x55, 2550 0x70, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x48, 0x74, 0x74, 0x70, 0x50, 0x72, 0x6f, 0x74, 0x6f, 2551 0x63, 0x6f, 0x6c, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x1b, 0x75, 0x70, 0x73, 0x74, 2552 0x72, 0x65, 0x61, 0x6d, 0x48, 0x74, 0x74, 0x70, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 2553 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x67, 0x0a, 0x1c, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 2554 0x6e, 0x5f, 0x68, 0x74, 0x74, 0x70, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x5f, 2555 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x1d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 2556 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x63, 0x6f, 0x72, 2557 0x65, 0x2e, 0x48, 0x74, 0x74, 0x70, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x4f, 0x70, 2558 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x19, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x48, 0x74, 0x74, 2559 0x70, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 2560 0x12, 0x5b, 0x0a, 0x15, 0x68, 0x74, 0x74, 0x70, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 2561 0x6c, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 2562 0x27, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x63, 2563 0x6f, 0x72, 0x65, 0x2e, 0x48, 0x74, 0x74, 0x70, 0x31, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 2564 0x6c, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x13, 0x68, 0x74, 0x74, 0x70, 0x50, 0x72, 2565 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x5d, 0x0a, 2566 0x16, 0x68, 0x74, 0x74, 0x70, 0x32, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x5f, 2567 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 2568 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x63, 0x6f, 0x72, 2569 0x65, 0x2e, 0x48, 0x74, 0x74, 0x70, 0x32, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x4f, 2570 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x14, 0x68, 0x74, 0x74, 0x70, 0x32, 0x50, 0x72, 0x6f, 2571 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x7b, 0x0a, 0x1a, 2572 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 2573 0x6f, 0x6c, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x23, 0x20, 0x03, 0x28, 0x0b, 2574 0x32, 0x33, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 2575 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 2576 0x6e, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 2577 0x45, 0x6e, 0x74, 0x72, 0x79, 0x42, 0x08, 0x18, 0x01, 0xb8, 0xee, 0xf2, 0xd2, 0x05, 0x01, 0x52, 2578 0x18, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 2579 0x6f, 0x6c, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x81, 0x01, 0x0a, 0x20, 0x74, 0x79, 2580 0x70, 0x65, 0x64, 0x5f, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x70, 0x72, 2581 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x24, 2582 0x20, 0x03, 0x28, 0x0b, 0x32, 0x38, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x61, 0x70, 0x69, 2583 0x2e, 0x76, 0x32, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x54, 0x79, 0x70, 0x65, 2584 0x64, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 2585 0x6f, 0x6c, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x1d, 2586 0x74, 0x79, 0x70, 0x65, 0x64, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x50, 0x72, 2587 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x51, 0x0a, 2588 0x10, 0x64, 0x6e, 0x73, 0x5f, 0x72, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x5f, 0x72, 0x61, 0x74, 2589 0x65, 0x18, 0x10, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 2590 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 2591 0x6f, 0x6e, 0x42, 0x0c, 0xfa, 0x42, 0x09, 0xaa, 0x01, 0x06, 0x2a, 0x04, 0x10, 0xc0, 0x84, 0x3d, 2592 0x52, 0x0e, 0x64, 0x6e, 0x73, 0x52, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x52, 0x61, 0x74, 0x65, 2593 0x12, 0x5a, 0x0a, 0x18, 0x64, 0x6e, 0x73, 0x5f, 0x66, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x5f, 2594 0x72, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x5f, 0x72, 0x61, 0x74, 0x65, 0x18, 0x2c, 0x20, 0x01, 2595 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 2596 0x32, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x52, 0x65, 0x66, 0x72, 0x65, 0x73, 2597 0x68, 0x52, 0x61, 0x74, 0x65, 0x52, 0x15, 0x64, 0x6e, 0x73, 0x46, 0x61, 0x69, 0x6c, 0x75, 0x72, 2598 0x65, 0x52, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x52, 0x61, 0x74, 0x65, 0x12, 0x26, 0x0a, 0x0f, 2599 0x72, 0x65, 0x73, 0x70, 0x65, 0x63, 0x74, 0x5f, 0x64, 0x6e, 0x73, 0x5f, 0x74, 0x74, 0x6c, 0x18, 2600 0x27, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x72, 0x65, 0x73, 0x70, 0x65, 0x63, 0x74, 0x44, 0x6e, 2601 0x73, 0x54, 0x74, 0x6c, 0x12, 0x5b, 0x0a, 0x11, 0x64, 0x6e, 0x73, 0x5f, 0x6c, 0x6f, 0x6f, 0x6b, 2602 0x75, 0x70, 0x5f, 0x66, 0x61, 0x6d, 0x69, 0x6c, 0x79, 0x18, 0x11, 0x20, 0x01, 0x28, 0x0e, 0x32, 2603 0x25, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x43, 2604 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x44, 0x6e, 0x73, 0x4c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 2605 0x46, 0x61, 0x6d, 0x69, 0x6c, 0x79, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x82, 0x01, 0x02, 0x10, 0x01, 2606 0x52, 0x0f, 0x64, 0x6e, 0x73, 0x4c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x46, 0x61, 0x6d, 0x69, 0x6c, 2607 0x79, 0x12, 0x3f, 0x0a, 0x0d, 0x64, 0x6e, 0x73, 0x5f, 0x72, 0x65, 0x73, 0x6f, 0x6c, 0x76, 0x65, 2608 0x72, 0x73, 0x18, 0x12, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 2609 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x41, 0x64, 0x64, 2610 0x72, 0x65, 0x73, 0x73, 0x52, 0x0c, 0x64, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x6f, 0x6c, 0x76, 0x65, 2611 0x72, 0x73, 0x12, 0x34, 0x0a, 0x17, 0x75, 0x73, 0x65, 0x5f, 0x74, 0x63, 0x70, 0x5f, 0x66, 0x6f, 2612 0x72, 0x5f, 0x64, 0x6e, 0x73, 0x5f, 0x6c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x73, 0x18, 0x2d, 0x20, 2613 0x01, 0x28, 0x08, 0x52, 0x13, 0x75, 0x73, 0x65, 0x54, 0x63, 0x70, 0x46, 0x6f, 0x72, 0x44, 0x6e, 2614 0x73, 0x4c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x73, 0x12, 0x53, 0x0a, 0x11, 0x6f, 0x75, 0x74, 0x6c, 2615 0x69, 0x65, 0x72, 0x5f, 0x64, 0x65, 0x74, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x13, 0x20, 2616 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e, 2617 0x76, 0x32, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x4f, 0x75, 0x74, 0x6c, 0x69, 2618 0x65, 0x72, 0x44, 0x65, 0x74, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x10, 0x6f, 0x75, 0x74, 2619 0x6c, 0x69, 0x65, 0x72, 0x44, 0x65, 0x74, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x4e, 0x0a, 2620 0x10, 0x63, 0x6c, 0x65, 0x61, 0x6e, 0x75, 0x70, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 2621 0x6c, 0x18, 0x14, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 2622 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 2623 0x6f, 0x6e, 0x42, 0x08, 0xfa, 0x42, 0x05, 0xaa, 0x01, 0x02, 0x2a, 0x00, 0x52, 0x0f, 0x63, 0x6c, 2624 0x65, 0x61, 0x6e, 0x75, 0x70, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x12, 0x4f, 0x0a, 2625 0x14, 0x75, 0x70, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x5f, 0x62, 0x69, 0x6e, 0x64, 0x5f, 0x63, 2626 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x15, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x65, 0x6e, 2627 0x76, 0x6f, 0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 2628 0x42, 0x69, 0x6e, 0x64, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x12, 0x75, 0x70, 0x73, 0x74, 2629 0x72, 0x65, 0x61, 0x6d, 0x42, 0x69, 0x6e, 0x64, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x4e, 2630 0x0a, 0x10, 0x6c, 0x62, 0x5f, 0x73, 0x75, 0x62, 0x73, 0x65, 0x74, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 2631 0x69, 0x67, 0x18, 0x16, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 2632 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 2633 0x4c, 0x62, 0x53, 0x75, 0x62, 0x73, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x0e, 2634 0x6c, 0x62, 0x53, 0x75, 0x62, 0x73, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x57, 2635 0x0a, 0x13, 0x72, 0x69, 0x6e, 0x67, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x5f, 0x6c, 0x62, 0x5f, 0x63, 2636 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x17, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x65, 0x6e, 2637 0x76, 0x6f, 0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 2638 0x65, 0x72, 0x2e, 0x52, 0x69, 0x6e, 0x67, 0x48, 0x61, 0x73, 0x68, 0x4c, 0x62, 0x43, 0x6f, 0x6e, 2639 0x66, 0x69, 0x67, 0x48, 0x01, 0x52, 0x10, 0x72, 0x69, 0x6e, 0x67, 0x48, 0x61, 0x73, 0x68, 0x4c, 2640 0x62, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x60, 0x0a, 0x16, 0x6f, 0x72, 0x69, 0x67, 0x69, 2641 0x6e, 0x61, 0x6c, 0x5f, 0x64, 0x73, 0x74, 0x5f, 0x6c, 0x62, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 2642 0x67, 0x18, 0x22, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 2643 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x4f, 2644 0x72, 0x69, 0x67, 0x69, 0x6e, 0x61, 0x6c, 0x44, 0x73, 0x74, 0x4c, 0x62, 0x43, 0x6f, 0x6e, 0x66, 2645 0x69, 0x67, 0x48, 0x01, 0x52, 0x13, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x61, 0x6c, 0x44, 0x73, 2646 0x74, 0x4c, 0x62, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x63, 0x0a, 0x17, 0x6c, 0x65, 0x61, 2647 0x73, 0x74, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x6c, 0x62, 0x5f, 0x63, 0x6f, 2648 0x6e, 0x66, 0x69, 0x67, 0x18, 0x25, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x65, 0x6e, 0x76, 2649 0x6f, 0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 2650 0x72, 0x2e, 0x4c, 0x65, 0x61, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x4c, 0x62, 2651 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x48, 0x01, 0x52, 0x14, 0x6c, 0x65, 0x61, 0x73, 0x74, 0x52, 2652 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x4c, 0x62, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x4e, 2653 0x0a, 0x10, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x5f, 0x6c, 0x62, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 2654 0x69, 0x67, 0x18, 0x1b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 2655 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 2656 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x4c, 0x62, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x0e, 2657 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x4c, 0x62, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x4d, 2658 0x0a, 0x10, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x73, 0x6f, 0x63, 0x6b, 2659 0x65, 0x74, 0x18, 0x18, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 2660 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x54, 0x72, 0x61, 2661 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x53, 0x6f, 0x63, 0x6b, 0x65, 0x74, 0x52, 0x0f, 0x74, 0x72, 2662 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x53, 0x6f, 0x63, 0x6b, 0x65, 0x74, 0x12, 0x37, 0x0a, 2663 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x19, 0x20, 0x01, 0x28, 0x0b, 0x32, 2664 0x1b, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x63, 2665 0x6f, 0x72, 0x65, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x08, 0x6d, 0x65, 2666 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x5d, 0x0a, 0x12, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 2667 0x6f, 0x6c, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x1a, 0x20, 0x01, 2668 0x28, 0x0e, 0x32, 0x2e, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 2669 0x32, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 2670 0x72, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x69, 2671 0x6f, 0x6e, 0x52, 0x11, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x53, 0x65, 0x6c, 0x65, 2672 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x67, 0x0a, 0x1b, 0x75, 0x70, 0x73, 0x74, 0x72, 0x65, 0x61, 2673 0x6d, 0x5f, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6f, 0x70, 0x74, 2674 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x1e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x65, 0x6e, 0x76, 2675 0x6f, 0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x55, 0x70, 0x73, 0x74, 0x72, 0x65, 2676 0x61, 0x6d, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4f, 0x70, 0x74, 0x69, 2677 0x6f, 0x6e, 0x73, 0x52, 0x19, 0x75, 0x70, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x43, 0x6f, 0x6e, 2678 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x55, 2679 0x0a, 0x28, 0x63, 0x6c, 0x6f, 0x73, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 2680 0x6f, 0x6e, 0x73, 0x5f, 0x6f, 0x6e, 0x5f, 0x68, 0x6f, 0x73, 0x74, 0x5f, 0x68, 0x65, 0x61, 0x6c, 2681 0x74, 0x68, 0x5f, 0x66, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x18, 0x1f, 0x20, 0x01, 0x28, 0x08, 2682 0x52, 0x23, 0x63, 0x6c, 0x6f, 0x73, 0x65, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 2683 0x6e, 0x73, 0x4f, 0x6e, 0x48, 0x6f, 0x73, 0x74, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x46, 0x61, 2684 0x69, 0x6c, 0x75, 0x72, 0x65, 0x12, 0x6f, 0x0a, 0x21, 0x64, 0x72, 0x61, 0x69, 0x6e, 0x5f, 0x63, 2685 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x5f, 0x6f, 0x6e, 0x5f, 0x68, 0x6f, 2686 0x73, 0x74, 0x5f, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x61, 0x6c, 0x18, 0x20, 0x20, 0x01, 0x28, 0x08, 2687 0x42, 0x25, 0xf2, 0x98, 0xfe, 0x8f, 0x05, 0x1f, 0x0a, 0x1d, 0x69, 0x67, 0x6e, 0x6f, 0x72, 0x65, 2688 0x5f, 0x68, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x5f, 0x6f, 0x6e, 0x5f, 0x68, 0x6f, 0x73, 0x74, 0x5f, 2689 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x61, 0x6c, 0x52, 0x1d, 0x64, 0x72, 0x61, 0x69, 0x6e, 0x43, 0x6f, 2690 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x4f, 0x6e, 0x48, 0x6f, 0x73, 0x74, 0x52, 2691 0x65, 0x6d, 0x6f, 0x76, 0x61, 0x6c, 0x12, 0x36, 0x0a, 0x07, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 2692 0x73, 0x18, 0x28, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 2693 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x46, 2694 0x69, 0x6c, 0x74, 0x65, 0x72, 0x52, 0x07, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x12, 0x55, 2695 0x0a, 0x15, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x69, 0x6e, 0x67, 2696 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x18, 0x29, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 2697 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x6f, 0x61, 2698 0x64, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 2699 0x52, 0x13, 0x6c, 0x6f, 0x61, 0x64, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x69, 0x6e, 0x67, 0x50, 2700 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x3e, 0x0a, 0x0a, 0x6c, 0x72, 0x73, 0x5f, 0x73, 0x65, 0x72, 2701 0x76, 0x65, 0x72, 0x18, 0x2a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 2702 0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x43, 0x6f, 2703 0x6e, 0x66, 0x69, 0x67, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x09, 0x6c, 0x72, 0x73, 0x53, 2704 0x65, 0x72, 0x76, 0x65, 0x72, 0x12, 0x32, 0x0a, 0x15, 0x74, 0x72, 0x61, 0x63, 0x6b, 0x5f, 0x74, 2705 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x5f, 0x62, 0x75, 0x64, 0x67, 0x65, 0x74, 0x73, 0x18, 0x2f, 2706 0x20, 0x01, 0x28, 0x08, 0x52, 0x13, 0x74, 0x72, 0x61, 0x63, 0x6b, 0x54, 0x69, 0x6d, 0x65, 0x6f, 2707 0x75, 0x74, 0x42, 0x75, 0x64, 0x67, 0x65, 0x74, 0x73, 0x1a, 0xb1, 0x01, 0x0a, 0x14, 0x54, 0x72, 2708 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x53, 0x6f, 0x63, 0x6b, 0x65, 0x74, 0x4d, 0x61, 0x74, 2709 0x63, 0x68, 0x12, 0x1b, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 2710 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 2711 0x2d, 0x0a, 0x05, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 2712 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 2713 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x52, 0x05, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x12, 0x4d, 2714 0x0a, 0x10, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x73, 0x6f, 0x63, 0x6b, 2715 0x65, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 2716 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x54, 0x72, 0x61, 2717 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x53, 0x6f, 0x63, 0x6b, 0x65, 0x74, 0x52, 0x0f, 0x74, 0x72, 2718 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x53, 0x6f, 0x63, 0x6b, 0x65, 0x74, 0x1a, 0x69, 0x0a, 2719 0x11, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x54, 0x79, 2720 0x70, 0x65, 0x12, 0x1b, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 2721 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x20, 0x01, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 2722 0x37, 0x0a, 0x0c, 0x74, 0x79, 0x70, 0x65, 0x64, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 2723 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 2724 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x41, 0x6e, 0x79, 0x52, 0x0b, 0x74, 0x79, 0x70, 2725 0x65, 0x64, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x1a, 0x75, 0x0a, 0x10, 0x45, 0x64, 0x73, 0x43, 2726 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x3e, 0x0a, 0x0a, 2727 0x65, 0x64, 0x73, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 2728 0x32, 0x1f, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 2729 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x53, 0x6f, 0x75, 0x72, 0x63, 2730 0x65, 0x52, 0x09, 0x65, 0x64, 0x73, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x21, 0x0a, 0x0c, 2731 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 2732 0x28, 0x09, 0x52, 0x0b, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x1a, 2733 0x81, 0x07, 0x0a, 0x0e, 0x4c, 0x62, 0x53, 0x75, 0x62, 0x73, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x66, 2734 0x69, 0x67, 0x12, 0x6e, 0x0a, 0x0f, 0x66, 0x61, 0x6c, 0x6c, 0x62, 0x61, 0x63, 0x6b, 0x5f, 0x70, 2735 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x3b, 0x2e, 0x65, 0x6e, 2736 0x76, 0x6f, 0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 2737 0x65, 0x72, 0x2e, 0x4c, 0x62, 0x53, 0x75, 0x62, 0x73, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 2738 0x67, 0x2e, 0x4c, 0x62, 0x53, 0x75, 0x62, 0x73, 0x65, 0x74, 0x46, 0x61, 0x6c, 0x6c, 0x62, 0x61, 2739 0x63, 0x6b, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x82, 0x01, 0x02, 2740 0x10, 0x01, 0x52, 0x0e, 0x66, 0x61, 0x6c, 0x6c, 0x62, 0x61, 0x63, 0x6b, 0x50, 0x6f, 0x6c, 0x69, 2741 0x63, 0x79, 0x12, 0x3e, 0x0a, 0x0e, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x73, 0x75, 2742 0x62, 0x73, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x6f, 0x6f, 2743 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 2744 0x75, 0x63, 0x74, 0x52, 0x0d, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x53, 0x75, 0x62, 0x73, 2745 0x65, 0x74, 0x12, 0x60, 0x0a, 0x10, 0x73, 0x75, 0x62, 0x73, 0x65, 0x74, 0x5f, 0x73, 0x65, 0x6c, 2746 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x65, 2747 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x43, 0x6c, 0x75, 0x73, 2748 0x74, 0x65, 0x72, 0x2e, 0x4c, 0x62, 0x53, 0x75, 0x62, 0x73, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x66, 2749 0x69, 0x67, 0x2e, 0x4c, 0x62, 0x53, 0x75, 0x62, 0x73, 0x65, 0x74, 0x53, 0x65, 0x6c, 0x65, 0x63, 2750 0x74, 0x6f, 0x72, 0x52, 0x0f, 0x73, 0x75, 0x62, 0x73, 0x65, 0x74, 0x53, 0x65, 0x6c, 0x65, 0x63, 2751 0x74, 0x6f, 0x72, 0x73, 0x12, 0x32, 0x0a, 0x15, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x69, 0x74, 0x79, 2752 0x5f, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x5f, 0x61, 0x77, 0x61, 0x72, 0x65, 0x18, 0x04, 0x20, 2753 0x01, 0x28, 0x08, 0x52, 0x13, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x57, 0x65, 0x69, 2754 0x67, 0x68, 0x74, 0x41, 0x77, 0x61, 0x72, 0x65, 0x12, 0x32, 0x0a, 0x15, 0x73, 0x63, 0x61, 0x6c, 2755 0x65, 0x5f, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x5f, 0x77, 0x65, 0x69, 0x67, 0x68, 2756 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x13, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x4c, 0x6f, 2757 0x63, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x24, 0x0a, 0x0e, 2758 0x70, 0x61, 0x6e, 0x69, 0x63, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x5f, 0x61, 0x6e, 0x79, 0x18, 0x06, 2759 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x70, 0x61, 0x6e, 0x69, 0x63, 0x4d, 0x6f, 0x64, 0x65, 0x41, 2760 0x6e, 0x79, 0x12, 0x1e, 0x0a, 0x0b, 0x6c, 0x69, 0x73, 0x74, 0x5f, 0x61, 0x73, 0x5f, 0x61, 0x6e, 2761 0x79, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x6c, 0x69, 0x73, 0x74, 0x41, 0x73, 0x41, 2762 0x6e, 0x79, 0x1a, 0xdd, 0x02, 0x0a, 0x10, 0x4c, 0x62, 0x53, 0x75, 0x62, 0x73, 0x65, 0x74, 0x53, 2763 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x6b, 0x65, 0x79, 0x73, 0x18, 2764 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x04, 0x6b, 0x65, 0x79, 0x73, 0x12, 0x87, 0x01, 0x0a, 0x0f, 2765 0x66, 0x61, 0x6c, 0x6c, 0x62, 0x61, 0x63, 0x6b, 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x18, 2766 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x54, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x61, 0x70, 2767 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x4c, 0x62, 0x53, 2768 0x75, 0x62, 0x73, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x4c, 0x62, 0x53, 0x75, 2769 0x62, 0x73, 0x65, 0x74, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x2e, 0x4c, 0x62, 0x53, 2770 0x75, 0x62, 0x73, 0x65, 0x74, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x46, 0x61, 0x6c, 2771 0x6c, 0x62, 0x61, 0x63, 0x6b, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x42, 0x08, 0xfa, 0x42, 0x05, 2772 0x82, 0x01, 0x02, 0x10, 0x01, 0x52, 0x0e, 0x66, 0x61, 0x6c, 0x6c, 0x62, 0x61, 0x63, 0x6b, 0x50, 2773 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x30, 0x0a, 0x14, 0x66, 0x61, 0x6c, 0x6c, 0x62, 0x61, 0x63, 2774 0x6b, 0x5f, 0x6b, 0x65, 0x79, 0x73, 0x5f, 0x73, 0x75, 0x62, 0x73, 0x65, 0x74, 0x18, 0x03, 0x20, 2775 0x03, 0x28, 0x09, 0x52, 0x12, 0x66, 0x61, 0x6c, 0x6c, 0x62, 0x61, 0x63, 0x6b, 0x4b, 0x65, 0x79, 2776 0x73, 0x53, 0x75, 0x62, 0x73, 0x65, 0x74, 0x22, 0x79, 0x0a, 0x1e, 0x4c, 0x62, 0x53, 0x75, 0x62, 2777 0x73, 0x65, 0x74, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x46, 0x61, 0x6c, 0x6c, 0x62, 2778 0x61, 0x63, 0x6b, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x0f, 0x0a, 0x0b, 0x4e, 0x4f, 0x54, 2779 0x5f, 0x44, 0x45, 0x46, 0x49, 0x4e, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0f, 0x0a, 0x0b, 0x4e, 0x4f, 2780 0x5f, 0x46, 0x41, 0x4c, 0x4c, 0x42, 0x41, 0x43, 0x4b, 0x10, 0x01, 0x12, 0x10, 0x0a, 0x0c, 0x41, 2781 0x4e, 0x59, 0x5f, 0x45, 0x4e, 0x44, 0x50, 0x4f, 0x49, 0x4e, 0x54, 0x10, 0x02, 0x12, 0x12, 0x0a, 2782 0x0e, 0x44, 0x45, 0x46, 0x41, 0x55, 0x4c, 0x54, 0x5f, 0x53, 0x55, 0x42, 0x53, 0x45, 0x54, 0x10, 2783 0x03, 0x12, 0x0f, 0x0a, 0x0b, 0x4b, 0x45, 0x59, 0x53, 0x5f, 0x53, 0x55, 0x42, 0x53, 0x45, 0x54, 2784 0x10, 0x04, 0x22, 0x4f, 0x0a, 0x16, 0x4c, 0x62, 0x53, 0x75, 0x62, 0x73, 0x65, 0x74, 0x46, 0x61, 2785 0x6c, 0x6c, 0x62, 0x61, 0x63, 0x6b, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x0f, 0x0a, 0x0b, 2786 0x4e, 0x4f, 0x5f, 0x46, 0x41, 0x4c, 0x4c, 0x42, 0x41, 0x43, 0x4b, 0x10, 0x00, 0x12, 0x10, 0x0a, 2787 0x0c, 0x41, 0x4e, 0x59, 0x5f, 0x45, 0x4e, 0x44, 0x50, 0x4f, 0x49, 0x4e, 0x54, 0x10, 0x01, 0x12, 2788 0x12, 0x0a, 0x0e, 0x44, 0x45, 0x46, 0x41, 0x55, 0x4c, 0x54, 0x5f, 0x53, 0x55, 0x42, 0x53, 0x45, 2789 0x54, 0x10, 0x02, 0x1a, 0x60, 0x0a, 0x14, 0x4c, 0x65, 0x61, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 2790 0x65, 0x73, 0x74, 0x4c, 0x62, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x48, 0x0a, 0x0c, 0x63, 2791 0x68, 0x6f, 0x69, 0x63, 0x65, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 2792 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 2793 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, 2794 0x07, 0xfa, 0x42, 0x04, 0x2a, 0x02, 0x28, 0x02, 0x52, 0x0b, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 2795 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x1a, 0xd8, 0x02, 0x0a, 0x10, 0x52, 0x69, 0x6e, 0x67, 0x48, 0x61, 2796 0x73, 0x68, 0x4c, 0x62, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x54, 0x0a, 0x11, 0x6d, 0x69, 2797 0x6e, 0x69, 0x6d, 0x75, 0x6d, 0x5f, 0x72, 0x69, 0x6e, 0x67, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 2798 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 2799 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x56, 0x61, 2800 0x6c, 0x75, 0x65, 0x42, 0x0a, 0xfa, 0x42, 0x07, 0x32, 0x05, 0x18, 0x80, 0x80, 0x80, 0x04, 0x52, 2801 0x0f, 0x6d, 0x69, 0x6e, 0x69, 0x6d, 0x75, 0x6d, 0x52, 0x69, 0x6e, 0x67, 0x53, 0x69, 0x7a, 0x65, 2802 0x12, 0x62, 0x0a, 0x0d, 0x68, 0x61, 0x73, 0x68, 0x5f, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 2803 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x33, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 2804 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x52, 2805 0x69, 0x6e, 0x67, 0x48, 0x61, 0x73, 0x68, 0x4c, 0x62, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 2806 0x48, 0x61, 0x73, 0x68, 0x46, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x08, 0xfa, 0x42, 2807 0x05, 0x82, 0x01, 0x02, 0x10, 0x01, 0x52, 0x0c, 0x68, 0x61, 0x73, 0x68, 0x46, 0x75, 0x6e, 0x63, 2808 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x54, 0x0a, 0x11, 0x6d, 0x61, 0x78, 0x69, 0x6d, 0x75, 0x6d, 0x5f, 2809 0x72, 0x69, 0x6e, 0x67, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 2810 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 2811 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x0a, 0xfa, 2812 0x42, 0x07, 0x32, 0x05, 0x18, 0x80, 0x80, 0x80, 0x04, 0x52, 0x0f, 0x6d, 0x61, 0x78, 0x69, 0x6d, 2813 0x75, 0x6d, 0x52, 0x69, 0x6e, 0x67, 0x53, 0x69, 0x7a, 0x65, 0x22, 0x2e, 0x0a, 0x0c, 0x48, 0x61, 2814 0x73, 0x68, 0x46, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x0b, 0x0a, 0x07, 0x58, 0x58, 2815 0x5f, 0x48, 0x41, 0x53, 0x48, 0x10, 0x00, 0x12, 0x11, 0x0a, 0x0d, 0x4d, 0x55, 0x52, 0x4d, 0x55, 2816 0x52, 0x5f, 0x48, 0x41, 0x53, 0x48, 0x5f, 0x32, 0x10, 0x01, 0x4a, 0x04, 0x08, 0x02, 0x10, 0x03, 2817 0x1a, 0x3d, 0x0a, 0x13, 0x4f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x61, 0x6c, 0x44, 0x73, 0x74, 0x4c, 2818 0x62, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x26, 0x0a, 0x0f, 0x75, 0x73, 0x65, 0x5f, 0x68, 2819 0x74, 0x74, 0x70, 0x5f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 2820 0x52, 0x0d, 0x75, 0x73, 0x65, 0x48, 0x74, 0x74, 0x70, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x1a, 2821 0x86, 0x08, 0x0a, 0x0e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x4c, 0x62, 0x43, 0x6f, 0x6e, 0x66, 2822 0x69, 0x67, 0x12, 0x4b, 0x0a, 0x17, 0x68, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x79, 0x5f, 0x70, 0x61, 2823 0x6e, 0x69, 0x63, 0x5f, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x18, 0x01, 0x20, 2824 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x74, 0x79, 0x70, 0x65, 2825 0x2e, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x52, 0x15, 0x68, 0x65, 0x61, 0x6c, 0x74, 0x68, 2826 0x79, 0x50, 0x61, 0x6e, 0x69, 0x63, 0x54, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x12, 2827 0x69, 0x0a, 0x14, 0x7a, 0x6f, 0x6e, 0x65, 0x5f, 0x61, 0x77, 0x61, 0x72, 0x65, 0x5f, 0x6c, 0x62, 2828 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x36, 0x2e, 2829 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x43, 0x6c, 0x75, 2830 0x73, 0x74, 0x65, 0x72, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x4c, 0x62, 0x43, 0x6f, 0x6e, 2831 0x66, 0x69, 0x67, 0x2e, 0x5a, 0x6f, 0x6e, 0x65, 0x41, 0x77, 0x61, 0x72, 0x65, 0x4c, 0x62, 0x43, 2832 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x48, 0x00, 0x52, 0x11, 0x7a, 0x6f, 0x6e, 0x65, 0x41, 0x77, 0x61, 2833 0x72, 0x65, 0x4c, 0x62, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x7e, 0x0a, 0x1b, 0x6c, 0x6f, 2834 0x63, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x5f, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x65, 0x64, 0x5f, 2835 0x6c, 0x62, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 2836 0x3d, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x43, 2837 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x4c, 0x62, 0x43, 2838 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x57, 0x65, 2839 0x69, 0x67, 0x68, 0x74, 0x65, 0x64, 0x4c, 0x62, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x48, 0x00, 2840 0x52, 0x18, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 2841 0x65, 0x64, 0x4c, 0x62, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x49, 0x0a, 0x13, 0x75, 0x70, 2842 0x64, 0x61, 0x74, 0x65, 0x5f, 0x6d, 0x65, 0x72, 0x67, 0x65, 0x5f, 0x77, 0x69, 0x6e, 0x64, 0x6f, 2843 0x77, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 2844 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 2845 0x6f, 0x6e, 0x52, 0x11, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4d, 0x65, 0x72, 0x67, 0x65, 0x57, 2846 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x12, 0x43, 0x0a, 0x1f, 0x69, 0x67, 0x6e, 0x6f, 0x72, 0x65, 0x5f, 2847 0x6e, 0x65, 0x77, 0x5f, 0x68, 0x6f, 0x73, 0x74, 0x73, 0x5f, 0x75, 0x6e, 0x74, 0x69, 0x6c, 0x5f, 2848 0x66, 0x69, 0x72, 0x73, 0x74, 0x5f, 0x68, 0x63, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x1a, 2849 0x69, 0x67, 0x6e, 0x6f, 0x72, 0x65, 0x4e, 0x65, 0x77, 0x48, 0x6f, 0x73, 0x74, 0x73, 0x55, 0x6e, 2850 0x74, 0x69, 0x6c, 0x46, 0x69, 0x72, 0x73, 0x74, 0x48, 0x63, 0x12, 0x4d, 0x0a, 0x24, 0x63, 0x6c, 2851 0x6f, 0x73, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x5f, 2852 0x6f, 0x6e, 0x5f, 0x68, 0x6f, 0x73, 0x74, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x63, 0x68, 0x61, 0x6e, 2853 0x67, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x1f, 0x63, 0x6c, 0x6f, 0x73, 0x65, 0x43, 2854 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x4f, 0x6e, 0x48, 0x6f, 0x73, 0x74, 2855 0x53, 0x65, 0x74, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x7f, 0x0a, 0x1c, 0x63, 0x6f, 0x6e, 2856 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x69, 0x6e, 0x67, 0x5f, 2857 0x6c, 0x62, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 2858 0x3e, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x43, 2859 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x4c, 0x62, 0x43, 2860 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x43, 0x6f, 0x6e, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 2861 0x48, 0x61, 0x73, 0x68, 0x69, 0x6e, 0x67, 0x4c, 0x62, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 2862 0x19, 0x63, 0x6f, 0x6e, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x48, 0x61, 0x73, 0x68, 0x69, 2863 0x6e, 0x67, 0x4c, 0x62, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x1a, 0xcc, 0x01, 0x0a, 0x11, 0x5a, 2864 0x6f, 0x6e, 0x65, 0x41, 0x77, 0x61, 0x72, 0x65, 0x4c, 0x62, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 2865 0x12, 0x3c, 0x0a, 0x0f, 0x72, 0x6f, 0x75, 0x74, 0x69, 0x6e, 0x67, 0x5f, 0x65, 0x6e, 0x61, 0x62, 2866 0x6c, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 2867 0x79, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x2e, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x52, 0x0e, 2868 0x72, 0x6f, 0x75, 0x74, 0x69, 0x6e, 0x67, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x46, 2869 0x0a, 0x10, 0x6d, 0x69, 0x6e, 0x5f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x73, 0x69, 2870 0x7a, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 2871 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x36, 2872 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0e, 0x6d, 0x69, 0x6e, 0x43, 0x6c, 0x75, 0x73, 0x74, 2873 0x65, 0x72, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x31, 0x0a, 0x15, 0x66, 0x61, 0x69, 0x6c, 0x5f, 0x74, 2874 0x72, 0x61, 0x66, 0x66, 0x69, 0x63, 0x5f, 0x6f, 0x6e, 0x5f, 0x70, 0x61, 0x6e, 0x69, 0x63, 0x18, 2875 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x12, 0x66, 0x61, 0x69, 0x6c, 0x54, 0x72, 0x61, 0x66, 0x66, 2876 0x69, 0x63, 0x4f, 0x6e, 0x50, 0x61, 0x6e, 0x69, 0x63, 0x1a, 0x1a, 0x0a, 0x18, 0x4c, 0x6f, 0x63, 2877 0x61, 0x6c, 0x69, 0x74, 0x79, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x65, 0x64, 0x4c, 0x62, 0x43, 2878 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x1a, 0x54, 0x0a, 0x19, 0x43, 0x6f, 0x6e, 0x73, 0x69, 0x73, 0x74, 2879 0x65, 0x6e, 0x74, 0x48, 0x61, 0x73, 0x68, 0x69, 0x6e, 0x67, 0x4c, 0x62, 0x43, 0x6f, 0x6e, 0x66, 2880 0x69, 0x67, 0x12, 0x37, 0x0a, 0x18, 0x75, 0x73, 0x65, 0x5f, 0x68, 0x6f, 0x73, 0x74, 0x6e, 0x61, 2881 0x6d, 0x65, 0x5f, 0x66, 0x6f, 0x72, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x69, 0x6e, 0x67, 0x18, 0x01, 2882 0x20, 0x01, 0x28, 0x08, 0x52, 0x15, 0x75, 0x73, 0x65, 0x48, 0x6f, 0x73, 0x74, 0x6e, 0x61, 0x6d, 2883 0x65, 0x46, 0x6f, 0x72, 0x48, 0x61, 0x73, 0x68, 0x69, 0x6e, 0x67, 0x42, 0x1b, 0x0a, 0x19, 0x6c, 2884 0x6f, 0x63, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x5f, 0x73, 2885 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x72, 0x1a, 0xa9, 0x01, 0x0a, 0x0b, 0x52, 0x65, 0x66, 2886 0x72, 0x65, 0x73, 0x68, 0x52, 0x61, 0x74, 0x65, 0x12, 0x4e, 0x0a, 0x0d, 0x62, 0x61, 0x73, 0x65, 2887 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 2888 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 2889 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x0e, 0xfa, 0x42, 0x0b, 0xaa, 2890 0x01, 0x08, 0x08, 0x01, 0x2a, 0x04, 0x10, 0xc0, 0x84, 0x3d, 0x52, 0x0c, 0x62, 0x61, 0x73, 0x65, 2891 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x12, 0x4a, 0x0a, 0x0c, 0x6d, 0x61, 0x78, 0x5f, 2892 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 2893 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 2894 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x0c, 0xfa, 0x42, 0x09, 0xaa, 0x01, 2895 0x06, 0x2a, 0x04, 0x10, 0xc0, 0x84, 0x3d, 0x52, 0x0b, 0x6d, 0x61, 0x78, 0x49, 0x6e, 0x74, 0x65, 2896 0x72, 0x76, 0x61, 0x6c, 0x1a, 0x64, 0x0a, 0x1d, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 2897 0x6e, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 2898 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 2899 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x2d, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 2900 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 2901 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x52, 2902 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x66, 0x0a, 0x22, 0x54, 0x79, 2903 0x70, 0x65, 0x64, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x50, 0x72, 0x6f, 0x74, 2904 0x6f, 0x63, 0x6f, 0x6c, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 2905 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 2906 0x65, 0x79, 0x12, 0x2a, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 2907 0x0b, 0x32, 0x14, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 2908 0x62, 0x75, 0x66, 0x2e, 0x41, 0x6e, 0x79, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 2909 0x38, 0x01, 0x22, 0x57, 0x0a, 0x0d, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x54, 2910 0x79, 0x70, 0x65, 0x12, 0x0a, 0x0a, 0x06, 0x53, 0x54, 0x41, 0x54, 0x49, 0x43, 0x10, 0x00, 0x12, 2911 0x0e, 0x0a, 0x0a, 0x53, 0x54, 0x52, 0x49, 0x43, 0x54, 0x5f, 0x44, 0x4e, 0x53, 0x10, 0x01, 0x12, 2912 0x0f, 0x0a, 0x0b, 0x4c, 0x4f, 0x47, 0x49, 0x43, 0x41, 0x4c, 0x5f, 0x44, 0x4e, 0x53, 0x10, 0x02, 2913 0x12, 0x07, 0x0a, 0x03, 0x45, 0x44, 0x53, 0x10, 0x03, 0x12, 0x10, 0x0a, 0x0c, 0x4f, 0x52, 0x49, 2914 0x47, 0x49, 0x4e, 0x41, 0x4c, 0x5f, 0x44, 0x53, 0x54, 0x10, 0x04, 0x22, 0xac, 0x01, 0x0a, 0x08, 2915 0x4c, 0x62, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x0f, 0x0a, 0x0b, 0x52, 0x4f, 0x55, 0x4e, 2916 0x44, 0x5f, 0x52, 0x4f, 0x42, 0x49, 0x4e, 0x10, 0x00, 0x12, 0x11, 0x0a, 0x0d, 0x4c, 0x45, 0x41, 2917 0x53, 0x54, 0x5f, 0x52, 0x45, 0x51, 0x55, 0x45, 0x53, 0x54, 0x10, 0x01, 0x12, 0x0d, 0x0a, 0x09, 2918 0x52, 0x49, 0x4e, 0x47, 0x5f, 0x48, 0x41, 0x53, 0x48, 0x10, 0x02, 0x12, 0x0a, 0x0a, 0x06, 0x52, 2919 0x41, 0x4e, 0x44, 0x4f, 0x4d, 0x10, 0x03, 0x12, 0x1d, 0x0a, 0x0f, 0x4f, 0x52, 0x49, 0x47, 0x49, 2920 0x4e, 0x41, 0x4c, 0x5f, 0x44, 0x53, 0x54, 0x5f, 0x4c, 0x42, 0x10, 0x04, 0x1a, 0x08, 0x08, 0x01, 2921 0xa8, 0xf7, 0xb4, 0x8b, 0x02, 0x01, 0x12, 0x0a, 0x0a, 0x06, 0x4d, 0x41, 0x47, 0x4c, 0x45, 0x56, 2922 0x10, 0x05, 0x12, 0x14, 0x0a, 0x10, 0x43, 0x4c, 0x55, 0x53, 0x54, 0x45, 0x52, 0x5f, 0x50, 0x52, 2923 0x4f, 0x56, 0x49, 0x44, 0x45, 0x44, 0x10, 0x06, 0x12, 0x20, 0x0a, 0x1c, 0x4c, 0x4f, 0x41, 0x44, 2924 0x5f, 0x42, 0x41, 0x4c, 0x41, 0x4e, 0x43, 0x49, 0x4e, 0x47, 0x5f, 0x50, 0x4f, 0x4c, 0x49, 0x43, 2925 0x59, 0x5f, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x10, 0x07, 0x22, 0x35, 0x0a, 0x0f, 0x44, 0x6e, 2926 0x73, 0x4c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x46, 0x61, 0x6d, 0x69, 0x6c, 0x79, 0x12, 0x08, 0x0a, 2927 0x04, 0x41, 0x55, 0x54, 0x4f, 0x10, 0x00, 0x12, 0x0b, 0x0a, 0x07, 0x56, 0x34, 0x5f, 0x4f, 0x4e, 2928 0x4c, 0x59, 0x10, 0x01, 0x12, 0x0b, 0x0a, 0x07, 0x56, 0x36, 0x5f, 0x4f, 0x4e, 0x4c, 0x59, 0x10, 2929 0x02, 0x22, 0x54, 0x0a, 0x18, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x50, 0x72, 0x6f, 0x74, 2930 0x6f, 0x63, 0x6f, 0x6c, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1b, 0x0a, 2931 0x17, 0x55, 0x53, 0x45, 0x5f, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x55, 0x52, 0x45, 0x44, 0x5f, 2932 0x50, 0x52, 0x4f, 0x54, 0x4f, 0x43, 0x4f, 0x4c, 0x10, 0x00, 0x12, 0x1b, 0x0a, 0x17, 0x55, 0x53, 2933 0x45, 0x5f, 0x44, 0x4f, 0x57, 0x4e, 0x53, 0x54, 0x52, 0x45, 0x41, 0x4d, 0x5f, 0x50, 0x52, 0x4f, 2934 0x54, 0x4f, 0x43, 0x4f, 0x4c, 0x10, 0x01, 0x42, 0x18, 0x0a, 0x16, 0x63, 0x6c, 0x75, 0x73, 0x74, 2935 0x65, 0x72, 0x5f, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x5f, 0x74, 0x79, 0x70, 2936 0x65, 0x42, 0x0b, 0x0a, 0x09, 0x6c, 0x62, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4a, 0x04, 2937 0x08, 0x0c, 0x10, 0x0d, 0x4a, 0x04, 0x08, 0x0f, 0x10, 0x10, 0x22, 0xe8, 0x01, 0x0a, 0x13, 0x4c, 2938 0x6f, 0x61, 0x64, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x6c, 0x69, 2939 0x63, 0x79, 0x12, 0x44, 0x0a, 0x08, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x18, 0x01, 2940 0x20, 0x03, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x61, 0x70, 0x69, 2941 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x6f, 0x61, 0x64, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x69, 0x6e, 2942 0x67, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x08, 2943 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x1a, 0x8a, 0x01, 0x0a, 0x06, 0x50, 0x6f, 0x6c, 2944 0x69, 0x63, 0x79, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 2945 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x33, 0x0a, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 2946 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 2947 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 2948 0x42, 0x02, 0x18, 0x01, 0x52, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x37, 0x0a, 0x0c, 2949 0x74, 0x79, 0x70, 0x65, 0x64, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x03, 0x20, 0x01, 2950 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 2951 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x41, 0x6e, 0x79, 0x52, 0x0b, 0x74, 0x79, 0x70, 0x65, 0x64, 0x43, 2952 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x22, 0x57, 0x0a, 0x12, 0x55, 0x70, 0x73, 0x74, 0x72, 0x65, 0x61, 2953 0x6d, 0x42, 0x69, 0x6e, 0x64, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x41, 0x0a, 0x0e, 0x73, 2954 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 2955 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e, 2956 0x76, 0x32, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x52, 2957 0x0d, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x22, 0x61, 2958 0x0a, 0x19, 0x55, 0x70, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 2959 0x74, 0x69, 0x6f, 0x6e, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x44, 0x0a, 0x0d, 0x74, 2960 0x63, 0x70, 0x5f, 0x6b, 0x65, 0x65, 0x70, 0x61, 0x6c, 0x69, 0x76, 0x65, 0x18, 0x01, 0x20, 0x01, 2961 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 2962 0x32, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x54, 0x63, 0x70, 0x4b, 0x65, 0x65, 0x70, 0x61, 0x6c, 2963 0x69, 0x76, 0x65, 0x52, 0x0c, 0x74, 0x63, 0x70, 0x4b, 0x65, 0x65, 0x70, 0x61, 0x6c, 0x69, 0x76, 2964 0x65, 0x42, 0x53, 0x0a, 0x1a, 0x69, 0x6f, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x70, 0x72, 0x6f, 2965 0x78, 0x79, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x42, 2966 0x0c, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0xf2, 2967 0x98, 0xfe, 0x8f, 0x05, 0x19, 0x12, 0x17, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x63, 0x6f, 0x6e, 2968 0x66, 0x69, 0x67, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x76, 0x33, 0xba, 0x80, 2969 0xc8, 0xd1, 0x06, 0x02, 0x10, 0x01, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, 2970 } 2971 2972 var ( 2973 file_envoy_api_v2_cluster_proto_rawDescOnce sync.Once 2974 file_envoy_api_v2_cluster_proto_rawDescData = file_envoy_api_v2_cluster_proto_rawDesc 2975 ) 2976 2977 func file_envoy_api_v2_cluster_proto_rawDescGZIP() []byte { 2978 file_envoy_api_v2_cluster_proto_rawDescOnce.Do(func() { 2979 file_envoy_api_v2_cluster_proto_rawDescData = protoimpl.X.CompressGZIP(file_envoy_api_v2_cluster_proto_rawDescData) 2980 }) 2981 return file_envoy_api_v2_cluster_proto_rawDescData 2982 } 2983 2984 var file_envoy_api_v2_cluster_proto_enumTypes = make([]protoimpl.EnumInfo, 7) 2985 var file_envoy_api_v2_cluster_proto_msgTypes = make([]protoimpl.MessageInfo, 20) 2986 var file_envoy_api_v2_cluster_proto_goTypes = []interface{}{ 2987 (Cluster_DiscoveryType)(0), // 0: envoy.api.v2.Cluster.DiscoveryType 2988 (Cluster_LbPolicy)(0), // 1: envoy.api.v2.Cluster.LbPolicy 2989 (Cluster_DnsLookupFamily)(0), // 2: envoy.api.v2.Cluster.DnsLookupFamily 2990 (Cluster_ClusterProtocolSelection)(0), // 3: envoy.api.v2.Cluster.ClusterProtocolSelection 2991 (Cluster_LbSubsetConfig_LbSubsetFallbackPolicy)(0), // 4: envoy.api.v2.Cluster.LbSubsetConfig.LbSubsetFallbackPolicy 2992 (Cluster_LbSubsetConfig_LbSubsetSelector_LbSubsetSelectorFallbackPolicy)(0), // 5: envoy.api.v2.Cluster.LbSubsetConfig.LbSubsetSelector.LbSubsetSelectorFallbackPolicy 2993 (Cluster_RingHashLbConfig_HashFunction)(0), // 6: envoy.api.v2.Cluster.RingHashLbConfig.HashFunction 2994 (*Cluster)(nil), // 7: envoy.api.v2.Cluster 2995 (*LoadBalancingPolicy)(nil), // 8: envoy.api.v2.LoadBalancingPolicy 2996 (*UpstreamBindConfig)(nil), // 9: envoy.api.v2.UpstreamBindConfig 2997 (*UpstreamConnectionOptions)(nil), // 10: envoy.api.v2.UpstreamConnectionOptions 2998 (*Cluster_TransportSocketMatch)(nil), // 11: envoy.api.v2.Cluster.TransportSocketMatch 2999 (*Cluster_CustomClusterType)(nil), // 12: envoy.api.v2.Cluster.CustomClusterType 3000 (*Cluster_EdsClusterConfig)(nil), // 13: envoy.api.v2.Cluster.EdsClusterConfig 3001 (*Cluster_LbSubsetConfig)(nil), // 14: envoy.api.v2.Cluster.LbSubsetConfig 3002 (*Cluster_LeastRequestLbConfig)(nil), // 15: envoy.api.v2.Cluster.LeastRequestLbConfig 3003 (*Cluster_RingHashLbConfig)(nil), // 16: envoy.api.v2.Cluster.RingHashLbConfig 3004 (*Cluster_OriginalDstLbConfig)(nil), // 17: envoy.api.v2.Cluster.OriginalDstLbConfig 3005 (*Cluster_CommonLbConfig)(nil), // 18: envoy.api.v2.Cluster.CommonLbConfig 3006 (*Cluster_RefreshRate)(nil), // 19: envoy.api.v2.Cluster.RefreshRate 3007 nil, // 20: envoy.api.v2.Cluster.ExtensionProtocolOptionsEntry 3008 nil, // 21: envoy.api.v2.Cluster.TypedExtensionProtocolOptionsEntry 3009 (*Cluster_LbSubsetConfig_LbSubsetSelector)(nil), // 22: envoy.api.v2.Cluster.LbSubsetConfig.LbSubsetSelector 3010 (*Cluster_CommonLbConfig_ZoneAwareLbConfig)(nil), // 23: envoy.api.v2.Cluster.CommonLbConfig.ZoneAwareLbConfig 3011 (*Cluster_CommonLbConfig_LocalityWeightedLbConfig)(nil), // 24: envoy.api.v2.Cluster.CommonLbConfig.LocalityWeightedLbConfig 3012 (*Cluster_CommonLbConfig_ConsistentHashingLbConfig)(nil), // 25: envoy.api.v2.Cluster.CommonLbConfig.ConsistentHashingLbConfig 3013 (*LoadBalancingPolicy_Policy)(nil), // 26: envoy.api.v2.LoadBalancingPolicy.Policy 3014 (*duration.Duration)(nil), // 27: google.protobuf.Duration 3015 (*wrappers.UInt32Value)(nil), // 28: google.protobuf.UInt32Value 3016 (*core.Address)(nil), // 29: envoy.api.v2.core.Address 3017 (*ClusterLoadAssignment)(nil), // 30: envoy.api.v2.ClusterLoadAssignment 3018 (*core.HealthCheck)(nil), // 31: envoy.api.v2.core.HealthCheck 3019 (*cluster.CircuitBreakers)(nil), // 32: envoy.api.v2.cluster.CircuitBreakers 3020 (*auth.UpstreamTlsContext)(nil), // 33: envoy.api.v2.auth.UpstreamTlsContext 3021 (*core.UpstreamHttpProtocolOptions)(nil), // 34: envoy.api.v2.core.UpstreamHttpProtocolOptions 3022 (*core.HttpProtocolOptions)(nil), // 35: envoy.api.v2.core.HttpProtocolOptions 3023 (*core.Http1ProtocolOptions)(nil), // 36: envoy.api.v2.core.Http1ProtocolOptions 3024 (*core.Http2ProtocolOptions)(nil), // 37: envoy.api.v2.core.Http2ProtocolOptions 3025 (*cluster.OutlierDetection)(nil), // 38: envoy.api.v2.cluster.OutlierDetection 3026 (*core.BindConfig)(nil), // 39: envoy.api.v2.core.BindConfig 3027 (*core.TransportSocket)(nil), // 40: envoy.api.v2.core.TransportSocket 3028 (*core.Metadata)(nil), // 41: envoy.api.v2.core.Metadata 3029 (*cluster.Filter)(nil), // 42: envoy.api.v2.cluster.Filter 3030 (*core.ConfigSource)(nil), // 43: envoy.api.v2.core.ConfigSource 3031 (*core.TcpKeepalive)(nil), // 44: envoy.api.v2.core.TcpKeepalive 3032 (*_struct.Struct)(nil), // 45: google.protobuf.Struct 3033 (*any.Any)(nil), // 46: google.protobuf.Any 3034 (*wrappers.UInt64Value)(nil), // 47: google.protobuf.UInt64Value 3035 (*_type.Percent)(nil), // 48: envoy.type.Percent 3036 } 3037 var file_envoy_api_v2_cluster_proto_depIdxs = []int32{ 3038 11, // 0: envoy.api.v2.Cluster.transport_socket_matches:type_name -> envoy.api.v2.Cluster.TransportSocketMatch 3039 0, // 1: envoy.api.v2.Cluster.type:type_name -> envoy.api.v2.Cluster.DiscoveryType 3040 12, // 2: envoy.api.v2.Cluster.cluster_type:type_name -> envoy.api.v2.Cluster.CustomClusterType 3041 13, // 3: envoy.api.v2.Cluster.eds_cluster_config:type_name -> envoy.api.v2.Cluster.EdsClusterConfig 3042 27, // 4: envoy.api.v2.Cluster.connect_timeout:type_name -> google.protobuf.Duration 3043 28, // 5: envoy.api.v2.Cluster.per_connection_buffer_limit_bytes:type_name -> google.protobuf.UInt32Value 3044 1, // 6: envoy.api.v2.Cluster.lb_policy:type_name -> envoy.api.v2.Cluster.LbPolicy 3045 29, // 7: envoy.api.v2.Cluster.hosts:type_name -> envoy.api.v2.core.Address 3046 30, // 8: envoy.api.v2.Cluster.load_assignment:type_name -> envoy.api.v2.ClusterLoadAssignment 3047 31, // 9: envoy.api.v2.Cluster.health_checks:type_name -> envoy.api.v2.core.HealthCheck 3048 28, // 10: envoy.api.v2.Cluster.max_requests_per_connection:type_name -> google.protobuf.UInt32Value 3049 32, // 11: envoy.api.v2.Cluster.circuit_breakers:type_name -> envoy.api.v2.cluster.CircuitBreakers 3050 33, // 12: envoy.api.v2.Cluster.tls_context:type_name -> envoy.api.v2.auth.UpstreamTlsContext 3051 34, // 13: envoy.api.v2.Cluster.upstream_http_protocol_options:type_name -> envoy.api.v2.core.UpstreamHttpProtocolOptions 3052 35, // 14: envoy.api.v2.Cluster.common_http_protocol_options:type_name -> envoy.api.v2.core.HttpProtocolOptions 3053 36, // 15: envoy.api.v2.Cluster.http_protocol_options:type_name -> envoy.api.v2.core.Http1ProtocolOptions 3054 37, // 16: envoy.api.v2.Cluster.http2_protocol_options:type_name -> envoy.api.v2.core.Http2ProtocolOptions 3055 20, // 17: envoy.api.v2.Cluster.extension_protocol_options:type_name -> envoy.api.v2.Cluster.ExtensionProtocolOptionsEntry 3056 21, // 18: envoy.api.v2.Cluster.typed_extension_protocol_options:type_name -> envoy.api.v2.Cluster.TypedExtensionProtocolOptionsEntry 3057 27, // 19: envoy.api.v2.Cluster.dns_refresh_rate:type_name -> google.protobuf.Duration 3058 19, // 20: envoy.api.v2.Cluster.dns_failure_refresh_rate:type_name -> envoy.api.v2.Cluster.RefreshRate 3059 2, // 21: envoy.api.v2.Cluster.dns_lookup_family:type_name -> envoy.api.v2.Cluster.DnsLookupFamily 3060 29, // 22: envoy.api.v2.Cluster.dns_resolvers:type_name -> envoy.api.v2.core.Address 3061 38, // 23: envoy.api.v2.Cluster.outlier_detection:type_name -> envoy.api.v2.cluster.OutlierDetection 3062 27, // 24: envoy.api.v2.Cluster.cleanup_interval:type_name -> google.protobuf.Duration 3063 39, // 25: envoy.api.v2.Cluster.upstream_bind_config:type_name -> envoy.api.v2.core.BindConfig 3064 14, // 26: envoy.api.v2.Cluster.lb_subset_config:type_name -> envoy.api.v2.Cluster.LbSubsetConfig 3065 16, // 27: envoy.api.v2.Cluster.ring_hash_lb_config:type_name -> envoy.api.v2.Cluster.RingHashLbConfig 3066 17, // 28: envoy.api.v2.Cluster.original_dst_lb_config:type_name -> envoy.api.v2.Cluster.OriginalDstLbConfig 3067 15, // 29: envoy.api.v2.Cluster.least_request_lb_config:type_name -> envoy.api.v2.Cluster.LeastRequestLbConfig 3068 18, // 30: envoy.api.v2.Cluster.common_lb_config:type_name -> envoy.api.v2.Cluster.CommonLbConfig 3069 40, // 31: envoy.api.v2.Cluster.transport_socket:type_name -> envoy.api.v2.core.TransportSocket 3070 41, // 32: envoy.api.v2.Cluster.metadata:type_name -> envoy.api.v2.core.Metadata 3071 3, // 33: envoy.api.v2.Cluster.protocol_selection:type_name -> envoy.api.v2.Cluster.ClusterProtocolSelection 3072 10, // 34: envoy.api.v2.Cluster.upstream_connection_options:type_name -> envoy.api.v2.UpstreamConnectionOptions 3073 42, // 35: envoy.api.v2.Cluster.filters:type_name -> envoy.api.v2.cluster.Filter 3074 8, // 36: envoy.api.v2.Cluster.load_balancing_policy:type_name -> envoy.api.v2.LoadBalancingPolicy 3075 43, // 37: envoy.api.v2.Cluster.lrs_server:type_name -> envoy.api.v2.core.ConfigSource 3076 26, // 38: envoy.api.v2.LoadBalancingPolicy.policies:type_name -> envoy.api.v2.LoadBalancingPolicy.Policy 3077 29, // 39: envoy.api.v2.UpstreamBindConfig.source_address:type_name -> envoy.api.v2.core.Address 3078 44, // 40: envoy.api.v2.UpstreamConnectionOptions.tcp_keepalive:type_name -> envoy.api.v2.core.TcpKeepalive 3079 45, // 41: envoy.api.v2.Cluster.TransportSocketMatch.match:type_name -> google.protobuf.Struct 3080 40, // 42: envoy.api.v2.Cluster.TransportSocketMatch.transport_socket:type_name -> envoy.api.v2.core.TransportSocket 3081 46, // 43: envoy.api.v2.Cluster.CustomClusterType.typed_config:type_name -> google.protobuf.Any 3082 43, // 44: envoy.api.v2.Cluster.EdsClusterConfig.eds_config:type_name -> envoy.api.v2.core.ConfigSource 3083 4, // 45: envoy.api.v2.Cluster.LbSubsetConfig.fallback_policy:type_name -> envoy.api.v2.Cluster.LbSubsetConfig.LbSubsetFallbackPolicy 3084 45, // 46: envoy.api.v2.Cluster.LbSubsetConfig.default_subset:type_name -> google.protobuf.Struct 3085 22, // 47: envoy.api.v2.Cluster.LbSubsetConfig.subset_selectors:type_name -> envoy.api.v2.Cluster.LbSubsetConfig.LbSubsetSelector 3086 28, // 48: envoy.api.v2.Cluster.LeastRequestLbConfig.choice_count:type_name -> google.protobuf.UInt32Value 3087 47, // 49: envoy.api.v2.Cluster.RingHashLbConfig.minimum_ring_size:type_name -> google.protobuf.UInt64Value 3088 6, // 50: envoy.api.v2.Cluster.RingHashLbConfig.hash_function:type_name -> envoy.api.v2.Cluster.RingHashLbConfig.HashFunction 3089 47, // 51: envoy.api.v2.Cluster.RingHashLbConfig.maximum_ring_size:type_name -> google.protobuf.UInt64Value 3090 48, // 52: envoy.api.v2.Cluster.CommonLbConfig.healthy_panic_threshold:type_name -> envoy.type.Percent 3091 23, // 53: envoy.api.v2.Cluster.CommonLbConfig.zone_aware_lb_config:type_name -> envoy.api.v2.Cluster.CommonLbConfig.ZoneAwareLbConfig 3092 24, // 54: envoy.api.v2.Cluster.CommonLbConfig.locality_weighted_lb_config:type_name -> envoy.api.v2.Cluster.CommonLbConfig.LocalityWeightedLbConfig 3093 27, // 55: envoy.api.v2.Cluster.CommonLbConfig.update_merge_window:type_name -> google.protobuf.Duration 3094 25, // 56: envoy.api.v2.Cluster.CommonLbConfig.consistent_hashing_lb_config:type_name -> envoy.api.v2.Cluster.CommonLbConfig.ConsistentHashingLbConfig 3095 27, // 57: envoy.api.v2.Cluster.RefreshRate.base_interval:type_name -> google.protobuf.Duration 3096 27, // 58: envoy.api.v2.Cluster.RefreshRate.max_interval:type_name -> google.protobuf.Duration 3097 45, // 59: envoy.api.v2.Cluster.ExtensionProtocolOptionsEntry.value:type_name -> google.protobuf.Struct 3098 46, // 60: envoy.api.v2.Cluster.TypedExtensionProtocolOptionsEntry.value:type_name -> google.protobuf.Any 3099 5, // 61: envoy.api.v2.Cluster.LbSubsetConfig.LbSubsetSelector.fallback_policy:type_name -> envoy.api.v2.Cluster.LbSubsetConfig.LbSubsetSelector.LbSubsetSelectorFallbackPolicy 3100 48, // 62: envoy.api.v2.Cluster.CommonLbConfig.ZoneAwareLbConfig.routing_enabled:type_name -> envoy.type.Percent 3101 47, // 63: envoy.api.v2.Cluster.CommonLbConfig.ZoneAwareLbConfig.min_cluster_size:type_name -> google.protobuf.UInt64Value 3102 45, // 64: envoy.api.v2.LoadBalancingPolicy.Policy.config:type_name -> google.protobuf.Struct 3103 46, // 65: envoy.api.v2.LoadBalancingPolicy.Policy.typed_config:type_name -> google.protobuf.Any 3104 66, // [66:66] is the sub-list for method output_type 3105 66, // [66:66] is the sub-list for method input_type 3106 66, // [66:66] is the sub-list for extension type_name 3107 66, // [66:66] is the sub-list for extension extendee 3108 0, // [0:66] is the sub-list for field type_name 3109 } 3110 3111 func init() { file_envoy_api_v2_cluster_proto_init() } 3112 func file_envoy_api_v2_cluster_proto_init() { 3113 if File_envoy_api_v2_cluster_proto != nil { 3114 return 3115 } 3116 file_envoy_api_v2_endpoint_proto_init() 3117 if !protoimpl.UnsafeEnabled { 3118 file_envoy_api_v2_cluster_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { 3119 switch v := v.(*Cluster); i { 3120 case 0: 3121 return &v.state 3122 case 1: 3123 return &v.sizeCache 3124 case 2: 3125 return &v.unknownFields 3126 default: 3127 return nil 3128 } 3129 } 3130 file_envoy_api_v2_cluster_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { 3131 switch v := v.(*LoadBalancingPolicy); i { 3132 case 0: 3133 return &v.state 3134 case 1: 3135 return &v.sizeCache 3136 case 2: 3137 return &v.unknownFields 3138 default: 3139 return nil 3140 } 3141 } 3142 file_envoy_api_v2_cluster_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { 3143 switch v := v.(*UpstreamBindConfig); i { 3144 case 0: 3145 return &v.state 3146 case 1: 3147 return &v.sizeCache 3148 case 2: 3149 return &v.unknownFields 3150 default: 3151 return nil 3152 } 3153 } 3154 file_envoy_api_v2_cluster_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { 3155 switch v := v.(*UpstreamConnectionOptions); i { 3156 case 0: 3157 return &v.state 3158 case 1: 3159 return &v.sizeCache 3160 case 2: 3161 return &v.unknownFields 3162 default: 3163 return nil 3164 } 3165 } 3166 file_envoy_api_v2_cluster_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { 3167 switch v := v.(*Cluster_TransportSocketMatch); i { 3168 case 0: 3169 return &v.state 3170 case 1: 3171 return &v.sizeCache 3172 case 2: 3173 return &v.unknownFields 3174 default: 3175 return nil 3176 } 3177 } 3178 file_envoy_api_v2_cluster_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { 3179 switch v := v.(*Cluster_CustomClusterType); i { 3180 case 0: 3181 return &v.state 3182 case 1: 3183 return &v.sizeCache 3184 case 2: 3185 return &v.unknownFields 3186 default: 3187 return nil 3188 } 3189 } 3190 file_envoy_api_v2_cluster_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { 3191 switch v := v.(*Cluster_EdsClusterConfig); i { 3192 case 0: 3193 return &v.state 3194 case 1: 3195 return &v.sizeCache 3196 case 2: 3197 return &v.unknownFields 3198 default: 3199 return nil 3200 } 3201 } 3202 file_envoy_api_v2_cluster_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { 3203 switch v := v.(*Cluster_LbSubsetConfig); i { 3204 case 0: 3205 return &v.state 3206 case 1: 3207 return &v.sizeCache 3208 case 2: 3209 return &v.unknownFields 3210 default: 3211 return nil 3212 } 3213 } 3214 file_envoy_api_v2_cluster_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { 3215 switch v := v.(*Cluster_LeastRequestLbConfig); i { 3216 case 0: 3217 return &v.state 3218 case 1: 3219 return &v.sizeCache 3220 case 2: 3221 return &v.unknownFields 3222 default: 3223 return nil 3224 } 3225 } 3226 file_envoy_api_v2_cluster_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { 3227 switch v := v.(*Cluster_RingHashLbConfig); i { 3228 case 0: 3229 return &v.state 3230 case 1: 3231 return &v.sizeCache 3232 case 2: 3233 return &v.unknownFields 3234 default: 3235 return nil 3236 } 3237 } 3238 file_envoy_api_v2_cluster_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { 3239 switch v := v.(*Cluster_OriginalDstLbConfig); i { 3240 case 0: 3241 return &v.state 3242 case 1: 3243 return &v.sizeCache 3244 case 2: 3245 return &v.unknownFields 3246 default: 3247 return nil 3248 } 3249 } 3250 file_envoy_api_v2_cluster_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { 3251 switch v := v.(*Cluster_CommonLbConfig); i { 3252 case 0: 3253 return &v.state 3254 case 1: 3255 return &v.sizeCache 3256 case 2: 3257 return &v.unknownFields 3258 default: 3259 return nil 3260 } 3261 } 3262 file_envoy_api_v2_cluster_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { 3263 switch v := v.(*Cluster_RefreshRate); i { 3264 case 0: 3265 return &v.state 3266 case 1: 3267 return &v.sizeCache 3268 case 2: 3269 return &v.unknownFields 3270 default: 3271 return nil 3272 } 3273 } 3274 file_envoy_api_v2_cluster_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { 3275 switch v := v.(*Cluster_LbSubsetConfig_LbSubsetSelector); i { 3276 case 0: 3277 return &v.state 3278 case 1: 3279 return &v.sizeCache 3280 case 2: 3281 return &v.unknownFields 3282 default: 3283 return nil 3284 } 3285 } 3286 file_envoy_api_v2_cluster_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { 3287 switch v := v.(*Cluster_CommonLbConfig_ZoneAwareLbConfig); i { 3288 case 0: 3289 return &v.state 3290 case 1: 3291 return &v.sizeCache 3292 case 2: 3293 return &v.unknownFields 3294 default: 3295 return nil 3296 } 3297 } 3298 file_envoy_api_v2_cluster_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { 3299 switch v := v.(*Cluster_CommonLbConfig_LocalityWeightedLbConfig); i { 3300 case 0: 3301 return &v.state 3302 case 1: 3303 return &v.sizeCache 3304 case 2: 3305 return &v.unknownFields 3306 default: 3307 return nil 3308 } 3309 } 3310 file_envoy_api_v2_cluster_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} { 3311 switch v := v.(*Cluster_CommonLbConfig_ConsistentHashingLbConfig); i { 3312 case 0: 3313 return &v.state 3314 case 1: 3315 return &v.sizeCache 3316 case 2: 3317 return &v.unknownFields 3318 default: 3319 return nil 3320 } 3321 } 3322 file_envoy_api_v2_cluster_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} { 3323 switch v := v.(*LoadBalancingPolicy_Policy); i { 3324 case 0: 3325 return &v.state 3326 case 1: 3327 return &v.sizeCache 3328 case 2: 3329 return &v.unknownFields 3330 default: 3331 return nil 3332 } 3333 } 3334 } 3335 file_envoy_api_v2_cluster_proto_msgTypes[0].OneofWrappers = []interface{}{ 3336 (*Cluster_Type)(nil), 3337 (*Cluster_ClusterType)(nil), 3338 (*Cluster_RingHashLbConfig_)(nil), 3339 (*Cluster_OriginalDstLbConfig_)(nil), 3340 (*Cluster_LeastRequestLbConfig_)(nil), 3341 } 3342 file_envoy_api_v2_cluster_proto_msgTypes[11].OneofWrappers = []interface{}{ 3343 (*Cluster_CommonLbConfig_ZoneAwareLbConfig_)(nil), 3344 (*Cluster_CommonLbConfig_LocalityWeightedLbConfig_)(nil), 3345 } 3346 type x struct{} 3347 out := protoimpl.TypeBuilder{ 3348 File: protoimpl.DescBuilder{ 3349 GoPackagePath: reflect.TypeOf(x{}).PkgPath(), 3350 RawDescriptor: file_envoy_api_v2_cluster_proto_rawDesc, 3351 NumEnums: 7, 3352 NumMessages: 20, 3353 NumExtensions: 0, 3354 NumServices: 0, 3355 }, 3356 GoTypes: file_envoy_api_v2_cluster_proto_goTypes, 3357 DependencyIndexes: file_envoy_api_v2_cluster_proto_depIdxs, 3358 EnumInfos: file_envoy_api_v2_cluster_proto_enumTypes, 3359 MessageInfos: file_envoy_api_v2_cluster_proto_msgTypes, 3360 }.Build() 3361 File_envoy_api_v2_cluster_proto = out.File 3362 file_envoy_api_v2_cluster_proto_rawDesc = nil 3363 file_envoy_api_v2_cluster_proto_goTypes = nil 3364 file_envoy_api_v2_cluster_proto_depIdxs = nil 3365 }