Coverage Report

Created: 2023-11-12 09:30

/proc/self/cwd/source/common/protobuf/utility.h
Line
Count
Source (jump to first uncovered line)
1
#pragma once
2
3
#include <numeric>
4
5
#include "envoy/api/api.h"
6
#include "envoy/common/exception.h"
7
#include "envoy/protobuf/message_validator.h"
8
#include "envoy/runtime/runtime.h"
9
#include "envoy/type/v3/percent.pb.h"
10
11
#include "source/common/common/hash.h"
12
#include "source/common/common/stl_helpers.h"
13
#include "source/common/common/utility.h"
14
#include "source/common/protobuf/protobuf.h"
15
#include "source/common/singleton/const_singleton.h"
16
17
#include "absl/status/status.h"
18
#include "absl/status/statusor.h"
19
#include "absl/strings/str_join.h"
20
21
// Obtain the value of a wrapped field (e.g. google.protobuf.UInt32Value) if set. Otherwise, return
22
// the default value.
23
#define PROTOBUF_GET_WRAPPED_OR_DEFAULT(message, field_name, default_value)                        \
24
469k
  ((message).has_##field_name() ? (message).field_name().value() : (default_value))
25
26
// Obtain the value of a wrapped field (e.g. google.protobuf.UInt32Value) if set. Otherwise, throw
27
// a MissingFieldException.
28
29
#define PROTOBUF_GET_WRAPPED_REQUIRED(message, field_name)                                         \
30
58.2k
  ([](const auto& msg) {                                                                           \
31
58.2k
    if (!msg.has_##field_name()) {                                                                 \
32
187
      ::Envoy::ProtoExceptionUtil::throwMissingFieldException(#field_name, msg);                   \
33
187
    }                                                                                              \
34
58.2k
    return msg.field_name().value();                                                               \
35
58.2k
  }((message)))
config_impl.cc:auto Envoy::Router::RouteEntryImplBase::WeightedClusterEntry::WeightedClusterEntry(Envoy::Router::RouteEntryImplBase const*, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, Envoy::Server::Configuration::ServerFactoryContext&, Envoy::ProtobufMessage::ValidationVisitor&, envoy::config::route::v3::WeightedCluster_ClusterWeight const&, absl::flat_hash_set<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, absl::container_internal::StringHash, absl::container_internal::StringEq, std::__1::allocator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > > const&)::$_7::operator()<envoy::config::route::v3::WeightedCluster_ClusterWeight>(envoy::config::route::v3::WeightedCluster_ClusterWeight const&) const
Line
Count
Source
30
45.7k
  ([](const auto& msg) {                                                                           \
31
45.7k
    if (!msg.has_##field_name()) {                                                                 \
32
187
      ::Envoy::ProtoExceptionUtil::throwMissingFieldException(#field_name, msg);                   \
33
187
    }                                                                                              \
34
45.7k
    return msg.field_name().value();                                                               \
35
45.7k
  }((message)))
auto Envoy::Router::CorsPolicyImplBase<envoy::config::route::v3::CorsPolicy>::CorsPolicyImplBase(envoy::config::route::v3::CorsPolicy const&, Envoy::Runtime::Loader&)::{lambda(auto:1 const&)#1}::operator()<envoy::config::route::v3::CorsPolicy>(envoy::config::route::v3::CorsPolicy const&) const
Line
Count
Source
30
1.46k
  ([](const auto& msg) {                                                                           \
31
1.46k
    if (!msg.has_##field_name()) {                                                                 \
32
0
      ::Envoy::ProtoExceptionUtil::throwMissingFieldException(#field_name, msg);                   \
33
0
    }                                                                                              \
34
1.46k
    return msg.field_name().value();                                                               \
35
1.46k
  }((message)))
auto Envoy::Router::CorsPolicyImplBase<envoy::config::route::v3::CorsPolicy>::CorsPolicyImplBase(envoy::config::route::v3::CorsPolicy const&, Envoy::Runtime::Loader&)::{lambda(auto:1 const&)#2}::operator()<envoy::config::route::v3::CorsPolicy>(envoy::config::route::v3::CorsPolicy const&) const
Line
Count
Source
30
1.87k
  ([](const auto& msg) {                                                                           \
31
1.87k
    if (!msg.has_##field_name()) {                                                                 \
32
0
      ::Envoy::ProtoExceptionUtil::throwMissingFieldException(#field_name, msg);                   \
33
0
    }                                                                                              \
34
1.87k
    return msg.field_name().value();                                                               \
35
1.87k
  }((message)))
health_checker_base_impl.cc:auto Envoy::Upstream::HealthCheckerImplBase::HealthCheckerImplBase(Envoy::Upstream::Cluster const&, envoy::config::core::v3::HealthCheck const&, Envoy::Event::Dispatcher&, Envoy::Runtime::Loader&, Envoy::Random::RandomGenerator&, std::__1::unique_ptr<Envoy::Upstream::HealthCheckEventLogger, std::__1::default_delete<Envoy::Upstream::HealthCheckEventLogger> >&&)::$_1::operator()<envoy::config::core::v3::HealthCheck>(envoy::config::core::v3::HealthCheck const&) const
Line
Count
Source
30
4.59k
  ([](const auto& msg) {                                                                           \
31
4.59k
    if (!msg.has_##field_name()) {                                                                 \
32
0
      ::Envoy::ProtoExceptionUtil::throwMissingFieldException(#field_name, msg);                   \
33
0
    }                                                                                              \
34
4.59k
    return msg.field_name().value();                                                               \
35
4.59k
  }((message)))
health_checker_base_impl.cc:auto Envoy::Upstream::HealthCheckerImplBase::HealthCheckerImplBase(Envoy::Upstream::Cluster const&, envoy::config::core::v3::HealthCheck const&, Envoy::Event::Dispatcher&, Envoy::Runtime::Loader&, Envoy::Random::RandomGenerator&, std::__1::unique_ptr<Envoy::Upstream::HealthCheckEventLogger, std::__1::default_delete<Envoy::Upstream::HealthCheckEventLogger> >&&)::$_2::operator()<envoy::config::core::v3::HealthCheck>(envoy::config::core::v3::HealthCheck const&) const
Line
Count
Source
30
4.59k
  ([](const auto& msg) {                                                                           \
31
4.59k
    if (!msg.has_##field_name()) {                                                                 \
32
0
      ::Envoy::ProtoExceptionUtil::throwMissingFieldException(#field_name, msg);                   \
33
0
    }                                                                                              \
34
4.59k
    return msg.field_name().value();                                                               \
35
4.59k
  }((message)))
Unexecuted instantiation: auto Envoy::Router::CorsPolicyImplBase<envoy::extensions::filters::http::cors::v3::CorsPolicy>::CorsPolicyImplBase(envoy::extensions::filters::http::cors::v3::CorsPolicy const&, Envoy::Runtime::Loader&)::{lambda(auto:1 const&)#1}::operator()<envoy::extensions::filters::http::cors::v3::CorsPolicy>(envoy::extensions::filters::http::cors::v3::CorsPolicy const&) const
Unexecuted instantiation: auto Envoy::Router::CorsPolicyImplBase<envoy::extensions::filters::http::cors::v3::CorsPolicy>::CorsPolicyImplBase(envoy::extensions::filters::http::cors::v3::CorsPolicy const&, Envoy::Runtime::Loader&)::{lambda(auto:1 const&)#2}::operator()<envoy::extensions::filters::http::cors::v3::CorsPolicy>(envoy::extensions::filters::http::cors::v3::CorsPolicy const&) const
Unexecuted instantiation: oauth_client.cc:auto Envoy::Extensions::HttpFilters::Oauth2::OAuth2ClientImpl::onSuccess(Envoy::Http::AsyncClient::Request const&, std::__1::unique_ptr<Envoy::Http::Message<Envoy::Http::ResponseHeaderMap, Envoy::Http::ResponseTrailerMap>, std::__1::default_delete<Envoy::Http::Message<Envoy::Http::ResponseHeaderMap, Envoy::Http::ResponseTrailerMap> > >&&)::$_1::operator()<envoy::extensions::http_filters::oauth2::OAuthResponse>(envoy::extensions::http_filters::oauth2::OAuthResponse const&) const
Unexecuted instantiation: oauth_client.cc:auto Envoy::Extensions::HttpFilters::Oauth2::OAuth2ClientImpl::onSuccess(Envoy::Http::AsyncClient::Request const&, std::__1::unique_ptr<Envoy::Http::Message<Envoy::Http::ResponseHeaderMap, Envoy::Http::ResponseTrailerMap>, std::__1::default_delete<Envoy::Http::Message<Envoy::Http::ResponseHeaderMap, Envoy::Http::ResponseTrailerMap> > >&&)::$_2::operator()<envoy::extensions::http_filters::oauth2::OAuthResponse>(envoy::extensions::http_filters::oauth2::OAuthResponse const&) const
Unexecuted instantiation: connection_limit.cc:auto Envoy::Extensions::NetworkFilters::ConnectionLimitFilter::Config::Config(envoy::extensions::filters::network::connection_limit::v3::ConnectionLimit const&, Envoy::Stats::Scope&, Envoy::Runtime::Loader&)::$_0::operator()<envoy::extensions::filters::network::connection_limit::v3::ConnectionLimit>(envoy::extensions::filters::network::connection_limit::v3::ConnectionLimit const&) const
Unexecuted instantiation: route_matcher.cc:auto Envoy::Extensions::NetworkFilters::DubboProxy::Router::RouteEntryImplBase::WeightedClusterEntry::WeightedClusterEntry(Envoy::Extensions::NetworkFilters::DubboProxy::Router::RouteEntryImplBase const&, envoy::config::route::v3::WeightedCluster_ClusterWeight const&)::$_0::operator()<envoy::config::route::v3::WeightedCluster_ClusterWeight>(envoy::config::route::v3::WeightedCluster_ClusterWeight const&) const
Unexecuted instantiation: router_impl.cc:auto Envoy::Extensions::NetworkFilters::ThriftProxy::Router::RouteEntryImplBase::WeightedClusterEntry::WeightedClusterEntry(Envoy::Extensions::NetworkFilters::ThriftProxy::Router::RouteEntryImplBase const&, envoy::extensions::filters::network::thrift_proxy::v3::WeightedCluster_ClusterWeight const&)::$_0::operator()<envoy::extensions::filters::network::thrift_proxy::v3::WeightedCluster_ClusterWeight>(envoy::extensions::filters::network::thrift_proxy::v3::WeightedCluster_ClusterWeight const&) const
36
// Obtain the milliseconds value of a google.protobuf.Duration field if set. Otherwise, return the
37
// default value.
38
#define PROTOBUF_GET_MS_OR_DEFAULT(message, field_name, default_value)                             \
39
155k
  ((message).has_##field_name() ? DurationUtil::durationToMilliseconds((message).field_name())     \
40
155k
                                : (default_value))
41
42
// Obtain the string value if the field is set. Otherwise, return the default value.
43
#define PROTOBUF_GET_STRING_OR_DEFAULT(message, field_name, default_value)                         \
44
  (!(message).field_name().empty() ? (message).field_name() : (default_value))
45
46
// Obtain the milliseconds value of a google.protobuf.Duration field if set. Otherwise, return
47
// absl::nullopt.
48
#define PROTOBUF_GET_OPTIONAL_MS(message, field_name)                                              \
49
10.5k
  ((message).has_##field_name()                                                                    \
50
10.5k
       ? absl::optional<std::chrono::milliseconds>(                                                \
51
1.97k
             DurationUtil::durationToMilliseconds((message).field_name()))                         \
52
10.5k
       : absl::nullopt)
53
54
// Obtain the milliseconds value of a google.protobuf.Duration field if set. Otherwise, throw a
55
// MissingFieldException.
56
#define PROTOBUF_GET_MS_REQUIRED(message, field_name)                                              \
57
32.6k
  ([](const auto& msg) {                                                                           \
58
32.6k
    if (!msg.has_##field_name()) {                                                                 \
59
0
      ::Envoy::ProtoExceptionUtil::throwMissingFieldException(#field_name, msg);                   \
60
0
    }                                                                                              \
61
32.6k
    return DurationUtil::durationToMilliseconds(msg.field_name());                                 \
62
32.6k
  }((message)))
config_impl.cc:auto Envoy::Router::RetryPolicyImpl::RetryPolicyImpl(envoy::config::route::v3::RetryPolicy const&, Envoy::ProtobufMessage::ValidationVisitor&, Envoy::Upstream::RetryExtensionFactoryContext&)::$_0::operator()<envoy::config::route::v3::RetryPolicy_RetryBackOff>(envoy::config::route::v3::RetryPolicy_RetryBackOff const&) const
Line
Count
Source
57
3.18k
  ([](const auto& msg) {                                                                           \
58
3.18k
    if (!msg.has_##field_name()) {                                                                 \
59
0
      ::Envoy::ProtoExceptionUtil::throwMissingFieldException(#field_name, msg);                   \
60
0
    }                                                                                              \
61
3.18k
    return DurationUtil::durationToMilliseconds(msg.field_name());                                 \
62
3.18k
  }((message)))
config_impl.cc:auto Envoy::Router::RouteEntryImplBase::buildOptionalTimeouts(envoy::config::route::v3::RouteAction const&) const::$_1::operator()<envoy::config::route::v3::RouteAction>(envoy::config::route::v3::RouteAction const&) const
Line
Count
Source
57
2.72k
  ([](const auto& msg) {                                                                           \
58
2.72k
    if (!msg.has_##field_name()) {                                                                 \
59
0
      ::Envoy::ProtoExceptionUtil::throwMissingFieldException(#field_name, msg);                   \
60
0
    }                                                                                              \
61
2.72k
    return DurationUtil::durationToMilliseconds(msg.field_name());                                 \
62
2.72k
  }((message)))
config_impl.cc:auto Envoy::Router::RouteEntryImplBase::buildOptionalTimeouts(envoy::config::route::v3::RouteAction const&) const::$_2::operator()<envoy::config::route::v3::RouteAction>(envoy::config::route::v3::RouteAction const&) const
Line
Count
Source
57
2.56k
  ([](const auto& msg) {                                                                           \
58
2.56k
    if (!msg.has_##field_name()) {                                                                 \
59
0
      ::Envoy::ProtoExceptionUtil::throwMissingFieldException(#field_name, msg);                   \
60
0
    }                                                                                              \
61
2.56k
    return DurationUtil::durationToMilliseconds(msg.field_name());                                 \
62
2.56k
  }((message)))
config_impl.cc:auto Envoy::Router::RouteEntryImplBase::buildOptionalTimeouts(envoy::config::route::v3::RouteAction const&) const::$_3::operator()<envoy::config::route::v3::RouteAction>(envoy::config::route::v3::RouteAction const&) const
Line
Count
Source
57
4.01k
  ([](const auto& msg) {                                                                           \
58
4.01k
    if (!msg.has_##field_name()) {                                                                 \
59
0
      ::Envoy::ProtoExceptionUtil::throwMissingFieldException(#field_name, msg);                   \
60
0
    }                                                                                              \
61
4.01k
    return DurationUtil::durationToMilliseconds(msg.field_name());                                 \
62
4.01k
  }((message)))
config_impl.cc:auto Envoy::Router::RouteEntryImplBase::buildOptionalTimeouts(envoy::config::route::v3::RouteAction const&) const::$_4::operator()<envoy::config::route::v3::RouteAction_MaxStreamDuration>(envoy::config::route::v3::RouteAction_MaxStreamDuration const&) const
Line
Count
Source
57
2.52k
  ([](const auto& msg) {                                                                           \
58
2.52k
    if (!msg.has_##field_name()) {                                                                 \
59
0
      ::Envoy::ProtoExceptionUtil::throwMissingFieldException(#field_name, msg);                   \
60
0
    }                                                                                              \
61
2.52k
    return DurationUtil::durationToMilliseconds(msg.field_name());                                 \
62
2.52k
  }((message)))
config_impl.cc:auto Envoy::Router::RouteEntryImplBase::buildOptionalTimeouts(envoy::config::route::v3::RouteAction const&) const::$_5::operator()<envoy::config::route::v3::RouteAction_MaxStreamDuration>(envoy::config::route::v3::RouteAction_MaxStreamDuration const&) const
Line
Count
Source
57
2.39k
  ([](const auto& msg) {                                                                           \
58
2.39k
    if (!msg.has_##field_name()) {                                                                 \
59
0
      ::Envoy::ProtoExceptionUtil::throwMissingFieldException(#field_name, msg);                   \
60
0
    }                                                                                              \
61
2.39k
    return DurationUtil::durationToMilliseconds(msg.field_name());                                 \
62
2.39k
  }((message)))
config_impl.cc:auto Envoy::Router::RouteEntryImplBase::buildOptionalTimeouts(envoy::config::route::v3::RouteAction const&) const::$_6::operator()<envoy::config::route::v3::RouteAction_MaxStreamDuration>(envoy::config::route::v3::RouteAction_MaxStreamDuration const&) const
Line
Count
Source
57
1.31k
  ([](const auto& msg) {                                                                           \
58
1.31k
    if (!msg.has_##field_name()) {                                                                 \
59
0
      ::Envoy::ProtoExceptionUtil::throwMissingFieldException(#field_name, msg);                   \
60
0
    }                                                                                              \
61
1.31k
    return DurationUtil::durationToMilliseconds(msg.field_name());                                 \
62
1.31k
  }((message)))
codec_impl.cc:auto Envoy::Http::Http2::ConnectionImpl::ConnectionImpl(Envoy::Network::Connection&, Envoy::Http::Http2::CodecStats&, Envoy::Random::RandomGenerator&, envoy::config::core::v3::Http2ProtocolOptions const&, unsigned int, unsigned int)::$_2::operator()<envoy::config::core::v3::KeepaliveSettings>(envoy::config::core::v3::KeepaliveSettings const&) const
Line
Count
Source
57
134
  ([](const auto& msg) {                                                                           \
58
134
    if (!msg.has_##field_name()) {                                                                 \
59
0
      ::Envoy::ProtoExceptionUtil::throwMissingFieldException(#field_name, msg);                   \
60
0
    }                                                                                              \
61
134
    return DurationUtil::durationToMilliseconds(msg.field_name());                                 \
62
134
  }((message)))
utility.cc:auto Envoy::Config::Utility::buildJitteredExponentialBackOffStrategy(std::__1::optional<envoy::config::core::v3::BackoffStrategy const>, Envoy::Random::RandomGenerator&, unsigned int, std::__1::optional<unsigned int const>)::$_0::operator()<envoy::config::core::v3::BackoffStrategy>(envoy::config::core::v3::BackoffStrategy const&) const
Line
Count
Source
57
30
  ([](const auto& msg) {                                                                           \
58
30
    if (!msg.has_##field_name()) {                                                                 \
59
0
      ::Envoy::ProtoExceptionUtil::throwMissingFieldException(#field_name, msg);                   \
60
0
    }                                                                                              \
61
30
    return DurationUtil::durationToMilliseconds(msg.field_name());                                 \
62
30
  }((message)))
utility.cc:auto Envoy::Http::Utility::validateCoreRetryPolicy(envoy::config::core::v3::RetryPolicy const&)::$_0::operator()<envoy::config::core::v3::BackoffStrategy>(envoy::config::core::v3::BackoffStrategy const&) const
Line
Count
Source
57
182
  ([](const auto& msg) {                                                                           \
58
182
    if (!msg.has_##field_name()) {                                                                 \
59
0
      ::Envoy::ProtoExceptionUtil::throwMissingFieldException(#field_name, msg);                   \
60
0
    }                                                                                              \
61
182
    return DurationUtil::durationToMilliseconds(msg.field_name());                                 \
62
182
  }((message)))
utility.cc:auto Envoy::Http::Utility::convertCoreToRouteRetryPolicy(envoy::config::core::v3::RetryPolicy const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&)::$_1::operator()<envoy::config::core::v3::BackoffStrategy>(envoy::config::core::v3::BackoffStrategy const&) const
Line
Count
Source
57
477
  ([](const auto& msg) {                                                                           \
58
477
    if (!msg.has_##field_name()) {                                                                 \
59
0
      ::Envoy::ProtoExceptionUtil::throwMissingFieldException(#field_name, msg);                   \
60
0
    }                                                                                              \
61
477
    return DurationUtil::durationToMilliseconds(msg.field_name());                                 \
62
477
  }((message)))
health_checker_base_impl.cc:auto Envoy::Upstream::HealthCheckerImplBase::HealthCheckerImplBase(Envoy::Upstream::Cluster const&, envoy::config::core::v3::HealthCheck const&, Envoy::Event::Dispatcher&, Envoy::Runtime::Loader&, Envoy::Random::RandomGenerator&, std::__1::unique_ptr<Envoy::Upstream::HealthCheckEventLogger, std::__1::default_delete<Envoy::Upstream::HealthCheckEventLogger> >&&)::$_0::operator()<envoy::config::core::v3::HealthCheck>(envoy::config::core::v3::HealthCheck const&) const
Line
Count
Source
57
4.59k
  ([](const auto& msg) {                                                                           \
58
4.59k
    if (!msg.has_##field_name()) {                                                                 \
59
0
      ::Envoy::ProtoExceptionUtil::throwMissingFieldException(#field_name, msg);                   \
60
0
    }                                                                                              \
61
4.59k
    return DurationUtil::durationToMilliseconds(msg.field_name());                                 \
62
4.59k
  }((message)))
health_checker_base_impl.cc:auto Envoy::Upstream::HealthCheckerImplBase::HealthCheckerImplBase(Envoy::Upstream::Cluster const&, envoy::config::core::v3::HealthCheck const&, Envoy::Event::Dispatcher&, Envoy::Runtime::Loader&, Envoy::Random::RandomGenerator&, std::__1::unique_ptr<Envoy::Upstream::HealthCheckEventLogger, std::__1::default_delete<Envoy::Upstream::HealthCheckEventLogger> >&&)::$_3::operator()<envoy::config::core::v3::HealthCheck>(envoy::config::core::v3::HealthCheck const&) const
Line
Count
Source
57
4.59k
  ([](const auto& msg) {                                                                           \
58
4.59k
    if (!msg.has_##field_name()) {                                                                 \
59
0
      ::Envoy::ProtoExceptionUtil::throwMissingFieldException(#field_name, msg);                   \
60
0
    }                                                                                              \
61
4.59k
    return DurationUtil::durationToMilliseconds(msg.field_name());                                 \
62
4.59k
  }((message)))
local_ratelimit_fuzz_test.cc:auto Envoy::Extensions::NetworkFilters::LocalRateLimitFilter::TestOneProtoInput(envoy::extensions::filters::network::local_ratelimit::LocalRateLimitTestCase const&)::$_0::operator()<envoy::type::v3::TokenBucket>(envoy::type::v3::TokenBucket const&) const
Line
Count
Source
57
1.16k
  ([](const auto& msg) {                                                                           \
58
1.16k
    if (!msg.has_##field_name()) {                                                                 \
59
0
      ::Envoy::ProtoExceptionUtil::throwMissingFieldException(#field_name, msg);                   \
60
0
    }                                                                                              \
61
1.16k
    return DurationUtil::durationToMilliseconds(msg.field_name());                                 \
62
1.16k
  }((message)))
local_ratelimit_fuzz_test.cc:auto Envoy::Extensions::NetworkFilters::LocalRateLimitFilter::TestOneProtoInput(envoy::extensions::filters::network::local_ratelimit::LocalRateLimitTestCase const&)::$_1::operator()<envoy::type::v3::TokenBucket>(envoy::type::v3::TokenBucket const&) const
Line
Count
Source
57
1.15k
  ([](const auto& msg) {                                                                           \
58
1.15k
    if (!msg.has_##field_name()) {                                                                 \
59
0
      ::Envoy::ProtoExceptionUtil::throwMissingFieldException(#field_name, msg);                   \
60
0
    }                                                                                              \
61
1.15k
    return DurationUtil::durationToMilliseconds(msg.field_name());                                 \
62
1.15k
  }((message)))
local_ratelimit.cc:auto Envoy::Extensions::NetworkFilters::LocalRateLimitFilter::Config::Config(envoy::extensions::filters::network::local_ratelimit::v3::LocalRateLimit const&, Envoy::Event::Dispatcher&, Envoy::Stats::Scope&, Envoy::Runtime::Loader&, Envoy::Singleton::Manager&)::$_0::operator()() const::{lambda(auto:1 const&)#1}::operator()<envoy::type::v3::TokenBucket>(envoy::type::v3::TokenBucket const&) const
Line
Count
Source
57
1.16k
  ([](const auto& msg) {                                                                           \
58
1.16k
    if (!msg.has_##field_name()) {                                                                 \
59
0
      ::Envoy::ProtoExceptionUtil::throwMissingFieldException(#field_name, msg);                   \
60
0
    }                                                                                              \
61
1.16k
    return DurationUtil::durationToMilliseconds(msg.field_name());                                 \
62
1.16k
  }((message)))
uber_per_readfilter.cc:auto Envoy::Extensions::NetworkFilters::UberFilterFuzzer::checkInvalidInputForFuzzer(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, google::protobuf::Message*)::$_0::operator()<envoy::config::core::v3::KeepaliveSettings>(envoy::config::core::v3::KeepaliveSettings const&) const
Line
Count
Source
57
6
  ([](const auto& msg) {                                                                           \
58
6
    if (!msg.has_##field_name()) {                                                                 \
59
0
      ::Envoy::ProtoExceptionUtil::throwMissingFieldException(#field_name, msg);                   \
60
0
    }                                                                                              \
61
6
    return DurationUtil::durationToMilliseconds(msg.field_name());                                 \
62
6
  }((message)))
uber_per_readfilter.cc:auto Envoy::Extensions::NetworkFilters::UberFilterFuzzer::checkInvalidInputForFuzzer(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, google::protobuf::Message*)::$_1::operator()<envoy::config::core::v3::KeepaliveSettings>(envoy::config::core::v3::KeepaliveSettings const&) const
Line
Count
Source
57
6
  ([](const auto& msg) {                                                                           \
58
6
    if (!msg.has_##field_name()) {                                                                 \
59
0
      ::Envoy::ProtoExceptionUtil::throwMissingFieldException(#field_name, msg);                   \
60
0
    }                                                                                              \
61
6
    return DurationUtil::durationToMilliseconds(msg.field_name());                                 \
62
6
  }((message)))
Unexecuted instantiation: auto Envoy::Config::Utility::prepareDnsRefreshStrategy<envoy::config::cluster::v3::Cluster>(envoy::config::cluster::v3::Cluster const&, unsigned long, Envoy::Random::RandomGenerator&)::{lambda(auto:1 const&)#1}::operator()<envoy::config::cluster::v3::Cluster_RefreshRate>(envoy::config::cluster::v3::Cluster_RefreshRate const&) const
Unexecuted instantiation: filter.cc:auto Envoy::Extensions::HttpFilters::RateLimitQuota::RateLimitQuotaFilter::sendImmediateReport(unsigned long, Envoy::Extensions::HttpFilters::RateLimitQuota::RateLimitOnMatchAction const&)::$_0::operator()<envoy::extensions::filters::http::rate_limit_quota::v3::RateLimitQuotaBucketSettings>(envoy::extensions::filters::http::rate_limit_quota::v3::RateLimitQuotaBucketSettings const&) const
Unexecuted instantiation: oauth_client.cc:auto Envoy::Extensions::HttpFilters::Oauth2::OAuth2ClientImpl::dispatchRequest(std::__1::unique_ptr<Envoy::Http::Message<Envoy::Http::RequestHeaderMap, Envoy::Http::RequestTrailerMap>, std::__1::default_delete<Envoy::Http::Message<Envoy::Http::RequestHeaderMap, Envoy::Http::RequestTrailerMap> > >&&)::$_0::operator()<envoy::config::core::v3::HttpUri>(envoy::config::core::v3::HttpUri const&) const
Unexecuted instantiation: local_ratelimit.cc:auto Envoy::Extensions::ListenerFilters::LocalRateLimit::FilterConfig::FilterConfig(envoy::extensions::filters::listener::local_ratelimit::v3::LocalRateLimit const&, Envoy::Event::Dispatcher&, Envoy::Stats::Scope&, Envoy::Runtime::Loader&)::$_0::operator()<envoy::type::v3::TokenBucket>(envoy::type::v3::TokenBucket const&) const
fault_config.cc:auto Envoy::Extensions::Filters::Common::Fault::FaultDelayConfig::FaultDelayConfig(envoy::extensions::filters::common::fault::v3::FaultDelay const&)::$_0::operator()<envoy::extensions::filters::common::fault::v3::FaultDelay>(envoy::extensions::filters::common::fault::v3::FaultDelay const&) const
Line
Count
Source
57
31
  ([](const auto& msg) {                                                                           \
58
31
    if (!msg.has_##field_name()) {                                                                 \
59
0
      ::Envoy::ProtoExceptionUtil::throwMissingFieldException(#field_name, msg);                   \
60
0
    }                                                                                              \
61
31
    return DurationUtil::durationToMilliseconds(msg.field_name());                                 \
62
31
  }((message)))
Unexecuted instantiation: client_impl.cc:auto Envoy::Extensions::NetworkFilters::Common::Redis::Client::ConfigImpl::ConfigImpl(envoy::extensions::filters::network::redis_proxy::v3::RedisProxy_ConnPoolSettings const&)::$_0::operator()<envoy::extensions::filters::network::redis_proxy::v3::RedisProxy_ConnPoolSettings>(envoy::extensions::filters::network::redis_proxy::v3::RedisProxy_ConnPoolSettings const&) const
filter.cc:auto Envoy::Extensions::NetworkFilters::ZooKeeperProxy::ZooKeeperFilterConfig::parseLatencyThresholdOverrides(google::protobuf::RepeatedPtrField<envoy::extensions::filters::network::zookeeper_proxy::v3::LatencyThresholdOverride> const&)::$_0::operator()<envoy::extensions::filters::network::zookeeper_proxy::v3::LatencyThresholdOverride>(envoy::extensions::filters::network::zookeeper_proxy::v3::LatencyThresholdOverride const&) const
Line
Count
Source
57
428
  ([](const auto& msg) {                                                                           \
58
428
    if (!msg.has_##field_name()) {                                                                 \
59
0
      ::Envoy::ProtoExceptionUtil::throwMissingFieldException(#field_name, msg);                   \
60
0
    }                                                                                              \
61
428
    return DurationUtil::durationToMilliseconds(msg.field_name());                                 \
62
428
  }((message)))
Unexecuted instantiation: auto Envoy::Config::Utility::prepareDnsRefreshStrategy<envoy::extensions::common::dynamic_forward_proxy::v3::DnsCacheConfig>(envoy::extensions::common::dynamic_forward_proxy::v3::DnsCacheConfig const&, unsigned long, Envoy::Random::RandomGenerator&)::{lambda(auto:1 const&)#1}::operator()<envoy::config::cluster::v3::Cluster_RefreshRate>(envoy::config::cluster::v3::Cluster_RefreshRate const&) const
63
64
// Obtain the seconds value of a google.protobuf.Duration field if set. Otherwise, throw a
65
// MissingFieldException.
66
#define PROTOBUF_GET_SECONDS_REQUIRED(message, field_name)                                         \
67
  ([](const auto& msg) {                                                                           \
68
    if (!msg.has_##field_name()) {                                                                 \
69
      ::Envoy::ProtoExceptionUtil::throwMissingFieldException(#field_name, msg);                   \
70
    }                                                                                              \
71
    return DurationUtil::durationToSeconds(msg.field_name());                                      \
72
  }((message)))
73
74
namespace Envoy {
75
namespace ProtobufPercentHelper {
76
77
// The following are helpers used in the PROTOBUF_PERCENT_TO_ROUNDED_INTEGER_OR_DEFAULT macro.
78
// This avoids a giant macro mess when trying to do asserts, casts, etc.
79
uint64_t checkAndReturnDefault(uint64_t default_value, uint64_t max_value);
80
uint64_t convertPercent(double percent, uint64_t max_value);
81
82
/**
83
 * Given a fractional percent chance of a given event occurring, evaluate to a yes/no decision
84
 * based on a provided random value.
85
 * @param percent the chance of a given event happening.
86
 * @param random_value supplies a numerical value to use to evaluate the event.
87
 * @return bool decision about whether the event should occur.
88
 */
89
bool evaluateFractionalPercent(envoy::type::v3::FractionalPercent percent, uint64_t random_value);
90
91
/**
92
 * Convert a fractional percent denominator enum into an integer.
93
 * @param denominator supplies denominator to convert.
94
 * @return the converted denominator.
95
 */
96
uint64_t fractionalPercentDenominatorToInt(
97
    const envoy::type::v3::FractionalPercent::DenominatorType& denominator);
98
99
} // namespace ProtobufPercentHelper
100
} // namespace Envoy
101
102
// Convert an envoy::type::v3::Percent to a double or a default.
103
// @param message supplies the proto message containing the field.
104
// @param field_name supplies the field name in the message.
105
// @param default_value supplies the default if the field is not present.
106
#define PROTOBUF_PERCENT_TO_DOUBLE_OR_DEFAULT(message, field_name, default_value)                  \
107
8.92k
  ([](const auto& msg) -> double {                                                                 \
108
8.92k
    if (std::isnan(msg.field_name().value())) {                                                    \
109
4
      ::Envoy::ExceptionUtil::throwEnvoyException(                                                 \
110
4
          fmt::format("Value not in the range of 0..100 range."));                                 \
111
4
    }                                                                                              \
112
8.92k
    return (msg).has_##field_name() ? (msg).field_name().value() : default_value;                  \
113
8.92k
  }((message)))
load_balancer_impl.cc:double Envoy::Upstream::EdfLoadBalancerBase::EdfLoadBalancerBase(Envoy::Upstream::PrioritySet const&, Envoy::Upstream::PrioritySet const*, Envoy::Upstream::ClusterLbStats&, Envoy::Runtime::Loader&, Envoy::Random::RandomGenerator&, unsigned int, std::__1::optional<envoy::extensions::load_balancing_policies::common::v3::LocalityLbConfig>, std::__1::optional<envoy::extensions::load_balancing_policies::common::v3::SlowStartConfig>, Envoy::TimeSource&)::$_1::operator()<envoy::extensions::load_balancing_policies::common::v3::SlowStartConfig>(envoy::extensions::load_balancing_policies::common::v3::SlowStartConfig const&) const
Line
Count
Source
107
580
  ([](const auto& msg) -> double {                                                                 \
108
580
    if (std::isnan(msg.field_name().value())) {                                                    \
109
4
      ::Envoy::ExceptionUtil::throwEnvoyException(                                                 \
110
4
          fmt::format("Value not in the range of 0..100 range."));                                 \
111
4
    }                                                                                              \
112
580
    return (msg).has_##field_name() ? (msg).field_name().value() : default_value;                  \
113
580
  }((message)))
configuration_impl.cc:double Envoy::Server::Configuration::WatchdogImpl::WatchdogImpl(envoy::config::bootstrap::v3::Watchdog const&, Envoy::Server::Instance&)::$_0::operator()<envoy::config::bootstrap::v3::Watchdog>(envoy::config::bootstrap::v3::Watchdog const&) const
Line
Count
Source
107
8.34k
  ([](const auto& msg) -> double {                                                                 \
108
8.34k
    if (std::isnan(msg.field_name().value())) {                                                    \
109
0
      ::Envoy::ExceptionUtil::throwEnvoyException(                                                 \
110
0
          fmt::format("Value not in the range of 0..100 range."));                                 \
111
0
    }                                                                                              \
112
8.34k
    return (msg).has_##field_name() ? (msg).field_name().value() : default_value;                  \
113
8.34k
  }((message)))
Unexecuted instantiation: gradient_controller.cc:double Envoy::Extensions::HttpFilters::AdaptiveConcurrency::Controller::GradientControllerConfig::GradientControllerConfig(envoy::extensions::filters::http::adaptive_concurrency::v3::GradientControllerConfig const&, Envoy::Runtime::Loader&)::$_0::operator()<envoy::extensions::filters::http::adaptive_concurrency::v3::GradientControllerConfig_MinimumRTTCalculationParams>(envoy::extensions::filters::http::adaptive_concurrency::v3::GradientControllerConfig_MinimumRTTCalculationParams const&) const
Unexecuted instantiation: gradient_controller.cc:double Envoy::Extensions::HttpFilters::AdaptiveConcurrency::Controller::GradientControllerConfig::GradientControllerConfig(envoy::extensions::filters::http::adaptive_concurrency::v3::GradientControllerConfig const&, Envoy::Runtime::Loader&)::$_1::operator()<envoy::extensions::filters::http::adaptive_concurrency::v3::GradientControllerConfig>(envoy::extensions::filters::http::adaptive_concurrency::v3::GradientControllerConfig const&) const
Unexecuted instantiation: gradient_controller.cc:double Envoy::Extensions::HttpFilters::AdaptiveConcurrency::Controller::GradientControllerConfig::GradientControllerConfig(envoy::extensions::filters::http::adaptive_concurrency::v3::GradientControllerConfig const&, Envoy::Runtime::Loader&)::$_2::operator()<envoy::extensions::filters::http::adaptive_concurrency::v3::GradientControllerConfig_MinimumRTTCalculationParams>(envoy::extensions::filters::http::adaptive_concurrency::v3::GradientControllerConfig_MinimumRTTCalculationParams const&) const
114
// Convert an envoy::type::v3::Percent to a rounded integer or a default.
115
// @param message supplies the proto message containing the field.
116
// @param field_name supplies the field name in the message.
117
// @param max_value supplies the maximum allowed integral value (e.g., 100, 10000, etc.).
118
// @param default_value supplies the default if the field is not present.
119
//
120
// TODO(anirudhmurali): Recommended to capture and validate NaN values in PGV
121
// Issue: https://github.com/bufbuild/protoc-gen-validate/issues/85
122
#define PROTOBUF_PERCENT_TO_ROUNDED_INTEGER_OR_DEFAULT(message, field_name, max_value,             \
123
                                                       default_value)                              \
124
10.9k
  ([](const auto& msg) {                                                                           \
125
10.9k
    if (std::isnan(msg.field_name().value())) {                                                    \
126
9
      ::Envoy::ExceptionUtil::throwEnvoyException(                                                 \
127
9
          fmt::format("Value not in the range of 0..100 range."));                                 \
128
9
    }                                                                                              \
129
10.9k
    return (msg).has_##field_name()                                                                \
130
10.9k
               ? ProtobufPercentHelper::convertPercent((msg).field_name().value(), max_value)      \
131
10.9k
               : ProtobufPercentHelper::checkAndReturnDefault(default_value, max_value);           \
132
10.9k
  }((message)))
auto Envoy::Tracing::ConnectionManagerTracingConfigImpl::ConnectionManagerTracingConfigImpl(envoy::config::core::v3::TrafficDirection, envoy::extensions::filters::network::http_connection_manager::v3::HttpConnectionManager_Tracing const&)::{lambda(auto:1 const&)#1}::operator()<envoy::extensions::filters::network::http_connection_manager::v3::HttpConnectionManager_Tracing>(envoy::extensions::filters::network::http_connection_manager::v3::HttpConnectionManager_Tracing const&) const
Line
Count
Source
124
845
  ([](const auto& msg) {                                                                           \
125
845
    if (std::isnan(msg.field_name().value())) {                                                    \
126
1
      ::Envoy::ExceptionUtil::throwEnvoyException(                                                 \
127
1
          fmt::format("Value not in the range of 0..100 range."));                                 \
128
1
    }                                                                                              \
129
845
    return (msg).has_##field_name()                                                                \
130
845
               ? ProtobufPercentHelper::convertPercent((msg).field_name().value(), max_value)      \
131
845
               : ProtobufPercentHelper::checkAndReturnDefault(default_value, max_value);           \
132
845
  }((message)))
auto Envoy::Tracing::ConnectionManagerTracingConfigImpl::ConnectionManagerTracingConfigImpl(envoy::config::core::v3::TrafficDirection, envoy::extensions::filters::network::http_connection_manager::v3::HttpConnectionManager_Tracing const&)::{lambda(auto:1 const&)#2}::operator()<envoy::extensions::filters::network::http_connection_manager::v3::HttpConnectionManager_Tracing>(envoy::extensions::filters::network::http_connection_manager::v3::HttpConnectionManager_Tracing const&) const
Line
Count
Source
124
844
  ([](const auto& msg) {                                                                           \
125
844
    if (std::isnan(msg.field_name().value())) {                                                    \
126
1
      ::Envoy::ExceptionUtil::throwEnvoyException(                                                 \
127
1
          fmt::format("Value not in the range of 0..100 range."));                                 \
128
1
    }                                                                                              \
129
844
    return (msg).has_##field_name()                                                                \
130
844
               ? ProtobufPercentHelper::convertPercent((msg).field_name().value(), max_value)      \
131
844
               : ProtobufPercentHelper::checkAndReturnDefault(default_value, max_value);           \
132
844
  }((message)))
load_balancer_impl.cc:auto Envoy::Upstream::ZoneAwareLoadBalancerBase::ZoneAwareLoadBalancerBase(Envoy::Upstream::PrioritySet const&, Envoy::Upstream::PrioritySet const*, Envoy::Upstream::ClusterLbStats&, Envoy::Runtime::Loader&, Envoy::Random::RandomGenerator&, unsigned int, std::__1::optional<envoy::extensions::load_balancing_policies::common::v3::LocalityLbConfig>)::$_0::operator()<envoy::extensions::load_balancing_policies::common::v3::LocalityLbConfig_ZoneAwareLbConfig>(envoy::extensions::load_balancing_policies::common::v3::LocalityLbConfig_ZoneAwareLbConfig const&) const
Line
Count
Source
124
151
  ([](const auto& msg) {                                                                           \
125
151
    if (std::isnan(msg.field_name().value())) {                                                    \
126
3
      ::Envoy::ExceptionUtil::throwEnvoyException(                                                 \
127
3
          fmt::format("Value not in the range of 0..100 range."));                                 \
128
3
    }                                                                                              \
129
151
    return (msg).has_##field_name()                                                                \
130
151
               ? ProtobufPercentHelper::convertPercent((msg).field_name().value(), max_value)      \
131
151
               : ProtobufPercentHelper::checkAndReturnDefault(default_value, max_value);           \
132
151
  }((message)))
auto Envoy::Upstream::RoundRobinLoadBalancer::RoundRobinLoadBalancer(Envoy::Upstream::PrioritySet const&, Envoy::Upstream::PrioritySet const*, Envoy::Upstream::ClusterLbStats&, Envoy::Runtime::Loader&, Envoy::Random::RandomGenerator&, envoy::config::cluster::v3::Cluster_CommonLbConfig const&, Envoy::OptRef<envoy::config::cluster::v3::Cluster_RoundRobinLbConfig const>, Envoy::TimeSource&)::{lambda(auto:1 const&)#1}::operator()<envoy::config::cluster::v3::Cluster_CommonLbConfig>(envoy::config::cluster::v3::Cluster_CommonLbConfig const&) const
Line
Count
Source
124
7.58k
  ([](const auto& msg) {                                                                           \
125
7.58k
    if (std::isnan(msg.field_name().value())) {                                                    \
126
2
      ::Envoy::ExceptionUtil::throwEnvoyException(                                                 \
127
2
          fmt::format("Value not in the range of 0..100 range."));                                 \
128
2
    }                                                                                              \
129
7.58k
    return (msg).has_##field_name()                                                                \
130
7.58k
               ? ProtobufPercentHelper::convertPercent((msg).field_name().value(), max_value)      \
131
7.58k
               : ProtobufPercentHelper::checkAndReturnDefault(default_value, max_value);           \
132
7.58k
  }((message)))
auto Envoy::Upstream::LeastRequestLoadBalancer::LeastRequestLoadBalancer(Envoy::Upstream::PrioritySet const&, Envoy::Upstream::PrioritySet const*, Envoy::Upstream::ClusterLbStats&, Envoy::Runtime::Loader&, Envoy::Random::RandomGenerator&, envoy::config::cluster::v3::Cluster_CommonLbConfig const&, Envoy::OptRef<envoy::config::cluster::v3::Cluster_LeastRequestLbConfig const>, Envoy::TimeSource&)::{lambda(auto:1 const&)#1}::operator()<envoy::config::cluster::v3::Cluster_CommonLbConfig>(envoy::config::cluster::v3::Cluster_CommonLbConfig const&) const
Line
Count
Source
124
1.08k
  ([](const auto& msg) {                                                                           \
125
1.08k
    if (std::isnan(msg.field_name().value())) {                                                    \
126
1
      ::Envoy::ExceptionUtil::throwEnvoyException(                                                 \
127
1
          fmt::format("Value not in the range of 0..100 range."));                                 \
128
1
    }                                                                                              \
129
1.08k
    return (msg).has_##field_name()                                                                \
130
1.08k
               ? ProtobufPercentHelper::convertPercent((msg).field_name().value(), max_value)      \
131
1.08k
               : ProtobufPercentHelper::checkAndReturnDefault(default_value, max_value);           \
132
1.08k
  }((message)))
auto Envoy::Upstream::RandomLoadBalancer::RandomLoadBalancer(Envoy::Upstream::PrioritySet const&, Envoy::Upstream::PrioritySet const*, Envoy::Upstream::ClusterLbStats&, Envoy::Runtime::Loader&, Envoy::Random::RandomGenerator&, envoy::config::cluster::v3::Cluster_CommonLbConfig const&)::{lambda(auto:1 const&)#1}::operator()<envoy::config::cluster::v3::Cluster_CommonLbConfig>(envoy::config::cluster::v3::Cluster_CommonLbConfig const&) const
Line
Count
Source
124
481
  ([](const auto& msg) {                                                                           \
125
481
    if (std::isnan(msg.field_name().value())) {                                                    \
126
1
      ::Envoy::ExceptionUtil::throwEnvoyException(                                                 \
127
1
          fmt::format("Value not in the range of 0..100 range."));                                 \
128
1
    }                                                                                              \
129
481
    return (msg).has_##field_name()                                                                \
130
481
               ? ProtobufPercentHelper::convertPercent((msg).field_name().value(), max_value)      \
131
481
               : ProtobufPercentHelper::checkAndReturnDefault(default_value, max_value);           \
132
481
  }((message)))
Unexecuted instantiation: config.cc:auto Envoy::Extensions::LoadBalancingPolices::LeastRequest::LeastRequestCreator::operator()(Envoy::Upstream::LoadBalancerParams, Envoy::OptRef<Envoy::Upstream::LoadBalancerConfig const>, Envoy::Upstream::ClusterInfo const&, Envoy::Upstream::PrioritySet const&, Envoy::Runtime::Loader&, Envoy::Random::RandomGenerator&, Envoy::TimeSource&)::$_0::operator()<envoy::config::cluster::v3::Cluster_CommonLbConfig>(envoy::config::cluster::v3::Cluster_CommonLbConfig const&) const
Unexecuted instantiation: config.cc:auto Envoy::Extensions::LoadBalancingPolices::Maglev::Factory::create(Envoy::OptRef<Envoy::Upstream::LoadBalancerConfig const>, Envoy::Upstream::ClusterInfo const&, Envoy::Upstream::PrioritySet const&, Envoy::Runtime::Loader&, Envoy::Random::RandomGenerator&, Envoy::TimeSource&)::$_0::operator()<envoy::config::cluster::v3::Cluster_CommonLbConfig>(envoy::config::cluster::v3::Cluster_CommonLbConfig const&) const
Unexecuted instantiation: maglev_lb.cc:auto Envoy::Upstream::MaglevLoadBalancer::MaglevLoadBalancer(Envoy::Upstream::PrioritySet const&, Envoy::Upstream::ClusterLbStats&, Envoy::Stats::Scope&, Envoy::Runtime::Loader&, Envoy::Random::RandomGenerator&, Envoy::OptRef<envoy::config::cluster::v3::Cluster_MaglevLbConfig const>, envoy::config::cluster::v3::Cluster_CommonLbConfig const&)::$_0::operator()<envoy::config::cluster::v3::Cluster_CommonLbConfig>(envoy::config::cluster::v3::Cluster_CommonLbConfig const&) const
Unexecuted instantiation: config.cc:auto Envoy::Extensions::LoadBalancingPolices::Random::RandomCreator::operator()(Envoy::Upstream::LoadBalancerParams, Envoy::OptRef<Envoy::Upstream::LoadBalancerConfig const>, Envoy::Upstream::ClusterInfo const&, Envoy::Upstream::PrioritySet const&, Envoy::Runtime::Loader&, Envoy::Random::RandomGenerator&, Envoy::TimeSource&)::$_0::operator()<envoy::config::cluster::v3::Cluster_CommonLbConfig>(envoy::config::cluster::v3::Cluster_CommonLbConfig const&) const
Unexecuted instantiation: config.cc:auto Envoy::Extensions::LoadBalancingPolices::RoundRobin::RoundRobinCreator::operator()(Envoy::Upstream::LoadBalancerParams, Envoy::OptRef<Envoy::Upstream::LoadBalancerConfig const>, Envoy::Upstream::ClusterInfo const&, Envoy::Upstream::PrioritySet const&, Envoy::Runtime::Loader&, Envoy::Random::RandomGenerator&, Envoy::TimeSource&)::$_0::operator()<envoy::config::cluster::v3::Cluster_CommonLbConfig>(envoy::config::cluster::v3::Cluster_CommonLbConfig const&) const
Unexecuted instantiation: auto Envoy::Extensions::Clusters::Aggregate::AggregateClusterLoadBalancer::LoadBalancerImpl::LoadBalancerImpl(Envoy::Extensions::Clusters::Aggregate::PriorityContext const&, Envoy::Upstream::ClusterLbStats&, Envoy::Runtime::Loader&, Envoy::Random::RandomGenerator&, envoy::config::cluster::v3::Cluster_CommonLbConfig const&)::{lambda(auto:1 const&)#1}::operator()<envoy::config::cluster::v3::Cluster_CommonLbConfig>(envoy::config::cluster::v3::Cluster_CommonLbConfig const&) const
Unexecuted instantiation: config.cc:auto Envoy::Extensions::LoadBalancingPolices::RingHash::Factory::create(Envoy::OptRef<Envoy::Upstream::LoadBalancerConfig const>, Envoy::Upstream::ClusterInfo const&, Envoy::Upstream::PrioritySet const&, Envoy::Runtime::Loader&, Envoy::Random::RandomGenerator&, Envoy::TimeSource&)::$_0::operator()<envoy::config::cluster::v3::Cluster_CommonLbConfig>(envoy::config::cluster::v3::Cluster_CommonLbConfig const&) const
Unexecuted instantiation: ring_hash_lb.cc:auto Envoy::Upstream::RingHashLoadBalancer::RingHashLoadBalancer(Envoy::Upstream::PrioritySet const&, Envoy::Upstream::ClusterLbStats&, Envoy::Stats::Scope&, Envoy::Runtime::Loader&, Envoy::Random::RandomGenerator&, Envoy::OptRef<envoy::config::cluster::v3::Cluster_RingHashLbConfig const>, envoy::config::cluster::v3::Cluster_CommonLbConfig const&)::$_0::operator()<envoy::config::cluster::v3::Cluster_CommonLbConfig>(envoy::config::cluster::v3::Cluster_CommonLbConfig const&) const
133
134
namespace Envoy {
135
136
class MissingFieldException : public EnvoyException {
137
public:
138
  MissingFieldException(const std::string& message);
139
};
140
141
class TypeUtil {
142
public:
143
  static absl::string_view typeUrlToDescriptorFullName(absl::string_view type_url);
144
145
  static std::string descriptorFullNameToTypeUrl(absl::string_view type);
146
};
147
148
class RepeatedPtrUtil {
149
public:
150
  static std::string join(const Protobuf::RepeatedPtrField<std::string>& source,
151
0
                          const std::string& delimiter) {
152
0
    return absl::StrJoin(std::vector<std::string>(source.begin(), source.end()), delimiter);
153
0
  }
154
155
  template <class ProtoType>
156
  static std::string debugString(const Protobuf::RepeatedPtrField<ProtoType>& source) {
157
    return accumulateToString<ProtoType>(
158
        source, [](const Protobuf::Message& message) { return message.DebugString(); });
159
  }
160
161
  // Based on MessageUtil::hash() defined below.
162
  template <class ProtoType>
163
0
  static std::size_t hash(const Protobuf::RepeatedPtrField<ProtoType>& source) {
164
0
    std::string text;
165
0
#if defined(ENVOY_ENABLE_FULL_PROTOS)
166
0
    {
167
0
      Protobuf::TextFormat::Printer printer;
168
0
      printer.SetExpandAny(true);
169
0
      printer.SetUseFieldNumber(true);
170
0
      printer.SetSingleLineMode(true);
171
0
      printer.SetHideUnknownFields(true);
172
0
      for (const auto& message : source) {
173
0
        std::string text_message;
174
0
        printer.PrintToString(message, &text_message);
175
0
        absl::StrAppend(&text, text_message);
176
0
      }
177
0
    }
178
#else
179
    for (const auto& message : source) {
180
      absl::StrAppend(&text, message.SerializeAsString());
181
    }
182
#endif
183
0
    return HashUtil::xxHash64(text);
184
0
  }
185
186
  /**
187
   * Converts a proto repeated field into a container of const Protobuf::Message unique_ptr's.
188
   *
189
   * @param repeated_field the proto repeated field to convert.
190
   * @return ReturnType the container of const Message pointers.
191
   */
192
  template <typename ProtoType, typename ReturnType>
193
  static ReturnType
194
92
  convertToConstMessagePtrContainer(const Protobuf::RepeatedPtrField<ProtoType>& repeated_field) {
195
92
    ReturnType ret_container;
196
92
    std::transform(repeated_field.begin(), repeated_field.end(), std::back_inserter(ret_container),
197
1.07k
                   [](const ProtoType& proto_message) -> std::unique_ptr<const Protobuf::Message> {
198
1.07k
                     Protobuf::Message* clone = proto_message.New();
199
1.07k
                     clone->CheckTypeAndMergeFrom(proto_message);
200
1.07k
                     return std::unique_ptr<const Protobuf::Message>(clone);
201
1.07k
                   });
202
92
    return ret_container;
203
92
  }
204
};
205
206
class ProtoValidationException : public EnvoyException {
207
public:
208
  ProtoValidationException(const std::string& message);
209
};
210
211
/**
212
 * utility functions to call when throwing exceptions in header files
213
 */
214
class ProtoExceptionUtil {
215
public:
216
  static void throwMissingFieldException(const std::string& field_name,
217
                                         const Protobuf::Message& message);
218
  static void throwProtoValidationException(const std::string& validation_error,
219
                                            const Protobuf::Message& message);
220
};
221
222
class MessageUtil {
223
public:
224
  // std::hash
225
84.1k
  std::size_t operator()(const Protobuf::Message& message) const { return hash(message); }
226
227
  // std::equals_to
228
25.1k
  bool operator()(const Protobuf::Message& lhs, const Protobuf::Message& rhs) const {
229
25.1k
    return Protobuf::util::MessageDifferencer::Equivalent(lhs, rhs);
230
25.1k
  }
231
232
  class FileExtensionValues {
233
  public:
234
    const std::string ProtoBinary = ".pb";
235
    const std::string ProtoBinaryLengthDelimited = ".pb_length_delimited";
236
    const std::string ProtoText = ".pb_text";
237
    const std::string Json = ".json";
238
    const std::string Yaml = ".yaml";
239
    const std::string Yml = ".yml";
240
  };
241
242
  using FileExtensions = ConstSingleton<FileExtensionValues>;
243
244
  /**
245
   * A hash function uses Protobuf::TextFormat to force deterministic serialization recursively
246
   * including known types in google.protobuf.Any. See
247
   * https://github.com/protocolbuffers/protobuf/issues/5731 for the context.
248
   * Using this function is discouraged, see discussion in
249
   * https://github.com/envoyproxy/envoy/issues/8301.
250
   */
251
  static std::size_t hash(const Protobuf::Message& message);
252
253
#ifdef ENVOY_ENABLE_YAML
254
  static void loadFromJson(const std::string& json, Protobuf::Message& message,
255
                           ProtobufMessage::ValidationVisitor& validation_visitor);
256
  /**
257
   * Return ok only when strict conversion(don't ignore unknown field) succeeds.
258
   * Return error status for strict conversion and set has_unknown_field to true if relaxed
259
   * conversion(ignore unknown field) succeeds.
260
   * Return error status for relaxed conversion and set has_unknown_field to false if relaxed
261
   * conversion(ignore unknown field) fails.
262
   */
263
  static absl::Status loadFromJsonNoThrow(const std::string& json, Protobuf::Message& message,
264
                                          bool& has_unknown_fileld);
265
  static void loadFromJson(const std::string& json, ProtobufWkt::Struct& message);
266
  static void loadFromYaml(const std::string& yaml, Protobuf::Message& message,
267
                           ProtobufMessage::ValidationVisitor& validation_visitor);
268
  static void loadFromFile(const std::string& path, Protobuf::Message& message,
269
                           ProtobufMessage::ValidationVisitor& validation_visitor, Api::Api& api);
270
#endif
271
272
  /**
273
   * Checks for use of deprecated fields in message and all sub-messages.
274
   * @param message message to validate.
275
   * @param validation_visitor the validation visitor to use.
276
   * @param recurse_into_any whether to recurse into Any messages during unexpected checking.
277
   * @throw ProtoValidationException if deprecated fields are used and listed
278
   *    in disallowed_features in runtime_features.h
279
   */
280
  static void checkForUnexpectedFields(const Protobuf::Message& message,
281
                                       ProtobufMessage::ValidationVisitor& validation_visitor,
282
                                       bool recurse_into_any = false);
283
284
  /**
285
   * Perform a PGV check on the entire message tree, recursing into Any messages as needed.
286
   */
287
  static void recursivePgvCheck(const Protobuf::Message& message);
288
289
  /**
290
   * Validate protoc-gen-validate constraints on a given protobuf as well as performing
291
   * unexpected field validation.
292
   * Note the corresponding `.pb.validate.h` for the message has to be included in the source file
293
   * of caller.
294
   * @param message message to validate.
295
   * @param validation_visitor the validation visitor to use.
296
   * @param recurse_into_any whether to recurse into Any messages during unexpected checking.
297
   * @throw ProtoValidationException if the message does not satisfy its type constraints.
298
   */
299
  template <class MessageType>
300
  static void validate(const MessageType& message,
301
                       ProtobufMessage::ValidationVisitor& validation_visitor,
302
271k
                       bool recurse_into_any = false) {
303
    // Log warnings or throw errors if deprecated fields or unknown fields are in use.
304
271k
    if (!validation_visitor.skipValidation()) {
305
271k
      checkForUnexpectedFields(message, validation_visitor, recurse_into_any);
306
271k
    }
307
308
    // TODO(mattklein123): This will recurse the message twice, once above and once for PGV. When
309
    // we move to always recursing, satisfying the TODO below, we should merge into a single
310
    // recursion for performance reasons.
311
271k
    if (recurse_into_any) {
312
0
      return recursivePgvCheck(message);
313
0
    }
314
315
    // TODO(mattklein123): Now that PGV is capable of doing recursive message checks on abstract
316
    // types, we can remove bottom up validation from the entire codebase and only validate
317
    // at top level ingestion (bootstrap, discovery response). This is a large change and will be
318
    // done as a separate PR. This change will also allow removing templating from most/all of
319
    // related functions.
320
271k
    std::string err;
321
271k
    if (!Validate(message, &err)) {
322
3.80k
      ProtoExceptionUtil::throwProtoValidationException(err, message);
323
3.80k
    }
324
271k
  }
void Envoy::MessageUtil::validate<envoy::extensions::request_id::uuid::v3::UuidRequestIdConfig>(envoy::extensions::request_id::uuid::v3::UuidRequestIdConfig const&, Envoy::ProtobufMessage::ValidationVisitor&, bool)
Line
Count
Source
302
6.14k
                       bool recurse_into_any = false) {
303
    // Log warnings or throw errors if deprecated fields or unknown fields are in use.
304
6.14k
    if (!validation_visitor.skipValidation()) {
305
6.14k
      checkForUnexpectedFields(message, validation_visitor, recurse_into_any);
306
6.14k
    }
307
308
    // TODO(mattklein123): This will recurse the message twice, once above and once for PGV. When
309
    // we move to always recursing, satisfying the TODO below, we should merge into a single
310
    // recursion for performance reasons.
311
6.14k
    if (recurse_into_any) {
312
0
      return recursivePgvCheck(message);
313
0
    }
314
315
    // TODO(mattklein123): Now that PGV is capable of doing recursive message checks on abstract
316
    // types, we can remove bottom up validation from the entire codebase and only validate
317
    // at top level ingestion (bootstrap, discovery response). This is a large change and will be
318
    // done as a separate PR. This change will also allow removing templating from most/all of
319
    // related functions.
320
6.14k
    std::string err;
321
6.14k
    if (!Validate(message, &err)) {
322
0
      ProtoExceptionUtil::throwProtoValidationException(err, message);
323
0
    }
324
6.14k
  }
void Envoy::MessageUtil::validate<envoy::extensions::upstreams::http::v3::HttpProtocolOptions>(envoy::extensions::upstreams::http::v3::HttpProtocolOptions const&, Envoy::ProtobufMessage::ValidationVisitor&, bool)
Line
Count
Source
302
2.24k
                       bool recurse_into_any = false) {
303
    // Log warnings or throw errors if deprecated fields or unknown fields are in use.
304
2.24k
    if (!validation_visitor.skipValidation()) {
305
2.24k
      checkForUnexpectedFields(message, validation_visitor, recurse_into_any);
306
2.24k
    }
307
308
    // TODO(mattklein123): This will recurse the message twice, once above and once for PGV. When
309
    // we move to always recursing, satisfying the TODO below, we should merge into a single
310
    // recursion for performance reasons.
311
2.24k
    if (recurse_into_any) {
312
0
      return recursivePgvCheck(message);
313
0
    }
314
315
    // TODO(mattklein123): Now that PGV is capable of doing recursive message checks on abstract
316
    // types, we can remove bottom up validation from the entire codebase and only validate
317
    // at top level ingestion (bootstrap, discovery response). This is a large change and will be
318
    // done as a separate PR. This change will also allow removing templating from most/all of
319
    // related functions.
320
2.24k
    std::string err;
321
2.24k
    if (!Validate(message, &err)) {
322
0
      ProtoExceptionUtil::throwProtoValidationException(err, message);
323
0
    }
324
2.24k
  }
Unexecuted instantiation: void Envoy::MessageUtil::validate<envoy::extensions::upstreams::tcp::v3::TcpProtocolOptions>(envoy::extensions::upstreams::tcp::v3::TcpProtocolOptions const&, Envoy::ProtobufMessage::ValidationVisitor&, bool)
void Envoy::MessageUtil::validate<envoy::config::cluster::v3::Cluster>(envoy::config::cluster::v3::Cluster const&, Envoy::ProtobufMessage::ValidationVisitor&, bool)
Line
Count
Source
302
14
                       bool recurse_into_any = false) {
303
    // Log warnings or throw errors if deprecated fields or unknown fields are in use.
304
14
    if (!validation_visitor.skipValidation()) {
305
14
      checkForUnexpectedFields(message, validation_visitor, recurse_into_any);
306
14
    }
307
308
    // TODO(mattklein123): This will recurse the message twice, once above and once for PGV. When
309
    // we move to always recursing, satisfying the TODO below, we should merge into a single
310
    // recursion for performance reasons.
311
14
    if (recurse_into_any) {
312
0
      return recursivePgvCheck(message);
313
0
    }
314
315
    // TODO(mattklein123): Now that PGV is capable of doing recursive message checks on abstract
316
    // types, we can remove bottom up validation from the entire codebase and only validate
317
    // at top level ingestion (bootstrap, discovery response). This is a large change and will be
318
    // done as a separate PR. This change will also allow removing templating from most/all of
319
    // related functions.
320
14
    std::string err;
321
14
    if (!Validate(message, &err)) {
322
0
      ProtoExceptionUtil::throwProtoValidationException(err, message);
323
0
    }
324
14
  }
Unexecuted instantiation: void Envoy::MessageUtil::validate<envoy::service::health::v3::HealthCheckSpecifier>(envoy::service::health::v3::HealthCheckSpecifier const&, Envoy::ProtobufMessage::ValidationVisitor&, bool)
void Envoy::MessageUtil::validate<envoy::extensions::filters::http::upstream_codec::v3::UpstreamCodec>(envoy::extensions::filters::http::upstream_codec::v3::UpstreamCodec const&, Envoy::ProtobufMessage::ValidationVisitor&, bool)
Line
Count
Source
302
3.26k
                       bool recurse_into_any = false) {
303
    // Log warnings or throw errors if deprecated fields or unknown fields are in use.
304
3.26k
    if (!validation_visitor.skipValidation()) {
305
3.26k
      checkForUnexpectedFields(message, validation_visitor, recurse_into_any);
306
3.26k
    }
307
308
    // TODO(mattklein123): This will recurse the message twice, once above and once for PGV. When
309
    // we move to always recursing, satisfying the TODO below, we should merge into a single
310
    // recursion for performance reasons.
311
3.26k
    if (recurse_into_any) {
312
0
      return recursivePgvCheck(message);
313
0
    }
314
315
    // TODO(mattklein123): Now that PGV is capable of doing recursive message checks on abstract
316
    // types, we can remove bottom up validation from the entire codebase and only validate
317
    // at top level ingestion (bootstrap, discovery response). This is a large change and will be
318
    // done as a separate PR. This change will also allow removing templating from most/all of
319
    // related functions.
320
3.26k
    std::string err;
321
3.26k
    if (!Validate(message, &err)) {
322
0
      ProtoExceptionUtil::throwProtoValidationException(err, message);
323
0
    }
324
3.26k
  }
void Envoy::MessageUtil::validate<envoy::extensions::filters::network::http_connection_manager::v3::HttpConnectionManager>(envoy::extensions::filters::network::http_connection_manager::v3::HttpConnectionManager const&, Envoy::ProtobufMessage::ValidationVisitor&, bool)
Line
Count
Source
302
9.57k
                       bool recurse_into_any = false) {
303
    // Log warnings or throw errors if deprecated fields or unknown fields are in use.
304
9.57k
    if (!validation_visitor.skipValidation()) {
305
9.57k
      checkForUnexpectedFields(message, validation_visitor, recurse_into_any);
306
9.57k
    }
307
308
    // TODO(mattklein123): This will recurse the message twice, once above and once for PGV. When
309
    // we move to always recursing, satisfying the TODO below, we should merge into a single
310
    // recursion for performance reasons.
311
9.57k
    if (recurse_into_any) {
312
0
      return recursivePgvCheck(message);
313
0
    }
314
315
    // TODO(mattklein123): Now that PGV is capable of doing recursive message checks on abstract
316
    // types, we can remove bottom up validation from the entire codebase and only validate
317
    // at top level ingestion (bootstrap, discovery response). This is a large change and will be
318
    // done as a separate PR. This change will also allow removing templating from most/all of
319
    // related functions.
320
9.57k
    std::string err;
321
9.57k
    if (!Validate(message, &err)) {
322
237
      ProtoExceptionUtil::throwProtoValidationException(err, message);
323
237
    }
324
9.57k
  }
Unexecuted instantiation: void Envoy::MessageUtil::validate<envoy::extensions::filters::network::http_connection_manager::v3::EnvoyMobileHttpConnectionManager>(envoy::extensions::filters::network::http_connection_manager::v3::EnvoyMobileHttpConnectionManager const&, Envoy::ProtobufMessage::ValidationVisitor&, bool)
Unexecuted instantiation: void Envoy::MessageUtil::validate<envoy::extensions::transport_sockets::quic::v3::QuicDownstreamTransport>(envoy::extensions::transport_sockets::quic::v3::QuicDownstreamTransport const&, Envoy::ProtobufMessage::ValidationVisitor&, bool)
Unexecuted instantiation: void Envoy::MessageUtil::validate<envoy::extensions::transport_sockets::quic::v3::QuicUpstreamTransport>(envoy::extensions::transport_sockets::quic::v3::QuicUpstreamTransport const&, Envoy::ProtobufMessage::ValidationVisitor&, bool)
Unexecuted instantiation: void Envoy::MessageUtil::validate<envoy::extensions::transport_sockets::tls::v3::Secret>(envoy::extensions::transport_sockets::tls::v3::Secret const&, Envoy::ProtobufMessage::ValidationVisitor&, bool)
void Envoy::MessageUtil::validate<envoy::type::matcher::v3::HttpRequestHeaderMatchInput>(envoy::type::matcher::v3::HttpRequestHeaderMatchInput const&, Envoy::ProtobufMessage::ValidationVisitor&, bool)
Line
Count
Source
302
27.0k
                       bool recurse_into_any = false) {
303
    // Log warnings or throw errors if deprecated fields or unknown fields are in use.
304
27.0k
    if (!validation_visitor.skipValidation()) {
305
27.0k
      checkForUnexpectedFields(message, validation_visitor, recurse_into_any);
306
27.0k
    }
307
308
    // TODO(mattklein123): This will recurse the message twice, once above and once for PGV. When
309
    // we move to always recursing, satisfying the TODO below, we should merge into a single
310
    // recursion for performance reasons.
311
27.0k
    if (recurse_into_any) {
312
0
      return recursivePgvCheck(message);
313
0
    }
314
315
    // TODO(mattklein123): Now that PGV is capable of doing recursive message checks on abstract
316
    // types, we can remove bottom up validation from the entire codebase and only validate
317
    // at top level ingestion (bootstrap, discovery response). This is a large change and will be
318
    // done as a separate PR. This change will also allow removing templating from most/all of
319
    // related functions.
320
27.0k
    std::string err;
321
27.0k
    if (!Validate(message, &err)) {
322
2
      ProtoExceptionUtil::throwProtoValidationException(err, message);
323
2
    }
324
27.0k
  }
void Envoy::MessageUtil::validate<envoy::type::matcher::v3::HttpResponseHeaderMatchInput>(envoy::type::matcher::v3::HttpResponseHeaderMatchInput const&, Envoy::ProtobufMessage::ValidationVisitor&, bool)
Line
Count
Source
302
1.96k
                       bool recurse_into_any = false) {
303
    // Log warnings or throw errors if deprecated fields or unknown fields are in use.
304
1.96k
    if (!validation_visitor.skipValidation()) {
305
1.96k
      checkForUnexpectedFields(message, validation_visitor, recurse_into_any);
306
1.96k
    }
307
308
    // TODO(mattklein123): This will recurse the message twice, once above and once for PGV. When
309
    // we move to always recursing, satisfying the TODO below, we should merge into a single
310
    // recursion for performance reasons.
311
1.96k
    if (recurse_into_any) {
312
0
      return recursivePgvCheck(message);
313
0
    }
314
315
    // TODO(mattklein123): Now that PGV is capable of doing recursive message checks on abstract
316
    // types, we can remove bottom up validation from the entire codebase and only validate
317
    // at top level ingestion (bootstrap, discovery response). This is a large change and will be
318
    // done as a separate PR. This change will also allow removing templating from most/all of
319
    // related functions.
320
1.96k
    std::string err;
321
1.96k
    if (!Validate(message, &err)) {
322
1
      ProtoExceptionUtil::throwProtoValidationException(err, message);
323
1
    }
324
1.96k
  }
void Envoy::MessageUtil::validate<envoy::type::matcher::v3::HttpRequestTrailerMatchInput>(envoy::type::matcher::v3::HttpRequestTrailerMatchInput const&, Envoy::ProtobufMessage::ValidationVisitor&, bool)
Line
Count
Source
302
1.86k
                       bool recurse_into_any = false) {
303
    // Log warnings or throw errors if deprecated fields or unknown fields are in use.
304
1.86k
    if (!validation_visitor.skipValidation()) {
305
1.86k
      checkForUnexpectedFields(message, validation_visitor, recurse_into_any);
306
1.86k
    }
307
308
    // TODO(mattklein123): This will recurse the message twice, once above and once for PGV. When
309
    // we move to always recursing, satisfying the TODO below, we should merge into a single
310
    // recursion for performance reasons.
311
1.86k
    if (recurse_into_any) {
312
0
      return recursivePgvCheck(message);
313
0
    }
314
315
    // TODO(mattklein123): Now that PGV is capable of doing recursive message checks on abstract
316
    // types, we can remove bottom up validation from the entire codebase and only validate
317
    // at top level ingestion (bootstrap, discovery response). This is a large change and will be
318
    // done as a separate PR. This change will also allow removing templating from most/all of
319
    // related functions.
320
1.86k
    std::string err;
321
1.86k
    if (!Validate(message, &err)) {
322
2
      ProtoExceptionUtil::throwProtoValidationException(err, message);
323
2
    }
324
1.86k
  }
void Envoy::MessageUtil::validate<envoy::type::matcher::v3::HttpResponseTrailerMatchInput>(envoy::type::matcher::v3::HttpResponseTrailerMatchInput const&, Envoy::ProtobufMessage::ValidationVisitor&, bool)
Line
Count
Source
302
1.36k
                       bool recurse_into_any = false) {
303
    // Log warnings or throw errors if deprecated fields or unknown fields are in use.
304
1.36k
    if (!validation_visitor.skipValidation()) {
305
1.36k
      checkForUnexpectedFields(message, validation_visitor, recurse_into_any);
306
1.36k
    }
307
308
    // TODO(mattklein123): This will recurse the message twice, once above and once for PGV. When
309
    // we move to always recursing, satisfying the TODO below, we should merge into a single
310
    // recursion for performance reasons.
311
1.36k
    if (recurse_into_any) {
312
0
      return recursivePgvCheck(message);
313
0
    }
314
315
    // TODO(mattklein123): Now that PGV is capable of doing recursive message checks on abstract
316
    // types, we can remove bottom up validation from the entire codebase and only validate
317
    // at top level ingestion (bootstrap, discovery response). This is a large change and will be
318
    // done as a separate PR. This change will also allow removing templating from most/all of
319
    // related functions.
320
1.36k
    std::string err;
321
1.36k
    if (!Validate(message, &err)) {
322
2
      ProtoExceptionUtil::throwProtoValidationException(err, message);
323
2
    }
324
1.36k
  }
void Envoy::MessageUtil::validate<envoy::type::matcher::v3::HttpRequestQueryParamMatchInput>(envoy::type::matcher::v3::HttpRequestQueryParamMatchInput const&, Envoy::ProtobufMessage::ValidationVisitor&, bool)
Line
Count
Source
302
1
                       bool recurse_into_any = false) {
303
    // Log warnings or throw errors if deprecated fields or unknown fields are in use.
304
1
    if (!validation_visitor.skipValidation()) {
305
1
      checkForUnexpectedFields(message, validation_visitor, recurse_into_any);
306
1
    }
307
308
    // TODO(mattklein123): This will recurse the message twice, once above and once for PGV. When
309
    // we move to always recursing, satisfying the TODO below, we should merge into a single
310
    // recursion for performance reasons.
311
1
    if (recurse_into_any) {
312
0
      return recursivePgvCheck(message);
313
0
    }
314
315
    // TODO(mattklein123): Now that PGV is capable of doing recursive message checks on abstract
316
    // types, we can remove bottom up validation from the entire codebase and only validate
317
    // at top level ingestion (bootstrap, discovery response). This is a large change and will be
318
    // done as a separate PR. This change will also allow removing templating from most/all of
319
    // related functions.
320
1
    std::string err;
321
1
    if (!Validate(message, &err)) {
322
1
      ProtoExceptionUtil::throwProtoValidationException(err, message);
323
1
    }
324
1
  }
void Envoy::MessageUtil::validate<envoy::extensions::common::matching::v3::ExtensionWithMatcherPerRoute>(envoy::extensions::common::matching::v3::ExtensionWithMatcherPerRoute const&, Envoy::ProtobufMessage::ValidationVisitor&, bool)
Line
Count
Source
302
871
                       bool recurse_into_any = false) {
303
    // Log warnings or throw errors if deprecated fields or unknown fields are in use.
304
871
    if (!validation_visitor.skipValidation()) {
305
672
      checkForUnexpectedFields(message, validation_visitor, recurse_into_any);
306
672
    }
307
308
    // TODO(mattklein123): This will recurse the message twice, once above and once for PGV. When
309
    // we move to always recursing, satisfying the TODO below, we should merge into a single
310
    // recursion for performance reasons.
311
871
    if (recurse_into_any) {
312
0
      return recursivePgvCheck(message);
313
0
    }
314
315
    // TODO(mattklein123): Now that PGV is capable of doing recursive message checks on abstract
316
    // types, we can remove bottom up validation from the entire codebase and only validate
317
    // at top level ingestion (bootstrap, discovery response). This is a large change and will be
318
    // done as a separate PR. This change will also allow removing templating from most/all of
319
    // related functions.
320
871
    std::string err;
321
871
    if (!Validate(message, &err)) {
322
0
      ProtoExceptionUtil::throwProtoValidationException(err, message);
323
0
    }
324
871
  }
void Envoy::MessageUtil::validate<envoy::extensions::common::matching::v3::ExtensionWithMatcher>(envoy::extensions::common::matching::v3::ExtensionWithMatcher const&, Envoy::ProtobufMessage::ValidationVisitor&, bool)
Line
Count
Source
302
774
                       bool recurse_into_any = false) {
303
    // Log warnings or throw errors if deprecated fields or unknown fields are in use.
304
774
    if (!validation_visitor.skipValidation()) {
305
774
      checkForUnexpectedFields(message, validation_visitor, recurse_into_any);
306
774
    }
307
308
    // TODO(mattklein123): This will recurse the message twice, once above and once for PGV. When
309
    // we move to always recursing, satisfying the TODO below, we should merge into a single
310
    // recursion for performance reasons.
311
774
    if (recurse_into_any) {
312
0
      return recursivePgvCheck(message);
313
0
    }
314
315
    // TODO(mattklein123): Now that PGV is capable of doing recursive message checks on abstract
316
    // types, we can remove bottom up validation from the entire codebase and only validate
317
    // at top level ingestion (bootstrap, discovery response). This is a large change and will be
318
    // done as a separate PR. This change will also allow removing templating from most/all of
319
    // related functions.
320
774
    std::string err;
321
774
    if (!Validate(message, &err)) {
322
12
      ProtoExceptionUtil::throwProtoValidationException(err, message);
323
12
    }
324
774
  }
Unexecuted instantiation: void Envoy::MessageUtil::validate<envoy::config::core::v3::TypedExtensionConfig>(envoy::config::core::v3::TypedExtensionConfig const&, Envoy::ProtobufMessage::ValidationVisitor&, bool)
void Envoy::MessageUtil::validate<envoy::config::accesslog::v3::AccessLogFilter>(envoy::config::accesslog::v3::AccessLogFilter const&, Envoy::ProtobufMessage::ValidationVisitor&, bool)
Line
Count
Source
302
20.7k
                       bool recurse_into_any = false) {
303
    // Log warnings or throw errors if deprecated fields or unknown fields are in use.
304
20.7k
    if (!validation_visitor.skipValidation()) {
305
20.7k
      checkForUnexpectedFields(message, validation_visitor, recurse_into_any);
306
20.7k
    }
307
308
    // TODO(mattklein123): This will recurse the message twice, once above and once for PGV. When
309
    // we move to always recursing, satisfying the TODO below, we should merge into a single
310
    // recursion for performance reasons.
311
20.7k
    if (recurse_into_any) {
312
0
      return recursivePgvCheck(message);
313
0
    }
314
315
    // TODO(mattklein123): Now that PGV is capable of doing recursive message checks on abstract
316
    // types, we can remove bottom up validation from the entire codebase and only validate
317
    // at top level ingestion (bootstrap, discovery response). This is a large change and will be
318
    // done as a separate PR. This change will also allow removing templating from most/all of
319
    // related functions.
320
20.7k
    std::string err;
321
20.7k
    if (!Validate(message, &err)) {
322
0
      ProtoExceptionUtil::throwProtoValidationException(err, message);
323
0
    }
324
20.7k
  }
void Envoy::MessageUtil::validate<envoy::config::route::v3::ScopedRouteConfiguration>(envoy::config::route::v3::ScopedRouteConfiguration const&, Envoy::ProtobufMessage::ValidationVisitor&, bool)
Line
Count
Source
302
1.01k
                       bool recurse_into_any = false) {
303
    // Log warnings or throw errors if deprecated fields or unknown fields are in use.
304
1.01k
    if (!validation_visitor.skipValidation()) {
305
1.01k
      checkForUnexpectedFields(message, validation_visitor, recurse_into_any);
306
1.01k
    }
307
308
    // TODO(mattklein123): This will recurse the message twice, once above and once for PGV. When
309
    // we move to always recursing, satisfying the TODO below, we should merge into a single
310
    // recursion for performance reasons.
311
1.01k
    if (recurse_into_any) {
312
0
      return recursivePgvCheck(message);
313
0
    }
314
315
    // TODO(mattklein123): Now that PGV is capable of doing recursive message checks on abstract
316
    // types, we can remove bottom up validation from the entire codebase and only validate
317
    // at top level ingestion (bootstrap, discovery response). This is a large change and will be
318
    // done as a separate PR. This change will also allow removing templating from most/all of
319
    // related functions.
320
1.01k
    std::string err;
321
1.01k
    if (!Validate(message, &err)) {
322
0
      ProtoExceptionUtil::throwProtoValidationException(err, message);
323
0
    }
324
1.01k
  }
void Envoy::MessageUtil::validate<envoy::config::route::v3::RouteConfiguration>(envoy::config::route::v3::RouteConfiguration const&, Envoy::ProtobufMessage::ValidationVisitor&, bool)
Line
Count
Source
302
80
                       bool recurse_into_any = false) {
303
    // Log warnings or throw errors if deprecated fields or unknown fields are in use.
304
80
    if (!validation_visitor.skipValidation()) {
305
80
      checkForUnexpectedFields(message, validation_visitor, recurse_into_any);
306
80
    }
307
308
    // TODO(mattklein123): This will recurse the message twice, once above and once for PGV. When
309
    // we move to always recursing, satisfying the TODO below, we should merge into a single
310
    // recursion for performance reasons.
311
80
    if (recurse_into_any) {
312
0
      return recursivePgvCheck(message);
313
0
    }
314
315
    // TODO(mattklein123): Now that PGV is capable of doing recursive message checks on abstract
316
    // types, we can remove bottom up validation from the entire codebase and only validate
317
    // at top level ingestion (bootstrap, discovery response). This is a large change and will be
318
    // done as a separate PR. This change will also allow removing templating from most/all of
319
    // related functions.
320
80
    std::string err;
321
80
    if (!Validate(message, &err)) {
322
0
      ProtoExceptionUtil::throwProtoValidationException(err, message);
323
0
    }
324
80
  }
Unexecuted instantiation: void Envoy::MessageUtil::validate<envoy::config::route::v3::VirtualHost>(envoy::config::route::v3::VirtualHost const&, Envoy::ProtobufMessage::ValidationVisitor&, bool)
void Envoy::MessageUtil::validate<envoy::config::route::v3::Route>(envoy::config::route::v3::Route const&, Envoy::ProtobufMessage::ValidationVisitor&, bool)
Line
Count
Source
302
56.0k
                       bool recurse_into_any = false) {
303
    // Log warnings or throw errors if deprecated fields or unknown fields are in use.
304
56.0k
    if (!validation_visitor.skipValidation()) {
305
56.0k
      checkForUnexpectedFields(message, validation_visitor, recurse_into_any);
306
56.0k
    }
307
308
    // TODO(mattklein123): This will recurse the message twice, once above and once for PGV. When
309
    // we move to always recursing, satisfying the TODO below, we should merge into a single
310
    // recursion for performance reasons.
311
56.0k
    if (recurse_into_any) {
312
0
      return recursivePgvCheck(message);
313
0
    }
314
315
    // TODO(mattklein123): Now that PGV is capable of doing recursive message checks on abstract
316
    // types, we can remove bottom up validation from the entire codebase and only validate
317
    // at top level ingestion (bootstrap, discovery response). This is a large change and will be
318
    // done as a separate PR. This change will also allow removing templating from most/all of
319
    // related functions.
320
56.0k
    std::string err;
321
56.0k
    if (!Validate(message, &err)) {
322
365
      ProtoExceptionUtil::throwProtoValidationException(err, message);
323
365
    }
324
56.0k
  }
Unexecuted instantiation: void Envoy::MessageUtil::validate<envoy::config::route::v3::RouteList>(envoy::config::route::v3::RouteList const&, Envoy::ProtobufMessage::ValidationVisitor&, bool)
void Envoy::MessageUtil::validate<envoy::extensions::path::match::uri_template::v3::UriTemplateMatchConfig>(envoy::extensions::path::match::uri_template::v3::UriTemplateMatchConfig const&, Envoy::ProtobufMessage::ValidationVisitor&, bool)
Line
Count
Source
302
1.86k
                       bool recurse_into_any = false) {
303
    // Log warnings or throw errors if deprecated fields or unknown fields are in use.
304
1.86k
    if (!validation_visitor.skipValidation()) {
305
1.86k
      checkForUnexpectedFields(message, validation_visitor, recurse_into_any);
306
1.86k
    }
307
308
    // TODO(mattklein123): This will recurse the message twice, once above and once for PGV. When
309
    // we move to always recursing, satisfying the TODO below, we should merge into a single
310
    // recursion for performance reasons.
311
1.86k
    if (recurse_into_any) {
312
0
      return recursivePgvCheck(message);
313
0
    }
314
315
    // TODO(mattklein123): Now that PGV is capable of doing recursive message checks on abstract
316
    // types, we can remove bottom up validation from the entire codebase and only validate
317
    // at top level ingestion (bootstrap, discovery response). This is a large change and will be
318
    // done as a separate PR. This change will also allow removing templating from most/all of
319
    // related functions.
320
1.86k
    std::string err;
321
1.86k
    if (!Validate(message, &err)) {
322
1
      ProtoExceptionUtil::throwProtoValidationException(err, message);
323
1
    }
324
1.86k
  }
void Envoy::MessageUtil::validate<envoy::extensions::path::rewrite::uri_template::v3::UriTemplateRewriteConfig>(envoy::extensions::path::rewrite::uri_template::v3::UriTemplateRewriteConfig const&, Envoy::ProtobufMessage::ValidationVisitor&, bool)
Line
Count
Source
302
813
                       bool recurse_into_any = false) {
303
    // Log warnings or throw errors if deprecated fields or unknown fields are in use.
304
813
    if (!validation_visitor.skipValidation()) {
305
813
      checkForUnexpectedFields(message, validation_visitor, recurse_into_any);
306
813
    }
307
308
    // TODO(mattklein123): This will recurse the message twice, once above and once for PGV. When
309
    // we move to always recursing, satisfying the TODO below, we should merge into a single
310
    // recursion for performance reasons.
311
813
    if (recurse_into_any) {
312
0
      return recursivePgvCheck(message);
313
0
    }
314
315
    // TODO(mattklein123): Now that PGV is capable of doing recursive message checks on abstract
316
    // types, we can remove bottom up validation from the entire codebase and only validate
317
    // at top level ingestion (bootstrap, discovery response). This is a large change and will be
318
    // done as a separate PR. This change will also allow removing templating from most/all of
319
    // related functions.
320
813
    std::string err;
321
813
    if (!Validate(message, &err)) {
322
2
      ProtoExceptionUtil::throwProtoValidationException(err, message);
323
2
    }
324
813
  }
Unexecuted instantiation: void Envoy::MessageUtil::validate<envoy::extensions::http::header_validators::envoy_default::v3::HeaderValidatorConfig>(envoy::extensions::http::header_validators::envoy_default::v3::HeaderValidatorConfig const&, Envoy::ProtobufMessage::ValidationVisitor&, bool)
void Envoy::MessageUtil::validate<envoy::extensions::http::original_ip_detection::xff::v3::XffConfig>(envoy::extensions::http::original_ip_detection::xff::v3::XffConfig const&, Envoy::ProtobufMessage::ValidationVisitor&, bool)
Line
Count
Source
302
6.11k
                       bool recurse_into_any = false) {
303
    // Log warnings or throw errors if deprecated fields or unknown fields are in use.
304
6.11k
    if (!validation_visitor.skipValidation()) {
305
6.11k
      checkForUnexpectedFields(message, validation_visitor, recurse_into_any);
306
6.11k
    }
307
308
    // TODO(mattklein123): This will recurse the message twice, once above and once for PGV. When
309
    // we move to always recursing, satisfying the TODO below, we should merge into a single
310
    // recursion for performance reasons.
311
6.11k
    if (recurse_into_any) {
312
0
      return recursivePgvCheck(message);
313
0
    }
314
315
    // TODO(mattklein123): Now that PGV is capable of doing recursive message checks on abstract
316
    // types, we can remove bottom up validation from the entire codebase and only validate
317
    // at top level ingestion (bootstrap, discovery response). This is a large change and will be
318
    // done as a separate PR. This change will also allow removing templating from most/all of
319
    // related functions.
320
6.11k
    std::string err;
321
6.11k
    if (!Validate(message, &err)) {
322
0
      ProtoExceptionUtil::throwProtoValidationException(err, message);
323
0
    }
324
6.11k
  }
Unexecuted instantiation: void Envoy::MessageUtil::validate<envoy::service::runtime::v3::Runtime>(envoy::service::runtime::v3::Runtime const&, Envoy::ProtobufMessage::ValidationVisitor&, bool)
void Envoy::MessageUtil::validate<test::common::http::CodecImplFuzzTestCase>(test::common::http::CodecImplFuzzTestCase const&, Envoy::ProtobufMessage::ValidationVisitor&, bool)
Line
Count
Source
302
15.5k
                       bool recurse_into_any = false) {
303
    // Log warnings or throw errors if deprecated fields or unknown fields are in use.
304
15.5k
    if (!validation_visitor.skipValidation()) {
305
15.5k
      checkForUnexpectedFields(message, validation_visitor, recurse_into_any);
306
15.5k
    }
307
308
    // TODO(mattklein123): This will recurse the message twice, once above and once for PGV. When
309
    // we move to always recursing, satisfying the TODO below, we should merge into a single
310
    // recursion for performance reasons.
311
15.5k
    if (recurse_into_any) {
312
0
      return recursivePgvCheck(message);
313
0
    }
314
315
    // TODO(mattklein123): Now that PGV is capable of doing recursive message checks on abstract
316
    // types, we can remove bottom up validation from the entire codebase and only validate
317
    // at top level ingestion (bootstrap, discovery response). This is a large change and will be
318
    // done as a separate PR. This change will also allow removing templating from most/all of
319
    // related functions.
320
15.5k
    std::string err;
321
15.5k
    if (!Validate(message, &err)) {
322
26
      ProtoExceptionUtil::throwProtoValidationException(err, message);
323
26
    }
324
15.5k
  }
Unexecuted instantiation: void Envoy::MessageUtil::validate<envoy::config::core::v3::HealthCheck>(envoy::config::core::v3::HealthCheck const&, Envoy::ProtobufMessage::ValidationVisitor&, bool)
void Envoy::MessageUtil::validate<envoy::extensions::filters::http::router::v3::Router>(envoy::extensions::filters::http::router::v3::Router const&, Envoy::ProtobufMessage::ValidationVisitor&, bool)
Line
Count
Source
302
5.63k
                       bool recurse_into_any = false) {
303
    // Log warnings or throw errors if deprecated fields or unknown fields are in use.
304
5.63k
    if (!validation_visitor.skipValidation()) {
305
5.63k
      checkForUnexpectedFields(message, validation_visitor, recurse_into_any);
306
5.63k
    }
307
308
    // TODO(mattklein123): This will recurse the message twice, once above and once for PGV. When
309
    // we move to always recursing, satisfying the TODO below, we should merge into a single
310
    // recursion for performance reasons.
311
5.63k
    if (recurse_into_any) {
312
0
      return recursivePgvCheck(message);
313
0
    }
314
315
    // TODO(mattklein123): Now that PGV is capable of doing recursive message checks on abstract
316
    // types, we can remove bottom up validation from the entire codebase and only validate
317
    // at top level ingestion (bootstrap, discovery response). This is a large change and will be
318
    // done as a separate PR. This change will also allow removing templating from most/all of
319
    // related functions.
320
5.63k
    std::string err;
321
5.63k
    if (!Validate(message, &err)) {
322
7
      ProtoExceptionUtil::throwProtoValidationException(err, message);
323
7
    }
324
5.63k
  }
Unexecuted instantiation: void Envoy::MessageUtil::validate<test::integration::filters::AddBodyFilterConfig>(test::integration::filters::AddBodyFilterConfig const&, Envoy::ProtobufMessage::ValidationVisitor&, bool)
Unexecuted instantiation: void Envoy::MessageUtil::validate<test::integration::filters::CrashFilterConfig>(test::integration::filters::CrashFilterConfig const&, Envoy::ProtobufMessage::ValidationVisitor&, bool)
void Envoy::MessageUtil::validate<envoy::config::endpoint::v3::ClusterLoadAssignment>(envoy::config::endpoint::v3::ClusterLoadAssignment const&, Envoy::ProtobufMessage::ValidationVisitor&, bool)
Line
Count
Source
302
14
                       bool recurse_into_any = false) {
303
    // Log warnings or throw errors if deprecated fields or unknown fields are in use.
304
14
    if (!validation_visitor.skipValidation()) {
305
14
      checkForUnexpectedFields(message, validation_visitor, recurse_into_any);
306
14
    }
307
308
    // TODO(mattklein123): This will recurse the message twice, once above and once for PGV. When
309
    // we move to always recursing, satisfying the TODO below, we should merge into a single
310
    // recursion for performance reasons.
311
14
    if (recurse_into_any) {
312
0
      return recursivePgvCheck(message);
313
0
    }
314
315
    // TODO(mattklein123): Now that PGV is capable of doing recursive message checks on abstract
316
    // types, we can remove bottom up validation from the entire codebase and only validate
317
    // at top level ingestion (bootstrap, discovery response). This is a large change and will be
318
    // done as a separate PR. This change will also allow removing templating from most/all of
319
    // related functions.
320
14
    std::string err;
321
14
    if (!Validate(message, &err)) {
322
0
      ProtoExceptionUtil::throwProtoValidationException(err, message);
323
0
    }
324
14
  }
Unexecuted instantiation: void Envoy::MessageUtil::validate<envoy::config::endpoint::v3::LbEndpoint>(envoy::config::endpoint::v3::LbEndpoint const&, Envoy::ProtobufMessage::ValidationVisitor&, bool)
Unexecuted instantiation: void Envoy::MessageUtil::validate<envoy::extensions::transport_sockets::tls::v3::UpstreamTlsContext>(envoy::extensions::transport_sockets::tls::v3::UpstreamTlsContext const&, Envoy::ProtobufMessage::ValidationVisitor&, bool)
Unexecuted instantiation: void Envoy::MessageUtil::validate<envoy::extensions::transport_sockets::tls::v3::DownstreamTlsContext>(envoy::extensions::transport_sockets::tls::v3::DownstreamTlsContext const&, Envoy::ProtobufMessage::ValidationVisitor&, bool)
void Envoy::MessageUtil::validate<envoy::extensions::access_loggers::file::v3::FileAccessLog>(envoy::extensions::access_loggers::file::v3::FileAccessLog const&, Envoy::ProtobufMessage::ValidationVisitor&, bool)
Line
Count
Source
302
5.28k
                       bool recurse_into_any = false) {
303
    // Log warnings or throw errors if deprecated fields or unknown fields are in use.
304
5.28k
    if (!validation_visitor.skipValidation()) {
305
5.28k
      checkForUnexpectedFields(message, validation_visitor, recurse_into_any);
306
5.28k
    }
307
308
    // TODO(mattklein123): This will recurse the message twice, once above and once for PGV. When
309
    // we move to always recursing, satisfying the TODO below, we should merge into a single
310
    // recursion for performance reasons.
311
5.28k
    if (recurse_into_any) {
312
0
      return recursivePgvCheck(message);
313
0
    }
314
315
    // TODO(mattklein123): Now that PGV is capable of doing recursive message checks on abstract
316
    // types, we can remove bottom up validation from the entire codebase and only validate
317
    // at top level ingestion (bootstrap, discovery response). This is a large change and will be
318
    // done as a separate PR. This change will also allow removing templating from most/all of
319
    // related functions.
320
5.28k
    std::string err;
321
5.28k
    if (!Validate(message, &err)) {
322
0
      ProtoExceptionUtil::throwProtoValidationException(err, message);
323
0
    }
324
5.28k
  }
Unexecuted instantiation: void Envoy::MessageUtil::validate<envoy::extensions::access_loggers::stream::v3::StdoutAccessLog>(envoy::extensions::access_loggers::stream::v3::StdoutAccessLog const&, Envoy::ProtobufMessage::ValidationVisitor&, bool)
Unexecuted instantiation: void Envoy::MessageUtil::validate<envoy::extensions::access_loggers::stream::v3::StderrAccessLog>(envoy::extensions::access_loggers::stream::v3::StderrAccessLog const&, Envoy::ProtobufMessage::ValidationVisitor&, bool)
void Envoy::MessageUtil::validate<envoy::config::bootstrap::v3::Bootstrap>(envoy::config::bootstrap::v3::Bootstrap const&, Envoy::ProtobufMessage::ValidationVisitor&, bool)
Line
Count
Source
302
15.0k
                       bool recurse_into_any = false) {
303
    // Log warnings or throw errors if deprecated fields or unknown fields are in use.
304
15.0k
    if (!validation_visitor.skipValidation()) {
305
15.0k
      checkForUnexpectedFields(message, validation_visitor, recurse_into_any);
306
15.0k
    }
307
308
    // TODO(mattklein123): This will recurse the message twice, once above and once for PGV. When
309
    // we move to always recursing, satisfying the TODO below, we should merge into a single
310
    // recursion for performance reasons.
311
15.0k
    if (recurse_into_any) {
312
0
      return recursivePgvCheck(message);
313
0
    }
314
315
    // TODO(mattklein123): Now that PGV is capable of doing recursive message checks on abstract
316
    // types, we can remove bottom up validation from the entire codebase and only validate
317
    // at top level ingestion (bootstrap, discovery response). This is a large change and will be
318
    // done as a separate PR. This change will also allow removing templating from most/all of
319
    // related functions.
320
15.0k
    std::string err;
321
15.0k
    if (!Validate(message, &err)) {
322
656
      ProtoExceptionUtil::throwProtoValidationException(err, message);
323
656
    }
324
15.0k
  }
Unexecuted instantiation: void Envoy::MessageUtil::validate<envoy::config::common::key_value::v3::KeyValueStoreConfig>(envoy::config::common::key_value::v3::KeyValueStoreConfig const&, Envoy::ProtobufMessage::ValidationVisitor&, bool)
Unexecuted instantiation: void Envoy::MessageUtil::validate<envoy::config::overload::v3::ScaleTimersOverloadActionConfig>(envoy::config::overload::v3::ScaleTimersOverloadActionConfig const&, Envoy::ProtobufMessage::ValidationVisitor&, bool)
void Envoy::MessageUtil::validate<envoy::config::listener::v3::Listener>(envoy::config::listener::v3::Listener const&, Envoy::ProtobufMessage::ValidationVisitor&, bool)
Line
Count
Source
302
2.80k
                       bool recurse_into_any = false) {
303
    // Log warnings or throw errors if deprecated fields or unknown fields are in use.
304
2.80k
    if (!validation_visitor.skipValidation()) {
305
2.80k
      checkForUnexpectedFields(message, validation_visitor, recurse_into_any);
306
2.80k
    }
307
308
    // TODO(mattklein123): This will recurse the message twice, once above and once for PGV. When
309
    // we move to always recursing, satisfying the TODO below, we should merge into a single
310
    // recursion for performance reasons.
311
2.80k
    if (recurse_into_any) {
312
0
      return recursivePgvCheck(message);
313
0
    }
314
315
    // TODO(mattklein123): Now that PGV is capable of doing recursive message checks on abstract
316
    // types, we can remove bottom up validation from the entire codebase and only validate
317
    // at top level ingestion (bootstrap, discovery response). This is a large change and will be
318
    // done as a separate PR. This change will also allow removing templating from most/all of
319
    // related functions.
320
2.80k
    std::string err;
321
2.80k
    if (!Validate(message, &err)) {
322
0
      ProtoExceptionUtil::throwProtoValidationException(err, message);
323
0
    }
324
2.80k
  }
void Envoy::MessageUtil::validate<test::common::substitution::TestCase>(test::common::substitution::TestCase const&, Envoy::ProtobufMessage::ValidationVisitor&, bool)
Line
Count
Source
302
981
                       bool recurse_into_any = false) {
303
    // Log warnings or throw errors if deprecated fields or unknown fields are in use.
304
981
    if (!validation_visitor.skipValidation()) {
305
981
      checkForUnexpectedFields(message, validation_visitor, recurse_into_any);
306
981
    }
307
308
    // TODO(mattklein123): This will recurse the message twice, once above and once for PGV. When
309
    // we move to always recursing, satisfying the TODO below, we should merge into a single
310
    // recursion for performance reasons.
311
981
    if (recurse_into_any) {
312
0
      return recursivePgvCheck(message);
313
0
    }
314
315
    // TODO(mattklein123): Now that PGV is capable of doing recursive message checks on abstract
316
    // types, we can remove bottom up validation from the entire codebase and only validate
317
    // at top level ingestion (bootstrap, discovery response). This is a large change and will be
318
    // done as a separate PR. This change will also allow removing templating from most/all of
319
    // related functions.
320
981
    std::string err;
321
981
    if (!Validate(message, &err)) {
322
962
      ProtoExceptionUtil::throwProtoValidationException(err, message);
323
962
    }
324
981
  }
void Envoy::MessageUtil::validate<test::common::http::http2::HpackTestCase>(test::common::http::http2::HpackTestCase const&, Envoy::ProtobufMessage::ValidationVisitor&, bool)
Line
Count
Source
302
2.87k
                       bool recurse_into_any = false) {
303
    // Log warnings or throw errors if deprecated fields or unknown fields are in use.
304
2.87k
    if (!validation_visitor.skipValidation()) {
305
2.87k
      checkForUnexpectedFields(message, validation_visitor, recurse_into_any);
306
2.87k
    }
307
308
    // TODO(mattklein123): This will recurse the message twice, once above and once for PGV. When
309
    // we move to always recursing, satisfying the TODO below, we should merge into a single
310
    // recursion for performance reasons.
311
2.87k
    if (recurse_into_any) {
312
0
      return recursivePgvCheck(message);
313
0
    }
314
315
    // TODO(mattklein123): Now that PGV is capable of doing recursive message checks on abstract
316
    // types, we can remove bottom up validation from the entire codebase and only validate
317
    // at top level ingestion (bootstrap, discovery response). This is a large change and will be
318
    // done as a separate PR. This change will also allow removing templating from most/all of
319
    // related functions.
320
2.87k
    std::string err;
321
2.87k
    if (!Validate(message, &err)) {
322
8
      ProtoExceptionUtil::throwProtoValidationException(err, message);
323
8
    }
324
2.87k
  }
void Envoy::MessageUtil::validate<test::common::upstream::RandomLoadBalancerTestCase>(test::common::upstream::RandomLoadBalancerTestCase const&, Envoy::ProtobufMessage::ValidationVisitor&, bool)
Line
Count
Source
302
501
                       bool recurse_into_any = false) {
303
    // Log warnings or throw errors if deprecated fields or unknown fields are in use.
304
501
    if (!validation_visitor.skipValidation()) {
305
501
      checkForUnexpectedFields(message, validation_visitor, recurse_into_any);
306
501
    }
307
308
    // TODO(mattklein123): This will recurse the message twice, once above and once for PGV. When
309
    // we move to always recursing, satisfying the TODO below, we should merge into a single
310
    // recursion for performance reasons.
311
501
    if (recurse_into_any) {
312
0
      return recursivePgvCheck(message);
313
0
    }
314
315
    // TODO(mattklein123): Now that PGV is capable of doing recursive message checks on abstract
316
    // types, we can remove bottom up validation from the entire codebase and only validate
317
    // at top level ingestion (bootstrap, discovery response). This is a large change and will be
318
    // done as a separate PR. This change will also allow removing templating from most/all of
319
    // related functions.
320
501
    std::string err;
321
501
    if (!Validate(message, &err)) {
322
20
      ProtoExceptionUtil::throwProtoValidationException(err, message);
323
20
    }
324
501
  }
void Envoy::MessageUtil::validate<test::common::http::PathUtilityTestCase>(test::common::http::PathUtilityTestCase const&, Envoy::ProtobufMessage::ValidationVisitor&, bool)
Line
Count
Source
302
810
                       bool recurse_into_any = false) {
303
    // Log warnings or throw errors if deprecated fields or unknown fields are in use.
304
810
    if (!validation_visitor.skipValidation()) {
305
810
      checkForUnexpectedFields(message, validation_visitor, recurse_into_any);
306
810
    }
307
308
    // TODO(mattklein123): This will recurse the message twice, once above and once for PGV. When
309
    // we move to always recursing, satisfying the TODO below, we should merge into a single
310
    // recursion for performance reasons.
311
810
    if (recurse_into_any) {
312
0
      return recursivePgvCheck(message);
313
0
    }
314
315
    // TODO(mattklein123): Now that PGV is capable of doing recursive message checks on abstract
316
    // types, we can remove bottom up validation from the entire codebase and only validate
317
    // at top level ingestion (bootstrap, discovery response). This is a large change and will be
318
    // done as a separate PR. This change will also allow removing templating from most/all of
319
    // related functions.
320
810
    std::string err;
321
810
    if (!Validate(message, &err)) {
322
2
      ProtoExceptionUtil::throwProtoValidationException(err, message);
323
2
    }
324
810
  }
void Envoy::MessageUtil::validate<test::extensions::filters::listener::original_src::OriginalSrcTestCase>(test::extensions::filters::listener::original_src::OriginalSrcTestCase const&, Envoy::ProtobufMessage::ValidationVisitor&, bool)
Line
Count
Source
302
763
                       bool recurse_into_any = false) {
303
    // Log warnings or throw errors if deprecated fields or unknown fields are in use.
304
763
    if (!validation_visitor.skipValidation()) {
305
763
      checkForUnexpectedFields(message, validation_visitor, recurse_into_any);
306
763
    }
307
308
    // TODO(mattklein123): This will recurse the message twice, once above and once for PGV. When
309
    // we move to always recursing, satisfying the TODO below, we should merge into a single
310
    // recursion for performance reasons.
311
763
    if (recurse_into_any) {
312
0
      return recursivePgvCheck(message);
313
0
    }
314
315
    // TODO(mattklein123): Now that PGV is capable of doing recursive message checks on abstract
316
    // types, we can remove bottom up validation from the entire codebase and only validate
317
    // at top level ingestion (bootstrap, discovery response). This is a large change and will be
318
    // done as a separate PR. This change will also allow removing templating from most/all of
319
    // related functions.
320
763
    std::string err;
321
763
    if (!Validate(message, &err)) {
322
8
      ProtoExceptionUtil::throwProtoValidationException(err, message);
323
8
    }
324
763
  }
void Envoy::MessageUtil::validate<test::common::router::RouteTestCase>(test::common::router::RouteTestCase const&, Envoy::ProtobufMessage::ValidationVisitor&, bool)
Line
Count
Source
302
14.3k
                       bool recurse_into_any = false) {
303
    // Log warnings or throw errors if deprecated fields or unknown fields are in use.
304
14.3k
    if (!validation_visitor.skipValidation()) {
305
14.3k
      checkForUnexpectedFields(message, validation_visitor, recurse_into_any);
306
14.3k
    }
307
308
    // TODO(mattklein123): This will recurse the message twice, once above and once for PGV. When
309
    // we move to always recursing, satisfying the TODO below, we should merge into a single
310
    // recursion for performance reasons.
311
14.3k
    if (recurse_into_any) {
312
0
      return recursivePgvCheck(message);
313
0
    }
314
315
    // TODO(mattklein123): Now that PGV is capable of doing recursive message checks on abstract
316
    // types, we can remove bottom up validation from the entire codebase and only validate
317
    // at top level ingestion (bootstrap, discovery response). This is a large change and will be
318
    // done as a separate PR. This change will also allow removing templating from most/all of
319
    // related functions.
320
14.3k
    std::string err;
321
14.3k
    if (!Validate(message, &err)) {
322
94
      ProtoExceptionUtil::throwProtoValidationException(err, message);
323
94
    }
324
14.3k
  }
void Envoy::MessageUtil::validate<test::extensions::http::header_validators::envoy_default::PathNormalizerFuzzTestCase>(test::extensions::http::header_validators::envoy_default::PathNormalizerFuzzTestCase const&, Envoy::ProtobufMessage::ValidationVisitor&, bool)
Line
Count
Source
302
681
                       bool recurse_into_any = false) {
303
    // Log warnings or throw errors if deprecated fields or unknown fields are in use.
304
681
    if (!validation_visitor.skipValidation()) {
305
681
      checkForUnexpectedFields(message, validation_visitor, recurse_into_any);
306
681
    }
307
308
    // TODO(mattklein123): This will recurse the message twice, once above and once for PGV. When
309
    // we move to always recursing, satisfying the TODO below, we should merge into a single
310
    // recursion for performance reasons.
311
681
    if (recurse_into_any) {
312
0
      return recursivePgvCheck(message);
313
0
    }
314
315
    // TODO(mattklein123): Now that PGV is capable of doing recursive message checks on abstract
316
    // types, we can remove bottom up validation from the entire codebase and only validate
317
    // at top level ingestion (bootstrap, discovery response). This is a large change and will be
318
    // done as a separate PR. This change will also allow removing templating from most/all of
319
    // related functions.
320
681
    std::string err;
321
681
    if (!Validate(message, &err)) {
322
2
      ProtoExceptionUtil::throwProtoValidationException(err, message);
323
2
    }
324
681
  }
void Envoy::MessageUtil::validate<test::extensions::filters::listener::proxy_protocol::ProxyProtocolTestCase>(test::extensions::filters::listener::proxy_protocol::ProxyProtocolTestCase const&, Envoy::ProtobufMessage::ValidationVisitor&, bool)
Line
Count
Source
302
12
                       bool recurse_into_any = false) {
303
    // Log warnings or throw errors if deprecated fields or unknown fields are in use.
304
12
    if (!validation_visitor.skipValidation()) {
305
12
      checkForUnexpectedFields(message, validation_visitor, recurse_into_any);
306
12
    }
307
308
    // TODO(mattklein123): This will recurse the message twice, once above and once for PGV. When
309
    // we move to always recursing, satisfying the TODO below, we should merge into a single
310
    // recursion for performance reasons.
311
12
    if (recurse_into_any) {
312
0
      return recursivePgvCheck(message);
313
0
    }
314
315
    // TODO(mattklein123): Now that PGV is capable of doing recursive message checks on abstract
316
    // types, we can remove bottom up validation from the entire codebase and only validate
317
    // at top level ingestion (bootstrap, discovery response). This is a large change and will be
318
    // done as a separate PR. This change will also allow removing templating from most/all of
319
    // related functions.
320
12
    std::string err;
321
12
    if (!Validate(message, &err)) {
322
11
      ProtoExceptionUtil::throwProtoValidationException(err, message);
323
11
    }
324
12
  }
void Envoy::MessageUtil::validate<envoy::extensions::filters::network::ext_authz::ExtAuthzTestCase>(envoy::extensions::filters::network::ext_authz::ExtAuthzTestCase const&, Envoy::ProtobufMessage::ValidationVisitor&, bool)
Line
Count
Source
302
2
                       bool recurse_into_any = false) {
303
    // Log warnings or throw errors if deprecated fields or unknown fields are in use.
304
2
    if (!validation_visitor.skipValidation()) {
305
2
      checkForUnexpectedFields(message, validation_visitor, recurse_into_any);
306
2
    }
307
308
    // TODO(mattklein123): This will recurse the message twice, once above and once for PGV. When
309
    // we move to always recursing, satisfying the TODO below, we should merge into a single
310
    // recursion for performance reasons.
311
2
    if (recurse_into_any) {
312
0
      return recursivePgvCheck(message);
313
0
    }
314
315
    // TODO(mattklein123): Now that PGV is capable of doing recursive message checks on abstract
316
    // types, we can remove bottom up validation from the entire codebase and only validate
317
    // at top level ingestion (bootstrap, discovery response). This is a large change and will be
318
    // done as a separate PR. This change will also allow removing templating from most/all of
319
    // related functions.
320
2
    std::string err;
321
2
    if (!Validate(message, &err)) {
322
1
      ProtoExceptionUtil::throwProtoValidationException(err, message);
323
1
    }
324
2
  }
Unexecuted instantiation: void Envoy::MessageUtil::validate<test::extensions::filters::listener::FilterFuzzWithDataTestCase>(test::extensions::filters::listener::FilterFuzzWithDataTestCase const&, Envoy::ProtobufMessage::ValidationVisitor&, bool)
void Envoy::MessageUtil::validate<envoy::extensions::filters::network::local_ratelimit::LocalRateLimitTestCase>(envoy::extensions::filters::network::local_ratelimit::LocalRateLimitTestCase const&, Envoy::ProtobufMessage::ValidationVisitor&, bool)
Line
Count
Source
302
1.17k
                       bool recurse_into_any = false) {
303
    // Log warnings or throw errors if deprecated fields or unknown fields are in use.
304
1.17k
    if (!validation_visitor.skipValidation()) {
305
1.17k
      checkForUnexpectedFields(message, validation_visitor, recurse_into_any);
306
1.17k
    }
307
308
    // TODO(mattklein123): This will recurse the message twice, once above and once for PGV. When
309
    // we move to always recursing, satisfying the TODO below, we should merge into a single
310
    // recursion for performance reasons.
311
1.17k
    if (recurse_into_any) {
312
0
      return recursivePgvCheck(message);
313
0
    }
314
315
    // TODO(mattklein123): Now that PGV is capable of doing recursive message checks on abstract
316
    // types, we can remove bottom up validation from the entire codebase and only validate
317
    // at top level ingestion (bootstrap, discovery response). This is a large change and will be
318
    // done as a separate PR. This change will also allow removing templating from most/all of
319
    // related functions.
320
1.17k
    std::string err;
321
1.17k
    if (!Validate(message, &err)) {
322
8
      ProtoExceptionUtil::throwProtoValidationException(err, message);
323
8
    }
324
1.17k
  }
void Envoy::MessageUtil::validate<test::common::upstream::RoundRobinLoadBalancerTestCase>(test::common::upstream::RoundRobinLoadBalancerTestCase const&, Envoy::ProtobufMessage::ValidationVisitor&, bool)
Line
Count
Source
302
1.06k
                       bool recurse_into_any = false) {
303
    // Log warnings or throw errors if deprecated fields or unknown fields are in use.
304
1.06k
    if (!validation_visitor.skipValidation()) {
305
1.06k
      checkForUnexpectedFields(message, validation_visitor, recurse_into_any);
306
1.06k
    }
307
308
    // TODO(mattklein123): This will recurse the message twice, once above and once for PGV. When
309
    // we move to always recursing, satisfying the TODO below, we should merge into a single
310
    // recursion for performance reasons.
311
1.06k
    if (recurse_into_any) {
312
0
      return recursivePgvCheck(message);
313
0
    }
314
315
    // TODO(mattklein123): Now that PGV is capable of doing recursive message checks on abstract
316
    // types, we can remove bottom up validation from the entire codebase and only validate
317
    // at top level ingestion (bootstrap, discovery response). This is a large change and will be
318
    // done as a separate PR. This change will also allow removing templating from most/all of
319
    // related functions.
320
1.06k
    std::string err;
321
1.06k
    if (!Validate(message, &err)) {
322
21
      ProtoExceptionUtil::throwProtoValidationException(err, message);
323
21
    }
324
1.06k
  }
void Envoy::MessageUtil::validate<test::extensions::filters::network::FilterFuzzTestCase>(test::extensions::filters::network::FilterFuzzTestCase const&, Envoy::ProtobufMessage::ValidationVisitor&, bool)
Line
Count
Source
302
8.13k
                       bool recurse_into_any = false) {
303
    // Log warnings or throw errors if deprecated fields or unknown fields are in use.
304
8.13k
    if (!validation_visitor.skipValidation()) {
305
8.13k
      checkForUnexpectedFields(message, validation_visitor, recurse_into_any);
306
8.13k
    }
307
308
    // TODO(mattklein123): This will recurse the message twice, once above and once for PGV. When
309
    // we move to always recursing, satisfying the TODO below, we should merge into a single
310
    // recursion for performance reasons.
311
8.13k
    if (recurse_into_any) {
312
0
      return recursivePgvCheck(message);
313
0
    }
314
315
    // TODO(mattklein123): Now that PGV is capable of doing recursive message checks on abstract
316
    // types, we can remove bottom up validation from the entire codebase and only validate
317
    // at top level ingestion (bootstrap, discovery response). This is a large change and will be
318
    // done as a separate PR. This change will also allow removing templating from most/all of
319
    // related functions.
320
8.13k
    std::string err;
321
8.13k
    if (!Validate(message, &err)) {
322
0
      ProtoExceptionUtil::throwProtoValidationException(err, message);
323
0
    }
324
8.13k
  }
Unexecuted instantiation: void Envoy::MessageUtil::validate<envoy::extensions::http::early_header_mutation::header_mutation::v3::HeaderMutation>(envoy::extensions::http::early_header_mutation::header_mutation::v3::HeaderMutation const&, Envoy::ProtobufMessage::ValidationVisitor&, bool)
Unexecuted instantiation: void Envoy::MessageUtil::validate<envoy::extensions::http::original_ip_detection::custom_header::v3::CustomHeaderConfig>(envoy::extensions::http::original_ip_detection::custom_header::v3::CustomHeaderConfig const&, Envoy::ProtobufMessage::ValidationVisitor&, bool)
Unexecuted instantiation: void Envoy::MessageUtil::validate<envoy::config::core::v3::SubstitutionFormatString>(envoy::config::core::v3::SubstitutionFormatString const&, Envoy::ProtobufMessage::ValidationVisitor&, bool)
Unexecuted instantiation: void Envoy::MessageUtil::validate<envoy::extensions::matching::common_inputs::environment_variable::v3::Config>(envoy::extensions::matching::common_inputs::environment_variable::v3::Config const&, Envoy::ProtobufMessage::ValidationVisitor&, bool)
Unexecuted instantiation: void Envoy::MessageUtil::validate<envoy::extensions::matching::input_matchers::consistent_hashing::v3::ConsistentHashing>(envoy::extensions::matching::input_matchers::consistent_hashing::v3::ConsistentHashing const&, Envoy::ProtobufMessage::ValidationVisitor&, bool)
Unexecuted instantiation: void Envoy::MessageUtil::validate<envoy::extensions::matching::input_matchers::ip::v3::Ip>(envoy::extensions::matching::input_matchers::ip::v3::Ip const&, Envoy::ProtobufMessage::ValidationVisitor&, bool)
void Envoy::MessageUtil::validate<envoy::extensions::filters::network::ext_authz::v3::ExtAuthz>(envoy::extensions::filters::network::ext_authz::v3::ExtAuthz const&, Envoy::ProtobufMessage::ValidationVisitor&, bool)
Line
Count
Source
302
8
                       bool recurse_into_any = false) {
303
    // Log warnings or throw errors if deprecated fields or unknown fields are in use.
304
8
    if (!validation_visitor.skipValidation()) {
305
8
      checkForUnexpectedFields(message, validation_visitor, recurse_into_any);
306
8
    }
307
308
    // TODO(mattklein123): This will recurse the message twice, once above and once for PGV. When
309
    // we move to always recursing, satisfying the TODO below, we should merge into a single
310
    // recursion for performance reasons.
311
8
    if (recurse_into_any) {
312
0
      return recursivePgvCheck(message);
313
0
    }
314
315
    // TODO(mattklein123): Now that PGV is capable of doing recursive message checks on abstract
316
    // types, we can remove bottom up validation from the entire codebase and only validate
317
    // at top level ingestion (bootstrap, discovery response). This is a large change and will be
318
    // done as a separate PR. This change will also allow removing templating from most/all of
319
    // related functions.
320
8
    std::string err;
321
8
    if (!Validate(message, &err)) {
322
0
      ProtoExceptionUtil::throwProtoValidationException(err, message);
323
0
    }
324
8
  }
void Envoy::MessageUtil::validate<envoy::extensions::filters::network::local_ratelimit::v3::LocalRateLimit>(envoy::extensions::filters::network::local_ratelimit::v3::LocalRateLimit const&, Envoy::ProtobufMessage::ValidationVisitor&, bool)
Line
Count
Source
302
15
                       bool recurse_into_any = false) {
303
    // Log warnings or throw errors if deprecated fields or unknown fields are in use.
304
15
    if (!validation_visitor.skipValidation()) {
305
15
      checkForUnexpectedFields(message, validation_visitor, recurse_into_any);
306
15
    }
307
308
    // TODO(mattklein123): This will recurse the message twice, once above and once for PGV. When
309
    // we move to always recursing, satisfying the TODO below, we should merge into a single
310
    // recursion for performance reasons.
311
15
    if (recurse_into_any) {
312
0
      return recursivePgvCheck(message);
313
0
    }
314
315
    // TODO(mattklein123): Now that PGV is capable of doing recursive message checks on abstract
316
    // types, we can remove bottom up validation from the entire codebase and only validate
317
    // at top level ingestion (bootstrap, discovery response). This is a large change and will be
318
    // done as a separate PR. This change will also allow removing templating from most/all of
319
    // related functions.
320
15
    std::string err;
321
15
    if (!Validate(message, &err)) {
322
2
      ProtoExceptionUtil::throwProtoValidationException(err, message);
323
2
    }
324
15
  }
void Envoy::MessageUtil::validate<envoy::extensions::filters::network::ratelimit::v3::RateLimit>(envoy::extensions::filters::network::ratelimit::v3::RateLimit const&, Envoy::ProtobufMessage::ValidationVisitor&, bool)
Line
Count
Source
302
12
                       bool recurse_into_any = false) {
303
    // Log warnings or throw errors if deprecated fields or unknown fields are in use.
304
12
    if (!validation_visitor.skipValidation()) {
305
12
      checkForUnexpectedFields(message, validation_visitor, recurse_into_any);
306
12
    }
307
308
    // TODO(mattklein123): This will recurse the message twice, once above and once for PGV. When
309
    // we move to always recursing, satisfying the TODO below, we should merge into a single
310
    // recursion for performance reasons.
311
12
    if (recurse_into_any) {
312
0
      return recursivePgvCheck(message);
313
0
    }
314
315
    // TODO(mattklein123): Now that PGV is capable of doing recursive message checks on abstract
316
    // types, we can remove bottom up validation from the entire codebase and only validate
317
    // at top level ingestion (bootstrap, discovery response). This is a large change and will be
318
    // done as a separate PR. This change will also allow removing templating from most/all of
319
    // related functions.
320
12
    std::string err;
321
12
    if (!Validate(message, &err)) {
322
0
      ProtoExceptionUtil::throwProtoValidationException(err, message);
323
0
    }
324
12
  }
void Envoy::MessageUtil::validate<envoy::extensions::filters::network::rbac::v3::RBAC>(envoy::extensions::filters::network::rbac::v3::RBAC const&, Envoy::ProtobufMessage::ValidationVisitor&, bool)
Line
Count
Source
302
616
                       bool recurse_into_any = false) {
303
    // Log warnings or throw errors if deprecated fields or unknown fields are in use.
304
616
    if (!validation_visitor.skipValidation()) {
305
616
      checkForUnexpectedFields(message, validation_visitor, recurse_into_any);
306
616
    }
307
308
    // TODO(mattklein123): This will recurse the message twice, once above and once for PGV. When
309
    // we move to always recursing, satisfying the TODO below, we should merge into a single
310
    // recursion for performance reasons.
311
616
    if (recurse_into_any) {
312
0
      return recursivePgvCheck(message);
313
0
    }
314
315
    // TODO(mattklein123): Now that PGV is capable of doing recursive message checks on abstract
316
    // types, we can remove bottom up validation from the entire codebase and only validate
317
    // at top level ingestion (bootstrap, discovery response). This is a large change and will be
318
    // done as a separate PR. This change will also allow removing templating from most/all of
319
    // related functions.
320
616
    std::string err;
321
616
    if (!Validate(message, &err)) {
322
7
      ProtoExceptionUtil::throwProtoValidationException(err, message);
323
7
    }
324
616
  }
Unexecuted instantiation: void Envoy::MessageUtil::validate<envoy::config::rbac::v3::Action>(envoy::config::rbac::v3::Action const&, Envoy::ProtobufMessage::ValidationVisitor&, bool)
void Envoy::MessageUtil::validate<test::common::http::ConnManagerImplTestCase>(test::common::http::ConnManagerImplTestCase const&, Envoy::ProtobufMessage::ValidationVisitor&, bool)
Line
Count
Source
302
4.11k
                       bool recurse_into_any = false) {
303
    // Log warnings or throw errors if deprecated fields or unknown fields are in use.
304
4.11k
    if (!validation_visitor.skipValidation()) {
305
4.11k
      checkForUnexpectedFields(message, validation_visitor, recurse_into_any);
306
4.11k
    }
307
308
    // TODO(mattklein123): This will recurse the message twice, once above and once for PGV. When
309
    // we move to always recursing, satisfying the TODO below, we should merge into a single
310
    // recursion for performance reasons.
311
4.11k
    if (recurse_into_any) {
312
0
      return recursivePgvCheck(message);
313
0
    }
314
315
    // TODO(mattklein123): Now that PGV is capable of doing recursive message checks on abstract
316
    // types, we can remove bottom up validation from the entire codebase and only validate
317
    // at top level ingestion (bootstrap, discovery response). This is a large change and will be
318
    // done as a separate PR. This change will also allow removing templating from most/all of
319
    // related functions.
320
4.11k
    std::string err;
321
4.11k
    if (!Validate(message, &err)) {
322
3
      ProtoExceptionUtil::throwProtoValidationException(err, message);
323
3
    }
324
4.11k
  }
void Envoy::MessageUtil::validate<test::common::router::TestCase>(test::common::router::TestCase const&, Envoy::ProtobufMessage::ValidationVisitor&, bool)
Line
Count
Source
302
8.18k
                       bool recurse_into_any = false) {
303
    // Log warnings or throw errors if deprecated fields or unknown fields are in use.
304
8.18k
    if (!validation_visitor.skipValidation()) {
305
8.18k
      checkForUnexpectedFields(message, validation_visitor, recurse_into_any);
306
8.18k
    }
307
308
    // TODO(mattklein123): This will recurse the message twice, once above and once for PGV. When
309
    // we move to always recursing, satisfying the TODO below, we should merge into a single
310
    // recursion for performance reasons.
311
8.18k
    if (recurse_into_any) {
312
0
      return recursivePgvCheck(message);
313
0
    }
314
315
    // TODO(mattklein123): Now that PGV is capable of doing recursive message checks on abstract
316
    // types, we can remove bottom up validation from the entire codebase and only validate
317
    // at top level ingestion (bootstrap, discovery response). This is a large change and will be
318
    // done as a separate PR. This change will also allow removing templating from most/all of
319
    // related functions.
320
8.18k
    std::string err;
321
8.18k
    if (!Validate(message, &err)) {
322
43
      ProtoExceptionUtil::throwProtoValidationException(err, message);
323
43
    }
324
8.18k
  }
void Envoy::MessageUtil::validate<test::server::config_validation::XdsTestCase>(test::server::config_validation::XdsTestCase const&, Envoy::ProtobufMessage::ValidationVisitor&, bool)
Line
Count
Source
302
11
                       bool recurse_into_any = false) {
303
    // Log warnings or throw errors if deprecated fields or unknown fields are in use.
304
11
    if (!validation_visitor.skipValidation()) {
305
11
      checkForUnexpectedFields(message, validation_visitor, recurse_into_any);
306
11
    }
307
308
    // TODO(mattklein123): This will recurse the message twice, once above and once for PGV. When
309
    // we move to always recursing, satisfying the TODO below, we should merge into a single
310
    // recursion for performance reasons.
311
11
    if (recurse_into_any) {
312
0
      return recursivePgvCheck(message);
313
0
    }
314
315
    // TODO(mattklein123): Now that PGV is capable of doing recursive message checks on abstract
316
    // types, we can remove bottom up validation from the entire codebase and only validate
317
    // at top level ingestion (bootstrap, discovery response). This is a large change and will be
318
    // done as a separate PR. This change will also allow removing templating from most/all of
319
    // related functions.
320
11
    std::string err;
321
11
    if (!Validate(message, &err)) {
322
4
      ProtoExceptionUtil::throwProtoValidationException(err, message);
323
4
    }
324
11
  }
void Envoy::MessageUtil::validate<test::extensions::filters::listener::tls_inspector::TlsInspectorTestCase>(test::extensions::filters::listener::tls_inspector::TlsInspectorTestCase const&, Envoy::ProtobufMessage::ValidationVisitor&, bool)
Line
Count
Source
302
14
                       bool recurse_into_any = false) {
303
    // Log warnings or throw errors if deprecated fields or unknown fields are in use.
304
14
    if (!validation_visitor.skipValidation()) {
305
14
      checkForUnexpectedFields(message, validation_visitor, recurse_into_any);
306
14
    }
307
308
    // TODO(mattklein123): This will recurse the message twice, once above and once for PGV. When
309
    // we move to always recursing, satisfying the TODO below, we should merge into a single
310
    // recursion for performance reasons.
311
14
    if (recurse_into_any) {
312
0
      return recursivePgvCheck(message);
313
0
    }
314
315
    // TODO(mattklein123): Now that PGV is capable of doing recursive message checks on abstract
316
    // types, we can remove bottom up validation from the entire codebase and only validate
317
    // at top level ingestion (bootstrap, discovery response). This is a large change and will be
318
    // done as a separate PR. This change will also allow removing templating from most/all of
319
    // related functions.
320
14
    std::string err;
321
14
    if (!Validate(message, &err)) {
322
13
      ProtoExceptionUtil::throwProtoValidationException(err, message);
323
13
    }
324
14
  }
void Envoy::MessageUtil::validate<test::extensions::filters::listener::FilterFuzzTestCase>(test::extensions::filters::listener::FilterFuzzTestCase const&, Envoy::ProtobufMessage::ValidationVisitor&, bool)
Line
Count
Source
302
769
                       bool recurse_into_any = false) {
303
    // Log warnings or throw errors if deprecated fields or unknown fields are in use.
304
769
    if (!validation_visitor.skipValidation()) {
305
769
      checkForUnexpectedFields(message, validation_visitor, recurse_into_any);
306
769
    }
307
308
    // TODO(mattklein123): This will recurse the message twice, once above and once for PGV. When
309
    // we move to always recursing, satisfying the TODO below, we should merge into a single
310
    // recursion for performance reasons.
311
769
    if (recurse_into_any) {
312
0
      return recursivePgvCheck(message);
313
0
    }
314
315
    // TODO(mattklein123): Now that PGV is capable of doing recursive message checks on abstract
316
    // types, we can remove bottom up validation from the entire codebase and only validate
317
    // at top level ingestion (bootstrap, discovery response). This is a large change and will be
318
    // done as a separate PR. This change will also allow removing templating from most/all of
319
    // related functions.
320
769
    std::string err;
321
769
    if (!Validate(message, &err)) {
322
0
      ProtoExceptionUtil::throwProtoValidationException(err, message);
323
0
    }
324
769
  }
void Envoy::MessageUtil::validate<test::extensions::filters::http::ext_proc::ExtProcGrpcTestCase>(test::extensions::filters::http::ext_proc::ExtProcGrpcTestCase const&, Envoy::ProtobufMessage::ValidationVisitor&, bool)
Line
Count
Source
302
1.10k
                       bool recurse_into_any = false) {
303
    // Log warnings or throw errors if deprecated fields or unknown fields are in use.
304
1.10k
    if (!validation_visitor.skipValidation()) {
305
1.10k
      checkForUnexpectedFields(message, validation_visitor, recurse_into_any);
306
1.10k
    }
307
308
    // TODO(mattklein123): This will recurse the message twice, once above and once for PGV. When
309
    // we move to always recursing, satisfying the TODO below, we should merge into a single
310
    // recursion for performance reasons.
311
1.10k
    if (recurse_into_any) {
312
0
      return recursivePgvCheck(message);
313
0
    }
314
315
    // TODO(mattklein123): Now that PGV is capable of doing recursive message checks on abstract
316
    // types, we can remove bottom up validation from the entire codebase and only validate
317
    // at top level ingestion (bootstrap, discovery response). This is a large change and will be
318
    // done as a separate PR. This change will also allow removing templating from most/all of
319
    // related functions.
320
1.10k
    std::string err;
321
1.10k
    if (!Validate(message, &err)) {
322
0
      ProtoExceptionUtil::throwProtoValidationException(err, message);
323
0
    }
324
1.10k
  }
Unexecuted instantiation: void Envoy::MessageUtil::validate<envoy::extensions::filters::http::ext_proc::v3::ExtProcPerRoute>(envoy::extensions::filters::http::ext_proc::v3::ExtProcPerRoute const&, Envoy::ProtobufMessage::ValidationVisitor&, bool)
void Envoy::MessageUtil::validate<envoy::extensions::filters::http::ext_proc::v3::ExternalProcessor>(envoy::extensions::filters::http::ext_proc::v3::ExternalProcessor const&, Envoy::ProtobufMessage::ValidationVisitor&, bool)
Line
Count
Source
302
1.18k
                       bool recurse_into_any = false) {
303
    // Log warnings or throw errors if deprecated fields or unknown fields are in use.
304
1.18k
    if (!validation_visitor.skipValidation()) {
305
1.18k
      checkForUnexpectedFields(message, validation_visitor, recurse_into_any);
306
1.18k
    }
307
308
    // TODO(mattklein123): This will recurse the message twice, once above and once for PGV. When
309
    // we move to always recursing, satisfying the TODO below, we should merge into a single
310
    // recursion for performance reasons.
311
1.18k
    if (recurse_into_any) {
312
0
      return recursivePgvCheck(message);
313
0
    }
314
315
    // TODO(mattklein123): Now that PGV is capable of doing recursive message checks on abstract
316
    // types, we can remove bottom up validation from the entire codebase and only validate
317
    // at top level ingestion (bootstrap, discovery response). This is a large change and will be
318
    // done as a separate PR. This change will also allow removing templating from most/all of
319
    // related functions.
320
1.18k
    std::string err;
321
1.18k
    if (!Validate(message, &err)) {
322
0
      ProtoExceptionUtil::throwProtoValidationException(err, message);
323
0
    }
324
1.18k
  }
Unexecuted instantiation: void Envoy::MessageUtil::validate<envoy::extensions::access_loggers::grpc::v3::HttpGrpcAccessLogConfig>(envoy::extensions::access_loggers::grpc::v3::HttpGrpcAccessLogConfig const&, Envoy::ProtobufMessage::ValidationVisitor&, bool)
Unexecuted instantiation: void Envoy::MessageUtil::validate<envoy::extensions::access_loggers::grpc::v3::TcpGrpcAccessLogConfig>(envoy::extensions::access_loggers::grpc::v3::TcpGrpcAccessLogConfig const&, Envoy::ProtobufMessage::ValidationVisitor&, bool)
Unexecuted instantiation: void Envoy::MessageUtil::validate<envoy::extensions::access_loggers::open_telemetry::v3::OpenTelemetryAccessLogConfig>(envoy::extensions::access_loggers::open_telemetry::v3::OpenTelemetryAccessLogConfig const&, Envoy::ProtobufMessage::ValidationVisitor&, bool)
Unexecuted instantiation: void Envoy::MessageUtil::validate<envoy::extensions::access_loggers::wasm::v3::WasmAccessLog>(envoy::extensions::access_loggers::wasm::v3::WasmAccessLog const&, Envoy::ProtobufMessage::ValidationVisitor&, bool)
Unexecuted instantiation: void Envoy::MessageUtil::validate<envoy::extensions::clusters::aggregate::v3::ClusterConfig>(envoy::extensions::clusters::aggregate::v3::ClusterConfig const&, Envoy::ProtobufMessage::ValidationVisitor&, bool)
Unexecuted instantiation: void Envoy::MessageUtil::validate<envoy::extensions::clusters::redis::v3::RedisClusterConfig>(envoy::extensions::clusters::redis::v3::RedisClusterConfig const&, Envoy::ProtobufMessage::ValidationVisitor&, bool)
Unexecuted instantiation: void Envoy::MessageUtil::validate<envoy::extensions::filters::network::redis_proxy::v3::RedisProtocolOptions>(envoy::extensions::filters::network::redis_proxy::v3::RedisProtocolOptions const&, Envoy::ProtobufMessage::ValidationVisitor&, bool)
Unexecuted instantiation: void Envoy::MessageUtil::validate<envoy::extensions::filters::network::redis_proxy::v3::RedisProxy>(envoy::extensions::filters::network::redis_proxy::v3::RedisProxy const&, Envoy::ProtobufMessage::ValidationVisitor&, bool)
Unexecuted instantiation: void Envoy::MessageUtil::validate<envoy::extensions::compression::gzip::compressor::v3::Gzip>(envoy::extensions::compression::gzip::compressor::v3::Gzip const&, Envoy::ProtobufMessage::ValidationVisitor&, bool)
Unexecuted instantiation: void Envoy::MessageUtil::validate<envoy::extensions::compression::gzip::decompressor::v3::Gzip>(envoy::extensions::compression::gzip::decompressor::v3::Gzip const&, Envoy::ProtobufMessage::ValidationVisitor&, bool)
Unexecuted instantiation: void Envoy::MessageUtil::validate<envoy::extensions::compression::brotli::compressor::v3::Brotli>(envoy::extensions::compression::brotli::compressor::v3::Brotli const&, Envoy::ProtobufMessage::ValidationVisitor&, bool)
Unexecuted instantiation: void Envoy::MessageUtil::validate<envoy::extensions::compression::brotli::decompressor::v3::Brotli>(envoy::extensions::compression::brotli::decompressor::v3::Brotli const&, Envoy::ProtobufMessage::ValidationVisitor&, bool)
Unexecuted instantiation: void Envoy::MessageUtil::validate<envoy::extensions::compression::zstd::compressor::v3::Zstd>(envoy::extensions::compression::zstd::compressor::v3::Zstd const&, Envoy::ProtobufMessage::ValidationVisitor&, bool)
Unexecuted instantiation: void Envoy::MessageUtil::validate<envoy::extensions::compression::zstd::decompressor::v3::Zstd>(envoy::extensions::compression::zstd::decompressor::v3::Zstd const&, Envoy::ProtobufMessage::ValidationVisitor&, bool)
Unexecuted instantiation: void Envoy::MessageUtil::validate<envoy::extensions::config::validators::minimum_clusters::v3::MinimumClustersValidator>(envoy::extensions::config::validators::minimum_clusters::v3::MinimumClustersValidator const&, Envoy::ProtobufMessage::ValidationVisitor&, bool)
Unexecuted instantiation: void Envoy::MessageUtil::validate<envoy::config::grpc_credential::v3::FileBasedMetadataConfig>(envoy::config::grpc_credential::v3::FileBasedMetadataConfig const&, Envoy::ProtobufMessage::ValidationVisitor&, bool)
Unexecuted instantiation: void Envoy::MessageUtil::validate<envoy::config::grpc_credential::v3::AwsIamConfig>(envoy::config::grpc_credential::v3::AwsIamConfig const&, Envoy::ProtobufMessage::ValidationVisitor&, bool)
Unexecuted instantiation: void Envoy::MessageUtil::validate<envoy::extensions::wasm::v3::WasmService>(envoy::extensions::wasm::v3::WasmService const&, Envoy::ProtobufMessage::ValidationVisitor&, bool)
Unexecuted instantiation: void Envoy::MessageUtil::validate<envoy::extensions::health_checkers::redis::v3::Redis>(envoy::extensions::health_checkers::redis::v3::Redis const&, Envoy::ProtobufMessage::ValidationVisitor&, bool)
Unexecuted instantiation: void Envoy::MessageUtil::validate<envoy::extensions::health_checkers::thrift::v3::Thrift>(envoy::extensions::health_checkers::thrift::v3::Thrift const&, Envoy::ProtobufMessage::ValidationVisitor&, bool)
Unexecuted instantiation: void Envoy::MessageUtil::validate<envoy::extensions::filters::network::thrift_proxy::v3::ThriftProtocolOptions>(envoy::extensions::filters::network::thrift_proxy::v3::ThriftProtocolOptions const&, Envoy::ProtobufMessage::ValidationVisitor&, bool)
Unexecuted instantiation: void Envoy::MessageUtil::validate<envoy::extensions::filters::network::thrift_proxy::v3::ThriftProxy>(envoy::extensions::filters::network::thrift_proxy::v3::ThriftProxy const&, Envoy::ProtobufMessage::ValidationVisitor&, bool)
Unexecuted instantiation: void Envoy::MessageUtil::validate<envoy::extensions::health_check::event_sinks::file::v3::HealthCheckEventFileSink>(envoy::extensions::health_check::event_sinks::file::v3::HealthCheckEventFileSink const&, Envoy::ProtobufMessage::ValidationVisitor&, bool)
Unexecuted instantiation: void Envoy::MessageUtil::validate<envoy::extensions::matching::input_matchers::runtime_fraction::v3::RuntimeFraction>(envoy::extensions::matching::input_matchers::runtime_fraction::v3::RuntimeFraction const&, Envoy::ProtobufMessage::ValidationVisitor&, bool)
Unexecuted instantiation: void Envoy::MessageUtil::validate<envoy::extensions::matching::common_inputs::network::v3::FilterStateInput>(envoy::extensions::matching::common_inputs::network::v3::FilterStateInput const&, Envoy::ProtobufMessage::ValidationVisitor&, bool)
Unexecuted instantiation: void Envoy::MessageUtil::validate<envoy::extensions::filters::http::adaptive_concurrency::v3::AdaptiveConcurrency>(envoy::extensions::filters::http::adaptive_concurrency::v3::AdaptiveConcurrency const&, Envoy::ProtobufMessage::ValidationVisitor&, bool)
void Envoy::MessageUtil::validate<envoy::extensions::filters::http::admission_control::v3::AdmissionControl>(envoy::extensions::filters::http::admission_control::v3::AdmissionControl const&, Envoy::ProtobufMessage::ValidationVisitor&, bool)
Line
Count
Source
302
189
                       bool recurse_into_any = false) {
303
    // Log warnings or throw errors if deprecated fields or unknown fields are in use.
304
189
    if (!validation_visitor.skipValidation()) {
305
189
      checkForUnexpectedFields(message, validation_visitor, recurse_into_any);
306
189
    }
307
308
    // TODO(mattklein123): This will recurse the message twice, once above and once for PGV. When
309
    // we move to always recursing, satisfying the TODO below, we should merge into a single
310
    // recursion for performance reasons.
311
189
    if (recurse_into_any) {
312
0
      return recursivePgvCheck(message);
313
0
    }
314
315
    // TODO(mattklein123): Now that PGV is capable of doing recursive message checks on abstract
316
    // types, we can remove bottom up validation from the entire codebase and only validate
317
    // at top level ingestion (bootstrap, discovery response). This is a large change and will be
318
    // done as a separate PR. This change will also allow removing templating from most/all of
319
    // related functions.
320
189
    std::string err;
321
189
    if (!Validate(message, &err)) {
322
4
      ProtoExceptionUtil::throwProtoValidationException(err, message);
323
4
    }
324
189
  }
Unexecuted instantiation: void Envoy::MessageUtil::validate<envoy::extensions::filters::http::alternate_protocols_cache::v3::FilterConfig>(envoy::extensions::filters::http::alternate_protocols_cache::v3::FilterConfig const&, Envoy::ProtobufMessage::ValidationVisitor&, bool)
Unexecuted instantiation: void Envoy::MessageUtil::validate<envoy::extensions::filters::http::aws_lambda::v3::PerRouteConfig>(envoy::extensions::filters::http::aws_lambda::v3::PerRouteConfig const&, Envoy::ProtobufMessage::ValidationVisitor&, bool)
void Envoy::MessageUtil::validate<envoy::extensions::filters::http::aws_lambda::v3::Config>(envoy::extensions::filters::http::aws_lambda::v3::Config const&, Envoy::ProtobufMessage::ValidationVisitor&, bool)
Line
Count
Source
302
4
                       bool recurse_into_any = false) {
303
    // Log warnings or throw errors if deprecated fields or unknown fields are in use.
304
4
    if (!validation_visitor.skipValidation()) {
305
4
      checkForUnexpectedFields(message, validation_visitor, recurse_into_any);
306
4
    }
307
308
    // TODO(mattklein123): This will recurse the message twice, once above and once for PGV. When
309
    // we move to always recursing, satisfying the TODO below, we should merge into a single
310
    // recursion for performance reasons.
311
4
    if (recurse_into_any) {
312
0
      return recursivePgvCheck(message);
313
0
    }
314
315
    // TODO(mattklein123): Now that PGV is capable of doing recursive message checks on abstract
316
    // types, we can remove bottom up validation from the entire codebase and only validate
317
    // at top level ingestion (bootstrap, discovery response). This is a large change and will be
318
    // done as a separate PR. This change will also allow removing templating from most/all of
319
    // related functions.
320
4
    std::string err;
321
4
    if (!Validate(message, &err)) {
322
0
      ProtoExceptionUtil::throwProtoValidationException(err, message);
323
0
    }
324
4
  }
Unexecuted instantiation: void Envoy::MessageUtil::validate<source::extensions::filters::http::aws_lambda::Request>(source::extensions::filters::http::aws_lambda::Request const&, Envoy::ProtobufMessage::ValidationVisitor&, bool)
Unexecuted instantiation: void Envoy::MessageUtil::validate<envoy::extensions::filters::http::aws_request_signing::v3::AwsRequestSigningPerRoute>(envoy::extensions::filters::http::aws_request_signing::v3::AwsRequestSigningPerRoute const&, Envoy::ProtobufMessage::ValidationVisitor&, bool)
void Envoy::MessageUtil::validate<envoy::extensions::filters::http::aws_request_signing::v3::AwsRequestSigning>(envoy::extensions::filters::http::aws_request_signing::v3::AwsRequestSigning const&, Envoy::ProtobufMessage::ValidationVisitor&, bool)
Line
Count
Source
302
21
                       bool recurse_into_any = false) {
303
    // Log warnings or throw errors if deprecated fields or unknown fields are in use.
304
21
    if (!validation_visitor.skipValidation()) {
305
21
      checkForUnexpectedFields(message, validation_visitor, recurse_into_any);
306
21
    }
307
308
    // TODO(mattklein123): This will recurse the message twice, once above and once for PGV. When
309
    // we move to always recursing, satisfying the TODO below, we should merge into a single
310
    // recursion for performance reasons.
311
21
    if (recurse_into_any) {
312
0
      return recursivePgvCheck(message);
313
0
    }
314
315
    // TODO(mattklein123): Now that PGV is capable of doing recursive message checks on abstract
316
    // types, we can remove bottom up validation from the entire codebase and only validate
317
    // at top level ingestion (bootstrap, discovery response). This is a large change and will be
318
    // done as a separate PR. This change will also allow removing templating from most/all of
319
    // related functions.
320
21
    std::string err;
321
21
    if (!Validate(message, &err)) {
322
0
      ProtoExceptionUtil::throwProtoValidationException(err, message);
323
0
    }
324
21
  }
void Envoy::MessageUtil::validate<envoy::extensions::filters::http::bandwidth_limit::v3::BandwidthLimit>(envoy::extensions::filters::http::bandwidth_limit::v3::BandwidthLimit const&, Envoy::ProtobufMessage::ValidationVisitor&, bool)
Line
Count
Source
302
5
                       bool recurse_into_any = false) {
303
    // Log warnings or throw errors if deprecated fields or unknown fields are in use.
304
5
    if (!validation_visitor.skipValidation()) {
305
5
      checkForUnexpectedFields(message, validation_visitor, recurse_into_any);
306
5
    }
307
308
    // TODO(mattklein123): This will recurse the message twice, once above and once for PGV. When
309
    // we move to always recursing, satisfying the TODO below, we should merge into a single
310
    // recursion for performance reasons.
311
5
    if (recurse_into_any) {
312
0
      return recursivePgvCheck(message);
313
0
    }
314
315
    // TODO(mattklein123): Now that PGV is capable of doing recursive message checks on abstract
316
    // types, we can remove bottom up validation from the entire codebase and only validate
317
    // at top level ingestion (bootstrap, discovery response). This is a large change and will be
318
    // done as a separate PR. This change will also allow removing templating from most/all of
319
    // related functions.
320
5
    std::string err;
321
5
    if (!Validate(message, &err)) {
322
0
      ProtoExceptionUtil::throwProtoValidationException(err, message);
323
0
    }
324
5
  }
void Envoy::MessageUtil::validate<envoy::extensions::filters::http::basic_auth::v3::BasicAuth>(envoy::extensions::filters::http::basic_auth::v3::BasicAuth const&, Envoy::ProtobufMessage::ValidationVisitor&, bool)
Line
Count
Source
302
4
                       bool recurse_into_any = false) {
303
    // Log warnings or throw errors if deprecated fields or unknown fields are in use.
304
4
    if (!validation_visitor.skipValidation()) {
305
4
      checkForUnexpectedFields(message, validation_visitor, recurse_into_any);
306
4
    }
307
308
    // TODO(mattklein123): This will recurse the message twice, once above and once for PGV. When
309
    // we move to always recursing, satisfying the TODO below, we should merge into a single
310
    // recursion for performance reasons.
311
4
    if (recurse_into_any) {
312
0
      return recursivePgvCheck(message);
313
0
    }
314
315
    // TODO(mattklein123): Now that PGV is capable of doing recursive message checks on abstract
316
    // types, we can remove bottom up validation from the entire codebase and only validate
317
    // at top level ingestion (bootstrap, discovery response). This is a large change and will be
318
    // done as a separate PR. This change will also allow removing templating from most/all of
319
    // related functions.
320
4
    std::string err;
321
4
    if (!Validate(message, &err)) {
322
0
      ProtoExceptionUtil::throwProtoValidationException(err, message);
323
0
    }
324
4
  }
Unexecuted instantiation: void Envoy::MessageUtil::validate<envoy::extensions::filters::http::buffer::v3::BufferPerRoute>(envoy::extensions::filters::http::buffer::v3::BufferPerRoute const&, Envoy::ProtobufMessage::ValidationVisitor&, bool)
void Envoy::MessageUtil::validate<envoy::extensions::filters::http::buffer::v3::Buffer>(envoy::extensions::filters::http::buffer::v3::Buffer const&, Envoy::ProtobufMessage::ValidationVisitor&, bool)
Line
Count
Source
302
89
                       bool recurse_into_any = false) {
303
    // Log warnings or throw errors if deprecated fields or unknown fields are in use.
304
89
    if (!validation_visitor.skipValidation()) {
305
89
      checkForUnexpectedFields(message, validation_visitor, recurse_into_any);
306
89
    }
307
308
    // TODO(mattklein123): This will recurse the message twice, once above and once for PGV. When
309
    // we move to always recursing, satisfying the TODO below, we should merge into a single
310
    // recursion for performance reasons.
311
89
    if (recurse_into_any) {
312
0
      return recursivePgvCheck(message);
313
0
    }
314
315
    // TODO(mattklein123): Now that PGV is capable of doing recursive message checks on abstract
316
    // types, we can remove bottom up validation from the entire codebase and only validate
317
    // at top level ingestion (bootstrap, discovery response). This is a large change and will be
318
    // done as a separate PR. This change will also allow removing templating from most/all of
319
    // related functions.
320
89
    std::string err;
321
89
    if (!Validate(message, &err)) {
322
1
      ProtoExceptionUtil::throwProtoValidationException(err, message);
323
1
    }
324
89
  }
void Envoy::MessageUtil::validate<envoy::extensions::filters::http::cache::v3::CacheConfig>(envoy::extensions::filters::http::cache::v3::CacheConfig const&, Envoy::ProtobufMessage::ValidationVisitor&, bool)
Line
Count
Source
302
5
                       bool recurse_into_any = false) {
303
    // Log warnings or throw errors if deprecated fields or unknown fields are in use.
304
5
    if (!validation_visitor.skipValidation()) {
305
5
      checkForUnexpectedFields(message, validation_visitor, recurse_into_any);
306
5
    }
307
308
    // TODO(mattklein123): This will recurse the message twice, once above and once for PGV. When
309
    // we move to always recursing, satisfying the TODO below, we should merge into a single
310
    // recursion for performance reasons.
311
5
    if (recurse_into_any) {
312
0
      return recursivePgvCheck(message);
313
0
    }
314
315
    // TODO(mattklein123): Now that PGV is capable of doing recursive message checks on abstract
316
    // types, we can remove bottom up validation from the entire codebase and only validate
317
    // at top level ingestion (bootstrap, discovery response). This is a large change and will be
318
    // done as a separate PR. This change will also allow removing templating from most/all of
319
    // related functions.
320
5
    std::string err;
321
5
    if (!Validate(message, &err)) {
322
0
      ProtoExceptionUtil::throwProtoValidationException(err, message);
323
0
    }
324
5
  }
void Envoy::MessageUtil::validate<envoy::extensions::filters::http::cdn_loop::v3::CdnLoopConfig>(envoy::extensions::filters::http::cdn_loop::v3::CdnLoopConfig const&, Envoy::ProtobufMessage::ValidationVisitor&, bool)
Line
Count
Source
302
11
                       bool recurse_into_any = false) {
303
    // Log warnings or throw errors if deprecated fields or unknown fields are in use.
304
11
    if (!validation_visitor.skipValidation()) {
305
11
      checkForUnexpectedFields(message, validation_visitor, recurse_into_any);
306
11
    }
307
308
    // TODO(mattklein123): This will recurse the message twice, once above and once for PGV. When
309
    // we move to always recursing, satisfying the TODO below, we should merge into a single
310
    // recursion for performance reasons.
311
11
    if (recurse_into_any) {
312
0
      return recursivePgvCheck(message);
313
0
    }
314
315
    // TODO(mattklein123): Now that PGV is capable of doing recursive message checks on abstract
316
    // types, we can remove bottom up validation from the entire codebase and only validate
317
    // at top level ingestion (bootstrap, discovery response). This is a large change and will be
318
    // done as a separate PR. This change will also allow removing templating from most/all of
319
    // related functions.
320
11
    std::string err;
321
11
    if (!Validate(message, &err)) {
322
0
      ProtoExceptionUtil::throwProtoValidationException(err, message);
323
0
    }
324
11
  }
Unexecuted instantiation: void Envoy::MessageUtil::validate<envoy::extensions::filters::http::compressor::v3::CompressorPerRoute>(envoy::extensions::filters::http::compressor::v3::CompressorPerRoute const&, Envoy::ProtobufMessage::ValidationVisitor&, bool)
Unexecuted instantiation: void Envoy::MessageUtil::validate<envoy::extensions::filters::http::compressor::v3::Compressor>(envoy::extensions::filters::http::compressor::v3::Compressor const&, Envoy::ProtobufMessage::ValidationVisitor&, bool)
Unexecuted instantiation: void Envoy::MessageUtil::validate<envoy::extensions::filters::http::cors::v3::CorsPolicy>(envoy::extensions::filters::http::cors::v3::CorsPolicy const&, Envoy::ProtobufMessage::ValidationVisitor&, bool)
void Envoy::MessageUtil::validate<envoy::extensions::filters::http::cors::v3::Cors>(envoy::extensions::filters::http::cors::v3::Cors const&, Envoy::ProtobufMessage::ValidationVisitor&, bool)
Line
Count
Source
302
22
                       bool recurse_into_any = false) {
303
    // Log warnings or throw errors if deprecated fields or unknown fields are in use.
304
22
    if (!validation_visitor.skipValidation()) {
305
22
      checkForUnexpectedFields(message, validation_visitor, recurse_into_any);
306
22
    }
307
308
    // TODO(mattklein123): This will recurse the message twice, once above and once for PGV. When
309
    // we move to always recursing, satisfying the TODO below, we should merge into a single
310
    // recursion for performance reasons.
311
22
    if (recurse_into_any) {
312
0
      return recursivePgvCheck(message);
313
0
    }
314
315
    // TODO(mattklein123): Now that PGV is capable of doing recursive message checks on abstract
316
    // types, we can remove bottom up validation from the entire codebase and only validate
317
    // at top level ingestion (bootstrap, discovery response). This is a large change and will be
318
    // done as a separate PR. This change will also allow removing templating from most/all of
319
    // related functions.
320
22
    std::string err;
321
22
    if (!Validate(message, &err)) {
322
0
      ProtoExceptionUtil::throwProtoValidationException(err, message);
323
0
    }
324
22
  }
Unexecuted instantiation: void Envoy::MessageUtil::validate<envoy::extensions::filters::http::composite::v3::Composite>(envoy::extensions::filters::http::composite::v3::Composite const&, Envoy::ProtobufMessage::ValidationVisitor&, bool)
Unexecuted instantiation: void Envoy::MessageUtil::validate<envoy::extensions::filters::http::composite::v3::ExecuteFilterAction>(envoy::extensions::filters::http::composite::v3::ExecuteFilterAction const&, Envoy::ProtobufMessage::ValidationVisitor&, bool)
void Envoy::MessageUtil::validate<envoy::extensions::filters::http::connect_grpc_bridge::v3::FilterConfig>(envoy::extensions::filters::http::connect_grpc_bridge::v3::FilterConfig const&, Envoy::ProtobufMessage::ValidationVisitor&, bool)
Line
Count
Source
302
47
                       bool recurse_into_any = false) {
303
    // Log warnings or throw errors if deprecated fields or unknown fields are in use.
304
47
    if (!validation_visitor.skipValidation()) {
305
47
      checkForUnexpectedFields(message, validation_visitor, recurse_into_any);
306
47
    }
307
308
    // TODO(mattklein123): This will recurse the message twice, once above and once for PGV. When
309
    // we move to always recursing, satisfying the TODO below, we should merge into a single
310
    // recursion for performance reasons.
311
47
    if (recurse_into_any) {
312
0
      return recursivePgvCheck(message);
313
0
    }
314
315
    // TODO(mattklein123): Now that PGV is capable of doing recursive message checks on abstract
316
    // types, we can remove bottom up validation from the entire codebase and only validate
317
    // at top level ingestion (bootstrap, discovery response). This is a large change and will be
318
    // done as a separate PR. This change will also allow removing templating from most/all of
319
    // related functions.
320
47
    std::string err;
321
47
    if (!Validate(message, &err)) {
322
0
      ProtoExceptionUtil::throwProtoValidationException(err, message);
323
0
    }
324
47
  }
void Envoy::MessageUtil::validate<envoy::extensions::filters::http::csrf::v3::CsrfPolicy>(envoy::extensions::filters::http::csrf::v3::CsrfPolicy const&, Envoy::ProtobufMessage::ValidationVisitor&, bool)
Line
Count
Source
302
4
                       bool recurse_into_any = false) {
303
    // Log warnings or throw errors if deprecated fields or unknown fields are in use.
304
4
    if (!validation_visitor.skipValidation()) {
305
4
      checkForUnexpectedFields(message, validation_visitor, recurse_into_any);
306
4
    }
307
308
    // TODO(mattklein123): This will recurse the message twice, once above and once for PGV. When
309
    // we move to always recursing, satisfying the TODO below, we should merge into a single
310
    // recursion for performance reasons.
311
4
    if (recurse_into_any) {
312
0
      return recursivePgvCheck(message);
313
0
    }
314
315
    // TODO(mattklein123): Now that PGV is capable of doing recursive message checks on abstract
316
    // types, we can remove bottom up validation from the entire codebase and only validate
317
    // at top level ingestion (bootstrap, discovery response). This is a large change and will be
318
    // done as a separate PR. This change will also allow removing templating from most/all of
319
    // related functions.
320
4
    std::string err;
321
4
    if (!Validate(message, &err)) {
322
0
      ProtoExceptionUtil::throwProtoValidationException(err, message);
323
0
    }
324
4
  }
void Envoy::MessageUtil::validate<envoy::extensions::filters::http::custom_response::v3::CustomResponse>(envoy::extensions::filters::http::custom_response::v3::CustomResponse const&, Envoy::ProtobufMessage::ValidationVisitor&, bool)
Line
Count
Source
302
5
                       bool recurse_into_any = false) {
303
    // Log warnings or throw errors if deprecated fields or unknown fields are in use.
304
5
    if (!validation_visitor.skipValidation()) {
305
5
      checkForUnexpectedFields(message, validation_visitor, recurse_into_any);
306
5
    }
307
308
    // TODO(mattklein123): This will recurse the message twice, once above and once for PGV. When
309
    // we move to always recursing, satisfying the TODO below, we should merge into a single
310
    // recursion for performance reasons.
311
5
    if (recurse_into_any) {
312
0
      return recursivePgvCheck(message);
313
0
    }
314
315
    // TODO(mattklein123): Now that PGV is capable of doing recursive message checks on abstract
316
    // types, we can remove bottom up validation from the entire codebase and only validate
317
    // at top level ingestion (bootstrap, discovery response). This is a large change and will be
318
    // done as a separate PR. This change will also allow removing templating from most/all of
319
    // related functions.
320
5
    std::string err;
321
5
    if (!Validate(message, &err)) {
322
0
      ProtoExceptionUtil::throwProtoValidationException(err, message);
323
0
    }
324
5
  }
Unexecuted instantiation: void Envoy::MessageUtil::validate<envoy::extensions::filters::http::decompressor::v3::Decompressor>(envoy::extensions::filters::http::decompressor::v3::Decompressor const&, Envoy::ProtobufMessage::ValidationVisitor&, bool)
Unexecuted instantiation: void Envoy::MessageUtil::validate<envoy::extensions::filters::http::dynamic_forward_proxy::v3::PerRouteConfig>(envoy::extensions::filters::http::dynamic_forward_proxy::v3::PerRouteConfig const&, Envoy::ProtobufMessage::ValidationVisitor&, bool)
void Envoy::MessageUtil::validate<envoy::extensions::filters::http::dynamic_forward_proxy::v3::FilterConfig>(envoy::extensions::filters::http::dynamic_forward_proxy::v3::FilterConfig const&, Envoy::ProtobufMessage::ValidationVisitor&, bool)
Line
Count
Source
302
2
                       bool recurse_into_any = false) {
303
    // Log warnings or throw errors if deprecated fields or unknown fields are in use.
304
2
    if (!validation_visitor.skipValidation()) {
305
2
      checkForUnexpectedFields(message, validation_visitor, recurse_into_any);
306
2
    }
307
308
    // TODO(mattklein123): This will recurse the message twice, once above and once for PGV. When
309
    // we move to always recursing, satisfying the TODO below, we should merge into a single
310
    // recursion for performance reasons.
311
2
    if (recurse_into_any) {
312
0
      return recursivePgvCheck(message);
313
0
    }
314
315
    // TODO(mattklein123): Now that PGV is capable of doing recursive message checks on abstract
316
    // types, we can remove bottom up validation from the entire codebase and only validate
317
    // at top level ingestion (bootstrap, discovery response). This is a large change and will be
318
    // done as a separate PR. This change will also allow removing templating from most/all of
319
    // related functions.
320
2
    std::string err;
321
2
    if (!Validate(message, &err)) {
322
0
      ProtoExceptionUtil::throwProtoValidationException(err, message);
323
0
    }
324
2
  }
Unexecuted instantiation: void Envoy::MessageUtil::validate<envoy::extensions::clusters::dynamic_forward_proxy::v3::ClusterConfig>(envoy::extensions::clusters::dynamic_forward_proxy::v3::ClusterConfig const&, Envoy::ProtobufMessage::ValidationVisitor&, bool)
Unexecuted instantiation: void Envoy::MessageUtil::validate<envoy::extensions::filters::http::ext_authz::v3::ExtAuthzPerRoute>(envoy::extensions::filters::http::ext_authz::v3::ExtAuthzPerRoute const&, Envoy::ProtobufMessage::ValidationVisitor&, bool)
Unexecuted instantiation: void Envoy::MessageUtil::validate<envoy::extensions::filters::http::ext_authz::v3::ExtAuthz>(envoy::extensions::filters::http::ext_authz::v3::ExtAuthz const&, Envoy::ProtobufMessage::ValidationVisitor&, bool)
void Envoy::MessageUtil::validate<envoy::extensions::filters::http::fault::v3::HTTPFault>(envoy::extensions::filters::http::fault::v3::HTTPFault const&, Envoy::ProtobufMessage::ValidationVisitor&, bool)
Line
Count
Source
302
21
                       bool recurse_into_any = false) {
303
    // Log warnings or throw errors if deprecated fields or unknown fields are in use.
304
21
    if (!validation_visitor.skipValidation()) {
305
21
      checkForUnexpectedFields(message, validation_visitor, recurse_into_any);
306
21
    }
307
308
    // TODO(mattklein123): This will recurse the message twice, once above and once for PGV. When
309
    // we move to always recursing, satisfying the TODO below, we should merge into a single
310
    // recursion for performance reasons.
311
21
    if (recurse_into_any) {
312
0
      return recursivePgvCheck(message);
313
0
    }
314
315
    // TODO(mattklein123): Now that PGV is capable of doing recursive message checks on abstract
316
    // types, we can remove bottom up validation from the entire codebase and only validate
317
    // at top level ingestion (bootstrap, discovery response). This is a large change and will be
318
    // done as a separate PR. This change will also allow removing templating from most/all of
319
    // related functions.
320
21
    std::string err;
321
21
    if (!Validate(message, &err)) {
322
1
      ProtoExceptionUtil::throwProtoValidationException(err, message);
323
1
    }
324
21
  }
void Envoy::MessageUtil::validate<envoy::extensions::filters::http::file_system_buffer::v3::FileSystemBufferFilterConfig>(envoy::extensions::filters::http::file_system_buffer::v3::FileSystemBufferFilterConfig const&, Envoy::ProtobufMessage::ValidationVisitor&, bool)
Line
Count
Source
302
156
                       bool recurse_into_any = false) {
303
    // Log warnings or throw errors if deprecated fields or unknown fields are in use.
304
156
    if (!validation_visitor.skipValidation()) {
305
156
      checkForUnexpectedFields(message, validation_visitor, recurse_into_any);
306
156
    }
307
308
    // TODO(mattklein123): This will recurse the message twice, once above and once for PGV. When
309
    // we move to always recursing, satisfying the TODO below, we should merge into a single
310
    // recursion for performance reasons.
311
156
    if (recurse_into_any) {
312
0
      return recursivePgvCheck(message);
313
0
    }
314
315
    // TODO(mattklein123): Now that PGV is capable of doing recursive message checks on abstract
316
    // types, we can remove bottom up validation from the entire codebase and only validate
317
    // at top level ingestion (bootstrap, discovery response). This is a large change and will be
318
    // done as a separate PR. This change will also allow removing templating from most/all of
319
    // related functions.
320
156
    std::string err;
321
156
    if (!Validate(message, &err)) {
322
2
      ProtoExceptionUtil::throwProtoValidationException(err, message);
323
2
    }
324
156
  }
void Envoy::MessageUtil::validate<envoy::extensions::filters::http::gcp_authn::v3::GcpAuthnFilterConfig>(envoy::extensions::filters::http::gcp_authn::v3::GcpAuthnFilterConfig const&, Envoy::ProtobufMessage::ValidationVisitor&, bool)
Line
Count
Source
302
1
                       bool recurse_into_any = false) {
303
    // Log warnings or throw errors if deprecated fields or unknown fields are in use.
304
1
    if (!validation_visitor.skipValidation()) {
305
1
      checkForUnexpectedFields(message, validation_visitor, recurse_into_any);
306
1
    }
307
308
    // TODO(mattklein123): This will recurse the message twice, once above and once for PGV. When
309
    // we move to always recursing, satisfying the TODO below, we should merge into a single
310
    // recursion for performance reasons.
311
1
    if (recurse_into_any) {
312
0
      return recursivePgvCheck(message);
313
0
    }
314
315
    // TODO(mattklein123): Now that PGV is capable of doing recursive message checks on abstract
316
    // types, we can remove bottom up validation from the entire codebase and only validate
317
    // at top level ingestion (bootstrap, discovery response). This is a large change and will be
318
    // done as a separate PR. This change will also allow removing templating from most/all of
319
    // related functions.
320
1
    std::string err;
321
1
    if (!Validate(message, &err)) {
322
1
      ProtoExceptionUtil::throwProtoValidationException(err, message);
323
1
    }
324
1
  }
void Envoy::MessageUtil::validate<envoy::extensions::filters::http::geoip::v3::Geoip>(envoy::extensions::filters::http::geoip::v3::Geoip const&, Envoy::ProtobufMessage::ValidationVisitor&, bool)
Line
Count
Source
302
1
                       bool recurse_into_any = false) {
303
    // Log warnings or throw errors if deprecated fields or unknown fields are in use.
304
1
    if (!validation_visitor.skipValidation()) {
305
1
      checkForUnexpectedFields(message, validation_visitor, recurse_into_any);
306
1
    }
307
308
    // TODO(mattklein123): This will recurse the message twice, once above and once for PGV. When
309
    // we move to always recursing, satisfying the TODO below, we should merge into a single
310
    // recursion for performance reasons.
311
1
    if (recurse_into_any) {
312
0
      return recursivePgvCheck(message);
313
0
    }
314
315
    // TODO(mattklein123): Now that PGV is capable of doing recursive message checks on abstract
316
    // types, we can remove bottom up validation from the entire codebase and only validate
317
    // at top level ingestion (bootstrap, discovery response). This is a large change and will be
318
    // done as a separate PR. This change will also allow removing templating from most/all of
319
    // related functions.
320
1
    std::string err;
321
1
    if (!Validate(message, &err)) {
322
0
      ProtoExceptionUtil::throwProtoValidationException(err, message);
323
0
    }
324
1
  }
void Envoy::MessageUtil::validate<envoy::extensions::filters::http::grpc_field_extraction::v3::GrpcFieldExtractionConfig>(envoy::extensions::filters::http::grpc_field_extraction::v3::GrpcFieldExtractionConfig const&, Envoy::ProtobufMessage::ValidationVisitor&, bool)
Line
Count
Source
302
4
                       bool recurse_into_any = false) {
303
    // Log warnings or throw errors if deprecated fields or unknown fields are in use.
304
4
    if (!validation_visitor.skipValidation()) {
305
4
      checkForUnexpectedFields(message, validation_visitor, recurse_into_any);
306
4
    }
307
308
    // TODO(mattklein123): This will recurse the message twice, once above and once for PGV. When
309
    // we move to always recursing, satisfying the TODO below, we should merge into a single
310
    // recursion for performance reasons.
311
4
    if (recurse_into_any) {
312
0
      return recursivePgvCheck(message);
313
0
    }
314
315
    // TODO(mattklein123): Now that PGV is capable of doing recursive message checks on abstract
316
    // types, we can remove bottom up validation from the entire codebase and only validate
317
    // at top level ingestion (bootstrap, discovery response). This is a large change and will be
318
    // done as a separate PR. This change will also allow removing templating from most/all of
319
    // related functions.
320
4
    std::string err;
321
4
    if (!Validate(message, &err)) {
322
0
      ProtoExceptionUtil::throwProtoValidationException(err, message);
323
0
    }
324
4
  }
void Envoy::MessageUtil::validate<envoy::extensions::filters::http::grpc_http1_bridge::v3::Config>(envoy::extensions::filters::http::grpc_http1_bridge::v3::Config const&, Envoy::ProtobufMessage::ValidationVisitor&, bool)
Line
Count
Source
302
9
                       bool recurse_into_any = false) {
303
    // Log warnings or throw errors if deprecated fields or unknown fields are in use.
304
9
    if (!validation_visitor.skipValidation()) {
305
9
      checkForUnexpectedFields(message, validation_visitor, recurse_into_any);
306
9
    }
307
308
    // TODO(mattklein123): This will recurse the message twice, once above and once for PGV. When
309
    // we move to always recursing, satisfying the TODO below, we should merge into a single
310
    // recursion for performance reasons.
311
9
    if (recurse_into_any) {
312
0
      return recursivePgvCheck(message);
313
0
    }
314
315
    // TODO(mattklein123): Now that PGV is capable of doing recursive message checks on abstract
316
    // types, we can remove bottom up validation from the entire codebase and only validate
317
    // at top level ingestion (bootstrap, discovery response). This is a large change and will be
318
    // done as a separate PR. This change will also allow removing templating from most/all of
319
    // related functions.
320
9
    std::string err;
321
9
    if (!Validate(message, &err)) {
322
0
      ProtoExceptionUtil::throwProtoValidationException(err, message);
323
0
    }
324
9
  }
Unexecuted instantiation: void Envoy::MessageUtil::validate<envoy::extensions::filters::http::grpc_http1_reverse_bridge::v3::FilterConfigPerRoute>(envoy::extensions::filters::http::grpc_http1_reverse_bridge::v3::FilterConfigPerRoute const&, Envoy::ProtobufMessage::ValidationVisitor&, bool)
void Envoy::MessageUtil::validate<envoy::extensions::filters::http::grpc_http1_reverse_bridge::v3::FilterConfig>(envoy::extensions::filters::http::grpc_http1_reverse_bridge::v3::FilterConfig const&, Envoy::ProtobufMessage::ValidationVisitor&, bool)
Line
Count
Source
302
44
                       bool recurse_into_any = false) {
303
    // Log warnings or throw errors if deprecated fields or unknown fields are in use.
304
44
    if (!validation_visitor.skipValidation()) {
305
44
      checkForUnexpectedFields(message, validation_visitor, recurse_into_any);
306
44
    }
307
308
    // TODO(mattklein123): This will recurse the message twice, once above and once for PGV. When
309
    // we move to always recursing, satisfying the TODO below, we should merge into a single
310
    // recursion for performance reasons.
311
44
    if (recurse_into_any) {
312
0
      return recursivePgvCheck(message);
313
0
    }
314
315
    // TODO(mattklein123): Now that PGV is capable of doing recursive message checks on abstract
316
    // types, we can remove bottom up validation from the entire codebase and only validate
317
    // at top level ingestion (bootstrap, discovery response). This is a large change and will be
318
    // done as a separate PR. This change will also allow removing templating from most/all of
319
    // related functions.
320
44
    std::string err;
321
44
    if (!Validate(message, &err)) {
322
1
      ProtoExceptionUtil::throwProtoValidationException(err, message);
323
1
    }
324
44
  }
void Envoy::MessageUtil::validate<envoy::extensions::filters::http::grpc_json_transcoder::v3::GrpcJsonTranscoder>(envoy::extensions::filters::http::grpc_json_transcoder::v3::GrpcJsonTranscoder const&, Envoy::ProtobufMessage::ValidationVisitor&, bool)
Line
Count
Source
302
432
                       bool recurse_into_any = false) {
303
    // Log warnings or throw errors if deprecated fields or unknown fields are in use.
304
432
    if (!validation_visitor.skipValidation()) {
305
432
      checkForUnexpectedFields(message, validation_visitor, recurse_into_any);
306
432
    }
307
308
    // TODO(mattklein123): This will recurse the message twice, once above and once for PGV. When
309
    // we move to always recursing, satisfying the TODO below, we should merge into a single
310
    // recursion for performance reasons.
311
432
    if (recurse_into_any) {
312
0
      return recursivePgvCheck(message);
313
0
    }
314
315
    // TODO(mattklein123): Now that PGV is capable of doing recursive message checks on abstract
316
    // types, we can remove bottom up validation from the entire codebase and only validate
317
    // at top level ingestion (bootstrap, discovery response). This is a large change and will be
318
    // done as a separate PR. This change will also allow removing templating from most/all of
319
    // related functions.
320
432
    std::string err;
321
432
    if (!Validate(message, &err)) {
322
1
      ProtoExceptionUtil::throwProtoValidationException(err, message);
323
1
    }
324
432
  }
void Envoy::MessageUtil::validate<envoy::extensions::filters::http::grpc_stats::v3::FilterConfig>(envoy::extensions::filters::http::grpc_stats::v3::FilterConfig const&, Envoy::ProtobufMessage::ValidationVisitor&, bool)
Line
Count
Source
302
259
                       bool recurse_into_any = false) {
303
    // Log warnings or throw errors if deprecated fields or unknown fields are in use.
304
259
    if (!validation_visitor.skipValidation()) {
305
259
      checkForUnexpectedFields(message, validation_visitor, recurse_into_any);
306
259
    }
307
308
    // TODO(mattklein123): This will recurse the message twice, once above and once for PGV. When
309
    // we move to always recursing, satisfying the TODO below, we should merge into a single
310
    // recursion for performance reasons.
311
259
    if (recurse_into_any) {
312
0
      return recursivePgvCheck(message);
313
0
    }
314
315
    // TODO(mattklein123): Now that PGV is capable of doing recursive message checks on abstract
316
    // types, we can remove bottom up validation from the entire codebase and only validate
317
    // at top level ingestion (bootstrap, discovery response). This is a large change and will be
318
    // done as a separate PR. This change will also allow removing templating from most/all of
319
    // related functions.
320
259
    std::string err;
321
259
    if (!Validate(message, &err)) {
322
0
      ProtoExceptionUtil::throwProtoValidationException(err, message);
323
0
    }
324
259
  }
void Envoy::MessageUtil::validate<envoy::extensions::filters::http::grpc_web::v3::GrpcWeb>(envoy::extensions::filters::http::grpc_web::v3::GrpcWeb const&, Envoy::ProtobufMessage::ValidationVisitor&, bool)
Line
Count
Source
302
2
                       bool recurse_into_any = false) {
303
    // Log warnings or throw errors if deprecated fields or unknown fields are in use.
304
2
    if (!validation_visitor.skipValidation()) {
305
2
      checkForUnexpectedFields(message, validation_visitor, recurse_into_any);
306
2
    }
307
308
    // TODO(mattklein123): This will recurse the message twice, once above and once for PGV. When
309
    // we move to always recursing, satisfying the TODO below, we should merge into a single
310
    // recursion for performance reasons.
311
2
    if (recurse_into_any) {
312
0
      return recursivePgvCheck(message);
313
0
    }
314
315
    // TODO(mattklein123): Now that PGV is capable of doing recursive message checks on abstract
316
    // types, we can remove bottom up validation from the entire codebase and only validate
317
    // at top level ingestion (bootstrap, discovery response). This is a large change and will be
318
    // done as a separate PR. This change will also allow removing templating from most/all of
319
    // related functions.
320
2
    std::string err;
321
2
    if (!Validate(message, &err)) {
322
0
      ProtoExceptionUtil::throwProtoValidationException(err, message);
323
0
    }
324
2
  }
void Envoy::MessageUtil::validate<envoy::extensions::filters::http::header_to_metadata::v3::Config>(envoy::extensions::filters::http::header_to_metadata::v3::Config const&, Envoy::ProtobufMessage::ValidationVisitor&, bool)
Line
Count
Source
302
124
                       bool recurse_into_any = false) {
303
    // Log warnings or throw errors if deprecated fields or unknown fields are in use.
304
124
    if (!validation_visitor.skipValidation()) {
305
124
      checkForUnexpectedFields(message, validation_visitor, recurse_into_any);
306
124
    }
307
308
    // TODO(mattklein123): This will recurse the message twice, once above and once for PGV. When
309
    // we move to always recursing, satisfying the TODO below, we should merge into a single
310
    // recursion for performance reasons.
311
124
    if (recurse_into_any) {
312
0
      return recursivePgvCheck(message);
313
0
    }
314
315
    // TODO(mattklein123): Now that PGV is capable of doing recursive message checks on abstract
316
    // types, we can remove bottom up validation from the entire codebase and only validate
317
    // at top level ingestion (bootstrap, discovery response). This is a large change and will be
318
    // done as a separate PR. This change will also allow removing templating from most/all of
319
    // related functions.
320
124
    std::string err;
321
124
    if (!Validate(message, &err)) {
322
1
      ProtoExceptionUtil::throwProtoValidationException(err, message);
323
1
    }
324
124
  }
void Envoy::MessageUtil::validate<envoy::extensions::filters::http::health_check::v3::HealthCheck>(envoy::extensions::filters::http::health_check::v3::HealthCheck const&, Envoy::ProtobufMessage::ValidationVisitor&, bool)
Line
Count
Source
302
32
                       bool recurse_into_any = false) {
303
    // Log warnings or throw errors if deprecated fields or unknown fields are in use.
304
32
    if (!validation_visitor.skipValidation()) {
305
32
      checkForUnexpectedFields(message, validation_visitor, recurse_into_any);
306
32
    }
307
308
    // TODO(mattklein123): This will recurse the message twice, once above and once for PGV. When
309
    // we move to always recursing, satisfying the TODO below, we should merge into a single
310
    // recursion for performance reasons.
311
32
    if (recurse_into_any) {
312
0
      return recursivePgvCheck(message);
313
0
    }
314
315
    // TODO(mattklein123): Now that PGV is capable of doing recursive message checks on abstract
316
    // types, we can remove bottom up validation from the entire codebase and only validate
317
    // at top level ingestion (bootstrap, discovery response). This is a large change and will be
318
    // done as a separate PR. This change will also allow removing templating from most/all of
319
    // related functions.
320
32
    std::string err;
321
32
    if (!Validate(message, &err)) {
322
0
      ProtoExceptionUtil::throwProtoValidationException(err, message);
323
0
    }
324
32
  }
void Envoy::MessageUtil::validate<envoy::extensions::filters::http::ip_tagging::v3::IPTagging>(envoy::extensions::filters::http::ip_tagging::v3::IPTagging const&, Envoy::ProtobufMessage::ValidationVisitor&, bool)
Line
Count
Source
302
55
                       bool recurse_into_any = false) {
303
    // Log warnings or throw errors if deprecated fields or unknown fields are in use.
304
55
    if (!validation_visitor.skipValidation()) {
305
55
      checkForUnexpectedFields(message, validation_visitor, recurse_into_any);
306
55
    }
307
308
    // TODO(mattklein123): This will recurse the message twice, once above and once for PGV. When
309
    // we move to always recursing, satisfying the TODO below, we should merge into a single
310
    // recursion for performance reasons.
311
55
    if (recurse_into_any) {
312
0
      return recursivePgvCheck(message);
313
0
    }
314
315
    // TODO(mattklein123): Now that PGV is capable of doing recursive message checks on abstract
316
    // types, we can remove bottom up validation from the entire codebase and only validate
317
    // at top level ingestion (bootstrap, discovery response). This is a large change and will be
318
    // done as a separate PR. This change will also allow removing templating from most/all of
319
    // related functions.
320
55
    std::string err;
321
55
    if (!Validate(message, &err)) {
322
0
      ProtoExceptionUtil::throwProtoValidationException(err, message);
323
0
    }
324
55
  }
void Envoy::MessageUtil::validate<envoy::extensions::filters::http::json_to_metadata::v3::JsonToMetadata>(envoy::extensions::filters::http::json_to_metadata::v3::JsonToMetadata const&, Envoy::ProtobufMessage::ValidationVisitor&, bool)
Line
Count
Source
302
105
                       bool recurse_into_any = false) {
303
    // Log warnings or throw errors if deprecated fields or unknown fields are in use.
304
105
    if (!validation_visitor.skipValidation()) {
305
105
      checkForUnexpectedFields(message, validation_visitor, recurse_into_any);
306
105
    }
307
308
    // TODO(mattklein123): This will recurse the message twice, once above and once for PGV. When
309
    // we move to always recursing, satisfying the TODO below, we should merge into a single
310
    // recursion for performance reasons.
311
105
    if (recurse_into_any) {
312
0
      return recursivePgvCheck(message);
313
0
    }
314
315
    // TODO(mattklein123): Now that PGV is capable of doing recursive message checks on abstract
316
    // types, we can remove bottom up validation from the entire codebase and only validate
317
    // at top level ingestion (bootstrap, discovery response). This is a large change and will be
318
    // done as a separate PR. This change will also allow removing templating from most/all of
319
    // related functions.
320
105
    std::string err;
321
105
    if (!Validate(message, &err)) {
322
0
      ProtoExceptionUtil::throwProtoValidationException(err, message);
323
0
    }
324
105
  }
Unexecuted instantiation: void Envoy::MessageUtil::validate<envoy::extensions::filters::http::jwt_authn::v3::PerRouteConfig>(envoy::extensions::filters::http::jwt_authn::v3::PerRouteConfig const&, Envoy::ProtobufMessage::ValidationVisitor&, bool)
void Envoy::MessageUtil::validate<envoy::extensions::filters::http::jwt_authn::v3::JwtAuthentication>(envoy::extensions::filters::http::jwt_authn::v3::JwtAuthentication const&, Envoy::ProtobufMessage::ValidationVisitor&, bool)
Line
Count
Source
302
1.14k
                       bool recurse_into_any = false) {
303
    // Log warnings or throw errors if deprecated fields or unknown fields are in use.
304
1.14k
    if (!validation_visitor.skipValidation()) {
305
1.14k
      checkForUnexpectedFields(message, validation_visitor, recurse_into_any);
306
1.14k
    }
307
308
    // TODO(mattklein123): This will recurse the message twice, once above and once for PGV. When
309
    // we move to always recursing, satisfying the TODO below, we should merge into a single
310
    // recursion for performance reasons.
311
1.14k
    if (recurse_into_any) {
312
0
      return recursivePgvCheck(message);
313
0
    }
314
315
    // TODO(mattklein123): Now that PGV is capable of doing recursive message checks on abstract
316
    // types, we can remove bottom up validation from the entire codebase and only validate
317
    // at top level ingestion (bootstrap, discovery response). This is a large change and will be
318
    // done as a separate PR. This change will also allow removing templating from most/all of
319
    // related functions.
320
1.14k
    std::string err;
321
1.14k
    if (!Validate(message, &err)) {
322
1
      ProtoExceptionUtil::throwProtoValidationException(err, message);
323
1
    }
324
1.14k
  }
Unexecuted instantiation: void Envoy::MessageUtil::validate<envoy::extensions::filters::http::rate_limit_quota::v3::RateLimitQuotaOverride>(envoy::extensions::filters::http::rate_limit_quota::v3::RateLimitQuotaOverride const&, Envoy::ProtobufMessage::ValidationVisitor&, bool)
void Envoy::MessageUtil::validate<envoy::extensions::filters::http::rate_limit_quota::v3::RateLimitQuotaFilterConfig>(envoy::extensions::filters::http::rate_limit_quota::v3::RateLimitQuotaFilterConfig const&, Envoy::ProtobufMessage::ValidationVisitor&, bool)
Line
Count
Source
302
3
                       bool recurse_into_any = false) {
303
    // Log warnings or throw errors if deprecated fields or unknown fields are in use.
304
3
    if (!validation_visitor.skipValidation()) {
305
3
      checkForUnexpectedFields(message, validation_visitor, recurse_into_any);
306
3
    }
307
308
    // TODO(mattklein123): This will recurse the message twice, once above and once for PGV. When
309
    // we move to always recursing, satisfying the TODO below, we should merge into a single
310
    // recursion for performance reasons.
311
3
    if (recurse_into_any) {
312
0
      return recursivePgvCheck(message);
313
0
    }
314
315
    // TODO(mattklein123): Now that PGV is capable of doing recursive message checks on abstract
316
    // types, we can remove bottom up validation from the entire codebase and only validate
317
    // at top level ingestion (bootstrap, discovery response). This is a large change and will be
318
    // done as a separate PR. This change will also allow removing templating from most/all of
319
    // related functions.
320
3
    std::string err;
321
3
    if (!Validate(message, &err)) {
322
0
      ProtoExceptionUtil::throwProtoValidationException(err, message);
323
0
    }
324
3
  }
Unexecuted instantiation: void Envoy::MessageUtil::validate<envoy::extensions::filters::http::rate_limit_quota::v3::RateLimitQuotaBucketSettings>(envoy::extensions::filters::http::rate_limit_quota::v3::RateLimitQuotaBucketSettings const&, Envoy::ProtobufMessage::ValidationVisitor&, bool)
void Envoy::MessageUtil::validate<envoy::extensions::filters::http::local_ratelimit::v3::LocalRateLimit>(envoy::extensions::filters::http::local_ratelimit::v3::LocalRateLimit const&, Envoy::ProtobufMessage::ValidationVisitor&, bool)
Line
Count
Source
302
11
                       bool recurse_into_any = false) {
303
    // Log warnings or throw errors if deprecated fields or unknown fields are in use.
304
11
    if (!validation_visitor.skipValidation()) {
305
11
      checkForUnexpectedFields(message, validation_visitor, recurse_into_any);
306
11
    }
307
308
    // TODO(mattklein123): This will recurse the message twice, once above and once for PGV. When
309
    // we move to always recursing, satisfying the TODO below, we should merge into a single
310
    // recursion for performance reasons.
311
11
    if (recurse_into_any) {
312
0
      return recursivePgvCheck(message);
313
0
    }
314
315
    // TODO(mattklein123): Now that PGV is capable of doing recursive message checks on abstract
316
    // types, we can remove bottom up validation from the entire codebase and only validate
317
    // at top level ingestion (bootstrap, discovery response). This is a large change and will be
318
    // done as a separate PR. This change will also allow removing templating from most/all of
319
    // related functions.
320
11
    std::string err;
321
11
    if (!Validate(message, &err)) {
322
2
      ProtoExceptionUtil::throwProtoValidationException(err, message);
323
2
    }
324
11
  }
Unexecuted instantiation: void Envoy::MessageUtil::validate<envoy::extensions::filters::http::lua::v3::LuaPerRoute>(envoy::extensions::filters::http::lua::v3::LuaPerRoute const&, Envoy::ProtobufMessage::ValidationVisitor&, bool)
void Envoy::MessageUtil::validate<envoy::extensions::filters::http::lua::v3::Lua>(envoy::extensions::filters::http::lua::v3::Lua const&, Envoy::ProtobufMessage::ValidationVisitor&, bool)
Line
Count
Source
302
178
                       bool recurse_into_any = false) {
303
    // Log warnings or throw errors if deprecated fields or unknown fields are in use.
304
178
    if (!validation_visitor.skipValidation()) {
305
178
      checkForUnexpectedFields(message, validation_visitor, recurse_into_any);
306
178
    }
307
308
    // TODO(mattklein123): This will recurse the message twice, once above and once for PGV. When
309
    // we move to always recursing, satisfying the TODO below, we should merge into a single
310
    // recursion for performance reasons.
311
178
    if (recurse_into_any) {
312
0
      return recursivePgvCheck(message);
313
0
    }
314
315
    // TODO(mattklein123): Now that PGV is capable of doing recursive message checks on abstract
316
    // types, we can remove bottom up validation from the entire codebase and only validate
317
    // at top level ingestion (bootstrap, discovery response). This is a large change and will be
318
    // done as a separate PR. This change will also allow removing templating from most/all of
319
    // related functions.
320
178
    std::string err;
321
178
    if (!Validate(message, &err)) {
322
0
      ProtoExceptionUtil::throwProtoValidationException(err, message);
323
0
    }
324
178
  }
void Envoy::MessageUtil::validate<envoy::extensions::filters::http::oauth2::v3::OAuth2>(envoy::extensions::filters::http::oauth2::v3::OAuth2 const&, Envoy::ProtobufMessage::ValidationVisitor&, bool)
Line
Count
Source
302
1
                       bool recurse_into_any = false) {
303
    // Log warnings or throw errors if deprecated fields or unknown fields are in use.
304
1
    if (!validation_visitor.skipValidation()) {
305
1
      checkForUnexpectedFields(message, validation_visitor, recurse_into_any);
306
1
    }
307
308
    // TODO(mattklein123): This will recurse the message twice, once above and once for PGV. When
309
    // we move to always recursing, satisfying the TODO below, we should merge into a single
310
    // recursion for performance reasons.
311
1
    if (recurse_into_any) {
312
0
      return recursivePgvCheck(message);
313
0
    }
314
315
    // TODO(mattklein123): Now that PGV is capable of doing recursive message checks on abstract
316
    // types, we can remove bottom up validation from the entire codebase and only validate
317
    // at top level ingestion (bootstrap, discovery response). This is a large change and will be
318
    // done as a separate PR. This change will also allow removing templating from most/all of
319
    // related functions.
320
1
    std::string err;
321
1
    if (!Validate(message, &err)) {
322
1
      ProtoExceptionUtil::throwProtoValidationException(err, message);
323
1
    }
324
1
  }
Unexecuted instantiation: void Envoy::MessageUtil::validate<envoy::extensions::filters::http::on_demand::v3::PerRouteConfig>(envoy::extensions::filters::http::on_demand::v3::PerRouteConfig const&, Envoy::ProtobufMessage::ValidationVisitor&, bool)
void Envoy::MessageUtil::validate<envoy::extensions::filters::http::on_demand::v3::OnDemand>(envoy::extensions::filters::http::on_demand::v3::OnDemand const&, Envoy::ProtobufMessage::ValidationVisitor&, bool)
Line
Count
Source
302
8
                       bool recurse_into_any = false) {
303
    // Log warnings or throw errors if deprecated fields or unknown fields are in use.
304
8
    if (!validation_visitor.skipValidation()) {
305
8
      checkForUnexpectedFields(message, validation_visitor, recurse_into_any);
306
8
    }
307
308
    // TODO(mattklein123): This will recurse the message twice, once above and once for PGV. When
309
    // we move to always recursing, satisfying the TODO below, we should merge into a single
310
    // recursion for performance reasons.
311
8
    if (recurse_into_any) {
312
0
      return recursivePgvCheck(message);
313
0
    }
314
315
    // TODO(mattklein123): Now that PGV is capable of doing recursive message checks on abstract
316
    // types, we can remove bottom up validation from the entire codebase and only validate
317
    // at top level ingestion (bootstrap, discovery response). This is a large change and will be
318
    // done as a separate PR. This change will also allow removing templating from most/all of
319
    // related functions.
320
8
    std::string err;
321
8
    if (!Validate(message, &err)) {
322
0
      ProtoExceptionUtil::throwProtoValidationException(err, message);
323
0
    }
324
8
  }
void Envoy::MessageUtil::validate<envoy::extensions::filters::http::original_src::v3::OriginalSrc>(envoy::extensions::filters::http::original_src::v3::OriginalSrc const&, Envoy::ProtobufMessage::ValidationVisitor&, bool)
Line
Count
Source
302
1
                       bool recurse_into_any = false) {
303
    // Log warnings or throw errors if deprecated fields or unknown fields are in use.
304
1
    if (!validation_visitor.skipValidation()) {
305
1
      checkForUnexpectedFields(message, validation_visitor, recurse_into_any);
306
1
    }
307
308
    // TODO(mattklein123): This will recurse the message twice, once above and once for PGV. When
309
    // we move to always recursing, satisfying the TODO below, we should merge into a single
310
    // recursion for performance reasons.
311
1
    if (recurse_into_any) {
312
0
      return recursivePgvCheck(message);
313
0
    }
314
315
    // TODO(mattklein123): Now that PGV is capable of doing recursive message checks on abstract
316
    // types, we can remove bottom up validation from the entire codebase and only validate
317
    // at top level ingestion (bootstrap, discovery response). This is a large change and will be
318
    // done as a separate PR. This change will also allow removing templating from most/all of
319
    // related functions.
320
1
    std::string err;
321
1
    if (!Validate(message, &err)) {
322
0
      ProtoExceptionUtil::throwProtoValidationException(err, message);
323
0
    }
324
1
  }
Unexecuted instantiation: void Envoy::MessageUtil::validate<envoy::extensions::filters::http::ratelimit::v3::RateLimitPerRoute>(envoy::extensions::filters::http::ratelimit::v3::RateLimitPerRoute const&, Envoy::ProtobufMessage::ValidationVisitor&, bool)
void Envoy::MessageUtil::validate<envoy::extensions::filters::http::ratelimit::v3::RateLimit>(envoy::extensions::filters::http::ratelimit::v3::RateLimit const&, Envoy::ProtobufMessage::ValidationVisitor&, bool)
Line
Count
Source
302
15
                       bool recurse_into_any = false) {
303
    // Log warnings or throw errors if deprecated fields or unknown fields are in use.
304
15
    if (!validation_visitor.skipValidation()) {
305
15
      checkForUnexpectedFields(message, validation_visitor, recurse_into_any);
306
15
    }
307
308
    // TODO(mattklein123): This will recurse the message twice, once above and once for PGV. When
309
    // we move to always recursing, satisfying the TODO below, we should merge into a single
310
    // recursion for performance reasons.
311
15
    if (recurse_into_any) {
312
0
      return recursivePgvCheck(message);
313
0
    }
314
315
    // TODO(mattklein123): Now that PGV is capable of doing recursive message checks on abstract
316
    // types, we can remove bottom up validation from the entire codebase and only validate
317
    // at top level ingestion (bootstrap, discovery response). This is a large change and will be
318
    // done as a separate PR. This change will also allow removing templating from most/all of
319
    // related functions.
320
15
    std::string err;
321
15
    if (!Validate(message, &err)) {
322
0
      ProtoExceptionUtil::throwProtoValidationException(err, message);
323
0
    }
324
15
  }
Unexecuted instantiation: void Envoy::MessageUtil::validate<envoy::extensions::filters::http::rbac::v3::RBACPerRoute>(envoy::extensions::filters::http::rbac::v3::RBACPerRoute const&, Envoy::ProtobufMessage::ValidationVisitor&, bool)
void Envoy::MessageUtil::validate<envoy::extensions::filters::http::rbac::v3::RBAC>(envoy::extensions::filters::http::rbac::v3::RBAC const&, Envoy::ProtobufMessage::ValidationVisitor&, bool)
Line
Count
Source
302
2.75k
                       bool recurse_into_any = false) {
303
    // Log warnings or throw errors if deprecated fields or unknown fields are in use.
304
2.75k
    if (!validation_visitor.skipValidation()) {
305
2.75k
      checkForUnexpectedFields(message, validation_visitor, recurse_into_any);
306
2.75k
    }
307
308
    // TODO(mattklein123): This will recurse the message twice, once above and once for PGV. When
309
    // we move to always recursing, satisfying the TODO below, we should merge into a single
310
    // recursion for performance reasons.
311
2.75k
    if (recurse_into_any) {
312
0
      return recursivePgvCheck(message);
313
0
    }
314
315
    // TODO(mattklein123): Now that PGV is capable of doing recursive message checks on abstract
316
    // types, we can remove bottom up validation from the entire codebase and only validate
317
    // at top level ingestion (bootstrap, discovery response). This is a large change and will be
318
    // done as a separate PR. This change will also allow removing templating from most/all of
319
    // related functions.
320
2.75k
    std::string err;
321
2.75k
    if (!Validate(message, &err)) {
322
37
      ProtoExceptionUtil::throwProtoValidationException(err, message);
323
37
    }
324
2.75k
  }
Unexecuted instantiation: void Envoy::MessageUtil::validate<envoy::extensions::filters::http::set_filter_state::v3::Config>(envoy::extensions::filters::http::set_filter_state::v3::Config const&, Envoy::ProtobufMessage::ValidationVisitor&, bool)
void Envoy::MessageUtil::validate<envoy::extensions::filters::http::set_metadata::v3::Config>(envoy::extensions::filters::http::set_metadata::v3::Config const&, Envoy::ProtobufMessage::ValidationVisitor&, bool)
Line
Count
Source
302
16
                       bool recurse_into_any = false) {
303
    // Log warnings or throw errors if deprecated fields or unknown fields are in use.
304
16
    if (!validation_visitor.skipValidation()) {
305
16
      checkForUnexpectedFields(message, validation_visitor, recurse_into_any);
306
16
    }
307
308
    // TODO(mattklein123): This will recurse the message twice, once above and once for PGV. When
309
    // we move to always recursing, satisfying the TODO below, we should merge into a single
310
    // recursion for performance reasons.
311
16
    if (recurse_into_any) {
312
0
      return recursivePgvCheck(message);
313
0
    }
314
315
    // TODO(mattklein123): Now that PGV is capable of doing recursive message checks on abstract
316
    // types, we can remove bottom up validation from the entire codebase and only validate
317
    // at top level ingestion (bootstrap, discovery response). This is a large change and will be
318
    // done as a separate PR. This change will also allow removing templating from most/all of
319
    // related functions.
320
16
    std::string err;
321
16
    if (!Validate(message, &err)) {
322
11
      ProtoExceptionUtil::throwProtoValidationException(err, message);
323
11
    }
324
16
  }
void Envoy::MessageUtil::validate<envoy::extensions::filters::http::tap::v3::Tap>(envoy::extensions::filters::http::tap::v3::Tap const&, Envoy::ProtobufMessage::ValidationVisitor&, bool)
Line
Count
Source
302
440
                       bool recurse_into_any = false) {
303
    // Log warnings or throw errors if deprecated fields or unknown fields are in use.
304
440
    if (!validation_visitor.skipValidation()) {
305
440
      checkForUnexpectedFields(message, validation_visitor, recurse_into_any);
306
440
    }
307
308
    // TODO(mattklein123): This will recurse the message twice, once above and once for PGV. When
309
    // we move to always recursing, satisfying the TODO below, we should merge into a single
310
    // recursion for performance reasons.
311
440
    if (recurse_into_any) {
312
0
      return recursivePgvCheck(message);
313
0
    }
314
315
    // TODO(mattklein123): Now that PGV is capable of doing recursive message checks on abstract
316
    // types, we can remove bottom up validation from the entire codebase and only validate
317
    // at top level ingestion (bootstrap, discovery response). This is a large change and will be
318
    // done as a separate PR. This change will also allow removing templating from most/all of
319
    // related functions.
320
440
    std::string err;
321
440
    if (!Validate(message, &err)) {
322
2
      ProtoExceptionUtil::throwProtoValidationException(err, message);
323
2
    }
324
440
  }
void Envoy::MessageUtil::validate<envoy::extensions::filters::http::wasm::v3::Wasm>(envoy::extensions::filters::http::wasm::v3::Wasm const&, Envoy::ProtobufMessage::ValidationVisitor&, bool)
Line
Count
Source
302
105
                       bool recurse_into_any = false) {
303
    // Log warnings or throw errors if deprecated fields or unknown fields are in use.
304
105
    if (!validation_visitor.skipValidation()) {
305
105
      checkForUnexpectedFields(message, validation_visitor, recurse_into_any);
306
105
    }
307
308
    // TODO(mattklein123): This will recurse the message twice, once above and once for PGV. When
309
    // we move to always recursing, satisfying the TODO below, we should merge into a single
310
    // recursion for performance reasons.
311
105
    if (recurse_into_any) {
312
0
      return recursivePgvCheck(message);
313
0
    }
314
315
    // TODO(mattklein123): Now that PGV is capable of doing recursive message checks on abstract
316
    // types, we can remove bottom up validation from the entire codebase and only validate
317
    // at top level ingestion (bootstrap, discovery response). This is a large change and will be
318
    // done as a separate PR. This change will also allow removing templating from most/all of
319
    // related functions.
320
105
    std::string err;
321
105
    if (!Validate(message, &err)) {
322
0
      ProtoExceptionUtil::throwProtoValidationException(err, message);
323
0
    }
324
105
  }
Unexecuted instantiation: void Envoy::MessageUtil::validate<envoy::extensions::filters::http::stateful_session::v3::StatefulSessionPerRoute>(envoy::extensions::filters::http::stateful_session::v3::StatefulSessionPerRoute const&, Envoy::ProtobufMessage::ValidationVisitor&, bool)
void Envoy::MessageUtil::validate<envoy::extensions::filters::http::stateful_session::v3::StatefulSession>(envoy::extensions::filters::http::stateful_session::v3::StatefulSession const&, Envoy::ProtobufMessage::ValidationVisitor&, bool)
Line
Count
Source
302
3
                       bool recurse_into_any = false) {
303
    // Log warnings or throw errors if deprecated fields or unknown fields are in use.
304
3
    if (!validation_visitor.skipValidation()) {
305
3
      checkForUnexpectedFields(message, validation_visitor, recurse_into_any);
306
3
    }
307
308
    // TODO(mattklein123): This will recurse the message twice, once above and once for PGV. When
309
    // we move to always recursing, satisfying the TODO below, we should merge into a single
310
    // recursion for performance reasons.
311
3
    if (recurse_into_any) {
312
0
      return recursivePgvCheck(message);
313
0
    }
314
315
    // TODO(mattklein123): Now that PGV is capable of doing recursive message checks on abstract
316
    // types, we can remove bottom up validation from the entire codebase and only validate
317
    // at top level ingestion (bootstrap, discovery response). This is a large change and will be
318
    // done as a separate PR. This change will also allow removing templating from most/all of
319
    // related functions.
320
3
    std::string err;
321
3
    if (!Validate(message, &err)) {
322
0
      ProtoExceptionUtil::throwProtoValidationException(err, message);
323
0
    }
324
3
  }
Unexecuted instantiation: void Envoy::MessageUtil::validate<envoy::extensions::filters::http::header_mutation::v3::HeaderMutationPerRoute>(envoy::extensions::filters::http::header_mutation::v3::HeaderMutationPerRoute const&, Envoy::ProtobufMessage::ValidationVisitor&, bool)
void Envoy::MessageUtil::validate<envoy::extensions::filters::http::header_mutation::v3::HeaderMutation>(envoy::extensions::filters::http::header_mutation::v3::HeaderMutation const&, Envoy::ProtobufMessage::ValidationVisitor&, bool)
Line
Count
Source
302
170
                       bool recurse_into_any = false) {
303
    // Log warnings or throw errors if deprecated fields or unknown fields are in use.
304
170
    if (!validation_visitor.skipValidation()) {
305
170
      checkForUnexpectedFields(message, validation_visitor, recurse_into_any);
306
170
    }
307
308
    // TODO(mattklein123): This will recurse the message twice, once above and once for PGV. When
309
    // we move to always recursing, satisfying the TODO below, we should merge into a single
310
    // recursion for performance reasons.
311
170
    if (recurse_into_any) {
312
0
      return recursivePgvCheck(message);
313
0
    }
314
315
    // TODO(mattklein123): Now that PGV is capable of doing recursive message checks on abstract
316
    // types, we can remove bottom up validation from the entire codebase and only validate
317
    // at top level ingestion (bootstrap, discovery response). This is a large change and will be
318
    // done as a separate PR. This change will also allow removing templating from most/all of
319
    // related functions.
320
170
    std::string err;
321
170
    if (!Validate(message, &err)) {
322
0
      ProtoExceptionUtil::throwProtoValidationException(err, message);
323
0
    }
324
170
  }
Unexecuted instantiation: void Envoy::MessageUtil::validate<envoy::extensions::filters::listener::local_ratelimit::v3::LocalRateLimit>(envoy::extensions::filters::listener::local_ratelimit::v3::LocalRateLimit const&, Envoy::ProtobufMessage::ValidationVisitor&, bool)
Unexecuted instantiation: void Envoy::MessageUtil::validate<envoy::extensions::filters::listener::original_src::v3::OriginalSrc>(envoy::extensions::filters::listener::original_src::v3::OriginalSrc const&, Envoy::ProtobufMessage::ValidationVisitor&, bool)
void Envoy::MessageUtil::validate<envoy::extensions::filters::listener::proxy_protocol::v3::ProxyProtocol>(envoy::extensions::filters::listener::proxy_protocol::v3::ProxyProtocol const&, Envoy::ProtobufMessage::ValidationVisitor&, bool)
Line
Count
Source
302
89
                       bool recurse_into_any = false) {
303
    // Log warnings or throw errors if deprecated fields or unknown fields are in use.
304
89
    if (!validation_visitor.skipValidation()) {
305
89
      checkForUnexpectedFields(message, validation_visitor, recurse_into_any);
306
89
    }
307
308
    // TODO(mattklein123): This will recurse the message twice, once above and once for PGV. When
309
    // we move to always recursing, satisfying the TODO below, we should merge into a single
310
    // recursion for performance reasons.
311
89
    if (recurse_into_any) {
312
0
      return recursivePgvCheck(message);
313
0
    }
314
315
    // TODO(mattklein123): Now that PGV is capable of doing recursive message checks on abstract
316
    // types, we can remove bottom up validation from the entire codebase and only validate
317
    // at top level ingestion (bootstrap, discovery response). This is a large change and will be
318
    // done as a separate PR. This change will also allow removing templating from most/all of
319
    // related functions.
320
89
    std::string err;
321
89
    if (!Validate(message, &err)) {
322
0
      ProtoExceptionUtil::throwProtoValidationException(err, message);
323
0
    }
324
89
  }
Unexecuted instantiation: void Envoy::MessageUtil::validate<envoy::extensions::filters::listener::tls_inspector::v3::TlsInspector>(envoy::extensions::filters::listener::tls_inspector::v3::TlsInspector const&, Envoy::ProtobufMessage::ValidationVisitor&, bool)
Unexecuted instantiation: void Envoy::MessageUtil::validate<envoy::extensions::filters::network::connection_limit::v3::ConnectionLimit>(envoy::extensions::filters::network::connection_limit::v3::ConnectionLimit const&, Envoy::ProtobufMessage::ValidationVisitor&, bool)
Unexecuted instantiation: void Envoy::MessageUtil::validate<envoy::extensions::filters::network::direct_response::v3::Config>(envoy::extensions::filters::network::direct_response::v3::Config const&, Envoy::ProtobufMessage::ValidationVisitor&, bool)
Unexecuted instantiation: void Envoy::MessageUtil::validate<envoy::extensions::filters::network::dubbo_proxy::v3::MultipleRouteConfiguration>(envoy::extensions::filters::network::dubbo_proxy::v3::MultipleRouteConfiguration const&, Envoy::ProtobufMessage::ValidationVisitor&, bool)
Unexecuted instantiation: void Envoy::MessageUtil::validate<envoy::extensions::filters::network::dubbo_proxy::v3::DubboProxy>(envoy::extensions::filters::network::dubbo_proxy::v3::DubboProxy const&, Envoy::ProtobufMessage::ValidationVisitor&, bool)
Unexecuted instantiation: void Envoy::MessageUtil::validate<envoy::extensions::filters::network::dubbo_proxy::router::v3::Router>(envoy::extensions::filters::network::dubbo_proxy::router::v3::Router const&, Envoy::ProtobufMessage::ValidationVisitor&, bool)
Unexecuted instantiation: void Envoy::MessageUtil::validate<envoy::extensions::filters::network::echo::v3::Echo>(envoy::extensions::filters::network::echo::v3::Echo const&, Envoy::ProtobufMessage::ValidationVisitor&, bool)
void Envoy::MessageUtil::validate<envoy::extensions::filters::network::mongo_proxy::v3::MongoProxy>(envoy::extensions::filters::network::mongo_proxy::v3::MongoProxy const&, Envoy::ProtobufMessage::ValidationVisitor&, bool)
Line
Count
Source
302
2.69k
                       bool recurse_into_any = false) {
303
    // Log warnings or throw errors if deprecated fields or unknown fields are in use.
304
2.69k
    if (!validation_visitor.skipValidation()) {
305
2.69k
      checkForUnexpectedFields(message, validation_visitor, recurse_into_any);
306
2.69k
    }
307
308
    // TODO(mattklein123): This will recurse the message twice, once above and once for PGV. When
309
    // we move to always recursing, satisfying the TODO below, we should merge into a single
310
    // recursion for performance reasons.
311
2.69k
    if (recurse_into_any) {
312
0
      return recursivePgvCheck(message);
313
0
    }
314
315
    // TODO(mattklein123): Now that PGV is capable of doing recursive message checks on abstract
316
    // types, we can remove bottom up validation from the entire codebase and only validate
317
    // at top level ingestion (bootstrap, discovery response). This is a large change and will be
318
    // done as a separate PR. This change will also allow removing templating from most/all of
319
    // related functions.
320
2.69k
    std::string err;
321
2.69k
    if (!Validate(message, &err)) {
322
65
      ProtoExceptionUtil::throwProtoValidationException(err, message);
323
65
    }
324
2.69k
  }
Unexecuted instantiation: void Envoy::MessageUtil::validate<envoy::extensions::filters::network::tcp_proxy::v3::TcpProxy>(envoy::extensions::filters::network::tcp_proxy::v3::TcpProxy const&, Envoy::ProtobufMessage::ValidationVisitor&, bool)
Unexecuted instantiation: void Envoy::MessageUtil::validate<envoy::extensions::filters::network::thrift_proxy::v3::RouteConfiguration>(envoy::extensions::filters::network::thrift_proxy::v3::RouteConfiguration const&, Envoy::ProtobufMessage::ValidationVisitor&, bool)
Unexecuted instantiation: void Envoy::MessageUtil::validate<envoy::extensions::filters::network::thrift_proxy::router::v3::Router>(envoy::extensions::filters::network::thrift_proxy::router::v3::Router const&, Envoy::ProtobufMessage::ValidationVisitor&, bool)
Unexecuted instantiation: void Envoy::MessageUtil::validate<envoy::extensions::filters::network::set_filter_state::v3::Config>(envoy::extensions::filters::network::set_filter_state::v3::Config const&, Envoy::ProtobufMessage::ValidationVisitor&, bool)
Unexecuted instantiation: void Envoy::MessageUtil::validate<envoy::extensions::filters::network::sni_dynamic_forward_proxy::v3::FilterConfig>(envoy::extensions::filters::network::sni_dynamic_forward_proxy::v3::FilterConfig const&, Envoy::ProtobufMessage::ValidationVisitor&, bool)
Unexecuted instantiation: void Envoy::MessageUtil::validate<envoy::extensions::filters::network::wasm::v3::Wasm>(envoy::extensions::filters::network::wasm::v3::Wasm const&, Envoy::ProtobufMessage::ValidationVisitor&, bool)
void Envoy::MessageUtil::validate<envoy::extensions::filters::network::zookeeper_proxy::v3::ZooKeeperProxy>(envoy::extensions::filters::network::zookeeper_proxy::v3::ZooKeeperProxy const&, Envoy::ProtobufMessage::ValidationVisitor&, bool)
Line
Count
Source
302
638
                       bool recurse_into_any = false) {
303
    // Log warnings or throw errors if deprecated fields or unknown fields are in use.
304
638
    if (!validation_visitor.skipValidation()) {
305
638
      checkForUnexpectedFields(message, validation_visitor, recurse_into_any);
306
638
    }
307
308
    // TODO(mattklein123): This will recurse the message twice, once above and once for PGV. When
309
    // we move to always recursing, satisfying the TODO below, we should merge into a single
310
    // recursion for performance reasons.
311
638
    if (recurse_into_any) {
312
0
      return recursivePgvCheck(message);
313
0
    }
314
315
    // TODO(mattklein123): Now that PGV is capable of doing recursive message checks on abstract
316
    // types, we can remove bottom up validation from the entire codebase and only validate
317
    // at top level ingestion (bootstrap, discovery response). This is a large change and will be
318
    // done as a separate PR. This change will also allow removing templating from most/all of
319
    // related functions.
320
638
    std::string err;
321
638
    if (!Validate(message, &err)) {
322
4
      ProtoExceptionUtil::throwProtoValidationException(err, message);
323
4
    }
324
638
  }
Unexecuted instantiation: void Envoy::MessageUtil::validate<envoy::extensions::filters::udp::dns_filter::v3::DnsFilterConfig>(envoy::extensions::filters::udp::dns_filter::v3::DnsFilterConfig const&, Envoy::ProtobufMessage::ValidationVisitor&, bool)
Unexecuted instantiation: void Envoy::MessageUtil::validate<envoy::extensions::filters::udp::udp_proxy::v3::UdpProxyConfig>(envoy::extensions::filters::udp::udp_proxy::v3::UdpProxyConfig const&, Envoy::ProtobufMessage::ValidationVisitor&, bool)
Unexecuted instantiation: void Envoy::MessageUtil::validate<envoy::extensions::filters::udp::udp_proxy::v3::Route>(envoy::extensions::filters::udp::udp_proxy::v3::Route const&, Envoy::ProtobufMessage::ValidationVisitor&, bool)
Unexecuted instantiation: void Envoy::MessageUtil::validate<envoy::extensions::filters::udp::udp_proxy::session::http_capsule::v3::FilterConfig>(envoy::extensions::filters::udp::udp_proxy::session::http_capsule::v3::FilterConfig const&, Envoy::ProtobufMessage::ValidationVisitor&, bool)
Unexecuted instantiation: void Envoy::MessageUtil::validate<envoy::extensions::filters::udp::udp_proxy::session::dynamic_forward_proxy::v3::FilterConfig>(envoy::extensions::filters::udp::udp_proxy::session::dynamic_forward_proxy::v3::FilterConfig const&, Envoy::ProtobufMessage::ValidationVisitor&, bool)
Unexecuted instantiation: void Envoy::MessageUtil::validate<envoy::extensions::resource_monitors::fixed_heap::v3::FixedHeapConfig>(envoy::extensions::resource_monitors::fixed_heap::v3::FixedHeapConfig const&, Envoy::ProtobufMessage::ValidationVisitor&, bool)
Unexecuted instantiation: void Envoy::MessageUtil::validate<envoy::extensions::resource_monitors::injected_resource::v3::InjectedResourceConfig>(envoy::extensions::resource_monitors::injected_resource::v3::InjectedResourceConfig const&, Envoy::ProtobufMessage::ValidationVisitor&, bool)
Unexecuted instantiation: void Envoy::MessageUtil::validate<envoy::extensions::resource_monitors::downstream_connections::v3::DownstreamConnectionsConfig>(envoy::extensions::resource_monitors::downstream_connections::v3::DownstreamConnectionsConfig const&, Envoy::ProtobufMessage::ValidationVisitor&, bool)
Unexecuted instantiation: void Envoy::MessageUtil::validate<envoy::config::metrics::v3::DogStatsdSink>(envoy::config::metrics::v3::DogStatsdSink const&, Envoy::ProtobufMessage::ValidationVisitor&, bool)
Unexecuted instantiation: void Envoy::MessageUtil::validate<envoy::extensions::stat_sinks::graphite_statsd::v3::GraphiteStatsdSink>(envoy::extensions::stat_sinks::graphite_statsd::v3::GraphiteStatsdSink const&, Envoy::ProtobufMessage::ValidationVisitor&, bool)
Unexecuted instantiation: void Envoy::MessageUtil::validate<envoy::config::metrics::v3::HystrixSink>(envoy::config::metrics::v3::HystrixSink const&, Envoy::ProtobufMessage::ValidationVisitor&, bool)
Unexecuted instantiation: void Envoy::MessageUtil::validate<envoy::config::metrics::v3::MetricsServiceConfig>(envoy::config::metrics::v3::MetricsServiceConfig const&, Envoy::ProtobufMessage::ValidationVisitor&, bool)
Unexecuted instantiation: void Envoy::MessageUtil::validate<envoy::extensions::stat_sinks::open_telemetry::v3::SinkConfig>(envoy::extensions::stat_sinks::open_telemetry::v3::SinkConfig const&, Envoy::ProtobufMessage::ValidationVisitor&, bool)
Unexecuted instantiation: void Envoy::MessageUtil::validate<envoy::config::metrics::v3::StatsdSink>(envoy::config::metrics::v3::StatsdSink const&, Envoy::ProtobufMessage::ValidationVisitor&, bool)
Unexecuted instantiation: void Envoy::MessageUtil::validate<envoy::extensions::stat_sinks::wasm::v3::Wasm>(envoy::extensions::stat_sinks::wasm::v3::Wasm const&, Envoy::ProtobufMessage::ValidationVisitor&, bool)
Unexecuted instantiation: void Envoy::MessageUtil::validate<envoy::extensions::filters::network::thrift_proxy::filters::header_to_metadata::v3::HeaderToMetadata>(envoy::extensions::filters::network::thrift_proxy::filters::header_to_metadata::v3::HeaderToMetadata const&, Envoy::ProtobufMessage::ValidationVisitor&, bool)
Unexecuted instantiation: void Envoy::MessageUtil::validate<envoy::extensions::filters::network::thrift_proxy::filters::payload_to_metadata::v3::PayloadToMetadata>(envoy::extensions::filters::network::thrift_proxy::filters::payload_to_metadata::v3::PayloadToMetadata const&, Envoy::ProtobufMessage::ValidationVisitor&, bool)
Unexecuted instantiation: void Envoy::MessageUtil::validate<envoy::extensions::filters::network::thrift_proxy::filters::ratelimit::v3::RateLimit>(envoy::extensions::filters::network::thrift_proxy::filters::ratelimit::v3::RateLimit const&, Envoy::ProtobufMessage::ValidationVisitor&, bool)
Unexecuted instantiation: void Envoy::MessageUtil::validate<envoy::config::trace::v3::DynamicOtConfig>(envoy::config::trace::v3::DynamicOtConfig const&, Envoy::ProtobufMessage::ValidationVisitor&, bool)
Unexecuted instantiation: void Envoy::MessageUtil::validate<envoy::config::trace::v3::DatadogConfig>(envoy::config::trace::v3::DatadogConfig const&, Envoy::ProtobufMessage::ValidationVisitor&, bool)
Unexecuted instantiation: void Envoy::MessageUtil::validate<envoy::config::trace::v3::ZipkinConfig>(envoy::config::trace::v3::ZipkinConfig const&, Envoy::ProtobufMessage::ValidationVisitor&, bool)
Unexecuted instantiation: void Envoy::MessageUtil::validate<envoy::config::trace::v3::OpenCensusConfig>(envoy::config::trace::v3::OpenCensusConfig const&, Envoy::ProtobufMessage::ValidationVisitor&, bool)
Unexecuted instantiation: void Envoy::MessageUtil::validate<envoy::config::trace::v3::XRayConfig>(envoy::config::trace::v3::XRayConfig const&, Envoy::ProtobufMessage::ValidationVisitor&, bool)
Unexecuted instantiation: void Envoy::MessageUtil::validate<envoy::config::trace::v3::SkyWalkingConfig>(envoy::config::trace::v3::SkyWalkingConfig const&, Envoy::ProtobufMessage::ValidationVisitor&, bool)
Unexecuted instantiation: void Envoy::MessageUtil::validate<envoy::config::trace::v3::OpenTelemetryConfig>(envoy::config::trace::v3::OpenTelemetryConfig const&, Envoy::ProtobufMessage::ValidationVisitor&, bool)
Unexecuted instantiation: void Envoy::MessageUtil::validate<envoy::extensions::tracers::opentelemetry::resource_detectors::v3::EnvironmentResourceDetectorConfig>(envoy::extensions::tracers::opentelemetry::resource_detectors::v3::EnvironmentResourceDetectorConfig const&, Envoy::ProtobufMessage::ValidationVisitor&, bool)
Unexecuted instantiation: void Envoy::MessageUtil::validate<envoy::extensions::transport_sockets::alts::v3::Alts>(envoy::extensions::transport_sockets::alts::v3::Alts const&, Envoy::ProtobufMessage::ValidationVisitor&, bool)
Unexecuted instantiation: void Envoy::MessageUtil::validate<envoy::extensions::transport_sockets::http_11_proxy::v3::Http11ProxyUpstreamTransport>(envoy::extensions::transport_sockets::http_11_proxy::v3::Http11ProxyUpstreamTransport const&, Envoy::ProtobufMessage::ValidationVisitor&, bool)
Unexecuted instantiation: void Envoy::MessageUtil::validate<envoy::extensions::transport_sockets::proxy_protocol::v3::ProxyProtocolUpstreamTransport>(envoy::extensions::transport_sockets::proxy_protocol::v3::ProxyProtocolUpstreamTransport const&, Envoy::ProtobufMessage::ValidationVisitor&, bool)
Unexecuted instantiation: void Envoy::MessageUtil::validate<envoy::extensions::transport_sockets::tap::v3::Tap>(envoy::extensions::transport_sockets::tap::v3::Tap const&, Envoy::ProtobufMessage::ValidationVisitor&, bool)
Unexecuted instantiation: void Envoy::MessageUtil::validate<envoy::admin::v3::TapRequest>(envoy::admin::v3::TapRequest const&, Envoy::ProtobufMessage::ValidationVisitor&, bool)
Unexecuted instantiation: void Envoy::MessageUtil::validate<envoy::extensions::transport_sockets::starttls::v3::StartTlsConfig>(envoy::extensions::transport_sockets::starttls::v3::StartTlsConfig const&, Envoy::ProtobufMessage::ValidationVisitor&, bool)
Unexecuted instantiation: void Envoy::MessageUtil::validate<envoy::extensions::transport_sockets::starttls::v3::UpstreamStartTlsConfig>(envoy::extensions::transport_sockets::starttls::v3::UpstreamStartTlsConfig const&, Envoy::ProtobufMessage::ValidationVisitor&, bool)
Unexecuted instantiation: void Envoy::MessageUtil::validate<envoy::extensions::transport_sockets::tcp_stats::v3::Config>(envoy::extensions::transport_sockets::tcp_stats::v3::Config const&, Envoy::ProtobufMessage::ValidationVisitor&, bool)
Unexecuted instantiation: void Envoy::MessageUtil::validate<envoy::extensions::transport_sockets::internal_upstream::v3::InternalUpstreamTransport>(envoy::extensions::transport_sockets::internal_upstream::v3::InternalUpstreamTransport const&, Envoy::ProtobufMessage::ValidationVisitor&, bool)
Unexecuted instantiation: void Envoy::MessageUtil::validate<envoy::extensions::retry::host::omit_host_metadata::v3::OmitHostMetadataConfig>(envoy::extensions::retry::host::omit_host_metadata::v3::OmitHostMetadataConfig const&, Envoy::ProtobufMessage::ValidationVisitor&, bool)
Unexecuted instantiation: void Envoy::MessageUtil::validate<envoy::extensions::retry::priority::previous_priorities::v3::PreviousPrioritiesConfig>(envoy::extensions::retry::priority::previous_priorities::v3::PreviousPrioritiesConfig const&, Envoy::ProtobufMessage::ValidationVisitor&, bool)
Unexecuted instantiation: void Envoy::MessageUtil::validate<envoy::extensions::internal_redirect::allow_listed_routes::v3::AllowListedRoutesConfig>(envoy::extensions::internal_redirect::allow_listed_routes::v3::AllowListedRoutesConfig const&, Envoy::ProtobufMessage::ValidationVisitor&, bool)
Unexecuted instantiation: void Envoy::MessageUtil::validate<envoy::extensions::rate_limit_descriptors::expr::v3::Descriptor>(envoy::extensions::rate_limit_descriptors::expr::v3::Descriptor const&, Envoy::ProtobufMessage::ValidationVisitor&, bool)
Unexecuted instantiation: void Envoy::MessageUtil::validate<envoy::extensions::bootstrap::internal_listener::v3::InternalListener>(envoy::extensions::bootstrap::internal_listener::v3::InternalListener const&, Envoy::ProtobufMessage::ValidationVisitor&, bool)
Unexecuted instantiation: void Envoy::MessageUtil::validate<envoy::extensions::http::header_formatters::preserve_case::v3::PreserveCaseFormatterConfig>(envoy::extensions::http::header_formatters::preserve_case::v3::PreserveCaseFormatterConfig const&, Envoy::ProtobufMessage::ValidationVisitor&, bool)
Unexecuted instantiation: void Envoy::MessageUtil::validate<envoy::extensions::http::stateful_session::cookie::v3::CookieBasedSessionState>(envoy::extensions::http::stateful_session::cookie::v3::CookieBasedSessionState const&, Envoy::ProtobufMessage::ValidationVisitor&, bool)
Unexecuted instantiation: void Envoy::MessageUtil::validate<envoy::extensions::http::stateful_session::header::v3::HeaderBasedSessionState>(envoy::extensions::http::stateful_session::header::v3::HeaderBasedSessionState const&, Envoy::ProtobufMessage::ValidationVisitor&, bool)
Unexecuted instantiation: void Envoy::MessageUtil::validate<envoy::extensions::http::custom_response::redirect_policy::v3::RedirectPolicy>(envoy::extensions::http::custom_response::redirect_policy::v3::RedirectPolicy const&, Envoy::ProtobufMessage::ValidationVisitor&, bool)
Unexecuted instantiation: void Envoy::MessageUtil::validate<envoy::extensions::http::custom_response::local_response_policy::v3::LocalResponsePolicy>(envoy::extensions::http::custom_response::local_response_policy::v3::LocalResponsePolicy const&, Envoy::ProtobufMessage::ValidationVisitor&, bool)
Unexecuted instantiation: void Envoy::MessageUtil::validate<envoy::extensions::quic::server_preferred_address::v3::FixedServerPreferredAddressConfig>(envoy::extensions::quic::server_preferred_address::v3::FixedServerPreferredAddressConfig const&, Envoy::ProtobufMessage::ValidationVisitor&, bool)
Unexecuted instantiation: void Envoy::MessageUtil::validate<envoy::extensions::key_value::file_based::v3::FileBasedKeyValueStoreConfig>(envoy::extensions::key_value::file_based::v3::FileBasedKeyValueStoreConfig const&, Envoy::ProtobufMessage::ValidationVisitor&, bool)
Unexecuted instantiation: void Envoy::MessageUtil::validate<xds::type::matcher::v3::IPMatcher>(xds::type::matcher::v3::IPMatcher const&, Envoy::ProtobufMessage::ValidationVisitor&, bool)
Unexecuted instantiation: void Envoy::MessageUtil::validate<envoy::extensions::geoip_providers::maxmind::v3::MaxMindConfig>(envoy::extensions::geoip_providers::maxmind::v3::MaxMindConfig const&, Envoy::ProtobufMessage::ValidationVisitor&, bool)
void Envoy::MessageUtil::validate<test::common::upstream::HealthCheckTestCase>(test::common::upstream::HealthCheckTestCase const&, Envoy::ProtobufMessage::ValidationVisitor&, bool)
Line
Count
Source
302
4.87k
                       bool recurse_into_any = false) {
303
    // Log warnings or throw errors if deprecated fields or unknown fields are in use.
304
4.87k
    if (!validation_visitor.skipValidation()) {
305
4.87k
      checkForUnexpectedFields(message, validation_visitor, recurse_into_any);
306
4.87k
    }
307
308
    // TODO(mattklein123): This will recurse the message twice, once above and once for PGV. When
309
    // we move to always recursing, satisfying the TODO below, we should merge into a single
310
    // recursion for performance reasons.
311
4.87k
    if (recurse_into_any) {
312
0
      return recursivePgvCheck(message);
313
0
    }
314
315
    // TODO(mattklein123): Now that PGV is capable of doing recursive message checks on abstract
316
    // types, we can remove bottom up validation from the entire codebase and only validate
317
    // at top level ingestion (bootstrap, discovery response). This is a large change and will be
318
    // done as a separate PR. This change will also allow removing templating from most/all of
319
    // related functions.
320
4.87k
    std::string err;
321
4.87k
    if (!Validate(message, &err)) {
322
280
      ProtoExceptionUtil::throwProtoValidationException(err, message);
323
280
    }
324
4.87k
  }
void Envoy::MessageUtil::validate<envoy::extensions::filters::http::ext_proc::unit_test_fuzz::ExtProcUnitTestCase>(envoy::extensions::filters::http::ext_proc::unit_test_fuzz::ExtProcUnitTestCase const&, Envoy::ProtobufMessage::ValidationVisitor&, bool)
Line
Count
Source
302
4.22k
                       bool recurse_into_any = false) {
303
    // Log warnings or throw errors if deprecated fields or unknown fields are in use.
304
4.22k
    if (!validation_visitor.skipValidation()) {
305
4.22k
      checkForUnexpectedFields(message, validation_visitor, recurse_into_any);
306
4.22k
    }
307
308
    // TODO(mattklein123): This will recurse the message twice, once above and once for PGV. When
309
    // we move to always recursing, satisfying the TODO below, we should merge into a single
310
    // recursion for performance reasons.
311
4.22k
    if (recurse_into_any) {
312
0
      return recursivePgvCheck(message);
313
0
    }
314
315
    // TODO(mattklein123): Now that PGV is capable of doing recursive message checks on abstract
316
    // types, we can remove bottom up validation from the entire codebase and only validate
317
    // at top level ingestion (bootstrap, discovery response). This is a large change and will be
318
    // done as a separate PR. This change will also allow removing templating from most/all of
319
    // related functions.
320
4.22k
    std::string err;
321
4.22k
    if (!Validate(message, &err)) {
322
536
      ProtoExceptionUtil::throwProtoValidationException(err, message);
323
536
    }
324
4.22k
  }
void Envoy::MessageUtil::validate<envoy::extensions::filters::http::jwt_authn::JwtAuthnFuzzInput>(envoy::extensions::filters::http::jwt_authn::JwtAuthnFuzzInput const&, Envoy::ProtobufMessage::ValidationVisitor&, bool)
Line
Count
Source
302
8.51k
                       bool recurse_into_any = false) {
303
    // Log warnings or throw errors if deprecated fields or unknown fields are in use.
304
8.51k
    if (!validation_visitor.skipValidation()) {
305
8.51k
      checkForUnexpectedFields(message, validation_visitor, recurse_into_any);
306
8.51k
    }
307
308
    // TODO(mattklein123): This will recurse the message twice, once above and once for PGV. When
309
    // we move to always recursing, satisfying the TODO below, we should merge into a single
310
    // recursion for performance reasons.
311
8.51k
    if (recurse_into_any) {
312
0
      return recursivePgvCheck(message);
313
0
    }
314
315
    // TODO(mattklein123): Now that PGV is capable of doing recursive message checks on abstract
316
    // types, we can remove bottom up validation from the entire codebase and only validate
317
    // at top level ingestion (bootstrap, discovery response). This is a large change and will be
318
    // done as a separate PR. This change will also allow removing templating from most/all of
319
    // related functions.
320
8.51k
    std::string err;
321
8.51k
    if (!Validate(message, &err)) {
322
301
      ProtoExceptionUtil::throwProtoValidationException(err, message);
323
301
    }
324
8.51k
  }
void Envoy::MessageUtil::validate<test::common::upstream::LeastRequestLoadBalancerTestCase>(test::common::upstream::LeastRequestLoadBalancerTestCase const&, Envoy::ProtobufMessage::ValidationVisitor&, bool)
Line
Count
Source
302
1.10k
                       bool recurse_into_any = false) {
303
    // Log warnings or throw errors if deprecated fields or unknown fields are in use.
304
1.10k
    if (!validation_visitor.skipValidation()) {
305
1.10k
      checkForUnexpectedFields(message, validation_visitor, recurse_into_any);
306
1.10k
    }
307
308
    // TODO(mattklein123): This will recurse the message twice, once above and once for PGV. When
309
    // we move to always recursing, satisfying the TODO below, we should merge into a single
310
    // recursion for performance reasons.
311
1.10k
    if (recurse_into_any) {
312
0
      return recursivePgvCheck(message);
313
0
    }
314
315
    // TODO(mattklein123): Now that PGV is capable of doing recursive message checks on abstract
316
    // types, we can remove bottom up validation from the entire codebase and only validate
317
    // at top level ingestion (bootstrap, discovery response). This is a large change and will be
318
    // done as a separate PR. This change will also allow removing templating from most/all of
319
    // related functions.
320
1.10k
    std::string err;
321
1.10k
    if (!Validate(message, &err)) {
322
17
      ProtoExceptionUtil::throwProtoValidationException(err, message);
323
17
    }
324
1.10k
  }
void Envoy::MessageUtil::validate<test::extensions::filters::http::FilterFuzzTestCase>(test::extensions::filters::http::FilterFuzzTestCase const&, Envoy::ProtobufMessage::ValidationVisitor&, bool)
Line
Count
Source
302
6.36k
                       bool recurse_into_any = false) {
303
    // Log warnings or throw errors if deprecated fields or unknown fields are in use.
304
6.36k
    if (!validation_visitor.skipValidation()) {
305
6.36k
      checkForUnexpectedFields(message, validation_visitor, recurse_into_any);
306
6.36k
    }
307
308
    // TODO(mattklein123): This will recurse the message twice, once above and once for PGV. When
309
    // we move to always recursing, satisfying the TODO below, we should merge into a single
310
    // recursion for performance reasons.
311
6.36k
    if (recurse_into_any) {
312
0
      return recursivePgvCheck(message);
313
0
    }
314
315
    // TODO(mattklein123): Now that PGV is capable of doing recursive message checks on abstract
316
    // types, we can remove bottom up validation from the entire codebase and only validate
317
    // at top level ingestion (bootstrap, discovery response). This is a large change and will be
318
    // done as a separate PR. This change will also allow removing templating from most/all of
319
    // related functions.
320
6.36k
    std::string err;
321
6.36k
    if (!Validate(message, &err)) {
322
5
      ProtoExceptionUtil::throwProtoValidationException(err, message);
323
5
    }
324
6.36k
  }
void Envoy::MessageUtil::validate<test::extensions::filters::common::expr::EvaluatorTestCase>(test::extensions::filters::common::expr::EvaluatorTestCase const&, Envoy::ProtobufMessage::ValidationVisitor&, bool)
Line
Count
Source
302
3.35k
                       bool recurse_into_any = false) {
303
    // Log warnings or throw errors if deprecated fields or unknown fields are in use.
304
3.35k
    if (!validation_visitor.skipValidation()) {
305
3.35k
      checkForUnexpectedFields(message, validation_visitor, recurse_into_any);
306
3.35k
    }
307
308
    // TODO(mattklein123): This will recurse the message twice, once above and once for PGV. When
309
    // we move to always recursing, satisfying the TODO below, we should merge into a single
310
    // recursion for performance reasons.
311
3.35k
    if (recurse_into_any) {
312
0
      return recursivePgvCheck(message);
313
0
    }
314
315
    // TODO(mattklein123): Now that PGV is capable of doing recursive message checks on abstract
316
    // types, we can remove bottom up validation from the entire codebase and only validate
317
    // at top level ingestion (bootstrap, discovery response). This is a large change and will be
318
    // done as a separate PR. This change will also allow removing templating from most/all of
319
    // related functions.
320
3.35k
    std::string err;
321
3.35k
    if (!Validate(message, &err)) {
322
8
      ProtoExceptionUtil::throwProtoValidationException(err, message);
323
8
    }
324
3.35k
  }
325
326
#ifdef ENVOY_ENABLE_YAML
327
  template <class MessageType>
328
  static void loadFromYamlAndValidate(const std::string& yaml, MessageType& message,
329
0
                                      ProtobufMessage::ValidationVisitor& validation_visitor) {
330
0
    loadFromYaml(yaml, message, validation_visitor);
331
0
    validate(message, validation_visitor);
332
0
  }
Unexecuted instantiation: void Envoy::MessageUtil::loadFromYamlAndValidate<envoy::config::core::v3::HealthCheck>(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, envoy::config::core::v3::HealthCheck&, Envoy::ProtobufMessage::ValidationVisitor&)
Unexecuted instantiation: void Envoy::MessageUtil::loadFromYamlAndValidate<envoy::admin::v3::TapRequest>(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, envoy::admin::v3::TapRequest&, Envoy::ProtobufMessage::ValidationVisitor&)
333
#endif
334
335
  /**
336
   * Downcast and validate protoc-gen-validate constraints on a given protobuf.
337
   * Note the corresponding `.pb.validate.h` for the message has to be included in the source file
338
   * of caller.
339
   * @param message const Protobuf::Message& to downcast and validate.
340
   * @return const MessageType& the concrete message type downcasted to on success.
341
   * @throw ProtoValidationException if the message does not satisfy its type constraints.
342
   */
343
  template <class MessageType>
344
  static const MessageType&
345
  downcastAndValidate(const Protobuf::Message& config,
346
143k
                      ProtobufMessage::ValidationVisitor& validation_visitor) {
347
143k
    const auto& typed_config = dynamic_cast<MessageType>(config);
348
143k
    validate(typed_config, validation_visitor);
349
143k
    return typed_config;
350
143k
  }
envoy::extensions::request_id::uuid::v3::UuidRequestIdConfig const& const& Envoy::MessageUtil::downcastAndValidate<envoy::extensions::request_id::uuid::v3::UuidRequestIdConfig const&>(google::protobuf::Message const&, Envoy::ProtobufMessage::ValidationVisitor&)
Line
Count
Source
346
6.14k
                      ProtobufMessage::ValidationVisitor& validation_visitor) {
347
6.14k
    const auto& typed_config = dynamic_cast<MessageType>(config);
348
6.14k
    validate(typed_config, validation_visitor);
349
6.14k
    return typed_config;
350
6.14k
  }
envoy::extensions::upstreams::http::v3::HttpProtocolOptions const& const& Envoy::MessageUtil::downcastAndValidate<envoy::extensions::upstreams::http::v3::HttpProtocolOptions const&>(google::protobuf::Message const&, Envoy::ProtobufMessage::ValidationVisitor&)
Line
Count
Source
346
2.24k
                      ProtobufMessage::ValidationVisitor& validation_visitor) {
347
2.24k
    const auto& typed_config = dynamic_cast<MessageType>(config);
348
2.24k
    validate(typed_config, validation_visitor);
349
2.24k
    return typed_config;
350
2.24k
  }
Unexecuted instantiation: envoy::extensions::upstreams::tcp::v3::TcpProtocolOptions const& const& Envoy::MessageUtil::downcastAndValidate<envoy::extensions::upstreams::tcp::v3::TcpProtocolOptions const&>(google::protobuf::Message const&, Envoy::ProtobufMessage::ValidationVisitor&)
envoy::extensions::filters::http::upstream_codec::v3::UpstreamCodec const& const& Envoy::MessageUtil::downcastAndValidate<envoy::extensions::filters::http::upstream_codec::v3::UpstreamCodec const&>(google::protobuf::Message const&, Envoy::ProtobufMessage::ValidationVisitor&)
Line
Count
Source
346
3.26k
                      ProtobufMessage::ValidationVisitor& validation_visitor) {
347
3.26k
    const auto& typed_config = dynamic_cast<MessageType>(config);
348
3.26k
    validate(typed_config, validation_visitor);
349
3.26k
    return typed_config;
350
3.26k
  }
envoy::extensions::filters::network::http_connection_manager::v3::HttpConnectionManager const& const& Envoy::MessageUtil::downcastAndValidate<envoy::extensions::filters::network::http_connection_manager::v3::HttpConnectionManager const&>(google::protobuf::Message const&, Envoy::ProtobufMessage::ValidationVisitor&)
Line
Count
Source
346
9.57k
                      ProtobufMessage::ValidationVisitor& validation_visitor) {
347
9.57k
    const auto& typed_config = dynamic_cast<MessageType>(config);
348
9.57k
    validate(typed_config, validation_visitor);
349
9.57k
    return typed_config;
350
9.57k
  }
Unexecuted instantiation: envoy::extensions::filters::network::http_connection_manager::v3::EnvoyMobileHttpConnectionManager const& const& Envoy::MessageUtil::downcastAndValidate<envoy::extensions::filters::network::http_connection_manager::v3::EnvoyMobileHttpConnectionManager const&>(google::protobuf::Message const&, Envoy::ProtobufMessage::ValidationVisitor&)
Unexecuted instantiation: envoy::extensions::transport_sockets::quic::v3::QuicDownstreamTransport const& const& Envoy::MessageUtil::downcastAndValidate<envoy::extensions::transport_sockets::quic::v3::QuicDownstreamTransport const&>(google::protobuf::Message const&, Envoy::ProtobufMessage::ValidationVisitor&)
Unexecuted instantiation: envoy::extensions::transport_sockets::quic::v3::QuicUpstreamTransport const& const& Envoy::MessageUtil::downcastAndValidate<envoy::extensions::transport_sockets::quic::v3::QuicUpstreamTransport const&>(google::protobuf::Message const&, Envoy::ProtobufMessage::ValidationVisitor&)
envoy::type::matcher::v3::HttpRequestHeaderMatchInput const& const& Envoy::MessageUtil::downcastAndValidate<envoy::type::matcher::v3::HttpRequestHeaderMatchInput const&>(google::protobuf::Message const&, Envoy::ProtobufMessage::ValidationVisitor&)
Line
Count
Source
346
27.0k
                      ProtobufMessage::ValidationVisitor& validation_visitor) {
347
27.0k
    const auto& typed_config = dynamic_cast<MessageType>(config);
348
27.0k
    validate(typed_config, validation_visitor);
349
27.0k
    return typed_config;
350
27.0k
  }
envoy::type::matcher::v3::HttpResponseHeaderMatchInput const& const& Envoy::MessageUtil::downcastAndValidate<envoy::type::matcher::v3::HttpResponseHeaderMatchInput const&>(google::protobuf::Message const&, Envoy::ProtobufMessage::ValidationVisitor&)
Line
Count
Source
346
1.96k
                      ProtobufMessage::ValidationVisitor& validation_visitor) {
347
1.96k
    const auto& typed_config = dynamic_cast<MessageType>(config);
348
1.96k
    validate(typed_config, validation_visitor);
349
1.96k
    return typed_config;
350
1.96k
  }
envoy::type::matcher::v3::HttpRequestTrailerMatchInput const& const& Envoy::MessageUtil::downcastAndValidate<envoy::type::matcher::v3::HttpRequestTrailerMatchInput const&>(google::protobuf::Message const&, Envoy::ProtobufMessage::ValidationVisitor&)
Line
Count
Source
346
1.86k
                      ProtobufMessage::ValidationVisitor& validation_visitor) {
347
1.86k
    const auto& typed_config = dynamic_cast<MessageType>(config);
348
1.86k
    validate(typed_config, validation_visitor);
349
1.86k
    return typed_config;
350
1.86k
  }
envoy::type::matcher::v3::HttpResponseTrailerMatchInput const& const& Envoy::MessageUtil::downcastAndValidate<envoy::type::matcher::v3::HttpResponseTrailerMatchInput const&>(google::protobuf::Message const&, Envoy::ProtobufMessage::ValidationVisitor&)
Line
Count
Source
346
1.36k
                      ProtobufMessage::ValidationVisitor& validation_visitor) {
347
1.36k
    const auto& typed_config = dynamic_cast<MessageType>(config);
348
1.36k
    validate(typed_config, validation_visitor);
349
1.36k
    return typed_config;
350
1.36k
  }
envoy::type::matcher::v3::HttpRequestQueryParamMatchInput const& const& Envoy::MessageUtil::downcastAndValidate<envoy::type::matcher::v3::HttpRequestQueryParamMatchInput const&>(google::protobuf::Message const&, Envoy::ProtobufMessage::ValidationVisitor&)
Line
Count
Source
346
1
                      ProtobufMessage::ValidationVisitor& validation_visitor) {
347
1
    const auto& typed_config = dynamic_cast<MessageType>(config);
348
1
    validate(typed_config, validation_visitor);
349
1
    return typed_config;
350
1
  }
envoy::extensions::common::matching::v3::ExtensionWithMatcherPerRoute const& const& Envoy::MessageUtil::downcastAndValidate<envoy::extensions::common::matching::v3::ExtensionWithMatcherPerRoute const&>(google::protobuf::Message const&, Envoy::ProtobufMessage::ValidationVisitor&)
Line
Count
Source
346
871
                      ProtobufMessage::ValidationVisitor& validation_visitor) {
347
871
    const auto& typed_config = dynamic_cast<MessageType>(config);
348
871
    validate(typed_config, validation_visitor);
349
871
    return typed_config;
350
871
  }
envoy::extensions::common::matching::v3::ExtensionWithMatcher const& const& Envoy::MessageUtil::downcastAndValidate<envoy::extensions::common::matching::v3::ExtensionWithMatcher const&>(google::protobuf::Message const&, Envoy::ProtobufMessage::ValidationVisitor&)
Line
Count
Source
346
774
                      ProtobufMessage::ValidationVisitor& validation_visitor) {
347
774
    const auto& typed_config = dynamic_cast<MessageType>(config);
348
774
    validate(typed_config, validation_visitor);
349
774
    return typed_config;
350
774
  }
envoy::config::route::v3::ScopedRouteConfiguration const& const& Envoy::MessageUtil::downcastAndValidate<envoy::config::route::v3::ScopedRouteConfiguration const&>(google::protobuf::Message const&, Envoy::ProtobufMessage::ValidationVisitor&)
Line
Count
Source
346
1.01k
                      ProtobufMessage::ValidationVisitor& validation_visitor) {
347
1.01k
    const auto& typed_config = dynamic_cast<MessageType>(config);
348
1.01k
    validate(typed_config, validation_visitor);
349
1.01k
    return typed_config;
350
1.01k
  }
envoy::config::route::v3::Route const& const& Envoy::MessageUtil::downcastAndValidate<envoy::config::route::v3::Route const&>(google::protobuf::Message const&, Envoy::ProtobufMessage::ValidationVisitor&)
Line
Count
Source
346
56.0k
                      ProtobufMessage::ValidationVisitor& validation_visitor) {
347
56.0k
    const auto& typed_config = dynamic_cast<MessageType>(config);
348
56.0k
    validate(typed_config, validation_visitor);
349
56.0k
    return typed_config;
350
56.0k
  }
Unexecuted instantiation: envoy::config::route::v3::RouteList const& const& Envoy::MessageUtil::downcastAndValidate<envoy::config::route::v3::RouteList const&>(google::protobuf::Message const&, Envoy::ProtobufMessage::ValidationVisitor&)
envoy::extensions::path::match::uri_template::v3::UriTemplateMatchConfig const& const& Envoy::MessageUtil::downcastAndValidate<envoy::extensions::path::match::uri_template::v3::UriTemplateMatchConfig const&>(google::protobuf::Message const&, Envoy::ProtobufMessage::ValidationVisitor&)
Line
Count
Source
346
1.86k
                      ProtobufMessage::ValidationVisitor& validation_visitor) {
347
1.86k
    const auto& typed_config = dynamic_cast<MessageType>(config);
348
1.86k
    validate(typed_config, validation_visitor);
349
1.86k
    return typed_config;
350
1.86k
  }
envoy::extensions::path::rewrite::uri_template::v3::UriTemplateRewriteConfig const& const& Envoy::MessageUtil::downcastAndValidate<envoy::extensions::path::rewrite::uri_template::v3::UriTemplateRewriteConfig const&>(google::protobuf::Message const&, Envoy::ProtobufMessage::ValidationVisitor&)
Line
Count
Source
346
813
                      ProtobufMessage::ValidationVisitor& validation_visitor) {
347
813
    const auto& typed_config = dynamic_cast<MessageType>(config);
348
813
    validate(typed_config, validation_visitor);
349
813
    return typed_config;
350
813
  }
Unexecuted instantiation: envoy::extensions::http::header_validators::envoy_default::v3::HeaderValidatorConfig const& const& Envoy::MessageUtil::downcastAndValidate<envoy::extensions::http::header_validators::envoy_default::v3::HeaderValidatorConfig const&>(google::protobuf::Message const&, Envoy::ProtobufMessage::ValidationVisitor&)
envoy::extensions::http::original_ip_detection::xff::v3::XffConfig const& const& Envoy::MessageUtil::downcastAndValidate<envoy::extensions::http::original_ip_detection::xff::v3::XffConfig const&>(google::protobuf::Message const&, Envoy::ProtobufMessage::ValidationVisitor&)
Line
Count
Source
346
6.11k
                      ProtobufMessage::ValidationVisitor& validation_visitor) {
347
6.11k
    const auto& typed_config = dynamic_cast<MessageType>(config);
348
6.11k
    validate(typed_config, validation_visitor);
349
6.11k
    return typed_config;
350
6.11k
  }
envoy::extensions::filters::http::router::v3::Router const& const& Envoy::MessageUtil::downcastAndValidate<envoy::extensions::filters::http::router::v3::Router const&>(google::protobuf::Message const&, Envoy::ProtobufMessage::ValidationVisitor&)
Line
Count
Source
346
5.63k
                      ProtobufMessage::ValidationVisitor& validation_visitor) {
347
5.63k
    const auto& typed_config = dynamic_cast<MessageType>(config);
348
5.63k
    validate(typed_config, validation_visitor);
349
5.63k
    return typed_config;
350
5.63k
  }
Unexecuted instantiation: test::integration::filters::AddBodyFilterConfig const& const& Envoy::MessageUtil::downcastAndValidate<test::integration::filters::AddBodyFilterConfig const&>(google::protobuf::Message const&, Envoy::ProtobufMessage::ValidationVisitor&)
Unexecuted instantiation: test::integration::filters::CrashFilterConfig const& const& Envoy::MessageUtil::downcastAndValidate<test::integration::filters::CrashFilterConfig const&>(google::protobuf::Message const&, Envoy::ProtobufMessage::ValidationVisitor&)
Unexecuted instantiation: envoy::extensions::transport_sockets::tls::v3::UpstreamTlsContext const& const& Envoy::MessageUtil::downcastAndValidate<envoy::extensions::transport_sockets::tls::v3::UpstreamTlsContext const&>(google::protobuf::Message const&, Envoy::ProtobufMessage::ValidationVisitor&)
Unexecuted instantiation: envoy::extensions::transport_sockets::tls::v3::DownstreamTlsContext const& const& Envoy::MessageUtil::downcastAndValidate<envoy::extensions::transport_sockets::tls::v3::DownstreamTlsContext const&>(google::protobuf::Message const&, Envoy::ProtobufMessage::ValidationVisitor&)
envoy::extensions::access_loggers::file::v3::FileAccessLog const& const& Envoy::MessageUtil::downcastAndValidate<envoy::extensions::access_loggers::file::v3::FileAccessLog const&>(google::protobuf::Message const&, Envoy::ProtobufMessage::ValidationVisitor&)
Line
Count
Source
346
5.28k
                      ProtobufMessage::ValidationVisitor& validation_visitor) {
347
5.28k
    const auto& typed_config = dynamic_cast<MessageType>(config);
348
5.28k
    validate(typed_config, validation_visitor);
349
5.28k
    return typed_config;
350
5.28k
  }
Unexecuted instantiation: envoy::extensions::access_loggers::stream::v3::StdoutAccessLog const& const& Envoy::MessageUtil::downcastAndValidate<envoy::extensions::access_loggers::stream::v3::StdoutAccessLog const&>(google::protobuf::Message const&, Envoy::ProtobufMessage::ValidationVisitor&)
Unexecuted instantiation: envoy::extensions::access_loggers::stream::v3::StderrAccessLog const& const& Envoy::MessageUtil::downcastAndValidate<envoy::extensions::access_loggers::stream::v3::StderrAccessLog const&>(google::protobuf::Message const&, Envoy::ProtobufMessage::ValidationVisitor&)
Unexecuted instantiation: envoy::extensions::http::early_header_mutation::header_mutation::v3::HeaderMutation const& const& Envoy::MessageUtil::downcastAndValidate<envoy::extensions::http::early_header_mutation::header_mutation::v3::HeaderMutation const&>(google::protobuf::Message const&, Envoy::ProtobufMessage::ValidationVisitor&)
Unexecuted instantiation: envoy::extensions::http::original_ip_detection::custom_header::v3::CustomHeaderConfig const& const& Envoy::MessageUtil::downcastAndValidate<envoy::extensions::http::original_ip_detection::custom_header::v3::CustomHeaderConfig const&>(google::protobuf::Message const&, Envoy::ProtobufMessage::ValidationVisitor&)
Unexecuted instantiation: envoy::config::core::v3::SubstitutionFormatString const& const& Envoy::MessageUtil::downcastAndValidate<envoy::config::core::v3::SubstitutionFormatString const&>(google::protobuf::Message const&, Envoy::ProtobufMessage::ValidationVisitor&)
Unexecuted instantiation: envoy::extensions::matching::common_inputs::environment_variable::v3::Config const& const& Envoy::MessageUtil::downcastAndValidate<envoy::extensions::matching::common_inputs::environment_variable::v3::Config const&>(google::protobuf::Message const&, Envoy::ProtobufMessage::ValidationVisitor&)
Unexecuted instantiation: envoy::extensions::matching::input_matchers::consistent_hashing::v3::ConsistentHashing const& const& Envoy::MessageUtil::downcastAndValidate<envoy::extensions::matching::input_matchers::consistent_hashing::v3::ConsistentHashing const&>(google::protobuf::Message const&, Envoy::ProtobufMessage::ValidationVisitor&)
Unexecuted instantiation: envoy::extensions::matching::input_matchers::ip::v3::Ip const& const& Envoy::MessageUtil::downcastAndValidate<envoy::extensions::matching::input_matchers::ip::v3::Ip const&>(google::protobuf::Message const&, Envoy::ProtobufMessage::ValidationVisitor&)
envoy::extensions::filters::network::ext_authz::v3::ExtAuthz const& const& Envoy::MessageUtil::downcastAndValidate<envoy::extensions::filters::network::ext_authz::v3::ExtAuthz const&>(google::protobuf::Message const&, Envoy::ProtobufMessage::ValidationVisitor&)
Line
Count
Source
346
8
                      ProtobufMessage::ValidationVisitor& validation_visitor) {
347
8
    const auto& typed_config = dynamic_cast<MessageType>(config);
348
8
    validate(typed_config, validation_visitor);
349
8
    return typed_config;
350
8
  }
envoy::extensions::filters::network::local_ratelimit::v3::LocalRateLimit const& const& Envoy::MessageUtil::downcastAndValidate<envoy::extensions::filters::network::local_ratelimit::v3::LocalRateLimit const&>(google::protobuf::Message const&, Envoy::ProtobufMessage::ValidationVisitor&)
Line
Count
Source
346
15
                      ProtobufMessage::ValidationVisitor& validation_visitor) {
347
15
    const auto& typed_config = dynamic_cast<MessageType>(config);
348
15
    validate(typed_config, validation_visitor);
349
15
    return typed_config;
350
15
  }
envoy::extensions::filters::network::ratelimit::v3::RateLimit const& const& Envoy::MessageUtil::downcastAndValidate<envoy::extensions::filters::network::ratelimit::v3::RateLimit const&>(google::protobuf::Message const&, Envoy::ProtobufMessage::ValidationVisitor&)
Line
Count
Source
346
12
                      ProtobufMessage::ValidationVisitor& validation_visitor) {
347
12
    const auto& typed_config = dynamic_cast<MessageType>(config);
348
12
    validate(typed_config, validation_visitor);
349
12
    return typed_config;
350
12
  }
envoy::extensions::filters::network::rbac::v3::RBAC const& const& Envoy::MessageUtil::downcastAndValidate<envoy::extensions::filters::network::rbac::v3::RBAC const&>(google::protobuf::Message const&, Envoy::ProtobufMessage::ValidationVisitor&)
Line
Count
Source
346
616
                      ProtobufMessage::ValidationVisitor& validation_visitor) {
347
616
    const auto& typed_config = dynamic_cast<MessageType>(config);
348
616
    validate(typed_config, validation_visitor);
349
616
    return typed_config;
350
616
  }
Unexecuted instantiation: envoy::config::rbac::v3::Action const& const& Envoy::MessageUtil::downcastAndValidate<envoy::config::rbac::v3::Action const&>(google::protobuf::Message const&, Envoy::ProtobufMessage::ValidationVisitor&)
Unexecuted instantiation: envoy::extensions::filters::http::ext_proc::v3::ExtProcPerRoute const& const& Envoy::MessageUtil::downcastAndValidate<envoy::extensions::filters::http::ext_proc::v3::ExtProcPerRoute const&>(google::protobuf::Message const&, Envoy::ProtobufMessage::ValidationVisitor&)
envoy::extensions::filters::http::ext_proc::v3::ExternalProcessor const& const& Envoy::MessageUtil::downcastAndValidate<envoy::extensions::filters::http::ext_proc::v3::ExternalProcessor const&>(google::protobuf::Message const&, Envoy::ProtobufMessage::ValidationVisitor&)
Line
Count
Source
346
1.18k
                      ProtobufMessage::ValidationVisitor& validation_visitor) {
347
1.18k
    const auto& typed_config = dynamic_cast<MessageType>(config);
348
1.18k
    validate(typed_config, validation_visitor);
349
1.18k
    return typed_config;
350
1.18k
  }
Unexecuted instantiation: envoy::extensions::access_loggers::grpc::v3::HttpGrpcAccessLogConfig const& const& Envoy::MessageUtil::downcastAndValidate<envoy::extensions::access_loggers::grpc::v3::HttpGrpcAccessLogConfig const&>(google::protobuf::Message const&, Envoy::ProtobufMessage::ValidationVisitor&)
Unexecuted instantiation: envoy::extensions::access_loggers::grpc::v3::TcpGrpcAccessLogConfig const& const& Envoy::MessageUtil::downcastAndValidate<envoy::extensions::access_loggers::grpc::v3::TcpGrpcAccessLogConfig const&>(google::protobuf::Message const&, Envoy::ProtobufMessage::ValidationVisitor&)
Unexecuted instantiation: envoy::extensions::access_loggers::open_telemetry::v3::OpenTelemetryAccessLogConfig const& const& Envoy::MessageUtil::downcastAndValidate<envoy::extensions::access_loggers::open_telemetry::v3::OpenTelemetryAccessLogConfig const&>(google::protobuf::Message const&, Envoy::ProtobufMessage::ValidationVisitor&)
Unexecuted instantiation: envoy::extensions::access_loggers::wasm::v3::WasmAccessLog const& const& Envoy::MessageUtil::downcastAndValidate<envoy::extensions::access_loggers::wasm::v3::WasmAccessLog const&>(google::protobuf::Message const&, Envoy::ProtobufMessage::ValidationVisitor&)
Unexecuted instantiation: envoy::extensions::clusters::aggregate::v3::ClusterConfig const& const& Envoy::MessageUtil::downcastAndValidate<envoy::extensions::clusters::aggregate::v3::ClusterConfig const&>(google::protobuf::Message const&, Envoy::ProtobufMessage::ValidationVisitor&)
Unexecuted instantiation: envoy::extensions::clusters::redis::v3::RedisClusterConfig const& const& Envoy::MessageUtil::downcastAndValidate<envoy::extensions::clusters::redis::v3::RedisClusterConfig const&>(google::protobuf::Message const&, Envoy::ProtobufMessage::ValidationVisitor&)
Unexecuted instantiation: envoy::extensions::filters::network::redis_proxy::v3::RedisProtocolOptions const& const& Envoy::MessageUtil::downcastAndValidate<envoy::extensions::filters::network::redis_proxy::v3::RedisProtocolOptions const&>(google::protobuf::Message const&, Envoy::ProtobufMessage::ValidationVisitor&)
Unexecuted instantiation: envoy::extensions::filters::network::redis_proxy::v3::RedisProxy const& const& Envoy::MessageUtil::downcastAndValidate<envoy::extensions::filters::network::redis_proxy::v3::RedisProxy const&>(google::protobuf::Message const&, Envoy::ProtobufMessage::ValidationVisitor&)
Unexecuted instantiation: envoy::extensions::compression::gzip::compressor::v3::Gzip const& const& Envoy::MessageUtil::downcastAndValidate<envoy::extensions::compression::gzip::compressor::v3::Gzip const&>(google::protobuf::Message const&, Envoy::ProtobufMessage::ValidationVisitor&)
Unexecuted instantiation: envoy::extensions::compression::gzip::decompressor::v3::Gzip const& const& Envoy::MessageUtil::downcastAndValidate<envoy::extensions::compression::gzip::decompressor::v3::Gzip const&>(google::protobuf::Message const&, Envoy::ProtobufMessage::ValidationVisitor&)
Unexecuted instantiation: envoy::extensions::compression::brotli::compressor::v3::Brotli const& const& Envoy::MessageUtil::downcastAndValidate<envoy::extensions::compression::brotli::compressor::v3::Brotli const&>(google::protobuf::Message const&, Envoy::ProtobufMessage::ValidationVisitor&)
Unexecuted instantiation: envoy::extensions::compression::brotli::decompressor::v3::Brotli const& const& Envoy::MessageUtil::downcastAndValidate<envoy::extensions::compression::brotli::decompressor::v3::Brotli const&>(google::protobuf::Message const&, Envoy::ProtobufMessage::ValidationVisitor&)
Unexecuted instantiation: envoy::extensions::compression::zstd::compressor::v3::Zstd const& const& Envoy::MessageUtil::downcastAndValidate<envoy::extensions::compression::zstd::compressor::v3::Zstd const&>(google::protobuf::Message const&, Envoy::ProtobufMessage::ValidationVisitor&)
Unexecuted instantiation: envoy::extensions::compression::zstd::decompressor::v3::Zstd const& const& Envoy::MessageUtil::downcastAndValidate<envoy::extensions::compression::zstd::decompressor::v3::Zstd const&>(google::protobuf::Message const&, Envoy::ProtobufMessage::ValidationVisitor&)
Unexecuted instantiation: envoy::config::grpc_credential::v3::FileBasedMetadataConfig const& const& Envoy::MessageUtil::downcastAndValidate<envoy::config::grpc_credential::v3::FileBasedMetadataConfig const&>(google::protobuf::Message const&, Envoy::ProtobufMessage::ValidationVisitor&)
Unexecuted instantiation: envoy::config::grpc_credential::v3::AwsIamConfig const& const& Envoy::MessageUtil::downcastAndValidate<envoy::config::grpc_credential::v3::AwsIamConfig const&>(google::protobuf::Message const&, Envoy::ProtobufMessage::ValidationVisitor&)
Unexecuted instantiation: envoy::extensions::wasm::v3::WasmService const& const& Envoy::MessageUtil::downcastAndValidate<envoy::extensions::wasm::v3::WasmService const&>(google::protobuf::Message const&, Envoy::ProtobufMessage::ValidationVisitor&)
Unexecuted instantiation: envoy::extensions::health_checkers::redis::v3::Redis const& const& Envoy::MessageUtil::downcastAndValidate<envoy::extensions::health_checkers::redis::v3::Redis const&>(google::protobuf::Message const&, Envoy::ProtobufMessage::ValidationVisitor&)
Unexecuted instantiation: envoy::extensions::health_checkers::thrift::v3::Thrift const& const& Envoy::MessageUtil::downcastAndValidate<envoy::extensions::health_checkers::thrift::v3::Thrift const&>(google::protobuf::Message const&, Envoy::ProtobufMessage::ValidationVisitor&)
Unexecuted instantiation: envoy::extensions::filters::network::thrift_proxy::v3::ThriftProtocolOptions const& const& Envoy::MessageUtil::downcastAndValidate<envoy::extensions::filters::network::thrift_proxy::v3::ThriftProtocolOptions const&>(google::protobuf::Message const&, Envoy::ProtobufMessage::ValidationVisitor&)
Unexecuted instantiation: envoy::extensions::filters::network::thrift_proxy::v3::ThriftProxy const& const& Envoy::MessageUtil::downcastAndValidate<envoy::extensions::filters::network::thrift_proxy::v3::ThriftProxy const&>(google::protobuf::Message const&, Envoy::ProtobufMessage::ValidationVisitor&)
Unexecuted instantiation: envoy::extensions::matching::input_matchers::runtime_fraction::v3::RuntimeFraction const& const& Envoy::MessageUtil::downcastAndValidate<envoy::extensions::matching::input_matchers::runtime_fraction::v3::RuntimeFraction const&>(google::protobuf::Message const&, Envoy::ProtobufMessage::ValidationVisitor&)
Unexecuted instantiation: envoy::extensions::matching::common_inputs::network::v3::FilterStateInput const& const& Envoy::MessageUtil::downcastAndValidate<envoy::extensions::matching::common_inputs::network::v3::FilterStateInput const&>(google::protobuf::Message const&, Envoy::ProtobufMessage::ValidationVisitor&)
Unexecuted instantiation: envoy::extensions::filters::http::adaptive_concurrency::v3::AdaptiveConcurrency const& const& Envoy::MessageUtil::downcastAndValidate<envoy::extensions::filters::http::adaptive_concurrency::v3::AdaptiveConcurrency const&>(google::protobuf::Message const&, Envoy::ProtobufMessage::ValidationVisitor&)
envoy::extensions::filters::http::admission_control::v3::AdmissionControl const& const& Envoy::MessageUtil::downcastAndValidate<envoy::extensions::filters::http::admission_control::v3::AdmissionControl const&>(google::protobuf::Message const&, Envoy::ProtobufMessage::ValidationVisitor&)
Line
Count
Source
346
189
                      ProtobufMessage::ValidationVisitor& validation_visitor) {
347
189
    const auto& typed_config = dynamic_cast<MessageType>(config);
348
189
    validate(typed_config, validation_visitor);
349
189
    return typed_config;
350
189
  }
Unexecuted instantiation: envoy::extensions::filters::http::alternate_protocols_cache::v3::FilterConfig const& const& Envoy::MessageUtil::downcastAndValidate<envoy::extensions::filters::http::alternate_protocols_cache::v3::FilterConfig const&>(google::protobuf::Message const&, Envoy::ProtobufMessage::ValidationVisitor&)
Unexecuted instantiation: envoy::extensions::filters::http::aws_lambda::v3::PerRouteConfig const& const& Envoy::MessageUtil::downcastAndValidate<envoy::extensions::filters::http::aws_lambda::v3::PerRouteConfig const&>(google::protobuf::Message const&, Envoy::ProtobufMessage::ValidationVisitor&)
envoy::extensions::filters::http::aws_lambda::v3::Config const& const& Envoy::MessageUtil::downcastAndValidate<envoy::extensions::filters::http::aws_lambda::v3::Config const&>(google::protobuf::Message const&, Envoy::ProtobufMessage::ValidationVisitor&)
Line
Count
Source
346
4
                      ProtobufMessage::ValidationVisitor& validation_visitor) {
347
4
    const auto& typed_config = dynamic_cast<MessageType>(config);
348
4
    validate(typed_config, validation_visitor);
349
4
    return typed_config;
350
4
  }
Unexecuted instantiation: envoy::extensions::filters::http::aws_request_signing::v3::AwsRequestSigningPerRoute const& const& Envoy::MessageUtil::downcastAndValidate<envoy::extensions::filters::http::aws_request_signing::v3::AwsRequestSigningPerRoute const&>(google::protobuf::Message const&, Envoy::ProtobufMessage::ValidationVisitor&)
envoy::extensions::filters::http::aws_request_signing::v3::AwsRequestSigning const& const& Envoy::MessageUtil::downcastAndValidate<envoy::extensions::filters::http::aws_request_signing::v3::AwsRequestSigning const&>(google::protobuf::Message const&, Envoy::ProtobufMessage::ValidationVisitor&)
Line
Count
Source
346
21
                      ProtobufMessage::ValidationVisitor& validation_visitor) {
347
21
    const auto& typed_config = dynamic_cast<MessageType>(config);
348
21
    validate(typed_config, validation_visitor);
349
21
    return typed_config;
350
21
  }
envoy::extensions::filters::http::bandwidth_limit::v3::BandwidthLimit const& const& Envoy::MessageUtil::downcastAndValidate<envoy::extensions::filters::http::bandwidth_limit::v3::BandwidthLimit const&>(google::protobuf::Message const&, Envoy::ProtobufMessage::ValidationVisitor&)
Line
Count
Source
346
5
                      ProtobufMessage::ValidationVisitor& validation_visitor) {
347
5
    const auto& typed_config = dynamic_cast<MessageType>(config);
348
5
    validate(typed_config, validation_visitor);
349
5
    return typed_config;
350
5
  }
envoy::extensions::filters::http::basic_auth::v3::BasicAuth const& const& Envoy::MessageUtil::downcastAndValidate<envoy::extensions::filters::http::basic_auth::v3::BasicAuth const&>(google::protobuf::Message const&, Envoy::ProtobufMessage::ValidationVisitor&)
Line
Count
Source
346
4
                      ProtobufMessage::ValidationVisitor& validation_visitor) {
347
4
    const auto& typed_config = dynamic_cast<MessageType>(config);
348
4
    validate(typed_config, validation_visitor);
349
4
    return typed_config;
350
4
  }
Unexecuted instantiation: envoy::extensions::filters::http::buffer::v3::BufferPerRoute const& const& Envoy::MessageUtil::downcastAndValidate<envoy::extensions::filters::http::buffer::v3::BufferPerRoute const&>(google::protobuf::Message const&, Envoy::ProtobufMessage::ValidationVisitor&)
envoy::extensions::filters::http::buffer::v3::Buffer const& const& Envoy::MessageUtil::downcastAndValidate<envoy::extensions::filters::http::buffer::v3::Buffer const&>(google::protobuf::Message const&, Envoy::ProtobufMessage::ValidationVisitor&)
Line
Count
Source
346
89
                      ProtobufMessage::ValidationVisitor& validation_visitor) {
347
89
    const auto& typed_config = dynamic_cast<MessageType>(config);
348
89
    validate(typed_config, validation_visitor);
349
89
    return typed_config;
350
89
  }
envoy::extensions::filters::http::cache::v3::CacheConfig const& const& Envoy::MessageUtil::downcastAndValidate<envoy::extensions::filters::http::cache::v3::CacheConfig const&>(google::protobuf::Message const&, Envoy::ProtobufMessage::ValidationVisitor&)
Line
Count
Source
346
5
                      ProtobufMessage::ValidationVisitor& validation_visitor) {
347
5
    const auto& typed_config = dynamic_cast<MessageType>(config);
348
5
    validate(typed_config, validation_visitor);
349
5
    return typed_config;
350
5
  }
envoy::extensions::filters::http::cdn_loop::v3::CdnLoopConfig const& const& Envoy::MessageUtil::downcastAndValidate<envoy::extensions::filters::http::cdn_loop::v3::CdnLoopConfig const&>(google::protobuf::Message const&, Envoy::ProtobufMessage::ValidationVisitor&)
Line
Count
Source
346
11
                      ProtobufMessage::ValidationVisitor& validation_visitor) {
347
11
    const auto& typed_config = dynamic_cast<MessageType>(config);
348
11
    validate(typed_config, validation_visitor);
349
11
    return typed_config;
350
11
  }
Unexecuted instantiation: envoy::extensions::filters::http::compressor::v3::CompressorPerRoute const& const& Envoy::MessageUtil::downcastAndValidate<envoy::extensions::filters::http::compressor::v3::CompressorPerRoute const&>(google::protobuf::Message const&, Envoy::ProtobufMessage::ValidationVisitor&)
Unexecuted instantiation: envoy::extensions::filters::http::compressor::v3::Compressor const& const& Envoy::MessageUtil::downcastAndValidate<envoy::extensions::filters::http::compressor::v3::Compressor const&>(google::protobuf::Message const&, Envoy::ProtobufMessage::ValidationVisitor&)
Unexecuted instantiation: envoy::extensions::filters::http::cors::v3::CorsPolicy const& const& Envoy::MessageUtil::downcastAndValidate<envoy::extensions::filters::http::cors::v3::CorsPolicy const&>(google::protobuf::Message const&, Envoy::ProtobufMessage::ValidationVisitor&)
envoy::extensions::filters::http::cors::v3::Cors const& const& Envoy::MessageUtil::downcastAndValidate<envoy::extensions::filters::http::cors::v3::Cors const&>(google::protobuf::Message const&, Envoy::ProtobufMessage::ValidationVisitor&)
Line
Count
Source
346
22
                      ProtobufMessage::ValidationVisitor& validation_visitor) {
347
22
    const auto& typed_config = dynamic_cast<MessageType>(config);
348
22
    validate(typed_config, validation_visitor);
349
22
    return typed_config;
350
22
  }
Unexecuted instantiation: envoy::extensions::filters::http::composite::v3::Composite const& const& Envoy::MessageUtil::downcastAndValidate<envoy::extensions::filters::http::composite::v3::Composite const&>(google::protobuf::Message const&, Envoy::ProtobufMessage::ValidationVisitor&)
Unexecuted instantiation: envoy::extensions::filters::http::composite::v3::ExecuteFilterAction const& const& Envoy::MessageUtil::downcastAndValidate<envoy::extensions::filters::http::composite::v3::ExecuteFilterAction const&>(google::protobuf::Message const&, Envoy::ProtobufMessage::ValidationVisitor&)
envoy::extensions::filters::http::connect_grpc_bridge::v3::FilterConfig const& const& Envoy::MessageUtil::downcastAndValidate<envoy::extensions::filters::http::connect_grpc_bridge::v3::FilterConfig const&>(google::protobuf::Message const&, Envoy::ProtobufMessage::ValidationVisitor&)
Line
Count
Source
346
47
                      ProtobufMessage::ValidationVisitor& validation_visitor) {
347
47
    const auto& typed_config = dynamic_cast<MessageType>(config);
348
47
    validate(typed_config, validation_visitor);
349
47
    return typed_config;
350
47
  }
envoy::extensions::filters::http::csrf::v3::CsrfPolicy const& const& Envoy::MessageUtil::downcastAndValidate<envoy::extensions::filters::http::csrf::v3::CsrfPolicy const&>(google::protobuf::Message const&, Envoy::ProtobufMessage::ValidationVisitor&)
Line
Count
Source
346
4
                      ProtobufMessage::ValidationVisitor& validation_visitor) {
347
4
    const auto& typed_config = dynamic_cast<MessageType>(config);
348
4
    validate(typed_config, validation_visitor);
349
4
    return typed_config;
350
4
  }
envoy::extensions::filters::http::custom_response::v3::CustomResponse const& const& Envoy::MessageUtil::downcastAndValidate<envoy::extensions::filters::http::custom_response::v3::CustomResponse const&>(google::protobuf::Message const&, Envoy::ProtobufMessage::ValidationVisitor&)
Line
Count
Source
346
5
                      ProtobufMessage::ValidationVisitor& validation_visitor) {
347
5
    const auto& typed_config = dynamic_cast<MessageType>(config);
348
5
    validate(typed_config, validation_visitor);
349
5
    return typed_config;
350
5
  }
Unexecuted instantiation: envoy::extensions::filters::http::decompressor::v3::Decompressor const& const& Envoy::MessageUtil::downcastAndValidate<envoy::extensions::filters::http::decompressor::v3::Decompressor const&>(google::protobuf::Message const&, Envoy::ProtobufMessage::ValidationVisitor&)
Unexecuted instantiation: envoy::extensions::filters::http::dynamic_forward_proxy::v3::PerRouteConfig const& const& Envoy::MessageUtil::downcastAndValidate<envoy::extensions::filters::http::dynamic_forward_proxy::v3::PerRouteConfig const&>(google::protobuf::Message const&, Envoy::ProtobufMessage::ValidationVisitor&)
envoy::extensions::filters::http::dynamic_forward_proxy::v3::FilterConfig const& const& Envoy::MessageUtil::downcastAndValidate<envoy::extensions::filters::http::dynamic_forward_proxy::v3::FilterConfig const&>(google::protobuf::Message const&, Envoy::ProtobufMessage::ValidationVisitor&)
Line
Count
Source
346
2
                      ProtobufMessage::ValidationVisitor& validation_visitor) {
347
2
    const auto& typed_config = dynamic_cast<MessageType>(config);
348
2
    validate(typed_config, validation_visitor);
349
2
    return typed_config;
350
2
  }
Unexecuted instantiation: envoy::extensions::clusters::dynamic_forward_proxy::v3::ClusterConfig const& const& Envoy::MessageUtil::downcastAndValidate<envoy::extensions::clusters::dynamic_forward_proxy::v3::ClusterConfig const&>(google::protobuf::Message const&, Envoy::ProtobufMessage::ValidationVisitor&)
Unexecuted instantiation: envoy::extensions::filters::http::ext_authz::v3::ExtAuthzPerRoute const& const& Envoy::MessageUtil::downcastAndValidate<envoy::extensions::filters::http::ext_authz::v3::ExtAuthzPerRoute const&>(google::protobuf::Message const&, Envoy::ProtobufMessage::ValidationVisitor&)
Unexecuted instantiation: envoy::extensions::filters::http::ext_authz::v3::ExtAuthz const& const& Envoy::MessageUtil::downcastAndValidate<envoy::extensions::filters::http::ext_authz::v3::ExtAuthz const&>(google::protobuf::Message const&, Envoy::ProtobufMessage::ValidationVisitor&)
envoy::extensions::filters::http::fault::v3::HTTPFault const& const& Envoy::MessageUtil::downcastAndValidate<envoy::extensions::filters::http::fault::v3::HTTPFault const&>(google::protobuf::Message const&, Envoy::ProtobufMessage::ValidationVisitor&)
Line
Count
Source
346
21
                      ProtobufMessage::ValidationVisitor& validation_visitor) {
347
21
    const auto& typed_config = dynamic_cast<MessageType>(config);
348
21
    validate(typed_config, validation_visitor);
349
21
    return typed_config;
350
21
  }
envoy::extensions::filters::http::file_system_buffer::v3::FileSystemBufferFilterConfig const& const& Envoy::MessageUtil::downcastAndValidate<envoy::extensions::filters::http::file_system_buffer::v3::FileSystemBufferFilterConfig const&>(google::protobuf::Message const&, Envoy::ProtobufMessage::ValidationVisitor&)
Line
Count
Source
346
156
                      ProtobufMessage::ValidationVisitor& validation_visitor) {
347
156
    const auto& typed_config = dynamic_cast<MessageType>(config);
348
156
    validate(typed_config, validation_visitor);
349
156
    return typed_config;
350
156
  }
envoy::extensions::filters::http::gcp_authn::v3::GcpAuthnFilterConfig const& const& Envoy::MessageUtil::downcastAndValidate<envoy::extensions::filters::http::gcp_authn::v3::GcpAuthnFilterConfig const&>(google::protobuf::Message const&, Envoy::ProtobufMessage::ValidationVisitor&)
Line
Count
Source
346
1
                      ProtobufMessage::ValidationVisitor& validation_visitor) {
347
1
    const auto& typed_config = dynamic_cast<MessageType>(config);
348
1
    validate(typed_config, validation_visitor);
349
1
    return typed_config;
350
1
  }
envoy::extensions::filters::http::geoip::v3::Geoip const& const& Envoy::MessageUtil::downcastAndValidate<envoy::extensions::filters::http::geoip::v3::Geoip const&>(google::protobuf::Message const&, Envoy::ProtobufMessage::ValidationVisitor&)
Line
Count
Source
346
1
                      ProtobufMessage::ValidationVisitor& validation_visitor) {
347
1
    const auto& typed_config = dynamic_cast<MessageType>(config);
348
1
    validate(typed_config, validation_visitor);
349
1
    return typed_config;
350
1
  }
envoy::extensions::filters::http::grpc_field_extraction::v3::GrpcFieldExtractionConfig const& const& Envoy::MessageUtil::downcastAndValidate<envoy::extensions::filters::http::grpc_field_extraction::v3::GrpcFieldExtractionConfig const&>(google::protobuf::Message const&, Envoy::ProtobufMessage::ValidationVisitor&)
Line
Count
Source
346
4
                      ProtobufMessage::ValidationVisitor& validation_visitor) {
347
4
    const auto& typed_config = dynamic_cast<MessageType>(config);
348
4
    validate(typed_config, validation_visitor);
349
4
    return typed_config;
350
4
  }
envoy::extensions::filters::http::grpc_http1_bridge::v3::Config const& const& Envoy::MessageUtil::downcastAndValidate<envoy::extensions::filters::http::grpc_http1_bridge::v3::Config const&>(google::protobuf::Message const&, Envoy::ProtobufMessage::ValidationVisitor&)
Line
Count
Source
346
9
                      ProtobufMessage::ValidationVisitor& validation_visitor) {
347
9
    const auto& typed_config = dynamic_cast<MessageType>(config);
348
9
    validate(typed_config, validation_visitor);
349
9
    return typed_config;
350
9
  }
Unexecuted instantiation: envoy::extensions::filters::http::grpc_http1_reverse_bridge::v3::FilterConfigPerRoute const& const& Envoy::MessageUtil::downcastAndValidate<envoy::extensions::filters::http::grpc_http1_reverse_bridge::v3::FilterConfigPerRoute const&>(google::protobuf::Message const&, Envoy::ProtobufMessage::ValidationVisitor&)
envoy::extensions::filters::http::grpc_http1_reverse_bridge::v3::FilterConfig const& const& Envoy::MessageUtil::downcastAndValidate<envoy::extensions::filters::http::grpc_http1_reverse_bridge::v3::FilterConfig const&>(google::protobuf::Message const&, Envoy::ProtobufMessage::ValidationVisitor&)
Line
Count
Source
346
44
                      ProtobufMessage::ValidationVisitor& validation_visitor) {
347
44
    const auto& typed_config = dynamic_cast<MessageType>(config);
348
44
    validate(typed_config, validation_visitor);
349
44
    return typed_config;
350
44
  }
envoy::extensions::filters::http::grpc_json_transcoder::v3::GrpcJsonTranscoder const& const& Envoy::MessageUtil::downcastAndValidate<envoy::extensions::filters::http::grpc_json_transcoder::v3::GrpcJsonTranscoder const&>(google::protobuf::Message const&, Envoy::ProtobufMessage::ValidationVisitor&)
Line
Count
Source
346
432
                      ProtobufMessage::ValidationVisitor& validation_visitor) {
347
432
    const auto& typed_config = dynamic_cast<MessageType>(config);
348
432
    validate(typed_config, validation_visitor);
349
432
    return typed_config;
350
432
  }
envoy::extensions::filters::http::grpc_stats::v3::FilterConfig const& const& Envoy::MessageUtil::downcastAndValidate<envoy::extensions::filters::http::grpc_stats::v3::FilterConfig const&>(google::protobuf::Message const&, Envoy::ProtobufMessage::ValidationVisitor&)
Line
Count
Source
346
259
                      ProtobufMessage::ValidationVisitor& validation_visitor) {
347
259
    const auto& typed_config = dynamic_cast<MessageType>(config);
348
259
    validate(typed_config, validation_visitor);
349
259
    return typed_config;
350
259
  }
envoy::extensions::filters::http::grpc_web::v3::GrpcWeb const& const& Envoy::MessageUtil::downcastAndValidate<envoy::extensions::filters::http::grpc_web::v3::GrpcWeb const&>(google::protobuf::Message const&, Envoy::ProtobufMessage::ValidationVisitor&)
Line
Count
Source
346
2
                      ProtobufMessage::ValidationVisitor& validation_visitor) {
347
2
    const auto& typed_config = dynamic_cast<MessageType>(config);
348
2
    validate(typed_config, validation_visitor);
349
2
    return typed_config;
350
2
  }
envoy::extensions::filters::http::header_to_metadata::v3::Config const& const& Envoy::MessageUtil::downcastAndValidate<envoy::extensions::filters::http::header_to_metadata::v3::Config const&>(google::protobuf::Message const&, Envoy::ProtobufMessage::ValidationVisitor&)
Line
Count
Source
346
124
                      ProtobufMessage::ValidationVisitor& validation_visitor) {
347
124
    const auto& typed_config = dynamic_cast<MessageType>(config);
348
124
    validate(typed_config, validation_visitor);
349
124
    return typed_config;
350
124
  }
envoy::extensions::filters::http::health_check::v3::HealthCheck const& const& Envoy::MessageUtil::downcastAndValidate<envoy::extensions::filters::http::health_check::v3::HealthCheck const&>(google::protobuf::Message const&, Envoy::ProtobufMessage::ValidationVisitor&)
Line
Count
Source
346
32
                      ProtobufMessage::ValidationVisitor& validation_visitor) {
347
32
    const auto& typed_config = dynamic_cast<MessageType>(config);
348
32
    validate(typed_config, validation_visitor);
349
32
    return typed_config;
350
32
  }
envoy::extensions::filters::http::ip_tagging::v3::IPTagging const& const& Envoy::MessageUtil::downcastAndValidate<envoy::extensions::filters::http::ip_tagging::v3::IPTagging const&>(google::protobuf::Message const&, Envoy::ProtobufMessage::ValidationVisitor&)
Line
Count
Source
346
55
                      ProtobufMessage::ValidationVisitor& validation_visitor) {
347
55
    const auto& typed_config = dynamic_cast<MessageType>(config);
348
55
    validate(typed_config, validation_visitor);
349
55
    return typed_config;
350
55
  }
envoy::extensions::filters::http::json_to_metadata::v3::JsonToMetadata const& const& Envoy::MessageUtil::downcastAndValidate<envoy::extensions::filters::http::json_to_metadata::v3::JsonToMetadata const&>(google::protobuf::Message const&, Envoy::ProtobufMessage::ValidationVisitor&)
Line
Count
Source
346
105
                      ProtobufMessage::ValidationVisitor& validation_visitor) {
347
105
    const auto& typed_config = dynamic_cast<MessageType>(config);
348
105
    validate(typed_config, validation_visitor);
349
105
    return typed_config;
350
105
  }
Unexecuted instantiation: envoy::extensions::filters::http::jwt_authn::v3::PerRouteConfig const& const& Envoy::MessageUtil::downcastAndValidate<envoy::extensions::filters::http::jwt_authn::v3::PerRouteConfig const&>(google::protobuf::Message const&, Envoy::ProtobufMessage::ValidationVisitor&)
envoy::extensions::filters::http::jwt_authn::v3::JwtAuthentication const& const& Envoy::MessageUtil::downcastAndValidate<envoy::extensions::filters::http::jwt_authn::v3::JwtAuthentication const&>(google::protobuf::Message const&, Envoy::ProtobufMessage::ValidationVisitor&)
Line
Count
Source
346
1.14k
                      ProtobufMessage::ValidationVisitor& validation_visitor) {
347
1.14k
    const auto& typed_config = dynamic_cast<MessageType>(config);
348
1.14k
    validate(typed_config, validation_visitor);
349
1.14k
    return typed_config;
350
1.14k
  }
Unexecuted instantiation: envoy::extensions::filters::http::rate_limit_quota::v3::RateLimitQuotaOverride const& const& Envoy::MessageUtil::downcastAndValidate<envoy::extensions::filters::http::rate_limit_quota::v3::RateLimitQuotaOverride const&>(google::protobuf::Message const&, Envoy::ProtobufMessage::ValidationVisitor&)
envoy::extensions::filters::http::rate_limit_quota::v3::RateLimitQuotaFilterConfig const& const& Envoy::MessageUtil::downcastAndValidate<envoy::extensions::filters::http::rate_limit_quota::v3::RateLimitQuotaFilterConfig const&>(google::protobuf::Message const&, Envoy::ProtobufMessage::ValidationVisitor&)
Line
Count
Source
346
3
                      ProtobufMessage::ValidationVisitor& validation_visitor) {
347
3
    const auto& typed_config = dynamic_cast<MessageType>(config);
348
3
    validate(typed_config, validation_visitor);
349
3
    return typed_config;
350
3
  }
Unexecuted instantiation: envoy::extensions::filters::http::rate_limit_quota::v3::RateLimitQuotaBucketSettings const& const& Envoy::MessageUtil::downcastAndValidate<envoy::extensions::filters::http::rate_limit_quota::v3::RateLimitQuotaBucketSettings const&>(google::protobuf::Message const&, Envoy::ProtobufMessage::ValidationVisitor&)
envoy::extensions::filters::http::local_ratelimit::v3::LocalRateLimit const& const& Envoy::MessageUtil::downcastAndValidate<envoy::extensions::filters::http::local_ratelimit::v3::LocalRateLimit const&>(google::protobuf::Message const&, Envoy::ProtobufMessage::ValidationVisitor&)
Line
Count
Source
346
11
                      ProtobufMessage::ValidationVisitor& validation_visitor) {
347
11
    const auto& typed_config = dynamic_cast<MessageType>(config);
348
11
    validate(typed_config, validation_visitor);
349
11
    return typed_config;
350
11
  }
Unexecuted instantiation: envoy::extensions::filters::http::lua::v3::LuaPerRoute const& const& Envoy::MessageUtil::downcastAndValidate<envoy::extensions::filters::http::lua::v3::LuaPerRoute const&>(google::protobuf::Message const&, Envoy::ProtobufMessage::ValidationVisitor&)
envoy::extensions::filters::http::lua::v3::Lua const& const& Envoy::MessageUtil::downcastAndValidate<envoy::extensions::filters::http::lua::v3::Lua const&>(google::protobuf::Message const&, Envoy::ProtobufMessage::ValidationVisitor&)
Line
Count
Source
346
178
                      ProtobufMessage::ValidationVisitor& validation_visitor) {
347
178
    const auto& typed_config = dynamic_cast<MessageType>(config);
348
178
    validate(typed_config, validation_visitor);
349
178
    return typed_config;
350
178
  }
envoy::extensions::filters::http::oauth2::v3::OAuth2 const& const& Envoy::MessageUtil::downcastAndValidate<envoy::extensions::filters::http::oauth2::v3::OAuth2 const&>(google::protobuf::Message const&, Envoy::ProtobufMessage::ValidationVisitor&)
Line
Count
Source
346
1
                      ProtobufMessage::ValidationVisitor& validation_visitor) {
347
1
    const auto& typed_config = dynamic_cast<MessageType>(config);
348
1
    validate(typed_config, validation_visitor);
349
1
    return typed_config;
350
1
  }
Unexecuted instantiation: envoy::extensions::filters::http::on_demand::v3::PerRouteConfig const& const& Envoy::MessageUtil::downcastAndValidate<envoy::extensions::filters::http::on_demand::v3::PerRouteConfig const&>(google::protobuf::Message const&, Envoy::ProtobufMessage::ValidationVisitor&)
envoy::extensions::filters::http::on_demand::v3::OnDemand const& const& Envoy::MessageUtil::downcastAndValidate<envoy::extensions::filters::http::on_demand::v3::OnDemand const&>(google::protobuf::Message const&, Envoy::ProtobufMessage::ValidationVisitor&)
Line
Count
Source
346
8
                      ProtobufMessage::ValidationVisitor& validation_visitor) {
347
8
    const auto& typed_config = dynamic_cast<MessageType>(config);
348
8
    validate(typed_config, validation_visitor);
349
8
    return typed_config;
350
8
  }
envoy::extensions::filters::http::original_src::v3::OriginalSrc const& const& Envoy::MessageUtil::downcastAndValidate<envoy::extensions::filters::http::original_src::v3::OriginalSrc const&>(google::protobuf::Message const&, Envoy::ProtobufMessage::ValidationVisitor&)
Line
Count
Source
346
1
                      ProtobufMessage::ValidationVisitor& validation_visitor) {
347
1
    const auto& typed_config = dynamic_cast<MessageType>(config);
348
1
    validate(typed_config, validation_visitor);
349
1
    return typed_config;
350
1
  }
Unexecuted instantiation: envoy::extensions::filters::http::ratelimit::v3::RateLimitPerRoute const& const& Envoy::MessageUtil::downcastAndValidate<envoy::extensions::filters::http::ratelimit::v3::RateLimitPerRoute const&>(google::protobuf::Message const&, Envoy::ProtobufMessage::ValidationVisitor&)
envoy::extensions::filters::http::ratelimit::v3::RateLimit const& const& Envoy::MessageUtil::downcastAndValidate<envoy::extensions::filters::http::ratelimit::v3::RateLimit const&>(google::protobuf::Message const&, Envoy::ProtobufMessage::ValidationVisitor&)
Line
Count
Source
346
15
                      ProtobufMessage::ValidationVisitor& validation_visitor) {
347
15
    const auto& typed_config = dynamic_cast<MessageType>(config);
348
15
    validate(typed_config, validation_visitor);
349
15
    return typed_config;
350
15
  }
Unexecuted instantiation: envoy::extensions::filters::http::rbac::v3::RBACPerRoute const& const& Envoy::MessageUtil::downcastAndValidate<envoy::extensions::filters::http::rbac::v3::RBACPerRoute const&>(google::protobuf::Message const&, Envoy::ProtobufMessage::ValidationVisitor&)
envoy::extensions::filters::http::rbac::v3::RBAC const& const& Envoy::MessageUtil::downcastAndValidate<envoy::extensions::filters::http::rbac::v3::RBAC const&>(google::protobuf::Message const&, Envoy::ProtobufMessage::ValidationVisitor&)
Line
Count
Source
346
2.75k
                      ProtobufMessage::ValidationVisitor& validation_visitor) {
347
2.75k
    const auto& typed_config = dynamic_cast<MessageType>(config);
348
2.75k
    validate(typed_config, validation_visitor);
349
2.75k
    return typed_config;
350
2.75k
  }
Unexecuted instantiation: envoy::extensions::filters::http::set_filter_state::v3::Config const& const& Envoy::MessageUtil::downcastAndValidate<envoy::extensions::filters::http::set_filter_state::v3::Config const&>(google::protobuf::Message const&, Envoy::ProtobufMessage::ValidationVisitor&)
envoy::extensions::filters::http::set_metadata::v3::Config const& const& Envoy::MessageUtil::downcastAndValidate<envoy::extensions::filters::http::set_metadata::v3::Config const&>(google::protobuf::Message const&, Envoy::ProtobufMessage::ValidationVisitor&)
Line
Count
Source
346
16
                      ProtobufMessage::ValidationVisitor& validation_visitor) {
347
16
    const auto& typed_config = dynamic_cast<MessageType>(config);
348
16
    validate(typed_config, validation_visitor);
349
16
    return typed_config;
350
16
  }
envoy::extensions::filters::http::tap::v3::Tap const& const& Envoy::MessageUtil::downcastAndValidate<envoy::extensions::filters::http::tap::v3::Tap const&>(google::protobuf::Message const&, Envoy::ProtobufMessage::ValidationVisitor&)
Line
Count
Source
346
440
                      ProtobufMessage::ValidationVisitor& validation_visitor) {
347
440
    const auto& typed_config = dynamic_cast<MessageType>(config);
348
440
    validate(typed_config, validation_visitor);
349
440
    return typed_config;
350
440
  }
envoy::extensions::filters::http::wasm::v3::Wasm const& const& Envoy::MessageUtil::downcastAndValidate<envoy::extensions::filters::http::wasm::v3::Wasm const&>(google::protobuf::Message const&, Envoy::ProtobufMessage::ValidationVisitor&)
Line
Count
Source
346
105
                      ProtobufMessage::ValidationVisitor& validation_visitor) {
347
105
    const auto& typed_config = dynamic_cast<MessageType>(config);
348
105
    validate(typed_config, validation_visitor);
349
105
    return typed_config;
350
105
  }
Unexecuted instantiation: envoy::extensions::filters::http::stateful_session::v3::StatefulSessionPerRoute const& const& Envoy::MessageUtil::downcastAndValidate<envoy::extensions::filters::http::stateful_session::v3::StatefulSessionPerRoute const&>(google::protobuf::Message const&, Envoy::ProtobufMessage::ValidationVisitor&)
envoy::extensions::filters::http::stateful_session::v3::StatefulSession const& const& Envoy::MessageUtil::downcastAndValidate<envoy::extensions::filters::http::stateful_session::v3::StatefulSession const&>(google::protobuf::Message const&, Envoy::ProtobufMessage::ValidationVisitor&)
Line
Count
Source
346
3
                      ProtobufMessage::ValidationVisitor& validation_visitor) {
347
3
    const auto& typed_config = dynamic_cast<MessageType>(config);
348
3
    validate(typed_config, validation_visitor);
349
3
    return typed_config;
350
3
  }
Unexecuted instantiation: envoy::extensions::filters::http::header_mutation::v3::HeaderMutationPerRoute const& const& Envoy::MessageUtil::downcastAndValidate<envoy::extensions::filters::http::header_mutation::v3::HeaderMutationPerRoute const&>(google::protobuf::Message const&, Envoy::ProtobufMessage::ValidationVisitor&)
envoy::extensions::filters::http::header_mutation::v3::HeaderMutation const& const& Envoy::MessageUtil::downcastAndValidate<envoy::extensions::filters::http::header_mutation::v3::HeaderMutation const&>(google::protobuf::Message const&, Envoy::ProtobufMessage::ValidationVisitor&)
Line
Count
Source
346
170
                      ProtobufMessage::ValidationVisitor& validation_visitor) {
347
170
    const auto& typed_config = dynamic_cast<MessageType>(config);
348
170
    validate(typed_config, validation_visitor);
349
170
    return typed_config;
350
170
  }
Unexecuted instantiation: envoy::extensions::filters::listener::local_ratelimit::v3::LocalRateLimit const& const& Envoy::MessageUtil::downcastAndValidate<envoy::extensions::filters::listener::local_ratelimit::v3::LocalRateLimit const&>(google::protobuf::Message const&, Envoy::ProtobufMessage::ValidationVisitor&)
Unexecuted instantiation: envoy::extensions::filters::listener::original_src::v3::OriginalSrc const& const& Envoy::MessageUtil::downcastAndValidate<envoy::extensions::filters::listener::original_src::v3::OriginalSrc const&>(google::protobuf::Message const&, Envoy::ProtobufMessage::ValidationVisitor&)
envoy::extensions::filters::listener::proxy_protocol::v3::ProxyProtocol const& const& Envoy::MessageUtil::downcastAndValidate<envoy::extensions::filters::listener::proxy_protocol::v3::ProxyProtocol const&>(google::protobuf::Message const&, Envoy::ProtobufMessage::ValidationVisitor&)
Line
Count
Source
346
89
                      ProtobufMessage::ValidationVisitor& validation_visitor) {
347
89
    const auto& typed_config = dynamic_cast<MessageType>(config);
348
89
    validate(typed_config, validation_visitor);
349
89
    return typed_config;
350
89
  }
Unexecuted instantiation: envoy::extensions::filters::listener::tls_inspector::v3::TlsInspector const& const& Envoy::MessageUtil::downcastAndValidate<envoy::extensions::filters::listener::tls_inspector::v3::TlsInspector const&>(google::protobuf::Message const&, Envoy::ProtobufMessage::ValidationVisitor&)
Unexecuted instantiation: envoy::extensions::filters::network::connection_limit::v3::ConnectionLimit const& const& Envoy::MessageUtil::downcastAndValidate<envoy::extensions::filters::network::connection_limit::v3::ConnectionLimit const&>(google::protobuf::Message const&, Envoy::ProtobufMessage::ValidationVisitor&)
Unexecuted instantiation: envoy::extensions::filters::network::direct_response::v3::Config const& const& Envoy::MessageUtil::downcastAndValidate<envoy::extensions::filters::network::direct_response::v3::Config const&>(google::protobuf::Message const&, Envoy::ProtobufMessage::ValidationVisitor&)
Unexecuted instantiation: envoy::extensions::filters::network::dubbo_proxy::v3::DubboProxy const& const& Envoy::MessageUtil::downcastAndValidate<envoy::extensions::filters::network::dubbo_proxy::v3::DubboProxy const&>(google::protobuf::Message const&, Envoy::ProtobufMessage::ValidationVisitor&)
Unexecuted instantiation: envoy::extensions::filters::network::dubbo_proxy::router::v3::Router const& const& Envoy::MessageUtil::downcastAndValidate<envoy::extensions::filters::network::dubbo_proxy::router::v3::Router const&>(google::protobuf::Message const&, Envoy::ProtobufMessage::ValidationVisitor&)
Unexecuted instantiation: envoy::extensions::filters::network::echo::v3::Echo const& const& Envoy::MessageUtil::downcastAndValidate<envoy::extensions::filters::network::echo::v3::Echo const&>(google::protobuf::Message const&, Envoy::ProtobufMessage::ValidationVisitor&)
envoy::extensions::filters::network::mongo_proxy::v3::MongoProxy const& const& Envoy::MessageUtil::downcastAndValidate<envoy::extensions::filters::network::mongo_proxy::v3::MongoProxy const&>(google::protobuf::Message const&, Envoy::ProtobufMessage::ValidationVisitor&)
Line
Count
Source
346
2.69k
                      ProtobufMessage::ValidationVisitor& validation_visitor) {
347
2.69k
    const auto& typed_config = dynamic_cast<MessageType>(config);
348
2.69k
    validate(typed_config, validation_visitor);
349
2.69k
    return typed_config;
350
2.69k
  }
Unexecuted instantiation: envoy::extensions::filters::network::tcp_proxy::v3::TcpProxy const& const& Envoy::MessageUtil::downcastAndValidate<envoy::extensions::filters::network::tcp_proxy::v3::TcpProxy const&>(google::protobuf::Message const&, Envoy::ProtobufMessage::ValidationVisitor&)
Unexecuted instantiation: envoy::extensions::filters::network::thrift_proxy::router::v3::Router const& const& Envoy::MessageUtil::downcastAndValidate<envoy::extensions::filters::network::thrift_proxy::router::v3::Router const&>(google::protobuf::Message const&, Envoy::ProtobufMessage::ValidationVisitor&)
Unexecuted instantiation: envoy::extensions::filters::network::set_filter_state::v3::Config const& const& Envoy::MessageUtil::downcastAndValidate<envoy::extensions::filters::network::set_filter_state::v3::Config const&>(google::protobuf::Message const&, Envoy::ProtobufMessage::ValidationVisitor&)
Unexecuted instantiation: envoy::extensions::filters::network::sni_dynamic_forward_proxy::v3::FilterConfig const& const& Envoy::MessageUtil::downcastAndValidate<envoy::extensions::filters::network::sni_dynamic_forward_proxy::v3::FilterConfig const&>(google::protobuf::Message const&, Envoy::ProtobufMessage::ValidationVisitor&)
Unexecuted instantiation: envoy::extensions::filters::network::wasm::v3::Wasm const& const& Envoy::MessageUtil::downcastAndValidate<envoy::extensions::filters::network::wasm::v3::Wasm const&>(google::protobuf::Message const&, Envoy::ProtobufMessage::ValidationVisitor&)
envoy::extensions::filters::network::zookeeper_proxy::v3::ZooKeeperProxy const& const& Envoy::MessageUtil::downcastAndValidate<envoy::extensions::filters::network::zookeeper_proxy::v3::ZooKeeperProxy const&>(google::protobuf::Message const&, Envoy::ProtobufMessage::ValidationVisitor&)
Line
Count
Source
346
638
                      ProtobufMessage::ValidationVisitor& validation_visitor) {
347
638
    const auto& typed_config = dynamic_cast<MessageType>(config);
348
638
    validate(typed_config, validation_visitor);
349
638
    return typed_config;
350
638
  }
Unexecuted instantiation: envoy::extensions::filters::udp::dns_filter::v3::DnsFilterConfig const& const& Envoy::MessageUtil::downcastAndValidate<envoy::extensions::filters::udp::dns_filter::v3::DnsFilterConfig const&>(google::protobuf::Message const&, Envoy::ProtobufMessage::ValidationVisitor&)
Unexecuted instantiation: envoy::extensions::filters::udp::udp_proxy::v3::UdpProxyConfig const& const& Envoy::MessageUtil::downcastAndValidate<envoy::extensions::filters::udp::udp_proxy::v3::UdpProxyConfig const&>(google::protobuf::Message const&, Envoy::ProtobufMessage::ValidationVisitor&)
Unexecuted instantiation: envoy::extensions::filters::udp::udp_proxy::v3::Route const& const& Envoy::MessageUtil::downcastAndValidate<envoy::extensions::filters::udp::udp_proxy::v3::Route const&>(google::protobuf::Message const&, Envoy::ProtobufMessage::ValidationVisitor&)
Unexecuted instantiation: envoy::extensions::filters::udp::udp_proxy::session::http_capsule::v3::FilterConfig const& const& Envoy::MessageUtil::downcastAndValidate<envoy::extensions::filters::udp::udp_proxy::session::http_capsule::v3::FilterConfig const&>(google::protobuf::Message const&, Envoy::ProtobufMessage::ValidationVisitor&)
Unexecuted instantiation: envoy::extensions::filters::udp::udp_proxy::session::dynamic_forward_proxy::v3::FilterConfig const& const& Envoy::MessageUtil::downcastAndValidate<envoy::extensions::filters::udp::udp_proxy::session::dynamic_forward_proxy::v3::FilterConfig const&>(google::protobuf::Message const&, Envoy::ProtobufMessage::ValidationVisitor&)
Unexecuted instantiation: envoy::extensions::resource_monitors::fixed_heap::v3::FixedHeapConfig const& const& Envoy::MessageUtil::downcastAndValidate<envoy::extensions::resource_monitors::fixed_heap::v3::FixedHeapConfig const&>(google::protobuf::Message const&, Envoy::ProtobufMessage::ValidationVisitor&)
Unexecuted instantiation: envoy::extensions::resource_monitors::injected_resource::v3::InjectedResourceConfig const& const& Envoy::MessageUtil::downcastAndValidate<envoy::extensions::resource_monitors::injected_resource::v3::InjectedResourceConfig const&>(google::protobuf::Message const&, Envoy::ProtobufMessage::ValidationVisitor&)
Unexecuted instantiation: envoy::extensions::resource_monitors::downstream_connections::v3::DownstreamConnectionsConfig const& const& Envoy::MessageUtil::downcastAndValidate<envoy::extensions::resource_monitors::downstream_connections::v3::DownstreamConnectionsConfig const&>(google::protobuf::Message const&, Envoy::ProtobufMessage::ValidationVisitor&)
Unexecuted instantiation: envoy::config::metrics::v3::DogStatsdSink const& const& Envoy::MessageUtil::downcastAndValidate<envoy::config::metrics::v3::DogStatsdSink const&>(google::protobuf::Message const&, Envoy::ProtobufMessage::ValidationVisitor&)
Unexecuted instantiation: envoy::extensions::stat_sinks::graphite_statsd::v3::GraphiteStatsdSink const& const& Envoy::MessageUtil::downcastAndValidate<envoy::extensions::stat_sinks::graphite_statsd::v3::GraphiteStatsdSink const&>(google::protobuf::Message const&, Envoy::ProtobufMessage::ValidationVisitor&)
Unexecuted instantiation: envoy::config::metrics::v3::HystrixSink const& const& Envoy::MessageUtil::downcastAndValidate<envoy::config::metrics::v3::HystrixSink const&>(google::protobuf::Message const&, Envoy::ProtobufMessage::ValidationVisitor&)
Unexecuted instantiation: envoy::config::metrics::v3::MetricsServiceConfig const& const& Envoy::MessageUtil::downcastAndValidate<envoy::config::metrics::v3::MetricsServiceConfig const&>(google::protobuf::Message const&, Envoy::ProtobufMessage::ValidationVisitor&)
Unexecuted instantiation: envoy::extensions::stat_sinks::open_telemetry::v3::SinkConfig const& const& Envoy::MessageUtil::downcastAndValidate<envoy::extensions::stat_sinks::open_telemetry::v3::SinkConfig const&>(google::protobuf::Message const&, Envoy::ProtobufMessage::ValidationVisitor&)
Unexecuted instantiation: envoy::config::metrics::v3::StatsdSink const& const& Envoy::MessageUtil::downcastAndValidate<envoy::config::metrics::v3::StatsdSink const&>(google::protobuf::Message const&, Envoy::ProtobufMessage::ValidationVisitor&)
Unexecuted instantiation: envoy::extensions::stat_sinks::wasm::v3::Wasm const& const& Envoy::MessageUtil::downcastAndValidate<envoy::extensions::stat_sinks::wasm::v3::Wasm const&>(google::protobuf::Message const&, Envoy::ProtobufMessage::ValidationVisitor&)
Unexecuted instantiation: envoy::extensions::filters::network::thrift_proxy::filters::header_to_metadata::v3::HeaderToMetadata const& const& Envoy::MessageUtil::downcastAndValidate<envoy::extensions::filters::network::thrift_proxy::filters::header_to_metadata::v3::HeaderToMetadata const&>(google::protobuf::Message const&, Envoy::ProtobufMessage::ValidationVisitor&)
Unexecuted instantiation: envoy::extensions::filters::network::thrift_proxy::filters::payload_to_metadata::v3::PayloadToMetadata const& const& Envoy::MessageUtil::downcastAndValidate<envoy::extensions::filters::network::thrift_proxy::filters::payload_to_metadata::v3::PayloadToMetadata const&>(google::protobuf::Message const&, Envoy::ProtobufMessage::ValidationVisitor&)
Unexecuted instantiation: envoy::extensions::filters::network::thrift_proxy::filters::ratelimit::v3::RateLimit const& const& Envoy::MessageUtil::downcastAndValidate<envoy::extensions::filters::network::thrift_proxy::filters::ratelimit::v3::RateLimit const&>(google::protobuf::Message const&, Envoy::ProtobufMessage::ValidationVisitor&)
Unexecuted instantiation: envoy::config::trace::v3::DynamicOtConfig const& const& Envoy::MessageUtil::downcastAndValidate<envoy::config::trace::v3::DynamicOtConfig const&>(google::protobuf::Message const&, Envoy::ProtobufMessage::ValidationVisitor&)
Unexecuted instantiation: envoy::config::trace::v3::DatadogConfig const& const& Envoy::MessageUtil::downcastAndValidate<envoy::config::trace::v3::DatadogConfig const&>(google::protobuf::Message const&, Envoy::ProtobufMessage::ValidationVisitor&)
Unexecuted instantiation: envoy::config::trace::v3::ZipkinConfig const& const& Envoy::MessageUtil::downcastAndValidate<envoy::config::trace::v3::ZipkinConfig const&>(google::protobuf::Message const&, Envoy::ProtobufMessage::ValidationVisitor&)
Unexecuted instantiation: envoy::config::trace::v3::OpenCensusConfig const& const& Envoy::MessageUtil::downcastAndValidate<envoy::config::trace::v3::OpenCensusConfig const&>(google::protobuf::Message const&, Envoy::ProtobufMessage::ValidationVisitor&)
Unexecuted instantiation: envoy::config::trace::v3::XRayConfig const& const& Envoy::MessageUtil::downcastAndValidate<envoy::config::trace::v3::XRayConfig const&>(google::protobuf::Message const&, Envoy::ProtobufMessage::ValidationVisitor&)
Unexecuted instantiation: envoy::config::trace::v3::SkyWalkingConfig const& const& Envoy::MessageUtil::downcastAndValidate<envoy::config::trace::v3::SkyWalkingConfig const&>(google::protobuf::Message const&, Envoy::ProtobufMessage::ValidationVisitor&)
Unexecuted instantiation: envoy::config::trace::v3::OpenTelemetryConfig const& const& Envoy::MessageUtil::downcastAndValidate<envoy::config::trace::v3::OpenTelemetryConfig const&>(google::protobuf::Message const&, Envoy::ProtobufMessage::ValidationVisitor&)
Unexecuted instantiation: envoy::extensions::tracers::opentelemetry::resource_detectors::v3::EnvironmentResourceDetectorConfig const& const& Envoy::MessageUtil::downcastAndValidate<envoy::extensions::tracers::opentelemetry::resource_detectors::v3::EnvironmentResourceDetectorConfig const&>(google::protobuf::Message const&, Envoy::ProtobufMessage::ValidationVisitor&)
Unexecuted instantiation: envoy::extensions::transport_sockets::alts::v3::Alts const& const& Envoy::MessageUtil::downcastAndValidate<envoy::extensions::transport_sockets::alts::v3::Alts const&>(google::protobuf::Message const&, Envoy::ProtobufMessage::ValidationVisitor&)
Unexecuted instantiation: envoy::extensions::transport_sockets::http_11_proxy::v3::Http11ProxyUpstreamTransport const& const& Envoy::MessageUtil::downcastAndValidate<envoy::extensions::transport_sockets::http_11_proxy::v3::Http11ProxyUpstreamTransport const&>(google::protobuf::Message const&, Envoy::ProtobufMessage::ValidationVisitor&)
Unexecuted instantiation: envoy::extensions::transport_sockets::proxy_protocol::v3::ProxyProtocolUpstreamTransport const& const& Envoy::MessageUtil::downcastAndValidate<envoy::extensions::transport_sockets::proxy_protocol::v3::ProxyProtocolUpstreamTransport const&>(google::protobuf::Message const&, Envoy::ProtobufMessage::ValidationVisitor&)
Unexecuted instantiation: envoy::extensions::transport_sockets::tap::v3::Tap const& const& Envoy::MessageUtil::downcastAndValidate<envoy::extensions::transport_sockets::tap::v3::Tap const&>(google::protobuf::Message const&, Envoy::ProtobufMessage::ValidationVisitor&)
Unexecuted instantiation: envoy::extensions::transport_sockets::starttls::v3::StartTlsConfig const& const& Envoy::MessageUtil::downcastAndValidate<envoy::extensions::transport_sockets::starttls::v3::StartTlsConfig const&>(google::protobuf::Message const&, Envoy::ProtobufMessage::ValidationVisitor&)
Unexecuted instantiation: envoy::extensions::transport_sockets::starttls::v3::UpstreamStartTlsConfig const& const& Envoy::MessageUtil::downcastAndValidate<envoy::extensions::transport_sockets::starttls::v3::UpstreamStartTlsConfig const&>(google::protobuf::Message const&, Envoy::ProtobufMessage::ValidationVisitor&)
Unexecuted instantiation: envoy::extensions::transport_sockets::tcp_stats::v3::Config const& const& Envoy::MessageUtil::downcastAndValidate<envoy::extensions::transport_sockets::tcp_stats::v3::Config const&>(google::protobuf::Message const&, Envoy::ProtobufMessage::ValidationVisitor&)
Unexecuted instantiation: envoy::extensions::transport_sockets::internal_upstream::v3::InternalUpstreamTransport const& const& Envoy::MessageUtil::downcastAndValidate<envoy::extensions::transport_sockets::internal_upstream::v3::InternalUpstreamTransport const&>(google::protobuf::Message const&, Envoy::ProtobufMessage::ValidationVisitor&)
Unexecuted instantiation: envoy::extensions::retry::host::omit_host_metadata::v3::OmitHostMetadataConfig const& const& Envoy::MessageUtil::downcastAndValidate<envoy::extensions::retry::host::omit_host_metadata::v3::OmitHostMetadataConfig const&>(google::protobuf::Message const&, Envoy::ProtobufMessage::ValidationVisitor&)
Unexecuted instantiation: envoy::extensions::retry::priority::previous_priorities::v3::PreviousPrioritiesConfig const& const& Envoy::MessageUtil::downcastAndValidate<envoy::extensions::retry::priority::previous_priorities::v3::PreviousPrioritiesConfig const&>(google::protobuf::Message const&, Envoy::ProtobufMessage::ValidationVisitor&)
Unexecuted instantiation: envoy::extensions::internal_redirect::allow_listed_routes::v3::AllowListedRoutesConfig const& const& Envoy::MessageUtil::downcastAndValidate<envoy::extensions::internal_redirect::allow_listed_routes::v3::AllowListedRoutesConfig const&>(google::protobuf::Message const&, Envoy::ProtobufMessage::ValidationVisitor&)
Unexecuted instantiation: envoy::extensions::rate_limit_descriptors::expr::v3::Descriptor const& const& Envoy::MessageUtil::downcastAndValidate<envoy::extensions::rate_limit_descriptors::expr::v3::Descriptor const&>(google::protobuf::Message const&, Envoy::ProtobufMessage::ValidationVisitor&)
Unexecuted instantiation: envoy::extensions::bootstrap::internal_listener::v3::InternalListener const& const& Envoy::MessageUtil::downcastAndValidate<envoy::extensions::bootstrap::internal_listener::v3::InternalListener const&>(google::protobuf::Message const&, Envoy::ProtobufMessage::ValidationVisitor&)
Unexecuted instantiation: envoy::extensions::http::header_formatters::preserve_case::v3::PreserveCaseFormatterConfig const& const& Envoy::MessageUtil::downcastAndValidate<envoy::extensions::http::header_formatters::preserve_case::v3::PreserveCaseFormatterConfig const&>(google::protobuf::Message const&, Envoy::ProtobufMessage::ValidationVisitor&)
Unexecuted instantiation: envoy::extensions::http::stateful_session::cookie::v3::CookieBasedSessionState const& const& Envoy::MessageUtil::downcastAndValidate<envoy::extensions::http::stateful_session::cookie::v3::CookieBasedSessionState const&>(google::protobuf::Message const&, Envoy::ProtobufMessage::ValidationVisitor&)
Unexecuted instantiation: envoy::extensions::http::stateful_session::header::v3::HeaderBasedSessionState const& const& Envoy::MessageUtil::downcastAndValidate<envoy::extensions::http::stateful_session::header::v3::HeaderBasedSessionState const&>(google::protobuf::Message const&, Envoy::ProtobufMessage::ValidationVisitor&)
Unexecuted instantiation: envoy::extensions::http::custom_response::redirect_policy::v3::RedirectPolicy const& const& Envoy::MessageUtil::downcastAndValidate<envoy::extensions::http::custom_response::redirect_policy::v3::RedirectPolicy const&>(google::protobuf::Message const&, Envoy::ProtobufMessage::ValidationVisitor&)
Unexecuted instantiation: envoy::extensions::http::custom_response::local_response_policy::v3::LocalResponsePolicy const& const& Envoy::MessageUtil::downcastAndValidate<envoy::extensions::http::custom_response::local_response_policy::v3::LocalResponsePolicy const&>(google::protobuf::Message const&, Envoy::ProtobufMessage::ValidationVisitor&)
Unexecuted instantiation: envoy::extensions::quic::server_preferred_address::v3::FixedServerPreferredAddressConfig const& const& Envoy::MessageUtil::downcastAndValidate<envoy::extensions::quic::server_preferred_address::v3::FixedServerPreferredAddressConfig const&>(google::protobuf::Message const&, Envoy::ProtobufMessage::ValidationVisitor&)
Unexecuted instantiation: envoy::config::common::key_value::v3::KeyValueStoreConfig const& const& Envoy::MessageUtil::downcastAndValidate<envoy::config::common::key_value::v3::KeyValueStoreConfig const&>(google::protobuf::Message const&, Envoy::ProtobufMessage::ValidationVisitor&)
Unexecuted instantiation: envoy::config::core::v3::TypedExtensionConfig const& const& Envoy::MessageUtil::downcastAndValidate<envoy::config::core::v3::TypedExtensionConfig const&>(google::protobuf::Message const&, Envoy::ProtobufMessage::ValidationVisitor&)
Unexecuted instantiation: xds::type::matcher::v3::IPMatcher const& const& Envoy::MessageUtil::downcastAndValidate<xds::type::matcher::v3::IPMatcher const&>(google::protobuf::Message const&, Envoy::ProtobufMessage::ValidationVisitor&)
Unexecuted instantiation: envoy::extensions::geoip_providers::maxmind::v3::MaxMindConfig const& const& Envoy::MessageUtil::downcastAndValidate<envoy::extensions::geoip_providers::maxmind::v3::MaxMindConfig const&>(google::protobuf::Message const&, Envoy::ProtobufMessage::ValidationVisitor&)
351
352
  /**
353
   * Convert from a typed message into a google.protobuf.Any. This should be used
354
   * instead of the inbuilt PackTo, as PackTo is not available with lite protos.
355
   *
356
   * @param any_message destination google.protobuf.Any.
357
   * @param message source to pack from.
358
   *
359
   * @throw EnvoyException if the message does not unpack.
360
   */
361
  static void packFrom(ProtobufWkt::Any& any_message, const Protobuf::Message& message);
362
363
  /**
364
   * Convert from google.protobuf.Any to a typed message. This should be used
365
   * instead of the inbuilt UnpackTo as it performs validation of results.
366
   *
367
   * @param any_message source google.protobuf.Any message.
368
   * @param message destination to unpack to.
369
   *
370
   * @throw EnvoyException if the message does not unpack.
371
   */
372
  static void unpackTo(const ProtobufWkt::Any& any_message, Protobuf::Message& message);
373
374
  /**
375
   * Convert from google.protobuf.Any to a typed message. This should be used
376
   * instead of the inbuilt UnpackTo as it performs validation of results.
377
   *
378
   * @param any_message source google.protobuf.Any message.
379
   * @param message destination to unpack to.
380
   *
381
   * @return absl::Status
382
   */
383
  static absl::Status unpackToNoThrow(const ProtobufWkt::Any& any_message,
384
                                      Protobuf::Message& message);
385
386
  /**
387
   * Convert from google.protobuf.Any to bytes as std::string
388
   * @param any source google.protobuf.Any message.
389
   *
390
   * @return std::string consists of bytes in the input message.
391
   */
392
247
  static std::string anyToBytes(const ProtobufWkt::Any& any) {
393
247
    if (any.Is<ProtobufWkt::StringValue>()) {
394
0
      ProtobufWkt::StringValue s;
395
0
      MessageUtil::unpackTo(any, s);
396
0
      return s.value();
397
0
    }
398
247
    if (any.Is<ProtobufWkt::BytesValue>()) {
399
0
      Protobuf::BytesValue b;
400
0
      MessageUtil::unpackTo(any, b);
401
0
      return b.value();
402
0
    }
403
247
    return any.value();
404
247
  };
405
406
  /**
407
   * Convert from google.protobuf.Any to a typed message.
408
   * @param message source google.protobuf.Any message.
409
   *
410
   * @return MessageType the typed message inside the Any.
411
   */
412
  template <class MessageType>
413
11.0k
  static inline void anyConvert(const ProtobufWkt::Any& message, MessageType& typed_message) {
414
11.0k
    unpackTo(message, typed_message);
415
11.0k
  };
void Envoy::MessageUtil::anyConvert<envoy::config::cluster::v3::Cluster>(google::protobuf::Any const&, envoy::config::cluster::v3::Cluster&)
Line
Count
Source
413
14
  static inline void anyConvert(const ProtobufWkt::Any& message, MessageType& typed_message) {
414
14
    unpackTo(message, typed_message);
415
14
  };
Unexecuted instantiation: void Envoy::MessageUtil::anyConvert<envoy::extensions::transport_sockets::tls::v3::Secret>(google::protobuf::Any const&, envoy::extensions::transport_sockets::tls::v3::Secret&)
Unexecuted instantiation: void Envoy::MessageUtil::anyConvert<envoy::config::core::v3::TypedExtensionConfig>(google::protobuf::Any const&, envoy::config::core::v3::TypedExtensionConfig&)
Unexecuted instantiation: void Envoy::MessageUtil::anyConvert<envoy::config::route::v3::ScopedRouteConfiguration>(google::protobuf::Any const&, envoy::config::route::v3::ScopedRouteConfiguration&)
void Envoy::MessageUtil::anyConvert<envoy::config::route::v3::RouteConfiguration>(google::protobuf::Any const&, envoy::config::route::v3::RouteConfiguration&)
Line
Count
Source
413
80
  static inline void anyConvert(const ProtobufWkt::Any& message, MessageType& typed_message) {
414
80
    unpackTo(message, typed_message);
415
80
  };
Unexecuted instantiation: void Envoy::MessageUtil::anyConvert<envoy::config::route::v3::VirtualHost>(google::protobuf::Any const&, envoy::config::route::v3::VirtualHost&)
Unexecuted instantiation: void Envoy::MessageUtil::anyConvert<envoy::service::runtime::v3::Runtime>(google::protobuf::Any const&, envoy::service::runtime::v3::Runtime&)
void Envoy::MessageUtil::anyConvert<envoy::config::endpoint::v3::ClusterLoadAssignment>(google::protobuf::Any const&, envoy::config::endpoint::v3::ClusterLoadAssignment&)
Line
Count
Source
413
14
  static inline void anyConvert(const ProtobufWkt::Any& message, MessageType& typed_message) {
414
14
    unpackTo(message, typed_message);
415
14
  };
Unexecuted instantiation: void Envoy::MessageUtil::anyConvert<envoy::config::endpoint::v3::LbEndpoint>(google::protobuf::Any const&, envoy::config::endpoint::v3::LbEndpoint&)
Unexecuted instantiation: void Envoy::MessageUtil::anyConvert<envoy::config::common::key_value::v3::KeyValueStoreConfig>(google::protobuf::Any const&, envoy::config::common::key_value::v3::KeyValueStoreConfig&)
Unexecuted instantiation: void Envoy::MessageUtil::anyConvert<envoy::config::overload::v3::ScaleTimersOverloadActionConfig>(google::protobuf::Any const&, envoy::config::overload::v3::ScaleTimersOverloadActionConfig&)
void Envoy::MessageUtil::anyConvert<envoy::config::listener::v3::Listener>(google::protobuf::Any const&, envoy::config::listener::v3::Listener&)
Line
Count
Source
413
2.80k
  static inline void anyConvert(const ProtobufWkt::Any& message, MessageType& typed_message) {
414
2.80k
    unpackTo(message, typed_message);
415
2.80k
  };
Unexecuted instantiation: void Envoy::MessageUtil::anyConvert<envoy::extensions::filters::network::http_connection_manager::v3::EnvoyMobileHttpConnectionManager>(google::protobuf::Any const&, envoy::extensions::filters::network::http_connection_manager::v3::EnvoyMobileHttpConnectionManager&)
void Envoy::MessageUtil::anyConvert<envoy::extensions::filters::network::http_connection_manager::v3::HttpConnectionManager>(google::protobuf::Any const&, envoy::extensions::filters::network::http_connection_manager::v3::HttpConnectionManager&)
Line
Count
Source
413
6.96k
  static inline void anyConvert(const ProtobufWkt::Any& message, MessageType& typed_message) {
414
6.96k
    unpackTo(message, typed_message);
415
6.96k
  };
void Envoy::MessageUtil::anyConvert<envoy::extensions::upstreams::http::v3::HttpProtocolOptions>(google::protobuf::Any const&, envoy::extensions::upstreams::http::v3::HttpProtocolOptions&)
Line
Count
Source
413
1.13k
  static inline void anyConvert(const ProtobufWkt::Any& message, MessageType& typed_message) {
414
1.13k
    unpackTo(message, typed_message);
415
1.13k
  };
Unexecuted instantiation: void Envoy::MessageUtil::anyConvert<envoy::extensions::config::validators::minimum_clusters::v3::MinimumClustersValidator>(google::protobuf::Any const&, envoy::extensions::config::validators::minimum_clusters::v3::MinimumClustersValidator&)
Unexecuted instantiation: void Envoy::MessageUtil::anyConvert<envoy::extensions::health_check::event_sinks::file::v3::HealthCheckEventFileSink>(google::protobuf::Any const&, envoy::extensions::health_check::event_sinks::file::v3::HealthCheckEventFileSink&)
Unexecuted instantiation: void Envoy::MessageUtil::anyConvert<envoy::extensions::filters::network::dubbo_proxy::v3::MultipleRouteConfiguration>(google::protobuf::Any const&, envoy::extensions::filters::network::dubbo_proxy::v3::MultipleRouteConfiguration&)
Unexecuted instantiation: void Envoy::MessageUtil::anyConvert<envoy::extensions::filters::network::thrift_proxy::v3::RouteConfiguration>(google::protobuf::Any const&, envoy::extensions::filters::network::thrift_proxy::v3::RouteConfiguration&)
Unexecuted instantiation: void Envoy::MessageUtil::anyConvert<envoy::extensions::key_value::file_based::v3::FileBasedKeyValueStoreConfig>(google::protobuf::Any const&, envoy::extensions::key_value::file_based::v3::FileBasedKeyValueStoreConfig&)
Unexecuted instantiation: void Envoy::MessageUtil::anyConvert<envoy::extensions::rbac::matchers::upstream_ip_port::v3::UpstreamIpPortMatcher>(google::protobuf::Any const&, envoy::extensions::rbac::matchers::upstream_ip_port::v3::UpstreamIpPortMatcher&)
416
417
  template <class MessageType>
418
8.09k
  static inline MessageType anyConvert(const ProtobufWkt::Any& message) {
419
8.09k
    MessageType typed_message;
420
8.09k
    anyConvert(message, typed_message);
421
8.09k
    return typed_message;
422
8.09k
  };
envoy::extensions::upstreams::http::v3::HttpProtocolOptions Envoy::MessageUtil::anyConvert<envoy::extensions::upstreams::http::v3::HttpProtocolOptions>(google::protobuf::Any const&)
Line
Count
Source
418
1.13k
  static inline MessageType anyConvert(const ProtobufWkt::Any& message) {
419
1.13k
    MessageType typed_message;
420
1.13k
    anyConvert(message, typed_message);
421
1.13k
    return typed_message;
422
1.13k
  };
envoy::extensions::filters::network::http_connection_manager::v3::HttpConnectionManager Envoy::MessageUtil::anyConvert<envoy::extensions::filters::network::http_connection_manager::v3::HttpConnectionManager>(google::protobuf::Any const&)
Line
Count
Source
418
6.95k
  static inline MessageType anyConvert(const ProtobufWkt::Any& message) {
419
6.95k
    MessageType typed_message;
420
6.95k
    anyConvert(message, typed_message);
421
6.95k
    return typed_message;
422
6.95k
  };
Unexecuted instantiation: envoy::extensions::rbac::matchers::upstream_ip_port::v3::UpstreamIpPortMatcher Envoy::MessageUtil::anyConvert<envoy::extensions::rbac::matchers::upstream_ip_port::v3::UpstreamIpPortMatcher>(google::protobuf::Any const&)
423
424
  /**
425
   * Convert and validate from google.protobuf.Any to a typed message.
426
   * @param message source google.protobuf.Any message.
427
   *
428
   * @return MessageType the typed message inside the Any.
429
   * @throw ProtoValidationException if the message does not satisfy its type constraints.
430
   */
431
  template <class MessageType>
432
  static inline void anyConvertAndValidate(const ProtobufWkt::Any& message,
433
                                           MessageType& typed_message,
434
2.92k
                                           ProtobufMessage::ValidationVisitor& validation_visitor) {
435
2.92k
    anyConvert<MessageType>(message, typed_message);
436
2.92k
    validate(typed_message, validation_visitor);
437
2.92k
  };
void Envoy::MessageUtil::anyConvertAndValidate<envoy::config::cluster::v3::Cluster>(google::protobuf::Any const&, envoy::config::cluster::v3::Cluster&, Envoy::ProtobufMessage::ValidationVisitor&)
Line
Count
Source
434
14
                                           ProtobufMessage::ValidationVisitor& validation_visitor) {
435
14
    anyConvert<MessageType>(message, typed_message);
436
14
    validate(typed_message, validation_visitor);
437
14
  };
Unexecuted instantiation: void Envoy::MessageUtil::anyConvertAndValidate<envoy::extensions::transport_sockets::tls::v3::Secret>(google::protobuf::Any const&, envoy::extensions::transport_sockets::tls::v3::Secret&, Envoy::ProtobufMessage::ValidationVisitor&)
Unexecuted instantiation: void Envoy::MessageUtil::anyConvertAndValidate<envoy::config::core::v3::TypedExtensionConfig>(google::protobuf::Any const&, envoy::config::core::v3::TypedExtensionConfig&, Envoy::ProtobufMessage::ValidationVisitor&)
Unexecuted instantiation: void Envoy::MessageUtil::anyConvertAndValidate<envoy::config::route::v3::ScopedRouteConfiguration>(google::protobuf::Any const&, envoy::config::route::v3::ScopedRouteConfiguration&, Envoy::ProtobufMessage::ValidationVisitor&)
void Envoy::MessageUtil::anyConvertAndValidate<envoy::config::route::v3::RouteConfiguration>(google::protobuf::Any const&, envoy::config::route::v3::RouteConfiguration&, Envoy::ProtobufMessage::ValidationVisitor&)
Line
Count
Source
434
80
                                           ProtobufMessage::ValidationVisitor& validation_visitor) {
435
80
    anyConvert<MessageType>(message, typed_message);
436
80
    validate(typed_message, validation_visitor);
437
80
  };
Unexecuted instantiation: void Envoy::MessageUtil::anyConvertAndValidate<envoy::config::route::v3::VirtualHost>(google::protobuf::Any const&, envoy::config::route::v3::VirtualHost&, Envoy::ProtobufMessage::ValidationVisitor&)
Unexecuted instantiation: void Envoy::MessageUtil::anyConvertAndValidate<envoy::service::runtime::v3::Runtime>(google::protobuf::Any const&, envoy::service::runtime::v3::Runtime&, Envoy::ProtobufMessage::ValidationVisitor&)
void Envoy::MessageUtil::anyConvertAndValidate<envoy::config::endpoint::v3::ClusterLoadAssignment>(google::protobuf::Any const&, envoy::config::endpoint::v3::ClusterLoadAssignment&, Envoy::ProtobufMessage::ValidationVisitor&)
Line
Count
Source
434
14
                                           ProtobufMessage::ValidationVisitor& validation_visitor) {
435
14
    anyConvert<MessageType>(message, typed_message);
436
14
    validate(typed_message, validation_visitor);
437
14
  };
Unexecuted instantiation: void Envoy::MessageUtil::anyConvertAndValidate<envoy::config::endpoint::v3::LbEndpoint>(google::protobuf::Any const&, envoy::config::endpoint::v3::LbEndpoint&, Envoy::ProtobufMessage::ValidationVisitor&)
Unexecuted instantiation: void Envoy::MessageUtil::anyConvertAndValidate<envoy::config::common::key_value::v3::KeyValueStoreConfig>(google::protobuf::Any const&, envoy::config::common::key_value::v3::KeyValueStoreConfig&, Envoy::ProtobufMessage::ValidationVisitor&)
Unexecuted instantiation: void Envoy::MessageUtil::anyConvertAndValidate<envoy::config::overload::v3::ScaleTimersOverloadActionConfig>(google::protobuf::Any const&, envoy::config::overload::v3::ScaleTimersOverloadActionConfig&, Envoy::ProtobufMessage::ValidationVisitor&)
void Envoy::MessageUtil::anyConvertAndValidate<envoy::config::listener::v3::Listener>(google::protobuf::Any const&, envoy::config::listener::v3::Listener&, Envoy::ProtobufMessage::ValidationVisitor&)
Line
Count
Source
434
2.80k
                                           ProtobufMessage::ValidationVisitor& validation_visitor) {
435
2.80k
    anyConvert<MessageType>(message, typed_message);
436
2.80k
    validate(typed_message, validation_visitor);
437
2.80k
  };
Unexecuted instantiation: void Envoy::MessageUtil::anyConvertAndValidate<envoy::extensions::filters::network::http_connection_manager::v3::EnvoyMobileHttpConnectionManager>(google::protobuf::Any const&, envoy::extensions::filters::network::http_connection_manager::v3::EnvoyMobileHttpConnectionManager&, Envoy::ProtobufMessage::ValidationVisitor&)
void Envoy::MessageUtil::anyConvertAndValidate<envoy::extensions::filters::network::http_connection_manager::v3::HttpConnectionManager>(google::protobuf::Any const&, envoy::extensions::filters::network::http_connection_manager::v3::HttpConnectionManager&, Envoy::ProtobufMessage::ValidationVisitor&)
Line
Count
Source
434
12
                                           ProtobufMessage::ValidationVisitor& validation_visitor) {
435
12
    anyConvert<MessageType>(message, typed_message);
436
12
    validate(typed_message, validation_visitor);
437
12
  };
Unexecuted instantiation: void Envoy::MessageUtil::anyConvertAndValidate<envoy::extensions::config::validators::minimum_clusters::v3::MinimumClustersValidator>(google::protobuf::Any const&, envoy::extensions::config::validators::minimum_clusters::v3::MinimumClustersValidator&, Envoy::ProtobufMessage::ValidationVisitor&)
Unexecuted instantiation: void Envoy::MessageUtil::anyConvertAndValidate<envoy::extensions::health_check::event_sinks::file::v3::HealthCheckEventFileSink>(google::protobuf::Any const&, envoy::extensions::health_check::event_sinks::file::v3::HealthCheckEventFileSink&, Envoy::ProtobufMessage::ValidationVisitor&)
Unexecuted instantiation: void Envoy::MessageUtil::anyConvertAndValidate<envoy::extensions::filters::network::dubbo_proxy::v3::MultipleRouteConfiguration>(google::protobuf::Any const&, envoy::extensions::filters::network::dubbo_proxy::v3::MultipleRouteConfiguration&, Envoy::ProtobufMessage::ValidationVisitor&)
Unexecuted instantiation: void Envoy::MessageUtil::anyConvertAndValidate<envoy::extensions::filters::network::thrift_proxy::v3::RouteConfiguration>(google::protobuf::Any const&, envoy::extensions::filters::network::thrift_proxy::v3::RouteConfiguration&, Envoy::ProtobufMessage::ValidationVisitor&)
Unexecuted instantiation: void Envoy::MessageUtil::anyConvertAndValidate<envoy::extensions::key_value::file_based::v3::FileBasedKeyValueStoreConfig>(google::protobuf::Any const&, envoy::extensions::key_value::file_based::v3::FileBasedKeyValueStoreConfig&, Envoy::ProtobufMessage::ValidationVisitor&)
438
439
  template <class MessageType>
440
  static inline MessageType
441
  anyConvertAndValidate(const ProtobufWkt::Any& message,
442
12
                        ProtobufMessage::ValidationVisitor& validation_visitor) {
443
12
    MessageType typed_message;
444
12
    anyConvertAndValidate<MessageType>(message, typed_message, validation_visitor);
445
12
    return typed_message;
446
12
  };
Unexecuted instantiation: envoy::config::overload::v3::ScaleTimersOverloadActionConfig Envoy::MessageUtil::anyConvertAndValidate<envoy::config::overload::v3::ScaleTimersOverloadActionConfig>(google::protobuf::Any const&, Envoy::ProtobufMessage::ValidationVisitor&)
Unexecuted instantiation: envoy::extensions::filters::network::http_connection_manager::v3::EnvoyMobileHttpConnectionManager Envoy::MessageUtil::anyConvertAndValidate<envoy::extensions::filters::network::http_connection_manager::v3::EnvoyMobileHttpConnectionManager>(google::protobuf::Any const&, Envoy::ProtobufMessage::ValidationVisitor&)
envoy::extensions::filters::network::http_connection_manager::v3::HttpConnectionManager Envoy::MessageUtil::anyConvertAndValidate<envoy::extensions::filters::network::http_connection_manager::v3::HttpConnectionManager>(google::protobuf::Any const&, Envoy::ProtobufMessage::ValidationVisitor&)
Line
Count
Source
442
12
                        ProtobufMessage::ValidationVisitor& validation_visitor) {
443
12
    MessageType typed_message;
444
12
    anyConvertAndValidate<MessageType>(message, typed_message, validation_visitor);
445
12
    return typed_message;
446
12
  };
Unexecuted instantiation: envoy::extensions::config::validators::minimum_clusters::v3::MinimumClustersValidator Envoy::MessageUtil::anyConvertAndValidate<envoy::extensions::config::validators::minimum_clusters::v3::MinimumClustersValidator>(google::protobuf::Any const&, Envoy::ProtobufMessage::ValidationVisitor&)
Unexecuted instantiation: envoy::extensions::health_check::event_sinks::file::v3::HealthCheckEventFileSink Envoy::MessageUtil::anyConvertAndValidate<envoy::extensions::health_check::event_sinks::file::v3::HealthCheckEventFileSink>(google::protobuf::Any const&, Envoy::ProtobufMessage::ValidationVisitor&)
Unexecuted instantiation: envoy::extensions::key_value::file_based::v3::FileBasedKeyValueStoreConfig Envoy::MessageUtil::anyConvertAndValidate<envoy::extensions::key_value::file_based::v3::FileBasedKeyValueStoreConfig>(google::protobuf::Any const&, Envoy::ProtobufMessage::ValidationVisitor&)
447
448
  /**
449
   * Obtain a string field from a protobuf message dynamically.
450
   *
451
   * @param message message to extract from.
452
   * @param field_name field name.
453
   *
454
   * @return std::string with field value.
455
   */
456
  static inline std::string getStringField(const Protobuf::Message& message,
457
3.44k
                                           const std::string& field_name) {
458
3.44k
    Protobuf::ReflectableMessage reflectable_message = createReflectableMessage(message);
459
3.44k
    const Protobuf::Descriptor* descriptor = reflectable_message->GetDescriptor();
460
3.44k
    const Protobuf::FieldDescriptor* name_field = descriptor->FindFieldByName(field_name);
461
3.44k
    const Protobuf::Reflection* reflection = reflectable_message->GetReflection();
462
3.44k
    return reflection->GetString(*reflectable_message, name_field);
463
0
    return name_field->name();
464
3.44k
  }
465
466
#ifdef ENVOY_ENABLE_YAML
467
  /**
468
   * Convert between two protobufs via a JSON round-trip. This is used to translate arbitrary
469
   * messages to/from google.protobuf.Struct.
470
   * TODO(htuch): Avoid round-tripping via JSON strings by doing whatever
471
   * Protobuf::util::MessageToJsonString does but generating a google.protobuf.Struct instead.
472
   * @param source message.
473
   * @param dest message.
474
   */
475
  static void jsonConvert(const Protobuf::Message& source, Protobuf::Message& dest);
476
  static void jsonConvert(const Protobuf::Message& source, ProtobufWkt::Struct& dest);
477
  static void jsonConvert(const ProtobufWkt::Struct& source,
478
                          ProtobufMessage::ValidationVisitor& validation_visitor,
479
                          Protobuf::Message& dest);
480
  // Convert a message to a ProtobufWkt::Value, return false upon failure.
481
  static bool jsonConvertValue(const Protobuf::Message& source, ProtobufWkt::Value& dest);
482
483
  /**
484
   * Extract YAML as string from a google.protobuf.Message.
485
   * @param message message of type type.googleapis.com/google.protobuf.Message.
486
   * @param block_print whether the returned JSON should be in block style rather than flow style.
487
   * @param always_print_primitive_fields whether to include primitive fields set to their default
488
   * values, e.g. an int32 set to 0 or a bool set to false.
489
   * @return std::string of formatted YAML object.
490
   */
491
  static std::string getYamlStringFromMessage(const Protobuf::Message& message,
492
                                              const bool block_print = true,
493
                                              const bool always_print_primitive_fields = false);
494
495
  /**
496
   * Extract JSON as string from a google.protobuf.Message. Returns an error if the message cannot
497
   * be represented as JSON, which can occur if it contains an Any proto with an unrecognized type
498
   * URL or invalid data, or if memory cannot be allocated.
499
   * @param message message of type type.googleapis.com/google.protobuf.Message.
500
   * @param pretty_print whether the returned JSON should be formatted.
501
   * @param always_print_primitive_fields whether to include primitive fields set to their default
502
   * values, e.g. an int32 set to 0 or a bool set to false.
503
   * @return ProtobufUtil::StatusOr<std::string> of formatted JSON object, or an error status if
504
   * conversion fails.
505
   */
506
  static absl::StatusOr<std::string>
507
  getJsonStringFromMessage(const Protobuf::Message& message, bool pretty_print = false,
508
                           bool always_print_primitive_fields = false);
509
510
  /**
511
   * Extract JSON as string from a google.protobuf.Message, returning some error string if the
512
   * conversion to JSON fails.
513
   * @param message message of type type.googleapis.com/google.protobuf.Message.
514
   * @param pretty_print whether the returned JSON should be formatted.
515
   * @param always_print_primitive_fields whether to include primitive fields set to their default
516
   * values, e.g. an int32 set to 0 or a bool set to false.
517
   * @return std::string of formatted JSON object, or an error message if conversion fails.
518
   */
519
  static std::string getJsonStringFromMessageOrError(const Protobuf::Message& message,
520
                                                     bool pretty_print = false,
521
                                                     bool always_print_primitive_fields = false);
522
#endif
523
524
  /**
525
   * Utility method to create a Struct containing the passed in key/value strings.
526
   *
527
   * @param key the key to use to set the value
528
   * @param value the string value to associate with the key
529
   */
530
  static ProtobufWkt::Struct keyValueStruct(const std::string& key, const std::string& value);
531
532
  /**
533
   * Utility method to create a Struct containing the passed in key/value map.
534
   *
535
   * @param fields the key/value pairs to initialize the Struct proto
536
   */
537
  static ProtobufWkt::Struct keyValueStruct(const std::map<std::string, std::string>& fields);
538
539
  /**
540
   * Utility method to print a human readable string of the code passed in.
541
   *
542
   * @param code the protobuf error code
543
   */
544
  static std::string codeEnumToString(absl::StatusCode code);
545
546
  /**
547
   * Modifies a message such that all sensitive data (that is, fields annotated as
548
   * `udpa.annotations.sensitive`) is redacted for display. String-typed fields annotated as
549
   * `sensitive` will be replaced with the string "[redacted]", bytes-typed fields will be replaced
550
   * with the bytes `5B72656461637465645D` (the ASCII / UTF-8 encoding of the string "[redacted]"),
551
   * primitive-typed fields (including enums) will be cleared, and message-typed fields will be
552
   * traversed recursively to redact their contents.
553
   *
554
   * LIMITATION: This works properly for strongly-typed messages, as well as for messages packed in
555
   * a `ProtobufWkt::Any` with a `type_url` corresponding to a proto that was compiled into the
556
   * Envoy binary. However it does not work for messages encoded as `ProtobufWkt::Struct`, since
557
   * structs are missing the "sensitive" annotations that this function expects. Similarly, it fails
558
   * for messages encoded as `ProtobufWkt::Any` with a `type_url` that isn't registered with the
559
   * binary. If you're working with struct-typed messages, including those that might be hiding
560
   * within strongly-typed messages, please reify them to strongly-typed messages using
561
   * `MessageUtil::jsonConvert()` before calling `MessageUtil::redact()`.
562
   *
563
   * @param message message to redact.
564
   */
565
  static void redact(Protobuf::Message& message);
566
567
  /**
568
   * Reinterpret a Protobuf message as another Protobuf message by converting to wire format and
569
   * back. This only works for messages that can be effectively duck typed this way, e.g. with a
570
   * subtype relationship modulo field name.
571
   *
572
   * @param src source message.
573
   * @param dst destination message.
574
   * @throw EnvoyException if a conversion error occurs.
575
   */
576
  static void wireCast(const Protobuf::Message& src, Protobuf::Message& dst);
577
578
  /**
579
   * Sanitizes a string to contain only valid UTF-8. Invalid UTF-8 characters will be replaced. If
580
   * the input string is valid UTF-8, it will be returned unmodified.
581
   */
582
  static std::string sanitizeUtf8String(absl::string_view str);
583
};
584
585
class ValueUtil {
586
public:
587
105k
  static std::size_t hash(const ProtobufWkt::Value& value) { return MessageUtil::hash(value); }
588
589
#ifdef ENVOY_ENABLE_YAML
590
  /**
591
   * Load YAML string into ProtobufWkt::Value.
592
   */
593
  static ProtobufWkt::Value loadFromYaml(const std::string& yaml);
594
#endif
595
596
  /**
597
   * Compare two ProtobufWkt::Values for equality.
598
   * @param v1 message of type type.googleapis.com/google.protobuf.Value
599
   * @param v2 message of type type.googleapis.com/google.protobuf.Value
600
   * @return true if v1 and v2 are identical
601
   */
602
  static bool equal(const ProtobufWkt::Value& v1, const ProtobufWkt::Value& v2);
603
604
  /**
605
   * @return wrapped ProtobufWkt::NULL_VALUE.
606
   */
607
  static const ProtobufWkt::Value& nullValue();
608
609
  /**
610
   * Wrap std::string into ProtobufWkt::Value string value.
611
   * @param str string to be wrapped.
612
   * @return wrapped string.
613
   */
614
  static ProtobufWkt::Value stringValue(const std::string& str);
615
616
  /**
617
   * Wrap optional std::string into ProtobufWkt::Value string value.
618
   * If the argument contains a null optional, return ProtobufWkt::NULL_VALUE.
619
   * @param str string to be wrapped.
620
   * @return wrapped string.
621
   */
622
  static ProtobufWkt::Value optionalStringValue(const absl::optional<std::string>& str);
623
624
  /**
625
   * Wrap boolean into ProtobufWkt::Value boolean value.
626
   * @param str boolean to be wrapped.
627
   * @return wrapped boolean.
628
   */
629
  static ProtobufWkt::Value boolValue(bool b);
630
631
  /**
632
   * Wrap ProtobufWkt::Struct into ProtobufWkt::Value struct value.
633
   * @param obj struct to be wrapped.
634
   * @return wrapped struct.
635
   */
636
  static ProtobufWkt::Value structValue(const ProtobufWkt::Struct& obj);
637
638
  /**
639
   * Wrap number into ProtobufWkt::Value double value.
640
   * @param num number to be wrapped.
641
   * @return wrapped number.
642
   */
643
0
  template <typename T> static ProtobufWkt::Value numberValue(const T num) {
644
0
    ProtobufWkt::Value val;
645
0
    val.set_number_value(static_cast<double>(num));
646
0
    return val;
647
0
  }
Unexecuted instantiation: google::protobuf::Value Envoy::ValueUtil::numberValue<unsigned long>(unsigned long)
Unexecuted instantiation: google::protobuf::Value Envoy::ValueUtil::numberValue<long>(long)
Unexecuted instantiation: google::protobuf::Value Envoy::ValueUtil::numberValue<unsigned int>(unsigned int)
Unexecuted instantiation: google::protobuf::Value Envoy::ValueUtil::numberValue<int>(int)
648
649
  /**
650
   * Wrap a collection of ProtobufWkt::Values into ProtobufWkt::Value list value.
651
   * @param values collection of ProtobufWkt::Values to be wrapped.
652
   * @return wrapped list value.
653
   */
654
  static ProtobufWkt::Value listValue(const std::vector<ProtobufWkt::Value>& values);
655
};
656
657
/**
658
 * HashedValue is a wrapper around ProtobufWkt::Value that computes
659
 * and stores a hash code for the Value at construction.
660
 */
661
class HashedValue {
662
public:
663
105k
  HashedValue(const ProtobufWkt::Value& value) : value_(value), hash_(ValueUtil::hash(value)){};
664
105k
  HashedValue(const HashedValue& v) = default;
665
666
0
  const ProtobufWkt::Value& value() const { return value_; }
667
0
  std::size_t hash() const { return hash_; }
668
669
0
  bool operator==(const HashedValue& rhs) const {
670
0
    return hash_ == rhs.hash_ && ValueUtil::equal(value_, rhs.value_);
671
0
  }
672
673
0
  bool operator!=(const HashedValue& rhs) const { return !(*this == rhs); }
674
675
private:
676
  const ProtobufWkt::Value value_;
677
  const std::size_t hash_;
678
};
679
680
class DurationUtil {
681
public:
682
  class OutOfRangeException : public EnvoyException {
683
  public:
684
132
    OutOfRangeException(const std::string& error) : EnvoyException(error) {}
685
  };
686
687
  /**
688
   * Same as DurationUtil::durationToMilliseconds but with extra validation logic.
689
   * Same as Protobuf::util::TimeUtil::DurationToSeconds but with extra validation logic.
690
   * Specifically, we ensure that the duration is positive.
691
   * @param duration protobuf.
692
   * @return duration in milliseconds.
693
   * @throw OutOfRangeException when duration is out-of-range.
694
   */
695
  static uint64_t durationToMilliseconds(const ProtobufWkt::Duration& duration);
696
697
  /**
698
   * Same as DurationUtil::durationToMilliseconds but does not throw an exception.
699
   * @param duration protobuf.
700
   * @return duration in milliseconds or an error status.
701
   */
702
  static absl::StatusOr<uint64_t>
703
  durationToMillisecondsNoThrow(const ProtobufWkt::Duration& duration);
704
705
  /**
706
   * Same as Protobuf::util::TimeUtil::DurationToSeconds but with extra validation logic.
707
   * Specifically, we ensure that the duration is positive.
708
   * @param duration protobuf.
709
   * @return duration in seconds.
710
   * @throw OutOfRangeException when duration is out-of-range.
711
   */
712
  static uint64_t durationToSeconds(const ProtobufWkt::Duration& duration);
713
};
714
715
class TimestampUtil {
716
public:
717
  /**
718
   * Writes a time_point<system_clock> (SystemTime) to a protobuf Timestamp, by way of time_t.
719
   * @param system_clock_time the time to write
720
   * @param timestamp a pointer to the mutable protobuf member to be written into.
721
   */
722
  static void systemClockToTimestamp(const SystemTime system_clock_time,
723
                                     ProtobufWkt::Timestamp& timestamp);
724
};
725
726
class StructUtil {
727
public:
728
  /**
729
   * Recursively updates in-place a protobuf structure with keys from another
730
   * object.
731
   *
732
   * The merging strategy is the following. If a key from \p other does not
733
   * exists, it's just copied into \p obj. If the key exists but has a
734
   * different type, it is replaced by the new value. Otherwise:
735
   * - for scalar values (null, string, number, boolean) are replaced with the new value
736
   * - for lists: new values are added to the current list
737
   * - for structures: recursively apply this scheme
738
   *
739
   * @param obj the object to update in-place
740
   * @param with the object to update \p obj with
741
   */
742
  static void update(ProtobufWkt::Struct& obj, const ProtobufWkt::Struct& with);
743
};
744
745
} // namespace Envoy
746
747
namespace std {
748
// Inject an implementation of std::hash for Envoy::HashedValue into the std namespace.
749
template <> struct hash<Envoy::HashedValue> {
750
0
  std::size_t operator()(Envoy::HashedValue const& v) const { return v.hash(); }
751
};
752
753
} // namespace std