// We use an X-macro here to make it easier to verify that all the enum values are accounted for.
* active status (from active health checker or outlier detection). Active status will be taken as
absl::node_hash_map<envoy::config::core::v3::Locality, uint32_t, LocalityHash, LocalityEqualTo>;
* @return Common::CallbackHandlePtr a handle which unregisters the callback upon its destruction.
* @return Common::CallbackHandlePtr a handle which unregisters the callback upon its destruction.
* See https://github.com/envoyproxy/envoy/issues/23575 for details. Stats from ClusterInfo::stats()
* will be split into subgroups "config-update", "lb", "endpoint" and "the rest"(which are mainly
#define ALL_CLUSTER_REQUEST_RESPONSE_SIZE_STATS(COUNTER, GAUGE, HISTOGRAM, TEXT_READOUT, STATNAME) \
using HttpProtocolOptionsConfigConstSharedPtr = std::shared_ptr<const HttpProtocolOptionsConfig>;
std::shared_ptr<const Derived> extensionProtocolOptionsTyped(const std::string& name) const {
* @return OptRef<const LoadBalancerConfig> the validated load balancing policy configuration to
* @return const envoy::config::cluster::v3::Cluster::CommonLbConfig& the common configuration for
* @return const absl::optional<envoy::config::core::v3::TypedExtensionConfig>& the configuration
virtual OptRef<const envoy::config::core::v3::TypedExtensionConfig> upstreamConfig() const PURE;
* @return uint32_t the maximum number of response headers. The default value is 100. Results in a
* @return the observability name associated to the cluster. Used in stats, tracing, logging, and
* <envoy_api_field_config.cluster.v3.Cluster.alt_stat_name>`. If unprovided, the default value is
* @return absl::optional<std::reference_wrapper<ClusterRequestResponseSizeStats>> stats to track
* @return std::shared_ptr<const UpstreamLocalAddressSelector> as upstream local address selector.
virtual UpstreamLocalAddressSelectorConstSharedPtr getUpstreamLocalAddressSelector() const PURE;
* @return const envoy::config::core::v3::Metadata& the configuration metadata for this cluster.
* @return true if this cluster is configured to set local interface name on upstream connections.
virtual Http::ClientHeaderValidatorPtr makeHeaderValidator(Http::Protocol protocol) const PURE;
virtual OptRef<const envoy::config::cluster::v3::UpstreamConnectionOptions::HappyEyeballsConfig>
* An upstream cluster (group of hosts). This class is the "primary" singleton cluster used amongst
* @return a pointer to the cluster's health checker. If a health checker has not been installed,
* Initialize the cluster. This will be called either immediately at creation or after all primary
* @param callback supplies a callback that will be invoked after the cluster has undergone first
* @return the phase in which the cluster is initialized at boot. This mechanism is used such that
auto format(const Envoy::Upstream::Host& host, FormatContext& ctx) const -> decltype(ctx.out()) {