/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 | 525k | ((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 EnvoyException. |
28 | | |
29 | | #define PROTOBUF_GET_WRAPPED_REQUIRED(message, field_name) \ |
30 | 49.4k | ([](const auto& msg) { \ |
31 | 49.4k | if (!msg.has_##field_name()) { \ |
32 | 113 | ::Envoy::ProtoExceptionUtil::throwMissingFieldException(#field_name, msg); \ |
33 | 113 | } \ |
34 | 49.4k | return msg.field_name().value(); \ |
35 | 49.4k | }((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&)::$_0::operator()<envoy::config::route::v3::WeightedCluster_ClusterWeight>(envoy::config::route::v3::WeightedCluster_ClusterWeight const&) const Line | Count | Source | 30 | 37.1k | ([](const auto& msg) { \ | 31 | 37.1k | if (!msg.has_##field_name()) { \ | 32 | 113 | ::Envoy::ProtoExceptionUtil::throwMissingFieldException(#field_name, msg); \ | 33 | 113 | } \ | 34 | 37.1k | return msg.field_name().value(); \ | 35 | 37.1k | }((message))) |
auto Envoy::Router::CorsPolicyImplBase<envoy::config::route::v3::CorsPolicy>::CorsPolicyImplBase(envoy::config::route::v3::CorsPolicy const&, Envoy::Server::Configuration::CommonFactoryContext&)::{lambda(auto:1 const&)#1}::operator()<envoy::config::route::v3::CorsPolicy>(envoy::config::route::v3::CorsPolicy const&) const Line | Count | Source | 30 | 1.62k | ([](const auto& msg) { \ | 31 | 1.62k | if (!msg.has_##field_name()) { \ | 32 | 0 | ::Envoy::ProtoExceptionUtil::throwMissingFieldException(#field_name, msg); \ | 33 | 0 | } \ | 34 | 1.62k | return msg.field_name().value(); \ | 35 | 1.62k | }((message))) |
auto Envoy::Router::CorsPolicyImplBase<envoy::config::route::v3::CorsPolicy>::CorsPolicyImplBase(envoy::config::route::v3::CorsPolicy const&, Envoy::Server::Configuration::CommonFactoryContext&)::{lambda(auto:1 const&)#2}::operator()<envoy::config::route::v3::CorsPolicy>(envoy::config::route::v3::CorsPolicy const&) const Line | Count | Source | 30 | 2.82k | ([](const auto& msg) { \ | 31 | 2.82k | if (!msg.has_##field_name()) { \ | 32 | 0 | ::Envoy::ProtoExceptionUtil::throwMissingFieldException(#field_name, msg); \ | 33 | 0 | } \ | 34 | 2.82k | return msg.field_name().value(); \ | 35 | 2.82k | }((message))) |
auto Envoy::Router::CorsPolicyImplBase<envoy::config::route::v3::CorsPolicy>::CorsPolicyImplBase(envoy::config::route::v3::CorsPolicy const&, Envoy::Server::Configuration::CommonFactoryContext&)::{lambda(auto:1 const&)#3}::operator()<envoy::config::route::v3::CorsPolicy>(envoy::config::route::v3::CorsPolicy const&) const Line | Count | Source | 30 | 1.09k | ([](const auto& msg) { \ | 31 | 1.09k | if (!msg.has_##field_name()) { \ | 32 | 0 | ::Envoy::ProtoExceptionUtil::throwMissingFieldException(#field_name, msg); \ | 33 | 0 | } \ | 34 | 1.09k | return msg.field_name().value(); \ | 35 | 1.09k | }((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 | 3.37k | ([](const auto& msg) { \ | 31 | 3.37k | if (!msg.has_##field_name()) { \ | 32 | 0 | ::Envoy::ProtoExceptionUtil::throwMissingFieldException(#field_name, msg); \ | 33 | 0 | } \ | 34 | 3.37k | return msg.field_name().value(); \ | 35 | 3.37k | }((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 | 3.37k | ([](const auto& msg) { \ | 31 | 3.37k | if (!msg.has_##field_name()) { \ | 32 | 0 | ::Envoy::ProtoExceptionUtil::throwMissingFieldException(#field_name, msg); \ | 33 | 0 | } \ | 34 | 3.37k | return msg.field_name().value(); \ | 35 | 3.37k | }((message))) |
Unexecuted instantiation: auto Envoy::Router::CorsPolicyImplBase<envoy::extensions::filters::http::cors::v3::CorsPolicy>::CorsPolicyImplBase(envoy::extensions::filters::http::cors::v3::CorsPolicy const&, Envoy::Server::Configuration::CommonFactoryContext&)::{lambda(auto:1 const&)#1}::operator()<envoy::extensions::filters::http::cors::v3::CorsPolicy>(envoy::extensions::filters::http::cors::v3::CorsPolicy const&) const Unexecuted instantiation: auto Envoy::Router::CorsPolicyImplBase<envoy::extensions::filters::http::cors::v3::CorsPolicy>::CorsPolicyImplBase(envoy::extensions::filters::http::cors::v3::CorsPolicy const&, Envoy::Server::Configuration::CommonFactoryContext&)::{lambda(auto:1 const&)#2}::operator()<envoy::extensions::filters::http::cors::v3::CorsPolicy>(envoy::extensions::filters::http::cors::v3::CorsPolicy const&) const Unexecuted instantiation: auto Envoy::Router::CorsPolicyImplBase<envoy::extensions::filters::http::cors::v3::CorsPolicy>::CorsPolicyImplBase(envoy::extensions::filters::http::cors::v3::CorsPolicy const&, Envoy::Server::Configuration::CommonFactoryContext&)::{lambda(auto:1 const&)#3}::operator()<envoy::extensions::filters::http::cors::v3::CorsPolicy>(envoy::extensions::filters::http::cors::v3::CorsPolicy const&) const Unexecuted instantiation: oauth_client.cc:auto Envoy::Extensions::HttpFilters::Oauth2::OAuth2ClientImpl::onSuccess(Envoy::Http::AsyncClient::Request const&, std::__1::unique_ptr<Envoy::Http::Message<Envoy::Http::ResponseHeaderMap, Envoy::Http::ResponseTrailerMap>, std::__1::default_delete<Envoy::Http::Message<Envoy::Http::ResponseHeaderMap, Envoy::Http::ResponseTrailerMap> > >&&)::$_0::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 Unexecuted instantiation: oauth_client.cc:auto Envoy::Extensions::Http::InjectedCredentials::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> > >&&)::$_0::operator()<envoy::extensions::http::injected_credentials::oauth2::OAuthResponse>(envoy::extensions::http::injected_credentials::oauth2::OAuthResponse const&) const Unexecuted instantiation: oauth_client.cc:auto Envoy::Extensions::Http::InjectedCredentials::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::injected_credentials::oauth2::OAuthResponse>(envoy::extensions::http::injected_credentials::oauth2::OAuthResponse 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 | 186k | ((message).has_##field_name() ? DurationUtil::durationToMilliseconds((message).field_name()) \ |
40 | 186k | : (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 | 8.35k | ((message).has_##field_name() \ |
50 | 8.35k | ? absl::optional<std::chrono::milliseconds>( \ |
51 | 3.69k | DurationUtil::durationToMilliseconds((message).field_name())) \ |
52 | 8.35k | : absl::nullopt) |
53 | | |
54 | | // Obtain the milliseconds value of a google.protobuf.Duration field if set. Otherwise, throw an |
55 | | // EnvoyException. |
56 | | #define PROTOBUF_GET_MS_REQUIRED(message, field_name) \ |
57 | 48.1k | ([](const auto& msg) { \ |
58 | 48.1k | if (!msg.has_##field_name()) { \ |
59 | 0 | ::Envoy::ProtoExceptionUtil::throwMissingFieldException(#field_name, msg); \ |
60 | 0 | } \ |
61 | 48.1k | return DurationUtil::durationToMilliseconds(msg.field_name()); \ |
62 | 48.1k | }((message))) config_impl.cc:auto Envoy::Router::RetryPolicyImpl::RetryPolicyImpl(envoy::config::route::v3::RetryPolicy const&, Envoy::ProtobufMessage::ValidationVisitor&, Envoy::Upstream::RetryExtensionFactoryContext&, Envoy::Server::Configuration::CommonFactoryContext&, absl::lts_20230802::Status&)::$_0::operator()<envoy::config::route::v3::RetryPolicy_RetryBackOff>(envoy::config::route::v3::RetryPolicy_RetryBackOff const&) const Line | Count | Source | 57 | 6.46k | ([](const auto& msg) { \ | 58 | 6.46k | if (!msg.has_##field_name()) { \ | 59 | 0 | ::Envoy::ProtoExceptionUtil::throwMissingFieldException(#field_name, msg); \ | 60 | 0 | } \ | 61 | 6.46k | return DurationUtil::durationToMilliseconds(msg.field_name()); \ | 62 | 6.46k | }((message))) |
config_impl.cc:auto Envoy::Router::RouteEntryImplBase::buildOptionalTimeouts(envoy::config::route::v3::RouteAction const&) const::$_0::operator()<envoy::config::route::v3::RouteAction>(envoy::config::route::v3::RouteAction const&) const Line | Count | Source | 57 | 6.62k | ([](const auto& msg) { \ | 58 | 6.62k | if (!msg.has_##field_name()) { \ | 59 | 0 | ::Envoy::ProtoExceptionUtil::throwMissingFieldException(#field_name, msg); \ | 60 | 0 | } \ | 61 | 6.62k | return DurationUtil::durationToMilliseconds(msg.field_name()); \ | 62 | 6.62k | }((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 | 8.23k | ([](const auto& msg) { \ | 58 | 8.23k | if (!msg.has_##field_name()) { \ | 59 | 0 | ::Envoy::ProtoExceptionUtil::throwMissingFieldException(#field_name, msg); \ | 60 | 0 | } \ | 61 | 8.23k | return DurationUtil::durationToMilliseconds(msg.field_name()); \ | 62 | 8.23k | }((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 | 5.60k | ([](const auto& msg) { \ | 58 | 5.60k | if (!msg.has_##field_name()) { \ | 59 | 0 | ::Envoy::ProtoExceptionUtil::throwMissingFieldException(#field_name, msg); \ | 60 | 0 | } \ | 61 | 5.60k | return DurationUtil::durationToMilliseconds(msg.field_name()); \ | 62 | 5.60k | }((message))) |
config_impl.cc:auto Envoy::Router::RouteEntryImplBase::buildOptionalTimeouts(envoy::config::route::v3::RouteAction const&) const::$_3::operator()<envoy::config::route::v3::RouteAction_MaxStreamDuration>(envoy::config::route::v3::RouteAction_MaxStreamDuration const&) const Line | Count | Source | 57 | 5.49k | ([](const auto& msg) { \ | 58 | 5.49k | if (!msg.has_##field_name()) { \ | 59 | 0 | ::Envoy::ProtoExceptionUtil::throwMissingFieldException(#field_name, msg); \ | 60 | 0 | } \ | 61 | 5.49k | return DurationUtil::durationToMilliseconds(msg.field_name()); \ | 62 | 5.49k | }((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.38k | ([](const auto& msg) { \ | 58 | 2.38k | if (!msg.has_##field_name()) { \ | 59 | 0 | ::Envoy::ProtoExceptionUtil::throwMissingFieldException(#field_name, msg); \ | 60 | 0 | } \ | 61 | 2.38k | return DurationUtil::durationToMilliseconds(msg.field_name()); \ | 62 | 2.38k | }((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.30k | ([](const auto& msg) { \ | 58 | 2.30k | if (!msg.has_##field_name()) { \ | 59 | 0 | ::Envoy::ProtoExceptionUtil::throwMissingFieldException(#field_name, msg); \ | 60 | 0 | } \ | 61 | 2.30k | return DurationUtil::durationToMilliseconds(msg.field_name()); \ | 62 | 2.30k | }((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)::$_0::operator()<envoy::config::core::v3::KeepaliveSettings>(envoy::config::core::v3::KeepaliveSettings const&) const Line | Count | Source | 57 | 96 | ([](const auto& msg) { \ | 58 | 96 | if (!msg.has_##field_name()) { \ | 59 | 0 | ::Envoy::ProtoExceptionUtil::throwMissingFieldException(#field_name, msg); \ | 60 | 0 | } \ | 61 | 96 | return DurationUtil::durationToMilliseconds(msg.field_name()); \ | 62 | 96 | }((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 | 118 | ([](const auto& msg) { \ | 58 | 118 | if (!msg.has_##field_name()) { \ | 59 | 0 | ::Envoy::ProtoExceptionUtil::throwMissingFieldException(#field_name, msg); \ | 60 | 0 | } \ | 61 | 118 | return DurationUtil::durationToMilliseconds(msg.field_name()); \ | 62 | 118 | }((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&)::$_0::operator()<envoy::config::core::v3::BackoffStrategy>(envoy::config::core::v3::BackoffStrategy const&) const Line | Count | Source | 57 | 722 | ([](const auto& msg) { \ | 58 | 722 | if (!msg.has_##field_name()) { \ | 59 | 0 | ::Envoy::ProtoExceptionUtil::throwMissingFieldException(#field_name, msg); \ | 60 | 0 | } \ | 61 | 722 | return DurationUtil::durationToMilliseconds(msg.field_name()); \ | 62 | 722 | }((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 | 16 | ([](const auto& msg) { \ | 58 | 16 | if (!msg.has_##field_name()) { \ | 59 | 0 | ::Envoy::ProtoExceptionUtil::throwMissingFieldException(#field_name, msg); \ | 60 | 0 | } \ | 61 | 16 | return DurationUtil::durationToMilliseconds(msg.field_name()); \ | 62 | 16 | }((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 | 3.37k | ([](const auto& msg) { \ | 58 | 3.37k | if (!msg.has_##field_name()) { \ | 59 | 0 | ::Envoy::ProtoExceptionUtil::throwMissingFieldException(#field_name, msg); \ | 60 | 0 | } \ | 61 | 3.37k | return DurationUtil::durationToMilliseconds(msg.field_name()); \ | 62 | 3.37k | }((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 | 3.37k | ([](const auto& msg) { \ | 58 | 3.37k | if (!msg.has_##field_name()) { \ | 59 | 0 | ::Envoy::ProtoExceptionUtil::throwMissingFieldException(#field_name, msg); \ | 60 | 0 | } \ | 61 | 3.37k | return DurationUtil::durationToMilliseconds(msg.field_name()); \ | 62 | 3.37k | }((message))) |
Unexecuted instantiation: auto Envoy::Config::Utility::prepareDnsRefreshStrategy<envoy::config::cluster::v3::Cluster>(envoy::config::cluster::v3::Cluster const&, unsigned long, Envoy::Random::RandomGenerator&)::{lambda(auto:1 const&)#1}::operator()<envoy::config::cluster::v3::Cluster_RefreshRate>(envoy::config::cluster::v3::Cluster_RefreshRate const&) const Unexecuted instantiation: filter.cc:auto Envoy::Extensions::HttpFilters::RateLimitQuota::RateLimitQuotaFilter::sendImmediateReport(unsigned long, Envoy::Extensions::HttpFilters::RateLimitQuota::RateLimitOnMatchAction const&)::$_0::operator()<envoy::extensions::filters::http::rate_limit_quota::v3::RateLimitQuotaBucketSettings>(envoy::extensions::filters::http::rate_limit_quota::v3::RateLimitQuotaBucketSettings const&) const Unexecuted instantiation: oauth_client.cc:auto Envoy::Extensions::HttpFilters::Oauth2::OAuth2ClientImpl::dispatchRequest(std::__1::unique_ptr<Envoy::Http::Message<Envoy::Http::RequestHeaderMap, Envoy::Http::RequestTrailerMap>, std::__1::default_delete<Envoy::Http::Message<Envoy::Http::RequestHeaderMap, Envoy::Http::RequestTrailerMap> > >&&)::$_0::operator()<envoy::config::core::v3::HttpUri>(envoy::config::core::v3::HttpUri const&) const Unexecuted instantiation: local_ratelimit.cc:auto Envoy::Extensions::ListenerFilters::LocalRateLimit::FilterConfig::FilterConfig(envoy::extensions::filters::listener::local_ratelimit::v3::LocalRateLimit const&, Envoy::Event::Dispatcher&, Envoy::Stats::Scope&, Envoy::Runtime::Loader&)::$_0::operator()<envoy::type::v3::TokenBucket>(envoy::type::v3::TokenBucket const&) const local_ratelimit.cc:auto Envoy::Extensions::NetworkFilters::LocalRateLimitFilter::Config::Config(envoy::extensions::filters::network::local_ratelimit::v3::LocalRateLimit const&, Envoy::Event::Dispatcher&, Envoy::Stats::Scope&, Envoy::Runtime::Loader&, Envoy::Singleton::Manager&)::$_0::operator()() const::{lambda(auto:1 const&)#1}::operator()<envoy::type::v3::TokenBucket>(envoy::type::v3::TokenBucket const&) const Line | Count | Source | 57 | 992 | ([](const auto& msg) { \ | 58 | 992 | if (!msg.has_##field_name()) { \ | 59 | 0 | ::Envoy::ProtoExceptionUtil::throwMissingFieldException(#field_name, msg); \ | 60 | 0 | } \ | 61 | 992 | return DurationUtil::durationToMilliseconds(msg.field_name()); \ | 62 | 992 | }((message))) |
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 | 35 | ([](const auto& msg) { \ | 58 | 35 | if (!msg.has_##field_name()) { \ | 59 | 0 | ::Envoy::ProtoExceptionUtil::throwMissingFieldException(#field_name, msg); \ | 60 | 0 | } \ | 61 | 35 | return DurationUtil::durationToMilliseconds(msg.field_name()); \ | 62 | 35 | }((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 | 342 | ([](const auto& msg) { \ | 58 | 342 | if (!msg.has_##field_name()) { \ | 59 | 0 | ::Envoy::ProtoExceptionUtil::throwMissingFieldException(#field_name, msg); \ | 60 | 0 | } \ | 61 | 342 | return DurationUtil::durationToMilliseconds(msg.field_name()); \ | 62 | 342 | }((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 Unexecuted instantiation: oauth_client.cc:auto Envoy::Extensions::Http::InjectedCredentials::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 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 | 991 | ([](const auto& msg) { \ | 58 | 991 | if (!msg.has_##field_name()) { \ | 59 | 0 | ::Envoy::ProtoExceptionUtil::throwMissingFieldException(#field_name, msg); \ | 60 | 0 | } \ | 61 | 991 | return DurationUtil::durationToMilliseconds(msg.field_name()); \ | 62 | 991 | }((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 | 990 | ([](const auto& msg) { \ | 58 | 990 | if (!msg.has_##field_name()) { \ | 59 | 0 | ::Envoy::ProtoExceptionUtil::throwMissingFieldException(#field_name, msg); \ | 60 | 0 | } \ | 61 | 990 | return DurationUtil::durationToMilliseconds(msg.field_name()); \ | 62 | 990 | }((message))) |
Unexecuted instantiation: 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 Unexecuted instantiation: 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 |
63 | | |
64 | | // Obtain the seconds value of a google.protobuf.Duration field if set. Otherwise, return the |
65 | | // default value. |
66 | | #define PROTOBUF_GET_SECONDS_OR_DEFAULT(message, field_name, default_value) \ |
67 | 0 | ((message).has_##field_name() ? DurationUtil::durationToSeconds((message).field_name()) \ |
68 | 0 | : (default_value)) |
69 | | |
70 | | // Obtain the seconds value of a google.protobuf.Duration field if set. Otherwise, throw an |
71 | | // EnvoyException. |
72 | | #define PROTOBUF_GET_SECONDS_REQUIRED(message, field_name) \ |
73 | | ([](const auto& msg) { \ |
74 | | if (!msg.has_##field_name()) { \ |
75 | | ::Envoy::ProtoExceptionUtil::throwMissingFieldException(#field_name, msg); \ |
76 | | } \ |
77 | | return DurationUtil::durationToSeconds(msg.field_name()); \ |
78 | | }((message))) |
79 | | |
80 | | namespace Envoy { |
81 | | namespace ProtobufPercentHelper { |
82 | | |
83 | | // The following are helpers used in the PROTOBUF_PERCENT_TO_ROUNDED_INTEGER_OR_DEFAULT macro. |
84 | | // This avoids a giant macro mess when trying to do asserts, casts, etc. |
85 | | uint64_t checkAndReturnDefault(uint64_t default_value, uint64_t max_value); |
86 | | uint64_t convertPercent(double percent, uint64_t max_value); |
87 | | |
88 | | /** |
89 | | * Given a fractional percent chance of a given event occurring, evaluate to a yes/no decision |
90 | | * based on a provided random value. |
91 | | * @param percent the chance of a given event happening. |
92 | | * @param random_value supplies a numerical value to use to evaluate the event. |
93 | | * @return bool decision about whether the event should occur. |
94 | | */ |
95 | | bool evaluateFractionalPercent(envoy::type::v3::FractionalPercent percent, uint64_t random_value); |
96 | | |
97 | | /** |
98 | | * Convert a fractional percent denominator enum into an integer. |
99 | | * @param denominator supplies denominator to convert. |
100 | | * @return the converted denominator. |
101 | | */ |
102 | | uint64_t fractionalPercentDenominatorToInt( |
103 | | const envoy::type::v3::FractionalPercent::DenominatorType& denominator); |
104 | | |
105 | | } // namespace ProtobufPercentHelper |
106 | | } // namespace Envoy |
107 | | |
108 | | // Convert an envoy::type::v3::Percent to a double or a default. |
109 | | // @param message supplies the proto message containing the field. |
110 | | // @param field_name supplies the field name in the message. |
111 | | // @param default_value supplies the default if the field is not present. |
112 | | #define PROTOBUF_PERCENT_TO_DOUBLE_OR_DEFAULT(message, field_name, default_value) \ |
113 | 7.24k | ([](const auto& msg) -> double { \ |
114 | 7.24k | if (std::isnan(msg.field_name().value())) { \ |
115 | 5 | ::Envoy::ExceptionUtil::throwEnvoyException( \ |
116 | 5 | fmt::format("Value not in the range of 0..100 range.")); \ |
117 | 5 | } \ |
118 | 7.24k | return (msg).has_##field_name() ? (msg).field_name().value() : default_value; \ |
119 | 7.24k | }((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&)::$_0::operator()<envoy::extensions::load_balancing_policies::common::v3::SlowStartConfig>(envoy::extensions::load_balancing_policies::common::v3::SlowStartConfig const&) const Line | Count | Source | 113 | 555 | ([](const auto& msg) -> double { \ | 114 | 555 | if (std::isnan(msg.field_name().value())) { \ | 115 | 4 | ::Envoy::ExceptionUtil::throwEnvoyException( \ | 116 | 4 | fmt::format("Value not in the range of 0..100 range.")); \ | 117 | 4 | } \ | 118 | 555 | return (msg).has_##field_name() ? (msg).field_name().value() : default_value; \ | 119 | 555 | }((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 | 113 | 6.69k | ([](const auto& msg) -> double { \ | 114 | 6.69k | if (std::isnan(msg.field_name().value())) { \ | 115 | 1 | ::Envoy::ExceptionUtil::throwEnvoyException( \ | 116 | 1 | fmt::format("Value not in the range of 0..100 range.")); \ | 117 | 1 | } \ | 118 | 6.69k | return (msg).has_##field_name() ? (msg).field_name().value() : default_value; \ | 119 | 6.69k | }((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 |
120 | | // Convert an envoy::type::v3::Percent to a rounded integer or a default. |
121 | | // @param message supplies the proto message containing the field. |
122 | | // @param field_name supplies the field name in the message. |
123 | | // @param max_value supplies the maximum allowed integral value (e.g., 100, 10000, etc.). |
124 | | // @param default_value supplies the default if the field is not present. |
125 | | // |
126 | | // TODO(anirudhmurali): Recommended to capture and validate NaN values in PGV |
127 | | // Issue: https://github.com/bufbuild/protoc-gen-validate/issues/85 |
128 | | #define PROTOBUF_PERCENT_TO_ROUNDED_INTEGER_OR_DEFAULT(message, field_name, max_value, \ |
129 | | default_value) \ |
130 | 9.84k | ([](const auto& msg) { \ |
131 | 9.84k | if (std::isnan(msg.field_name().value())) { \ |
132 | 11 | ::Envoy::ExceptionUtil::throwEnvoyException( \ |
133 | 11 | fmt::format("Value not in the range of 0..100 range.")); \ |
134 | 11 | } \ |
135 | 9.84k | return (msg).has_##field_name() \ |
136 | 9.84k | ? ProtobufPercentHelper::convertPercent((msg).field_name().value(), max_value) \ |
137 | 9.84k | : ProtobufPercentHelper::checkAndReturnDefault(default_value, max_value); \ |
138 | 9.84k | }((message))) auto Envoy::Tracing::ConnectionManagerTracingConfigImpl::ConnectionManagerTracingConfigImpl(envoy::config::core::v3::TrafficDirection, envoy::extensions::filters::network::http_connection_manager::v3::HttpConnectionManager_Tracing const&)::{lambda(auto:1 const&)#1}::operator()<envoy::extensions::filters::network::http_connection_manager::v3::HttpConnectionManager_Tracing>(envoy::extensions::filters::network::http_connection_manager::v3::HttpConnectionManager_Tracing const&) const Line | Count | Source | 130 | 1.01k | ([](const auto& msg) { \ | 131 | 1.01k | if (std::isnan(msg.field_name().value())) { \ | 132 | 1 | ::Envoy::ExceptionUtil::throwEnvoyException( \ | 133 | 1 | fmt::format("Value not in the range of 0..100 range.")); \ | 134 | 1 | } \ | 135 | 1.01k | return (msg).has_##field_name() \ | 136 | 1.01k | ? ProtobufPercentHelper::convertPercent((msg).field_name().value(), max_value) \ | 137 | 1.01k | : ProtobufPercentHelper::checkAndReturnDefault(default_value, max_value); \ | 138 | 1.01k | }((message))) |
auto Envoy::Tracing::ConnectionManagerTracingConfigImpl::ConnectionManagerTracingConfigImpl(envoy::config::core::v3::TrafficDirection, envoy::extensions::filters::network::http_connection_manager::v3::HttpConnectionManager_Tracing const&)::{lambda(auto:1 const&)#2}::operator()<envoy::extensions::filters::network::http_connection_manager::v3::HttpConnectionManager_Tracing>(envoy::extensions::filters::network::http_connection_manager::v3::HttpConnectionManager_Tracing const&) const Line | Count | Source | 130 | 1.01k | ([](const auto& msg) { \ | 131 | 1.01k | if (std::isnan(msg.field_name().value())) { \ | 132 | 2 | ::Envoy::ExceptionUtil::throwEnvoyException( \ | 133 | 2 | fmt::format("Value not in the range of 0..100 range.")); \ | 134 | 2 | } \ | 135 | 1.01k | return (msg).has_##field_name() \ | 136 | 1.01k | ? ProtobufPercentHelper::convertPercent((msg).field_name().value(), max_value) \ | 137 | 1.01k | : ProtobufPercentHelper::checkAndReturnDefault(default_value, max_value); \ | 138 | 1.01k | }((message))) |
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 auto Envoy::Upstream::RoundRobinLoadBalancer::RoundRobinLoadBalancer(Envoy::Upstream::PrioritySet const&, Envoy::Upstream::PrioritySet const*, Envoy::Upstream::ClusterLbStats&, Envoy::Runtime::Loader&, Envoy::Random::RandomGenerator&, envoy::config::cluster::v3::Cluster_CommonLbConfig const&, Envoy::OptRef<envoy::config::cluster::v3::Cluster_RoundRobinLbConfig const>, Envoy::TimeSource&)::{lambda(auto:1 const&)#1}::operator()<envoy::config::cluster::v3::Cluster_CommonLbConfig>(envoy::config::cluster::v3::Cluster_CommonLbConfig const&) const Line | Count | Source | 130 | 5.91k | ([](const auto& msg) { \ | 131 | 5.91k | if (std::isnan(msg.field_name().value())) { \ | 132 | 2 | ::Envoy::ExceptionUtil::throwEnvoyException( \ | 133 | 2 | fmt::format("Value not in the range of 0..100 range.")); \ | 134 | 2 | } \ | 135 | 5.91k | return (msg).has_##field_name() \ | 136 | 5.91k | ? ProtobufPercentHelper::convertPercent((msg).field_name().value(), max_value) \ | 137 | 5.91k | : ProtobufPercentHelper::checkAndReturnDefault(default_value, max_value); \ | 138 | 5.91k | }((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 | 130 | 108 | ([](const auto& msg) { \ | 131 | 108 | if (std::isnan(msg.field_name().value())) { \ | 132 | 3 | ::Envoy::ExceptionUtil::throwEnvoyException( \ | 133 | 3 | fmt::format("Value not in the range of 0..100 range.")); \ | 134 | 3 | } \ | 135 | 108 | return (msg).has_##field_name() \ | 136 | 108 | ? ProtobufPercentHelper::convertPercent((msg).field_name().value(), max_value) \ | 137 | 108 | : ProtobufPercentHelper::checkAndReturnDefault(default_value, max_value); \ | 138 | 108 | }((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 auto Envoy::Upstream::LeastRequestLoadBalancer::LeastRequestLoadBalancer(Envoy::Upstream::PrioritySet const&, Envoy::Upstream::PrioritySet const*, Envoy::Upstream::ClusterLbStats&, Envoy::Runtime::Loader&, Envoy::Random::RandomGenerator&, envoy::config::cluster::v3::Cluster_CommonLbConfig const&, Envoy::OptRef<envoy::config::cluster::v3::Cluster_LeastRequestLbConfig const>, Envoy::TimeSource&)::{lambda(auto:1 const&)#1}::operator()<envoy::config::cluster::v3::Cluster_CommonLbConfig>(envoy::config::cluster::v3::Cluster_CommonLbConfig const&) const Line | Count | Source | 130 | 1.19k | ([](const auto& msg) { \ | 131 | 1.19k | if (std::isnan(msg.field_name().value())) { \ | 132 | 1 | ::Envoy::ExceptionUtil::throwEnvoyException( \ | 133 | 1 | fmt::format("Value not in the range of 0..100 range.")); \ | 134 | 1 | } \ | 135 | 1.19k | return (msg).has_##field_name() \ | 136 | 1.19k | ? ProtobufPercentHelper::convertPercent((msg).field_name().value(), max_value) \ | 137 | 1.19k | : ProtobufPercentHelper::checkAndReturnDefault(default_value, max_value); \ | 138 | 1.19k | }((message))) |
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 auto Envoy::Upstream::RandomLoadBalancer::RandomLoadBalancer(Envoy::Upstream::PrioritySet const&, Envoy::Upstream::PrioritySet const*, Envoy::Upstream::ClusterLbStats&, Envoy::Runtime::Loader&, Envoy::Random::RandomGenerator&, envoy::config::cluster::v3::Cluster_CommonLbConfig const&)::{lambda(auto:1 const&)#1}::operator()<envoy::config::cluster::v3::Cluster_CommonLbConfig>(envoy::config::cluster::v3::Cluster_CommonLbConfig const&) const Line | Count | Source | 130 | 605 | ([](const auto& msg) { \ | 131 | 605 | if (std::isnan(msg.field_name().value())) { \ | 132 | 2 | ::Envoy::ExceptionUtil::throwEnvoyException( \ | 133 | 2 | fmt::format("Value not in the range of 0..100 range.")); \ | 134 | 2 | } \ | 135 | 605 | return (msg).has_##field_name() \ | 136 | 605 | ? ProtobufPercentHelper::convertPercent((msg).field_name().value(), max_value) \ | 137 | 605 | : ProtobufPercentHelper::checkAndReturnDefault(default_value, max_value); \ | 138 | 605 | }((message))) |
Unexecuted instantiation: auto Envoy::Extensions::Clusters::Aggregate::AggregateClusterLoadBalancer::LoadBalancerImpl::LoadBalancerImpl(Envoy::Extensions::Clusters::Aggregate::PriorityContext const&, Envoy::Upstream::ClusterLbStats&, Envoy::Runtime::Loader&, Envoy::Random::RandomGenerator&, envoy::config::cluster::v3::Cluster_CommonLbConfig const&)::{lambda(auto:1 const&)#1}::operator()<envoy::config::cluster::v3::Cluster_CommonLbConfig>(envoy::config::cluster::v3::Cluster_CommonLbConfig const&) const Unexecuted instantiation: config.cc:auto Envoy::Extensions::LoadBalancingPolices::RingHash::Factory::create(Envoy::OptRef<Envoy::Upstream::LoadBalancerConfig const>, Envoy::Upstream::ClusterInfo const&, Envoy::Upstream::PrioritySet const&, Envoy::Runtime::Loader&, Envoy::Random::RandomGenerator&, Envoy::TimeSource&)::$_0::operator()<envoy::config::cluster::v3::Cluster_CommonLbConfig>(envoy::config::cluster::v3::Cluster_CommonLbConfig const&) const Unexecuted instantiation: ring_hash_lb.cc:auto Envoy::Upstream::RingHashLoadBalancer::RingHashLoadBalancer(Envoy::Upstream::PrioritySet const&, Envoy::Upstream::ClusterLbStats&, Envoy::Stats::Scope&, Envoy::Runtime::Loader&, Envoy::Random::RandomGenerator&, Envoy::OptRef<envoy::config::cluster::v3::Cluster_RingHashLbConfig const>, envoy::config::cluster::v3::Cluster_CommonLbConfig const&)::$_0::operator()<envoy::config::cluster::v3::Cluster_CommonLbConfig>(envoy::config::cluster::v3::Cluster_CommonLbConfig const&) const |
139 | | |
140 | | namespace Envoy { |
141 | | |
142 | | class TypeUtil { |
143 | | public: |
144 | | static absl::string_view typeUrlToDescriptorFullName(absl::string_view type_url); |
145 | | |
146 | | static std::string descriptorFullNameToTypeUrl(absl::string_view type); |
147 | | }; |
148 | | |
149 | | class RepeatedPtrUtil { |
150 | | public: |
151 | | static std::string join(const Protobuf::RepeatedPtrField<std::string>& source, |
152 | 0 | const std::string& delimiter) { |
153 | 0 | return absl::StrJoin(std::vector<std::string>(source.begin(), source.end()), delimiter); |
154 | 0 | } |
155 | | |
156 | | template <class ProtoType> |
157 | | static std::string debugString(const Protobuf::RepeatedPtrField<ProtoType>& source) { |
158 | | return accumulateToString<ProtoType>( |
159 | | source, [](const Protobuf::Message& message) { return message.DebugString(); }); |
160 | | } |
161 | | |
162 | | // Based on MessageUtil::hash() defined below. |
163 | | template <class ProtoType> |
164 | 0 | static std::size_t hash(const Protobuf::RepeatedPtrField<ProtoType>& source) { |
165 | 0 | std::string text; |
166 | 0 | #if defined(ENVOY_ENABLE_FULL_PROTOS) |
167 | 0 | { |
168 | 0 | Protobuf::TextFormat::Printer printer; |
169 | 0 | printer.SetExpandAny(true); |
170 | 0 | printer.SetUseFieldNumber(true); |
171 | 0 | printer.SetSingleLineMode(true); |
172 | 0 | printer.SetHideUnknownFields(true); |
173 | 0 | for (const auto& message : source) { |
174 | 0 | std::string text_message; |
175 | 0 | printer.PrintToString(message, &text_message); |
176 | 0 | absl::StrAppend(&text, text_message); |
177 | 0 | } |
178 | 0 | } |
179 | | #else |
180 | | for (const auto& message : source) { |
181 | | absl::StrAppend(&text, message.SerializeAsString()); |
182 | | } |
183 | | #endif |
184 | 0 | return HashUtil::xxHash64(text); |
185 | 0 | } |
186 | | |
187 | | /** |
188 | | * Converts a proto repeated field into a container of const Protobuf::Message unique_ptr's. |
189 | | * |
190 | | * @param repeated_field the proto repeated field to convert. |
191 | | * @return ReturnType the container of const Message pointers. |
192 | | */ |
193 | | template <typename ProtoType, typename ReturnType> |
194 | | static ReturnType |
195 | 223 | convertToConstMessagePtrContainer(const Protobuf::RepeatedPtrField<ProtoType>& repeated_field) { |
196 | 223 | ReturnType ret_container; |
197 | 223 | std::transform(repeated_field.begin(), repeated_field.end(), std::back_inserter(ret_container), |
198 | 3.44k | [](const ProtoType& proto_message) -> std::unique_ptr<const Protobuf::Message> { |
199 | 3.44k | Protobuf::Message* clone = proto_message.New(); |
200 | 3.44k | clone->CheckTypeAndMergeFrom(proto_message); |
201 | 3.44k | return std::unique_ptr<const Protobuf::Message>(clone); |
202 | 3.44k | }); |
203 | 223 | return ret_container; |
204 | 223 | } |
205 | | }; |
206 | | |
207 | | using ProtoValidationException = EnvoyException; |
208 | | |
209 | | /** |
210 | | * utility functions to call when throwing exceptions in header files |
211 | | */ |
212 | | class ProtoExceptionUtil { |
213 | | public: |
214 | | static void throwMissingFieldException(const std::string& field_name, |
215 | | const Protobuf::Message& message); |
216 | | static void throwProtoValidationException(const std::string& validation_error, |
217 | | const Protobuf::Message& message); |
218 | | }; |
219 | | |
220 | | class MessageUtil { |
221 | | public: |
222 | | // std::hash |
223 | 76.9k | std::size_t operator()(const Protobuf::Message& message) const { return hash(message); } |
224 | | |
225 | | // std::equals_to |
226 | 22.6k | bool operator()(const Protobuf::Message& lhs, const Protobuf::Message& rhs) const { |
227 | 22.6k | return Protobuf::util::MessageDifferencer::Equals(lhs, rhs); |
228 | 22.6k | } |
229 | | |
230 | | class FileExtensionValues { |
231 | | public: |
232 | | const std::string ProtoBinary = ".pb"; |
233 | | const std::string ProtoBinaryLengthDelimited = ".pb_length_delimited"; |
234 | | const std::string ProtoText = ".pb_text"; |
235 | | const std::string Json = ".json"; |
236 | | const std::string Yaml = ".yaml"; |
237 | | const std::string Yml = ".yml"; |
238 | | }; |
239 | | |
240 | | using FileExtensions = ConstSingleton<FileExtensionValues>; |
241 | | |
242 | | /** |
243 | | * A hash function uses Protobuf::TextFormat to force deterministic serialization recursively |
244 | | * including known types in google.protobuf.Any. See |
245 | | * https://github.com/protocolbuffers/protobuf/issues/5731 for the context. |
246 | | * Using this function is discouraged, see discussion in |
247 | | * https://github.com/envoyproxy/envoy/issues/8301. |
248 | | */ |
249 | | static std::size_t hash(const Protobuf::Message& message); |
250 | | |
251 | | #ifdef ENVOY_ENABLE_YAML |
252 | | static void loadFromJson(const std::string& json, Protobuf::Message& message, |
253 | | ProtobufMessage::ValidationVisitor& validation_visitor); |
254 | | /** |
255 | | * Return ok only when strict conversion(don't ignore unknown field) succeeds. |
256 | | * Return error status for strict conversion and set has_unknown_field to true if relaxed |
257 | | * conversion(ignore unknown field) succeeds. |
258 | | * Return error status for relaxed conversion and set has_unknown_field to false if relaxed |
259 | | * conversion(ignore unknown field) fails. |
260 | | */ |
261 | | static absl::Status loadFromJsonNoThrow(const std::string& json, Protobuf::Message& message, |
262 | | bool& has_unknown_fileld); |
263 | | static void loadFromJson(const std::string& json, ProtobufWkt::Struct& message); |
264 | | static void loadFromYaml(const std::string& yaml, Protobuf::Message& message, |
265 | | ProtobufMessage::ValidationVisitor& validation_visitor); |
266 | | #endif |
267 | | |
268 | | // This function attempts to load Envoy configuration from the specified file |
269 | | // based on the file type. |
270 | | // It handles .pb .pb_text .json .yaml and .yml files which are well |
271 | | // structured based on the file type. |
272 | | // It has somewhat inconsistent handling of invalid file contents, |
273 | | // occasionally failing over to try another type of parsing, or silently |
274 | | // failing instead of throwing an exception. |
275 | | static void loadFromFile(const std::string& path, Protobuf::Message& message, |
276 | | ProtobufMessage::ValidationVisitor& validation_visitor, Api::Api& api); |
277 | | |
278 | | /** |
279 | | * Checks for use of deprecated fields in message and all sub-messages. |
280 | | * @param message message to validate. |
281 | | * @param validation_visitor the validation visitor to use. |
282 | | * @param recurse_into_any whether to recurse into Any messages during unexpected checking. |
283 | | * @throw EnvoyException if deprecated fields are used and listed |
284 | | * in disallowed_features in runtime_features.h |
285 | | */ |
286 | | static void checkForUnexpectedFields(const Protobuf::Message& message, |
287 | | ProtobufMessage::ValidationVisitor& validation_visitor, |
288 | | bool recurse_into_any = false); |
289 | | |
290 | | /** |
291 | | * Validates that duration fields in the config are valid. |
292 | | * @param message message to validate. |
293 | | * @param recurse_into_any whether to recurse into Any messages during unexpected checking. |
294 | | * @throw EnvoyException if a duration field is invalid. |
295 | | */ |
296 | | static void validateDurationFields(const Protobuf::Message& message, |
297 | | bool recurse_into_any = false); |
298 | | |
299 | | /** |
300 | | * Perform a PGV check on the entire message tree, recursing into Any messages as needed. |
301 | | */ |
302 | | static void recursivePgvCheck(const Protobuf::Message& message); |
303 | | |
304 | | /** |
305 | | * Validate protoc-gen-validate constraints on a given protobuf as well as performing |
306 | | * unexpected field validation. |
307 | | * Note the corresponding `.pb.validate.h` for the message has to be included in the source file |
308 | | * of caller. |
309 | | * @param message message to validate. |
310 | | * @param validation_visitor the validation visitor to use. |
311 | | * @param recurse_into_any whether to recurse into Any messages during unexpected checking. |
312 | | * @throw EnvoyException if the message does not satisfy its type constraints. |
313 | | */ |
314 | | template <class MessageType> |
315 | | static void validate(const MessageType& message, |
316 | | ProtobufMessage::ValidationVisitor& validation_visitor, |
317 | 300k | bool recurse_into_any = false) { |
318 | | // TODO(adisuissa): There are multiple recursive traversals done by the |
319 | | // calls in this function. This can be refactored into a single recursive |
320 | | // traversal that invokes the various validators. |
321 | | |
322 | | // Log warnings or throw errors if deprecated fields or unknown fields are in use. |
323 | 300k | if (!validation_visitor.skipValidation()) { |
324 | 300k | checkForUnexpectedFields(message, validation_visitor, recurse_into_any); |
325 | 300k | } |
326 | | |
327 | | // Throw an exception if the config has an invalid Duration field. This is needed |
328 | | // because Envoy validates the duration in a strict way that is not supported by PGV. |
329 | 300k | validateDurationFields(message, recurse_into_any); |
330 | | |
331 | | // TODO(mattklein123): This will recurse the message twice, once above and once for PGV. When |
332 | | // we move to always recursing, satisfying the TODO below, we should merge into a single |
333 | | // recursion for performance reasons. |
334 | 300k | if (recurse_into_any) { |
335 | 0 | return recursivePgvCheck(message); |
336 | 0 | } |
337 | | |
338 | | // TODO(mattklein123): Now that PGV is capable of doing recursive message checks on abstract |
339 | | // types, we can remove bottom up validation from the entire codebase and only validate |
340 | | // at top level ingestion (bootstrap, discovery response). This is a large change and will be |
341 | | // done as a separate PR. This change will also allow removing templating from most/all of |
342 | | // related functions. |
343 | 300k | std::string err; |
344 | 300k | if (!Validate(message, &err)) { |
345 | 8.40k | ProtoExceptionUtil::throwProtoValidationException(err, message); |
346 | 8.40k | } |
347 | 300k | } 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 | 317 | 5.07k | bool recurse_into_any = false) { | 318 | | // TODO(adisuissa): There are multiple recursive traversals done by the | 319 | | // calls in this function. This can be refactored into a single recursive | 320 | | // traversal that invokes the various validators. | 321 | | | 322 | | // Log warnings or throw errors if deprecated fields or unknown fields are in use. | 323 | 5.07k | if (!validation_visitor.skipValidation()) { | 324 | 5.07k | checkForUnexpectedFields(message, validation_visitor, recurse_into_any); | 325 | 5.07k | } | 326 | | | 327 | | // Throw an exception if the config has an invalid Duration field. This is needed | 328 | | // because Envoy validates the duration in a strict way that is not supported by PGV. | 329 | 5.07k | validateDurationFields(message, recurse_into_any); | 330 | | | 331 | | // TODO(mattklein123): This will recurse the message twice, once above and once for PGV. When | 332 | | // we move to always recursing, satisfying the TODO below, we should merge into a single | 333 | | // recursion for performance reasons. | 334 | 5.07k | if (recurse_into_any) { | 335 | 0 | return recursivePgvCheck(message); | 336 | 0 | } | 337 | | | 338 | | // TODO(mattklein123): Now that PGV is capable of doing recursive message checks on abstract | 339 | | // types, we can remove bottom up validation from the entire codebase and only validate | 340 | | // at top level ingestion (bootstrap, discovery response). This is a large change and will be | 341 | | // done as a separate PR. This change will also allow removing templating from most/all of | 342 | | // related functions. | 343 | 5.07k | std::string err; | 344 | 5.07k | if (!Validate(message, &err)) { | 345 | 610 | ProtoExceptionUtil::throwProtoValidationException(err, message); | 346 | 610 | } | 347 | 5.07k | } |
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 | 317 | 6.30k | bool recurse_into_any = false) { | 318 | | // TODO(adisuissa): There are multiple recursive traversals done by the | 319 | | // calls in this function. This can be refactored into a single recursive | 320 | | // traversal that invokes the various validators. | 321 | | | 322 | | // Log warnings or throw errors if deprecated fields or unknown fields are in use. | 323 | 6.30k | if (!validation_visitor.skipValidation()) { | 324 | 6.30k | checkForUnexpectedFields(message, validation_visitor, recurse_into_any); | 325 | 6.30k | } | 326 | | | 327 | | // Throw an exception if the config has an invalid Duration field. This is needed | 328 | | // because Envoy validates the duration in a strict way that is not supported by PGV. | 329 | 6.30k | validateDurationFields(message, recurse_into_any); | 330 | | | 331 | | // TODO(mattklein123): This will recurse the message twice, once above and once for PGV. When | 332 | | // we move to always recursing, satisfying the TODO below, we should merge into a single | 333 | | // recursion for performance reasons. | 334 | 6.30k | if (recurse_into_any) { | 335 | 0 | return recursivePgvCheck(message); | 336 | 0 | } | 337 | | | 338 | | // TODO(mattklein123): Now that PGV is capable of doing recursive message checks on abstract | 339 | | // types, we can remove bottom up validation from the entire codebase and only validate | 340 | | // at top level ingestion (bootstrap, discovery response). This is a large change and will be | 341 | | // done as a separate PR. This change will also allow removing templating from most/all of | 342 | | // related functions. | 343 | 6.30k | std::string err; | 344 | 6.30k | if (!Validate(message, &err)) { | 345 | 0 | ProtoExceptionUtil::throwProtoValidationException(err, message); | 346 | 0 | } | 347 | 6.30k | } |
void Envoy::MessageUtil::validate<envoy::extensions::upstreams::http::v3::HttpProtocolOptions>(envoy::extensions::upstreams::http::v3::HttpProtocolOptions const&, Envoy::ProtobufMessage::ValidationVisitor&, bool) Line | Count | Source | 317 | 1.54k | bool recurse_into_any = false) { | 318 | | // TODO(adisuissa): There are multiple recursive traversals done by the | 319 | | // calls in this function. This can be refactored into a single recursive | 320 | | // traversal that invokes the various validators. | 321 | | | 322 | | // Log warnings or throw errors if deprecated fields or unknown fields are in use. | 323 | 1.54k | if (!validation_visitor.skipValidation()) { | 324 | 1.54k | checkForUnexpectedFields(message, validation_visitor, recurse_into_any); | 325 | 1.54k | } | 326 | | | 327 | | // Throw an exception if the config has an invalid Duration field. This is needed | 328 | | // because Envoy validates the duration in a strict way that is not supported by PGV. | 329 | 1.54k | validateDurationFields(message, recurse_into_any); | 330 | | | 331 | | // TODO(mattklein123): This will recurse the message twice, once above and once for PGV. When | 332 | | // we move to always recursing, satisfying the TODO below, we should merge into a single | 333 | | // recursion for performance reasons. | 334 | 1.54k | if (recurse_into_any) { | 335 | 0 | return recursivePgvCheck(message); | 336 | 0 | } | 337 | | | 338 | | // TODO(mattklein123): Now that PGV is capable of doing recursive message checks on abstract | 339 | | // types, we can remove bottom up validation from the entire codebase and only validate | 340 | | // at top level ingestion (bootstrap, discovery response). This is a large change and will be | 341 | | // done as a separate PR. This change will also allow removing templating from most/all of | 342 | | // related functions. | 343 | 1.54k | std::string err; | 344 | 1.54k | if (!Validate(message, &err)) { | 345 | 0 | ProtoExceptionUtil::throwProtoValidationException(err, message); | 346 | 0 | } | 347 | 1.54k | } |
Unexecuted instantiation: void Envoy::MessageUtil::validate<envoy::extensions::upstreams::tcp::v3::TcpProtocolOptions>(envoy::extensions::upstreams::tcp::v3::TcpProtocolOptions const&, Envoy::ProtobufMessage::ValidationVisitor&, bool) 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 | 317 | 806 | bool recurse_into_any = false) { | 318 | | // TODO(adisuissa): There are multiple recursive traversals done by the | 319 | | // calls in this function. This can be refactored into a single recursive | 320 | | // traversal that invokes the various validators. | 321 | | | 322 | | // Log warnings or throw errors if deprecated fields or unknown fields are in use. | 323 | 806 | if (!validation_visitor.skipValidation()) { | 324 | 806 | checkForUnexpectedFields(message, validation_visitor, recurse_into_any); | 325 | 806 | } | 326 | | | 327 | | // Throw an exception if the config has an invalid Duration field. This is needed | 328 | | // because Envoy validates the duration in a strict way that is not supported by PGV. | 329 | 806 | validateDurationFields(message, recurse_into_any); | 330 | | | 331 | | // TODO(mattklein123): This will recurse the message twice, once above and once for PGV. When | 332 | | // we move to always recursing, satisfying the TODO below, we should merge into a single | 333 | | // recursion for performance reasons. | 334 | 806 | if (recurse_into_any) { | 335 | 0 | return recursivePgvCheck(message); | 336 | 0 | } | 337 | | | 338 | | // TODO(mattklein123): Now that PGV is capable of doing recursive message checks on abstract | 339 | | // types, we can remove bottom up validation from the entire codebase and only validate | 340 | | // at top level ingestion (bootstrap, discovery response). This is a large change and will be | 341 | | // done as a separate PR. This change will also allow removing templating from most/all of | 342 | | // related functions. | 343 | 806 | std::string err; | 344 | 806 | if (!Validate(message, &err)) { | 345 | 0 | ProtoExceptionUtil::throwProtoValidationException(err, message); | 346 | 0 | } | 347 | 806 | } |
void Envoy::MessageUtil::validate<envoy::config::cluster::v3::Cluster>(envoy::config::cluster::v3::Cluster const&, Envoy::ProtobufMessage::ValidationVisitor&, bool) Line | Count | Source | 317 | 14 | bool recurse_into_any = false) { | 318 | | // TODO(adisuissa): There are multiple recursive traversals done by the | 319 | | // calls in this function. This can be refactored into a single recursive | 320 | | // traversal that invokes the various validators. | 321 | | | 322 | | // Log warnings or throw errors if deprecated fields or unknown fields are in use. | 323 | 14 | if (!validation_visitor.skipValidation()) { | 324 | 14 | checkForUnexpectedFields(message, validation_visitor, recurse_into_any); | 325 | 14 | } | 326 | | | 327 | | // Throw an exception if the config has an invalid Duration field. This is needed | 328 | | // because Envoy validates the duration in a strict way that is not supported by PGV. | 329 | 14 | validateDurationFields(message, recurse_into_any); | 330 | | | 331 | | // TODO(mattklein123): This will recurse the message twice, once above and once for PGV. When | 332 | | // we move to always recursing, satisfying the TODO below, we should merge into a single | 333 | | // recursion for performance reasons. | 334 | 14 | if (recurse_into_any) { | 335 | 0 | return recursivePgvCheck(message); | 336 | 0 | } | 337 | | | 338 | | // TODO(mattklein123): Now that PGV is capable of doing recursive message checks on abstract | 339 | | // types, we can remove bottom up validation from the entire codebase and only validate | 340 | | // at top level ingestion (bootstrap, discovery response). This is a large change and will be | 341 | | // done as a separate PR. This change will also allow removing templating from most/all of | 342 | | // related functions. | 343 | 14 | std::string err; | 344 | 14 | if (!Validate(message, &err)) { | 345 | 0 | ProtoExceptionUtil::throwProtoValidationException(err, message); | 346 | 0 | } | 347 | 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 | 317 | 2.40k | bool recurse_into_any = false) { | 318 | | // TODO(adisuissa): There are multiple recursive traversals done by the | 319 | | // calls in this function. This can be refactored into a single recursive | 320 | | // traversal that invokes the various validators. | 321 | | | 322 | | // Log warnings or throw errors if deprecated fields or unknown fields are in use. | 323 | 2.40k | if (!validation_visitor.skipValidation()) { | 324 | 2.40k | checkForUnexpectedFields(message, validation_visitor, recurse_into_any); | 325 | 2.40k | } | 326 | | | 327 | | // Throw an exception if the config has an invalid Duration field. This is needed | 328 | | // because Envoy validates the duration in a strict way that is not supported by PGV. | 329 | 2.40k | validateDurationFields(message, recurse_into_any); | 330 | | | 331 | | // TODO(mattklein123): This will recurse the message twice, once above and once for PGV. When | 332 | | // we move to always recursing, satisfying the TODO below, we should merge into a single | 333 | | // recursion for performance reasons. | 334 | 2.40k | if (recurse_into_any) { | 335 | 0 | return recursivePgvCheck(message); | 336 | 0 | } | 337 | | | 338 | | // TODO(mattklein123): Now that PGV is capable of doing recursive message checks on abstract | 339 | | // types, we can remove bottom up validation from the entire codebase and only validate | 340 | | // at top level ingestion (bootstrap, discovery response). This is a large change and will be | 341 | | // done as a separate PR. This change will also allow removing templating from most/all of | 342 | | // related functions. | 343 | 2.40k | std::string err; | 344 | 2.40k | if (!Validate(message, &err)) { | 345 | 0 | ProtoExceptionUtil::throwProtoValidationException(err, message); | 346 | 0 | } | 347 | 2.40k | } |
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 | 317 | 9.09k | bool recurse_into_any = false) { | 318 | | // TODO(adisuissa): There are multiple recursive traversals done by the | 319 | | // calls in this function. This can be refactored into a single recursive | 320 | | // traversal that invokes the various validators. | 321 | | | 322 | | // Log warnings or throw errors if deprecated fields or unknown fields are in use. | 323 | 9.09k | if (!validation_visitor.skipValidation()) { | 324 | 9.09k | checkForUnexpectedFields(message, validation_visitor, recurse_into_any); | 325 | 9.09k | } | 326 | | | 327 | | // Throw an exception if the config has an invalid Duration field. This is needed | 328 | | // because Envoy validates the duration in a strict way that is not supported by PGV. | 329 | 9.09k | validateDurationFields(message, recurse_into_any); | 330 | | | 331 | | // TODO(mattklein123): This will recurse the message twice, once above and once for PGV. When | 332 | | // we move to always recursing, satisfying the TODO below, we should merge into a single | 333 | | // recursion for performance reasons. | 334 | 9.09k | if (recurse_into_any) { | 335 | 0 | return recursivePgvCheck(message); | 336 | 0 | } | 337 | | | 338 | | // TODO(mattklein123): Now that PGV is capable of doing recursive message checks on abstract | 339 | | // types, we can remove bottom up validation from the entire codebase and only validate | 340 | | // at top level ingestion (bootstrap, discovery response). This is a large change and will be | 341 | | // done as a separate PR. This change will also allow removing templating from most/all of | 342 | | // related functions. | 343 | 9.09k | std::string err; | 344 | 9.09k | if (!Validate(message, &err)) { | 345 | 281 | ProtoExceptionUtil::throwProtoValidationException(err, message); | 346 | 281 | } | 347 | 9.09k | } |
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::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 | 317 | 21.1k | bool recurse_into_any = false) { | 318 | | // TODO(adisuissa): There are multiple recursive traversals done by the | 319 | | // calls in this function. This can be refactored into a single recursive | 320 | | // traversal that invokes the various validators. | 321 | | | 322 | | // Log warnings or throw errors if deprecated fields or unknown fields are in use. | 323 | 21.1k | if (!validation_visitor.skipValidation()) { | 324 | 21.1k | checkForUnexpectedFields(message, validation_visitor, recurse_into_any); | 325 | 21.1k | } | 326 | | | 327 | | // Throw an exception if the config has an invalid Duration field. This is needed | 328 | | // because Envoy validates the duration in a strict way that is not supported by PGV. | 329 | 21.1k | validateDurationFields(message, recurse_into_any); | 330 | | | 331 | | // TODO(mattklein123): This will recurse the message twice, once above and once for PGV. When | 332 | | // we move to always recursing, satisfying the TODO below, we should merge into a single | 333 | | // recursion for performance reasons. | 334 | 21.1k | if (recurse_into_any) { | 335 | 0 | return recursivePgvCheck(message); | 336 | 0 | } | 337 | | | 338 | | // TODO(mattklein123): Now that PGV is capable of doing recursive message checks on abstract | 339 | | // types, we can remove bottom up validation from the entire codebase and only validate | 340 | | // at top level ingestion (bootstrap, discovery response). This is a large change and will be | 341 | | // done as a separate PR. This change will also allow removing templating from most/all of | 342 | | // related functions. | 343 | 21.1k | std::string err; | 344 | 21.1k | if (!Validate(message, &err)) { | 345 | 1 | ProtoExceptionUtil::throwProtoValidationException(err, message); | 346 | 1 | } | 347 | 21.1k | } |
void Envoy::MessageUtil::validate<envoy::type::matcher::v3::HttpResponseHeaderMatchInput>(envoy::type::matcher::v3::HttpResponseHeaderMatchInput const&, Envoy::ProtobufMessage::ValidationVisitor&, bool) Line | Count | Source | 317 | 6.12k | bool recurse_into_any = false) { | 318 | | // TODO(adisuissa): There are multiple recursive traversals done by the | 319 | | // calls in this function. This can be refactored into a single recursive | 320 | | // traversal that invokes the various validators. | 321 | | | 322 | | // Log warnings or throw errors if deprecated fields or unknown fields are in use. | 323 | 6.12k | if (!validation_visitor.skipValidation()) { | 324 | 6.12k | checkForUnexpectedFields(message, validation_visitor, recurse_into_any); | 325 | 6.12k | } | 326 | | | 327 | | // Throw an exception if the config has an invalid Duration field. This is needed | 328 | | // because Envoy validates the duration in a strict way that is not supported by PGV. | 329 | 6.12k | validateDurationFields(message, recurse_into_any); | 330 | | | 331 | | // TODO(mattklein123): This will recurse the message twice, once above and once for PGV. When | 332 | | // we move to always recursing, satisfying the TODO below, we should merge into a single | 333 | | // recursion for performance reasons. | 334 | 6.12k | if (recurse_into_any) { | 335 | 0 | return recursivePgvCheck(message); | 336 | 0 | } | 337 | | | 338 | | // TODO(mattklein123): Now that PGV is capable of doing recursive message checks on abstract | 339 | | // types, we can remove bottom up validation from the entire codebase and only validate | 340 | | // at top level ingestion (bootstrap, discovery response). This is a large change and will be | 341 | | // done as a separate PR. This change will also allow removing templating from most/all of | 342 | | // related functions. | 343 | 6.12k | std::string err; | 344 | 6.12k | if (!Validate(message, &err)) { | 345 | 2 | ProtoExceptionUtil::throwProtoValidationException(err, message); | 346 | 2 | } | 347 | 6.12k | } |
void Envoy::MessageUtil::validate<envoy::type::matcher::v3::HttpRequestTrailerMatchInput>(envoy::type::matcher::v3::HttpRequestTrailerMatchInput const&, Envoy::ProtobufMessage::ValidationVisitor&, bool) Line | Count | Source | 317 | 4.74k | bool recurse_into_any = false) { | 318 | | // TODO(adisuissa): There are multiple recursive traversals done by the | 319 | | // calls in this function. This can be refactored into a single recursive | 320 | | // traversal that invokes the various validators. | 321 | | | 322 | | // Log warnings or throw errors if deprecated fields or unknown fields are in use. | 323 | 4.74k | if (!validation_visitor.skipValidation()) { | 324 | 4.74k | checkForUnexpectedFields(message, validation_visitor, recurse_into_any); | 325 | 4.74k | } | 326 | | | 327 | | // Throw an exception if the config has an invalid Duration field. This is needed | 328 | | // because Envoy validates the duration in a strict way that is not supported by PGV. | 329 | 4.74k | validateDurationFields(message, recurse_into_any); | 330 | | | 331 | | // TODO(mattklein123): This will recurse the message twice, once above and once for PGV. When | 332 | | // we move to always recursing, satisfying the TODO below, we should merge into a single | 333 | | // recursion for performance reasons. | 334 | 4.74k | if (recurse_into_any) { | 335 | 0 | return recursivePgvCheck(message); | 336 | 0 | } | 337 | | | 338 | | // TODO(mattklein123): Now that PGV is capable of doing recursive message checks on abstract | 339 | | // types, we can remove bottom up validation from the entire codebase and only validate | 340 | | // at top level ingestion (bootstrap, discovery response). This is a large change and will be | 341 | | // done as a separate PR. This change will also allow removing templating from most/all of | 342 | | // related functions. | 343 | 4.74k | std::string err; | 344 | 4.74k | if (!Validate(message, &err)) { | 345 | 1 | ProtoExceptionUtil::throwProtoValidationException(err, message); | 346 | 1 | } | 347 | 4.74k | } |
void Envoy::MessageUtil::validate<envoy::type::matcher::v3::HttpResponseTrailerMatchInput>(envoy::type::matcher::v3::HttpResponseTrailerMatchInput const&, Envoy::ProtobufMessage::ValidationVisitor&, bool) Line | Count | Source | 317 | 953 | bool recurse_into_any = false) { | 318 | | // TODO(adisuissa): There are multiple recursive traversals done by the | 319 | | // calls in this function. This can be refactored into a single recursive | 320 | | // traversal that invokes the various validators. | 321 | | | 322 | | // Log warnings or throw errors if deprecated fields or unknown fields are in use. | 323 | 953 | if (!validation_visitor.skipValidation()) { | 324 | 953 | checkForUnexpectedFields(message, validation_visitor, recurse_into_any); | 325 | 953 | } | 326 | | | 327 | | // Throw an exception if the config has an invalid Duration field. This is needed | 328 | | // because Envoy validates the duration in a strict way that is not supported by PGV. | 329 | 953 | validateDurationFields(message, recurse_into_any); | 330 | | | 331 | | // TODO(mattklein123): This will recurse the message twice, once above and once for PGV. When | 332 | | // we move to always recursing, satisfying the TODO below, we should merge into a single | 333 | | // recursion for performance reasons. | 334 | 953 | if (recurse_into_any) { | 335 | 0 | return recursivePgvCheck(message); | 336 | 0 | } | 337 | | | 338 | | // TODO(mattklein123): Now that PGV is capable of doing recursive message checks on abstract | 339 | | // types, we can remove bottom up validation from the entire codebase and only validate | 340 | | // at top level ingestion (bootstrap, discovery response). This is a large change and will be | 341 | | // done as a separate PR. This change will also allow removing templating from most/all of | 342 | | // related functions. | 343 | 953 | std::string err; | 344 | 953 | if (!Validate(message, &err)) { | 345 | 2 | ProtoExceptionUtil::throwProtoValidationException(err, message); | 346 | 2 | } | 347 | 953 | } |
void Envoy::MessageUtil::validate<envoy::type::matcher::v3::HttpRequestQueryParamMatchInput>(envoy::type::matcher::v3::HttpRequestQueryParamMatchInput const&, Envoy::ProtobufMessage::ValidationVisitor&, bool) Line | Count | Source | 317 | 1 | bool recurse_into_any = false) { | 318 | | // TODO(adisuissa): There are multiple recursive traversals done by the | 319 | | // calls in this function. This can be refactored into a single recursive | 320 | | // traversal that invokes the various validators. | 321 | | | 322 | | // Log warnings or throw errors if deprecated fields or unknown fields are in use. | 323 | 1 | if (!validation_visitor.skipValidation()) { | 324 | 1 | checkForUnexpectedFields(message, validation_visitor, recurse_into_any); | 325 | 1 | } | 326 | | | 327 | | // Throw an exception if the config has an invalid Duration field. This is needed | 328 | | // because Envoy validates the duration in a strict way that is not supported by PGV. | 329 | 1 | validateDurationFields(message, recurse_into_any); | 330 | | | 331 | | // TODO(mattklein123): This will recurse the message twice, once above and once for PGV. When | 332 | | // we move to always recursing, satisfying the TODO below, we should merge into a single | 333 | | // recursion for performance reasons. | 334 | 1 | if (recurse_into_any) { | 335 | 0 | return recursivePgvCheck(message); | 336 | 0 | } | 337 | | | 338 | | // TODO(mattklein123): Now that PGV is capable of doing recursive message checks on abstract | 339 | | // types, we can remove bottom up validation from the entire codebase and only validate | 340 | | // at top level ingestion (bootstrap, discovery response). This is a large change and will be | 341 | | // done as a separate PR. This change will also allow removing templating from most/all of | 342 | | // related functions. | 343 | 1 | std::string err; | 344 | 1 | if (!Validate(message, &err)) { | 345 | 1 | ProtoExceptionUtil::throwProtoValidationException(err, message); | 346 | 1 | } | 347 | 1 | } |
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 | 317 | 16.1k | bool recurse_into_any = false) { | 318 | | // TODO(adisuissa): There are multiple recursive traversals done by the | 319 | | // calls in this function. This can be refactored into a single recursive | 320 | | // traversal that invokes the various validators. | 321 | | | 322 | | // Log warnings or throw errors if deprecated fields or unknown fields are in use. | 323 | 16.1k | if (!validation_visitor.skipValidation()) { | 324 | 16.1k | checkForUnexpectedFields(message, validation_visitor, recurse_into_any); | 325 | 16.1k | } | 326 | | | 327 | | // Throw an exception if the config has an invalid Duration field. This is needed | 328 | | // because Envoy validates the duration in a strict way that is not supported by PGV. | 329 | 16.1k | validateDurationFields(message, recurse_into_any); | 330 | | | 331 | | // TODO(mattklein123): This will recurse the message twice, once above and once for PGV. When | 332 | | // we move to always recursing, satisfying the TODO below, we should merge into a single | 333 | | // recursion for performance reasons. | 334 | 16.1k | if (recurse_into_any) { | 335 | 0 | return recursivePgvCheck(message); | 336 | 0 | } | 337 | | | 338 | | // TODO(mattklein123): Now that PGV is capable of doing recursive message checks on abstract | 339 | | // types, we can remove bottom up validation from the entire codebase and only validate | 340 | | // at top level ingestion (bootstrap, discovery response). This is a large change and will be | 341 | | // done as a separate PR. This change will also allow removing templating from most/all of | 342 | | // related functions. | 343 | 16.1k | std::string err; | 344 | 16.1k | if (!Validate(message, &err)) { | 345 | 0 | ProtoExceptionUtil::throwProtoValidationException(err, message); | 346 | 0 | } | 347 | 16.1k | } |
void Envoy::MessageUtil::validate<envoy::config::route::v3::Route>(envoy::config::route::v3::Route const&, Envoy::ProtobufMessage::ValidationVisitor&, bool) Line | Count | Source | 317 | 64.9k | bool recurse_into_any = false) { | 318 | | // TODO(adisuissa): There are multiple recursive traversals done by the | 319 | | // calls in this function. This can be refactored into a single recursive | 320 | | // traversal that invokes the various validators. | 321 | | | 322 | | // Log warnings or throw errors if deprecated fields or unknown fields are in use. | 323 | 64.9k | if (!validation_visitor.skipValidation()) { | 324 | 64.9k | checkForUnexpectedFields(message, validation_visitor, recurse_into_any); | 325 | 64.9k | } | 326 | | | 327 | | // Throw an exception if the config has an invalid Duration field. This is needed | 328 | | // because Envoy validates the duration in a strict way that is not supported by PGV. | 329 | 64.9k | validateDurationFields(message, recurse_into_any); | 330 | | | 331 | | // TODO(mattklein123): This will recurse the message twice, once above and once for PGV. When | 332 | | // we move to always recursing, satisfying the TODO below, we should merge into a single | 333 | | // recursion for performance reasons. | 334 | 64.9k | if (recurse_into_any) { | 335 | 0 | return recursivePgvCheck(message); | 336 | 0 | } | 337 | | | 338 | | // TODO(mattklein123): Now that PGV is capable of doing recursive message checks on abstract | 339 | | // types, we can remove bottom up validation from the entire codebase and only validate | 340 | | // at top level ingestion (bootstrap, discovery response). This is a large change and will be | 341 | | // done as a separate PR. This change will also allow removing templating from most/all of | 342 | | // related functions. | 343 | 64.9k | std::string err; | 344 | 64.9k | if (!Validate(message, &err)) { | 345 | 365 | ProtoExceptionUtil::throwProtoValidationException(err, message); | 346 | 365 | } | 347 | 64.9k | } |
Unexecuted instantiation: void Envoy::MessageUtil::validate<envoy::config::route::v3::RouteList>(envoy::config::route::v3::RouteList 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) 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 | 317 | 1.61k | bool recurse_into_any = false) { | 318 | | // TODO(adisuissa): There are multiple recursive traversals done by the | 319 | | // calls in this function. This can be refactored into a single recursive | 320 | | // traversal that invokes the various validators. | 321 | | | 322 | | // Log warnings or throw errors if deprecated fields or unknown fields are in use. | 323 | 1.61k | if (!validation_visitor.skipValidation()) { | 324 | 1.61k | checkForUnexpectedFields(message, validation_visitor, recurse_into_any); | 325 | 1.61k | } | 326 | | | 327 | | // Throw an exception if the config has an invalid Duration field. This is needed | 328 | | // because Envoy validates the duration in a strict way that is not supported by PGV. | 329 | 1.61k | validateDurationFields(message, recurse_into_any); | 330 | | | 331 | | // TODO(mattklein123): This will recurse the message twice, once above and once for PGV. When | 332 | | // we move to always recursing, satisfying the TODO below, we should merge into a single | 333 | | // recursion for performance reasons. | 334 | 1.61k | if (recurse_into_any) { | 335 | 0 | return recursivePgvCheck(message); | 336 | 0 | } | 337 | | | 338 | | // TODO(mattklein123): Now that PGV is capable of doing recursive message checks on abstract | 339 | | // types, we can remove bottom up validation from the entire codebase and only validate | 340 | | // at top level ingestion (bootstrap, discovery response). This is a large change and will be | 341 | | // done as a separate PR. This change will also allow removing templating from most/all of | 342 | | // related functions. | 343 | 1.61k | std::string err; | 344 | 1.61k | if (!Validate(message, &err)) { | 345 | 1 | ProtoExceptionUtil::throwProtoValidationException(err, message); | 346 | 1 | } | 347 | 1.61k | } |
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 | 317 | 1.08k | bool recurse_into_any = false) { | 318 | | // TODO(adisuissa): There are multiple recursive traversals done by the | 319 | | // calls in this function. This can be refactored into a single recursive | 320 | | // traversal that invokes the various validators. | 321 | | | 322 | | // Log warnings or throw errors if deprecated fields or unknown fields are in use. | 323 | 1.08k | if (!validation_visitor.skipValidation()) { | 324 | 1.08k | checkForUnexpectedFields(message, validation_visitor, recurse_into_any); | 325 | 1.08k | } | 326 | | | 327 | | // Throw an exception if the config has an invalid Duration field. This is needed | 328 | | // because Envoy validates the duration in a strict way that is not supported by PGV. | 329 | 1.08k | validateDurationFields(message, recurse_into_any); | 330 | | | 331 | | // TODO(mattklein123): This will recurse the message twice, once above and once for PGV. When | 332 | | // we move to always recursing, satisfying the TODO below, we should merge into a single | 333 | | // recursion for performance reasons. | 334 | 1.08k | if (recurse_into_any) { | 335 | 0 | return recursivePgvCheck(message); | 336 | 0 | } | 337 | | | 338 | | // TODO(mattklein123): Now that PGV is capable of doing recursive message checks on abstract | 339 | | // types, we can remove bottom up validation from the entire codebase and only validate | 340 | | // at top level ingestion (bootstrap, discovery response). This is a large change and will be | 341 | | // done as a separate PR. This change will also allow removing templating from most/all of | 342 | | // related functions. | 343 | 1.08k | std::string err; | 344 | 1.08k | if (!Validate(message, &err)) { | 345 | 1 | ProtoExceptionUtil::throwProtoValidationException(err, message); | 346 | 1 | } | 347 | 1.08k | } |
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 | 317 | 6.26k | bool recurse_into_any = false) { | 318 | | // TODO(adisuissa): There are multiple recursive traversals done by the | 319 | | // calls in this function. This can be refactored into a single recursive | 320 | | // traversal that invokes the various validators. | 321 | | | 322 | | // Log warnings or throw errors if deprecated fields or unknown fields are in use. | 323 | 6.26k | if (!validation_visitor.skipValidation()) { | 324 | 6.26k | checkForUnexpectedFields(message, validation_visitor, recurse_into_any); | 325 | 6.26k | } | 326 | | | 327 | | // Throw an exception if the config has an invalid Duration field. This is needed | 328 | | // because Envoy validates the duration in a strict way that is not supported by PGV. | 329 | 6.26k | validateDurationFields(message, recurse_into_any); | 330 | | | 331 | | // TODO(mattklein123): This will recurse the message twice, once above and once for PGV. When | 332 | | // we move to always recursing, satisfying the TODO below, we should merge into a single | 333 | | // recursion for performance reasons. | 334 | 6.26k | if (recurse_into_any) { | 335 | 0 | return recursivePgvCheck(message); | 336 | 0 | } | 337 | | | 338 | | // TODO(mattklein123): Now that PGV is capable of doing recursive message checks on abstract | 339 | | // types, we can remove bottom up validation from the entire codebase and only validate | 340 | | // at top level ingestion (bootstrap, discovery response). This is a large change and will be | 341 | | // done as a separate PR. This change will also allow removing templating from most/all of | 342 | | // related functions. | 343 | 6.26k | std::string err; | 344 | 6.26k | if (!Validate(message, &err)) { | 345 | 0 | ProtoExceptionUtil::throwProtoValidationException(err, message); | 346 | 0 | } | 347 | 6.26k | } |
Unexecuted instantiation: void Envoy::MessageUtil::validate<envoy::service::runtime::v3::Runtime>(envoy::service::runtime::v3::Runtime const&, Envoy::ProtobufMessage::ValidationVisitor&, bool) 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 | 317 | 4.10k | bool recurse_into_any = false) { | 318 | | // TODO(adisuissa): There are multiple recursive traversals done by the | 319 | | // calls in this function. This can be refactored into a single recursive | 320 | | // traversal that invokes the various validators. | 321 | | | 322 | | // Log warnings or throw errors if deprecated fields or unknown fields are in use. | 323 | 4.10k | if (!validation_visitor.skipValidation()) { | 324 | 4.10k | checkForUnexpectedFields(message, validation_visitor, recurse_into_any); | 325 | 4.10k | } | 326 | | | 327 | | // Throw an exception if the config has an invalid Duration field. This is needed | 328 | | // because Envoy validates the duration in a strict way that is not supported by PGV. | 329 | 4.10k | validateDurationFields(message, recurse_into_any); | 330 | | | 331 | | // TODO(mattklein123): This will recurse the message twice, once above and once for PGV. When | 332 | | // we move to always recursing, satisfying the TODO below, we should merge into a single | 333 | | // recursion for performance reasons. | 334 | 4.10k | if (recurse_into_any) { | 335 | 0 | return recursivePgvCheck(message); | 336 | 0 | } | 337 | | | 338 | | // TODO(mattklein123): Now that PGV is capable of doing recursive message checks on abstract | 339 | | // types, we can remove bottom up validation from the entire codebase and only validate | 340 | | // at top level ingestion (bootstrap, discovery response). This is a large change and will be | 341 | | // done as a separate PR. This change will also allow removing templating from most/all of | 342 | | // related functions. | 343 | 4.10k | std::string err; | 344 | 4.10k | if (!Validate(message, &err)) { | 345 | 2 | ProtoExceptionUtil::throwProtoValidationException(err, message); | 346 | 2 | } | 347 | 4.10k | } |
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::route::v3::ScopedRouteConfiguration>(envoy::config::route::v3::ScopedRouteConfiguration const&, Envoy::ProtobufMessage::ValidationVisitor&, bool) Line | Count | Source | 317 | 3.32k | bool recurse_into_any = false) { | 318 | | // TODO(adisuissa): There are multiple recursive traversals done by the | 319 | | // calls in this function. This can be refactored into a single recursive | 320 | | // traversal that invokes the various validators. | 321 | | | 322 | | // Log warnings or throw errors if deprecated fields or unknown fields are in use. | 323 | 3.32k | if (!validation_visitor.skipValidation()) { | 324 | 3.32k | checkForUnexpectedFields(message, validation_visitor, recurse_into_any); | 325 | 3.32k | } | 326 | | | 327 | | // Throw an exception if the config has an invalid Duration field. This is needed | 328 | | // because Envoy validates the duration in a strict way that is not supported by PGV. | 329 | 3.32k | validateDurationFields(message, recurse_into_any); | 330 | | | 331 | | // TODO(mattklein123): This will recurse the message twice, once above and once for PGV. When | 332 | | // we move to always recursing, satisfying the TODO below, we should merge into a single | 333 | | // recursion for performance reasons. | 334 | 3.32k | if (recurse_into_any) { | 335 | 0 | return recursivePgvCheck(message); | 336 | 0 | } | 337 | | | 338 | | // TODO(mattklein123): Now that PGV is capable of doing recursive message checks on abstract | 339 | | // types, we can remove bottom up validation from the entire codebase and only validate | 340 | | // at top level ingestion (bootstrap, discovery response). This is a large change and will be | 341 | | // done as a separate PR. This change will also allow removing templating from most/all of | 342 | | // related functions. | 343 | 3.32k | std::string err; | 344 | 3.32k | if (!Validate(message, &err)) { | 345 | 0 | ProtoExceptionUtil::throwProtoValidationException(err, message); | 346 | 0 | } | 347 | 3.32k | } |
void Envoy::MessageUtil::validate<envoy::config::route::v3::RouteConfiguration>(envoy::config::route::v3::RouteConfiguration const&, Envoy::ProtobufMessage::ValidationVisitor&, bool) Line | Count | Source | 317 | 80 | bool recurse_into_any = false) { | 318 | | // TODO(adisuissa): There are multiple recursive traversals done by the | 319 | | // calls in this function. This can be refactored into a single recursive | 320 | | // traversal that invokes the various validators. | 321 | | | 322 | | // Log warnings or throw errors if deprecated fields or unknown fields are in use. | 323 | 80 | if (!validation_visitor.skipValidation()) { | 324 | 80 | checkForUnexpectedFields(message, validation_visitor, recurse_into_any); | 325 | 80 | } | 326 | | | 327 | | // Throw an exception if the config has an invalid Duration field. This is needed | 328 | | // because Envoy validates the duration in a strict way that is not supported by PGV. | 329 | 80 | validateDurationFields(message, recurse_into_any); | 330 | | | 331 | | // TODO(mattklein123): This will recurse the message twice, once above and once for PGV. When | 332 | | // we move to always recursing, satisfying the TODO below, we should merge into a single | 333 | | // recursion for performance reasons. | 334 | 80 | if (recurse_into_any) { | 335 | 0 | return recursivePgvCheck(message); | 336 | 0 | } | 337 | | | 338 | | // TODO(mattklein123): Now that PGV is capable of doing recursive message checks on abstract | 339 | | // types, we can remove bottom up validation from the entire codebase and only validate | 340 | | // at top level ingestion (bootstrap, discovery response). This is a large change and will be | 341 | | // done as a separate PR. This change will also allow removing templating from most/all of | 342 | | // related functions. | 343 | 80 | std::string err; | 344 | 80 | if (!Validate(message, &err)) { | 345 | 0 | ProtoExceptionUtil::throwProtoValidationException(err, message); | 346 | 0 | } | 347 | 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::endpoint::v3::ClusterLoadAssignment>(envoy::config::endpoint::v3::ClusterLoadAssignment const&, Envoy::ProtobufMessage::ValidationVisitor&, bool) Line | Count | Source | 317 | 14 | bool recurse_into_any = false) { | 318 | | // TODO(adisuissa): There are multiple recursive traversals done by the | 319 | | // calls in this function. This can be refactored into a single recursive | 320 | | // traversal that invokes the various validators. | 321 | | | 322 | | // Log warnings or throw errors if deprecated fields or unknown fields are in use. | 323 | 14 | if (!validation_visitor.skipValidation()) { | 324 | 14 | checkForUnexpectedFields(message, validation_visitor, recurse_into_any); | 325 | 14 | } | 326 | | | 327 | | // Throw an exception if the config has an invalid Duration field. This is needed | 328 | | // because Envoy validates the duration in a strict way that is not supported by PGV. | 329 | 14 | validateDurationFields(message, recurse_into_any); | 330 | | | 331 | | // TODO(mattklein123): This will recurse the message twice, once above and once for PGV. When | 332 | | // we move to always recursing, satisfying the TODO below, we should merge into a single | 333 | | // recursion for performance reasons. | 334 | 14 | if (recurse_into_any) { | 335 | 0 | return recursivePgvCheck(message); | 336 | 0 | } | 337 | | | 338 | | // TODO(mattklein123): Now that PGV is capable of doing recursive message checks on abstract | 339 | | // types, we can remove bottom up validation from the entire codebase and only validate | 340 | | // at top level ingestion (bootstrap, discovery response). This is a large change and will be | 341 | | // done as a separate PR. This change will also allow removing templating from most/all of | 342 | | // related functions. | 343 | 14 | std::string err; | 344 | 14 | if (!Validate(message, &err)) { | 345 | 0 | ProtoExceptionUtil::throwProtoValidationException(err, message); | 346 | 0 | } | 347 | 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::DownstreamTlsContext>(envoy::extensions::transport_sockets::tls::v3::DownstreamTlsContext 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) void Envoy::MessageUtil::validate<envoy::config::bootstrap::v3::Bootstrap>(envoy::config::bootstrap::v3::Bootstrap const&, Envoy::ProtobufMessage::ValidationVisitor&, bool) Line | Count | Source | 317 | 13.5k | bool recurse_into_any = false) { | 318 | | // TODO(adisuissa): There are multiple recursive traversals done by the | 319 | | // calls in this function. This can be refactored into a single recursive | 320 | | // traversal that invokes the various validators. | 321 | | | 322 | | // Log warnings or throw errors if deprecated fields or unknown fields are in use. | 323 | 13.5k | if (!validation_visitor.skipValidation()) { | 324 | 13.5k | checkForUnexpectedFields(message, validation_visitor, recurse_into_any); | 325 | 13.5k | } | 326 | | | 327 | | // Throw an exception if the config has an invalid Duration field. This is needed | 328 | | // because Envoy validates the duration in a strict way that is not supported by PGV. | 329 | 13.5k | validateDurationFields(message, recurse_into_any); | 330 | | | 331 | | // TODO(mattklein123): This will recurse the message twice, once above and once for PGV. When | 332 | | // we move to always recursing, satisfying the TODO below, we should merge into a single | 333 | | // recursion for performance reasons. | 334 | 13.5k | if (recurse_into_any) { | 335 | 0 | return recursivePgvCheck(message); | 336 | 0 | } | 337 | | | 338 | | // TODO(mattklein123): Now that PGV is capable of doing recursive message checks on abstract | 339 | | // types, we can remove bottom up validation from the entire codebase and only validate | 340 | | // at top level ingestion (bootstrap, discovery response). This is a large change and will be | 341 | | // done as a separate PR. This change will also allow removing templating from most/all of | 342 | | // related functions. | 343 | 13.5k | std::string err; | 344 | 13.5k | if (!Validate(message, &err)) { | 345 | 784 | ProtoExceptionUtil::throwProtoValidationException(err, message); | 346 | 784 | } | 347 | 13.5k | } |
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) void Envoy::MessageUtil::validate<envoy::config::listener::v3::Listener>(envoy::config::listener::v3::Listener const&, Envoy::ProtobufMessage::ValidationVisitor&, bool) Line | Count | Source | 317 | 2.13k | bool recurse_into_any = false) { | 318 | | // TODO(adisuissa): There are multiple recursive traversals done by the | 319 | | // calls in this function. This can be refactored into a single recursive | 320 | | // traversal that invokes the various validators. | 321 | | | 322 | | // Log warnings or throw errors if deprecated fields or unknown fields are in use. | 323 | 2.13k | if (!validation_visitor.skipValidation()) { | 324 | 2.13k | checkForUnexpectedFields(message, validation_visitor, recurse_into_any); | 325 | 2.13k | } | 326 | | | 327 | | // Throw an exception if the config has an invalid Duration field. This is needed | 328 | | // because Envoy validates the duration in a strict way that is not supported by PGV. | 329 | 2.13k | validateDurationFields(message, recurse_into_any); | 330 | | | 331 | | // TODO(mattklein123): This will recurse the message twice, once above and once for PGV. When | 332 | | // we move to always recursing, satisfying the TODO below, we should merge into a single | 333 | | // recursion for performance reasons. | 334 | 2.13k | if (recurse_into_any) { | 335 | 0 | return recursivePgvCheck(message); | 336 | 0 | } | 337 | | | 338 | | // TODO(mattklein123): Now that PGV is capable of doing recursive message checks on abstract | 339 | | // types, we can remove bottom up validation from the entire codebase and only validate | 340 | | // at top level ingestion (bootstrap, discovery response). This is a large change and will be | 341 | | // done as a separate PR. This change will also allow removing templating from most/all of | 342 | | // related functions. | 343 | 2.13k | std::string err; | 344 | 2.13k | if (!Validate(message, &err)) { | 345 | 0 | ProtoExceptionUtil::throwProtoValidationException(err, message); | 346 | 0 | } | 347 | 2.13k | } |
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::config::overload::v3::ScaleTimersOverloadActionConfig>(envoy::config::overload::v3::ScaleTimersOverloadActionConfig 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 | 317 | 4.10k | bool recurse_into_any = false) { | 318 | | // TODO(adisuissa): There are multiple recursive traversals done by the | 319 | | // calls in this function. This can be refactored into a single recursive | 320 | | // traversal that invokes the various validators. | 321 | | | 322 | | // Log warnings or throw errors if deprecated fields or unknown fields are in use. | 323 | 4.10k | if (!validation_visitor.skipValidation()) { | 324 | 4.10k | checkForUnexpectedFields(message, validation_visitor, recurse_into_any); | 325 | 4.10k | } | 326 | | | 327 | | // Throw an exception if the config has an invalid Duration field. This is needed | 328 | | // because Envoy validates the duration in a strict way that is not supported by PGV. | 329 | 4.10k | validateDurationFields(message, recurse_into_any); | 330 | | | 331 | | // TODO(mattklein123): This will recurse the message twice, once above and once for PGV. When | 332 | | // we move to always recursing, satisfying the TODO below, we should merge into a single | 333 | | // recursion for performance reasons. | 334 | 4.10k | if (recurse_into_any) { | 335 | 0 | return recursivePgvCheck(message); | 336 | 0 | } | 337 | | | 338 | | // TODO(mattklein123): Now that PGV is capable of doing recursive message checks on abstract | 339 | | // types, we can remove bottom up validation from the entire codebase and only validate | 340 | | // at top level ingestion (bootstrap, discovery response). This is a large change and will be | 341 | | // done as a separate PR. This change will also allow removing templating from most/all of | 342 | | // related functions. | 343 | 4.10k | std::string err; | 344 | 4.10k | if (!Validate(message, &err)) { | 345 | 0 | ProtoExceptionUtil::throwProtoValidationException(err, message); | 346 | 0 | } | 347 | 4.10k | } |
void Envoy::MessageUtil::validate<test::common::http::ConnManagerImplTestCase>(test::common::http::ConnManagerImplTestCase const&, Envoy::ProtobufMessage::ValidationVisitor&, bool) Line | Count | Source | 317 | 1.22k | bool recurse_into_any = false) { | 318 | | // TODO(adisuissa): There are multiple recursive traversals done by the | 319 | | // calls in this function. This can be refactored into a single recursive | 320 | | // traversal that invokes the various validators. | 321 | | | 322 | | // Log warnings or throw errors if deprecated fields or unknown fields are in use. | 323 | 1.22k | if (!validation_visitor.skipValidation()) { | 324 | 1.22k | checkForUnexpectedFields(message, validation_visitor, recurse_into_any); | 325 | 1.22k | } | 326 | | | 327 | | // Throw an exception if the config has an invalid Duration field. This is needed | 328 | | // because Envoy validates the duration in a strict way that is not supported by PGV. | 329 | 1.22k | validateDurationFields(message, recurse_into_any); | 330 | | | 331 | | // TODO(mattklein123): This will recurse the message twice, once above and once for PGV. When | 332 | | // we move to always recursing, satisfying the TODO below, we should merge into a single | 333 | | // recursion for performance reasons. | 334 | 1.22k | if (recurse_into_any) { | 335 | 0 | return recursivePgvCheck(message); | 336 | 0 | } | 337 | | | 338 | | // TODO(mattklein123): Now that PGV is capable of doing recursive message checks on abstract | 339 | | // types, we can remove bottom up validation from the entire codebase and only validate | 340 | | // at top level ingestion (bootstrap, discovery response). This is a large change and will be | 341 | | // done as a separate PR. This change will also allow removing templating from most/all of | 342 | | // related functions. | 343 | 1.22k | std::string err; | 344 | 1.22k | if (!Validate(message, &err)) { | 345 | 27 | ProtoExceptionUtil::throwProtoValidationException(err, message); | 346 | 27 | } | 347 | 1.22k | } |
void Envoy::MessageUtil::validate<test::extensions::filters::listener::FilterFuzzTestCase>(test::extensions::filters::listener::FilterFuzzTestCase const&, Envoy::ProtobufMessage::ValidationVisitor&, bool) Line | Count | Source | 317 | 1.15k | bool recurse_into_any = false) { | 318 | | // TODO(adisuissa): There are multiple recursive traversals done by the | 319 | | // calls in this function. This can be refactored into a single recursive | 320 | | // traversal that invokes the various validators. | 321 | | | 322 | | // Log warnings or throw errors if deprecated fields or unknown fields are in use. | 323 | 1.15k | if (!validation_visitor.skipValidation()) { | 324 | 1.15k | checkForUnexpectedFields(message, validation_visitor, recurse_into_any); | 325 | 1.15k | } | 326 | | | 327 | | // Throw an exception if the config has an invalid Duration field. This is needed | 328 | | // because Envoy validates the duration in a strict way that is not supported by PGV. | 329 | 1.15k | validateDurationFields(message, recurse_into_any); | 330 | | | 331 | | // TODO(mattklein123): This will recurse the message twice, once above and once for PGV. When | 332 | | // we move to always recursing, satisfying the TODO below, we should merge into a single | 333 | | // recursion for performance reasons. | 334 | 1.15k | if (recurse_into_any) { | 335 | 0 | return recursivePgvCheck(message); | 336 | 0 | } | 337 | | | 338 | | // TODO(mattklein123): Now that PGV is capable of doing recursive message checks on abstract | 339 | | // types, we can remove bottom up validation from the entire codebase and only validate | 340 | | // at top level ingestion (bootstrap, discovery response). This is a large change and will be | 341 | | // done as a separate PR. This change will also allow removing templating from most/all of | 342 | | // related functions. | 343 | 1.15k | std::string err; | 344 | 1.15k | if (!Validate(message, &err)) { | 345 | 0 | ProtoExceptionUtil::throwProtoValidationException(err, message); | 346 | 0 | } | 347 | 1.15k | } |
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 | 317 | 9.13k | bool recurse_into_any = false) { | 318 | | // TODO(adisuissa): There are multiple recursive traversals done by the | 319 | | // calls in this function. This can be refactored into a single recursive | 320 | | // traversal that invokes the various validators. | 321 | | | 322 | | // Log warnings or throw errors if deprecated fields or unknown fields are in use. | 323 | 9.13k | if (!validation_visitor.skipValidation()) { | 324 | 9.13k | checkForUnexpectedFields(message, validation_visitor, recurse_into_any); | 325 | 9.13k | } | 326 | | | 327 | | // Throw an exception if the config has an invalid Duration field. This is needed | 328 | | // because Envoy validates the duration in a strict way that is not supported by PGV. | 329 | 9.13k | validateDurationFields(message, recurse_into_any); | 330 | | | 331 | | // TODO(mattklein123): This will recurse the message twice, once above and once for PGV. When | 332 | | // we move to always recursing, satisfying the TODO below, we should merge into a single | 333 | | // recursion for performance reasons. | 334 | 9.13k | if (recurse_into_any) { | 335 | 0 | return recursivePgvCheck(message); | 336 | 0 | } | 337 | | | 338 | | // TODO(mattklein123): Now that PGV is capable of doing recursive message checks on abstract | 339 | | // types, we can remove bottom up validation from the entire codebase and only validate | 340 | | // at top level ingestion (bootstrap, discovery response). This is a large change and will be | 341 | | // done as a separate PR. This change will also allow removing templating from most/all of | 342 | | // related functions. | 343 | 9.13k | std::string err; | 344 | 9.13k | if (!Validate(message, &err)) { | 345 | 367 | ProtoExceptionUtil::throwProtoValidationException(err, message); | 346 | 367 | } | 347 | 9.13k | } |
void Envoy::MessageUtil::validate<test::common::http::http2::HpackTestCase>(test::common::http::http2::HpackTestCase const&, Envoy::ProtobufMessage::ValidationVisitor&, bool) Line | Count | Source | 317 | 2.82k | bool recurse_into_any = false) { | 318 | | // TODO(adisuissa): There are multiple recursive traversals done by the | 319 | | // calls in this function. This can be refactored into a single recursive | 320 | | // traversal that invokes the various validators. | 321 | | | 322 | | // Log warnings or throw errors if deprecated fields or unknown fields are in use. | 323 | 2.82k | if (!validation_visitor.skipValidation()) { | 324 | 2.82k | checkForUnexpectedFields(message, validation_visitor, recurse_into_any); | 325 | 2.82k | } | 326 | | | 327 | | // Throw an exception if the config has an invalid Duration field. This is needed | 328 | | // because Envoy validates the duration in a strict way that is not supported by PGV. | 329 | 2.82k | validateDurationFields(message, recurse_into_any); | 330 | | | 331 | | // TODO(mattklein123): This will recurse the message twice, once above and once for PGV. When | 332 | | // we move to always recursing, satisfying the TODO below, we should merge into a single | 333 | | // recursion for performance reasons. | 334 | 2.82k | if (recurse_into_any) { | 335 | 0 | return recursivePgvCheck(message); | 336 | 0 | } | 337 | | | 338 | | // TODO(mattklein123): Now that PGV is capable of doing recursive message checks on abstract | 339 | | // types, we can remove bottom up validation from the entire codebase and only validate | 340 | | // at top level ingestion (bootstrap, discovery response). This is a large change and will be | 341 | | // done as a separate PR. This change will also allow removing templating from most/all of | 342 | | // related functions. | 343 | 2.82k | std::string err; | 344 | 2.82k | if (!Validate(message, &err)) { | 345 | 63 | ProtoExceptionUtil::throwProtoValidationException(err, message); | 346 | 63 | } | 347 | 2.82k | } |
void Envoy::MessageUtil::validate<test::common::substitution::TestCase>(test::common::substitution::TestCase const&, Envoy::ProtobufMessage::ValidationVisitor&, bool) Line | Count | Source | 317 | 1.32k | bool recurse_into_any = false) { | 318 | | // TODO(adisuissa): There are multiple recursive traversals done by the | 319 | | // calls in this function. This can be refactored into a single recursive | 320 | | // traversal that invokes the various validators. | 321 | | | 322 | | // Log warnings or throw errors if deprecated fields or unknown fields are in use. | 323 | 1.32k | if (!validation_visitor.skipValidation()) { | 324 | 1.32k | checkForUnexpectedFields(message, validation_visitor, recurse_into_any); | 325 | 1.32k | } | 326 | | | 327 | | // Throw an exception if the config has an invalid Duration field. This is needed | 328 | | // because Envoy validates the duration in a strict way that is not supported by PGV. | 329 | 1.32k | validateDurationFields(message, recurse_into_any); | 330 | | | 331 | | // TODO(mattklein123): This will recurse the message twice, once above and once for PGV. When | 332 | | // we move to always recursing, satisfying the TODO below, we should merge into a single | 333 | | // recursion for performance reasons. | 334 | 1.32k | if (recurse_into_any) { | 335 | 0 | return recursivePgvCheck(message); | 336 | 0 | } | 337 | | | 338 | | // TODO(mattklein123): Now that PGV is capable of doing recursive message checks on abstract | 339 | | // types, we can remove bottom up validation from the entire codebase and only validate | 340 | | // at top level ingestion (bootstrap, discovery response). This is a large change and will be | 341 | | // done as a separate PR. This change will also allow removing templating from most/all of | 342 | | // related functions. | 343 | 1.32k | std::string err; | 344 | 1.32k | if (!Validate(message, &err)) { | 345 | 1.31k | ProtoExceptionUtil::throwProtoValidationException(err, message); | 346 | 1.31k | } | 347 | 1.32k | } |
Unexecuted instantiation: void Envoy::MessageUtil::validate<envoy::extensions::access_loggers::fluentd::v3::FluentdAccessLogConfig>(envoy::extensions::access_loggers::fluentd::v3::FluentdAccessLogConfig const&, Envoy::ProtobufMessage::ValidationVisitor&, bool) 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::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) 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::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) 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::input_matchers::metadata::v3::Metadata>(envoy::extensions::matching::input_matchers::metadata::v3::Metadata 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::common_inputs::network::v3::DynamicMetadataInput>(envoy::extensions::matching::common_inputs::network::v3::DynamicMetadataInput 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::string_matcher::lua::v3::Lua>(envoy::extensions::string_matcher::lua::v3::Lua 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) Unexecuted instantiation: 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) 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) Unexecuted instantiation: 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) 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) Unexecuted instantiation: 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) 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 | 317 | 1 | bool recurse_into_any = false) { | 318 | | // TODO(adisuissa): There are multiple recursive traversals done by the | 319 | | // calls in this function. This can be refactored into a single recursive | 320 | | // traversal that invokes the various validators. | 321 | | | 322 | | // Log warnings or throw errors if deprecated fields or unknown fields are in use. | 323 | 1 | if (!validation_visitor.skipValidation()) { | 324 | 1 | checkForUnexpectedFields(message, validation_visitor, recurse_into_any); | 325 | 1 | } | 326 | | | 327 | | // Throw an exception if the config has an invalid Duration field. This is needed | 328 | | // because Envoy validates the duration in a strict way that is not supported by PGV. | 329 | 1 | validateDurationFields(message, recurse_into_any); | 330 | | | 331 | | // TODO(mattklein123): This will recurse the message twice, once above and once for PGV. When | 332 | | // we move to always recursing, satisfying the TODO below, we should merge into a single | 333 | | // recursion for performance reasons. | 334 | 1 | if (recurse_into_any) { | 335 | 0 | return recursivePgvCheck(message); | 336 | 0 | } | 337 | | | 338 | | // TODO(mattklein123): Now that PGV is capable of doing recursive message checks on abstract | 339 | | // types, we can remove bottom up validation from the entire codebase and only validate | 340 | | // at top level ingestion (bootstrap, discovery response). This is a large change and will be | 341 | | // done as a separate PR. This change will also allow removing templating from most/all of | 342 | | // related functions. | 343 | 1 | std::string err; | 344 | 1 | if (!Validate(message, &err)) { | 345 | 0 | ProtoExceptionUtil::throwProtoValidationException(err, message); | 346 | 0 | } | 347 | 1 | } |
Unexecuted instantiation: void Envoy::MessageUtil::validate<envoy::extensions::filters::http::basic_auth::v3::BasicAuthPerRoute>(envoy::extensions::filters::http::basic_auth::v3::BasicAuthPerRoute const&, Envoy::ProtobufMessage::ValidationVisitor&, bool) 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 | 317 | 1 | bool recurse_into_any = false) { | 318 | | // TODO(adisuissa): There are multiple recursive traversals done by the | 319 | | // calls in this function. This can be refactored into a single recursive | 320 | | // traversal that invokes the various validators. | 321 | | | 322 | | // Log warnings or throw errors if deprecated fields or unknown fields are in use. | 323 | 1 | if (!validation_visitor.skipValidation()) { | 324 | 1 | checkForUnexpectedFields(message, validation_visitor, recurse_into_any); | 325 | 1 | } | 326 | | | 327 | | // Throw an exception if the config has an invalid Duration field. This is needed | 328 | | // because Envoy validates the duration in a strict way that is not supported by PGV. | 329 | 1 | validateDurationFields(message, recurse_into_any); | 330 | | | 331 | | // TODO(mattklein123): This will recurse the message twice, once above and once for PGV. When | 332 | | // we move to always recursing, satisfying the TODO below, we should merge into a single | 333 | | // recursion for performance reasons. | 334 | 1 | if (recurse_into_any) { | 335 | 0 | return recursivePgvCheck(message); | 336 | 0 | } | 337 | | | 338 | | // TODO(mattklein123): Now that PGV is capable of doing recursive message checks on abstract | 339 | | // types, we can remove bottom up validation from the entire codebase and only validate | 340 | | // at top level ingestion (bootstrap, discovery response). This is a large change and will be | 341 | | // done as a separate PR. This change will also allow removing templating from most/all of | 342 | | // related functions. | 343 | 1 | std::string err; | 344 | 1 | if (!Validate(message, &err)) { | 345 | 0 | ProtoExceptionUtil::throwProtoValidationException(err, message); | 346 | 0 | } | 347 | 1 | } |
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) Unexecuted instantiation: void Envoy::MessageUtil::validate<envoy::extensions::filters::http::buffer::v3::Buffer>(envoy::extensions::filters::http::buffer::v3::Buffer const&, Envoy::ProtobufMessage::ValidationVisitor&, bool) Unexecuted instantiation: void Envoy::MessageUtil::validate<envoy::extensions::filters::http::cache::v3::CacheConfig>(envoy::extensions::filters::http::cache::v3::CacheConfig const&, Envoy::ProtobufMessage::ValidationVisitor&, bool) 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 | 317 | 1 | bool recurse_into_any = false) { | 318 | | // TODO(adisuissa): There are multiple recursive traversals done by the | 319 | | // calls in this function. This can be refactored into a single recursive | 320 | | // traversal that invokes the various validators. | 321 | | | 322 | | // Log warnings or throw errors if deprecated fields or unknown fields are in use. | 323 | 1 | if (!validation_visitor.skipValidation()) { | 324 | 1 | checkForUnexpectedFields(message, validation_visitor, recurse_into_any); | 325 | 1 | } | 326 | | | 327 | | // Throw an exception if the config has an invalid Duration field. This is needed | 328 | | // because Envoy validates the duration in a strict way that is not supported by PGV. | 329 | 1 | validateDurationFields(message, recurse_into_any); | 330 | | | 331 | | // TODO(mattklein123): This will recurse the message twice, once above and once for PGV. When | 332 | | // we move to always recursing, satisfying the TODO below, we should merge into a single | 333 | | // recursion for performance reasons. | 334 | 1 | if (recurse_into_any) { | 335 | 0 | return recursivePgvCheck(message); | 336 | 0 | } | 337 | | | 338 | | // TODO(mattklein123): Now that PGV is capable of doing recursive message checks on abstract | 339 | | // types, we can remove bottom up validation from the entire codebase and only validate | 340 | | // at top level ingestion (bootstrap, discovery response). This is a large change and will be | 341 | | // done as a separate PR. This change will also allow removing templating from most/all of | 342 | | // related functions. | 343 | 1 | std::string err; | 344 | 1 | if (!Validate(message, &err)) { | 345 | 0 | ProtoExceptionUtil::throwProtoValidationException(err, message); | 346 | 0 | } | 347 | 1 | } |
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) Unexecuted instantiation: void Envoy::MessageUtil::validate<envoy::extensions::filters::http::cors::v3::Cors>(envoy::extensions::filters::http::cors::v3::Cors const&, Envoy::ProtobufMessage::ValidationVisitor&, bool) 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 | 317 | 6 | bool recurse_into_any = false) { | 318 | | // TODO(adisuissa): There are multiple recursive traversals done by the | 319 | | // calls in this function. This can be refactored into a single recursive | 320 | | // traversal that invokes the various validators. | 321 | | | 322 | | // Log warnings or throw errors if deprecated fields or unknown fields are in use. | 323 | 6 | if (!validation_visitor.skipValidation()) { | 324 | 6 | checkForUnexpectedFields(message, validation_visitor, recurse_into_any); | 325 | 6 | } | 326 | | | 327 | | // Throw an exception if the config has an invalid Duration field. This is needed | 328 | | // because Envoy validates the duration in a strict way that is not supported by PGV. | 329 | 6 | validateDurationFields(message, recurse_into_any); | 330 | | | 331 | | // TODO(mattklein123): This will recurse the message twice, once above and once for PGV. When | 332 | | // we move to always recursing, satisfying the TODO below, we should merge into a single | 333 | | // recursion for performance reasons. | 334 | 6 | if (recurse_into_any) { | 335 | 0 | return recursivePgvCheck(message); | 336 | 0 | } | 337 | | | 338 | | // TODO(mattklein123): Now that PGV is capable of doing recursive message checks on abstract | 339 | | // types, we can remove bottom up validation from the entire codebase and only validate | 340 | | // at top level ingestion (bootstrap, discovery response). This is a large change and will be | 341 | | // done as a separate PR. This change will also allow removing templating from most/all of | 342 | | // related functions. | 343 | 6 | std::string err; | 344 | 6 | if (!Validate(message, &err)) { | 345 | 0 | ProtoExceptionUtil::throwProtoValidationException(err, message); | 346 | 0 | } | 347 | 6 | } |
Unexecuted instantiation: void Envoy::MessageUtil::validate<envoy::extensions::filters::http::credential_injector::v3::CredentialInjector>(envoy::extensions::filters::http::credential_injector::v3::CredentialInjector const&, Envoy::ProtobufMessage::ValidationVisitor&, bool) Unexecuted instantiation: void Envoy::MessageUtil::validate<envoy::extensions::filters::http::csrf::v3::CsrfPolicy>(envoy::extensions::filters::http::csrf::v3::CsrfPolicy const&, Envoy::ProtobufMessage::ValidationVisitor&, bool) 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 | 317 | 1 | bool recurse_into_any = false) { | 318 | | // TODO(adisuissa): There are multiple recursive traversals done by the | 319 | | // calls in this function. This can be refactored into a single recursive | 320 | | // traversal that invokes the various validators. | 321 | | | 322 | | // Log warnings or throw errors if deprecated fields or unknown fields are in use. | 323 | 1 | if (!validation_visitor.skipValidation()) { | 324 | 1 | checkForUnexpectedFields(message, validation_visitor, recurse_into_any); | 325 | 1 | } | 326 | | | 327 | | // Throw an exception if the config has an invalid Duration field. This is needed | 328 | | // because Envoy validates the duration in a strict way that is not supported by PGV. | 329 | 1 | validateDurationFields(message, recurse_into_any); | 330 | | | 331 | | // TODO(mattklein123): This will recurse the message twice, once above and once for PGV. When | 332 | | // we move to always recursing, satisfying the TODO below, we should merge into a single | 333 | | // recursion for performance reasons. | 334 | 1 | if (recurse_into_any) { | 335 | 0 | return recursivePgvCheck(message); | 336 | 0 | } | 337 | | | 338 | | // TODO(mattklein123): Now that PGV is capable of doing recursive message checks on abstract | 339 | | // types, we can remove bottom up validation from the entire codebase and only validate | 340 | | // at top level ingestion (bootstrap, discovery response). This is a large change and will be | 341 | | // done as a separate PR. This change will also allow removing templating from most/all of | 342 | | // related functions. | 343 | 1 | std::string err; | 344 | 1 | if (!Validate(message, &err)) { | 345 | 1 | ProtoExceptionUtil::throwProtoValidationException(err, message); | 346 | 1 | } | 347 | 1 | } |
void Envoy::MessageUtil::validate<envoy::extensions::filters::http::decompressor::v3::Decompressor>(envoy::extensions::filters::http::decompressor::v3::Decompressor const&, Envoy::ProtobufMessage::ValidationVisitor&, bool) Line | Count | Source | 317 | 1 | bool recurse_into_any = false) { | 318 | | // TODO(adisuissa): There are multiple recursive traversals done by the | 319 | | // calls in this function. This can be refactored into a single recursive | 320 | | // traversal that invokes the various validators. | 321 | | | 322 | | // Log warnings or throw errors if deprecated fields or unknown fields are in use. | 323 | 1 | if (!validation_visitor.skipValidation()) { | 324 | 1 | checkForUnexpectedFields(message, validation_visitor, recurse_into_any); | 325 | 1 | } | 326 | | | 327 | | // Throw an exception if the config has an invalid Duration field. This is needed | 328 | | // because Envoy validates the duration in a strict way that is not supported by PGV. | 329 | 1 | validateDurationFields(message, recurse_into_any); | 330 | | | 331 | | // TODO(mattklein123): This will recurse the message twice, once above and once for PGV. When | 332 | | // we move to always recursing, satisfying the TODO below, we should merge into a single | 333 | | // recursion for performance reasons. | 334 | 1 | if (recurse_into_any) { | 335 | 0 | return recursivePgvCheck(message); | 336 | 0 | } | 337 | | | 338 | | // TODO(mattklein123): Now that PGV is capable of doing recursive message checks on abstract | 339 | | // types, we can remove bottom up validation from the entire codebase and only validate | 340 | | // at top level ingestion (bootstrap, discovery response). This is a large change and will be | 341 | | // done as a separate PR. This change will also allow removing templating from most/all of | 342 | | // related functions. | 343 | 1 | std::string err; | 344 | 1 | if (!Validate(message, &err)) { | 345 | 0 | ProtoExceptionUtil::throwProtoValidationException(err, message); | 346 | 0 | } | 347 | 1 | } |
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) Unexecuted instantiation: 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) 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 | 317 | 8 | bool recurse_into_any = false) { | 318 | | // TODO(adisuissa): There are multiple recursive traversals done by the | 319 | | // calls in this function. This can be refactored into a single recursive | 320 | | // traversal that invokes the various validators. | 321 | | | 322 | | // Log warnings or throw errors if deprecated fields or unknown fields are in use. | 323 | 8 | if (!validation_visitor.skipValidation()) { | 324 | 8 | checkForUnexpectedFields(message, validation_visitor, recurse_into_any); | 325 | 8 | } | 326 | | | 327 | | // Throw an exception if the config has an invalid Duration field. This is needed | 328 | | // because Envoy validates the duration in a strict way that is not supported by PGV. | 329 | 8 | validateDurationFields(message, recurse_into_any); | 330 | | | 331 | | // TODO(mattklein123): This will recurse the message twice, once above and once for PGV. When | 332 | | // we move to always recursing, satisfying the TODO below, we should merge into a single | 333 | | // recursion for performance reasons. | 334 | 8 | if (recurse_into_any) { | 335 | 0 | return recursivePgvCheck(message); | 336 | 0 | } | 337 | | | 338 | | // TODO(mattklein123): Now that PGV is capable of doing recursive message checks on abstract | 339 | | // types, we can remove bottom up validation from the entire codebase and only validate | 340 | | // at top level ingestion (bootstrap, discovery response). This is a large change and will be | 341 | | // done as a separate PR. This change will also allow removing templating from most/all of | 342 | | // related functions. | 343 | 8 | std::string err; | 344 | 8 | if (!Validate(message, &err)) { | 345 | 1 | ProtoExceptionUtil::throwProtoValidationException(err, message); | 346 | 1 | } | 347 | 8 | } |
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 | 317 | 13 | bool recurse_into_any = false) { | 318 | | // TODO(adisuissa): There are multiple recursive traversals done by the | 319 | | // calls in this function. This can be refactored into a single recursive | 320 | | // traversal that invokes the various validators. | 321 | | | 322 | | // Log warnings or throw errors if deprecated fields or unknown fields are in use. | 323 | 13 | if (!validation_visitor.skipValidation()) { | 324 | 13 | checkForUnexpectedFields(message, validation_visitor, recurse_into_any); | 325 | 13 | } | 326 | | | 327 | | // Throw an exception if the config has an invalid Duration field. This is needed | 328 | | // because Envoy validates the duration in a strict way that is not supported by PGV. | 329 | 13 | validateDurationFields(message, recurse_into_any); | 330 | | | 331 | | // TODO(mattklein123): This will recurse the message twice, once above and once for PGV. When | 332 | | // we move to always recursing, satisfying the TODO below, we should merge into a single | 333 | | // recursion for performance reasons. | 334 | 13 | if (recurse_into_any) { | 335 | 0 | return recursivePgvCheck(message); | 336 | 0 | } | 337 | | | 338 | | // TODO(mattklein123): Now that PGV is capable of doing recursive message checks on abstract | 339 | | // types, we can remove bottom up validation from the entire codebase and only validate | 340 | | // at top level ingestion (bootstrap, discovery response). This is a large change and will be | 341 | | // done as a separate PR. This change will also allow removing templating from most/all of | 342 | | // related functions. | 343 | 13 | std::string err; | 344 | 13 | if (!Validate(message, &err)) { | 345 | 0 | ProtoExceptionUtil::throwProtoValidationException(err, message); | 346 | 0 | } | 347 | 13 | } |
Unexecuted instantiation: 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) Unexecuted instantiation: void Envoy::MessageUtil::validate<envoy::extensions::filters::http::geoip::v3::Geoip>(envoy::extensions::filters::http::geoip::v3::Geoip const&, Envoy::ProtobufMessage::ValidationVisitor&, bool) Unexecuted instantiation: 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) Unexecuted instantiation: 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) 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 | 317 | 2 | bool recurse_into_any = false) { | 318 | | // TODO(adisuissa): There are multiple recursive traversals done by the | 319 | | // calls in this function. This can be refactored into a single recursive | 320 | | // traversal that invokes the various validators. | 321 | | | 322 | | // Log warnings or throw errors if deprecated fields or unknown fields are in use. | 323 | 2 | if (!validation_visitor.skipValidation()) { | 324 | 2 | checkForUnexpectedFields(message, validation_visitor, recurse_into_any); | 325 | 2 | } | 326 | | | 327 | | // Throw an exception if the config has an invalid Duration field. This is needed | 328 | | // because Envoy validates the duration in a strict way that is not supported by PGV. | 329 | 2 | validateDurationFields(message, recurse_into_any); | 330 | | | 331 | | // TODO(mattklein123): This will recurse the message twice, once above and once for PGV. When | 332 | | // we move to always recursing, satisfying the TODO below, we should merge into a single | 333 | | // recursion for performance reasons. | 334 | 2 | if (recurse_into_any) { | 335 | 0 | return recursivePgvCheck(message); | 336 | 0 | } | 337 | | | 338 | | // TODO(mattklein123): Now that PGV is capable of doing recursive message checks on abstract | 339 | | // types, we can remove bottom up validation from the entire codebase and only validate | 340 | | // at top level ingestion (bootstrap, discovery response). This is a large change and will be | 341 | | // done as a separate PR. This change will also allow removing templating from most/all of | 342 | | // related functions. | 343 | 2 | std::string err; | 344 | 2 | if (!Validate(message, &err)) { | 345 | 0 | ProtoExceptionUtil::throwProtoValidationException(err, message); | 346 | 0 | } | 347 | 2 | } |
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 | 317 | 63 | bool recurse_into_any = false) { | 318 | | // TODO(adisuissa): There are multiple recursive traversals done by the | 319 | | // calls in this function. This can be refactored into a single recursive | 320 | | // traversal that invokes the various validators. | 321 | | | 322 | | // Log warnings or throw errors if deprecated fields or unknown fields are in use. | 323 | 63 | if (!validation_visitor.skipValidation()) { | 324 | 63 | checkForUnexpectedFields(message, validation_visitor, recurse_into_any); | 325 | 63 | } | 326 | | | 327 | | // Throw an exception if the config has an invalid Duration field. This is needed | 328 | | // because Envoy validates the duration in a strict way that is not supported by PGV. | 329 | 63 | validateDurationFields(message, recurse_into_any); | 330 | | | 331 | | // TODO(mattklein123): This will recurse the message twice, once above and once for PGV. When | 332 | | // we move to always recursing, satisfying the TODO below, we should merge into a single | 333 | | // recursion for performance reasons. | 334 | 63 | if (recurse_into_any) { | 335 | 0 | return recursivePgvCheck(message); | 336 | 0 | } | 337 | | | 338 | | // TODO(mattklein123): Now that PGV is capable of doing recursive message checks on abstract | 339 | | // types, we can remove bottom up validation from the entire codebase and only validate | 340 | | // at top level ingestion (bootstrap, discovery response). This is a large change and will be | 341 | | // done as a separate PR. This change will also allow removing templating from most/all of | 342 | | // related functions. | 343 | 63 | std::string err; | 344 | 63 | if (!Validate(message, &err)) { | 345 | 0 | ProtoExceptionUtil::throwProtoValidationException(err, message); | 346 | 0 | } | 347 | 63 | } |
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 | 317 | 20 | bool recurse_into_any = false) { | 318 | | // TODO(adisuissa): There are multiple recursive traversals done by the | 319 | | // calls in this function. This can be refactored into a single recursive | 320 | | // traversal that invokes the various validators. | 321 | | | 322 | | // Log warnings or throw errors if deprecated fields or unknown fields are in use. | 323 | 20 | if (!validation_visitor.skipValidation()) { | 324 | 20 | checkForUnexpectedFields(message, validation_visitor, recurse_into_any); | 325 | 20 | } | 326 | | | 327 | | // Throw an exception if the config has an invalid Duration field. This is needed | 328 | | // because Envoy validates the duration in a strict way that is not supported by PGV. | 329 | 20 | validateDurationFields(message, recurse_into_any); | 330 | | | 331 | | // TODO(mattklein123): This will recurse the message twice, once above and once for PGV. When | 332 | | // we move to always recursing, satisfying the TODO below, we should merge into a single | 333 | | // recursion for performance reasons. | 334 | 20 | if (recurse_into_any) { | 335 | 0 | return recursivePgvCheck(message); | 336 | 0 | } | 337 | | | 338 | | // TODO(mattklein123): Now that PGV is capable of doing recursive message checks on abstract | 339 | | // types, we can remove bottom up validation from the entire codebase and only validate | 340 | | // at top level ingestion (bootstrap, discovery response). This is a large change and will be | 341 | | // done as a separate PR. This change will also allow removing templating from most/all of | 342 | | // related functions. | 343 | 20 | std::string err; | 344 | 20 | if (!Validate(message, &err)) { | 345 | 0 | ProtoExceptionUtil::throwProtoValidationException(err, message); | 346 | 0 | } | 347 | 20 | } |
Unexecuted instantiation: 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) 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 | 317 | 10 | bool recurse_into_any = false) { | 318 | | // TODO(adisuissa): There are multiple recursive traversals done by the | 319 | | // calls in this function. This can be refactored into a single recursive | 320 | | // traversal that invokes the various validators. | 321 | | | 322 | | // Log warnings or throw errors if deprecated fields or unknown fields are in use. | 323 | 10 | if (!validation_visitor.skipValidation()) { | 324 | 10 | checkForUnexpectedFields(message, validation_visitor, recurse_into_any); | 325 | 10 | } | 326 | | | 327 | | // Throw an exception if the config has an invalid Duration field. This is needed | 328 | | // because Envoy validates the duration in a strict way that is not supported by PGV. | 329 | 10 | validateDurationFields(message, recurse_into_any); | 330 | | | 331 | | // TODO(mattklein123): This will recurse the message twice, once above and once for PGV. When | 332 | | // we move to always recursing, satisfying the TODO below, we should merge into a single | 333 | | // recursion for performance reasons. | 334 | 10 | if (recurse_into_any) { | 335 | 0 | return recursivePgvCheck(message); | 336 | 0 | } | 337 | | | 338 | | // TODO(mattklein123): Now that PGV is capable of doing recursive message checks on abstract | 339 | | // types, we can remove bottom up validation from the entire codebase and only validate | 340 | | // at top level ingestion (bootstrap, discovery response). This is a large change and will be | 341 | | // done as a separate PR. This change will also allow removing templating from most/all of | 342 | | // related functions. | 343 | 10 | std::string err; | 344 | 10 | if (!Validate(message, &err)) { | 345 | 0 | ProtoExceptionUtil::throwProtoValidationException(err, message); | 346 | 0 | } | 347 | 10 | } |
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 | 317 | 1 | bool recurse_into_any = false) { | 318 | | // TODO(adisuissa): There are multiple recursive traversals done by the | 319 | | // calls in this function. This can be refactored into a single recursive | 320 | | // traversal that invokes the various validators. | 321 | | | 322 | | // Log warnings or throw errors if deprecated fields or unknown fields are in use. | 323 | 1 | if (!validation_visitor.skipValidation()) { | 324 | 1 | checkForUnexpectedFields(message, validation_visitor, recurse_into_any); | 325 | 1 | } | 326 | | | 327 | | // Throw an exception if the config has an invalid Duration field. This is needed | 328 | | // because Envoy validates the duration in a strict way that is not supported by PGV. | 329 | 1 | validateDurationFields(message, recurse_into_any); | 330 | | | 331 | | // TODO(mattklein123): This will recurse the message twice, once above and once for PGV. When | 332 | | // we move to always recursing, satisfying the TODO below, we should merge into a single | 333 | | // recursion for performance reasons. | 334 | 1 | if (recurse_into_any) { | 335 | 0 | return recursivePgvCheck(message); | 336 | 0 | } | 337 | | | 338 | | // TODO(mattklein123): Now that PGV is capable of doing recursive message checks on abstract | 339 | | // types, we can remove bottom up validation from the entire codebase and only validate | 340 | | // at top level ingestion (bootstrap, discovery response). This is a large change and will be | 341 | | // done as a separate PR. This change will also allow removing templating from most/all of | 342 | | // related functions. | 343 | 1 | std::string err; | 344 | 1 | if (!Validate(message, &err)) { | 345 | 0 | ProtoExceptionUtil::throwProtoValidationException(err, message); | 346 | 0 | } | 347 | 1 | } |
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 | 317 | 6 | bool recurse_into_any = false) { | 318 | | // TODO(adisuissa): There are multiple recursive traversals done by the | 319 | | // calls in this function. This can be refactored into a single recursive | 320 | | // traversal that invokes the various validators. | 321 | | | 322 | | // Log warnings or throw errors if deprecated fields or unknown fields are in use. | 323 | 6 | if (!validation_visitor.skipValidation()) { | 324 | 6 | checkForUnexpectedFields(message, validation_visitor, recurse_into_any); | 325 | 6 | } | 326 | | | 327 | | // Throw an exception if the config has an invalid Duration field. This is needed | 328 | | // because Envoy validates the duration in a strict way that is not supported by PGV. | 329 | 6 | validateDurationFields(message, recurse_into_any); | 330 | | | 331 | | // TODO(mattklein123): This will recurse the message twice, once above and once for PGV. When | 332 | | // we move to always recursing, satisfying the TODO below, we should merge into a single | 333 | | // recursion for performance reasons. | 334 | 6 | if (recurse_into_any) { | 335 | 0 | return recursivePgvCheck(message); | 336 | 0 | } | 337 | | | 338 | | // TODO(mattklein123): Now that PGV is capable of doing recursive message checks on abstract | 339 | | // types, we can remove bottom up validation from the entire codebase and only validate | 340 | | // at top level ingestion (bootstrap, discovery response). This is a large change and will be | 341 | | // done as a separate PR. This change will also allow removing templating from most/all of | 342 | | // related functions. | 343 | 6 | std::string err; | 344 | 6 | if (!Validate(message, &err)) { | 345 | 0 | ProtoExceptionUtil::throwProtoValidationException(err, message); | 346 | 0 | } | 347 | 6 | } |
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 | 317 | 1 | bool recurse_into_any = false) { | 318 | | // TODO(adisuissa): There are multiple recursive traversals done by the | 319 | | // calls in this function. This can be refactored into a single recursive | 320 | | // traversal that invokes the various validators. | 321 | | | 322 | | // Log warnings or throw errors if deprecated fields or unknown fields are in use. | 323 | 1 | if (!validation_visitor.skipValidation()) { | 324 | 1 | checkForUnexpectedFields(message, validation_visitor, recurse_into_any); | 325 | 1 | } | 326 | | | 327 | | // Throw an exception if the config has an invalid Duration field. This is needed | 328 | | // because Envoy validates the duration in a strict way that is not supported by PGV. | 329 | 1 | validateDurationFields(message, recurse_into_any); | 330 | | | 331 | | // TODO(mattklein123): This will recurse the message twice, once above and once for PGV. When | 332 | | // we move to always recursing, satisfying the TODO below, we should merge into a single | 333 | | // recursion for performance reasons. | 334 | 1 | if (recurse_into_any) { | 335 | 0 | return recursivePgvCheck(message); | 336 | 0 | } | 337 | | | 338 | | // TODO(mattklein123): Now that PGV is capable of doing recursive message checks on abstract | 339 | | // types, we can remove bottom up validation from the entire codebase and only validate | 340 | | // at top level ingestion (bootstrap, discovery response). This is a large change and will be | 341 | | // done as a separate PR. This change will also allow removing templating from most/all of | 342 | | // related functions. | 343 | 1 | std::string err; | 344 | 1 | if (!Validate(message, &err)) { | 345 | 0 | ProtoExceptionUtil::throwProtoValidationException(err, message); | 346 | 0 | } | 347 | 1 | } |
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 | 317 | 151 | bool recurse_into_any = false) { | 318 | | // TODO(adisuissa): There are multiple recursive traversals done by the | 319 | | // calls in this function. This can be refactored into a single recursive | 320 | | // traversal that invokes the various validators. | 321 | | | 322 | | // Log warnings or throw errors if deprecated fields or unknown fields are in use. | 323 | 151 | if (!validation_visitor.skipValidation()) { | 324 | 151 | checkForUnexpectedFields(message, validation_visitor, recurse_into_any); | 325 | 151 | } | 326 | | | 327 | | // Throw an exception if the config has an invalid Duration field. This is needed | 328 | | // because Envoy validates the duration in a strict way that is not supported by PGV. | 329 | 151 | validateDurationFields(message, recurse_into_any); | 330 | | | 331 | | // TODO(mattklein123): This will recurse the message twice, once above and once for PGV. When | 332 | | // we move to always recursing, satisfying the TODO below, we should merge into a single | 333 | | // recursion for performance reasons. | 334 | 151 | if (recurse_into_any) { | 335 | 0 | return recursivePgvCheck(message); | 336 | 0 | } | 337 | | | 338 | | // TODO(mattklein123): Now that PGV is capable of doing recursive message checks on abstract | 339 | | // types, we can remove bottom up validation from the entire codebase and only validate | 340 | | // at top level ingestion (bootstrap, discovery response). This is a large change and will be | 341 | | // done as a separate PR. This change will also allow removing templating from most/all of | 342 | | // related functions. | 343 | 151 | std::string err; | 344 | 151 | if (!Validate(message, &err)) { | 345 | 0 | ProtoExceptionUtil::throwProtoValidationException(err, message); | 346 | 0 | } | 347 | 151 | } |
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 | 317 | 4 | bool recurse_into_any = false) { | 318 | | // TODO(adisuissa): There are multiple recursive traversals done by the | 319 | | // calls in this function. This can be refactored into a single recursive | 320 | | // traversal that invokes the various validators. | 321 | | | 322 | | // Log warnings or throw errors if deprecated fields or unknown fields are in use. | 323 | 4 | if (!validation_visitor.skipValidation()) { | 324 | 4 | checkForUnexpectedFields(message, validation_visitor, recurse_into_any); | 325 | 4 | } | 326 | | | 327 | | // Throw an exception if the config has an invalid Duration field. This is needed | 328 | | // because Envoy validates the duration in a strict way that is not supported by PGV. | 329 | 4 | validateDurationFields(message, recurse_into_any); | 330 | | | 331 | | // TODO(mattklein123): This will recurse the message twice, once above and once for PGV. When | 332 | | // we move to always recursing, satisfying the TODO below, we should merge into a single | 333 | | // recursion for performance reasons. | 334 | 4 | if (recurse_into_any) { | 335 | 0 | return recursivePgvCheck(message); | 336 | 0 | } | 337 | | | 338 | | // TODO(mattklein123): Now that PGV is capable of doing recursive message checks on abstract | 339 | | // types, we can remove bottom up validation from the entire codebase and only validate | 340 | | // at top level ingestion (bootstrap, discovery response). This is a large change and will be | 341 | | // done as a separate PR. This change will also allow removing templating from most/all of | 342 | | // related functions. | 343 | 4 | std::string err; | 344 | 4 | if (!Validate(message, &err)) { | 345 | 2 | ProtoExceptionUtil::throwProtoValidationException(err, message); | 346 | 2 | } | 347 | 4 | } |
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 | 317 | 1 | bool recurse_into_any = false) { | 318 | | // TODO(adisuissa): There are multiple recursive traversals done by the | 319 | | // calls in this function. This can be refactored into a single recursive | 320 | | // traversal that invokes the various validators. | 321 | | | 322 | | // Log warnings or throw errors if deprecated fields or unknown fields are in use. | 323 | 1 | if (!validation_visitor.skipValidation()) { | 324 | 1 | checkForUnexpectedFields(message, validation_visitor, recurse_into_any); | 325 | 1 | } | 326 | | | 327 | | // Throw an exception if the config has an invalid Duration field. This is needed | 328 | | // because Envoy validates the duration in a strict way that is not supported by PGV. | 329 | 1 | validateDurationFields(message, recurse_into_any); | 330 | | | 331 | | // TODO(mattklein123): This will recurse the message twice, once above and once for PGV. When | 332 | | // we move to always recursing, satisfying the TODO below, we should merge into a single | 333 | | // recursion for performance reasons. | 334 | 1 | if (recurse_into_any) { | 335 | 0 | return recursivePgvCheck(message); | 336 | 0 | } | 337 | | | 338 | | // TODO(mattklein123): Now that PGV is capable of doing recursive message checks on abstract | 339 | | // types, we can remove bottom up validation from the entire codebase and only validate | 340 | | // at top level ingestion (bootstrap, discovery response). This is a large change and will be | 341 | | // done as a separate PR. This change will also allow removing templating from most/all of | 342 | | // related functions. | 343 | 1 | std::string err; | 344 | 1 | if (!Validate(message, &err)) { | 345 | 0 | ProtoExceptionUtil::throwProtoValidationException(err, message); | 346 | 0 | } | 347 | 1 | } |
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 | 317 | 26 | bool recurse_into_any = false) { | 318 | | // TODO(adisuissa): There are multiple recursive traversals done by the | 319 | | // calls in this function. This can be refactored into a single recursive | 320 | | // traversal that invokes the various validators. | 321 | | | 322 | | // Log warnings or throw errors if deprecated fields or unknown fields are in use. | 323 | 26 | if (!validation_visitor.skipValidation()) { | 324 | 26 | checkForUnexpectedFields(message, validation_visitor, recurse_into_any); | 325 | 26 | } | 326 | | | 327 | | // Throw an exception if the config has an invalid Duration field. This is needed | 328 | | // because Envoy validates the duration in a strict way that is not supported by PGV. | 329 | 26 | validateDurationFields(message, recurse_into_any); | 330 | | | 331 | | // TODO(mattklein123): This will recurse the message twice, once above and once for PGV. When | 332 | | // we move to always recursing, satisfying the TODO below, we should merge into a single | 333 | | // recursion for performance reasons. | 334 | 26 | if (recurse_into_any) { | 335 | 0 | return recursivePgvCheck(message); | 336 | 0 | } | 337 | | | 338 | | // TODO(mattklein123): Now that PGV is capable of doing recursive message checks on abstract | 339 | | // types, we can remove bottom up validation from the entire codebase and only validate | 340 | | // at top level ingestion (bootstrap, discovery response). This is a large change and will be | 341 | | // done as a separate PR. This change will also allow removing templating from most/all of | 342 | | // related functions. | 343 | 26 | std::string err; | 344 | 26 | if (!Validate(message, &err)) { | 345 | 0 | ProtoExceptionUtil::throwProtoValidationException(err, message); | 346 | 0 | } | 347 | 26 | } |
Unexecuted instantiation: void Envoy::MessageUtil::validate<envoy::extensions::filters::http::oauth2::v3::OAuth2>(envoy::extensions::filters::http::oauth2::v3::OAuth2 const&, Envoy::ProtobufMessage::ValidationVisitor&, bool) 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 | 317 | 2 | bool recurse_into_any = false) { | 318 | | // TODO(adisuissa): There are multiple recursive traversals done by the | 319 | | // calls in this function. This can be refactored into a single recursive | 320 | | // traversal that invokes the various validators. | 321 | | | 322 | | // Log warnings or throw errors if deprecated fields or unknown fields are in use. | 323 | 2 | if (!validation_visitor.skipValidation()) { | 324 | 2 | checkForUnexpectedFields(message, validation_visitor, recurse_into_any); | 325 | 2 | } | 326 | | | 327 | | // Throw an exception if the config has an invalid Duration field. This is needed | 328 | | // because Envoy validates the duration in a strict way that is not supported by PGV. | 329 | 2 | validateDurationFields(message, recurse_into_any); | 330 | | | 331 | | // TODO(mattklein123): This will recurse the message twice, once above and once for PGV. When | 332 | | // we move to always recursing, satisfying the TODO below, we should merge into a single | 333 | | // recursion for performance reasons. | 334 | 2 | if (recurse_into_any) { | 335 | 0 | return recursivePgvCheck(message); | 336 | 0 | } | 337 | | | 338 | | // TODO(mattklein123): Now that PGV is capable of doing recursive message checks on abstract | 339 | | // types, we can remove bottom up validation from the entire codebase and only validate | 340 | | // at top level ingestion (bootstrap, discovery response). This is a large change and will be | 341 | | // done as a separate PR. This change will also allow removing templating from most/all of | 342 | | // related functions. | 343 | 2 | std::string err; | 344 | 2 | if (!Validate(message, &err)) { | 345 | 0 | ProtoExceptionUtil::throwProtoValidationException(err, message); | 346 | 0 | } | 347 | 2 | } |
Unexecuted instantiation: 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) Unexecuted instantiation: void Envoy::MessageUtil::validate<envoy::extensions::filters::http::proto_message_extraction::v3::ProtoMessageExtractionConfig>(envoy::extensions::filters::http::proto_message_extraction::v3::ProtoMessageExtractionConfig const&, Envoy::ProtobufMessage::ValidationVisitor&, bool) 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 | 317 | 3 | bool recurse_into_any = false) { | 318 | | // TODO(adisuissa): There are multiple recursive traversals done by the | 319 | | // calls in this function. This can be refactored into a single recursive | 320 | | // traversal that invokes the various validators. | 321 | | | 322 | | // Log warnings or throw errors if deprecated fields or unknown fields are in use. | 323 | 3 | if (!validation_visitor.skipValidation()) { | 324 | 3 | checkForUnexpectedFields(message, validation_visitor, recurse_into_any); | 325 | 3 | } | 326 | | | 327 | | // Throw an exception if the config has an invalid Duration field. This is needed | 328 | | // because Envoy validates the duration in a strict way that is not supported by PGV. | 329 | 3 | validateDurationFields(message, recurse_into_any); | 330 | | | 331 | | // TODO(mattklein123): This will recurse the message twice, once above and once for PGV. When | 332 | | // we move to always recursing, satisfying the TODO below, we should merge into a single | 333 | | // recursion for performance reasons. | 334 | 3 | if (recurse_into_any) { | 335 | 0 | return recursivePgvCheck(message); | 336 | 0 | } | 337 | | | 338 | | // TODO(mattklein123): Now that PGV is capable of doing recursive message checks on abstract | 339 | | // types, we can remove bottom up validation from the entire codebase and only validate | 340 | | // at top level ingestion (bootstrap, discovery response). This is a large change and will be | 341 | | // done as a separate PR. This change will also allow removing templating from most/all of | 342 | | // related functions. | 343 | 3 | std::string err; | 344 | 3 | if (!Validate(message, &err)) { | 345 | 0 | ProtoExceptionUtil::throwProtoValidationException(err, message); | 346 | 0 | } | 347 | 3 | } |
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 | 317 | 428 | bool recurse_into_any = false) { | 318 | | // TODO(adisuissa): There are multiple recursive traversals done by the | 319 | | // calls in this function. This can be refactored into a single recursive | 320 | | // traversal that invokes the various validators. | 321 | | | 322 | | // Log warnings or throw errors if deprecated fields or unknown fields are in use. | 323 | 428 | if (!validation_visitor.skipValidation()) { | 324 | 428 | checkForUnexpectedFields(message, validation_visitor, recurse_into_any); | 325 | 428 | } | 326 | | | 327 | | // Throw an exception if the config has an invalid Duration field. This is needed | 328 | | // because Envoy validates the duration in a strict way that is not supported by PGV. | 329 | 428 | validateDurationFields(message, recurse_into_any); | 330 | | | 331 | | // TODO(mattklein123): This will recurse the message twice, once above and once for PGV. When | 332 | | // we move to always recursing, satisfying the TODO below, we should merge into a single | 333 | | // recursion for performance reasons. | 334 | 428 | if (recurse_into_any) { | 335 | 0 | return recursivePgvCheck(message); | 336 | 0 | } | 337 | | | 338 | | // TODO(mattklein123): Now that PGV is capable of doing recursive message checks on abstract | 339 | | // types, we can remove bottom up validation from the entire codebase and only validate | 340 | | // at top level ingestion (bootstrap, discovery response). This is a large change and will be | 341 | | // done as a separate PR. This change will also allow removing templating from most/all of | 342 | | // related functions. | 343 | 428 | std::string err; | 344 | 428 | if (!Validate(message, &err)) { | 345 | 17 | ProtoExceptionUtil::throwProtoValidationException(err, message); | 346 | 17 | } | 347 | 428 | } |
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 | 317 | 6 | bool recurse_into_any = false) { | 318 | | // TODO(adisuissa): There are multiple recursive traversals done by the | 319 | | // calls in this function. This can be refactored into a single recursive | 320 | | // traversal that invokes the various validators. | 321 | | | 322 | | // Log warnings or throw errors if deprecated fields or unknown fields are in use. | 323 | 6 | if (!validation_visitor.skipValidation()) { | 324 | 6 | checkForUnexpectedFields(message, validation_visitor, recurse_into_any); | 325 | 6 | } | 326 | | | 327 | | // Throw an exception if the config has an invalid Duration field. This is needed | 328 | | // because Envoy validates the duration in a strict way that is not supported by PGV. | 329 | 6 | validateDurationFields(message, recurse_into_any); | 330 | | | 331 | | // TODO(mattklein123): This will recurse the message twice, once above and once for PGV. When | 332 | | // we move to always recursing, satisfying the TODO below, we should merge into a single | 333 | | // recursion for performance reasons. | 334 | 6 | if (recurse_into_any) { | 335 | 0 | return recursivePgvCheck(message); | 336 | 0 | } | 337 | | | 338 | | // TODO(mattklein123): Now that PGV is capable of doing recursive message checks on abstract | 339 | | // types, we can remove bottom up validation from the entire codebase and only validate | 340 | | // at top level ingestion (bootstrap, discovery response). This is a large change and will be | 341 | | // done as a separate PR. This change will also allow removing templating from most/all of | 342 | | // related functions. | 343 | 6 | std::string err; | 344 | 6 | if (!Validate(message, &err)) { | 345 | 0 | ProtoExceptionUtil::throwProtoValidationException(err, message); | 346 | 0 | } | 347 | 6 | } |
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 | 317 | 82 | bool recurse_into_any = false) { | 318 | | // TODO(adisuissa): There are multiple recursive traversals done by the | 319 | | // calls in this function. This can be refactored into a single recursive | 320 | | // traversal that invokes the various validators. | 321 | | | 322 | | // Log warnings or throw errors if deprecated fields or unknown fields are in use. | 323 | 82 | if (!validation_visitor.skipValidation()) { | 324 | 82 | checkForUnexpectedFields(message, validation_visitor, recurse_into_any); | 325 | 82 | } | 326 | | | 327 | | // Throw an exception if the config has an invalid Duration field. This is needed | 328 | | // because Envoy validates the duration in a strict way that is not supported by PGV. | 329 | 82 | validateDurationFields(message, recurse_into_any); | 330 | | | 331 | | // TODO(mattklein123): This will recurse the message twice, once above and once for PGV. When | 332 | | // we move to always recursing, satisfying the TODO below, we should merge into a single | 333 | | // recursion for performance reasons. | 334 | 82 | if (recurse_into_any) { | 335 | 0 | return recursivePgvCheck(message); | 336 | 0 | } | 337 | | | 338 | | // TODO(mattklein123): Now that PGV is capable of doing recursive message checks on abstract | 339 | | // types, we can remove bottom up validation from the entire codebase and only validate | 340 | | // at top level ingestion (bootstrap, discovery response). This is a large change and will be | 341 | | // done as a separate PR. This change will also allow removing templating from most/all of | 342 | | // related functions. | 343 | 82 | std::string err; | 344 | 82 | if (!Validate(message, &err)) { | 345 | 1 | ProtoExceptionUtil::throwProtoValidationException(err, message); | 346 | 1 | } | 347 | 82 | } |
void Envoy::MessageUtil::validate<envoy::extensions::filters::http::thrift_to_metadata::v3::ThriftToMetadata>(envoy::extensions::filters::http::thrift_to_metadata::v3::ThriftToMetadata const&, Envoy::ProtobufMessage::ValidationVisitor&, bool) Line | Count | Source | 317 | 4 | bool recurse_into_any = false) { | 318 | | // TODO(adisuissa): There are multiple recursive traversals done by the | 319 | | // calls in this function. This can be refactored into a single recursive | 320 | | // traversal that invokes the various validators. | 321 | | | 322 | | // Log warnings or throw errors if deprecated fields or unknown fields are in use. | 323 | 4 | if (!validation_visitor.skipValidation()) { | 324 | 4 | checkForUnexpectedFields(message, validation_visitor, recurse_into_any); | 325 | 4 | } | 326 | | | 327 | | // Throw an exception if the config has an invalid Duration field. This is needed | 328 | | // because Envoy validates the duration in a strict way that is not supported by PGV. | 329 | 4 | validateDurationFields(message, recurse_into_any); | 330 | | | 331 | | // TODO(mattklein123): This will recurse the message twice, once above and once for PGV. When | 332 | | // we move to always recursing, satisfying the TODO below, we should merge into a single | 333 | | // recursion for performance reasons. | 334 | 4 | if (recurse_into_any) { | 335 | 0 | return recursivePgvCheck(message); | 336 | 0 | } | 337 | | | 338 | | // TODO(mattklein123): Now that PGV is capable of doing recursive message checks on abstract | 339 | | // types, we can remove bottom up validation from the entire codebase and only validate | 340 | | // at top level ingestion (bootstrap, discovery response). This is a large change and will be | 341 | | // done as a separate PR. This change will also allow removing templating from most/all of | 342 | | // related functions. | 343 | 4 | std::string err; | 344 | 4 | if (!Validate(message, &err)) { | 345 | 0 | ProtoExceptionUtil::throwProtoValidationException(err, message); | 346 | 0 | } | 347 | 4 | } |
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 | 317 | 16 | bool recurse_into_any = false) { | 318 | | // TODO(adisuissa): There are multiple recursive traversals done by the | 319 | | // calls in this function. This can be refactored into a single recursive | 320 | | // traversal that invokes the various validators. | 321 | | | 322 | | // Log warnings or throw errors if deprecated fields or unknown fields are in use. | 323 | 16 | if (!validation_visitor.skipValidation()) { | 324 | 16 | checkForUnexpectedFields(message, validation_visitor, recurse_into_any); | 325 | 16 | } | 326 | | | 327 | | // Throw an exception if the config has an invalid Duration field. This is needed | 328 | | // because Envoy validates the duration in a strict way that is not supported by PGV. | 329 | 16 | validateDurationFields(message, recurse_into_any); | 330 | | | 331 | | // TODO(mattklein123): This will recurse the message twice, once above and once for PGV. When | 332 | | // we move to always recursing, satisfying the TODO below, we should merge into a single | 333 | | // recursion for performance reasons. | 334 | 16 | if (recurse_into_any) { | 335 | 0 | return recursivePgvCheck(message); | 336 | 0 | } | 337 | | | 338 | | // TODO(mattklein123): Now that PGV is capable of doing recursive message checks on abstract | 339 | | // types, we can remove bottom up validation from the entire codebase and only validate | 340 | | // at top level ingestion (bootstrap, discovery response). This is a large change and will be | 341 | | // done as a separate PR. This change will also allow removing templating from most/all of | 342 | | // related functions. | 343 | 16 | std::string err; | 344 | 16 | if (!Validate(message, &err)) { | 345 | 0 | ProtoExceptionUtil::throwProtoValidationException(err, message); | 346 | 0 | } | 347 | 16 | } |
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) Unexecuted instantiation: 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) 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 | 317 | 6 | bool recurse_into_any = false) { | 318 | | // TODO(adisuissa): There are multiple recursive traversals done by the | 319 | | // calls in this function. This can be refactored into a single recursive | 320 | | // traversal that invokes the various validators. | 321 | | | 322 | | // Log warnings or throw errors if deprecated fields or unknown fields are in use. | 323 | 6 | if (!validation_visitor.skipValidation()) { | 324 | 6 | checkForUnexpectedFields(message, validation_visitor, recurse_into_any); | 325 | 6 | } | 326 | | | 327 | | // Throw an exception if the config has an invalid Duration field. This is needed | 328 | | // because Envoy validates the duration in a strict way that is not supported by PGV. | 329 | 6 | validateDurationFields(message, recurse_into_any); | 330 | | | 331 | | // TODO(mattklein123): This will recurse the message twice, once above and once for PGV. When | 332 | | // we move to always recursing, satisfying the TODO below, we should merge into a single | 333 | | // recursion for performance reasons. | 334 | 6 | if (recurse_into_any) { | 335 | 0 | return recursivePgvCheck(message); | 336 | 0 | } | 337 | | | 338 | | // TODO(mattklein123): Now that PGV is capable of doing recursive message checks on abstract | 339 | | // types, we can remove bottom up validation from the entire codebase and only validate | 340 | | // at top level ingestion (bootstrap, discovery response). This is a large change and will be | 341 | | // done as a separate PR. This change will also allow removing templating from most/all of | 342 | | // related functions. | 343 | 6 | std::string err; | 344 | 6 | if (!Validate(message, &err)) { | 345 | 0 | ProtoExceptionUtil::throwProtoValidationException(err, message); | 346 | 0 | } | 347 | 6 | } |
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 | 317 | 60 | bool recurse_into_any = false) { | 318 | | // TODO(adisuissa): There are multiple recursive traversals done by the | 319 | | // calls in this function. This can be refactored into a single recursive | 320 | | // traversal that invokes the various validators. | 321 | | | 322 | | // Log warnings or throw errors if deprecated fields or unknown fields are in use. | 323 | 60 | if (!validation_visitor.skipValidation()) { | 324 | 60 | checkForUnexpectedFields(message, validation_visitor, recurse_into_any); | 325 | 60 | } | 326 | | | 327 | | // Throw an exception if the config has an invalid Duration field. This is needed | 328 | | // because Envoy validates the duration in a strict way that is not supported by PGV. | 329 | 60 | validateDurationFields(message, recurse_into_any); | 330 | | | 331 | | // TODO(mattklein123): This will recurse the message twice, once above and once for PGV. When | 332 | | // we move to always recursing, satisfying the TODO below, we should merge into a single | 333 | | // recursion for performance reasons. | 334 | 60 | if (recurse_into_any) { | 335 | 0 | return recursivePgvCheck(message); | 336 | 0 | } | 337 | | | 338 | | // TODO(mattklein123): Now that PGV is capable of doing recursive message checks on abstract | 339 | | // types, we can remove bottom up validation from the entire codebase and only validate | 340 | | // at top level ingestion (bootstrap, discovery response). This is a large change and will be | 341 | | // done as a separate PR. This change will also allow removing templating from most/all of | 342 | | // related functions. | 343 | 60 | std::string err; | 344 | 60 | if (!Validate(message, &err)) { | 345 | 0 | ProtoExceptionUtil::throwProtoValidationException(err, message); | 346 | 0 | } | 347 | 60 | } |
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::ext_authz::v3::ExtAuthz>(envoy::extensions::filters::network::ext_authz::v3::ExtAuthz const&, Envoy::ProtobufMessage::ValidationVisitor&, bool) Line | Count | Source | 317 | 8 | bool recurse_into_any = false) { | 318 | | // TODO(adisuissa): There are multiple recursive traversals done by the | 319 | | // calls in this function. This can be refactored into a single recursive | 320 | | // traversal that invokes the various validators. | 321 | | | 322 | | // Log warnings or throw errors if deprecated fields or unknown fields are in use. | 323 | 8 | if (!validation_visitor.skipValidation()) { | 324 | 8 | checkForUnexpectedFields(message, validation_visitor, recurse_into_any); | 325 | 8 | } | 326 | | | 327 | | // Throw an exception if the config has an invalid Duration field. This is needed | 328 | | // because Envoy validates the duration in a strict way that is not supported by PGV. | 329 | 8 | validateDurationFields(message, recurse_into_any); | 330 | | | 331 | | // TODO(mattklein123): This will recurse the message twice, once above and once for PGV. When | 332 | | // we move to always recursing, satisfying the TODO below, we should merge into a single | 333 | | // recursion for performance reasons. | 334 | 8 | if (recurse_into_any) { | 335 | 0 | return recursivePgvCheck(message); | 336 | 0 | } | 337 | | | 338 | | // TODO(mattklein123): Now that PGV is capable of doing recursive message checks on abstract | 339 | | // types, we can remove bottom up validation from the entire codebase and only validate | 340 | | // at top level ingestion (bootstrap, discovery response). This is a large change and will be | 341 | | // done as a separate PR. This change will also allow removing templating from most/all of | 342 | | // related functions. | 343 | 8 | std::string err; | 344 | 8 | if (!Validate(message, &err)) { | 345 | 0 | ProtoExceptionUtil::throwProtoValidationException(err, message); | 346 | 0 | } | 347 | 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 | 317 | 3 | bool recurse_into_any = false) { | 318 | | // TODO(adisuissa): There are multiple recursive traversals done by the | 319 | | // calls in this function. This can be refactored into a single recursive | 320 | | // traversal that invokes the various validators. | 321 | | | 322 | | // Log warnings or throw errors if deprecated fields or unknown fields are in use. | 323 | 3 | if (!validation_visitor.skipValidation()) { | 324 | 3 | checkForUnexpectedFields(message, validation_visitor, recurse_into_any); | 325 | 3 | } | 326 | | | 327 | | // Throw an exception if the config has an invalid Duration field. This is needed | 328 | | // because Envoy validates the duration in a strict way that is not supported by PGV. | 329 | 3 | validateDurationFields(message, recurse_into_any); | 330 | | | 331 | | // TODO(mattklein123): This will recurse the message twice, once above and once for PGV. When | 332 | | // we move to always recursing, satisfying the TODO below, we should merge into a single | 333 | | // recursion for performance reasons. | 334 | 3 | if (recurse_into_any) { | 335 | 0 | return recursivePgvCheck(message); | 336 | 0 | } | 337 | | | 338 | | // TODO(mattklein123): Now that PGV is capable of doing recursive message checks on abstract | 339 | | // types, we can remove bottom up validation from the entire codebase and only validate | 340 | | // at top level ingestion (bootstrap, discovery response). This is a large change and will be | 341 | | // done as a separate PR. This change will also allow removing templating from most/all of | 342 | | // related functions. | 343 | 3 | std::string err; | 344 | 3 | if (!Validate(message, &err)) { | 345 | 1 | ProtoExceptionUtil::throwProtoValidationException(err, message); | 346 | 1 | } | 347 | 3 | } |
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 | 317 | 1.89k | bool recurse_into_any = false) { | 318 | | // TODO(adisuissa): There are multiple recursive traversals done by the | 319 | | // calls in this function. This can be refactored into a single recursive | 320 | | // traversal that invokes the various validators. | 321 | | | 322 | | // Log warnings or throw errors if deprecated fields or unknown fields are in use. | 323 | 1.89k | if (!validation_visitor.skipValidation()) { | 324 | 1.89k | checkForUnexpectedFields(message, validation_visitor, recurse_into_any); | 325 | 1.89k | } | 326 | | | 327 | | // Throw an exception if the config has an invalid Duration field. This is needed | 328 | | // because Envoy validates the duration in a strict way that is not supported by PGV. | 329 | 1.89k | validateDurationFields(message, recurse_into_any); | 330 | | | 331 | | // TODO(mattklein123): This will recurse the message twice, once above and once for PGV. When | 332 | | // we move to always recursing, satisfying the TODO below, we should merge into a single | 333 | | // recursion for performance reasons. | 334 | 1.89k | if (recurse_into_any) { | 335 | 0 | return recursivePgvCheck(message); | 336 | 0 | } | 337 | | | 338 | | // TODO(mattklein123): Now that PGV is capable of doing recursive message checks on abstract | 339 | | // types, we can remove bottom up validation from the entire codebase and only validate | 340 | | // at top level ingestion (bootstrap, discovery response). This is a large change and will be | 341 | | // done as a separate PR. This change will also allow removing templating from most/all of | 342 | | // related functions. | 343 | 1.89k | std::string err; | 344 | 1.89k | if (!Validate(message, &err)) { | 345 | 57 | ProtoExceptionUtil::throwProtoValidationException(err, message); | 346 | 57 | } | 347 | 1.89k | } |
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 | 317 | 4 | bool recurse_into_any = false) { | 318 | | // TODO(adisuissa): There are multiple recursive traversals done by the | 319 | | // calls in this function. This can be refactored into a single recursive | 320 | | // traversal that invokes the various validators. | 321 | | | 322 | | // Log warnings or throw errors if deprecated fields or unknown fields are in use. | 323 | 4 | if (!validation_visitor.skipValidation()) { | 324 | 4 | checkForUnexpectedFields(message, validation_visitor, recurse_into_any); | 325 | 4 | } | 326 | | | 327 | | // Throw an exception if the config has an invalid Duration field. This is needed | 328 | | // because Envoy validates the duration in a strict way that is not supported by PGV. | 329 | 4 | validateDurationFields(message, recurse_into_any); | 330 | | | 331 | | // TODO(mattklein123): This will recurse the message twice, once above and once for PGV. When | 332 | | // we move to always recursing, satisfying the TODO below, we should merge into a single | 333 | | // recursion for performance reasons. | 334 | 4 | if (recurse_into_any) { | 335 | 0 | return recursivePgvCheck(message); | 336 | 0 | } | 337 | | | 338 | | // TODO(mattklein123): Now that PGV is capable of doing recursive message checks on abstract | 339 | | // types, we can remove bottom up validation from the entire codebase and only validate | 340 | | // at top level ingestion (bootstrap, discovery response). This is a large change and will be | 341 | | // done as a separate PR. This change will also allow removing templating from most/all of | 342 | | // related functions. | 343 | 4 | std::string err; | 344 | 4 | if (!Validate(message, &err)) { | 345 | 0 | ProtoExceptionUtil::throwProtoValidationException(err, message); | 346 | 0 | } | 347 | 4 | } |
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 | 317 | 647 | bool recurse_into_any = false) { | 318 | | // TODO(adisuissa): There are multiple recursive traversals done by the | 319 | | // calls in this function. This can be refactored into a single recursive | 320 | | // traversal that invokes the various validators. | 321 | | | 322 | | // Log warnings or throw errors if deprecated fields or unknown fields are in use. | 323 | 647 | if (!validation_visitor.skipValidation()) { | 324 | 647 | checkForUnexpectedFields(message, validation_visitor, recurse_into_any); | 325 | 647 | } | 326 | | | 327 | | // Throw an exception if the config has an invalid Duration field. This is needed | 328 | | // because Envoy validates the duration in a strict way that is not supported by PGV. | 329 | 647 | validateDurationFields(message, recurse_into_any); | 330 | | | 331 | | // TODO(mattklein123): This will recurse the message twice, once above and once for PGV. When | 332 | | // we move to always recursing, satisfying the TODO below, we should merge into a single | 333 | | // recursion for performance reasons. | 334 | 647 | if (recurse_into_any) { | 335 | 0 | return recursivePgvCheck(message); | 336 | 0 | } | 337 | | | 338 | | // TODO(mattklein123): Now that PGV is capable of doing recursive message checks on abstract | 339 | | // types, we can remove bottom up validation from the entire codebase and only validate | 340 | | // at top level ingestion (bootstrap, discovery response). This is a large change and will be | 341 | | // done as a separate PR. This change will also allow removing templating from most/all of | 342 | | // related functions. | 343 | 647 | std::string err; | 344 | 647 | if (!Validate(message, &err)) { | 345 | 24 | ProtoExceptionUtil::throwProtoValidationException(err, message); | 346 | 24 | } | 347 | 647 | } |
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 | 317 | 831 | bool recurse_into_any = false) { | 318 | | // TODO(adisuissa): There are multiple recursive traversals done by the | 319 | | // calls in this function. This can be refactored into a single recursive | 320 | | // traversal that invokes the various validators. | 321 | | | 322 | | // Log warnings or throw errors if deprecated fields or unknown fields are in use. | 323 | 831 | if (!validation_visitor.skipValidation()) { | 324 | 831 | checkForUnexpectedFields(message, validation_visitor, recurse_into_any); | 325 | 831 | } | 326 | | | 327 | | // Throw an exception if the config has an invalid Duration field. This is needed | 328 | | // because Envoy validates the duration in a strict way that is not supported by PGV. | 329 | 831 | validateDurationFields(message, recurse_into_any); | 330 | | | 331 | | // TODO(mattklein123): This will recurse the message twice, once above and once for PGV. When | 332 | | // we move to always recursing, satisfying the TODO below, we should merge into a single | 333 | | // recursion for performance reasons. | 334 | 831 | if (recurse_into_any) { | 335 | 0 | return recursivePgvCheck(message); | 336 | 0 | } | 337 | | | 338 | | // TODO(mattklein123): Now that PGV is capable of doing recursive message checks on abstract | 339 | | // types, we can remove bottom up validation from the entire codebase and only validate | 340 | | // at top level ingestion (bootstrap, discovery response). This is a large change and will be | 341 | | // done as a separate PR. This change will also allow removing templating from most/all of | 342 | | // related functions. | 343 | 831 | std::string err; | 344 | 831 | if (!Validate(message, &err)) { | 345 | 4 | ProtoExceptionUtil::throwProtoValidationException(err, message); | 346 | 4 | } | 347 | 831 | } |
Unexecuted instantiation: void Envoy::MessageUtil::validate<envoy::extensions::filters::network::generic_proxy::v3::RouteConfiguration>(envoy::extensions::filters::network::generic_proxy::v3::RouteConfiguration const&, Envoy::ProtobufMessage::ValidationVisitor&, bool) Unexecuted instantiation: void Envoy::MessageUtil::validate<envoy::extensions::filters::network::generic_proxy::v3::GenericProxy>(envoy::extensions::filters::network::generic_proxy::v3::GenericProxy const&, Envoy::ProtobufMessage::ValidationVisitor&, bool) Unexecuted instantiation: void Envoy::MessageUtil::validate<envoy::extensions::filters::network::generic_proxy::action::v3::RouteAction>(envoy::extensions::filters::network::generic_proxy::action::v3::RouteAction const&, Envoy::ProtobufMessage::ValidationVisitor&, bool) Unexecuted instantiation: void Envoy::MessageUtil::validate<envoy::extensions::filters::network::generic_proxy::matcher::v3::PropertyMatchInput>(envoy::extensions::filters::network::generic_proxy::matcher::v3::PropertyMatchInput const&, Envoy::ProtobufMessage::ValidationVisitor&, bool) Unexecuted instantiation: void Envoy::MessageUtil::validate<envoy::extensions::filters::network::generic_proxy::matcher::v3::RequestMatcher>(envoy::extensions::filters::network::generic_proxy::matcher::v3::RequestMatcher const&, Envoy::ProtobufMessage::ValidationVisitor&, bool) 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::extensions::resource_monitors::cpu_utilization::v3::CpuUtilizationConfig>(envoy::extensions::resource_monitors::cpu_utilization::v3::CpuUtilizationConfig 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::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::tracers::opentelemetry::resource_detectors::v3::DynatraceResourceDetectorConfig>(envoy::extensions::tracers::opentelemetry::resource_detectors::v3::DynatraceResourceDetectorConfig const&, Envoy::ProtobufMessage::ValidationVisitor&, bool) Unexecuted instantiation: void Envoy::MessageUtil::validate<envoy::extensions::tracers::opentelemetry::resource_detectors::v3::StaticConfigResourceDetectorConfig>(envoy::extensions::tracers::opentelemetry::resource_detectors::v3::StaticConfigResourceDetectorConfig const&, Envoy::ProtobufMessage::ValidationVisitor&, bool) Unexecuted instantiation: void Envoy::MessageUtil::validate<envoy::extensions::tracers::opentelemetry::samplers::v3::DynatraceSamplerConfig>(envoy::extensions::tracers::opentelemetry::samplers::v3::DynatraceSamplerConfig 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::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::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::http::injected_credentials::generic::v3::Generic>(envoy::extensions::http::injected_credentials::generic::v3::Generic const&, Envoy::ProtobufMessage::ValidationVisitor&, bool) Unexecuted instantiation: void Envoy::MessageUtil::validate<envoy::extensions::http::injected_credentials::oauth2::v3::OAuth2>(envoy::extensions::http::injected_credentials::oauth2::v3::OAuth2 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::quic::server_preferred_address::v3::DataSourceServerPreferredAddressConfig>(envoy::extensions::quic::server_preferred_address::v3::DataSourceServerPreferredAddressConfig 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) void Envoy::MessageUtil::validate<envoy::config::rbac::v3::Action>(envoy::config::rbac::v3::Action const&, Envoy::ProtobufMessage::ValidationVisitor&, bool) Line | Count | Source | 317 | 1 | bool recurse_into_any = false) { | 318 | | // TODO(adisuissa): There are multiple recursive traversals done by the | 319 | | // calls in this function. This can be refactored into a single recursive | 320 | | // traversal that invokes the various validators. | 321 | | | 322 | | // Log warnings or throw errors if deprecated fields or unknown fields are in use. | 323 | 1 | if (!validation_visitor.skipValidation()) { | 324 | 1 | checkForUnexpectedFields(message, validation_visitor, recurse_into_any); | 325 | 1 | } | 326 | | | 327 | | // Throw an exception if the config has an invalid Duration field. This is needed | 328 | | // because Envoy validates the duration in a strict way that is not supported by PGV. | 329 | 1 | validateDurationFields(message, recurse_into_any); | 330 | | | 331 | | // TODO(mattklein123): This will recurse the message twice, once above and once for PGV. When | 332 | | // we move to always recursing, satisfying the TODO below, we should merge into a single | 333 | | // recursion for performance reasons. | 334 | 1 | if (recurse_into_any) { | 335 | 0 | return recursivePgvCheck(message); | 336 | 0 | } | 337 | | | 338 | | // TODO(mattklein123): Now that PGV is capable of doing recursive message checks on abstract | 339 | | // types, we can remove bottom up validation from the entire codebase and only validate | 340 | | // at top level ingestion (bootstrap, discovery response). This is a large change and will be | 341 | | // done as a separate PR. This change will also allow removing templating from most/all of | 342 | | // related functions. | 343 | 1 | std::string err; | 344 | 1 | if (!Validate(message, &err)) { | 345 | 1 | ProtoExceptionUtil::throwProtoValidationException(err, message); | 346 | 1 | } | 347 | 1 | } |
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::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::geoip_providers::maxmind::v3::MaxMindConfig>(envoy::extensions::geoip_providers::maxmind::v3::MaxMindConfig const&, Envoy::ProtobufMessage::ValidationVisitor&, bool) Unexecuted instantiation: void Envoy::MessageUtil::validate<envoy::extensions::filters::network::generic_proxy::router::v3::Router>(envoy::extensions::filters::network::generic_proxy::router::v3::Router const&, Envoy::ProtobufMessage::ValidationVisitor&, bool) void Envoy::MessageUtil::validate<test::common::http::PathUtilityTestCase>(test::common::http::PathUtilityTestCase const&, Envoy::ProtobufMessage::ValidationVisitor&, bool) Line | Count | Source | 317 | 1.14k | bool recurse_into_any = false) { | 318 | | // TODO(adisuissa): There are multiple recursive traversals done by the | 319 | | // calls in this function. This can be refactored into a single recursive | 320 | | // traversal that invokes the various validators. | 321 | | | 322 | | // Log warnings or throw errors if deprecated fields or unknown fields are in use. | 323 | 1.14k | if (!validation_visitor.skipValidation()) { | 324 | 1.14k | checkForUnexpectedFields(message, validation_visitor, recurse_into_any); | 325 | 1.14k | } | 326 | | | 327 | | // Throw an exception if the config has an invalid Duration field. This is needed | 328 | | // because Envoy validates the duration in a strict way that is not supported by PGV. | 329 | 1.14k | validateDurationFields(message, recurse_into_any); | 330 | | | 331 | | // TODO(mattklein123): This will recurse the message twice, once above and once for PGV. When | 332 | | // we move to always recursing, satisfying the TODO below, we should merge into a single | 333 | | // recursion for performance reasons. | 334 | 1.14k | if (recurse_into_any) { | 335 | 0 | return recursivePgvCheck(message); | 336 | 0 | } | 337 | | | 338 | | // TODO(mattklein123): Now that PGV is capable of doing recursive message checks on abstract | 339 | | // types, we can remove bottom up validation from the entire codebase and only validate | 340 | | // at top level ingestion (bootstrap, discovery response). This is a large change and will be | 341 | | // done as a separate PR. This change will also allow removing templating from most/all of | 342 | | // related functions. | 343 | 1.14k | std::string err; | 344 | 1.14k | if (!Validate(message, &err)) { | 345 | 65 | ProtoExceptionUtil::throwProtoValidationException(err, message); | 346 | 65 | } | 347 | 1.14k | } |
void Envoy::MessageUtil::validate<test::server::config_validation::XdsTestCase>(test::server::config_validation::XdsTestCase const&, Envoy::ProtobufMessage::ValidationVisitor&, bool) Line | Count | Source | 317 | 25 | bool recurse_into_any = false) { | 318 | | // TODO(adisuissa): There are multiple recursive traversals done by the | 319 | | // calls in this function. This can be refactored into a single recursive | 320 | | // traversal that invokes the various validators. | 321 | | | 322 | | // Log warnings or throw errors if deprecated fields or unknown fields are in use. | 323 | 25 | if (!validation_visitor.skipValidation()) { | 324 | 25 | checkForUnexpectedFields(message, validation_visitor, recurse_into_any); | 325 | 25 | } | 326 | | | 327 | | // Throw an exception if the config has an invalid Duration field. This is needed | 328 | | // because Envoy validates the duration in a strict way that is not supported by PGV. | 329 | 25 | validateDurationFields(message, recurse_into_any); | 330 | | | 331 | | // TODO(mattklein123): This will recurse the message twice, once above and once for PGV. When | 332 | | // we move to always recursing, satisfying the TODO below, we should merge into a single | 333 | | // recursion for performance reasons. | 334 | 25 | if (recurse_into_any) { | 335 | 0 | return recursivePgvCheck(message); | 336 | 0 | } | 337 | | | 338 | | // TODO(mattklein123): Now that PGV is capable of doing recursive message checks on abstract | 339 | | // types, we can remove bottom up validation from the entire codebase and only validate | 340 | | // at top level ingestion (bootstrap, discovery response). This is a large change and will be | 341 | | // done as a separate PR. This change will also allow removing templating from most/all of | 342 | | // related functions. | 343 | 25 | std::string err; | 344 | 25 | if (!Validate(message, &err)) { | 345 | 18 | ProtoExceptionUtil::throwProtoValidationException(err, message); | 346 | 18 | } | 347 | 25 | } |
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 | 317 | 1.06k | bool recurse_into_any = false) { | 318 | | // TODO(adisuissa): There are multiple recursive traversals done by the | 319 | | // calls in this function. This can be refactored into a single recursive | 320 | | // traversal that invokes the various validators. | 321 | | | 322 | | // Log warnings or throw errors if deprecated fields or unknown fields are in use. | 323 | 1.06k | if (!validation_visitor.skipValidation()) { | 324 | 1.06k | checkForUnexpectedFields(message, validation_visitor, recurse_into_any); | 325 | 1.06k | } | 326 | | | 327 | | // Throw an exception if the config has an invalid Duration field. This is needed | 328 | | // because Envoy validates the duration in a strict way that is not supported by PGV. | 329 | 1.06k | validateDurationFields(message, recurse_into_any); | 330 | | | 331 | | // TODO(mattklein123): This will recurse the message twice, once above and once for PGV. When | 332 | | // we move to always recursing, satisfying the TODO below, we should merge into a single | 333 | | // recursion for performance reasons. | 334 | 1.06k | if (recurse_into_any) { | 335 | 0 | return recursivePgvCheck(message); | 336 | 0 | } | 337 | | | 338 | | // TODO(mattklein123): Now that PGV is capable of doing recursive message checks on abstract | 339 | | // types, we can remove bottom up validation from the entire codebase and only validate | 340 | | // at top level ingestion (bootstrap, discovery response). This is a large change and will be | 341 | | // done as a separate PR. This change will also allow removing templating from most/all of | 342 | | // related functions. | 343 | 1.06k | std::string err; | 344 | 1.06k | if (!Validate(message, &err)) { | 345 | 74 | ProtoExceptionUtil::throwProtoValidationException(err, message); | 346 | 74 | } | 347 | 1.06k | } |
void Envoy::MessageUtil::validate<test::common::http::CodecImplFuzzTestCase>(test::common::http::CodecImplFuzzTestCase const&, Envoy::ProtobufMessage::ValidationVisitor&, bool) Line | Count | Source | 317 | 16.4k | bool recurse_into_any = false) { | 318 | | // TODO(adisuissa): There are multiple recursive traversals done by the | 319 | | // calls in this function. This can be refactored into a single recursive | 320 | | // traversal that invokes the various validators. | 321 | | | 322 | | // Log warnings or throw errors if deprecated fields or unknown fields are in use. | 323 | 16.4k | if (!validation_visitor.skipValidation()) { | 324 | 16.4k | checkForUnexpectedFields(message, validation_visitor, recurse_into_any); | 325 | 16.4k | } | 326 | | | 327 | | // Throw an exception if the config has an invalid Duration field. This is needed | 328 | | // because Envoy validates the duration in a strict way that is not supported by PGV. | 329 | 16.4k | validateDurationFields(message, recurse_into_any); | 330 | | | 331 | | // TODO(mattklein123): This will recurse the message twice, once above and once for PGV. When | 332 | | // we move to always recursing, satisfying the TODO below, we should merge into a single | 333 | | // recursion for performance reasons. | 334 | 16.4k | if (recurse_into_any) { | 335 | 0 | return recursivePgvCheck(message); | 336 | 0 | } | 337 | | | 338 | | // TODO(mattklein123): Now that PGV is capable of doing recursive message checks on abstract | 339 | | // types, we can remove bottom up validation from the entire codebase and only validate | 340 | | // at top level ingestion (bootstrap, discovery response). This is a large change and will be | 341 | | // done as a separate PR. This change will also allow removing templating from most/all of | 342 | | // related functions. | 343 | 16.4k | std::string err; | 344 | 16.4k | if (!Validate(message, &err)) { | 345 | 41 | ProtoExceptionUtil::throwProtoValidationException(err, message); | 346 | 41 | } | 347 | 16.4k | } |
void Envoy::MessageUtil::validate<test::common::upstream::HealthCheckTestCase>(test::common::upstream::HealthCheckTestCase const&, Envoy::ProtobufMessage::ValidationVisitor&, bool) Line | Count | Source | 317 | 3.67k | bool recurse_into_any = false) { | 318 | | // TODO(adisuissa): There are multiple recursive traversals done by the | 319 | | // calls in this function. This can be refactored into a single recursive | 320 | | // traversal that invokes the various validators. | 321 | | | 322 | | // Log warnings or throw errors if deprecated fields or unknown fields are in use. | 323 | 3.67k | if (!validation_visitor.skipValidation()) { | 324 | 3.67k | checkForUnexpectedFields(message, validation_visitor, recurse_into_any); | 325 | 3.67k | } | 326 | | | 327 | | // Throw an exception if the config has an invalid Duration field. This is needed | 328 | | // because Envoy validates the duration in a strict way that is not supported by PGV. | 329 | 3.67k | validateDurationFields(message, recurse_into_any); | 330 | | | 331 | | // TODO(mattklein123): This will recurse the message twice, once above and once for PGV. When | 332 | | // we move to always recursing, satisfying the TODO below, we should merge into a single | 333 | | // recursion for performance reasons. | 334 | 3.67k | if (recurse_into_any) { | 335 | 0 | return recursivePgvCheck(message); | 336 | 0 | } | 337 | | | 338 | | // TODO(mattklein123): Now that PGV is capable of doing recursive message checks on abstract | 339 | | // types, we can remove bottom up validation from the entire codebase and only validate | 340 | | // at top level ingestion (bootstrap, discovery response). This is a large change and will be | 341 | | // done as a separate PR. This change will also allow removing templating from most/all of | 342 | | // related functions. | 343 | 3.67k | std::string err; | 344 | 3.67k | if (!Validate(message, &err)) { | 345 | 292 | ProtoExceptionUtil::throwProtoValidationException(err, message); | 346 | 292 | } | 347 | 3.67k | } |
void Envoy::MessageUtil::validate<test::common::router::TestCase>(test::common::router::TestCase const&, Envoy::ProtobufMessage::ValidationVisitor&, bool) Line | Count | Source | 317 | 5.76k | bool recurse_into_any = false) { | 318 | | // TODO(adisuissa): There are multiple recursive traversals done by the | 319 | | // calls in this function. This can be refactored into a single recursive | 320 | | // traversal that invokes the various validators. | 321 | | | 322 | | // Log warnings or throw errors if deprecated fields or unknown fields are in use. | 323 | 5.76k | if (!validation_visitor.skipValidation()) { | 324 | 5.76k | checkForUnexpectedFields(message, validation_visitor, recurse_into_any); | 325 | 5.76k | } | 326 | | | 327 | | // Throw an exception if the config has an invalid Duration field. This is needed | 328 | | // because Envoy validates the duration in a strict way that is not supported by PGV. | 329 | 5.76k | validateDurationFields(message, recurse_into_any); | 330 | | | 331 | | // TODO(mattklein123): This will recurse the message twice, once above and once for PGV. When | 332 | | // we move to always recursing, satisfying the TODO below, we should merge into a single | 333 | | // recursion for performance reasons. | 334 | 5.76k | if (recurse_into_any) { | 335 | 0 | return recursivePgvCheck(message); | 336 | 0 | } | 337 | | | 338 | | // TODO(mattklein123): Now that PGV is capable of doing recursive message checks on abstract | 339 | | // types, we can remove bottom up validation from the entire codebase and only validate | 340 | | // at top level ingestion (bootstrap, discovery response). This is a large change and will be | 341 | | // done as a separate PR. This change will also allow removing templating from most/all of | 342 | | // related functions. | 343 | 5.76k | std::string err; | 344 | 5.76k | if (!Validate(message, &err)) { | 345 | 636 | ProtoExceptionUtil::throwProtoValidationException(err, message); | 346 | 636 | } | 347 | 5.76k | } |
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 | 317 | 138 | bool recurse_into_any = false) { | 318 | | // TODO(adisuissa): There are multiple recursive traversals done by the | 319 | | // calls in this function. This can be refactored into a single recursive | 320 | | // traversal that invokes the various validators. | 321 | | | 322 | | // Log warnings or throw errors if deprecated fields or unknown fields are in use. | 323 | 138 | if (!validation_visitor.skipValidation()) { | 324 | 138 | checkForUnexpectedFields(message, validation_visitor, recurse_into_any); | 325 | 138 | } | 326 | | | 327 | | // Throw an exception if the config has an invalid Duration field. This is needed | 328 | | // because Envoy validates the duration in a strict way that is not supported by PGV. | 329 | 138 | validateDurationFields(message, recurse_into_any); | 330 | | | 331 | | // TODO(mattklein123): This will recurse the message twice, once above and once for PGV. When | 332 | | // we move to always recursing, satisfying the TODO below, we should merge into a single | 333 | | // recursion for performance reasons. | 334 | 138 | if (recurse_into_any) { | 335 | 0 | return recursivePgvCheck(message); | 336 | 0 | } | 337 | | | 338 | | // TODO(mattklein123): Now that PGV is capable of doing recursive message checks on abstract | 339 | | // types, we can remove bottom up validation from the entire codebase and only validate | 340 | | // at top level ingestion (bootstrap, discovery response). This is a large change and will be | 341 | | // done as a separate PR. This change will also allow removing templating from most/all of | 342 | | // related functions. | 343 | 138 | std::string err; | 344 | 138 | if (!Validate(message, &err)) { | 345 | 137 | ProtoExceptionUtil::throwProtoValidationException(err, message); | 346 | 137 | } | 347 | 138 | } |
void Envoy::MessageUtil::validate<test::extensions::filters::network::FilterFuzzTestCase>(test::extensions::filters::network::FilterFuzzTestCase const&, Envoy::ProtobufMessage::ValidationVisitor&, bool) Line | Count | Source | 317 | 8.40k | bool recurse_into_any = false) { | 318 | | // TODO(adisuissa): There are multiple recursive traversals done by the | 319 | | // calls in this function. This can be refactored into a single recursive | 320 | | // traversal that invokes the various validators. | 321 | | | 322 | | // Log warnings or throw errors if deprecated fields or unknown fields are in use. | 323 | 8.40k | if (!validation_visitor.skipValidation()) { | 324 | 8.40k | checkForUnexpectedFields(message, validation_visitor, recurse_into_any); | 325 | 8.40k | } | 326 | | | 327 | | // Throw an exception if the config has an invalid Duration field. This is needed | 328 | | // because Envoy validates the duration in a strict way that is not supported by PGV. | 329 | 8.40k | validateDurationFields(message, recurse_into_any); | 330 | | | 331 | | // TODO(mattklein123): This will recurse the message twice, once above and once for PGV. When | 332 | | // we move to always recursing, satisfying the TODO below, we should merge into a single | 333 | | // recursion for performance reasons. | 334 | 8.40k | if (recurse_into_any) { | 335 | 0 | return recursivePgvCheck(message); | 336 | 0 | } | 337 | | | 338 | | // TODO(mattklein123): Now that PGV is capable of doing recursive message checks on abstract | 339 | | // types, we can remove bottom up validation from the entire codebase and only validate | 340 | | // at top level ingestion (bootstrap, discovery response). This is a large change and will be | 341 | | // done as a separate PR. This change will also allow removing templating from most/all of | 342 | | // related functions. | 343 | 8.40k | std::string err; | 344 | 8.40k | if (!Validate(message, &err)) { | 345 | 0 | ProtoExceptionUtil::throwProtoValidationException(err, message); | 346 | 0 | } | 347 | 8.40k | } |
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 | 317 | 1.16k | bool recurse_into_any = false) { | 318 | | // TODO(adisuissa): There are multiple recursive traversals done by the | 319 | | // calls in this function. This can be refactored into a single recursive | 320 | | // traversal that invokes the various validators. | 321 | | | 322 | | // Log warnings or throw errors if deprecated fields or unknown fields are in use. | 323 | 1.16k | if (!validation_visitor.skipValidation()) { | 324 | 1.16k | checkForUnexpectedFields(message, validation_visitor, recurse_into_any); | 325 | 1.16k | } | 326 | | | 327 | | // Throw an exception if the config has an invalid Duration field. This is needed | 328 | | // because Envoy validates the duration in a strict way that is not supported by PGV. | 329 | 1.16k | validateDurationFields(message, recurse_into_any); | 330 | | | 331 | | // TODO(mattklein123): This will recurse the message twice, once above and once for PGV. When | 332 | | // we move to always recursing, satisfying the TODO below, we should merge into a single | 333 | | // recursion for performance reasons. | 334 | 1.16k | if (recurse_into_any) { | 335 | 0 | return recursivePgvCheck(message); | 336 | 0 | } | 337 | | | 338 | | // TODO(mattklein123): Now that PGV is capable of doing recursive message checks on abstract | 339 | | // types, we can remove bottom up validation from the entire codebase and only validate | 340 | | // at top level ingestion (bootstrap, discovery response). This is a large change and will be | 341 | | // done as a separate PR. This change will also allow removing templating from most/all of | 342 | | // related functions. | 343 | 1.16k | std::string err; | 344 | 1.16k | if (!Validate(message, &err)) { | 345 | 54 | ProtoExceptionUtil::throwProtoValidationException(err, message); | 346 | 54 | } | 347 | 1.16k | } |
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 | 317 | 125 | bool recurse_into_any = false) { | 318 | | // TODO(adisuissa): There are multiple recursive traversals done by the | 319 | | // calls in this function. This can be refactored into a single recursive | 320 | | // traversal that invokes the various validators. | 321 | | | 322 | | // Log warnings or throw errors if deprecated fields or unknown fields are in use. | 323 | 125 | if (!validation_visitor.skipValidation()) { | 324 | 125 | checkForUnexpectedFields(message, validation_visitor, recurse_into_any); | 325 | 125 | } | 326 | | | 327 | | // Throw an exception if the config has an invalid Duration field. This is needed | 328 | | // because Envoy validates the duration in a strict way that is not supported by PGV. | 329 | 125 | validateDurationFields(message, recurse_into_any); | 330 | | | 331 | | // TODO(mattklein123): This will recurse the message twice, once above and once for PGV. When | 332 | | // we move to always recursing, satisfying the TODO below, we should merge into a single | 333 | | // recursion for performance reasons. | 334 | 125 | if (recurse_into_any) { | 335 | 0 | return recursivePgvCheck(message); | 336 | 0 | } | 337 | | | 338 | | // TODO(mattklein123): Now that PGV is capable of doing recursive message checks on abstract | 339 | | // types, we can remove bottom up validation from the entire codebase and only validate | 340 | | // at top level ingestion (bootstrap, discovery response). This is a large change and will be | 341 | | // done as a separate PR. This change will also allow removing templating from most/all of | 342 | | // related functions. | 343 | 125 | std::string err; | 344 | 125 | if (!Validate(message, &err)) { | 345 | 124 | ProtoExceptionUtil::throwProtoValidationException(err, message); | 346 | 124 | } | 347 | 125 | } |
void Envoy::MessageUtil::validate<envoy::extensions::filters::http::rbac::RbacTestCase>(envoy::extensions::filters::http::rbac::RbacTestCase const&, Envoy::ProtobufMessage::ValidationVisitor&, bool) Line | Count | Source | 317 | 16.5k | bool recurse_into_any = false) { | 318 | | // TODO(adisuissa): There are multiple recursive traversals done by the | 319 | | // calls in this function. This can be refactored into a single recursive | 320 | | // traversal that invokes the various validators. | 321 | | | 322 | | // Log warnings or throw errors if deprecated fields or unknown fields are in use. | 323 | 16.5k | if (!validation_visitor.skipValidation()) { | 324 | 16.5k | checkForUnexpectedFields(message, validation_visitor, recurse_into_any); | 325 | 16.5k | } | 326 | | | 327 | | // Throw an exception if the config has an invalid Duration field. This is needed | 328 | | // because Envoy validates the duration in a strict way that is not supported by PGV. | 329 | 16.5k | validateDurationFields(message, recurse_into_any); | 330 | | | 331 | | // TODO(mattklein123): This will recurse the message twice, once above and once for PGV. When | 332 | | // we move to always recursing, satisfying the TODO below, we should merge into a single | 333 | | // recursion for performance reasons. | 334 | 16.5k | if (recurse_into_any) { | 335 | 0 | return recursivePgvCheck(message); | 336 | 0 | } | 337 | | | 338 | | // TODO(mattklein123): Now that PGV is capable of doing recursive message checks on abstract | 339 | | // types, we can remove bottom up validation from the entire codebase and only validate | 340 | | // at top level ingestion (bootstrap, discovery response). This is a large change and will be | 341 | | // done as a separate PR. This change will also allow removing templating from most/all of | 342 | | // related functions. | 343 | 16.5k | std::string err; | 344 | 16.5k | if (!Validate(message, &err)) { | 345 | 778 | ProtoExceptionUtil::throwProtoValidationException(err, message); | 346 | 778 | } | 347 | 16.5k | } |
void Envoy::MessageUtil::validate<test::common::router::RouteTestCase>(test::common::router::RouteTestCase const&, Envoy::ProtobufMessage::ValidationVisitor&, bool) Line | Count | Source | 317 | 10.4k | bool recurse_into_any = false) { | 318 | | // TODO(adisuissa): There are multiple recursive traversals done by the | 319 | | // calls in this function. This can be refactored into a single recursive | 320 | | // traversal that invokes the various validators. | 321 | | | 322 | | // Log warnings or throw errors if deprecated fields or unknown fields are in use. | 323 | 10.4k | if (!validation_visitor.skipValidation()) { | 324 | 10.4k | checkForUnexpectedFields(message, validation_visitor, recurse_into_any); | 325 | 10.4k | } | 326 | | | 327 | | // Throw an exception if the config has an invalid Duration field. This is needed | 328 | | // because Envoy validates the duration in a strict way that is not supported by PGV. | 329 | 10.4k | validateDurationFields(message, recurse_into_any); | 330 | | | 331 | | // TODO(mattklein123): This will recurse the message twice, once above and once for PGV. When | 332 | | // we move to always recursing, satisfying the TODO below, we should merge into a single | 333 | | // recursion for performance reasons. | 334 | 10.4k | if (recurse_into_any) { | 335 | 0 | return recursivePgvCheck(message); | 336 | 0 | } | 337 | | | 338 | | // TODO(mattklein123): Now that PGV is capable of doing recursive message checks on abstract | 339 | | // types, we can remove bottom up validation from the entire codebase and only validate | 340 | | // at top level ingestion (bootstrap, discovery response). This is a large change and will be | 341 | | // done as a separate PR. This change will also allow removing templating from most/all of | 342 | | // related functions. | 343 | 10.4k | std::string err; | 344 | 10.4k | if (!Validate(message, &err)) { | 345 | 144 | ProtoExceptionUtil::throwProtoValidationException(err, message); | 346 | 144 | } | 347 | 10.4k | } |
void Envoy::MessageUtil::validate<envoy::extensions::filters::http::ext_authz::ExtAuthzTestCaseGrpc>(envoy::extensions::filters::http::ext_authz::ExtAuthzTestCaseGrpc const&, Envoy::ProtobufMessage::ValidationVisitor&, bool) Line | Count | Source | 317 | 6.08k | bool recurse_into_any = false) { | 318 | | // TODO(adisuissa): There are multiple recursive traversals done by the | 319 | | // calls in this function. This can be refactored into a single recursive | 320 | | // traversal that invokes the various validators. | 321 | | | 322 | | // Log warnings or throw errors if deprecated fields or unknown fields are in use. | 323 | 6.08k | if (!validation_visitor.skipValidation()) { | 324 | 6.08k | checkForUnexpectedFields(message, validation_visitor, recurse_into_any); | 325 | 6.08k | } | 326 | | | 327 | | // Throw an exception if the config has an invalid Duration field. This is needed | 328 | | // because Envoy validates the duration in a strict way that is not supported by PGV. | 329 | 6.08k | validateDurationFields(message, recurse_into_any); | 330 | | | 331 | | // TODO(mattklein123): This will recurse the message twice, once above and once for PGV. When | 332 | | // we move to always recursing, satisfying the TODO below, we should merge into a single | 333 | | // recursion for performance reasons. | 334 | 6.08k | if (recurse_into_any) { | 335 | 0 | return recursivePgvCheck(message); | 336 | 0 | } | 337 | | | 338 | | // TODO(mattklein123): Now that PGV is capable of doing recursive message checks on abstract | 339 | | // types, we can remove bottom up validation from the entire codebase and only validate | 340 | | // at top level ingestion (bootstrap, discovery response). This is a large change and will be | 341 | | // done as a separate PR. This change will also allow removing templating from most/all of | 342 | | // related functions. | 343 | 6.08k | std::string err; | 344 | 6.08k | if (!Validate(message, &err)) { | 345 | 408 | ProtoExceptionUtil::throwProtoValidationException(err, message); | 346 | 408 | } | 347 | 6.08k | } |
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 | 317 | 815 | bool recurse_into_any = false) { | 318 | | // TODO(adisuissa): There are multiple recursive traversals done by the | 319 | | // calls in this function. This can be refactored into a single recursive | 320 | | // traversal that invokes the various validators. | 321 | | | 322 | | // Log warnings or throw errors if deprecated fields or unknown fields are in use. | 323 | 815 | if (!validation_visitor.skipValidation()) { | 324 | 815 | checkForUnexpectedFields(message, validation_visitor, recurse_into_any); | 325 | 815 | } | 326 | | | 327 | | // Throw an exception if the config has an invalid Duration field. This is needed | 328 | | // because Envoy validates the duration in a strict way that is not supported by PGV. | 329 | 815 | validateDurationFields(message, recurse_into_any); | 330 | | | 331 | | // TODO(mattklein123): This will recurse the message twice, once above and once for PGV. When | 332 | | // we move to always recursing, satisfying the TODO below, we should merge into a single | 333 | | // recursion for performance reasons. | 334 | 815 | if (recurse_into_any) { | 335 | 0 | return recursivePgvCheck(message); | 336 | 0 | } | 337 | | | 338 | | // TODO(mattklein123): Now that PGV is capable of doing recursive message checks on abstract | 339 | | // types, we can remove bottom up validation from the entire codebase and only validate | 340 | | // at top level ingestion (bootstrap, discovery response). This is a large change and will be | 341 | | // done as a separate PR. This change will also allow removing templating from most/all of | 342 | | // related functions. | 343 | 815 | std::string err; | 344 | 815 | if (!Validate(message, &err)) { | 345 | 0 | ProtoExceptionUtil::throwProtoValidationException(err, message); | 346 | 0 | } | 347 | 815 | } |
void Envoy::MessageUtil::validate<test::extensions::filters::http::FilterFuzzTestCase>(test::extensions::filters::http::FilterFuzzTestCase const&, Envoy::ProtobufMessage::ValidationVisitor&, bool) Line | Count | Source | 317 | 886 | bool recurse_into_any = false) { | 318 | | // TODO(adisuissa): There are multiple recursive traversals done by the | 319 | | // calls in this function. This can be refactored into a single recursive | 320 | | // traversal that invokes the various validators. | 321 | | | 322 | | // Log warnings or throw errors if deprecated fields or unknown fields are in use. | 323 | 886 | if (!validation_visitor.skipValidation()) { | 324 | 886 | checkForUnexpectedFields(message, validation_visitor, recurse_into_any); | 325 | 886 | } | 326 | | | 327 | | // Throw an exception if the config has an invalid Duration field. This is needed | 328 | | // because Envoy validates the duration in a strict way that is not supported by PGV. | 329 | 886 | validateDurationFields(message, recurse_into_any); | 330 | | | 331 | | // TODO(mattklein123): This will recurse the message twice, once above and once for PGV. When | 332 | | // we move to always recursing, satisfying the TODO below, we should merge into a single | 333 | | // recursion for performance reasons. | 334 | 886 | if (recurse_into_any) { | 335 | 0 | return recursivePgvCheck(message); | 336 | 0 | } | 337 | | | 338 | | // TODO(mattklein123): Now that PGV is capable of doing recursive message checks on abstract | 339 | | // types, we can remove bottom up validation from the entire codebase and only validate | 340 | | // at top level ingestion (bootstrap, discovery response). This is a large change and will be | 341 | | // done as a separate PR. This change will also allow removing templating from most/all of | 342 | | // related functions. | 343 | 886 | std::string err; | 344 | 886 | if (!Validate(message, &err)) { | 345 | 2 | ProtoExceptionUtil::throwProtoValidationException(err, message); | 346 | 2 | } | 347 | 886 | } |
void Envoy::MessageUtil::validate<test::extensions::filters::common::expr::EvaluatorTestCase>(test::extensions::filters::common::expr::EvaluatorTestCase const&, Envoy::ProtobufMessage::ValidationVisitor&, bool) Line | Count | Source | 317 | 21.8k | bool recurse_into_any = false) { | 318 | | // TODO(adisuissa): There are multiple recursive traversals done by the | 319 | | // calls in this function. This can be refactored into a single recursive | 320 | | // traversal that invokes the various validators. | 321 | | | 322 | | // Log warnings or throw errors if deprecated fields or unknown fields are in use. | 323 | 21.8k | if (!validation_visitor.skipValidation()) { | 324 | 21.8k | checkForUnexpectedFields(message, validation_visitor, recurse_into_any); | 325 | 21.8k | } | 326 | | | 327 | | // Throw an exception if the config has an invalid Duration field. This is needed | 328 | | // because Envoy validates the duration in a strict way that is not supported by PGV. | 329 | 21.8k | validateDurationFields(message, recurse_into_any); | 330 | | | 331 | | // TODO(mattklein123): This will recurse the message twice, once above and once for PGV. When | 332 | | // we move to always recursing, satisfying the TODO below, we should merge into a single | 333 | | // recursion for performance reasons. | 334 | 21.8k | if (recurse_into_any) { | 335 | 0 | return recursivePgvCheck(message); | 336 | 0 | } | 337 | | | 338 | | // TODO(mattklein123): Now that PGV is capable of doing recursive message checks on abstract | 339 | | // types, we can remove bottom up validation from the entire codebase and only validate | 340 | | // at top level ingestion (bootstrap, discovery response). This is a large change and will be | 341 | | // done as a separate PR. This change will also allow removing templating from most/all of | 342 | | // related functions. | 343 | 21.8k | std::string err; | 344 | 21.8k | if (!Validate(message, &err)) { | 345 | 246 | ProtoExceptionUtil::throwProtoValidationException(err, message); | 346 | 246 | } | 347 | 21.8k | } |
void Envoy::MessageUtil::validate<test::common::upstream::RandomLoadBalancerTestCase>(test::common::upstream::RandomLoadBalancerTestCase const&, Envoy::ProtobufMessage::ValidationVisitor&, bool) Line | Count | Source | 317 | 683 | bool recurse_into_any = false) { | 318 | | // TODO(adisuissa): There are multiple recursive traversals done by the | 319 | | // calls in this function. This can be refactored into a single recursive | 320 | | // traversal that invokes the various validators. | 321 | | | 322 | | // Log warnings or throw errors if deprecated fields or unknown fields are in use. | 323 | 683 | if (!validation_visitor.skipValidation()) { | 324 | 683 | checkForUnexpectedFields(message, validation_visitor, recurse_into_any); | 325 | 683 | } | 326 | | | 327 | | // Throw an exception if the config has an invalid Duration field. This is needed | 328 | | // because Envoy validates the duration in a strict way that is not supported by PGV. | 329 | 683 | validateDurationFields(message, recurse_into_any); | 330 | | | 331 | | // TODO(mattklein123): This will recurse the message twice, once above and once for PGV. When | 332 | | // we move to always recursing, satisfying the TODO below, we should merge into a single | 333 | | // recursion for performance reasons. | 334 | 683 | if (recurse_into_any) { | 335 | 0 | return recursivePgvCheck(message); | 336 | 0 | } | 337 | | | 338 | | // TODO(mattklein123): Now that PGV is capable of doing recursive message checks on abstract | 339 | | // types, we can remove bottom up validation from the entire codebase and only validate | 340 | | // at top level ingestion (bootstrap, discovery response). This is a large change and will be | 341 | | // done as a separate PR. This change will also allow removing templating from most/all of | 342 | | // related functions. | 343 | 683 | std::string err; | 344 | 683 | if (!Validate(message, &err)) { | 345 | 77 | ProtoExceptionUtil::throwProtoValidationException(err, message); | 346 | 77 | } | 347 | 683 | } |
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 | 317 | 850 | bool recurse_into_any = false) { | 318 | | // TODO(adisuissa): There are multiple recursive traversals done by the | 319 | | // calls in this function. This can be refactored into a single recursive | 320 | | // traversal that invokes the various validators. | 321 | | | 322 | | // Log warnings or throw errors if deprecated fields or unknown fields are in use. | 323 | 850 | if (!validation_visitor.skipValidation()) { | 324 | 850 | checkForUnexpectedFields(message, validation_visitor, recurse_into_any); | 325 | 850 | } | 326 | | | 327 | | // Throw an exception if the config has an invalid Duration field. This is needed | 328 | | // because Envoy validates the duration in a strict way that is not supported by PGV. | 329 | 850 | validateDurationFields(message, recurse_into_any); | 330 | | | 331 | | // TODO(mattklein123): This will recurse the message twice, once above and once for PGV. When | 332 | | // we move to always recursing, satisfying the TODO below, we should merge into a single | 333 | | // recursion for performance reasons. | 334 | 850 | if (recurse_into_any) { | 335 | 0 | return recursivePgvCheck(message); | 336 | 0 | } | 337 | | | 338 | | // TODO(mattklein123): Now that PGV is capable of doing recursive message checks on abstract | 339 | | // types, we can remove bottom up validation from the entire codebase and only validate | 340 | | // at top level ingestion (bootstrap, discovery response). This is a large change and will be | 341 | | // done as a separate PR. This change will also allow removing templating from most/all of | 342 | | // related functions. | 343 | 850 | std::string err; | 344 | 850 | if (!Validate(message, &err)) { | 345 | 81 | ProtoExceptionUtil::throwProtoValidationException(err, message); | 346 | 81 | } | 347 | 850 | } |
void Envoy::MessageUtil::validate<envoy::extensions::filters::http::ext_authz::ExtAuthzTestCaseHttp>(envoy::extensions::filters::http::ext_authz::ExtAuthzTestCaseHttp const&, Envoy::ProtobufMessage::ValidationVisitor&, bool) Line | Count | Source | 317 | 4.14k | bool recurse_into_any = false) { | 318 | | // TODO(adisuissa): There are multiple recursive traversals done by the | 319 | | // calls in this function. This can be refactored into a single recursive | 320 | | // traversal that invokes the various validators. | 321 | | | 322 | | // Log warnings or throw errors if deprecated fields or unknown fields are in use. | 323 | 4.14k | if (!validation_visitor.skipValidation()) { | 324 | 4.14k | checkForUnexpectedFields(message, validation_visitor, recurse_into_any); | 325 | 4.14k | } | 326 | | | 327 | | // Throw an exception if the config has an invalid Duration field. This is needed | 328 | | // because Envoy validates the duration in a strict way that is not supported by PGV. | 329 | 4.14k | validateDurationFields(message, recurse_into_any); | 330 | | | 331 | | // TODO(mattklein123): This will recurse the message twice, once above and once for PGV. When | 332 | | // we move to always recursing, satisfying the TODO below, we should merge into a single | 333 | | // recursion for performance reasons. | 334 | 4.14k | if (recurse_into_any) { | 335 | 0 | return recursivePgvCheck(message); | 336 | 0 | } | 337 | | | 338 | | // TODO(mattklein123): Now that PGV is capable of doing recursive message checks on abstract | 339 | | // types, we can remove bottom up validation from the entire codebase and only validate | 340 | | // at top level ingestion (bootstrap, discovery response). This is a large change and will be | 341 | | // done as a separate PR. This change will also allow removing templating from most/all of | 342 | | // related functions. | 343 | 4.14k | std::string err; | 344 | 4.14k | if (!Validate(message, &err)) { | 345 | 670 | ProtoExceptionUtil::throwProtoValidationException(err, message); | 346 | 670 | } | 347 | 4.14k | } |
void Envoy::MessageUtil::validate<test::common::upstream::RoundRobinLoadBalancerTestCase>(test::common::upstream::RoundRobinLoadBalancerTestCase const&, Envoy::ProtobufMessage::ValidationVisitor&, bool) Line | Count | Source | 317 | 1.19k | bool recurse_into_any = false) { | 318 | | // TODO(adisuissa): There are multiple recursive traversals done by the | 319 | | // calls in this function. This can be refactored into a single recursive | 320 | | // traversal that invokes the various validators. | 321 | | | 322 | | // Log warnings or throw errors if deprecated fields or unknown fields are in use. | 323 | 1.19k | if (!validation_visitor.skipValidation()) { | 324 | 1.19k | checkForUnexpectedFields(message, validation_visitor, recurse_into_any); | 325 | 1.19k | } | 326 | | | 327 | | // Throw an exception if the config has an invalid Duration field. This is needed | 328 | | // because Envoy validates the duration in a strict way that is not supported by PGV. | 329 | 1.19k | validateDurationFields(message, recurse_into_any); | 330 | | | 331 | | // TODO(mattklein123): This will recurse the message twice, once above and once for PGV. When | 332 | | // we move to always recursing, satisfying the TODO below, we should merge into a single | 333 | | // recursion for performance reasons. | 334 | 1.19k | if (recurse_into_any) { | 335 | 0 | return recursivePgvCheck(message); | 336 | 0 | } | 337 | | | 338 | | // TODO(mattklein123): Now that PGV is capable of doing recursive message checks on abstract | 339 | | // types, we can remove bottom up validation from the entire codebase and only validate | 340 | | // at top level ingestion (bootstrap, discovery response). This is a large change and will be | 341 | | // done as a separate PR. This change will also allow removing templating from most/all of | 342 | | // related functions. | 343 | 1.19k | std::string err; | 344 | 1.19k | if (!Validate(message, &err)) { | 345 | 90 | ProtoExceptionUtil::throwProtoValidationException(err, message); | 346 | 90 | } | 347 | 1.19k | } |
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<test::common::http::UtilityTestCase>(test::common::http::UtilityTestCase const&, Envoy::ProtobufMessage::ValidationVisitor&, bool) Line | Count | Source | 317 | 113 | bool recurse_into_any = false) { | 318 | | // TODO(adisuissa): There are multiple recursive traversals done by the | 319 | | // calls in this function. This can be refactored into a single recursive | 320 | | // traversal that invokes the various validators. | 321 | | | 322 | | // Log warnings or throw errors if deprecated fields or unknown fields are in use. | 323 | 113 | if (!validation_visitor.skipValidation()) { | 324 | 113 | checkForUnexpectedFields(message, validation_visitor, recurse_into_any); | 325 | 113 | } | 326 | | | 327 | | // Throw an exception if the config has an invalid Duration field. This is needed | 328 | | // because Envoy validates the duration in a strict way that is not supported by PGV. | 329 | 113 | validateDurationFields(message, recurse_into_any); | 330 | | | 331 | | // TODO(mattklein123): This will recurse the message twice, once above and once for PGV. When | 332 | | // we move to always recursing, satisfying the TODO below, we should merge into a single | 333 | | // recursion for performance reasons. | 334 | 113 | if (recurse_into_any) { | 335 | 0 | return recursivePgvCheck(message); | 336 | 0 | } | 337 | | | 338 | | // TODO(mattklein123): Now that PGV is capable of doing recursive message checks on abstract | 339 | | // types, we can remove bottom up validation from the entire codebase and only validate | 340 | | // at top level ingestion (bootstrap, discovery response). This is a large change and will be | 341 | | // done as a separate PR. This change will also allow removing templating from most/all of | 342 | | // related functions. | 343 | 113 | std::string err; | 344 | 113 | if (!Validate(message, &err)) { | 345 | 2 | ProtoExceptionUtil::throwProtoValidationException(err, message); | 346 | 2 | } | 347 | 113 | } |
void Envoy::MessageUtil::validate<test::common::upstream::LeastRequestLoadBalancerTestCase>(test::common::upstream::LeastRequestLoadBalancerTestCase const&, Envoy::ProtobufMessage::ValidationVisitor&, bool) Line | Count | Source | 317 | 1.25k | bool recurse_into_any = false) { | 318 | | // TODO(adisuissa): There are multiple recursive traversals done by the | 319 | | // calls in this function. This can be refactored into a single recursive | 320 | | // traversal that invokes the various validators. | 321 | | | 322 | | // Log warnings or throw errors if deprecated fields or unknown fields are in use. | 323 | 1.25k | if (!validation_visitor.skipValidation()) { | 324 | 1.25k | checkForUnexpectedFields(message, validation_visitor, recurse_into_any); | 325 | 1.25k | } | 326 | | | 327 | | // Throw an exception if the config has an invalid Duration field. This is needed | 328 | | // because Envoy validates the duration in a strict way that is not supported by PGV. | 329 | 1.25k | validateDurationFields(message, recurse_into_any); | 330 | | | 331 | | // TODO(mattklein123): This will recurse the message twice, once above and once for PGV. When | 332 | | // we move to always recursing, satisfying the TODO below, we should merge into a single | 333 | | // recursion for performance reasons. | 334 | 1.25k | if (recurse_into_any) { | 335 | 0 | return recursivePgvCheck(message); | 336 | 0 | } | 337 | | | 338 | | // TODO(mattklein123): Now that PGV is capable of doing recursive message checks on abstract | 339 | | // types, we can remove bottom up validation from the entire codebase and only validate | 340 | | // at top level ingestion (bootstrap, discovery response). This is a large change and will be | 341 | | // done as a separate PR. This change will also allow removing templating from most/all of | 342 | | // related functions. | 343 | 1.25k | std::string err; | 344 | 1.25k | if (!Validate(message, &err)) { | 345 | 45 | ProtoExceptionUtil::throwProtoValidationException(err, message); | 346 | 45 | } | 347 | 1.25k | } |
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 | 317 | 2.41k | bool recurse_into_any = false) { | 318 | | // TODO(adisuissa): There are multiple recursive traversals done by the | 319 | | // calls in this function. This can be refactored into a single recursive | 320 | | // traversal that invokes the various validators. | 321 | | | 322 | | // Log warnings or throw errors if deprecated fields or unknown fields are in use. | 323 | 2.41k | if (!validation_visitor.skipValidation()) { | 324 | 2.41k | checkForUnexpectedFields(message, validation_visitor, recurse_into_any); | 325 | 2.41k | } | 326 | | | 327 | | // Throw an exception if the config has an invalid Duration field. This is needed | 328 | | // because Envoy validates the duration in a strict way that is not supported by PGV. | 329 | 2.41k | validateDurationFields(message, recurse_into_any); | 330 | | | 331 | | // TODO(mattklein123): This will recurse the message twice, once above and once for PGV. When | 332 | | // we move to always recursing, satisfying the TODO below, we should merge into a single | 333 | | // recursion for performance reasons. | 334 | 2.41k | if (recurse_into_any) { | 335 | 0 | return recursivePgvCheck(message); | 336 | 0 | } | 337 | | | 338 | | // TODO(mattklein123): Now that PGV is capable of doing recursive message checks on abstract | 339 | | // types, we can remove bottom up validation from the entire codebase and only validate | 340 | | // at top level ingestion (bootstrap, discovery response). This is a large change and will be | 341 | | // done as a separate PR. This change will also allow removing templating from most/all of | 342 | | // related functions. | 343 | 2.41k | std::string err; | 344 | 2.41k | if (!Validate(message, &err)) { | 345 | 494 | ProtoExceptionUtil::throwProtoValidationException(err, message); | 346 | 494 | } | 347 | 2.41k | } |
|
348 | | |
349 | | #ifdef ENVOY_ENABLE_YAML |
350 | | template <class MessageType> |
351 | | static void loadFromYamlAndValidate(const std::string& yaml, MessageType& message, |
352 | 0 | ProtobufMessage::ValidationVisitor& validation_visitor) { |
353 | 0 | loadFromYaml(yaml, message, validation_visitor); |
354 | 0 | validate(message, validation_visitor); |
355 | 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&) |
356 | | #endif |
357 | | |
358 | | /** |
359 | | * Downcast and validate protoc-gen-validate constraints on a given protobuf. |
360 | | * Note the corresponding `.pb.validate.h` for the message has to be included in the source file |
361 | | * of caller. |
362 | | * @param message const Protobuf::Message& to downcast and validate. |
363 | | * @return const MessageType& the concrete message type downcasted to on success. |
364 | | * @throw EnvoyException if the message does not satisfy its type constraints. |
365 | | */ |
366 | | template <class MessageType> |
367 | | static const MessageType& |
368 | | downcastAndValidate(const Protobuf::Message& config, |
369 | 142k | ProtobufMessage::ValidationVisitor& validation_visitor) { |
370 | 142k | const auto& typed_config = dynamic_cast<MessageType>(config); |
371 | 142k | validate(typed_config, validation_visitor); |
372 | 142k | return typed_config; |
373 | 142k | } 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 | 369 | 6.30k | ProtobufMessage::ValidationVisitor& validation_visitor) { | 370 | 6.30k | const auto& typed_config = dynamic_cast<MessageType>(config); | 371 | 6.30k | validate(typed_config, validation_visitor); | 372 | 6.30k | return typed_config; | 373 | 6.30k | } |
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 | 369 | 1.54k | ProtobufMessage::ValidationVisitor& validation_visitor) { | 370 | 1.54k | const auto& typed_config = dynamic_cast<MessageType>(config); | 371 | 1.54k | validate(typed_config, validation_visitor); | 372 | 1.54k | return typed_config; | 373 | 1.54k | } |
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&) 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 | 369 | 806 | ProtobufMessage::ValidationVisitor& validation_visitor) { | 370 | 806 | const auto& typed_config = dynamic_cast<MessageType>(config); | 371 | 806 | validate(typed_config, validation_visitor); | 372 | 806 | return typed_config; | 373 | 806 | } |
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 | 369 | 2.40k | ProtobufMessage::ValidationVisitor& validation_visitor) { | 370 | 2.40k | const auto& typed_config = dynamic_cast<MessageType>(config); | 371 | 2.40k | validate(typed_config, validation_visitor); | 372 | 2.40k | return typed_config; | 373 | 2.40k | } |
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 | 369 | 9.09k | ProtobufMessage::ValidationVisitor& validation_visitor) { | 370 | 9.09k | const auto& typed_config = dynamic_cast<MessageType>(config); | 371 | 9.09k | validate(typed_config, validation_visitor); | 372 | 9.09k | return typed_config; | 373 | 9.09k | } |
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::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 | 369 | 21.1k | ProtobufMessage::ValidationVisitor& validation_visitor) { | 370 | 21.1k | const auto& typed_config = dynamic_cast<MessageType>(config); | 371 | 21.1k | validate(typed_config, validation_visitor); | 372 | 21.1k | return typed_config; | 373 | 21.1k | } |
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 | 369 | 6.12k | ProtobufMessage::ValidationVisitor& validation_visitor) { | 370 | 6.12k | const auto& typed_config = dynamic_cast<MessageType>(config); | 371 | 6.12k | validate(typed_config, validation_visitor); | 372 | 6.12k | return typed_config; | 373 | 6.12k | } |
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 | 369 | 4.74k | ProtobufMessage::ValidationVisitor& validation_visitor) { | 370 | 4.74k | const auto& typed_config = dynamic_cast<MessageType>(config); | 371 | 4.74k | validate(typed_config, validation_visitor); | 372 | 4.74k | return typed_config; | 373 | 4.74k | } |
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 | 369 | 953 | ProtobufMessage::ValidationVisitor& validation_visitor) { | 370 | 953 | const auto& typed_config = dynamic_cast<MessageType>(config); | 371 | 953 | validate(typed_config, validation_visitor); | 372 | 953 | return typed_config; | 373 | 953 | } |
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 | 369 | 1 | ProtobufMessage::ValidationVisitor& validation_visitor) { | 370 | 1 | const auto& typed_config = dynamic_cast<MessageType>(config); | 371 | 1 | validate(typed_config, validation_visitor); | 372 | 1 | return typed_config; | 373 | 1 | } |
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 | 369 | 64.9k | ProtobufMessage::ValidationVisitor& validation_visitor) { | 370 | 64.9k | const auto& typed_config = dynamic_cast<MessageType>(config); | 371 | 64.9k | validate(typed_config, validation_visitor); | 372 | 64.9k | return typed_config; | 373 | 64.9k | } |
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&) 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&) 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 | 369 | 1.61k | ProtobufMessage::ValidationVisitor& validation_visitor) { | 370 | 1.61k | const auto& typed_config = dynamic_cast<MessageType>(config); | 371 | 1.61k | validate(typed_config, validation_visitor); | 372 | 1.61k | return typed_config; | 373 | 1.61k | } |
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 | 369 | 1.08k | ProtobufMessage::ValidationVisitor& validation_visitor) { | 370 | 1.08k | const auto& typed_config = dynamic_cast<MessageType>(config); | 371 | 1.08k | validate(typed_config, validation_visitor); | 372 | 1.08k | return typed_config; | 373 | 1.08k | } |
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 | 369 | 6.26k | ProtobufMessage::ValidationVisitor& validation_visitor) { | 370 | 6.26k | const auto& typed_config = dynamic_cast<MessageType>(config); | 371 | 6.26k | validate(typed_config, validation_visitor); | 372 | 6.26k | return typed_config; | 373 | 6.26k | } |
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 | 369 | 4.10k | ProtobufMessage::ValidationVisitor& validation_visitor) { | 370 | 4.10k | const auto& typed_config = dynamic_cast<MessageType>(config); | 371 | 4.10k | validate(typed_config, validation_visitor); | 372 | 4.10k | return typed_config; | 373 | 4.10k | } |
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&) 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 | 369 | 3.32k | ProtobufMessage::ValidationVisitor& validation_visitor) { | 370 | 3.32k | const auto& typed_config = dynamic_cast<MessageType>(config); | 371 | 3.32k | validate(typed_config, validation_visitor); | 372 | 3.32k | return typed_config; | 373 | 3.32k | } |
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&) 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::quic::v3::QuicDownstreamTransport const& const& Envoy::MessageUtil::downcastAndValidate<envoy::extensions::transport_sockets::quic::v3::QuicDownstreamTransport 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 | 369 | 4.10k | ProtobufMessage::ValidationVisitor& validation_visitor) { | 370 | 4.10k | const auto& typed_config = dynamic_cast<MessageType>(config); | 371 | 4.10k | validate(typed_config, validation_visitor); | 372 | 4.10k | return typed_config; | 373 | 4.10k | } |
Unexecuted instantiation: envoy::extensions::access_loggers::fluentd::v3::FluentdAccessLogConfig const& const& Envoy::MessageUtil::downcastAndValidate<envoy::extensions::access_loggers::fluentd::v3::FluentdAccessLogConfig const&>(google::protobuf::Message const&, Envoy::ProtobufMessage::ValidationVisitor&) 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::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::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::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&) 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::input_matchers::metadata::v3::Metadata const& const& Envoy::MessageUtil::downcastAndValidate<envoy::extensions::matching::input_matchers::metadata::v3::Metadata 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::common_inputs::network::v3::DynamicMetadataInput const& const& Envoy::MessageUtil::downcastAndValidate<envoy::extensions::matching::common_inputs::network::v3::DynamicMetadataInput 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::string_matcher::lua::v3::Lua const& const& Envoy::MessageUtil::downcastAndValidate<envoy::extensions::string_matcher::lua::v3::Lua 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&) Unexecuted instantiation: 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&) 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&) Unexecuted instantiation: 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&) 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&) Unexecuted instantiation: 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&) 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 | 369 | 1 | ProtobufMessage::ValidationVisitor& validation_visitor) { | 370 | 1 | const auto& typed_config = dynamic_cast<MessageType>(config); | 371 | 1 | validate(typed_config, validation_visitor); | 372 | 1 | return typed_config; | 373 | 1 | } |
Unexecuted instantiation: envoy::extensions::filters::http::basic_auth::v3::BasicAuthPerRoute const& const& Envoy::MessageUtil::downcastAndValidate<envoy::extensions::filters::http::basic_auth::v3::BasicAuthPerRoute const&>(google::protobuf::Message const&, Envoy::ProtobufMessage::ValidationVisitor&) 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 | 369 | 1 | ProtobufMessage::ValidationVisitor& validation_visitor) { | 370 | 1 | const auto& typed_config = dynamic_cast<MessageType>(config); | 371 | 1 | validate(typed_config, validation_visitor); | 372 | 1 | return typed_config; | 373 | 1 | } |
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&) Unexecuted instantiation: 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&) Unexecuted instantiation: 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&) 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 | 369 | 1 | ProtobufMessage::ValidationVisitor& validation_visitor) { | 370 | 1 | const auto& typed_config = dynamic_cast<MessageType>(config); | 371 | 1 | validate(typed_config, validation_visitor); | 372 | 1 | return typed_config; | 373 | 1 | } |
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&) Unexecuted instantiation: 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&) 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 | 369 | 6 | ProtobufMessage::ValidationVisitor& validation_visitor) { | 370 | 6 | const auto& typed_config = dynamic_cast<MessageType>(config); | 371 | 6 | validate(typed_config, validation_visitor); | 372 | 6 | return typed_config; | 373 | 6 | } |
Unexecuted instantiation: envoy::extensions::filters::http::credential_injector::v3::CredentialInjector const& const& Envoy::MessageUtil::downcastAndValidate<envoy::extensions::filters::http::credential_injector::v3::CredentialInjector const&>(google::protobuf::Message const&, Envoy::ProtobufMessage::ValidationVisitor&) Unexecuted instantiation: 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&) 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 | 369 | 1 | ProtobufMessage::ValidationVisitor& validation_visitor) { | 370 | 1 | const auto& typed_config = dynamic_cast<MessageType>(config); | 371 | 1 | validate(typed_config, validation_visitor); | 372 | 1 | return typed_config; | 373 | 1 | } |
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&) Line | Count | Source | 369 | 1 | ProtobufMessage::ValidationVisitor& validation_visitor) { | 370 | 1 | const auto& typed_config = dynamic_cast<MessageType>(config); | 371 | 1 | validate(typed_config, validation_visitor); | 372 | 1 | return typed_config; | 373 | 1 | } |
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&) Unexecuted instantiation: 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&) 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 | 369 | 8 | ProtobufMessage::ValidationVisitor& validation_visitor) { | 370 | 8 | const auto& typed_config = dynamic_cast<MessageType>(config); | 371 | 8 | validate(typed_config, validation_visitor); | 372 | 8 | return typed_config; | 373 | 8 | } |
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 | 369 | 13 | ProtobufMessage::ValidationVisitor& validation_visitor) { | 370 | 13 | const auto& typed_config = dynamic_cast<MessageType>(config); | 371 | 13 | validate(typed_config, validation_visitor); | 372 | 13 | return typed_config; | 373 | 13 | } |
Unexecuted instantiation: 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&) Unexecuted instantiation: 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&) Unexecuted instantiation: 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&) Unexecuted instantiation: 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&) 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 | 369 | 2 | ProtobufMessage::ValidationVisitor& validation_visitor) { | 370 | 2 | const auto& typed_config = dynamic_cast<MessageType>(config); | 371 | 2 | validate(typed_config, validation_visitor); | 372 | 2 | return typed_config; | 373 | 2 | } |
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 | 369 | 63 | ProtobufMessage::ValidationVisitor& validation_visitor) { | 370 | 63 | const auto& typed_config = dynamic_cast<MessageType>(config); | 371 | 63 | validate(typed_config, validation_visitor); | 372 | 63 | return typed_config; | 373 | 63 | } |
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 | 369 | 20 | ProtobufMessage::ValidationVisitor& validation_visitor) { | 370 | 20 | const auto& typed_config = dynamic_cast<MessageType>(config); | 371 | 20 | validate(typed_config, validation_visitor); | 372 | 20 | return typed_config; | 373 | 20 | } |
Unexecuted instantiation: 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&) 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 | 369 | 10 | ProtobufMessage::ValidationVisitor& validation_visitor) { | 370 | 10 | const auto& typed_config = dynamic_cast<MessageType>(config); | 371 | 10 | validate(typed_config, validation_visitor); | 372 | 10 | return typed_config; | 373 | 10 | } |
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 | 369 | 1 | ProtobufMessage::ValidationVisitor& validation_visitor) { | 370 | 1 | const auto& typed_config = dynamic_cast<MessageType>(config); | 371 | 1 | validate(typed_config, validation_visitor); | 372 | 1 | return typed_config; | 373 | 1 | } |
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 | 369 | 6 | ProtobufMessage::ValidationVisitor& validation_visitor) { | 370 | 6 | const auto& typed_config = dynamic_cast<MessageType>(config); | 371 | 6 | validate(typed_config, validation_visitor); | 372 | 6 | return typed_config; | 373 | 6 | } |
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 | 369 | 1 | ProtobufMessage::ValidationVisitor& validation_visitor) { | 370 | 1 | const auto& typed_config = dynamic_cast<MessageType>(config); | 371 | 1 | validate(typed_config, validation_visitor); | 372 | 1 | return typed_config; | 373 | 1 | } |
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 | 369 | 151 | ProtobufMessage::ValidationVisitor& validation_visitor) { | 370 | 151 | const auto& typed_config = dynamic_cast<MessageType>(config); | 371 | 151 | validate(typed_config, validation_visitor); | 372 | 151 | return typed_config; | 373 | 151 | } |
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 | 369 | 4 | ProtobufMessage::ValidationVisitor& validation_visitor) { | 370 | 4 | const auto& typed_config = dynamic_cast<MessageType>(config); | 371 | 4 | validate(typed_config, validation_visitor); | 372 | 4 | return typed_config; | 373 | 4 | } |
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 | 369 | 1 | ProtobufMessage::ValidationVisitor& validation_visitor) { | 370 | 1 | const auto& typed_config = dynamic_cast<MessageType>(config); | 371 | 1 | validate(typed_config, validation_visitor); | 372 | 1 | return typed_config; | 373 | 1 | } |
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 | 369 | 26 | ProtobufMessage::ValidationVisitor& validation_visitor) { | 370 | 26 | const auto& typed_config = dynamic_cast<MessageType>(config); | 371 | 26 | validate(typed_config, validation_visitor); | 372 | 26 | return typed_config; | 373 | 26 | } |
Unexecuted instantiation: 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&) 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 | 369 | 2 | ProtobufMessage::ValidationVisitor& validation_visitor) { | 370 | 2 | const auto& typed_config = dynamic_cast<MessageType>(config); | 371 | 2 | validate(typed_config, validation_visitor); | 372 | 2 | return typed_config; | 373 | 2 | } |
Unexecuted instantiation: 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&) Unexecuted instantiation: envoy::extensions::filters::http::proto_message_extraction::v3::ProtoMessageExtractionConfig const& const& Envoy::MessageUtil::downcastAndValidate<envoy::extensions::filters::http::proto_message_extraction::v3::ProtoMessageExtractionConfig const&>(google::protobuf::Message const&, Envoy::ProtobufMessage::ValidationVisitor&) 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 | 369 | 3 | ProtobufMessage::ValidationVisitor& validation_visitor) { | 370 | 3 | const auto& typed_config = dynamic_cast<MessageType>(config); | 371 | 3 | validate(typed_config, validation_visitor); | 372 | 3 | return typed_config; | 373 | 3 | } |
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 | 369 | 428 | ProtobufMessage::ValidationVisitor& validation_visitor) { | 370 | 428 | const auto& typed_config = dynamic_cast<MessageType>(config); | 371 | 428 | validate(typed_config, validation_visitor); | 372 | 428 | return typed_config; | 373 | 428 | } |
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 | 369 | 6 | ProtobufMessage::ValidationVisitor& validation_visitor) { | 370 | 6 | const auto& typed_config = dynamic_cast<MessageType>(config); | 371 | 6 | validate(typed_config, validation_visitor); | 372 | 6 | return typed_config; | 373 | 6 | } |
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 | 369 | 82 | ProtobufMessage::ValidationVisitor& validation_visitor) { | 370 | 82 | const auto& typed_config = dynamic_cast<MessageType>(config); | 371 | 82 | validate(typed_config, validation_visitor); | 372 | 82 | return typed_config; | 373 | 82 | } |
envoy::extensions::filters::http::thrift_to_metadata::v3::ThriftToMetadata const& const& Envoy::MessageUtil::downcastAndValidate<envoy::extensions::filters::http::thrift_to_metadata::v3::ThriftToMetadata const&>(google::protobuf::Message const&, Envoy::ProtobufMessage::ValidationVisitor&) Line | Count | Source | 369 | 4 | ProtobufMessage::ValidationVisitor& validation_visitor) { | 370 | 4 | const auto& typed_config = dynamic_cast<MessageType>(config); | 371 | 4 | validate(typed_config, validation_visitor); | 372 | 4 | return typed_config; | 373 | 4 | } |
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 | 369 | 16 | ProtobufMessage::ValidationVisitor& validation_visitor) { | 370 | 16 | const auto& typed_config = dynamic_cast<MessageType>(config); | 371 | 16 | validate(typed_config, validation_visitor); | 372 | 16 | return typed_config; | 373 | 16 | } |
Unexecuted instantiation: 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&) 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&) Unexecuted instantiation: 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&) 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 | 369 | 6 | ProtobufMessage::ValidationVisitor& validation_visitor) { | 370 | 6 | const auto& typed_config = dynamic_cast<MessageType>(config); | 371 | 6 | validate(typed_config, validation_visitor); | 372 | 6 | return typed_config; | 373 | 6 | } |
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 | 369 | 60 | ProtobufMessage::ValidationVisitor& validation_visitor) { | 370 | 60 | const auto& typed_config = dynamic_cast<MessageType>(config); | 371 | 60 | validate(typed_config, validation_visitor); | 372 | 60 | return typed_config; | 373 | 60 | } |
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::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 | 369 | 8 | ProtobufMessage::ValidationVisitor& validation_visitor) { | 370 | 8 | const auto& typed_config = dynamic_cast<MessageType>(config); | 371 | 8 | validate(typed_config, validation_visitor); | 372 | 8 | return typed_config; | 373 | 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 | 369 | 3 | ProtobufMessage::ValidationVisitor& validation_visitor) { | 370 | 3 | const auto& typed_config = dynamic_cast<MessageType>(config); | 371 | 3 | validate(typed_config, validation_visitor); | 372 | 3 | return typed_config; | 373 | 3 | } |
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 | 369 | 1.89k | ProtobufMessage::ValidationVisitor& validation_visitor) { | 370 | 1.89k | const auto& typed_config = dynamic_cast<MessageType>(config); | 371 | 1.89k | validate(typed_config, validation_visitor); | 372 | 1.89k | return typed_config; | 373 | 1.89k | } |
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 | 369 | 4 | ProtobufMessage::ValidationVisitor& validation_visitor) { | 370 | 4 | const auto& typed_config = dynamic_cast<MessageType>(config); | 371 | 4 | validate(typed_config, validation_visitor); | 372 | 4 | return typed_config; | 373 | 4 | } |
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 | 369 | 647 | ProtobufMessage::ValidationVisitor& validation_visitor) { | 370 | 647 | const auto& typed_config = dynamic_cast<MessageType>(config); | 371 | 647 | validate(typed_config, validation_visitor); | 372 | 647 | return typed_config; | 373 | 647 | } |
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 | 369 | 831 | ProtobufMessage::ValidationVisitor& validation_visitor) { | 370 | 831 | const auto& typed_config = dynamic_cast<MessageType>(config); | 371 | 831 | validate(typed_config, validation_visitor); | 372 | 831 | return typed_config; | 373 | 831 | } |
Unexecuted instantiation: envoy::extensions::filters::network::generic_proxy::v3::GenericProxy const& const& Envoy::MessageUtil::downcastAndValidate<envoy::extensions::filters::network::generic_proxy::v3::GenericProxy const&>(google::protobuf::Message const&, Envoy::ProtobufMessage::ValidationVisitor&) Unexecuted instantiation: envoy::extensions::filters::network::generic_proxy::action::v3::RouteAction const& const& Envoy::MessageUtil::downcastAndValidate<envoy::extensions::filters::network::generic_proxy::action::v3::RouteAction const&>(google::protobuf::Message const&, Envoy::ProtobufMessage::ValidationVisitor&) Unexecuted instantiation: envoy::extensions::filters::network::generic_proxy::matcher::v3::PropertyMatchInput const& const& Envoy::MessageUtil::downcastAndValidate<envoy::extensions::filters::network::generic_proxy::matcher::v3::PropertyMatchInput const&>(google::protobuf::Message const&, Envoy::ProtobufMessage::ValidationVisitor&) Unexecuted instantiation: envoy::extensions::filters::network::generic_proxy::matcher::v3::RequestMatcher const& const& Envoy::MessageUtil::downcastAndValidate<envoy::extensions::filters::network::generic_proxy::matcher::v3::RequestMatcher const&>(google::protobuf::Message const&, Envoy::ProtobufMessage::ValidationVisitor&) 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::extensions::resource_monitors::cpu_utilization::v3::CpuUtilizationConfig const& const& Envoy::MessageUtil::downcastAndValidate<envoy::extensions::resource_monitors::cpu_utilization::v3::CpuUtilizationConfig 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::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::tracers::opentelemetry::resource_detectors::v3::DynatraceResourceDetectorConfig const& const& Envoy::MessageUtil::downcastAndValidate<envoy::extensions::tracers::opentelemetry::resource_detectors::v3::DynatraceResourceDetectorConfig const&>(google::protobuf::Message const&, Envoy::ProtobufMessage::ValidationVisitor&) Unexecuted instantiation: envoy::extensions::tracers::opentelemetry::resource_detectors::v3::StaticConfigResourceDetectorConfig const& const& Envoy::MessageUtil::downcastAndValidate<envoy::extensions::tracers::opentelemetry::resource_detectors::v3::StaticConfigResourceDetectorConfig const&>(google::protobuf::Message const&, Envoy::ProtobufMessage::ValidationVisitor&) Unexecuted instantiation: envoy::extensions::tracers::opentelemetry::samplers::v3::DynatraceSamplerConfig const& const& Envoy::MessageUtil::downcastAndValidate<envoy::extensions::tracers::opentelemetry::samplers::v3::DynatraceSamplerConfig 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::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::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::http::injected_credentials::generic::v3::Generic const& const& Envoy::MessageUtil::downcastAndValidate<envoy::extensions::http::injected_credentials::generic::v3::Generic const&>(google::protobuf::Message const&, Envoy::ProtobufMessage::ValidationVisitor&) Unexecuted instantiation: envoy::extensions::http::injected_credentials::oauth2::v3::OAuth2 const& const& Envoy::MessageUtil::downcastAndValidate<envoy::extensions::http::injected_credentials::oauth2::v3::OAuth2 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::extensions::quic::server_preferred_address::v3::DataSourceServerPreferredAddressConfig const& const& Envoy::MessageUtil::downcastAndValidate<envoy::extensions::quic::server_preferred_address::v3::DataSourceServerPreferredAddressConfig 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&) envoy::config::rbac::v3::Action const& const& Envoy::MessageUtil::downcastAndValidate<envoy::config::rbac::v3::Action const&>(google::protobuf::Message const&, Envoy::ProtobufMessage::ValidationVisitor&) Line | Count | Source | 369 | 1 | ProtobufMessage::ValidationVisitor& validation_visitor) { | 370 | 1 | const auto& typed_config = dynamic_cast<MessageType>(config); | 371 | 1 | validate(typed_config, validation_visitor); | 372 | 1 | return typed_config; | 373 | 1 | } |
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::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::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&) Unexecuted instantiation: envoy::extensions::filters::network::generic_proxy::router::v3::Router const& const& Envoy::MessageUtil::downcastAndValidate<envoy::extensions::filters::network::generic_proxy::router::v3::Router const&>(google::protobuf::Message const&, Envoy::ProtobufMessage::ValidationVisitor&) |
374 | | |
375 | | /** |
376 | | * Convert from a typed message into a google.protobuf.Any. This should be used |
377 | | * instead of the inbuilt PackTo, as PackTo is not available with lite protos. |
378 | | * |
379 | | * @param any_message destination google.protobuf.Any. |
380 | | * @param message source to pack from. |
381 | | * |
382 | | * @throw EnvoyException if the message does not unpack. |
383 | | */ |
384 | | static void packFrom(ProtobufWkt::Any& any_message, const Protobuf::Message& message); |
385 | | |
386 | | /** |
387 | | * Convert from google.protobuf.Any to a typed message. This should be used |
388 | | * instead of the inbuilt UnpackTo as it performs validation of results. |
389 | | * |
390 | | * @param any_message source google.protobuf.Any message. |
391 | | * @param message destination to unpack to. |
392 | | * |
393 | | * @throw EnvoyException if the message does not unpack. |
394 | | */ |
395 | | static void unpackToOrThrow(const ProtobufWkt::Any& any_message, Protobuf::Message& message); |
396 | | |
397 | | /** |
398 | | * Convert from google.protobuf.Any to a typed message. This should be used |
399 | | * instead of the inbuilt UnpackTo as it performs validation of results. |
400 | | * |
401 | | * @param any_message source google.protobuf.Any message. |
402 | | * @param message destination to unpack to. |
403 | | * |
404 | | * @return absl::Status |
405 | | */ |
406 | | static absl::Status unpackTo(const ProtobufWkt::Any& any_message, Protobuf::Message& message); |
407 | | |
408 | | /** |
409 | | * Convert from google.protobuf.Any to bytes as std::string |
410 | | * @param any source google.protobuf.Any message. |
411 | | * |
412 | | * @return std::string consists of bytes in the input message. |
413 | | */ |
414 | 28 | static std::string anyToBytes(const ProtobufWkt::Any& any) { |
415 | 28 | if (any.Is<ProtobufWkt::StringValue>()) { |
416 | 0 | ProtobufWkt::StringValue s; |
417 | 0 | MessageUtil::unpackToOrThrow(any, s); |
418 | 0 | return s.value(); |
419 | 0 | } |
420 | 28 | if (any.Is<ProtobufWkt::BytesValue>()) { |
421 | 0 | Protobuf::BytesValue b; |
422 | 0 | MessageUtil::unpackToOrThrow(any, b); |
423 | 0 | return b.value(); |
424 | 0 | } |
425 | 28 | return any.value(); |
426 | 28 | }; |
427 | | |
428 | | /** |
429 | | * Convert from google.protobuf.Any to a typed message. |
430 | | * @param message source google.protobuf.Any message. |
431 | | * |
432 | | * @return MessageType the typed message inside the Any. |
433 | | */ |
434 | | template <class MessageType> |
435 | 8.05k | static inline void anyConvert(const ProtobufWkt::Any& message, MessageType& typed_message) { |
436 | 8.05k | unpackToOrThrow(message, typed_message); |
437 | 8.05k | }; void Envoy::MessageUtil::anyConvert<envoy::config::cluster::v3::Cluster>(google::protobuf::Any const&, envoy::config::cluster::v3::Cluster&) Line | Count | Source | 435 | 14 | static inline void anyConvert(const ProtobufWkt::Any& message, MessageType& typed_message) { | 436 | 14 | unpackToOrThrow(message, typed_message); | 437 | 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::service::runtime::v3::Runtime>(google::protobuf::Any const&, envoy::service::runtime::v3::Runtime&) 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 | 435 | 80 | static inline void anyConvert(const ProtobufWkt::Any& message, MessageType& typed_message) { | 436 | 80 | unpackToOrThrow(message, typed_message); | 437 | 80 | }; |
Unexecuted instantiation: void Envoy::MessageUtil::anyConvert<envoy::config::route::v3::VirtualHost>(google::protobuf::Any const&, envoy::config::route::v3::VirtualHost&) void Envoy::MessageUtil::anyConvert<envoy::config::endpoint::v3::ClusterLoadAssignment>(google::protobuf::Any const&, envoy::config::endpoint::v3::ClusterLoadAssignment&) Line | Count | Source | 435 | 14 | static inline void anyConvert(const ProtobufWkt::Any& message, MessageType& typed_message) { | 436 | 14 | unpackToOrThrow(message, typed_message); | 437 | 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&) void Envoy::MessageUtil::anyConvert<envoy::config::listener::v3::Listener>(google::protobuf::Any const&, envoy::config::listener::v3::Listener&) Line | Count | Source | 435 | 2.13k | static inline void anyConvert(const ProtobufWkt::Any& message, MessageType& typed_message) { | 436 | 2.13k | unpackToOrThrow(message, typed_message); | 437 | 2.13k | }; |
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 | 435 | 5.03k | static inline void anyConvert(const ProtobufWkt::Any& message, MessageType& typed_message) { | 436 | 5.03k | unpackToOrThrow(message, typed_message); | 437 | 5.03k | }; |
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::extensions::upstreams::http::v3::HttpProtocolOptions>(google::protobuf::Any const&, envoy::extensions::upstreams::http::v3::HttpProtocolOptions&) Line | Count | Source | 435 | 780 | static inline void anyConvert(const ProtobufWkt::Any& message, MessageType& typed_message) { | 436 | 780 | unpackToOrThrow(message, typed_message); | 437 | 780 | }; |
Unexecuted instantiation: void Envoy::MessageUtil::anyConvert<envoy::extensions::filters::udp::udp_proxy::v3::UdpProxyConfig>(google::protobuf::Any const&, envoy::extensions::filters::udp::udp_proxy::v3::UdpProxyConfig&) 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::filters::network::generic_proxy::v3::RouteConfiguration>(google::protobuf::Any const&, envoy::extensions::filters::network::generic_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&) |
438 | | |
439 | | template <class MessageType> |
440 | 5.80k | static inline MessageType anyConvert(const ProtobufWkt::Any& message) { |
441 | 5.80k | MessageType typed_message; |
442 | 5.80k | anyConvert(message, typed_message); |
443 | 5.80k | return typed_message; |
444 | 5.80k | }; envoy::extensions::upstreams::http::v3::HttpProtocolOptions Envoy::MessageUtil::anyConvert<envoy::extensions::upstreams::http::v3::HttpProtocolOptions>(google::protobuf::Any const&) Line | Count | Source | 440 | 780 | static inline MessageType anyConvert(const ProtobufWkt::Any& message) { | 441 | 780 | MessageType typed_message; | 442 | 780 | anyConvert(message, typed_message); | 443 | 780 | return typed_message; | 444 | 780 | }; |
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 | 440 | 5.02k | static inline MessageType anyConvert(const ProtobufWkt::Any& message) { | 441 | 5.02k | MessageType typed_message; | 442 | 5.02k | anyConvert(message, typed_message); | 443 | 5.02k | return typed_message; | 444 | 5.02k | }; |
Unexecuted instantiation: envoy::extensions::filters::udp::udp_proxy::v3::UdpProxyConfig Envoy::MessageUtil::anyConvert<envoy::extensions::filters::udp::udp_proxy::v3::UdpProxyConfig>(google::protobuf::Any const&) 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&) |
445 | | |
446 | | /** |
447 | | * Convert and validate from google.protobuf.Any to a typed message. |
448 | | * @param message source google.protobuf.Any message. |
449 | | * |
450 | | * @return MessageType the typed message inside the Any. |
451 | | * @throw EnvoyException if the message does not satisfy its type constraints. |
452 | | */ |
453 | | template <class MessageType> |
454 | | static inline void anyConvertAndValidate(const ProtobufWkt::Any& message, |
455 | | MessageType& typed_message, |
456 | 2.24k | ProtobufMessage::ValidationVisitor& validation_visitor) { |
457 | 2.24k | anyConvert<MessageType>(message, typed_message); |
458 | 2.24k | validate(typed_message, validation_visitor); |
459 | 2.24k | }; void Envoy::MessageUtil::anyConvertAndValidate<envoy::config::cluster::v3::Cluster>(google::protobuf::Any const&, envoy::config::cluster::v3::Cluster&, Envoy::ProtobufMessage::ValidationVisitor&) Line | Count | Source | 456 | 14 | ProtobufMessage::ValidationVisitor& validation_visitor) { | 457 | 14 | anyConvert<MessageType>(message, typed_message); | 458 | 14 | validate(typed_message, validation_visitor); | 459 | 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::service::runtime::v3::Runtime>(google::protobuf::Any const&, envoy::service::runtime::v3::Runtime&, 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 | 456 | 80 | ProtobufMessage::ValidationVisitor& validation_visitor) { | 457 | 80 | anyConvert<MessageType>(message, typed_message); | 458 | 80 | validate(typed_message, validation_visitor); | 459 | 80 | }; |
Unexecuted instantiation: void Envoy::MessageUtil::anyConvertAndValidate<envoy::config::route::v3::VirtualHost>(google::protobuf::Any const&, envoy::config::route::v3::VirtualHost&, 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 | 456 | 14 | ProtobufMessage::ValidationVisitor& validation_visitor) { | 457 | 14 | anyConvert<MessageType>(message, typed_message); | 458 | 14 | validate(typed_message, validation_visitor); | 459 | 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&) void Envoy::MessageUtil::anyConvertAndValidate<envoy::config::listener::v3::Listener>(google::protobuf::Any const&, envoy::config::listener::v3::Listener&, Envoy::ProtobufMessage::ValidationVisitor&) Line | Count | Source | 456 | 2.13k | ProtobufMessage::ValidationVisitor& validation_visitor) { | 457 | 2.13k | anyConvert<MessageType>(message, typed_message); | 458 | 2.13k | validate(typed_message, validation_visitor); | 459 | 2.13k | }; |
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 | 456 | 11 | ProtobufMessage::ValidationVisitor& validation_visitor) { | 457 | 11 | anyConvert<MessageType>(message, typed_message); | 458 | 11 | validate(typed_message, validation_visitor); | 459 | 11 | }; |
Unexecuted instantiation: void Envoy::MessageUtil::anyConvertAndValidate<envoy::config::overload::v3::ScaleTimersOverloadActionConfig>(google::protobuf::Any const&, envoy::config::overload::v3::ScaleTimersOverloadActionConfig&, Envoy::ProtobufMessage::ValidationVisitor&) 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::filters::network::generic_proxy::v3::RouteConfiguration>(google::protobuf::Any const&, envoy::extensions::filters::network::generic_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&) |
460 | | |
461 | | template <class MessageType> |
462 | | static inline MessageType |
463 | | anyConvertAndValidate(const ProtobufWkt::Any& message, |
464 | 11 | ProtobufMessage::ValidationVisitor& validation_visitor) { |
465 | 11 | MessageType typed_message; |
466 | 11 | anyConvertAndValidate<MessageType>(message, typed_message, validation_visitor); |
467 | 11 | return typed_message; |
468 | 11 | }; 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 | 464 | 11 | ProtobufMessage::ValidationVisitor& validation_visitor) { | 465 | 11 | MessageType typed_message; | 466 | 11 | anyConvertAndValidate<MessageType>(message, typed_message, validation_visitor); | 467 | 11 | return typed_message; | 468 | 11 | }; |
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::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&) |
469 | | |
470 | | /** |
471 | | * Obtain a string field from a protobuf message dynamically. |
472 | | * |
473 | | * @param message message to extract from. |
474 | | * @param field_name field name. |
475 | | * |
476 | | * @return std::string with field value. |
477 | | */ |
478 | | static inline std::string getStringField(const Protobuf::Message& message, |
479 | 2.50k | const std::string& field_name) { |
480 | 2.50k | Protobuf::ReflectableMessage reflectable_message = createReflectableMessage(message); |
481 | 2.50k | const Protobuf::Descriptor* descriptor = reflectable_message->GetDescriptor(); |
482 | 2.50k | const Protobuf::FieldDescriptor* name_field = descriptor->FindFieldByName(field_name); |
483 | 2.50k | const Protobuf::Reflection* reflection = reflectable_message->GetReflection(); |
484 | 2.50k | return reflection->GetString(*reflectable_message, name_field); |
485 | 0 | return name_field->name(); |
486 | 2.50k | } |
487 | | |
488 | | #ifdef ENVOY_ENABLE_YAML |
489 | | /** |
490 | | * Convert between two protobufs via a JSON round-trip. This is used to translate arbitrary |
491 | | * messages to/from google.protobuf.Struct. |
492 | | * TODO(htuch): Avoid round-tripping via JSON strings by doing whatever |
493 | | * Protobuf::util::MessageToJsonString does but generating a google.protobuf.Struct instead. |
494 | | * @param source message. |
495 | | * @param dest message. |
496 | | */ |
497 | | static void jsonConvert(const Protobuf::Message& source, Protobuf::Message& dest); |
498 | | static void jsonConvert(const Protobuf::Message& source, ProtobufWkt::Struct& dest); |
499 | | static void jsonConvert(const ProtobufWkt::Struct& source, |
500 | | ProtobufMessage::ValidationVisitor& validation_visitor, |
501 | | Protobuf::Message& dest); |
502 | | // Convert a message to a ProtobufWkt::Value, return false upon failure. |
503 | | static bool jsonConvertValue(const Protobuf::Message& source, ProtobufWkt::Value& dest); |
504 | | |
505 | | /** |
506 | | * Extract YAML as string from a google.protobuf.Message. |
507 | | * @param message message of type type.googleapis.com/google.protobuf.Message. |
508 | | * @param block_print whether the returned JSON should be in block style rather than flow style. |
509 | | * @param always_print_primitive_fields whether to include primitive fields set to their default |
510 | | * values, e.g. an int32 set to 0 or a bool set to false. |
511 | | * @return std::string of formatted YAML object. |
512 | | */ |
513 | | static std::string getYamlStringFromMessage(const Protobuf::Message& message, |
514 | | const bool block_print = true, |
515 | | const bool always_print_primitive_fields = false); |
516 | | |
517 | | /** |
518 | | * Extract JSON as string from a google.protobuf.Message. Returns an error if the message cannot |
519 | | * be represented as JSON, which can occur if it contains an Any proto with an unrecognized type |
520 | | * URL or invalid data, or if memory cannot be allocated. |
521 | | * @param message message of type type.googleapis.com/google.protobuf.Message. |
522 | | * @param pretty_print whether the returned JSON should be formatted. |
523 | | * @param always_print_primitive_fields whether to include primitive fields set to their default |
524 | | * values, e.g. an int32 set to 0 or a bool set to false. |
525 | | * @return ProtobufUtil::StatusOr<std::string> of formatted JSON object, or an error status if |
526 | | * conversion fails. |
527 | | */ |
528 | | static absl::StatusOr<std::string> |
529 | | getJsonStringFromMessage(const Protobuf::Message& message, bool pretty_print = false, |
530 | | bool always_print_primitive_fields = false); |
531 | | |
532 | | /** |
533 | | * Extract JSON as string from a google.protobuf.Message, returning some error string if the |
534 | | * conversion to JSON fails. |
535 | | * @param message message of type type.googleapis.com/google.protobuf.Message. |
536 | | * @param pretty_print whether the returned JSON should be formatted. |
537 | | * @param always_print_primitive_fields whether to include primitive fields set to their default |
538 | | * values, e.g. an int32 set to 0 or a bool set to false. |
539 | | * @return std::string of formatted JSON object, or an error message if conversion fails. |
540 | | */ |
541 | | static std::string getJsonStringFromMessageOrError(const Protobuf::Message& message, |
542 | | bool pretty_print = false, |
543 | | bool always_print_primitive_fields = false); |
544 | | #endif |
545 | | |
546 | | static std::string convertToStringForLogs(const Protobuf::Message& message, |
547 | | bool pretty_print = false, |
548 | | bool always_print_primitive_fields = false); |
549 | | |
550 | | /** |
551 | | * Utility method to create a Struct containing the passed in key/value strings. |
552 | | * |
553 | | * @param key the key to use to set the value |
554 | | * @param value the string value to associate with the key |
555 | | */ |
556 | | static ProtobufWkt::Struct keyValueStruct(const std::string& key, const std::string& value); |
557 | | |
558 | | /** |
559 | | * Utility method to create a Struct containing the passed in key/value map. |
560 | | * |
561 | | * @param fields the key/value pairs to initialize the Struct proto |
562 | | */ |
563 | | static ProtobufWkt::Struct keyValueStruct(const std::map<std::string, std::string>& fields); |
564 | | |
565 | | /** |
566 | | * Utility method to print a human readable string of the code passed in. |
567 | | * |
568 | | * @param code the protobuf error code |
569 | | */ |
570 | | static std::string codeEnumToString(absl::StatusCode code); |
571 | | |
572 | | /** |
573 | | * Modifies a message such that all sensitive data (that is, fields annotated as |
574 | | * `udpa.annotations.sensitive`) is redacted for display. String-typed fields annotated as |
575 | | * `sensitive` will be replaced with the string "[redacted]", bytes-typed fields will be replaced |
576 | | * with the bytes `5B72656461637465645D` (the ASCII / UTF-8 encoding of the string "[redacted]"), |
577 | | * primitive-typed fields (including enums) will be cleared, and message-typed fields will be |
578 | | * traversed recursively to redact their contents. |
579 | | * |
580 | | * LIMITATION: This works properly for strongly-typed messages, as well as for messages packed in |
581 | | * a `ProtobufWkt::Any` with a `type_url` corresponding to a proto that was compiled into the |
582 | | * Envoy binary. However it does not work for messages encoded as `ProtobufWkt::Struct`, since |
583 | | * structs are missing the "sensitive" annotations that this function expects. Similarly, it fails |
584 | | * for messages encoded as `ProtobufWkt::Any` with a `type_url` that isn't registered with the |
585 | | * binary. If you're working with struct-typed messages, including those that might be hiding |
586 | | * within strongly-typed messages, please reify them to strongly-typed messages using |
587 | | * `MessageUtil::jsonConvert()` before calling `MessageUtil::redact()`. |
588 | | * |
589 | | * @param message message to redact. |
590 | | */ |
591 | | static void redact(Protobuf::Message& message); |
592 | | |
593 | | /** |
594 | | * Reinterpret a Protobuf message as another Protobuf message by converting to wire format and |
595 | | * back. This only works for messages that can be effectively duck typed this way, e.g. with a |
596 | | * subtype relationship modulo field name. |
597 | | * |
598 | | * @param src source message. |
599 | | * @param dst destination message. |
600 | | * @throw EnvoyException if a conversion error occurs. |
601 | | */ |
602 | | static void wireCast(const Protobuf::Message& src, Protobuf::Message& dst); |
603 | | |
604 | | /** |
605 | | * Sanitizes a string to contain only valid UTF-8. Invalid UTF-8 characters will be replaced. If |
606 | | * the input string is valid UTF-8, it will be returned unmodified. |
607 | | */ |
608 | | static std::string sanitizeUtf8String(absl::string_view str); |
609 | | |
610 | | /** |
611 | | * Return text proto representation of the `message`. |
612 | | * @param message proto to print. |
613 | | * @return text representation of the proto `message`. |
614 | | */ |
615 | | static std::string toTextProto(const Protobuf::Message& message); |
616 | | }; |
617 | | |
618 | | class ValueUtil { |
619 | | public: |
620 | 80.2k | static std::size_t hash(const ProtobufWkt::Value& value) { return MessageUtil::hash(value); } |
621 | | |
622 | | #ifdef ENVOY_ENABLE_YAML |
623 | | /** |
624 | | * Load YAML string into ProtobufWkt::Value. |
625 | | */ |
626 | | static ProtobufWkt::Value loadFromYaml(const std::string& yaml); |
627 | | #endif |
628 | | |
629 | | /** |
630 | | * Compare two ProtobufWkt::Values for equality. |
631 | | * @param v1 message of type type.googleapis.com/google.protobuf.Value |
632 | | * @param v2 message of type type.googleapis.com/google.protobuf.Value |
633 | | * @return true if v1 and v2 are identical |
634 | | */ |
635 | | static bool equal(const ProtobufWkt::Value& v1, const ProtobufWkt::Value& v2); |
636 | | |
637 | | /** |
638 | | * @return wrapped ProtobufWkt::NULL_VALUE. |
639 | | */ |
640 | | static const ProtobufWkt::Value& nullValue(); |
641 | | |
642 | | /** |
643 | | * Wrap std::string into ProtobufWkt::Value string value. |
644 | | * @param str string to be wrapped. |
645 | | * @return wrapped string. |
646 | | */ |
647 | | static ProtobufWkt::Value stringValue(const std::string& str); |
648 | | |
649 | | /** |
650 | | * Wrap optional std::string into ProtobufWkt::Value string value. |
651 | | * If the argument contains a null optional, return ProtobufWkt::NULL_VALUE. |
652 | | * @param str string to be wrapped. |
653 | | * @return wrapped string. |
654 | | */ |
655 | | static ProtobufWkt::Value optionalStringValue(const absl::optional<std::string>& str); |
656 | | |
657 | | /** |
658 | | * Wrap boolean into ProtobufWkt::Value boolean value. |
659 | | * @param str boolean to be wrapped. |
660 | | * @return wrapped boolean. |
661 | | */ |
662 | | static ProtobufWkt::Value boolValue(bool b); |
663 | | |
664 | | /** |
665 | | * Wrap ProtobufWkt::Struct into ProtobufWkt::Value struct value. |
666 | | * @param obj struct to be wrapped. |
667 | | * @return wrapped struct. |
668 | | */ |
669 | | static ProtobufWkt::Value structValue(const ProtobufWkt::Struct& obj); |
670 | | |
671 | | /** |
672 | | * Wrap number into ProtobufWkt::Value double value. |
673 | | * @param num number to be wrapped. |
674 | | * @return wrapped number. |
675 | | */ |
676 | 0 | template <typename T> static ProtobufWkt::Value numberValue(const T num) { |
677 | 0 | ProtobufWkt::Value val; |
678 | 0 | val.set_number_value(static_cast<double>(num)); |
679 | 0 | return val; |
680 | 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) |
681 | | |
682 | | /** |
683 | | * Wrap a collection of ProtobufWkt::Values into ProtobufWkt::Value list value. |
684 | | * @param values collection of ProtobufWkt::Values to be wrapped. |
685 | | * @return wrapped list value. |
686 | | */ |
687 | | static ProtobufWkt::Value listValue(const std::vector<ProtobufWkt::Value>& values); |
688 | | }; |
689 | | |
690 | | /** |
691 | | * HashedValue is a wrapper around ProtobufWkt::Value that computes |
692 | | * and stores a hash code for the Value at construction. |
693 | | */ |
694 | | class HashedValue { |
695 | | public: |
696 | 80.2k | HashedValue(const ProtobufWkt::Value& value) : value_(value), hash_(ValueUtil::hash(value)){}; |
697 | 80.2k | HashedValue(const HashedValue& v) = default; |
698 | | |
699 | 0 | const ProtobufWkt::Value& value() const { return value_; } |
700 | 0 | std::size_t hash() const { return hash_; } |
701 | | |
702 | 0 | bool operator==(const HashedValue& rhs) const { |
703 | 0 | return hash_ == rhs.hash_ && ValueUtil::equal(value_, rhs.value_); |
704 | 0 | } |
705 | | |
706 | 0 | bool operator!=(const HashedValue& rhs) const { return !(*this == rhs); } |
707 | | |
708 | | private: |
709 | | const ProtobufWkt::Value value_; |
710 | | const std::size_t hash_; |
711 | | }; |
712 | | |
713 | | class DurationUtil { |
714 | | public: |
715 | | /** |
716 | | * Same as DurationUtil::durationToMilliseconds but with extra validation logic. |
717 | | * Same as Protobuf::util::TimeUtil::DurationToSeconds but with extra validation logic. |
718 | | * Specifically, we ensure that the duration is positive. |
719 | | * @param duration protobuf. |
720 | | * @return duration in milliseconds. |
721 | | * @throw EnvoyException when duration is out-of-range. |
722 | | */ |
723 | | static uint64_t durationToMilliseconds(const ProtobufWkt::Duration& duration); |
724 | | |
725 | | /** |
726 | | * Same as DurationUtil::durationToMilliseconds but does not throw an exception. |
727 | | * @param duration protobuf. |
728 | | * @return duration in milliseconds or an error status. |
729 | | */ |
730 | | static absl::StatusOr<uint64_t> |
731 | | durationToMillisecondsNoThrow(const ProtobufWkt::Duration& duration); |
732 | | |
733 | | /** |
734 | | * Same as Protobuf::util::TimeUtil::DurationToSeconds but with extra validation logic. |
735 | | * Specifically, we ensure that the duration is positive. |
736 | | * @param duration protobuf. |
737 | | * @return duration in seconds. |
738 | | * @throw EnvoyException when duration is out-of-range. |
739 | | */ |
740 | | static uint64_t durationToSeconds(const ProtobufWkt::Duration& duration); |
741 | | }; |
742 | | |
743 | | class TimestampUtil { |
744 | | public: |
745 | | /** |
746 | | * Writes a time_point<system_clock> (SystemTime) to a protobuf Timestamp, by way of time_t. |
747 | | * @param system_clock_time the time to write |
748 | | * @param timestamp a pointer to the mutable protobuf member to be written into. |
749 | | */ |
750 | | static void systemClockToTimestamp(const SystemTime system_clock_time, |
751 | | ProtobufWkt::Timestamp& timestamp); |
752 | | }; |
753 | | |
754 | | class StructUtil { |
755 | | public: |
756 | | /** |
757 | | * Recursively updates in-place a protobuf structure with keys from another |
758 | | * object. |
759 | | * |
760 | | * The merging strategy is the following. If a key from \p other does not |
761 | | * exists, it's just copied into \p obj. If the key exists but has a |
762 | | * different type, it is replaced by the new value. Otherwise: |
763 | | * - for scalar values (null, string, number, boolean) are replaced with the new value |
764 | | * - for lists: new values are added to the current list |
765 | | * - for structures: recursively apply this scheme |
766 | | * |
767 | | * @param obj the object to update in-place |
768 | | * @param with the object to update \p obj with |
769 | | */ |
770 | | static void update(ProtobufWkt::Struct& obj, const ProtobufWkt::Struct& with); |
771 | | }; |
772 | | |
773 | | } // namespace Envoy |
774 | | |
775 | | namespace std { |
776 | | // Inject an implementation of std::hash for Envoy::HashedValue into the std namespace. |
777 | | template <> struct hash<Envoy::HashedValue> { |
778 | 0 | std::size_t operator()(Envoy::HashedValue const& v) const { return v.hash(); } |
779 | | }; |
780 | | |
781 | | } // namespace std |