1
#include "source/common/protobuf/utility.h"
2

            
3
#if defined(ENVOY_ENABLE_FULL_PROTOS)
4

            
5
namespace Envoy {
6
20024996
Protobuf::ReflectableMessage createReflectableMessage(const Protobuf::Message& message) {
7
20024996
  return const_cast<Protobuf::ReflectableMessage>(&message);
8
20024996
}
9
} // namespace Envoy
10

            
11
#else
12

            
13
#include "envoy/admin/v3/certs_descriptor.pb.h"
14
#include "envoy/admin/v3/clusters_descriptor.pb.h"
15
#include "envoy/admin/v3/config_dump_descriptor.pb.h"
16
#include "envoy/admin/v3/config_dump_shared_descriptor.pb.h"
17
#include "envoy/admin/v3/init_dump_descriptor.pb.h"
18
#include "envoy/admin/v3/listeners_descriptor.pb.h"
19
#include "envoy/admin/v3/memory_descriptor.pb.h"
20
#include "envoy/admin/v3/metrics_descriptor.pb.h"
21
#include "envoy/admin/v3/mutex_stats_descriptor.pb.h"
22
#include "envoy/admin/v3/server_info_descriptor.pb.h"
23
#include "envoy/admin/v3/tap_descriptor.pb.h"
24
#include "envoy/annotations/deprecation_descriptor.pb.h"
25
#include "envoy/annotations/resource_descriptor.pb.h"
26
#include "envoy/config/accesslog/v3/accesslog_descriptor.pb.h"
27
#include "envoy/config/bootstrap/v3/bootstrap_descriptor.pb.h"
28
#include "envoy/config/cluster/v3/circuit_breaker_descriptor.pb.h"
29
#include "envoy/config/cluster/v3/cluster_descriptor.pb.h"
30
#include "envoy/config/cluster/v3/filter_descriptor.pb.h"
31
#include "envoy/config/cluster/v3/outlier_detection_descriptor.pb.h"
32
#include "envoy/config/common/key_value/v3/config_descriptor.pb.h"
33
#include "envoy/config/common/matcher/v3/matcher_descriptor.pb.h"
34
#include "envoy/config/core/v3/address_descriptor.pb.h"
35
#include "envoy/config/core/v3/backoff_descriptor.pb.h"
36
#include "envoy/config/core/v3/base_descriptor.pb.h"
37
#include "envoy/config/core/v3/config_source_descriptor.pb.h"
38
#include "envoy/config/core/v3/event_service_config_descriptor.pb.h"
39
#include "envoy/config/core/v3/extension_descriptor.pb.h"
40
#include "envoy/config/core/v3/grpc_method_list_descriptor.pb.h"
41
#include "envoy/config/core/v3/grpc_service_descriptor.pb.h"
42
#include "envoy/config/core/v3/health_check_descriptor.pb.h"
43
#include "envoy/config/core/v3/http_uri_descriptor.pb.h"
44
#include "envoy/config/core/v3/protocol_descriptor.pb.h"
45
#include "envoy/config/core/v3/proxy_protocol_descriptor.pb.h"
46
#include "envoy/config/core/v3/resolver_descriptor.pb.h"
47
#include "envoy/config/core/v3/socket_option_descriptor.pb.h"
48
#include "envoy/config/core/v3/substitution_format_string_descriptor.pb.h"
49
#include "envoy/config/core/v3/udp_socket_config_descriptor.pb.h"
50
#include "envoy/config/endpoint/v3/endpoint_components_descriptor.pb.h"
51
#include "envoy/config/endpoint/v3/endpoint_descriptor.pb.h"
52
#include "envoy/config/endpoint/v3/load_report_descriptor.pb.h"
53
#include "envoy/config/listener/v3/api_listener_descriptor.pb.h"
54
#include "envoy/config/listener/v3/listener_components_descriptor.pb.h"
55
#include "envoy/config/listener/v3/listener_descriptor.pb.h"
56
#include "envoy/config/listener/v3/quic_config_descriptor.pb.h"
57
#include "envoy/config/listener/v3/udp_listener_config_descriptor.pb.h"
58
#include "envoy/config/metrics/v3/metrics_service_descriptor.pb.h"
59
#include "envoy/config/metrics/v3/stats_descriptor.pb.h"
60
#include "envoy/config/overload/v3/overload_descriptor.pb.h"
61
#include "envoy/config/route/v3/route_components_descriptor.pb.h"
62
#include "envoy/config/route/v3/route_descriptor.pb.h"
63
#include "envoy/config/route/v3/scoped_route_descriptor.pb.h"
64
#include "envoy/config/trace/v3/datadog_descriptor.pb.h"
65
#include "envoy/config/trace/v3/dynamic_ot_descriptor.pb.h"
66
#include "envoy/config/trace/v3/http_tracer_descriptor.pb.h"
67
#include "envoy/config/trace/v3/lightstep_descriptor.pb.h"
68
#include "envoy/config/trace/v3/opentelemetry_descriptor.pb.h"
69
#include "envoy/config/trace/v3/service_descriptor.pb.h"
70
#include "envoy/config/trace/v3/skywalking_descriptor.pb.h"
71
#include "envoy/config/trace/v3/trace_descriptor.pb.h"
72
#include "envoy/config/trace/v3/xray_descriptor.pb.h"
73
#include "envoy/config/trace/v3/zipkin_descriptor.pb.h"
74
#include "envoy/config/upstream/local_address_selector/v3/default_local_address_selector_descriptor.pb.h"
75
#include "envoy/data/accesslog/v3/accesslog_descriptor.pb.h"
76
#include "envoy/data/cluster/v3/outlier_detection_event_descriptor.pb.h"
77
#include "envoy/data/core/v3/health_check_event_descriptor.pb.h"
78
#include "envoy/extensions/access_loggers/file/v3/file_descriptor.pb.h"
79
#include "envoy/extensions/access_loggers/stream/v3/stream_descriptor.pb.h"
80
#include "envoy/extensions/clusters/dynamic_forward_proxy/v3/cluster_descriptor.pb.h"
81
#include "envoy/extensions/common/dynamic_forward_proxy/v3/dns_cache_descriptor.pb.h"
82
#include "envoy/extensions/common/matching/v3/extension_matcher_descriptor.pb.h"
83
#include "envoy/extensions/compression/brotli/compressor/v3/brotli_descriptor.pb.h"
84
#include "envoy/extensions/compression/brotli/decompressor/v3/brotli_descriptor.pb.h"
85
#include "envoy/extensions/compression/gzip/compressor/v3/gzip_descriptor.pb.h"
86
#include "envoy/extensions/compression/gzip/decompressor/v3/gzip_descriptor.pb.h"
87
#include "envoy/extensions/early_data/v3/default_early_data_policy_descriptor.pb.h"
88
#include "envoy/extensions/filters/common/dependency/v3/dependency_descriptor.pb.h"
89
#include "envoy/extensions/filters/common/matcher/action/v3/skip_action_descriptor.pb.h"
90
#include "envoy/extensions/filters/http/alternate_protocols_cache/v3/alternate_protocols_cache_descriptor.pb.h"
91
#include "envoy/extensions/filters/http/buffer/v3/buffer_descriptor.pb.h"
92
#include "envoy/extensions/filters/http/composite/v3/composite_descriptor.pb.h"
93
#include "envoy/extensions/filters/http/compressor/v3/compressor_descriptor.pb.h"
94
#include "envoy/extensions/filters/http/decompressor/v3/decompressor_descriptor.pb.h"
95
#include "envoy/extensions/filters/http/dynamic_forward_proxy/v3/dynamic_forward_proxy_descriptor.pb.h"
96
#include "envoy/extensions/filters/http/health_check/v3/health_check_descriptor.pb.h"
97
#include "envoy/extensions/filters/http/on_demand/v3/on_demand_descriptor.pb.h"
98
#include "envoy/extensions/filters/http/router/v3/router_descriptor.pb.h"
99
#include "envoy/extensions/filters/http/upstream_codec/v3/upstream_codec_descriptor.pb.h"
100
#include "envoy/extensions/filters/listener/proxy_protocol/v3/proxy_protocol_descriptor.pb.h"
101
#include "envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager_descriptor.pb.h"
102
#include "envoy/extensions/filters/udp/dns_filter/v3/dns_filter_descriptor.pb.h"
103
#include "envoy/extensions/http/header_formatters/preserve_case/v3/preserve_case_descriptor.pb.h"
104
#include "envoy/extensions/http/header_validators/envoy_default/v3/header_validator_descriptor.pb.h"
105
#include "envoy/extensions/http/original_ip_detection/xff/v3/xff_descriptor.pb.h"
106
#include "envoy/extensions/load_balancing_policies/cluster_provided/v3/cluster_provided_descriptor.pb.h"
107
#include "envoy/extensions/load_balancing_policies/common/v3/common_descriptor.pb.h"
108
#include "envoy/extensions/load_balancing_policies/least_request/v3/least_request_descriptor.pb.h"
109
#include "envoy/extensions/load_balancing_policies/random/v3/random_descriptor.pb.h"
110
#include "envoy/extensions/load_balancing_policies/round_robin/v3/round_robin_descriptor.pb.h"
111
#include "envoy/extensions/matching/common_inputs/network/v3/network_inputs_descriptor.pb.h"
112
#include "envoy/extensions/network/dns_resolver/apple/v3/apple_dns_resolver_descriptor.pb.h"
113
#include "envoy/extensions/network/dns_resolver/cares/v3/cares_dns_resolver_descriptor.pb.h"
114
#include "envoy/extensions/network/dns_resolver/getaddrinfo/v3/getaddrinfo_dns_resolver_descriptor.pb.h"
115
#include "envoy/extensions/network/socket_interface/v3/default_socket_interface_descriptor.pb.h"
116
#include "envoy/extensions/path/match/uri_template/v3/uri_template_match_descriptor.pb.h"
117
#include "envoy/extensions/path/rewrite/uri_template/v3/uri_template_rewrite_descriptor.pb.h"
118
#include "envoy/extensions/quic/client_writer_factory/v3/default_client_writer_descriptor.pb.h"
119
#include "envoy/extensions/quic/connection_id_generator/v3/envoy_deterministic_connection_id_generator_descriptor.pb.h"
120
#include "envoy/extensions/quic/crypto_stream/v3/crypto_stream_descriptor.pb.h"
121
#include "envoy/extensions/quic/proof_source/v3/proof_source_descriptor.pb.h"
122
#include "envoy/extensions/regex_engines/v3/google_re2_descriptor.pb.h"
123
#include "envoy/extensions/request_id/uuid/v3/uuid_descriptor.pb.h"
124
#include "envoy/extensions/transport_sockets/http_11_proxy/v3/upstream_http_11_connect_descriptor.pb.h"
125
#include "envoy/extensions/transport_sockets/quic/v3/quic_transport_descriptor.pb.h"
126
#include "envoy/extensions/transport_sockets/raw_buffer/v3/raw_buffer_descriptor.pb.h"
127
#include "envoy/extensions/transport_sockets/tls/v3/cert_descriptor.pb.h"
128
#include "envoy/extensions/transport_sockets/tls/v3/common_descriptor.pb.h"
129
#include "envoy/extensions/transport_sockets/tls/v3/secret_descriptor.pb.h"
130
#include "envoy/extensions/transport_sockets/tls/v3/tls_descriptor.pb.h"
131
#include "envoy/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config_descriptor.pb.h"
132
#include "envoy/extensions/udp_packet_writer/v3/udp_default_writer_factory_descriptor.pb.h"
133
#include "envoy/extensions/udp_packet_writer/v3/udp_gso_batch_writer_factory_descriptor.pb.h"
134
#include "envoy/extensions/upstreams/http/generic/v3/generic_connection_pool_descriptor.pb.h"
135
#include "envoy/extensions/upstreams/http/v3/http_protocol_options_descriptor.pb.h"
136
#include "envoy/extensions/upstreams/tcp/v3/tcp_protocol_options_descriptor.pb.h"
137
#include "envoy/service/cluster/v3/cds_descriptor.pb.h"
138
#include "envoy/service/discovery/v3/ads_descriptor.pb.h"
139
#include "envoy/service/discovery/v3/discovery_descriptor.pb.h"
140
#include "envoy/service/endpoint/v3/eds_descriptor.pb.h"
141
#include "envoy/service/endpoint/v3/leds_descriptor.pb.h"
142
#include "envoy/service/extension/v3/config_discovery_descriptor.pb.h"
143
#include "envoy/service/health/v3/hds_descriptor.pb.h"
144
#include "envoy/service/listener/v3/lds_descriptor.pb.h"
145
#include "envoy/service/load_stats/v3/lrs_descriptor.pb.h"
146
#include "envoy/service/metrics/v3/metrics_service_descriptor.pb.h"
147
#include "envoy/service/ratelimit/v3/rls_descriptor.pb.h"
148
#include "envoy/service/route/v3/rds_descriptor.pb.h"
149
#include "envoy/service/route/v3/srds_descriptor.pb.h"
150
#include "envoy/service/runtime/v3/rtds_descriptor.pb.h"
151
#include "envoy/service/secret/v3/sds_descriptor.pb.h"
152
#include "envoy/type/matcher/metadata_descriptor.pb.h"
153
#include "envoy/type/matcher/node_descriptor.pb.h"
154
#include "envoy/type/matcher/number_descriptor.pb.h"
155
#include "envoy/type/matcher/path_descriptor.pb.h"
156
#include "envoy/type/matcher/regex_descriptor.pb.h"
157
#include "envoy/type/matcher/string_descriptor.pb.h"
158
#include "envoy/type/matcher/struct_descriptor.pb.h"
159
#include "envoy/type/matcher/v3/filter_state_descriptor.pb.h"
160
#include "envoy/type/matcher/v3/http_inputs_descriptor.pb.h"
161
#include "envoy/type/matcher/v3/metadata_descriptor.pb.h"
162
#include "envoy/type/matcher/v3/node_descriptor.pb.h"
163
#include "envoy/type/matcher/v3/number_descriptor.pb.h"
164
#include "envoy/type/matcher/v3/path_descriptor.pb.h"
165
#include "envoy/type/matcher/v3/regex_descriptor.pb.h"
166
#include "envoy/type/matcher/v3/status_code_input_descriptor.pb.h"
167
#include "envoy/type/matcher/v3/string_descriptor.pb.h"
168
#include "envoy/type/matcher/v3/struct_descriptor.pb.h"
169
#include "envoy/type/matcher/v3/value_descriptor.pb.h"
170
#include "envoy/type/matcher/value_descriptor.pb.h"
171
#include "envoy/type/metadata/v3/metadata_descriptor.pb.h"
172
#include "envoy/type/tracing/v3/custom_tag_descriptor.pb.h"
173
#include "envoy/type/v3/hash_policy_descriptor.pb.h"
174
#include "envoy/type/v3/http_descriptor.pb.h"
175
#include "envoy/type/v3/http_status_descriptor.pb.h"
176
#include "envoy/type/v3/percent_descriptor.pb.h"
177
#include "envoy/type/v3/range_descriptor.pb.h"
178
#include "envoy/type/v3/ratelimit_strategy_descriptor.pb.h"
179
#include "envoy/type/v3/ratelimit_unit_descriptor.pb.h"
180
#include "envoy/type/v3/semantic_version_descriptor.pb.h"
181
#include "envoy/type/v3/token_bucket_descriptor.pb.h"
182
#include "envoy/watchdog/v3/abort_action_descriptor.pb.h"
183

            
184
#include "bazel/cc_proto_descriptor_library/create_dynamic_message.h"
185
#include "bazel/cc_proto_descriptor_library/file_descriptor_info.h"
186
#include "bazel/cc_proto_descriptor_library/text_format_transcoder.h"
187

            
188
using cc_proto_descriptor_library::TextFormatTranscoder;
189
using cc_proto_descriptor_library::internal::FileDescriptorInfo;
190

            
191
namespace {
192

            
193
std::unique_ptr<TextFormatTranscoder> createTranscoder() {
194
  auto transcoder = std::make_unique<TextFormatTranscoder>(/*allow_global_fallback=*/false);
195
  std::vector<FileDescriptorInfo> file_descriptors = {
196
      protobuf::reflection::envoy_config_core_v3_base::kFileDescriptorInfo,
197
      protobuf::reflection::envoy_admin_v3_certs::kFileDescriptorInfo,
198
      protobuf::reflection::envoy_admin_v3_clusters::kFileDescriptorInfo,
199
      protobuf::reflection::envoy_admin_v3_config_dump::kFileDescriptorInfo,
200
      protobuf::reflection::envoy_admin_v3_config_dump_shared::kFileDescriptorInfo,
201
      protobuf::reflection::envoy_admin_v3_init_dump::kFileDescriptorInfo,
202
      protobuf::reflection::envoy_admin_v3_listeners::kFileDescriptorInfo,
203
      protobuf::reflection::envoy_admin_v3_memory::kFileDescriptorInfo,
204
      protobuf::reflection::envoy_admin_v3_metrics::kFileDescriptorInfo,
205
      protobuf::reflection::envoy_admin_v3_mutex_stats::kFileDescriptorInfo,
206
      protobuf::reflection::envoy_admin_v3_server_info::kFileDescriptorInfo,
207
      protobuf::reflection::envoy_admin_v3_tap::kFileDescriptorInfo,
208
      protobuf::reflection::envoy_annotations_deprecation::kFileDescriptorInfo,
209
      protobuf::reflection::envoy_annotations_resource::kFileDescriptorInfo,
210
      protobuf::reflection::envoy_config_accesslog_v3_accesslog::kFileDescriptorInfo,
211
      protobuf::reflection::envoy_config_bootstrap_v3_bootstrap::kFileDescriptorInfo,
212
      protobuf::reflection::envoy_config_cluster_v3_circuit_breaker::kFileDescriptorInfo,
213
      protobuf::reflection::envoy_config_cluster_v3_cluster::kFileDescriptorInfo,
214
      protobuf::reflection::envoy_config_cluster_v3_filter::kFileDescriptorInfo,
215
      protobuf::reflection::envoy_config_cluster_v3_outlier_detection::kFileDescriptorInfo,
216
      protobuf::reflection::envoy_config_common_key_value_v3_config::kFileDescriptorInfo,
217
      protobuf::reflection::envoy_config_common_matcher_v3_matcher::kFileDescriptorInfo,
218
      protobuf::reflection::envoy_config_core_v3_address::kFileDescriptorInfo,
219
      protobuf::reflection::envoy_config_core_v3_backoff::kFileDescriptorInfo,
220
      protobuf::reflection::envoy_config_core_v3_base::kFileDescriptorInfo,
221
      protobuf::reflection::envoy_config_core_v3_config_source::kFileDescriptorInfo,
222
      protobuf::reflection::envoy_config_core_v3_event_service_config::kFileDescriptorInfo,
223
      protobuf::reflection::envoy_config_core_v3_extension::kFileDescriptorInfo,
224
      protobuf::reflection::envoy_config_core_v3_grpc_method_list::kFileDescriptorInfo,
225
      protobuf::reflection::envoy_config_core_v3_grpc_service::kFileDescriptorInfo,
226
      protobuf::reflection::envoy_config_core_v3_health_check::kFileDescriptorInfo,
227
      protobuf::reflection::envoy_config_core_v3_http_uri::kFileDescriptorInfo,
228
      protobuf::reflection::envoy_config_core_v3_protocol::kFileDescriptorInfo,
229
      protobuf::reflection::envoy_config_core_v3_proxy_protocol::kFileDescriptorInfo,
230
      protobuf::reflection::envoy_config_core_v3_resolver::kFileDescriptorInfo,
231
      protobuf::reflection::envoy_config_core_v3_socket_option::kFileDescriptorInfo,
232
      protobuf::reflection::envoy_config_core_v3_substitution_format_string::kFileDescriptorInfo,
233
      protobuf::reflection::envoy_config_core_v3_udp_socket_config::kFileDescriptorInfo,
234
      protobuf::reflection::envoy_config_endpoint_v3_endpoint::kFileDescriptorInfo,
235
      protobuf::reflection::envoy_config_endpoint_v3_endpoint_components::kFileDescriptorInfo,
236
      protobuf::reflection::envoy_config_endpoint_v3_load_report::kFileDescriptorInfo,
237
      protobuf::reflection::envoy_config_listener_v3_api_listener::kFileDescriptorInfo,
238
      protobuf::reflection::envoy_config_listener_v3_listener::kFileDescriptorInfo,
239
      protobuf::reflection::envoy_config_listener_v3_listener_components::kFileDescriptorInfo,
240
      protobuf::reflection::envoy_config_listener_v3_quic_config::kFileDescriptorInfo,
241
      protobuf::reflection::envoy_config_listener_v3_udp_listener_config::kFileDescriptorInfo,
242
      protobuf::reflection::envoy_config_metrics_v3_metrics_service::kFileDescriptorInfo,
243
      protobuf::reflection::envoy_config_metrics_v3_stats::kFileDescriptorInfo,
244
      protobuf::reflection::envoy_config_overload_v3_overload::kFileDescriptorInfo,
245
      protobuf::reflection::envoy_config_route_v3_route::kFileDescriptorInfo,
246
      protobuf::reflection::envoy_config_route_v3_route_components::kFileDescriptorInfo,
247
      protobuf::reflection::envoy_config_route_v3_scoped_route::kFileDescriptorInfo,
248
      protobuf::reflection::envoy_config_trace_v3_datadog::kFileDescriptorInfo,
249
      protobuf::reflection::envoy_config_trace_v3_dynamic_ot::kFileDescriptorInfo,
250
      protobuf::reflection::envoy_config_trace_v3_http_tracer::kFileDescriptorInfo,
251
      protobuf::reflection::envoy_config_trace_v3_lightstep::kFileDescriptorInfo,
252
      protobuf::reflection::envoy_config_trace_v3_opentelemetry::kFileDescriptorInfo,
253
      protobuf::reflection::envoy_config_trace_v3_service::kFileDescriptorInfo,
254
      protobuf::reflection::envoy_config_trace_v3_skywalking::kFileDescriptorInfo,
255
      protobuf::reflection::envoy_config_trace_v3_trace::kFileDescriptorInfo,
256
      protobuf::reflection::envoy_config_trace_v3_xray::kFileDescriptorInfo,
257
      protobuf::reflection::envoy_config_trace_v3_zipkin::kFileDescriptorInfo,
258
      protobuf::reflection::
259
          envoy_config_upstream_local_address_selector_v3_default_local_address_selector::
260
              kFileDescriptorInfo,
261
      protobuf::reflection::envoy_data_accesslog_v3_accesslog::kFileDescriptorInfo,
262
      protobuf::reflection::envoy_data_cluster_v3_outlier_detection_event::kFileDescriptorInfo,
263
      protobuf::reflection::envoy_data_core_v3_health_check_event::kFileDescriptorInfo,
264
      protobuf::reflection::envoy_extensions_access_loggers_file_v3_file::kFileDescriptorInfo,
265
      protobuf::reflection::envoy_extensions_access_loggers_stream_v3_stream::kFileDescriptorInfo,
266
      protobuf::reflection::envoy_extensions_clusters_dynamic_forward_proxy_v3_cluster::
267
          kFileDescriptorInfo,
268
      protobuf::reflection::envoy_extensions_common_dynamic_forward_proxy_v3_dns_cache::
269
          kFileDescriptorInfo,
270
      protobuf::reflection::envoy_extensions_common_matching_v3_extension_matcher::
271
          kFileDescriptorInfo,
272
      protobuf::reflection::envoy_extensions_compression_brotli_compressor_v3_brotli::
273
          kFileDescriptorInfo,
274
      protobuf::reflection::envoy_extensions_compression_brotli_decompressor_v3_brotli::
275
          kFileDescriptorInfo,
276
      protobuf::reflection::envoy_extensions_compression_gzip_compressor_v3_gzip::
277
          kFileDescriptorInfo,
278
      protobuf::reflection::envoy_extensions_compression_gzip_decompressor_v3_gzip::
279
          kFileDescriptorInfo,
280
      protobuf::reflection::envoy_extensions_early_data_v3_default_early_data_policy::
281
          kFileDescriptorInfo,
282
      protobuf::reflection::envoy_extensions_filters_common_dependency_v3_dependency::
283
          kFileDescriptorInfo,
284
      protobuf::reflection::envoy_extensions_filters_common_matcher_action_v3_skip_action::
285
          kFileDescriptorInfo,
286
      protobuf::reflection::
287
          envoy_extensions_filters_http_alternate_protocols_cache_v3_alternate_protocols_cache::
288
              kFileDescriptorInfo,
289
      protobuf::reflection::envoy_extensions_filters_http_buffer_v3_buffer::kFileDescriptorInfo,
290
      protobuf::reflection::envoy_extensions_filters_http_composite_v3_composite::
291
          kFileDescriptorInfo,
292
      protobuf::reflection::envoy_extensions_filters_http_compressor_v3_compressor::
293
          kFileDescriptorInfo,
294
      protobuf::reflection::envoy_extensions_filters_http_decompressor_v3_decompressor::
295
          kFileDescriptorInfo,
296
      protobuf::reflection::
297
          envoy_extensions_filters_http_dynamic_forward_proxy_v3_dynamic_forward_proxy::
298
              kFileDescriptorInfo,
299
      protobuf::reflection::envoy_extensions_filters_http_health_check_v3_health_check::
300
          kFileDescriptorInfo,
301
      protobuf::reflection::envoy_extensions_filters_http_on_demand_v3_on_demand::
302
          kFileDescriptorInfo,
303
      protobuf::reflection::envoy_extensions_filters_http_router_v3_router::kFileDescriptorInfo,
304
      protobuf::reflection::envoy_extensions_filters_http_upstream_codec_v3_upstream_codec::
305
          kFileDescriptorInfo,
306
      protobuf::reflection::envoy_extensions_filters_listener_proxy_protocol_v3_proxy_protocol::
307
          kFileDescriptorInfo,
308
      protobuf::reflection::
309
          envoy_extensions_filters_network_http_connection_manager_v3_http_connection_manager::
310
              kFileDescriptorInfo,
311
      protobuf::reflection::envoy_extensions_filters_udp_dns_filter_v3_dns_filter::
312
          kFileDescriptorInfo,
313
      protobuf::reflection::envoy_extensions_http_header_formatters_preserve_case_v3_preserve_case::
314
          kFileDescriptorInfo,
315
      protobuf::reflection::
316
          envoy_extensions_http_header_validators_envoy_default_v3_header_validator::
317
              kFileDescriptorInfo,
318
      protobuf::reflection::envoy_extensions_http_original_ip_detection_xff_v3_xff::
319
          kFileDescriptorInfo,
320
      protobuf::reflection::
321
          envoy_extensions_load_balancing_policies_cluster_provided_v3_cluster_provided::
322
              kFileDescriptorInfo,
323
      protobuf::reflection::envoy_extensions_load_balancing_policies_common_v3_common::
324
          kFileDescriptorInfo,
325
      protobuf::reflection::
326
          envoy_extensions_load_balancing_policies_least_request_v3_least_request::
327
              kFileDescriptorInfo,
328
      protobuf::reflection::envoy_extensions_load_balancing_policies_random_v3_random::
329
          kFileDescriptorInfo,
330
      protobuf::reflection::envoy_extensions_load_balancing_policies_round_robin_v3_round_robin::
331
          kFileDescriptorInfo,
332
      protobuf::reflection::envoy_extensions_matching_common_inputs_network_v3_network_inputs::
333
          kFileDescriptorInfo,
334
      protobuf::reflection::envoy_extensions_network_dns_resolver_apple_v3_apple_dns_resolver::
335
          kFileDescriptorInfo,
336
      protobuf::reflection::envoy_extensions_network_dns_resolver_cares_v3_cares_dns_resolver::
337
          kFileDescriptorInfo,
338
      protobuf::reflection::
339
          envoy_extensions_network_dns_resolver_getaddrinfo_v3_getaddrinfo_dns_resolver::
340
              kFileDescriptorInfo,
341
      protobuf::reflection::envoy_extensions_network_socket_interface_v3_default_socket_interface::
342
          kFileDescriptorInfo,
343
      protobuf::reflection::envoy_extensions_path_match_uri_template_v3_uri_template_match::
344
          kFileDescriptorInfo,
345
      protobuf::reflection::envoy_extensions_path_rewrite_uri_template_v3_uri_template_rewrite::
346
          kFileDescriptorInfo,
347
      protobuf::reflection::
348
          envoy_extensions_quic_connection_id_generator_v3_envoy_deterministic_connection_id_generator::
349
              kFileDescriptorInfo,
350
      protobuf::reflection::envoy_extensions_quic_crypto_stream_v3_crypto_stream::
351
          kFileDescriptorInfo,
352
      protobuf::reflection::envoy_extensions_quic_proof_source_v3_proof_source::kFileDescriptorInfo,
353
      protobuf::reflection::envoy_extensions_quic_client_writer_factory_v3_default_client_writer::
354
          kFileDescriptorInfo,
355
      protobuf::reflection::envoy_extensions_regex_engines_v3_google_re2::kFileDescriptorInfo,
356
      protobuf::reflection::envoy_extensions_request_id_uuid_v3_uuid::kFileDescriptorInfo,
357
      protobuf::reflection::
358
          envoy_extensions_transport_sockets_http_11_proxy_v3_upstream_http_11_connect::
359
              kFileDescriptorInfo,
360
      protobuf::reflection::envoy_extensions_transport_sockets_quic_v3_quic_transport::
361
          kFileDescriptorInfo,
362
      protobuf::reflection::envoy_extensions_transport_sockets_raw_buffer_v3_raw_buffer::
363
          kFileDescriptorInfo,
364
      protobuf::reflection::envoy_extensions_transport_sockets_tls_v3_cert::kFileDescriptorInfo,
365
      protobuf::reflection::envoy_extensions_transport_sockets_tls_v3_common::kFileDescriptorInfo,
366
      protobuf::reflection::envoy_extensions_transport_sockets_tls_v3_secret::kFileDescriptorInfo,
367
      protobuf::reflection::envoy_extensions_transport_sockets_tls_v3_tls::kFileDescriptorInfo,
368
      protobuf::reflection::envoy_extensions_transport_sockets_tls_v3_tls_spiffe_validator_config::
369
          kFileDescriptorInfo,
370
      protobuf::reflection::envoy_extensions_udp_packet_writer_v3_udp_default_writer_factory::
371
          kFileDescriptorInfo,
372
      protobuf::reflection::envoy_extensions_udp_packet_writer_v3_udp_gso_batch_writer_factory::
373
          kFileDescriptorInfo,
374
      protobuf::reflection::envoy_extensions_upstreams_http_generic_v3_generic_connection_pool::
375
          kFileDescriptorInfo,
376
      protobuf::reflection::envoy_extensions_upstreams_http_v3_http_protocol_options::
377
          kFileDescriptorInfo,
378
      protobuf::reflection::envoy_extensions_upstreams_tcp_v3_tcp_protocol_options::
379
          kFileDescriptorInfo,
380
      protobuf::reflection::envoy_service_cluster_v3_cds::kFileDescriptorInfo,
381
      protobuf::reflection::envoy_service_discovery_v3_ads::kFileDescriptorInfo,
382
      protobuf::reflection::envoy_service_discovery_v3_discovery::kFileDescriptorInfo,
383
      protobuf::reflection::envoy_service_endpoint_v3_eds::kFileDescriptorInfo,
384
      protobuf::reflection::envoy_service_endpoint_v3_leds::kFileDescriptorInfo,
385
      protobuf::reflection::envoy_service_extension_v3_config_discovery::kFileDescriptorInfo,
386
      protobuf::reflection::envoy_service_health_v3_hds::kFileDescriptorInfo,
387
      protobuf::reflection::envoy_service_listener_v3_lds::kFileDescriptorInfo,
388
      protobuf::reflection::envoy_service_load_stats_v3_lrs::kFileDescriptorInfo,
389
      protobuf::reflection::envoy_service_metrics_v3_metrics_service::kFileDescriptorInfo,
390
      protobuf::reflection::envoy_service_ratelimit_v3_rls::kFileDescriptorInfo,
391
      protobuf::reflection::envoy_service_route_v3_rds::kFileDescriptorInfo,
392
      protobuf::reflection::envoy_service_route_v3_srds::kFileDescriptorInfo,
393
      protobuf::reflection::envoy_service_runtime_v3_rtds::kFileDescriptorInfo,
394
      protobuf::reflection::envoy_service_secret_v3_sds::kFileDescriptorInfo,
395
      protobuf::reflection::envoy_type_matcher_metadata::kFileDescriptorInfo,
396
      protobuf::reflection::envoy_type_matcher_node::kFileDescriptorInfo,
397
      protobuf::reflection::envoy_type_matcher_number::kFileDescriptorInfo,
398
      protobuf::reflection::envoy_type_matcher_path::kFileDescriptorInfo,
399
      protobuf::reflection::envoy_type_matcher_regex::kFileDescriptorInfo,
400
      protobuf::reflection::envoy_type_matcher_string::kFileDescriptorInfo,
401
      protobuf::reflection::envoy_type_matcher_struct::kFileDescriptorInfo,
402
      protobuf::reflection::envoy_type_matcher_value::kFileDescriptorInfo,
403
      protobuf::reflection::envoy_type_matcher_v3_filter_state::kFileDescriptorInfo,
404
      protobuf::reflection::envoy_type_matcher_v3_http_inputs::kFileDescriptorInfo,
405
      protobuf::reflection::envoy_type_matcher_v3_metadata::kFileDescriptorInfo,
406
      protobuf::reflection::envoy_type_matcher_v3_node::kFileDescriptorInfo,
407
      protobuf::reflection::envoy_type_matcher_v3_number::kFileDescriptorInfo,
408
      protobuf::reflection::envoy_type_matcher_v3_path::kFileDescriptorInfo,
409
      protobuf::reflection::envoy_type_matcher_v3_regex::kFileDescriptorInfo,
410
      protobuf::reflection::envoy_type_matcher_v3_status_code_input::kFileDescriptorInfo,
411
      protobuf::reflection::envoy_type_matcher_v3_string::kFileDescriptorInfo,
412
      protobuf::reflection::envoy_type_matcher_v3_struct::kFileDescriptorInfo,
413
      protobuf::reflection::envoy_type_matcher_v3_value::kFileDescriptorInfo,
414
      protobuf::reflection::envoy_type_metadata_v3_metadata::kFileDescriptorInfo,
415
      protobuf::reflection::envoy_type_tracing_v3_custom_tag::kFileDescriptorInfo,
416
      protobuf::reflection::envoy_type_v3_hash_policy::kFileDescriptorInfo,
417
      protobuf::reflection::envoy_type_v3_http::kFileDescriptorInfo,
418
      protobuf::reflection::envoy_type_v3_http_status::kFileDescriptorInfo,
419
      protobuf::reflection::envoy_type_v3_percent::kFileDescriptorInfo,
420
      protobuf::reflection::envoy_type_v3_range::kFileDescriptorInfo,
421
      protobuf::reflection::envoy_type_v3_ratelimit_strategy::kFileDescriptorInfo,
422
      protobuf::reflection::envoy_type_v3_ratelimit_unit::kFileDescriptorInfo,
423
      protobuf::reflection::envoy_type_v3_semantic_version::kFileDescriptorInfo,
424
      protobuf::reflection::envoy_type_v3_token_bucket::kFileDescriptorInfo,
425
      protobuf::reflection::envoy_watchdog_v3_abort_action::kFileDescriptorInfo,
426
  };
427
  for (const FileDescriptorInfo& descriptor : file_descriptors) {
428
    transcoder->loadFileDescriptors(descriptor);
429
  }
430
  return transcoder;
431
}
432

            
433
TextFormatTranscoder& getTranscoder() {
434
  // This transcoder is used by createDynamicMessage() to convert an instance of a MessageLite
435
  // subclass into an instance of Message. This Message instance has reflection capabilities
436
  // but does not have the per-field accessors that the generated C++ subclasses have.
437
  // As such it is only useful for reflection uses.
438
  static std::unique_ptr<TextFormatTranscoder> transcoder = createTranscoder();
439
  return *transcoder;
440
}
441

            
442
} // namespace
443

            
444
namespace Envoy {
445

            
446
void loadFileDescriptors(const FileDescriptorInfo& file_descriptor_info) {
447
  getTranscoder().loadFileDescriptors(file_descriptor_info);
448
}
449

            
450
Protobuf::ReflectableMessage createReflectableMessage(const Protobuf::Message& message) {
451
  Protobuf::ReflectableMessage reflectable_message = createDynamicMessage(getTranscoder(), message);
452
  ASSERT(reflectable_message,
453
         absl::StrCat("Unable to create dynamic message for: ", message.GetTypeName()));
454
  return reflectable_message;
455
}
456

            
457
} // namespace Envoy
458
#endif