grpc 1.47.0-x86_64-linux → 1.49.0.pre1-x86_64-linux
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of grpc might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/Makefile +183 -62
- data/include/grpc/compression.h +1 -1
- data/include/grpc/event_engine/event_engine.h +37 -25
- data/include/grpc/event_engine/slice_buffer.h +8 -2
- data/include/grpc/grpc.h +3 -3
- data/include/grpc/impl/codegen/compression_types.h +2 -1
- data/include/grpc/impl/codegen/connectivity_state.h +2 -1
- data/include/grpc/impl/codegen/gpr_types.h +2 -1
- data/include/grpc/impl/codegen/grpc_types.h +5 -9
- data/include/grpc/impl/codegen/port_platform.h +2 -7
- data/src/core/ext/filters/census/grpc_context.cc +3 -0
- data/src/core/ext/filters/channel_idle/channel_idle_filter.cc +20 -8
- data/src/core/ext/filters/channel_idle/channel_idle_filter.h +18 -2
- data/src/core/ext/filters/channel_idle/idle_filter_state.h +2 -0
- data/src/core/ext/filters/client_channel/backup_poller.cc +3 -1
- data/src/core/ext/filters/client_channel/channel_connectivity.cc +2 -2
- data/src/core/ext/filters/client_channel/client_channel.cc +164 -261
- data/src/core/ext/filters/client_channel/client_channel.h +34 -12
- data/src/core/ext/filters/client_channel/client_channel_factory.cc +0 -29
- data/src/core/ext/filters/client_channel/client_channel_factory.h +2 -10
- data/src/core/ext/filters/client_channel/client_channel_plugin.cc +1 -1
- data/src/core/ext/filters/client_channel/config_selector.h +13 -5
- data/src/core/ext/filters/client_channel/connector.h +5 -6
- data/src/core/ext/filters/client_channel/dynamic_filters.cc +6 -4
- data/src/core/ext/filters/client_channel/dynamic_filters.h +1 -1
- data/src/core/ext/filters/client_channel/http_proxy.cc +53 -65
- data/src/core/ext/filters/client_channel/http_proxy.h +12 -9
- data/src/core/ext/filters/client_channel/lb_policy/address_filtering.cc +1 -1
- data/src/core/ext/filters/client_channel/lb_policy/child_policy_handler.cc +14 -12
- data/src/core/ext/filters/client_channel/lb_policy/child_policy_handler.h +6 -6
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.cc +2 -2
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.h +1 -0
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +170 -164
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_balancer_addresses.cc +13 -4
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_balancer_addresses.h +5 -1
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.cc +1 -0
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.h +1 -2
- data/src/core/ext/filters/client_channel/lb_policy/oob_backend_metric.cc +0 -1
- data/src/core/ext/filters/client_channel/lb_policy/oob_backend_metric.h +1 -1
- data/src/core/ext/filters/client_channel/lb_policy/outlier_detection/outlier_detection.cc +200 -96
- data/src/core/ext/filters/client_channel/lb_policy/outlier_detection/outlier_detection.h +25 -1
- data/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc +121 -131
- data/src/core/ext/filters/client_channel/lb_policy/priority/priority.cc +153 -116
- data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.cc +220 -181
- data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.h +10 -6
- data/src/core/ext/filters/client_channel/lb_policy/rls/rls.cc +110 -119
- data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +133 -117
- data/src/core/ext/filters/client_channel/lb_policy/subchannel_list.h +97 -87
- data/src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc +114 -131
- data/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc +40 -49
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_impl.cc +84 -102
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_manager.cc +64 -76
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_resolver.cc +172 -103
- data/src/core/ext/filters/client_channel/proxy_mapper.h +13 -14
- data/src/core/ext/filters/client_channel/proxy_mapper_registry.cc +18 -16
- data/src/core/ext/filters/client_channel/proxy_mapper_registry.h +8 -7
- data/src/core/ext/filters/client_channel/resolver/binder/binder_resolver.cc +7 -9
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +434 -148
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +5 -5
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +179 -103
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.h +20 -7
- data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc +29 -18
- data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc +8 -18
- data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.h +11 -0
- data/src/core/ext/filters/client_channel/resolver/google_c2p/google_c2p_resolver.cc +16 -18
- data/src/core/ext/filters/client_channel/resolver/polling_resolver.cc +4 -5
- data/src/core/ext/filters/client_channel/resolver/polling_resolver.h +5 -6
- data/src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.cc +5 -13
- data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +181 -175
- data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.h +3 -1
- data/src/core/ext/filters/client_channel/resolver_result_parsing.cc +39 -32
- data/src/core/ext/filters/client_channel/resolver_result_parsing.h +7 -10
- data/src/core/ext/filters/client_channel/retry_filter.cc +35 -43
- data/src/core/ext/filters/client_channel/retry_filter.h +1 -0
- data/src/core/ext/filters/client_channel/retry_service_config.cc +30 -19
- data/src/core/ext/filters/client_channel/retry_service_config.h +6 -9
- data/src/core/ext/filters/client_channel/service_config_channel_arg_filter.cc +7 -7
- data/src/core/ext/filters/client_channel/subchannel.cc +101 -138
- data/src/core/ext/filters/client_channel/subchannel.h +14 -30
- data/src/core/ext/filters/client_channel/subchannel_interface_internal.h +1 -1
- data/src/core/ext/filters/client_channel/subchannel_pool_interface.cc +6 -76
- data/src/core/ext/filters/client_channel/subchannel_pool_interface.h +16 -25
- data/src/core/ext/filters/client_channel/subchannel_stream_client.cc +15 -101
- data/src/core/ext/filters/client_channel/subchannel_stream_client.h +5 -9
- data/src/core/ext/filters/deadline/deadline_filter.cc +18 -13
- data/src/core/ext/filters/deadline/deadline_filter.h +8 -2
- data/src/core/ext/filters/fault_injection/fault_injection_filter.cc +20 -3
- data/src/core/ext/filters/fault_injection/fault_injection_filter.h +9 -4
- data/src/core/ext/filters/fault_injection/service_config_parser.cc +19 -11
- data/src/core/ext/filters/fault_injection/service_config_parser.h +19 -6
- data/src/core/ext/filters/http/client/http_client_filter.cc +17 -7
- data/src/core/ext/filters/http/client/http_client_filter.h +9 -2
- data/src/core/ext/filters/http/client_authority_filter.cc +11 -11
- data/src/core/ext/filters/http/client_authority_filter.h +6 -3
- data/src/core/ext/filters/http/http_filters_plugin.cc +9 -1
- data/src/core/ext/filters/http/message_compress/message_compress_filter.cc +64 -187
- data/src/core/ext/filters/http/message_compress/message_compress_filter.h +1 -2
- data/src/core/ext/filters/http/message_compress/message_decompress_filter.cc +42 -106
- data/src/core/ext/filters/http/message_compress/message_decompress_filter.h +1 -0
- data/src/core/ext/filters/http/server/http_server_filter.cc +17 -11
- data/src/core/ext/filters/http/server/http_server_filter.h +7 -2
- data/src/core/ext/filters/message_size/message_size_filter.cc +37 -21
- data/src/core/ext/filters/message_size/message_size_filter.h +13 -3
- data/src/core/ext/filters/rbac/rbac_filter.cc +14 -3
- data/src/core/ext/filters/rbac/rbac_filter.h +8 -0
- data/src/core/ext/filters/rbac/rbac_service_config_parser.cc +25 -10
- data/src/core/ext/filters/rbac/rbac_service_config_parser.h +15 -5
- data/src/core/ext/filters/server_config_selector/server_config_selector.cc +1 -0
- data/src/core/ext/filters/server_config_selector/server_config_selector.h +14 -0
- data/src/core/ext/filters/server_config_selector/server_config_selector_filter.cc +23 -5
- data/src/core/ext/filters/server_config_selector/server_config_selector_filter.h +1 -0
- data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +39 -66
- data/src/core/ext/transport/chttp2/server/chttp2_server.cc +77 -104
- data/src/core/ext/transport/chttp2/server/chttp2_server.h +4 -6
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +320 -635
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.h +4 -3
- data/src/core/ext/transport/chttp2/transport/flow_control.cc +207 -262
- data/src/core/ext/transport/chttp2/transport/flow_control.h +177 -289
- data/src/core/ext/transport/chttp2/transport/frame_data.cc +57 -215
- data/src/core/ext/transport/chttp2/transport/frame_data.h +10 -36
- data/src/core/ext/transport/chttp2/transport/frame_settings.cc +0 -41
- data/src/core/ext/transport/chttp2/transport/frame_window_update.cc +7 -12
- data/src/core/ext/transport/chttp2/transport/hpack_constants.h +7 -1
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.cc +25 -8
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.h +4 -0
- data/src/core/ext/transport/chttp2/transport/hpack_encoder_table.cc +0 -1
- data/src/core/ext/transport/chttp2/transport/hpack_encoder_table.h +8 -2
- data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +9 -16
- data/src/core/ext/transport/chttp2/transport/hpack_parser_table.cc +0 -2
- data/src/core/ext/transport/chttp2/transport/internal.h +11 -112
- data/src/core/ext/transport/chttp2/transport/parsing.cc +51 -38
- data/src/core/ext/transport/chttp2/transport/stream_lists.cc +0 -4
- data/src/core/ext/transport/chttp2/transport/writing.cc +18 -21
- data/src/core/ext/transport/inproc/inproc_plugin.cc +0 -1
- data/src/core/ext/transport/inproc/inproc_transport.cc +124 -154
- data/src/core/ext/transport/inproc/inproc_transport.h +3 -1
- data/src/core/ext/upb-generated/envoy/admin/v3/certs.upb.c +5 -5
- data/src/core/ext/upb-generated/envoy/admin/v3/certs.upb.h +30 -10
- data/src/core/ext/upb-generated/envoy/admin/v3/clusters.upb.c +4 -4
- data/src/core/ext/upb-generated/envoy/admin/v3/clusters.upb.h +24 -8
- data/src/core/ext/upb-generated/envoy/admin/v3/config_dump.upb.c +8 -327
- data/src/core/ext/upb-generated/envoy/admin/v3/config_dump.upb.h +83 -1723
- data/src/core/ext/upb-generated/envoy/admin/v3/config_dump_shared.upb.c +352 -0
- data/src/core/ext/upb-generated/envoy/admin/v3/config_dump_shared.upb.h +1768 -0
- data/src/core/ext/upb-generated/envoy/admin/v3/init_dump.upb.c +2 -2
- data/src/core/ext/upb-generated/envoy/admin/v3/init_dump.upb.h +12 -4
- data/src/core/ext/upb-generated/envoy/admin/v3/listeners.upb.c +6 -4
- data/src/core/ext/upb-generated/envoy/admin/v3/listeners.upb.h +33 -4
- data/src/core/ext/upb-generated/envoy/admin/v3/memory.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/admin/v3/memory.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/admin/v3/metrics.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/admin/v3/metrics.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/admin/v3/mutex_stats.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/admin/v3/server_info.upb.h +12 -4
- data/src/core/ext/upb-generated/envoy/admin/v3/tap.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/admin/v3/tap.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/annotations/resource.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/annotations/resource.upb.h +7 -3
- data/src/core/ext/upb-generated/envoy/config/accesslog/v3/accesslog.upb.c +14 -14
- data/src/core/ext/upb-generated/envoy/config/accesslog/v3/accesslog.upb.h +90 -30
- data/src/core/ext/upb-generated/envoy/config/bootstrap/v3/bootstrap.upb.c +21 -19
- data/src/core/ext/upb-generated/envoy/config/bootstrap/v3/bootstrap.upb.h +124 -34
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/circuit_breaker.upb.c +3 -3
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/circuit_breaker.upb.h +18 -6
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.c +23 -22
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.h +153 -48
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/filter.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/filter.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/outlier_detection.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/outlier_detection.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/config/common/matcher/v3/matcher.upb.c +11 -11
- data/src/core/ext/upb-generated/envoy/config/common/matcher/v3/matcher.upb.h +84 -28
- data/src/core/ext/upb-generated/envoy/config/core/v3/address.upb.c +7 -7
- data/src/core/ext/upb-generated/envoy/config/core/v3/address.upb.h +42 -14
- data/src/core/ext/upb-generated/envoy/config/core/v3/backoff.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/config/core/v3/backoff.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.c +25 -23
- data/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.h +156 -48
- data/src/core/ext/upb-generated/envoy/config/core/v3/config_source.upb.c +7 -7
- data/src/core/ext/upb-generated/envoy/config/core/v3/config_source.upb.h +42 -14
- data/src/core/ext/upb-generated/envoy/config/core/v3/event_service_config.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/config/core/v3/event_service_config.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/config/core/v3/extension.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/config/core/v3/extension.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_method_list.upb.c +2 -2
- data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_method_list.upb.h +12 -4
- data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_service.upb.c +12 -12
- data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_service.upb.h +78 -26
- data/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.c +9 -9
- data/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.h +54 -18
- data/src/core/ext/upb-generated/envoy/config/core/v3/http_uri.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/config/core/v3/http_uri.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.c +21 -20
- data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.h +117 -44
- data/src/core/ext/upb-generated/envoy/config/core/v3/proxy_protocol.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/config/core/v3/proxy_protocol.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/config/core/v3/resolver.upb.c +2 -2
- data/src/core/ext/upb-generated/envoy/config/core/v3/resolver.upb.h +12 -4
- data/src/core/ext/upb-generated/envoy/config/core/v3/socket_option.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/config/core/v3/substitution_format_string.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/config/core/v3/substitution_format_string.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/config/core/v3/udp_socket_config.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/config/core/v3/udp_socket_config.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint.upb.c +3 -3
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint.upb.h +18 -6
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint_components.upb.c +5 -5
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint_components.upb.h +36 -12
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/load_report.upb.c +3 -3
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/load_report.upb.h +30 -10
- data/src/core/ext/upb-generated/envoy/config/listener/v3/api_listener.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/config/listener/v3/api_listener.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.c +37 -13
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.h +170 -15
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener_components.upb.c +5 -5
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener_components.upb.h +42 -14
- data/src/core/ext/upb-generated/envoy/config/listener/v3/quic_config.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/config/listener/v3/quic_config.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/config/listener/v3/udp_listener_config.upb.c +7 -4
- data/src/core/ext/upb-generated/envoy/config/listener/v3/udp_listener_config.upb.h +36 -4
- data/src/core/ext/upb-generated/envoy/config/metrics/v3/metrics_service.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/config/metrics/v3/metrics_service.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/config/metrics/v3/stats.upb.c +6 -6
- data/src/core/ext/upb-generated/envoy/config/metrics/v3/stats.upb.h +48 -16
- data/src/core/ext/upb-generated/envoy/config/overload/v3/overload.upb.c +8 -8
- data/src/core/ext/upb-generated/envoy/config/overload/v3/overload.upb.h +54 -18
- data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.c +21 -9
- data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.h +100 -14
- data/src/core/ext/upb-generated/envoy/config/route/v3/route.upb.c +7 -22
- data/src/core/ext/upb-generated/envoy/config/route/v3/route.upb.h +36 -77
- data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.c +121 -76
- data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.h +647 -163
- data/src/core/ext/upb-generated/envoy/config/route/v3/scoped_route.upb.c +3 -3
- data/src/core/ext/upb-generated/envoy/config/route/v3/scoped_route.upb.h +18 -6
- data/src/core/ext/upb-generated/envoy/config/tap/v3/common.upb.c +34 -15
- data/src/core/ext/upb-generated/envoy/config/tap/v3/common.upb.h +161 -22
- data/src/core/ext/upb-generated/envoy/config/trace/v3/datadog.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/config/trace/v3/datadog.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/config/trace/v3/dynamic_ot.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/config/trace/v3/dynamic_ot.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/config/trace/v3/http_tracer.upb.c +2 -2
- data/src/core/ext/upb-generated/envoy/config/trace/v3/http_tracer.upb.h +12 -4
- data/src/core/ext/upb-generated/envoy/config/trace/v3/lightstep.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/config/trace/v3/lightstep.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/config/trace/v3/opencensus.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/config/trace/v3/opencensus.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/config/trace/v3/opentelemetry.upb.c +46 -0
- data/src/core/ext/upb-generated/envoy/config/trace/v3/opentelemetry.upb.h +98 -0
- data/src/core/ext/upb-generated/envoy/config/trace/v3/service.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/config/trace/v3/service.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/config/trace/v3/skywalking.upb.c +2 -2
- data/src/core/ext/upb-generated/envoy/config/trace/v3/skywalking.upb.h +12 -4
- data/src/core/ext/upb-generated/envoy/config/trace/v3/trace.upb.c +1 -0
- data/src/core/ext/upb-generated/envoy/config/trace/v3/trace.upb.h +1 -0
- data/src/core/ext/upb-generated/envoy/config/trace/v3/xray.upb.c +2 -2
- data/src/core/ext/upb-generated/envoy/config/trace/v3/xray.upb.h +12 -4
- data/src/core/ext/upb-generated/envoy/config/trace/v3/zipkin.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/config/trace/v3/zipkin.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/extensions/clusters/aggregate/v3/cluster.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/extensions/clusters/aggregate/v3/cluster.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/extensions/filters/common/fault/v3/fault.upb.c +2 -2
- data/src/core/ext/upb-generated/envoy/extensions/filters/common/fault/v3/fault.upb.h +30 -10
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/fault/v3/fault.upb.c +2 -2
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/fault/v3/fault.upb.h +18 -6
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/rbac/v3/rbac.upb.c +11 -4
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/rbac/v3/rbac.upb.h +58 -4
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/router/v3/router.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/router/v3/router.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.c +35 -27
- data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.h +177 -52
- data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/ring_hash/v3/ring_hash.upb.c +52 -0
- data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/ring_hash/v3/ring_hash.upb.h +168 -0
- data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/wrr_locality/v3/wrr_locality.upb.c +46 -0
- data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/wrr_locality/v3/wrr_locality.upb.h +98 -0
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.c +10 -8
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.h +66 -14
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/secret.upb.c +3 -3
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/secret.upb.h +18 -6
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls.upb.c +5 -5
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls.upb.h +42 -14
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config.upb.c +2 -2
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config.upb.h +12 -4
- data/src/core/ext/upb-generated/envoy/service/discovery/v3/ads.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/service/discovery/v3/ads.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/service/discovery/v3/discovery.upb.c +131 -16
- data/src/core/ext/upb-generated/envoy/service/discovery/v3/discovery.upb.h +632 -12
- data/src/core/ext/upb-generated/envoy/service/load_stats/v3/lrs.upb.c +2 -2
- data/src/core/ext/upb-generated/envoy/service/load_stats/v3/lrs.upb.h +12 -4
- data/src/core/ext/upb-generated/envoy/service/status/v3/csds.upb.c +5 -5
- data/src/core/ext/upb-generated/envoy/service/status/v3/csds.upb.h +30 -10
- data/src/core/ext/upb-generated/envoy/type/http/v3/cookie.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/type/http/v3/cookie.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/type/http/v3/path_transformation.upb.c +4 -4
- data/src/core/ext/upb-generated/envoy/type/http/v3/path_transformation.upb.h +24 -8
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/http_inputs.upb.c +4 -4
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/http_inputs.upb.h +24 -8
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/metadata.upb.c +2 -2
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/metadata.upb.h +12 -4
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/node.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/node.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/number.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/number.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/path.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/path.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/regex.upb.c +3 -3
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/regex.upb.h +18 -6
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/string.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/string.upb.h +12 -4
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/struct.upb.c +2 -2
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/struct.upb.h +12 -4
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/value.upb.c +3 -3
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/value.upb.h +18 -6
- data/src/core/ext/upb-generated/envoy/type/metadata/v3/metadata.upb.c +7 -7
- data/src/core/ext/upb-generated/envoy/type/metadata/v3/metadata.upb.h +42 -14
- data/src/core/ext/upb-generated/envoy/type/tracing/v3/custom_tag.upb.c +5 -5
- data/src/core/ext/upb-generated/envoy/type/tracing/v3/custom_tag.upb.h +30 -10
- data/src/core/ext/upb-generated/envoy/type/v3/hash_policy.upb.c +3 -3
- data/src/core/ext/upb-generated/envoy/type/v3/hash_policy.upb.h +18 -6
- data/src/core/ext/upb-generated/envoy/type/v3/http_status.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/type/v3/http_status.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/type/v3/percent.upb.h +12 -4
- data/src/core/ext/upb-generated/envoy/type/v3/range.upb.c +2 -2
- data/src/core/ext/upb-generated/envoy/type/v3/range.upb.h +18 -6
- data/src/core/ext/upb-generated/envoy/type/v3/ratelimit_strategy.upb.c +63 -0
- data/src/core/ext/upb-generated/envoy/type/v3/ratelimit_strategy.upb.h +202 -0
- data/src/core/ext/upb-generated/envoy/type/v3/semantic_version.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/type/v3/semantic_version.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/type/v3/token_bucket.upb.h +6 -2
- data/src/core/ext/upb-generated/google/api/annotations.upb.h +1 -1
- data/src/core/ext/upb-generated/google/api/expr/v1alpha1/checked.upb.c +11 -11
- data/src/core/ext/upb-generated/google/api/expr/v1alpha1/checked.upb.h +66 -22
- data/src/core/ext/upb-generated/google/api/expr/v1alpha1/syntax.upb.c +9 -9
- data/src/core/ext/upb-generated/google/api/expr/v1alpha1/syntax.upb.h +72 -24
- data/src/core/ext/upb-generated/google/api/http.upb.c +3 -3
- data/src/core/ext/upb-generated/google/api/http.upb.h +18 -6
- data/src/core/ext/upb-generated/google/api/httpbody.upb.c +1 -1
- data/src/core/ext/upb-generated/google/api/httpbody.upb.h +6 -2
- data/src/core/ext/upb-generated/google/protobuf/any.upb.c +1 -1
- data/src/core/ext/upb-generated/google/protobuf/any.upb.h +6 -2
- data/src/core/ext/upb-generated/google/protobuf/descriptor.upb.c +44 -43
- data/src/core/ext/upb-generated/google/protobuf/descriptor.upb.h +177 -55
- data/src/core/ext/upb-generated/google/protobuf/duration.upb.c +1 -1
- data/src/core/ext/upb-generated/google/protobuf/duration.upb.h +6 -2
- data/src/core/ext/upb-generated/google/protobuf/empty.upb.c +1 -1
- data/src/core/ext/upb-generated/google/protobuf/empty.upb.h +6 -2
- data/src/core/ext/upb-generated/google/protobuf/struct.upb.c +2 -2
- data/src/core/ext/upb-generated/google/protobuf/struct.upb.h +18 -6
- data/src/core/ext/upb-generated/google/protobuf/timestamp.upb.c +1 -1
- data/src/core/ext/upb-generated/google/protobuf/timestamp.upb.h +6 -2
- data/src/core/ext/upb-generated/google/protobuf/wrappers.upb.c +6 -6
- data/src/core/ext/upb-generated/google/protobuf/wrappers.upb.h +54 -18
- data/src/core/ext/upb-generated/google/rpc/status.upb.c +1 -1
- data/src/core/ext/upb-generated/google/rpc/status.upb.h +6 -2
- data/src/core/ext/upb-generated/opencensus/proto/trace/v1/trace_config.upb.c +2 -2
- data/src/core/ext/upb-generated/opencensus/proto/trace/v1/trace_config.upb.h +24 -8
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/altscontext.upb.h +6 -2
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/handshaker.upb.c +7 -7
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/handshaker.upb.h +60 -20
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/transport_security_common.upb.c +1 -1
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/transport_security_common.upb.h +12 -4
- data/src/core/ext/upb-generated/src/proto/grpc/health/v1/health.upb.c +2 -2
- data/src/core/ext/upb-generated/src/proto/grpc/health/v1/health.upb.h +12 -4
- data/src/core/ext/upb-generated/src/proto/grpc/lb/v1/load_balancer.upb.c +6 -6
- data/src/core/ext/upb-generated/src/proto/grpc/lb/v1/load_balancer.upb.h +54 -18
- data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls.upb.c +2 -2
- data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls.upb.h +12 -4
- data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls_config.upb.c +7 -7
- data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls_config.upb.h +42 -14
- data/src/core/ext/upb-generated/udpa/annotations/migrate.upb.c +3 -3
- data/src/core/ext/upb-generated/udpa/annotations/migrate.upb.h +23 -11
- data/src/core/ext/upb-generated/udpa/annotations/security.upb.c +1 -1
- data/src/core/ext/upb-generated/udpa/annotations/security.upb.h +7 -3
- data/src/core/ext/upb-generated/udpa/annotations/status.upb.h +7 -3
- data/src/core/ext/upb-generated/udpa/annotations/versioning.upb.c +1 -1
- data/src/core/ext/upb-generated/udpa/annotations/versioning.upb.h +7 -3
- data/src/core/ext/upb-generated/validate/validate.upb.c +22 -22
- data/src/core/ext/upb-generated/validate/validate.upb.h +139 -47
- data/src/core/ext/upb-generated/xds/annotations/v3/migrate.upb.c +3 -3
- data/src/core/ext/upb-generated/xds/annotations/v3/migrate.upb.h +23 -11
- data/src/core/ext/upb-generated/xds/annotations/v3/security.upb.c +1 -1
- data/src/core/ext/upb-generated/xds/annotations/v3/security.upb.h +7 -3
- data/src/core/ext/upb-generated/xds/annotations/v3/status.upb.c +3 -3
- data/src/core/ext/upb-generated/xds/annotations/v3/status.upb.h +27 -11
- data/src/core/ext/upb-generated/xds/annotations/v3/versioning.upb.c +1 -1
- data/src/core/ext/upb-generated/xds/annotations/v3/versioning.upb.h +7 -3
- data/src/core/ext/upb-generated/xds/core/v3/authority.upb.c +1 -1
- data/src/core/ext/upb-generated/xds/core/v3/authority.upb.h +6 -2
- data/src/core/ext/upb-generated/xds/core/v3/collection_entry.upb.c +2 -2
- data/src/core/ext/upb-generated/xds/core/v3/collection_entry.upb.h +12 -4
- data/src/core/ext/upb-generated/xds/core/v3/context_params.upb.c +1 -1
- data/src/core/ext/upb-generated/xds/core/v3/context_params.upb.h +6 -2
- data/src/core/ext/upb-generated/xds/core/v3/extension.upb.c +1 -1
- data/src/core/ext/upb-generated/xds/core/v3/extension.upb.h +6 -2
- data/src/core/ext/upb-generated/xds/core/v3/resource.upb.c +1 -1
- data/src/core/ext/upb-generated/xds/core/v3/resource.upb.h +6 -2
- data/src/core/ext/upb-generated/xds/core/v3/resource_locator.upb.c +1 -1
- data/src/core/ext/upb-generated/xds/core/v3/resource_locator.upb.h +12 -4
- data/src/core/ext/upb-generated/xds/core/v3/resource_name.upb.c +1 -1
- data/src/core/ext/upb-generated/xds/core/v3/resource_name.upb.h +6 -2
- data/src/core/ext/upb-generated/xds/data/orca/v3/orca_load_report.upb.h +6 -2
- data/src/core/ext/upb-generated/xds/service/orca/v3/orca.upb.c +1 -1
- data/src/core/ext/upb-generated/xds/service/orca/v3/orca.upb.h +6 -2
- data/src/core/ext/upb-generated/xds/type/matcher/v3/matcher.upb.c +6 -6
- data/src/core/ext/upb-generated/xds/type/matcher/v3/matcher.upb.h +54 -18
- data/src/core/ext/upb-generated/xds/type/matcher/v3/regex.upb.c +2 -2
- data/src/core/ext/upb-generated/xds/type/matcher/v3/regex.upb.h +12 -4
- data/src/core/ext/upb-generated/xds/type/matcher/v3/string.upb.c +1 -1
- data/src/core/ext/upb-generated/xds/type/matcher/v3/string.upb.h +12 -4
- data/src/core/ext/upb-generated/xds/type/v3/typed_struct.upb.c +1 -1
- data/src/core/ext/upb-generated/xds/type/v3/typed_struct.upb.h +6 -2
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/config_dump.upbdefs.c +67 -274
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/config_dump.upbdefs.h +0 -85
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/config_dump_shared.upbdefs.c +256 -0
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/config_dump_shared.upbdefs.h +115 -0
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/listeners.upbdefs.c +14 -11
- data/src/core/ext/upbdefs-generated/envoy/config/accesslog/v3/accesslog.upbdefs.c +107 -107
- data/src/core/ext/upbdefs-generated/envoy/config/bootstrap/v3/bootstrap.upbdefs.c +191 -187
- data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/cluster.upbdefs.c +156 -154
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/base.upbdefs.c +186 -183
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/protocol.upbdefs.c +136 -134
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/substitution_format_string.upbdefs.c +16 -16
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener.upbdefs.c +162 -139
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener.upbdefs.h +5 -0
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/udp_listener_config.upbdefs.c +39 -31
- data/src/core/ext/upbdefs-generated/envoy/config/rbac/v3/rbac.upbdefs.c +12 -8
- data/src/core/ext/upbdefs-generated/envoy/config/rbac/v3/rbac.upbdefs.h +5 -0
- data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route.upbdefs.c +72 -75
- data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route.upbdefs.h +0 -5
- data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.c +713 -670
- data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.h +10 -0
- data/src/core/ext/upbdefs-generated/envoy/config/tap/v3/common.upbdefs.c +150 -139
- data/src/core/ext/upbdefs-generated/envoy/config/tap/v3/common.upbdefs.h +5 -0
- data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/opentelemetry.upbdefs.c +47 -0
- data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/opentelemetry.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/trace.upbdefs.c +16 -12
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/rbac/v3/rbac.upbdefs.c +46 -25
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.c +477 -466
- data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/common.upbdefs.c +21 -18
- data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/discovery.upbdefs.c +153 -84
- data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/discovery.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/service/status/v3/csds.upbdefs.c +113 -113
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/regex.upbdefs.c +29 -28
- data/src/core/ext/upbdefs-generated/envoy/type/v3/ratelimit_strategy.upbdefs.c +69 -0
- data/src/core/ext/upbdefs-generated/envoy/type/v3/ratelimit_strategy.upbdefs.h +40 -0
- data/src/core/ext/upbdefs-generated/google/protobuf/descriptor.upbdefs.c +92 -90
- data/src/core/ext/xds/certificate_provider_factory.h +6 -1
- data/src/core/ext/xds/certificate_provider_registry.cc +8 -8
- data/src/core/ext/xds/certificate_provider_registry.h +3 -1
- data/src/core/ext/xds/certificate_provider_store.cc +2 -0
- data/src/core/ext/xds/certificate_provider_store.h +9 -0
- data/src/core/ext/xds/file_watcher_certificate_provider_factory.cc +9 -0
- data/src/core/ext/xds/file_watcher_certificate_provider_factory.h +8 -0
- data/src/core/ext/xds/upb_utils.h +0 -22
- data/src/core/ext/xds/xds_api.cc +68 -103
- data/src/core/ext/xds/xds_api.h +30 -32
- data/src/core/ext/xds/xds_bootstrap.cc +69 -69
- data/src/core/ext/xds/xds_bootstrap.h +37 -19
- data/src/core/ext/xds/xds_certificate_provider.cc +12 -3
- data/src/core/ext/xds/xds_certificate_provider.h +25 -1
- data/src/core/ext/xds/xds_channel_stack_modifier.cc +15 -4
- data/src/core/ext/xds/xds_channel_stack_modifier.h +13 -1
- data/src/core/ext/xds/xds_client.cc +583 -1193
- data/src/core/ext/xds/xds_client.h +28 -42
- data/src/core/ext/xds/xds_client_grpc.cc +291 -0
- data/src/core/ext/xds/xds_client_grpc.h +102 -0
- data/src/core/ext/xds/xds_client_stats.cc +3 -4
- data/src/core/ext/xds/xds_client_stats.h +4 -3
- data/src/core/ext/xds/xds_cluster.cc +107 -107
- data/src/core/ext/xds/xds_cluster.h +14 -5
- data/src/core/ext/xds/xds_cluster_specifier_plugin.cc +23 -18
- data/src/core/ext/xds/xds_cluster_specifier_plugin.h +2 -8
- data/src/core/ext/xds/xds_common_types.cc +161 -123
- data/src/core/ext/xds/xds_common_types.h +16 -9
- data/src/core/ext/xds/xds_endpoint.cc +95 -85
- data/src/core/ext/xds/xds_endpoint.h +16 -8
- data/src/core/ext/xds/xds_http_fault_filter.cc +11 -16
- data/src/core/ext/xds/xds_http_fault_filter.h +5 -3
- data/src/core/ext/xds/xds_http_filters.cc +7 -0
- data/src/core/ext/xds/xds_http_filters.h +5 -5
- data/src/core/ext/xds/xds_http_rbac_filter.cc +52 -55
- data/src/core/ext/xds/xds_http_rbac_filter.h +8 -1
- data/src/core/ext/xds/xds_lb_policy_registry.cc +288 -0
- data/src/core/ext/xds/xds_lb_policy_registry.h +72 -0
- data/src/core/ext/xds/xds_listener.cc +355 -307
- data/src/core/ext/xds/xds_listener.h +13 -4
- data/src/core/ext/xds/xds_resource_type.h +16 -5
- data/src/core/ext/xds/xds_resource_type_impl.h +7 -3
- data/src/core/ext/xds/xds_route_config.cc +215 -184
- data/src/core/ext/xds/xds_route_config.h +39 -16
- data/src/core/ext/xds/xds_routing.cc +19 -6
- data/src/core/ext/xds/xds_routing.h +12 -9
- data/src/core/ext/xds/xds_server_config_fetcher.cc +124 -81
- data/src/core/ext/xds/xds_transport.h +86 -0
- data/src/core/ext/xds/xds_transport_grpc.cc +349 -0
- data/src/core/ext/xds/xds_transport_grpc.h +135 -0
- data/src/core/lib/address_utils/parse_address.cc +24 -25
- data/src/core/lib/address_utils/parse_address.h +11 -7
- data/src/core/lib/address_utils/sockaddr_utils.cc +8 -7
- data/src/core/lib/address_utils/sockaddr_utils.h +2 -0
- data/src/core/lib/avl/avl.h +47 -25
- data/src/core/lib/backoff/backoff.cc +1 -1
- data/src/core/lib/backoff/backoff.h +1 -1
- data/src/core/lib/channel/call_tracer.h +4 -4
- data/src/core/lib/channel/channel_args.cc +88 -19
- data/src/core/lib/channel/channel_args.h +114 -62
- data/src/core/lib/channel/channel_args_preconditioning.cc +1 -0
- data/src/core/lib/channel/channel_fwd.h +26 -0
- data/src/core/lib/channel/channel_stack.cc +4 -5
- data/src/core/lib/channel/channel_stack.h +1 -11
- data/src/core/lib/channel/channel_stack_builder.cc +3 -3
- data/src/core/lib/channel/channel_stack_builder.h +4 -7
- data/src/core/lib/channel/channel_stack_builder_impl.cc +3 -5
- data/src/core/lib/channel/channel_stack_builder_impl.h +1 -0
- data/src/core/lib/channel/channelz.cc +28 -37
- data/src/core/lib/channel/channelz.h +11 -3
- data/src/core/lib/channel/channelz_registry.cc +4 -5
- data/src/core/lib/channel/connected_channel.cc +1 -0
- data/src/core/lib/channel/connected_channel.h +1 -0
- data/src/core/lib/channel/promise_based_filter.cc +11 -5
- data/src/core/lib/channel/promise_based_filter.h +2 -1
- data/src/core/lib/compression/compression.cc +6 -1
- data/src/core/lib/compression/compression_internal.cc +3 -6
- data/src/core/lib/compression/compression_internal.h +3 -2
- data/src/core/lib/compression/message_compress.cc +3 -1
- data/src/core/lib/compression/message_compress.h +2 -3
- data/src/core/lib/config/core_configuration.h +48 -35
- data/src/core/lib/debug/stats.cc +15 -18
- data/src/core/lib/debug/stats.h +13 -4
- data/src/core/lib/debug/stats_data.cc +2 -1
- data/src/core/lib/debug/stats_data.h +0 -4
- data/src/core/lib/debug/trace.h +13 -12
- data/src/core/lib/event_engine/default_event_engine.cc +71 -0
- data/src/core/lib/event_engine/{event_engine_factory.h → default_event_engine.h} +6 -10
- data/src/core/lib/event_engine/default_event_engine_factory.cc +20 -3
- data/src/core/lib/event_engine/default_event_engine_factory.h +33 -0
- data/src/core/lib/event_engine/executor/executor.h +38 -0
- data/src/core/lib/event_engine/executor/threaded_executor.cc +36 -0
- data/src/core/lib/event_engine/executor/threaded_executor.h +44 -0
- data/src/core/lib/event_engine/forkable.cc +98 -0
- data/src/core/lib/event_engine/forkable.h +61 -0
- data/src/core/lib/event_engine/poller.h +54 -0
- data/src/core/lib/event_engine/posix_engine/posix_engine.cc +142 -0
- data/src/core/lib/event_engine/{iomgr_engine.h → posix_engine/posix_engine.h} +35 -32
- data/src/core/lib/event_engine/posix_engine/timer.cc +311 -0
- data/src/core/lib/event_engine/posix_engine/timer.h +193 -0
- data/src/core/lib/event_engine/posix_engine/timer_heap.cc +107 -0
- data/src/core/lib/event_engine/posix_engine/timer_heap.h +56 -0
- data/src/core/lib/event_engine/posix_engine/timer_manager.cc +290 -0
- data/src/core/lib/event_engine/posix_engine/timer_manager.h +120 -0
- data/src/core/lib/event_engine/promise.h +78 -0
- data/src/core/lib/event_engine/socket_notifier.h +55 -0
- data/src/core/lib/event_engine/thread_pool.cc +158 -0
- data/src/core/lib/event_engine/thread_pool.h +81 -0
- data/src/core/lib/event_engine/utils.cc +49 -0
- data/src/core/lib/event_engine/utils.h +40 -0
- data/src/core/lib/event_engine/windows/iocp.cc +149 -0
- data/src/core/lib/event_engine/windows/iocp.h +68 -0
- data/src/core/lib/event_engine/windows/win_socket.cc +196 -0
- data/src/core/lib/event_engine/windows/win_socket.h +120 -0
- data/src/core/lib/event_engine/windows/windows_engine.cc +159 -0
- data/src/core/lib/event_engine/windows/windows_engine.h +120 -0
- data/src/core/lib/gpr/time.cc +11 -9
- data/src/core/lib/gpr/time_posix.cc +6 -9
- data/src/core/lib/gpr/time_windows.cc +10 -7
- data/src/core/lib/gpr/useful.h +29 -0
- data/src/core/lib/gprpp/bitset.h +3 -13
- data/src/core/lib/gprpp/debug_location.h +39 -7
- data/src/core/lib/gprpp/manual_constructor.h +0 -68
- data/src/core/lib/gprpp/no_destruct.h +94 -0
- data/src/core/lib/gprpp/ref_counted_ptr.h +0 -1
- data/src/core/lib/gprpp/status_helper.cc +45 -30
- data/src/core/lib/gprpp/table.h +0 -1
- data/src/core/lib/gprpp/time.cc +8 -0
- data/src/core/lib/gprpp/time.h +4 -0
- data/src/core/lib/gprpp/time_averaged_stats.cc +60 -0
- data/src/core/lib/{iomgr → gprpp}/time_averaged_stats.h +29 -22
- data/src/core/lib/{iomgr → gprpp}/work_serializer.cc +34 -18
- data/src/core/lib/{iomgr → gprpp}/work_serializer.h +21 -28
- data/src/core/lib/http/format_request.cc +5 -4
- data/src/core/lib/http/format_request.h +1 -1
- data/src/core/lib/http/httpcli.cc +29 -35
- data/src/core/lib/http/httpcli.h +19 -3
- data/src/core/lib/http/httpcli_security_connector.cc +26 -14
- data/src/core/lib/http/httpcli_ssl_credentials.h +3 -1
- data/src/core/lib/http/parser.cc +6 -7
- data/src/core/lib/http/parser.h +3 -0
- data/src/core/lib/iomgr/call_combiner.cc +2 -28
- data/src/core/lib/iomgr/closure.h +0 -9
- data/src/core/lib/iomgr/combiner.cc +0 -20
- data/src/core/lib/iomgr/endpoint.h +1 -1
- data/src/core/lib/iomgr/endpoint_cfstream.cc +2 -2
- data/src/core/lib/iomgr/endpoint_pair_posix.cc +2 -1
- data/src/core/lib/iomgr/error.cc +6 -777
- data/src/core/lib/iomgr/error.h +6 -147
- data/src/core/lib/iomgr/error_cfstream.cc +0 -5
- data/src/core/lib/iomgr/ev_epoll1_linux.cc +57 -18
- data/src/core/lib/iomgr/ev_epoll1_linux.h +1 -1
- data/src/core/lib/iomgr/ev_poll_posix.cc +94 -61
- data/src/core/lib/iomgr/ev_poll_posix.h +2 -2
- data/src/core/lib/iomgr/ev_posix.cc +54 -92
- data/src/core/lib/iomgr/ev_posix.h +5 -3
- data/src/core/lib/iomgr/exec_ctx.cc +0 -12
- data/src/core/lib/iomgr/executor.cc +0 -10
- data/src/core/lib/iomgr/executor.h +0 -3
- data/src/core/lib/iomgr/fork_posix.cc +1 -1
- data/src/core/lib/iomgr/iomgr.cc +7 -0
- data/src/core/lib/iomgr/iomgr_posix.cc +1 -0
- data/src/core/lib/iomgr/iomgr_posix_cfstream.cc +1 -0
- data/src/core/lib/iomgr/load_file.cc +1 -1
- data/src/core/lib/iomgr/lockfree_event.cc +0 -17
- data/src/core/lib/iomgr/port.h +3 -0
- data/src/core/lib/iomgr/resolve_address.h +29 -6
- data/src/core/lib/iomgr/resolve_address_posix.cc +39 -9
- data/src/core/lib/iomgr/resolve_address_posix.h +19 -5
- data/src/core/lib/iomgr/resolve_address_windows.cc +41 -11
- data/src/core/lib/iomgr/resolve_address_windows.h +19 -5
- data/src/core/lib/iomgr/socket_windows.h +0 -2
- data/src/core/lib/iomgr/tcp_client.cc +12 -7
- data/src/core/lib/iomgr/tcp_client.h +24 -13
- data/src/core/lib/iomgr/tcp_client_cfstream.cc +15 -9
- data/src/core/lib/iomgr/tcp_client_posix.cc +143 -25
- data/src/core/lib/iomgr/tcp_client_posix.h +1 -1
- data/src/core/lib/iomgr/tcp_client_windows.cc +14 -10
- data/src/core/lib/iomgr/tcp_posix.cc +207 -33
- data/src/core/lib/iomgr/tcp_server_posix.cc +7 -7
- data/src/core/lib/iomgr/tcp_server_utils_posix_common.cc +12 -12
- data/src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.cc +2 -2
- data/src/core/lib/iomgr/tcp_server_windows.cc +7 -7
- data/src/core/lib/iomgr/tcp_windows.cc +5 -5
- data/src/core/lib/iomgr/timer_generic.cc +6 -8
- data/src/core/lib/iomgr/unix_sockets_posix.cc +2 -2
- data/src/core/lib/iomgr/wakeup_fd_pipe.cc +2 -2
- data/src/core/lib/iomgr/wakeup_fd_posix.cc +15 -12
- data/src/core/lib/iomgr/wakeup_fd_posix.h +0 -2
- data/src/core/lib/json/json.h +19 -22
- data/src/core/lib/json/json_args.h +34 -0
- data/src/core/lib/json/json_object_loader.cc +233 -0
- data/src/core/lib/json/json_object_loader.h +618 -0
- data/src/core/lib/json/json_reader.cc +86 -62
- data/src/core/lib/json/json_util.cc +8 -36
- data/src/core/{ext/filters/client_channel → lib/load_balancing}/lb_policy.cc +3 -44
- data/src/core/{ext/filters/client_channel → lib/load_balancing}/lb_policy.h +15 -31
- data/src/core/lib/load_balancing/lb_policy_factory.h +49 -0
- data/src/core/{ext/filters/client_channel → lib/load_balancing}/lb_policy_registry.cc +48 -73
- data/src/core/{ext/filters/client_channel → lib/load_balancing}/lb_policy_registry.h +27 -27
- data/src/core/{ext/filters/client_channel → lib/load_balancing}/subchannel_interface.h +16 -24
- data/src/core/lib/matchers/matchers.cc +6 -3
- data/src/core/lib/matchers/matchers.h +2 -0
- data/src/core/lib/promise/activity.cc +0 -1
- data/src/core/lib/promise/activity.h +56 -14
- data/src/core/lib/promise/arena_promise.h +84 -81
- data/src/core/lib/promise/context.h +0 -1
- data/src/core/lib/promise/detail/basic_seq.h +43 -23
- data/src/core/lib/promise/detail/promise_factory.h +0 -1
- data/src/core/lib/promise/loop.h +1 -0
- data/src/core/lib/promise/map.h +0 -1
- data/src/core/lib/promise/promise.h +1 -0
- data/src/core/lib/promise/seq.h +25 -4
- data/src/core/lib/promise/sleep.cc +43 -42
- data/src/core/lib/promise/sleep.h +31 -28
- data/src/core/lib/promise/try_seq.h +26 -6
- data/src/core/lib/resolver/resolver.cc +0 -42
- data/src/core/lib/resolver/resolver.h +5 -12
- data/src/core/lib/resolver/resolver_factory.h +6 -4
- data/src/core/lib/resolver/resolver_registry.cc +3 -10
- data/src/core/lib/resolver/resolver_registry.h +12 -2
- data/src/core/lib/resolver/server_address.cc +19 -15
- data/src/core/lib/resolver/server_address.h +11 -8
- data/src/core/lib/resource_quota/api.cc +1 -1
- data/src/core/lib/resource_quota/arena.cc +21 -1
- data/src/core/lib/resource_quota/arena.h +24 -2
- data/src/core/lib/resource_quota/memory_quota.cc +171 -73
- data/src/core/lib/resource_quota/memory_quota.h +109 -42
- data/src/core/lib/resource_quota/periodic_update.cc +79 -0
- data/src/core/lib/resource_quota/periodic_update.h +71 -0
- data/src/core/lib/security/authorization/authorization_policy_provider.h +7 -0
- data/src/core/lib/security/authorization/authorization_policy_provider_vtable.cc +4 -0
- data/src/core/lib/security/authorization/evaluate_args.cc +17 -8
- data/src/core/lib/security/authorization/evaluate_args.h +6 -3
- data/src/core/lib/security/authorization/grpc_authorization_engine.cc +6 -0
- data/src/core/lib/security/authorization/grpc_authorization_engine.h +7 -0
- data/src/core/lib/security/authorization/grpc_server_authz_filter.cc +12 -1
- data/src/core/lib/security/authorization/grpc_server_authz_filter.h +13 -2
- data/src/core/lib/security/authorization/matchers.cc +20 -9
- data/src/core/lib/security/authorization/matchers.h +7 -0
- data/src/core/lib/security/authorization/rbac_policy.cc +4 -0
- data/src/core/lib/security/authorization/rbac_policy.h +7 -0
- data/src/core/lib/security/context/security_context.cc +5 -2
- data/src/core/lib/security/context/security_context.h +14 -2
- data/src/core/lib/security/credentials/alts/alts_credentials.cc +6 -5
- data/src/core/lib/security/credentials/alts/alts_credentials.h +8 -4
- data/src/core/lib/security/credentials/alts/grpc_alts_credentials_client_options.cc +1 -3
- data/src/core/lib/security/credentials/alts/grpc_alts_credentials_server_options.cc +1 -4
- data/src/core/lib/security/credentials/call_creds_util.cc +8 -0
- data/src/core/lib/security/credentials/call_creds_util.h +1 -0
- data/src/core/lib/security/credentials/channel_creds_registry.h +6 -1
- data/src/core/lib/security/credentials/channel_creds_registry_init.cc +10 -0
- data/src/core/lib/security/credentials/composite/composite_credentials.cc +5 -9
- data/src/core/lib/security/credentials/composite/composite_credentials.h +17 -5
- data/src/core/lib/security/credentials/credentials.cc +4 -8
- data/src/core/lib/security/credentials/credentials.h +26 -20
- data/src/core/lib/security/credentials/external/aws_external_account_credentials.cc +45 -20
- data/src/core/lib/security/credentials/external/aws_external_account_credentials.h +10 -0
- data/src/core/lib/security/credentials/external/aws_request_signer.cc +9 -0
- data/src/core/lib/security/credentials/external/external_account_credentials.cc +53 -29
- data/src/core/lib/security/credentials/external/external_account_credentials.h +11 -0
- data/src/core/lib/security/credentials/external/file_external_account_credentials.cc +15 -8
- data/src/core/lib/security/credentials/external/file_external_account_credentials.h +6 -0
- data/src/core/lib/security/credentials/external/url_external_account_credentials.cc +23 -9
- data/src/core/lib/security/credentials/external/url_external_account_credentials.h +10 -0
- data/src/core/lib/security/credentials/fake/fake_credentials.cc +10 -17
- data/src/core/lib/security/credentials/fake/fake_credentials.h +13 -5
- data/src/core/lib/security/credentials/google_default/credentials_generic.cc +1 -0
- data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +55 -35
- data/src/core/lib/security/credentials/google_default/google_default_credentials.h +10 -3
- data/src/core/lib/security/credentials/iam/iam_credentials.cc +8 -3
- data/src/core/lib/security/credentials/iam/iam_credentials.h +10 -0
- data/src/core/lib/security/credentials/insecure/insecure_credentials.cc +7 -3
- data/src/core/lib/security/credentials/insecure/insecure_credentials.h +7 -3
- data/src/core/lib/security/credentials/jwt/json_token.cc +17 -5
- data/src/core/lib/security/credentials/jwt/json_token.h +2 -2
- data/src/core/lib/security/credentials/jwt/jwt_credentials.cc +12 -10
- data/src/core/lib/security/credentials/jwt/jwt_credentials.h +14 -0
- data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +37 -14
- data/src/core/lib/security/credentials/jwt/jwt_verifier.h +4 -2
- data/src/core/lib/security/credentials/local/local_credentials.cc +7 -7
- data/src/core/lib/security/credentials/local/local_credentials.h +9 -3
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +41 -29
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.h +20 -0
- data/src/core/lib/security/credentials/plugin/plugin_credentials.cc +7 -7
- data/src/core/lib/security/credentials/plugin/plugin_credentials.h +24 -0
- data/src/core/lib/security/credentials/ssl/ssl_credentials.cc +18 -21
- data/src/core/lib/security/credentials/ssl/ssl_credentials.h +15 -3
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.cc +6 -6
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.h +9 -3
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.cc +29 -10
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.h +15 -4
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_verifier.cc +9 -2
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_verifier.h +6 -7
- data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.cc +4 -5
- data/src/core/lib/security/credentials/tls/tls_credentials.cc +19 -26
- data/src/core/lib/security/credentials/tls/tls_credentials.h +7 -4
- data/src/core/lib/security/credentials/tls/tls_utils.cc +2 -0
- data/src/core/lib/security/credentials/tls/tls_utils.h +1 -1
- data/src/core/lib/security/credentials/xds/xds_credentials.cc +21 -31
- data/src/core/lib/security/credentials/xds/xds_credentials.h +16 -2
- data/src/core/lib/security/security_connector/alts/alts_security_connector.cc +30 -18
- data/src/core/lib/security/security_connector/alts/alts_security_connector.h +6 -3
- data/src/core/lib/security/security_connector/fake/fake_security_connector.cc +42 -38
- data/src/core/lib/security/security_connector/fake/fake_security_connector.h +3 -3
- data/src/core/lib/security/security_connector/insecure/insecure_security_connector.cc +13 -4
- data/src/core/lib/security/security_connector/insecure/insecure_security_connector.h +21 -5
- data/src/core/lib/security/security_connector/load_system_roots_fallback.cc +5 -3
- data/src/core/lib/security/security_connector/{load_system_roots_linux.cc → load_system_roots_supported.cc} +27 -19
- data/src/core/lib/security/security_connector/{load_system_roots_linux.h → load_system_roots_supported.h} +5 -5
- data/src/core/lib/security/security_connector/local/local_security_connector.cc +34 -13
- data/src/core/lib/security/security_connector/local/local_security_connector.h +7 -3
- data/src/core/lib/security/security_connector/security_connector.cc +20 -18
- data/src/core/lib/security/security_connector/security_connector.h +23 -9
- data/src/core/lib/security/security_connector/ssl/ssl_security_connector.cc +21 -8
- data/src/core/lib/security/security_connector/ssl/ssl_security_connector.h +4 -2
- data/src/core/lib/security/security_connector/ssl_utils.cc +12 -2
- data/src/core/lib/security/security_connector/ssl_utils.h +10 -7
- data/src/core/lib/security/security_connector/ssl_utils_config.h +1 -1
- data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +25 -17
- data/src/core/lib/security/security_connector/tls/tls_security_connector.h +27 -7
- data/src/core/lib/security/transport/auth_filters.h +8 -1
- data/src/core/lib/security/transport/client_auth_filter.cc +19 -11
- data/src/core/lib/security/transport/secure_endpoint.cc +63 -13
- data/src/core/lib/security/transport/secure_endpoint.h +4 -3
- data/src/core/lib/security/transport/security_handshaker.cc +70 -49
- data/src/core/lib/security/transport/security_handshaker.h +6 -1
- data/src/core/lib/security/transport/server_auth_filter.cc +26 -4
- data/src/core/lib/security/util/json_util.cc +3 -2
- data/src/core/lib/security/util/json_util.h +0 -2
- data/src/core/lib/service_config/service_config.h +11 -0
- data/src/core/lib/service_config/service_config_call_data.h +2 -1
- data/src/core/lib/service_config/service_config_impl.cc +98 -97
- data/src/core/lib/service_config/service_config_impl.h +12 -16
- data/src/core/lib/service_config/service_config_parser.cc +26 -29
- data/src/core/lib/service_config/service_config_parser.h +10 -22
- data/src/core/lib/slice/percent_encoding.cc +4 -13
- data/src/core/lib/slice/slice.cc +10 -4
- data/src/core/lib/slice/slice_buffer.cc +30 -1
- data/src/core/lib/slice/slice_buffer.h +37 -6
- data/src/core/lib/slice/slice_string_helpers.cc +0 -20
- data/src/core/lib/slice/slice_string_helpers.h +0 -4
- data/src/core/lib/surface/call.cc +61 -117
- data/src/core/lib/surface/call.h +5 -1
- data/src/core/lib/surface/channel.cc +6 -6
- data/src/core/lib/surface/channel.h +3 -1
- data/src/core/lib/surface/channel_ping.cc +1 -1
- data/src/core/lib/surface/completion_queue.cc +15 -16
- data/src/core/lib/surface/completion_queue.h +2 -4
- data/src/core/lib/surface/init.cc +2 -7
- data/src/core/lib/surface/lame_client.cc +3 -4
- data/src/core/lib/surface/lame_client.h +2 -2
- data/src/core/lib/surface/server.cc +21 -20
- data/src/core/lib/surface/server.h +11 -8
- data/src/core/lib/surface/validate_metadata.cc +5 -15
- data/src/core/lib/surface/version.cc +2 -2
- data/src/core/lib/transport/connectivity_state.cc +0 -1
- data/src/core/lib/transport/connectivity_state.h +1 -1
- data/src/core/lib/transport/error_utils.cc +9 -39
- data/src/core/lib/transport/handshaker.cc +10 -12
- data/src/core/lib/transport/handshaker.h +4 -5
- data/src/core/lib/transport/handshaker_factory.h +2 -3
- data/src/core/lib/transport/handshaker_registry.cc +2 -1
- data/src/core/lib/transport/handshaker_registry.h +2 -4
- data/src/core/lib/transport/http_connect_handshaker.cc +20 -20
- data/src/core/lib/transport/metadata_batch.cc +5 -0
- data/src/core/lib/transport/metadata_batch.h +52 -7
- data/src/core/lib/transport/parsed_metadata.h +0 -1
- data/src/core/lib/transport/tcp_connect_handshaker.cc +14 -20
- data/src/core/lib/transport/transport.cc +0 -3
- data/src/core/lib/transport/transport.h +20 -21
- data/src/core/lib/transport/transport_fwd.h +20 -0
- data/src/core/lib/transport/transport_impl.h +1 -0
- data/src/core/lib/transport/transport_op_string.cc +9 -9
- data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +40 -21
- data/src/core/tsi/alts/handshaker/alts_handshaker_client.h +1 -1
- data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +15 -8
- data/src/core/tsi/alts/handshaker/alts_tsi_handshaker_private.h +1 -1
- data/src/core/tsi/alts/zero_copy_frame_protector/alts_zero_copy_grpc_protector.cc +9 -1
- data/src/core/tsi/fake_transport_security.cc +66 -31
- data/src/core/tsi/fake_transport_security.h +6 -0
- data/src/core/tsi/local_transport_security.cc +9 -5
- data/src/core/tsi/ssl/session_cache/ssl_session_cache.h +10 -1
- data/src/core/tsi/ssl_transport_security.cc +48 -24
- data/src/core/tsi/transport_security.cc +18 -6
- data/src/core/tsi/transport_security.h +2 -1
- data/src/core/tsi/transport_security_grpc.cc +3 -2
- data/src/core/tsi/transport_security_grpc.h +5 -2
- data/src/core/tsi/transport_security_interface.h +17 -5
- data/src/ruby/ext/grpc/ext-export-truffleruby.clang +2 -0
- data/src/ruby/ext/grpc/ext-export-truffleruby.gcc +7 -0
- data/src/ruby/ext/grpc/ext-export.clang +1 -0
- data/src/ruby/ext/grpc/ext-export.gcc +1 -0
- data/src/ruby/ext/grpc/extconf.rb +51 -18
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +1 -1
- data/src/ruby/ext/grpc/rb_loader.c +6 -2
- data/src/ruby/lib/grpc/2.5/grpc_c.so +0 -0
- data/src/ruby/lib/grpc/2.6/grpc_c.so +0 -0
- data/src/ruby/lib/grpc/2.7/grpc_c.so +0 -0
- data/src/ruby/lib/grpc/3.0/grpc_c.so +0 -0
- data/src/ruby/lib/grpc/3.1/grpc_c.so +0 -0
- data/src/ruby/lib/grpc/errors.rb +1 -1
- data/src/ruby/lib/grpc/grpc_c.so +0 -0
- data/src/ruby/lib/grpc/version.rb +1 -1
- data/src/ruby/pb/src/proto/grpc/testing/messages_pb.rb +4 -0
- data/src/ruby/spec/generic/client_stub_spec.rb +23 -23
- data/third_party/abseil-cpp/absl/algorithm/container.h +1 -1
- data/third_party/abseil-cpp/absl/base/attributes.h +49 -22
- data/third_party/abseil-cpp/absl/base/casts.h +61 -68
- data/third_party/abseil-cpp/absl/base/config.h +182 -41
- data/third_party/abseil-cpp/absl/base/internal/cycleclock.cc +12 -42
- data/third_party/abseil-cpp/absl/base/internal/cycleclock.h +67 -2
- data/third_party/abseil-cpp/absl/base/internal/direct_mmap.h +3 -3
- data/third_party/abseil-cpp/absl/base/internal/endian.h +17 -62
- data/third_party/abseil-cpp/absl/base/internal/fast_type_id.h +2 -0
- data/third_party/abseil-cpp/absl/base/internal/invoke.h +54 -0
- data/third_party/abseil-cpp/absl/base/internal/prefetch.h +138 -0
- data/third_party/abseil-cpp/absl/base/internal/raw_logging.cc +29 -22
- data/third_party/abseil-cpp/absl/base/internal/raw_logging.h +13 -12
- data/third_party/abseil-cpp/absl/base/internal/spinlock.cc +3 -0
- data/third_party/abseil-cpp/absl/base/internal/spinlock.h +8 -0
- data/third_party/abseil-cpp/absl/base/internal/spinlock_linux.inc +2 -5
- data/third_party/abseil-cpp/absl/base/internal/strerror.cc +88 -0
- data/third_party/abseil-cpp/absl/base/internal/strerror.h +39 -0
- data/third_party/abseil-cpp/absl/base/internal/sysinfo.cc +0 -1
- data/third_party/abseil-cpp/absl/base/internal/thread_identity.cc +2 -1
- data/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock.cc +6 -7
- data/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock.h +12 -3
- data/third_party/abseil-cpp/absl/base/log_severity.cc +28 -0
- data/third_party/abseil-cpp/absl/base/log_severity.h +51 -0
- data/third_party/abseil-cpp/absl/base/optimization.h +19 -11
- data/third_party/abseil-cpp/absl/base/options.h +1 -1
- data/third_party/abseil-cpp/absl/base/thread_annotations.h +2 -2
- data/third_party/abseil-cpp/absl/container/fixed_array.h +2 -0
- data/third_party/abseil-cpp/absl/container/flat_hash_map.h +11 -4
- data/third_party/abseil-cpp/absl/container/flat_hash_set.h +15 -9
- data/third_party/abseil-cpp/absl/container/inlined_vector.h +20 -9
- data/third_party/abseil-cpp/absl/container/internal/common.h +6 -5
- data/third_party/abseil-cpp/absl/container/internal/container_memory.h +10 -28
- data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.cc +68 -20
- data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.h +29 -11
- data/third_party/abseil-cpp/absl/container/internal/inlined_vector.h +59 -38
- data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.cc +4 -0
- data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.h +515 -184
- data/third_party/abseil-cpp/absl/debugging/internal/address_is_readable.cc +45 -88
- data/third_party/abseil-cpp/absl/debugging/internal/elf_mem_image.cc +4 -0
- data/third_party/abseil-cpp/absl/debugging/internal/elf_mem_image.h +3 -2
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_aarch64-inl.inc +8 -3
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_arm-inl.inc +8 -3
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_config.h +2 -1
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_powerpc-inl.inc +8 -3
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_riscv-inl.inc +20 -18
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_x86-inl.inc +8 -3
- data/third_party/abseil-cpp/absl/debugging/internal/vdso_support.cc +15 -2
- data/third_party/abseil-cpp/absl/debugging/symbolize.cc +6 -1
- data/third_party/abseil-cpp/absl/debugging/symbolize_elf.inc +46 -7
- data/third_party/abseil-cpp/absl/functional/any_invocable.h +313 -0
- data/third_party/abseil-cpp/absl/functional/bind_front.h +10 -1
- data/third_party/abseil-cpp/absl/functional/function_ref.h +2 -1
- data/third_party/abseil-cpp/absl/functional/internal/any_invocable.h +857 -0
- data/third_party/abseil-cpp/absl/hash/hash.h +82 -8
- data/third_party/abseil-cpp/absl/hash/internal/hash.h +218 -23
- data/third_party/abseil-cpp/absl/numeric/bits.h +2 -1
- data/third_party/abseil-cpp/absl/numeric/int128.cc +4 -2
- data/third_party/abseil-cpp/absl/numeric/int128.h +2 -2
- data/third_party/abseil-cpp/absl/profiling/internal/sample_recorder.h +21 -6
- data/third_party/abseil-cpp/absl/random/bernoulli_distribution.h +4 -4
- data/third_party/abseil-cpp/absl/random/distributions.h +3 -3
- data/third_party/abseil-cpp/absl/random/internal/distribution_caller.h +3 -0
- data/third_party/abseil-cpp/absl/random/internal/fast_uniform_bits.h +2 -1
- data/third_party/abseil-cpp/absl/random/internal/generate_real.h +2 -2
- data/third_party/abseil-cpp/absl/random/internal/nonsecure_base.h +59 -48
- data/third_party/abseil-cpp/absl/random/internal/pcg_engine.h +1 -1
- data/third_party/abseil-cpp/absl/random/internal/randen.h +5 -11
- data/third_party/abseil-cpp/absl/random/internal/randen_detect.cc +6 -2
- data/third_party/abseil-cpp/absl/random/internal/randen_engine.h +48 -23
- data/third_party/abseil-cpp/absl/random/internal/salted_seed_seq.h +24 -26
- data/third_party/abseil-cpp/absl/random/internal/traits.h +53 -5
- data/third_party/abseil-cpp/absl/random/internal/uniform_helper.h +5 -5
- data/third_party/abseil-cpp/absl/random/internal/wide_multiply.h +33 -48
- data/third_party/abseil-cpp/absl/random/log_uniform_int_distribution.h +9 -10
- data/third_party/abseil-cpp/absl/random/poisson_distribution.h +7 -4
- data/third_party/abseil-cpp/absl/random/seed_sequences.h +1 -0
- data/third_party/abseil-cpp/absl/random/uniform_int_distribution.h +2 -2
- data/third_party/abseil-cpp/absl/random/uniform_real_distribution.h +1 -1
- data/third_party/abseil-cpp/absl/random/zipf_distribution.h +4 -3
- data/third_party/abseil-cpp/absl/status/internal/status_internal.h +17 -0
- data/third_party/abseil-cpp/absl/status/status.cc +174 -2
- data/third_party/abseil-cpp/absl/status/status.h +22 -12
- data/third_party/abseil-cpp/absl/status/statusor.h +9 -3
- data/third_party/abseil-cpp/absl/strings/ascii.h +4 -4
- data/third_party/abseil-cpp/absl/strings/cord.cc +194 -913
- data/third_party/abseil-cpp/absl/strings/cord.h +202 -81
- data/third_party/abseil-cpp/absl/strings/cord_analysis.cc +188 -0
- data/third_party/abseil-cpp/absl/strings/cord_analysis.h +44 -0
- data/third_party/abseil-cpp/absl/strings/cord_buffer.cc +30 -0
- data/third_party/abseil-cpp/absl/strings/cord_buffer.h +572 -0
- data/third_party/abseil-cpp/absl/strings/internal/cord_data_edge.h +63 -0
- data/third_party/abseil-cpp/absl/strings/internal/cord_internal.cc +20 -32
- data/third_party/abseil-cpp/absl/strings/internal/cord_internal.h +123 -88
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree.cc +149 -49
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree.h +44 -59
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree_navigator.cc +3 -1
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree_navigator.h +4 -2
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree_reader.cc +3 -2
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree_reader.h +5 -4
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_consume.cc +7 -74
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_crc.cc +54 -0
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_crc.h +102 -0
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_flat.h +58 -17
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_ring.cc +13 -11
- data/third_party/abseil-cpp/absl/strings/internal/cordz_info.cc +11 -38
- data/third_party/abseil-cpp/absl/strings/internal/cordz_statistics.h +1 -0
- data/third_party/abseil-cpp/absl/strings/internal/cordz_update_tracker.h +4 -2
- data/third_party/abseil-cpp/absl/strings/internal/escaping.cc +6 -5
- data/third_party/abseil-cpp/absl/strings/internal/ostringstream.cc +1 -1
- data/third_party/abseil-cpp/absl/strings/internal/str_format/arg.cc +1 -1
- data/third_party/abseil-cpp/absl/strings/internal/str_format/arg.h +1 -1
- data/third_party/abseil-cpp/absl/strings/internal/str_format/bind.h +38 -7
- data/third_party/abseil-cpp/absl/strings/internal/str_format/checker.h +7 -2
- data/third_party/abseil-cpp/absl/strings/internal/str_format/extension.cc +4 -5
- data/third_party/abseil-cpp/absl/strings/internal/str_format/extension.h +5 -2
- data/third_party/abseil-cpp/absl/strings/internal/str_format/output.h +2 -1
- data/third_party/abseil-cpp/absl/strings/internal/str_format/parser.h +4 -2
- data/third_party/abseil-cpp/absl/strings/internal/str_join_internal.h +9 -6
- data/third_party/abseil-cpp/absl/strings/internal/string_constant.h +10 -2
- data/third_party/abseil-cpp/absl/strings/internal/utf8.cc +9 -9
- data/third_party/abseil-cpp/absl/strings/numbers.cc +8 -8
- data/third_party/abseil-cpp/absl/strings/numbers.h +26 -23
- data/third_party/abseil-cpp/absl/strings/str_cat.h +20 -13
- data/third_party/abseil-cpp/absl/strings/str_join.h +9 -15
- data/third_party/abseil-cpp/absl/strings/str_split.h +1 -2
- data/third_party/abseil-cpp/absl/strings/string_view.cc +2 -13
- data/third_party/abseil-cpp/absl/strings/string_view.h +3 -2
- data/third_party/abseil-cpp/absl/strings/strip.h +8 -6
- data/third_party/abseil-cpp/absl/strings/substitute.h +10 -2
- data/third_party/abseil-cpp/absl/synchronization/internal/create_thread_identity.cc +9 -6
- data/third_party/abseil-cpp/absl/synchronization/internal/create_thread_identity.h +0 -4
- data/third_party/abseil-cpp/absl/synchronization/internal/per_thread_sem.cc +0 -4
- data/third_party/abseil-cpp/absl/synchronization/internal/per_thread_sem.h +1 -6
- data/third_party/abseil-cpp/absl/synchronization/internal/waiter.cc +0 -25
- data/third_party/abseil-cpp/absl/synchronization/internal/waiter.h +10 -4
- data/third_party/abseil-cpp/absl/synchronization/mutex.cc +75 -40
- data/third_party/abseil-cpp/absl/synchronization/mutex.h +17 -9
- data/third_party/abseil-cpp/absl/synchronization/notification.h +3 -2
- data/third_party/abseil-cpp/absl/time/duration.cc +5 -4
- data/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/civil_time_detail.h +11 -7
- data/third_party/abseil-cpp/absl/time/time.h +16 -12
- data/third_party/abseil-cpp/absl/types/internal/optional.h +8 -0
- data/third_party/abseil-cpp/absl/types/internal/variant.h +3 -3
- data/third_party/abseil-cpp/absl/types/optional.h +17 -14
- data/third_party/abseil-cpp/absl/types/span.h +2 -1
- data/third_party/upb/third_party/utf8_range/utf8_range.h +1 -1
- data/third_party/upb/upb/arena.c +277 -0
- data/third_party/upb/upb/arena.h +225 -0
- data/third_party/upb/upb/array.c +114 -0
- data/third_party/upb/upb/array.h +83 -0
- data/third_party/upb/upb/collections.h +36 -0
- data/third_party/upb/upb/decode.c +161 -65
- data/third_party/upb/upb/decode.h +1 -0
- data/third_party/upb/upb/decode_fast.c +1 -1
- data/third_party/upb/upb/def.c +10 -2
- data/third_party/upb/upb/def.h +8 -1
- data/third_party/upb/upb/def.hpp +7 -4
- data/third_party/upb/upb/encode.c +29 -20
- data/third_party/upb/upb/encode.h +16 -6
- data/third_party/upb/upb/extension_registry.c +93 -0
- data/third_party/upb/upb/extension_registry.h +84 -0
- data/third_party/upb/upb/{decode_internal.h → internal/decode.h} +5 -5
- data/third_party/upb/upb/internal/table.h +385 -0
- data/third_party/upb/upb/{upb_internal.h → internal/upb.h} +3 -3
- data/third_party/upb/upb/internal/vsnprintf_compat.h +52 -0
- data/third_party/upb/upb/json_decode.c +1512 -0
- data/third_party/upb/upb/json_decode.h +47 -0
- data/third_party/upb/upb/json_encode.c +7 -3
- data/third_party/upb/upb/json_encode.h +6 -3
- data/third_party/upb/upb/map.c +108 -0
- data/third_party/upb/upb/map.h +117 -0
- data/third_party/upb/upb/message_value.h +66 -0
- data/third_party/upb/upb/mini_table.c +1147 -0
- data/third_party/upb/upb/mini_table.h +189 -0
- data/third_party/upb/upb/mini_table.hpp +112 -0
- data/third_party/upb/upb/msg.c +2 -62
- data/third_party/upb/upb/msg.h +2 -45
- data/third_party/upb/upb/msg_internal.h +28 -22
- data/third_party/upb/upb/port_def.inc +2 -1
- data/third_party/upb/upb/port_undef.inc +1 -0
- data/third_party/upb/upb/reflection.c +2 -159
- data/third_party/upb/upb/reflection.h +2 -112
- data/third_party/upb/upb/status.c +86 -0
- data/third_party/upb/upb/status.h +66 -0
- data/third_party/upb/upb/table.c +2 -2
- data/third_party/upb/upb/table_internal.h +3 -352
- data/third_party/upb/upb/text_encode.c +3 -2
- data/third_party/upb/upb/upb.c +4 -290
- data/third_party/upb/upb/upb.h +7 -196
- metadata +113 -37
- data/src/core/ext/filters/client_channel/lb_policy_factory.h +0 -50
- data/src/core/lib/event_engine/event_engine.cc +0 -62
- data/src/core/lib/event_engine/iomgr_engine.cc +0 -206
- data/src/core/lib/iomgr/error_internal.h +0 -66
- data/src/core/lib/iomgr/executor/mpmcqueue.cc +0 -182
- data/src/core/lib/iomgr/executor/mpmcqueue.h +0 -171
- data/src/core/lib/iomgr/executor/threadpool.cc +0 -136
- data/src/core/lib/iomgr/executor/threadpool.h +0 -150
- data/src/core/lib/iomgr/time_averaged_stats.cc +0 -64
- data/src/core/lib/promise/detail/switch.h +0 -1455
- data/src/core/lib/slice/slice_split.cc +0 -103
- data/src/core/lib/slice/slice_split.h +0 -36
- data/src/core/lib/transport/byte_stream.cc +0 -165
- data/src/core/lib/transport/byte_stream.h +0 -170
- data/third_party/abseil-cpp/absl/cleanup/cleanup.h +0 -140
- data/third_party/abseil-cpp/absl/cleanup/internal/cleanup.h +0 -100
- data/third_party/abseil-cpp/absl/container/internal/have_sse.h +0 -50
@@ -18,10 +18,16 @@
|
|
18
18
|
|
19
19
|
#include "src/core/ext/xds/xds_listener.h"
|
20
20
|
|
21
|
+
#include <stdint.h>
|
22
|
+
|
23
|
+
#include <set>
|
24
|
+
#include <utility>
|
25
|
+
|
26
|
+
#include "absl/memory/memory.h"
|
27
|
+
#include "absl/status/status.h"
|
21
28
|
#include "absl/strings/str_cat.h"
|
22
29
|
#include "absl/strings/str_format.h"
|
23
30
|
#include "absl/strings/str_join.h"
|
24
|
-
#include "absl/strings/str_split.h"
|
25
31
|
#include "envoy/config/core/v3/address.upb.h"
|
26
32
|
#include "envoy/config/core/v3/base.upb.h"
|
27
33
|
#include "envoy/config/core/v3/config_source.upb.h"
|
@@ -30,18 +36,29 @@
|
|
30
36
|
#include "envoy/config/listener/v3/listener.upb.h"
|
31
37
|
#include "envoy/config/listener/v3/listener.upbdefs.h"
|
32
38
|
#include "envoy/config/listener/v3/listener_components.upb.h"
|
39
|
+
#include "envoy/config/route/v3/route.upb.h"
|
33
40
|
#include "envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.h"
|
34
41
|
#include "envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.h"
|
42
|
+
#include "envoy/extensions/transport_sockets/tls/v3/tls.upb.h"
|
43
|
+
#include "google/protobuf/any.upb.h"
|
44
|
+
#include "google/protobuf/duration.upb.h"
|
35
45
|
#include "google/protobuf/wrappers.upb.h"
|
36
46
|
#include "upb/text_encode.h"
|
37
47
|
#include "upb/upb.h"
|
38
|
-
#include "upb/upb.hpp"
|
39
48
|
|
49
|
+
#include <grpc/support/log.h>
|
50
|
+
|
51
|
+
#include "src/core/ext/xds/upb_utils.h"
|
40
52
|
#include "src/core/ext/xds/xds_common_types.h"
|
53
|
+
#include "src/core/ext/xds/xds_resource_type.h"
|
41
54
|
#include "src/core/lib/address_utils/parse_address.h"
|
42
55
|
#include "src/core/lib/address_utils/sockaddr_utils.h"
|
56
|
+
#include "src/core/lib/debug/trace.h"
|
43
57
|
#include "src/core/lib/gprpp/host_port.h"
|
58
|
+
#include "src/core/lib/gprpp/status_helper.h"
|
59
|
+
#include "src/core/lib/iomgr/error.h"
|
44
60
|
#include "src/core/lib/iomgr/sockaddr.h"
|
61
|
+
#include "src/core/lib/json/json.h"
|
45
62
|
|
46
63
|
namespace grpc_core {
|
47
64
|
|
@@ -64,7 +81,7 @@ bool XdsListenerResource::DownstreamTlsContext::Empty() const {
|
|
64
81
|
//
|
65
82
|
|
66
83
|
std::string XdsListenerResource::HttpConnectionManager::ToString() const {
|
67
|
-
|
84
|
+
std::vector<std::string> contents;
|
68
85
|
contents.push_back(absl::StrFormat(
|
69
86
|
"route_config_name=%s",
|
70
87
|
!route_config_name.empty() ? route_config_name.c_str() : "<inlined>"));
|
@@ -140,7 +157,7 @@ struct FilterChain {
|
|
140
157
|
};
|
141
158
|
|
142
159
|
std::string FilterChain::FilterChainMatch::ToString() const {
|
143
|
-
|
160
|
+
std::vector<std::string> contents;
|
144
161
|
if (destination_port != 0) {
|
145
162
|
contents.push_back(absl::StrCat("destination_port=", destination_port));
|
146
163
|
}
|
@@ -229,7 +246,7 @@ std::string XdsListenerResource::FilterChainMap::ToString() const {
|
|
229
246
|
//
|
230
247
|
|
231
248
|
std::string XdsListenerResource::ToString() const {
|
232
|
-
|
249
|
+
std::vector<std::string> contents;
|
233
250
|
if (type == ListenerType::kTcpListener) {
|
234
251
|
contents.push_back(absl::StrCat("address=", address));
|
235
252
|
contents.push_back(
|
@@ -252,7 +269,7 @@ std::string XdsListenerResource::ToString() const {
|
|
252
269
|
namespace {
|
253
270
|
|
254
271
|
void MaybeLogHttpConnectionManager(
|
255
|
-
const
|
272
|
+
const XdsResourceType::DecodeContext& context,
|
256
273
|
const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager*
|
257
274
|
http_connection_manager_config) {
|
258
275
|
if (GRPC_TRACE_FLAG_ENABLED(*context.tracer) &&
|
@@ -268,25 +285,25 @@ void MaybeLogHttpConnectionManager(
|
|
268
285
|
}
|
269
286
|
}
|
270
287
|
|
271
|
-
|
272
|
-
|
288
|
+
absl::StatusOr<XdsListenerResource::HttpConnectionManager>
|
289
|
+
HttpConnectionManagerParse(
|
290
|
+
bool is_client, const XdsResourceType::DecodeContext& context,
|
273
291
|
const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager*
|
274
292
|
http_connection_manager_proto,
|
275
|
-
bool is_v2
|
276
|
-
XdsListenerResource::HttpConnectionManager* http_connection_manager) {
|
293
|
+
bool is_v2) {
|
277
294
|
MaybeLogHttpConnectionManager(context, http_connection_manager_proto);
|
295
|
+
std::vector<std::string> errors;
|
296
|
+
XdsListenerResource::HttpConnectionManager http_connection_manager;
|
278
297
|
// NACK a non-zero `xff_num_trusted_hops` and a `non-empty
|
279
298
|
// original_ip_detection_extensions` as mentioned in
|
280
299
|
// https://github.com/grpc/proposal/blob/master/A41-xds-rbac.md
|
281
300
|
if (envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_xff_num_trusted_hops(
|
282
301
|
http_connection_manager_proto) != 0) {
|
283
|
-
|
284
|
-
"'xff_num_trusted_hops' must be zero");
|
302
|
+
errors.emplace_back("'xff_num_trusted_hops' must be zero");
|
285
303
|
}
|
286
304
|
if (envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_has_original_ip_detection_extensions(
|
287
305
|
http_connection_manager_proto)) {
|
288
|
-
|
289
|
-
"'original_ip_detection_extensions' must be empty");
|
306
|
+
errors.emplace_back("'original_ip_detection_extensions' must be empty");
|
290
307
|
}
|
291
308
|
// Obtain max_stream_duration from Http Protocol Options.
|
292
309
|
const envoy_config_core_v3_HttpProtocolOptions* options =
|
@@ -296,7 +313,7 @@ grpc_error_handle HttpConnectionManagerParse(
|
|
296
313
|
const google_protobuf_Duration* duration =
|
297
314
|
envoy_config_core_v3_HttpProtocolOptions_max_stream_duration(options);
|
298
315
|
if (duration != nullptr) {
|
299
|
-
http_connection_manager
|
316
|
+
http_connection_manager.http_max_stream_duration =
|
300
317
|
ParseDuration(duration);
|
301
318
|
}
|
302
319
|
}
|
@@ -313,12 +330,12 @@ grpc_error_handle HttpConnectionManagerParse(
|
|
313
330
|
envoy_extensions_filters_network_http_connection_manager_v3_HttpFilter_name(
|
314
331
|
http_filter));
|
315
332
|
if (name.empty()) {
|
316
|
-
|
317
|
-
|
333
|
+
errors.emplace_back(absl::StrCat("empty filter name at index ", i));
|
334
|
+
continue;
|
318
335
|
}
|
319
336
|
if (names_seen.find(name) != names_seen.end()) {
|
320
|
-
|
321
|
-
|
337
|
+
errors.emplace_back(absl::StrCat("duplicate HTTP filter name: ", name));
|
338
|
+
continue;
|
322
339
|
}
|
323
340
|
names_seen.insert(name);
|
324
341
|
const bool is_optional =
|
@@ -328,56 +345,64 @@ grpc_error_handle HttpConnectionManagerParse(
|
|
328
345
|
envoy_extensions_filters_network_http_connection_manager_v3_HttpFilter_typed_config(
|
329
346
|
http_filter);
|
330
347
|
if (any == nullptr) {
|
331
|
-
if (is_optional)
|
332
|
-
|
333
|
-
|
348
|
+
if (!is_optional) {
|
349
|
+
errors.emplace_back(absl::StrCat(
|
350
|
+
"no filter config specified for filter name ", name));
|
351
|
+
}
|
352
|
+
continue;
|
353
|
+
}
|
354
|
+
auto filter_type = ExtractExtensionTypeName(context, any);
|
355
|
+
if (!filter_type.ok()) {
|
356
|
+
errors.emplace_back(absl::StrCat("filter name ", name, ": ",
|
357
|
+
filter_type.status().message()));
|
358
|
+
continue;
|
334
359
|
}
|
335
|
-
absl::string_view filter_type;
|
336
|
-
grpc_error_handle error =
|
337
|
-
ExtractExtensionTypeName(context, any, &filter_type);
|
338
|
-
if (error != GRPC_ERROR_NONE) return error;
|
339
360
|
const XdsHttpFilterImpl* filter_impl =
|
340
|
-
XdsHttpFilterRegistry::GetFilterForType(filter_type);
|
361
|
+
XdsHttpFilterRegistry::GetFilterForType(filter_type->type);
|
341
362
|
if (filter_impl == nullptr) {
|
342
|
-
if (is_optional)
|
343
|
-
|
344
|
-
|
363
|
+
if (!is_optional) {
|
364
|
+
errors.emplace_back(absl::StrCat(
|
365
|
+
"no filter registered for config type ", filter_type->type));
|
366
|
+
}
|
367
|
+
continue;
|
345
368
|
}
|
346
369
|
if ((is_client && !filter_impl->IsSupportedOnClients()) ||
|
347
370
|
(!is_client && !filter_impl->IsSupportedOnServers())) {
|
348
|
-
if (is_optional)
|
349
|
-
|
350
|
-
|
351
|
-
|
371
|
+
if (!is_optional) {
|
372
|
+
errors.emplace_back(absl::StrFormat(
|
373
|
+
"Filter %s is not supported on %s", filter_type->type,
|
374
|
+
is_client ? "clients" : "servers"));
|
375
|
+
}
|
376
|
+
continue;
|
352
377
|
}
|
353
378
|
absl::StatusOr<XdsHttpFilterImpl::FilterConfig> filter_config =
|
354
379
|
filter_impl->GenerateFilterConfig(google_protobuf_Any_value(any),
|
355
380
|
context.arena);
|
356
381
|
if (!filter_config.ok()) {
|
357
|
-
|
358
|
-
"filter config for type ", filter_type,
|
382
|
+
errors.emplace_back(absl::StrCat(
|
383
|
+
"filter config for type ", filter_type->type,
|
359
384
|
" failed to parse: ", StatusToString(filter_config.status())));
|
385
|
+
continue;
|
360
386
|
}
|
361
|
-
http_connection_manager
|
387
|
+
http_connection_manager.http_filters.emplace_back(
|
362
388
|
XdsListenerResource::HttpConnectionManager::HttpFilter{
|
363
389
|
std::string(name), std::move(*filter_config)});
|
364
390
|
}
|
365
|
-
if (http_connection_manager
|
366
|
-
|
367
|
-
"Expected at least one HTTP filter");
|
391
|
+
if (http_connection_manager.http_filters.empty()) {
|
392
|
+
errors.emplace_back("Expected at least one HTTP filter");
|
368
393
|
}
|
369
394
|
// Make sure that the last filter is terminal and non-last filters are
|
370
395
|
// non-terminal. Note that this check is being performed in a separate loop
|
371
396
|
// to take care of the case where there are two terminal filters in the list
|
372
397
|
// out of which only one gets added in the final list.
|
373
|
-
for (const auto& http_filter : http_connection_manager
|
398
|
+
for (const auto& http_filter : http_connection_manager.http_filters) {
|
374
399
|
const XdsHttpFilterImpl* filter_impl =
|
375
400
|
XdsHttpFilterRegistry::GetFilterForType(
|
376
401
|
http_filter.config.config_proto_type_name);
|
377
|
-
if (&http_filter != &http_connection_manager
|
402
|
+
if (&http_filter != &http_connection_manager.http_filters.back()) {
|
378
403
|
// Filters before the last filter must not be terminal.
|
379
404
|
if (filter_impl->IsTerminalFilter()) {
|
380
|
-
|
405
|
+
errors.emplace_back(
|
381
406
|
absl::StrCat("terminal filter for config type ",
|
382
407
|
http_filter.config.config_proto_type_name,
|
383
408
|
" must be the last filter in the chain"));
|
@@ -385,7 +410,7 @@ grpc_error_handle HttpConnectionManagerParse(
|
|
385
410
|
} else {
|
386
411
|
// The last filter must be terminal.
|
387
412
|
if (!filter_impl->IsTerminalFilter()) {
|
388
|
-
|
413
|
+
errors.emplace_back(
|
389
414
|
absl::StrCat("non-terminal filter for config type ",
|
390
415
|
http_filter.config.config_proto_type_name,
|
391
416
|
" is the last filter in the chain"));
|
@@ -397,7 +422,7 @@ grpc_error_handle HttpConnectionManagerParse(
|
|
397
422
|
// router filter without actually looking at the config. This ensures
|
398
423
|
// that the right thing happens in the xds resolver without having
|
399
424
|
// to expose whether the resource we received was v2 or v3.
|
400
|
-
http_connection_manager
|
425
|
+
http_connection_manager.http_filters.emplace_back(
|
401
426
|
XdsListenerResource::HttpConnectionManager::HttpFilter{
|
402
427
|
"router", {kXdsHttpRouterFilterConfigName, Json()}});
|
403
428
|
}
|
@@ -411,252 +436,281 @@ grpc_error_handle HttpConnectionManagerParse(
|
|
411
436
|
const envoy_config_route_v3_RouteConfiguration* route_config =
|
412
437
|
envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_route_config(
|
413
438
|
http_connection_manager_proto);
|
414
|
-
XdsRouteConfigResource
|
415
|
-
|
416
|
-
|
417
|
-
|
418
|
-
|
419
|
-
|
420
|
-
}
|
421
|
-
|
422
|
-
|
423
|
-
|
424
|
-
|
425
|
-
|
426
|
-
|
427
|
-
|
428
|
-
|
429
|
-
|
430
|
-
|
431
|
-
|
432
|
-
|
433
|
-
|
434
|
-
|
435
|
-
|
436
|
-
|
437
|
-
|
438
|
-
|
439
|
-
|
440
|
-
|
441
|
-
|
439
|
+
auto rds_update = XdsRouteConfigResource::Parse(context, route_config);
|
440
|
+
if (!rds_update.ok()) {
|
441
|
+
errors.emplace_back(rds_update.status().message());
|
442
|
+
} else {
|
443
|
+
http_connection_manager.rds_update = std::move(*rds_update);
|
444
|
+
}
|
445
|
+
} else {
|
446
|
+
// Validate that RDS must be used to get the route_config dynamically.
|
447
|
+
const envoy_extensions_filters_network_http_connection_manager_v3_Rds* rds =
|
448
|
+
envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_rds(
|
449
|
+
http_connection_manager_proto);
|
450
|
+
if (rds == nullptr) {
|
451
|
+
return GRPC_ERROR_CREATE_FROM_STATIC_STRING(
|
452
|
+
"HttpConnectionManager neither has inlined route_config nor RDS.");
|
453
|
+
}
|
454
|
+
// Check that the ConfigSource specifies ADS.
|
455
|
+
const envoy_config_core_v3_ConfigSource* config_source =
|
456
|
+
envoy_extensions_filters_network_http_connection_manager_v3_Rds_config_source(
|
457
|
+
rds);
|
458
|
+
if (config_source == nullptr) {
|
459
|
+
errors.emplace_back(
|
460
|
+
"HttpConnectionManager missing config_source for RDS.");
|
461
|
+
} else if (!envoy_config_core_v3_ConfigSource_has_ads(config_source) &&
|
462
|
+
!envoy_config_core_v3_ConfigSource_has_self(config_source)) {
|
463
|
+
errors.emplace_back(
|
464
|
+
"HttpConnectionManager ConfigSource for RDS does not specify ADS "
|
465
|
+
"or SELF.");
|
466
|
+
} else {
|
467
|
+
// Get the route_config_name.
|
468
|
+
http_connection_manager.route_config_name = UpbStringToStdString(
|
469
|
+
envoy_extensions_filters_network_http_connection_manager_v3_Rds_route_config_name(
|
470
|
+
rds));
|
471
|
+
}
|
442
472
|
}
|
443
|
-
// Get the route_config_name.
|
444
|
-
http_connection_manager->route_config_name = UpbStringToStdString(
|
445
|
-
envoy_extensions_filters_network_http_connection_manager_v3_Rds_route_config_name(
|
446
|
-
rds));
|
447
473
|
}
|
448
|
-
|
474
|
+
// Return result.
|
475
|
+
if (!errors.empty()) {
|
476
|
+
return absl::InvalidArgumentError(
|
477
|
+
absl::StrCat("Errors parsing HttpConnectionManager config: [",
|
478
|
+
absl::StrJoin(errors, "; "), "]"));
|
479
|
+
}
|
480
|
+
return http_connection_manager;
|
449
481
|
}
|
450
482
|
|
451
|
-
|
452
|
-
const
|
453
|
-
const envoy_config_listener_v3_ApiListener* api_listener, bool is_v2
|
454
|
-
XdsListenerResource* lds_update) {
|
455
|
-
lds_update->type = XdsListenerResource::ListenerType::kHttpApiListener;
|
483
|
+
absl::StatusOr<XdsListenerResource> LdsResourceParseClient(
|
484
|
+
const XdsResourceType::DecodeContext& context,
|
485
|
+
const envoy_config_listener_v3_ApiListener* api_listener, bool is_v2) {
|
456
486
|
const upb_StringView encoded_api_listener = google_protobuf_Any_value(
|
457
487
|
envoy_config_listener_v3_ApiListener_api_listener(api_listener));
|
458
488
|
const auto* http_connection_manager =
|
459
489
|
envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_parse(
|
460
490
|
encoded_api_listener.data, encoded_api_listener.size, context.arena);
|
461
491
|
if (http_connection_manager == nullptr) {
|
462
|
-
return
|
492
|
+
return absl::InvalidArgumentError(
|
463
493
|
"Could not parse HttpConnectionManager config from ApiListener");
|
464
494
|
}
|
465
|
-
|
466
|
-
|
467
|
-
|
495
|
+
auto hcm = HttpConnectionManagerParse(true /* is_client */, context,
|
496
|
+
http_connection_manager, is_v2);
|
497
|
+
if (!hcm.ok()) return hcm.status();
|
498
|
+
XdsListenerResource lds_update;
|
499
|
+
lds_update.type = XdsListenerResource::ListenerType::kHttpApiListener;
|
500
|
+
lds_update.http_connection_manager = std::move(*hcm);
|
501
|
+
return lds_update;
|
468
502
|
}
|
469
503
|
|
470
|
-
|
471
|
-
|
472
|
-
const
|
473
|
-
|
504
|
+
absl::StatusOr<XdsListenerResource::DownstreamTlsContext>
|
505
|
+
DownstreamTlsContextParse(
|
506
|
+
const XdsResourceType::DecodeContext& context,
|
507
|
+
const envoy_config_core_v3_TransportSocket* transport_socket) {
|
474
508
|
absl::string_view name = UpbStringToAbsl(
|
475
509
|
envoy_config_core_v3_TransportSocket_name(transport_socket));
|
476
510
|
if (name != "envoy.transport_sockets.tls") {
|
477
|
-
return
|
511
|
+
return absl::InvalidArgumentError(
|
478
512
|
absl::StrCat("Unrecognized transport socket: ", name));
|
479
513
|
}
|
514
|
+
std::vector<std::string> errors;
|
515
|
+
XdsListenerResource::DownstreamTlsContext downstream_tls_context;
|
480
516
|
auto* typed_config =
|
481
517
|
envoy_config_core_v3_TransportSocket_typed_config(transport_socket);
|
482
|
-
|
483
|
-
|
484
|
-
|
485
|
-
|
486
|
-
|
487
|
-
|
488
|
-
|
489
|
-
|
490
|
-
|
491
|
-
|
492
|
-
|
493
|
-
|
494
|
-
|
495
|
-
|
496
|
-
|
497
|
-
|
498
|
-
|
499
|
-
|
500
|
-
|
501
|
-
|
502
|
-
|
503
|
-
auto* require_client_certificate =
|
504
|
-
envoy_extensions_transport_sockets_tls_v3_DownstreamTlsContext_require_client_certificate(
|
505
|
-
downstream_tls_context_proto);
|
506
|
-
if (require_client_certificate != nullptr) {
|
507
|
-
downstream_tls_context->require_client_certificate =
|
508
|
-
google_protobuf_BoolValue_value(require_client_certificate);
|
509
|
-
}
|
510
|
-
auto* require_sni =
|
511
|
-
envoy_extensions_transport_sockets_tls_v3_DownstreamTlsContext_require_sni(
|
512
|
-
downstream_tls_context_proto);
|
513
|
-
if (require_sni != nullptr &&
|
514
|
-
google_protobuf_BoolValue_value(require_sni)) {
|
515
|
-
errors.push_back(
|
516
|
-
GRPC_ERROR_CREATE_FROM_STATIC_STRING("require_sni: unsupported"));
|
517
|
-
}
|
518
|
-
if (envoy_extensions_transport_sockets_tls_v3_DownstreamTlsContext_ocsp_staple_policy(
|
519
|
-
downstream_tls_context_proto) !=
|
520
|
-
envoy_extensions_transport_sockets_tls_v3_DownstreamTlsContext_LENIENT_STAPLING) {
|
521
|
-
errors.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
|
522
|
-
"ocsp_staple_policy: Only LENIENT_STAPLING supported"));
|
518
|
+
if (typed_config == nullptr) {
|
519
|
+
return absl::InvalidArgumentError("transport socket typed config unset");
|
520
|
+
}
|
521
|
+
const upb_StringView encoded_downstream_tls_context =
|
522
|
+
google_protobuf_Any_value(typed_config);
|
523
|
+
auto* downstream_tls_context_proto =
|
524
|
+
envoy_extensions_transport_sockets_tls_v3_DownstreamTlsContext_parse(
|
525
|
+
encoded_downstream_tls_context.data,
|
526
|
+
encoded_downstream_tls_context.size, context.arena);
|
527
|
+
if (downstream_tls_context_proto == nullptr) {
|
528
|
+
return absl::InvalidArgumentError("Can't decode downstream tls context.");
|
529
|
+
}
|
530
|
+
auto* common_tls_context =
|
531
|
+
envoy_extensions_transport_sockets_tls_v3_DownstreamTlsContext_common_tls_context(
|
532
|
+
downstream_tls_context_proto);
|
533
|
+
if (common_tls_context != nullptr) {
|
534
|
+
auto common_context = CommonTlsContext::Parse(context, common_tls_context);
|
535
|
+
if (!common_context.ok()) {
|
536
|
+
errors.emplace_back(common_context.status().message());
|
537
|
+
} else {
|
538
|
+
downstream_tls_context.common_tls_context = std::move(*common_context);
|
523
539
|
}
|
524
540
|
}
|
525
|
-
|
541
|
+
auto* require_client_certificate =
|
542
|
+
envoy_extensions_transport_sockets_tls_v3_DownstreamTlsContext_require_client_certificate(
|
543
|
+
downstream_tls_context_proto);
|
544
|
+
if (require_client_certificate != nullptr) {
|
545
|
+
downstream_tls_context.require_client_certificate =
|
546
|
+
google_protobuf_BoolValue_value(require_client_certificate);
|
547
|
+
}
|
548
|
+
auto* require_sni =
|
549
|
+
envoy_extensions_transport_sockets_tls_v3_DownstreamTlsContext_require_sni(
|
550
|
+
downstream_tls_context_proto);
|
551
|
+
if (require_sni != nullptr && google_protobuf_BoolValue_value(require_sni)) {
|
552
|
+
errors.emplace_back("require_sni: unsupported");
|
553
|
+
}
|
554
|
+
if (envoy_extensions_transport_sockets_tls_v3_DownstreamTlsContext_ocsp_staple_policy(
|
555
|
+
downstream_tls_context_proto) !=
|
556
|
+
envoy_extensions_transport_sockets_tls_v3_DownstreamTlsContext_LENIENT_STAPLING) {
|
557
|
+
errors.emplace_back("ocsp_staple_policy: Only LENIENT_STAPLING supported");
|
558
|
+
}
|
559
|
+
|
560
|
+
if (downstream_tls_context.common_tls_context
|
526
561
|
.tls_certificate_provider_instance.instance_name.empty()) {
|
527
|
-
errors.
|
562
|
+
errors.emplace_back(
|
528
563
|
"TLS configuration provided but no "
|
529
|
-
"tls_certificate_provider_instance found.")
|
564
|
+
"tls_certificate_provider_instance found.");
|
530
565
|
}
|
531
|
-
if (downstream_tls_context
|
532
|
-
downstream_tls_context
|
566
|
+
if (downstream_tls_context.require_client_certificate &&
|
567
|
+
downstream_tls_context.common_tls_context.certificate_validation_context
|
533
568
|
.ca_certificate_provider_instance.instance_name.empty()) {
|
534
|
-
errors.
|
569
|
+
errors.emplace_back(
|
535
570
|
"TLS configuration requires client certificates but no certificate "
|
536
|
-
"provider instance specified for validation.")
|
571
|
+
"provider instance specified for validation.");
|
537
572
|
}
|
538
|
-
if (!downstream_tls_context
|
573
|
+
if (!downstream_tls_context.common_tls_context.certificate_validation_context
|
539
574
|
.match_subject_alt_names.empty()) {
|
540
|
-
errors.
|
541
|
-
|
575
|
+
errors.emplace_back("match_subject_alt_names not supported on servers");
|
576
|
+
}
|
577
|
+
// Return result.
|
578
|
+
if (!errors.empty()) {
|
579
|
+
return absl::InvalidArgumentError(
|
580
|
+
absl::StrCat("Errors parsing DownstreamTlsContext: [",
|
581
|
+
absl::StrJoin(errors, "; "), "]"));
|
542
582
|
}
|
543
|
-
return
|
544
|
-
&errors);
|
583
|
+
return downstream_tls_context;
|
545
584
|
}
|
546
585
|
|
547
|
-
|
548
|
-
const envoy_config_core_v3_CidrRange* cidr_range_proto
|
549
|
-
|
586
|
+
absl::StatusOr<XdsListenerResource::FilterChainMap::CidrRange> CidrRangeParse(
|
587
|
+
const envoy_config_core_v3_CidrRange* cidr_range_proto) {
|
588
|
+
XdsListenerResource::FilterChainMap::CidrRange cidr_range;
|
550
589
|
std::string address_prefix = UpbStringToStdString(
|
551
590
|
envoy_config_core_v3_CidrRange_address_prefix(cidr_range_proto));
|
552
|
-
|
553
|
-
|
554
|
-
|
555
|
-
cidr_range
|
591
|
+
auto address = StringToSockaddr(address_prefix, /*port=*/0);
|
592
|
+
if (!address.ok()) return address.status();
|
593
|
+
cidr_range.address = *address;
|
594
|
+
cidr_range.prefix_len = 0;
|
556
595
|
auto* prefix_len_proto =
|
557
596
|
envoy_config_core_v3_CidrRange_prefix_len(cidr_range_proto);
|
558
597
|
if (prefix_len_proto != nullptr) {
|
559
|
-
cidr_range
|
598
|
+
cidr_range.prefix_len = std::min(
|
560
599
|
google_protobuf_UInt32Value_value(prefix_len_proto),
|
561
|
-
(reinterpret_cast<const grpc_sockaddr*>(cidr_range
|
600
|
+
(reinterpret_cast<const grpc_sockaddr*>(cidr_range.address.addr))
|
562
601
|
->sa_family == GRPC_AF_INET
|
563
602
|
? uint32_t(32)
|
564
603
|
: uint32_t(128));
|
565
604
|
}
|
566
605
|
// Normalize the network address by masking it with prefix_len
|
567
|
-
grpc_sockaddr_mask_bits(&cidr_range
|
568
|
-
return
|
606
|
+
grpc_sockaddr_mask_bits(&cidr_range.address, cidr_range.prefix_len);
|
607
|
+
return cidr_range;
|
569
608
|
}
|
570
609
|
|
571
|
-
|
572
|
-
const envoy_config_listener_v3_FilterChainMatch* filter_chain_match_proto
|
573
|
-
|
610
|
+
absl::StatusOr<FilterChain::FilterChainMatch> FilterChainMatchParse(
|
611
|
+
const envoy_config_listener_v3_FilterChainMatch* filter_chain_match_proto) {
|
612
|
+
std::vector<std::string> errors;
|
613
|
+
FilterChain::FilterChainMatch filter_chain_match;
|
574
614
|
auto* destination_port =
|
575
615
|
envoy_config_listener_v3_FilterChainMatch_destination_port(
|
576
616
|
filter_chain_match_proto);
|
577
617
|
if (destination_port != nullptr) {
|
578
|
-
filter_chain_match
|
618
|
+
filter_chain_match.destination_port =
|
579
619
|
google_protobuf_UInt32Value_value(destination_port);
|
580
620
|
}
|
581
621
|
size_t size = 0;
|
582
622
|
auto* prefix_ranges = envoy_config_listener_v3_FilterChainMatch_prefix_ranges(
|
583
623
|
filter_chain_match_proto, &size);
|
584
|
-
filter_chain_match
|
624
|
+
filter_chain_match.prefix_ranges.reserve(size);
|
585
625
|
for (size_t i = 0; i < size; i++) {
|
586
|
-
|
587
|
-
|
588
|
-
|
589
|
-
|
626
|
+
auto cidr_range = CidrRangeParse(prefix_ranges[i]);
|
627
|
+
if (!cidr_range.ok()) {
|
628
|
+
errors.emplace_back(absl::StrCat("prefix range ", i, ": ",
|
629
|
+
cidr_range.status().message()));
|
630
|
+
continue;
|
631
|
+
}
|
632
|
+
filter_chain_match.prefix_ranges.push_back(*cidr_range);
|
590
633
|
}
|
591
|
-
filter_chain_match
|
634
|
+
filter_chain_match.source_type =
|
592
635
|
static_cast<XdsListenerResource::FilterChainMap::ConnectionSourceType>(
|
593
636
|
envoy_config_listener_v3_FilterChainMatch_source_type(
|
594
637
|
filter_chain_match_proto));
|
595
638
|
auto* source_prefix_ranges =
|
596
639
|
envoy_config_listener_v3_FilterChainMatch_source_prefix_ranges(
|
597
640
|
filter_chain_match_proto, &size);
|
598
|
-
filter_chain_match
|
641
|
+
filter_chain_match.source_prefix_ranges.reserve(size);
|
599
642
|
for (size_t i = 0; i < size; i++) {
|
600
|
-
|
601
|
-
|
602
|
-
|
603
|
-
|
604
|
-
|
643
|
+
auto cidr_range = CidrRangeParse(source_prefix_ranges[i]);
|
644
|
+
if (!cidr_range.ok()) {
|
645
|
+
errors.emplace_back(absl::StrCat("source prefix range ", i, ": ",
|
646
|
+
cidr_range.status().message()));
|
647
|
+
continue;
|
648
|
+
}
|
649
|
+
filter_chain_match.source_prefix_ranges.push_back(*cidr_range);
|
605
650
|
}
|
606
651
|
auto* source_ports = envoy_config_listener_v3_FilterChainMatch_source_ports(
|
607
652
|
filter_chain_match_proto, &size);
|
608
|
-
filter_chain_match
|
653
|
+
filter_chain_match.source_ports.reserve(size);
|
609
654
|
for (size_t i = 0; i < size; i++) {
|
610
|
-
filter_chain_match
|
655
|
+
filter_chain_match.source_ports.push_back(source_ports[i]);
|
611
656
|
}
|
612
657
|
auto* server_names = envoy_config_listener_v3_FilterChainMatch_server_names(
|
613
658
|
filter_chain_match_proto, &size);
|
614
659
|
for (size_t i = 0; i < size; i++) {
|
615
|
-
filter_chain_match
|
660
|
+
filter_chain_match.server_names.push_back(
|
616
661
|
UpbStringToStdString(server_names[i]));
|
617
662
|
}
|
618
|
-
filter_chain_match
|
663
|
+
filter_chain_match.transport_protocol = UpbStringToStdString(
|
619
664
|
envoy_config_listener_v3_FilterChainMatch_transport_protocol(
|
620
665
|
filter_chain_match_proto));
|
621
666
|
auto* application_protocols =
|
622
667
|
envoy_config_listener_v3_FilterChainMatch_application_protocols(
|
623
668
|
filter_chain_match_proto, &size);
|
624
669
|
for (size_t i = 0; i < size; i++) {
|
625
|
-
filter_chain_match
|
670
|
+
filter_chain_match.application_protocols.push_back(
|
626
671
|
UpbStringToStdString(application_protocols[i]));
|
627
672
|
}
|
628
|
-
|
673
|
+
// Return result.
|
674
|
+
if (!errors.empty()) {
|
675
|
+
return absl::InvalidArgumentError(
|
676
|
+
absl::StrCat("errors parsing filter chain match: [",
|
677
|
+
absl::StrJoin(errors, "; "), "]"));
|
678
|
+
}
|
679
|
+
return filter_chain_match;
|
629
680
|
}
|
630
681
|
|
631
|
-
|
632
|
-
const
|
633
|
-
const envoy_config_listener_v3_FilterChain* filter_chain_proto,
|
634
|
-
|
635
|
-
|
682
|
+
absl::StatusOr<FilterChain> FilterChainParse(
|
683
|
+
const XdsResourceType::DecodeContext& context,
|
684
|
+
const envoy_config_listener_v3_FilterChain* filter_chain_proto,
|
685
|
+
bool is_v2) {
|
686
|
+
FilterChain filter_chain;
|
687
|
+
std::vector<std::string> errors;
|
636
688
|
auto* filter_chain_match =
|
637
689
|
envoy_config_listener_v3_FilterChain_filter_chain_match(
|
638
690
|
filter_chain_proto);
|
639
691
|
if (filter_chain_match != nullptr) {
|
640
|
-
|
641
|
-
|
642
|
-
|
692
|
+
auto match = FilterChainMatchParse(filter_chain_match);
|
693
|
+
if (!match.ok()) {
|
694
|
+
errors.emplace_back(match.status().message());
|
695
|
+
} else {
|
696
|
+
filter_chain.filter_chain_match = std::move(*match);
|
697
|
+
}
|
643
698
|
}
|
644
|
-
filter_chain
|
699
|
+
filter_chain.filter_chain_data =
|
645
700
|
std::make_shared<XdsListenerResource::FilterChainData>();
|
646
701
|
// Parse the filters list. Currently we only support HttpConnectionManager.
|
647
702
|
size_t size = 0;
|
648
703
|
auto* filters =
|
649
704
|
envoy_config_listener_v3_FilterChain_filters(filter_chain_proto, &size);
|
650
705
|
if (size != 1) {
|
651
|
-
errors.push_back(
|
706
|
+
errors.push_back(
|
652
707
|
"FilterChain should have exactly one filter: HttpConnectionManager; no "
|
653
|
-
"other filter is supported at the moment")
|
708
|
+
"other filter is supported at the moment");
|
654
709
|
} else {
|
655
710
|
auto* typed_config =
|
656
711
|
envoy_config_listener_v3_Filter_typed_config(filters[0]);
|
657
712
|
if (typed_config == nullptr) {
|
658
|
-
errors.
|
659
|
-
"No typed_config found in filter."));
|
713
|
+
errors.emplace_back("No typed_config found in filter.");
|
660
714
|
} else {
|
661
715
|
absl::string_view type_url =
|
662
716
|
UpbStringToAbsl(google_protobuf_Any_type_url(typed_config));
|
@@ -664,8 +718,7 @@ grpc_error_handle FilterChainParse(
|
|
664
718
|
"type.googleapis.com/"
|
665
719
|
"envoy.extensions.filters.network.http_connection_manager.v3."
|
666
720
|
"HttpConnectionManager") {
|
667
|
-
errors.
|
668
|
-
absl::StrCat("Unsupported filter type ", type_url)));
|
721
|
+
errors.emplace_back(absl::StrCat("Unsupported filter type ", type_url));
|
669
722
|
} else {
|
670
723
|
const upb_StringView encoded_http_connection_manager =
|
671
724
|
google_protobuf_Any_value(typed_config);
|
@@ -674,14 +727,18 @@ grpc_error_handle FilterChainParse(
|
|
674
727
|
encoded_http_connection_manager.data,
|
675
728
|
encoded_http_connection_manager.size, context.arena);
|
676
729
|
if (http_connection_manager == nullptr) {
|
677
|
-
errors.
|
730
|
+
errors.emplace_back(
|
678
731
|
"Could not parse HttpConnectionManager config from filter "
|
679
|
-
"typed_config")
|
732
|
+
"typed_config");
|
680
733
|
} else {
|
681
|
-
|
682
|
-
|
683
|
-
|
684
|
-
|
734
|
+
auto hcm = HttpConnectionManagerParse(
|
735
|
+
/*is_client=*/false, context, http_connection_manager, is_v2);
|
736
|
+
if (!hcm.ok()) {
|
737
|
+
errors.emplace_back(hcm.status().message());
|
738
|
+
} else {
|
739
|
+
filter_chain.filter_chain_data->http_connection_manager =
|
740
|
+
std::move(*hcm);
|
741
|
+
}
|
685
742
|
}
|
686
743
|
}
|
687
744
|
}
|
@@ -689,36 +746,42 @@ grpc_error_handle FilterChainParse(
|
|
689
746
|
auto* transport_socket =
|
690
747
|
envoy_config_listener_v3_FilterChain_transport_socket(filter_chain_proto);
|
691
748
|
if (transport_socket != nullptr) {
|
692
|
-
|
693
|
-
context, transport_socket
|
694
|
-
|
695
|
-
|
749
|
+
auto downstream_context =
|
750
|
+
DownstreamTlsContextParse(context, transport_socket);
|
751
|
+
if (!downstream_context.ok()) {
|
752
|
+
errors.emplace_back(downstream_context.status().message());
|
753
|
+
} else {
|
754
|
+
filter_chain.filter_chain_data->downstream_tls_context =
|
755
|
+
std::move(*downstream_context);
|
756
|
+
}
|
757
|
+
}
|
758
|
+
// Return result.
|
759
|
+
if (!errors.empty()) {
|
760
|
+
return absl::InvalidArgumentError(absl::StrCat(
|
761
|
+
"Errors parsing FilterChain: [", absl::StrJoin(errors, "; "), "]"));
|
696
762
|
}
|
697
|
-
return
|
763
|
+
return filter_chain;
|
698
764
|
}
|
699
765
|
|
700
|
-
|
701
|
-
const envoy_config_core_v3_Address* address_proto
|
766
|
+
absl::StatusOr<std::string> AddressParse(
|
767
|
+
const envoy_config_core_v3_Address* address_proto) {
|
702
768
|
const auto* socket_address =
|
703
769
|
envoy_config_core_v3_Address_socket_address(address_proto);
|
704
770
|
if (socket_address == nullptr) {
|
705
|
-
return
|
706
|
-
"Address does not have socket_address");
|
771
|
+
return absl::InvalidArgumentError("Address does not have socket_address");
|
707
772
|
}
|
708
773
|
if (envoy_config_core_v3_SocketAddress_protocol(socket_address) !=
|
709
774
|
envoy_config_core_v3_SocketAddress_TCP) {
|
710
|
-
return
|
711
|
-
"SocketAddress protocol is not TCP");
|
775
|
+
return absl::InvalidArgumentError("SocketAddress protocol is not TCP");
|
712
776
|
}
|
713
777
|
uint32_t port = envoy_config_core_v3_SocketAddress_port_value(socket_address);
|
714
778
|
if (port > 65535) {
|
715
|
-
return
|
779
|
+
return absl::InvalidArgumentError("Invalid port");
|
716
780
|
}
|
717
|
-
|
781
|
+
return JoinHostPort(
|
718
782
|
UpbStringToAbsl(
|
719
783
|
envoy_config_core_v3_SocketAddress_address(socket_address)),
|
720
784
|
port);
|
721
|
-
return GRPC_ERROR_NONE;
|
722
785
|
}
|
723
786
|
|
724
787
|
// An intermediate map for filter chains that we create to validate the list of
|
@@ -737,37 +800,36 @@ struct InternalFilterChainMap {
|
|
737
800
|
DestinationIpMap destination_ip_map;
|
738
801
|
};
|
739
802
|
|
740
|
-
|
741
|
-
const FilterChain& filter_chain,
|
742
|
-
XdsListenerResource::FilterChainMap::SourcePortsMap* ports_map
|
743
|
-
uint32_t port) {
|
803
|
+
absl::Status AddFilterChainDataForSourcePort(
|
804
|
+
const FilterChain& filter_chain, uint32_t port,
|
805
|
+
XdsListenerResource::FilterChainMap::SourcePortsMap* ports_map) {
|
744
806
|
auto insert_result = ports_map->emplace(
|
745
807
|
port, XdsListenerResource::FilterChainMap::FilterChainDataSharedPtr{
|
746
808
|
filter_chain.filter_chain_data});
|
747
809
|
if (!insert_result.second) {
|
748
|
-
return
|
810
|
+
return absl::InvalidArgumentError(absl::StrCat(
|
749
811
|
"Duplicate matching rules detected when adding filter chain: ",
|
750
812
|
filter_chain.filter_chain_match.ToString()));
|
751
813
|
}
|
752
|
-
return
|
814
|
+
return absl::OkStatus();
|
753
815
|
}
|
754
816
|
|
755
|
-
|
817
|
+
absl::Status AddFilterChainDataForSourcePorts(
|
756
818
|
const FilterChain& filter_chain,
|
757
819
|
XdsListenerResource::FilterChainMap::SourcePortsMap* ports_map) {
|
758
820
|
if (filter_chain.filter_chain_match.source_ports.empty()) {
|
759
|
-
return AddFilterChainDataForSourcePort(filter_chain,
|
821
|
+
return AddFilterChainDataForSourcePort(filter_chain, 0, ports_map);
|
760
822
|
} else {
|
761
823
|
for (uint32_t port : filter_chain.filter_chain_match.source_ports) {
|
762
|
-
|
763
|
-
AddFilterChainDataForSourcePort(filter_chain,
|
764
|
-
if (
|
824
|
+
absl::Status status =
|
825
|
+
AddFilterChainDataForSourcePort(filter_chain, port, ports_map);
|
826
|
+
if (!status.ok()) return status;
|
765
827
|
}
|
766
828
|
}
|
767
|
-
return
|
829
|
+
return absl::OkStatus();
|
768
830
|
}
|
769
831
|
|
770
|
-
|
832
|
+
absl::Status AddFilterChainDataForSourceIpRange(
|
771
833
|
const FilterChain& filter_chain,
|
772
834
|
InternalFilterChainMap::SourceIpMap* source_ip_map) {
|
773
835
|
if (filter_chain.filter_chain_match.source_prefix_ranges.empty()) {
|
@@ -779,24 +841,22 @@ grpc_error_handle AddFilterChainDataForSourceIpRange(
|
|
779
841
|
for (const auto& prefix_range :
|
780
842
|
filter_chain.filter_chain_match.source_prefix_ranges) {
|
781
843
|
auto addr_str = grpc_sockaddr_to_string(&prefix_range.address, false);
|
782
|
-
if (!addr_str.ok())
|
783
|
-
return GRPC_ERROR_CREATE_FROM_CPP_STRING(addr_str.status().ToString());
|
784
|
-
}
|
844
|
+
if (!addr_str.ok()) return addr_str.status();
|
785
845
|
auto insert_result = source_ip_map->emplace(
|
786
846
|
absl::StrCat(*addr_str, "/", prefix_range.prefix_len),
|
787
847
|
XdsListenerResource::FilterChainMap::SourceIp());
|
788
848
|
if (insert_result.second) {
|
789
849
|
insert_result.first->second.prefix_range.emplace(prefix_range);
|
790
850
|
}
|
791
|
-
|
851
|
+
absl::Status status = AddFilterChainDataForSourcePorts(
|
792
852
|
filter_chain, &insert_result.first->second.ports_map);
|
793
|
-
if (
|
853
|
+
if (!status.ok()) return status;
|
794
854
|
}
|
795
855
|
}
|
796
|
-
return
|
856
|
+
return absl::OkStatus();
|
797
857
|
}
|
798
858
|
|
799
|
-
|
859
|
+
absl::Status AddFilterChainDataForSourceType(
|
800
860
|
const FilterChain& filter_chain,
|
801
861
|
InternalFilterChainMap::DestinationIp* destination_ip) {
|
802
862
|
GPR_ASSERT(static_cast<unsigned int>(
|
@@ -806,31 +866,31 @@ grpc_error_handle AddFilterChainDataForSourceType(
|
|
806
866
|
filter_chain.filter_chain_match.source_type)]);
|
807
867
|
}
|
808
868
|
|
809
|
-
|
869
|
+
absl::Status AddFilterChainDataForApplicationProtocols(
|
810
870
|
const FilterChain& filter_chain,
|
811
871
|
InternalFilterChainMap::DestinationIp* destination_ip) {
|
812
872
|
// Only allow filter chains that do not mention application protocols
|
813
873
|
if (!filter_chain.filter_chain_match.application_protocols.empty()) {
|
814
|
-
return
|
874
|
+
return absl::OkStatus();
|
815
875
|
}
|
816
876
|
return AddFilterChainDataForSourceType(filter_chain, destination_ip);
|
817
877
|
}
|
818
878
|
|
819
|
-
|
879
|
+
absl::Status AddFilterChainDataForTransportProtocol(
|
820
880
|
const FilterChain& filter_chain,
|
821
881
|
InternalFilterChainMap::DestinationIp* destination_ip) {
|
822
882
|
const std::string& transport_protocol =
|
823
883
|
filter_chain.filter_chain_match.transport_protocol;
|
824
884
|
// Only allow filter chains with no transport protocol or "raw_buffer"
|
825
885
|
if (!transport_protocol.empty() && transport_protocol != "raw_buffer") {
|
826
|
-
return
|
886
|
+
return absl::OkStatus();
|
827
887
|
}
|
828
888
|
// If for this configuration, we've already seen filter chains that mention
|
829
889
|
// the transport protocol as "raw_buffer", we will never match filter chains
|
830
890
|
// that do not mention it.
|
831
891
|
if (destination_ip->transport_protocol_raw_buffer_provided &&
|
832
892
|
transport_protocol.empty()) {
|
833
|
-
return
|
893
|
+
return absl::OkStatus();
|
834
894
|
}
|
835
895
|
if (!transport_protocol.empty() &&
|
836
896
|
!destination_ip->transport_protocol_raw_buffer_provided) {
|
@@ -844,17 +904,17 @@ grpc_error_handle AddFilterChainDataForTransportProtocol(
|
|
844
904
|
destination_ip);
|
845
905
|
}
|
846
906
|
|
847
|
-
|
907
|
+
absl::Status AddFilterChainDataForServerNames(
|
848
908
|
const FilterChain& filter_chain,
|
849
909
|
InternalFilterChainMap::DestinationIp* destination_ip) {
|
850
910
|
// Don't continue adding filter chains with server names mentioned
|
851
911
|
if (!filter_chain.filter_chain_match.server_names.empty()) {
|
852
|
-
return
|
912
|
+
return absl::OkStatus();
|
853
913
|
}
|
854
914
|
return AddFilterChainDataForTransportProtocol(filter_chain, destination_ip);
|
855
915
|
}
|
856
916
|
|
857
|
-
|
917
|
+
absl::Status AddFilterChainDataForDestinationIpRange(
|
858
918
|
const FilterChain& filter_chain,
|
859
919
|
InternalFilterChainMap::DestinationIpMap* destination_ip_map) {
|
860
920
|
if (filter_chain.filter_chain_match.prefix_ranges.empty()) {
|
@@ -866,21 +926,19 @@ grpc_error_handle AddFilterChainDataForDestinationIpRange(
|
|
866
926
|
for (const auto& prefix_range :
|
867
927
|
filter_chain.filter_chain_match.prefix_ranges) {
|
868
928
|
auto addr_str = grpc_sockaddr_to_string(&prefix_range.address, false);
|
869
|
-
if (!addr_str.ok())
|
870
|
-
return GRPC_ERROR_CREATE_FROM_CPP_STRING(addr_str.status().ToString());
|
871
|
-
}
|
929
|
+
if (!addr_str.ok()) return addr_str.status();
|
872
930
|
auto insert_result = destination_ip_map->emplace(
|
873
931
|
absl::StrCat(*addr_str, "/", prefix_range.prefix_len),
|
874
932
|
InternalFilterChainMap::DestinationIp());
|
875
933
|
if (insert_result.second) {
|
876
934
|
insert_result.first->second.prefix_range.emplace(prefix_range);
|
877
935
|
}
|
878
|
-
|
936
|
+
absl::Status status = AddFilterChainDataForServerNames(
|
879
937
|
filter_chain, &insert_result.first->second);
|
880
|
-
if (
|
938
|
+
if (!status.ok()) return status;
|
881
939
|
}
|
882
940
|
}
|
883
|
-
return
|
941
|
+
return absl::OkStatus();
|
884
942
|
}
|
885
943
|
|
886
944
|
XdsListenerResource::FilterChainMap BuildFromInternalFilterChainMap(
|
@@ -902,36 +960,33 @@ XdsListenerResource::FilterChainMap BuildFromInternalFilterChainMap(
|
|
902
960
|
return filter_chain_map;
|
903
961
|
}
|
904
962
|
|
905
|
-
|
906
|
-
const std::vector<FilterChain>& filter_chains
|
907
|
-
XdsListenerResource::FilterChainMap* filter_chain_map) {
|
963
|
+
absl::StatusOr<XdsListenerResource::FilterChainMap> BuildFilterChainMap(
|
964
|
+
const std::vector<FilterChain>& filter_chains) {
|
908
965
|
InternalFilterChainMap internal_filter_chain_map;
|
909
966
|
for (const auto& filter_chain : filter_chains) {
|
910
967
|
// Discard filter chain entries that specify destination port
|
911
968
|
if (filter_chain.filter_chain_match.destination_port != 0) continue;
|
912
|
-
|
969
|
+
absl::Status status = AddFilterChainDataForDestinationIpRange(
|
913
970
|
filter_chain, &internal_filter_chain_map.destination_ip_map);
|
914
|
-
if (
|
971
|
+
if (!status.ok()) return status;
|
915
972
|
}
|
916
|
-
|
917
|
-
BuildFromInternalFilterChainMap(&internal_filter_chain_map);
|
918
|
-
return GRPC_ERROR_NONE;
|
973
|
+
return BuildFromInternalFilterChainMap(&internal_filter_chain_map);
|
919
974
|
}
|
920
975
|
|
921
|
-
|
922
|
-
const
|
923
|
-
const envoy_config_listener_v3_Listener* listener, bool is_v2
|
924
|
-
|
925
|
-
lds_update
|
926
|
-
|
927
|
-
AddressParse(envoy_config_listener_v3_Listener_address(listener)
|
928
|
-
|
929
|
-
|
976
|
+
absl::StatusOr<XdsListenerResource> LdsResourceParseServer(
|
977
|
+
const XdsResourceType::DecodeContext& context,
|
978
|
+
const envoy_config_listener_v3_Listener* listener, bool is_v2) {
|
979
|
+
XdsListenerResource lds_update;
|
980
|
+
lds_update.type = XdsListenerResource::ListenerType::kTcpListener;
|
981
|
+
auto address =
|
982
|
+
AddressParse(envoy_config_listener_v3_Listener_address(listener));
|
983
|
+
if (!address.ok()) return address.status();
|
984
|
+
lds_update.address = std::move(*address);
|
930
985
|
const auto* use_original_dst =
|
931
986
|
envoy_config_listener_v3_Listener_use_original_dst(listener);
|
932
987
|
if (use_original_dst != nullptr) {
|
933
988
|
if (google_protobuf_BoolValue_value(use_original_dst)) {
|
934
|
-
return
|
989
|
+
return absl::InvalidArgumentError(
|
935
990
|
"Field \'use_original_dst\' is not supported.");
|
936
991
|
}
|
937
992
|
}
|
@@ -941,36 +996,32 @@ grpc_error_handle LdsResourceParseServer(
|
|
941
996
|
std::vector<FilterChain> parsed_filter_chains;
|
942
997
|
parsed_filter_chains.reserve(size);
|
943
998
|
for (size_t i = 0; i < size; i++) {
|
944
|
-
|
945
|
-
|
946
|
-
|
947
|
-
|
948
|
-
|
949
|
-
|
950
|
-
|
951
|
-
if (error != GRPC_ERROR_NONE) return error;
|
999
|
+
auto filter_chain = FilterChainParse(context, filter_chains[i], is_v2);
|
1000
|
+
if (!filter_chain.ok()) return filter_chain.status();
|
1001
|
+
parsed_filter_chains.push_back(std::move(*filter_chain));
|
1002
|
+
}
|
1003
|
+
auto filter_chain_map = BuildFilterChainMap(parsed_filter_chains);
|
1004
|
+
if (!filter_chain_map.ok()) return filter_chain_map.status();
|
1005
|
+
lds_update.filter_chain_map = std::move(*filter_chain_map);
|
952
1006
|
auto* default_filter_chain =
|
953
1007
|
envoy_config_listener_v3_Listener_default_filter_chain(listener);
|
954
1008
|
if (default_filter_chain != nullptr) {
|
955
|
-
|
956
|
-
|
957
|
-
|
958
|
-
|
959
|
-
|
960
|
-
lds_update->default_filter_chain =
|
961
|
-
std::move(*filter_chain.filter_chain_data);
|
1009
|
+
auto filter_chain = FilterChainParse(context, default_filter_chain, is_v2);
|
1010
|
+
if (!filter_chain.ok()) return filter_chain.status();
|
1011
|
+
if (filter_chain->filter_chain_data != nullptr) {
|
1012
|
+
lds_update.default_filter_chain =
|
1013
|
+
std::move(*filter_chain->filter_chain_data);
|
962
1014
|
}
|
963
1015
|
}
|
964
1016
|
if (size == 0 && default_filter_chain == nullptr) {
|
965
|
-
return
|
1017
|
+
return absl::InvalidArgumentError("No filter chain provided.");
|
966
1018
|
}
|
967
|
-
return
|
1019
|
+
return lds_update;
|
968
1020
|
}
|
969
1021
|
|
970
|
-
|
971
|
-
const
|
972
|
-
const envoy_config_listener_v3_Listener* listener, bool is_v2
|
973
|
-
XdsListenerResource* lds_update) {
|
1022
|
+
absl::StatusOr<XdsListenerResource> LdsResourceParse(
|
1023
|
+
const XdsResourceType::DecodeContext& context,
|
1024
|
+
const envoy_config_listener_v3_Listener* listener, bool is_v2) {
|
974
1025
|
// Check whether it's a client or server listener.
|
975
1026
|
const envoy_config_listener_v3_ApiListener* api_listener =
|
976
1027
|
envoy_config_listener_v3_Listener_api_listener(listener);
|
@@ -979,24 +1030,22 @@ grpc_error_handle LdsResourceParse(
|
|
979
1030
|
// TODO(roth): Re-enable the following check once
|
980
1031
|
// github.com/istio/istio/issues/38914 is resolved.
|
981
1032
|
// if (api_listener != nullptr && address != nullptr) {
|
982
|
-
// return
|
1033
|
+
// return absl::InvalidArgumentError(
|
983
1034
|
// "Listener has both address and ApiListener");
|
984
1035
|
// }
|
985
1036
|
if (api_listener == nullptr && address == nullptr) {
|
986
|
-
return
|
1037
|
+
return absl::InvalidArgumentError(
|
987
1038
|
"Listener has neither address nor ApiListener");
|
988
1039
|
}
|
989
|
-
//
|
990
|
-
|
1040
|
+
// If api_listener is present, it's for a client; otherwise, it's
|
1041
|
+
// for a server.
|
991
1042
|
if (api_listener != nullptr) {
|
992
|
-
|
993
|
-
} else {
|
994
|
-
error = LdsResourceParseServer(context, listener, is_v2, lds_update);
|
1043
|
+
return LdsResourceParseClient(context, api_listener, is_v2);
|
995
1044
|
}
|
996
|
-
return
|
1045
|
+
return LdsResourceParseServer(context, listener, is_v2);
|
997
1046
|
}
|
998
1047
|
|
999
|
-
void MaybeLogListener(const
|
1048
|
+
void MaybeLogListener(const XdsResourceType::DecodeContext& context,
|
1000
1049
|
const envoy_config_listener_v3_Listener* listener) {
|
1001
1050
|
if (GRPC_TRACE_FLAG_ENABLED(*context.tracer) &&
|
1002
1051
|
gpr_should_log(GPR_LOG_SEVERITY_DEBUG)) {
|
@@ -1011,8 +1060,8 @@ void MaybeLogListener(const XdsEncodingContext& context,
|
|
1011
1060
|
} // namespace
|
1012
1061
|
|
1013
1062
|
absl::StatusOr<XdsResourceType::DecodeResult> XdsListenerResourceType::Decode(
|
1014
|
-
const
|
1015
|
-
bool is_v2) const {
|
1063
|
+
const XdsResourceType::DecodeContext& context,
|
1064
|
+
absl::string_view serialized_resource, bool is_v2) const {
|
1016
1065
|
// Parse serialized proto.
|
1017
1066
|
auto* resource = envoy_config_listener_v3_Listener_parse(
|
1018
1067
|
serialized_resource.data(), serialized_resource.size(), context.arena);
|
@@ -1024,24 +1073,23 @@ absl::StatusOr<XdsResourceType::DecodeResult> XdsListenerResourceType::Decode(
|
|
1024
1073
|
DecodeResult result;
|
1025
1074
|
result.name =
|
1026
1075
|
UpbStringToStdString(envoy_config_listener_v3_Listener_name(resource));
|
1027
|
-
auto
|
1028
|
-
|
1029
|
-
LdsResourceParse(context, resource, is_v2, &listener_data->resource);
|
1030
|
-
if (error != GRPC_ERROR_NONE) {
|
1031
|
-
std::string error_str = grpc_error_std_string(error);
|
1032
|
-
GRPC_ERROR_UNREF(error);
|
1076
|
+
auto listener = LdsResourceParse(context, resource, is_v2);
|
1077
|
+
if (!listener.ok()) {
|
1033
1078
|
if (GRPC_TRACE_FLAG_ENABLED(*context.tracer)) {
|
1034
1079
|
gpr_log(GPR_ERROR, "[xds_client %p] invalid Listener %s: %s",
|
1035
|
-
context.client, result.name.c_str(),
|
1080
|
+
context.client, result.name.c_str(),
|
1081
|
+
listener.status().ToString().c_str());
|
1036
1082
|
}
|
1037
|
-
result.resource =
|
1083
|
+
result.resource = listener.status();
|
1038
1084
|
} else {
|
1039
1085
|
if (GRPC_TRACE_FLAG_ENABLED(*context.tracer)) {
|
1040
1086
|
gpr_log(GPR_INFO, "[xds_client %p] parsed Listener %s: %s",
|
1041
1087
|
context.client, result.name.c_str(),
|
1042
|
-
|
1088
|
+
listener->ToString().c_str());
|
1043
1089
|
}
|
1044
|
-
|
1090
|
+
auto resource = absl::make_unique<ResourceDataSubclass>();
|
1091
|
+
resource->resource = std::move(*listener);
|
1092
|
+
result.resource = std::move(resource);
|
1045
1093
|
}
|
1046
1094
|
return std::move(result);
|
1047
1095
|
}
|