/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&) constLine | 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&) constLine | 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&) constUnexecuted 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&) constUnexecuted 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&) constLine | 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&) constUnexecuted 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&) constLine | 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&) constLine | 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&) constLine | 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&) constLine | 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&) constLine | 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&) constUnexecuted 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 |