grpc 1.47.0 → 1.48.0.pre1
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 +105 -47
- data/include/grpc/compression.h +1 -1
- data/include/grpc/event_engine/event_engine.h +20 -11
- 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 +2 -1
- data/include/grpc/impl/codegen/port_platform.h +6 -3
- data/src/core/ext/filters/census/grpc_context.cc +3 -0
- data/src/core/ext/filters/channel_idle/channel_idle_filter.cc +17 -5
- data/src/core/ext/filters/channel_idle/channel_idle_filter.h +16 -0
- 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 +51 -65
- data/src/core/ext/filters/client_channel/client_channel.h +19 -4
- data/src/core/ext/filters/client_channel/config_selector.h +1 -1
- data/src/core/ext/filters/client_channel/connector.h +1 -1
- 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/lb_policy/address_filtering.cc +1 -1
- 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 +73 -43
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_balancer_addresses.cc +1 -1
- data/src/core/ext/filters/client_channel/lb_policy/oob_backend_metric.cc +0 -1
- data/src/core/ext/filters/client_channel/lb_policy/outlier_detection/outlier_detection.cc +33 -35
- data/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc +106 -112
- data/src/core/ext/filters/client_channel/lb_policy/priority/priority.cc +91 -42
- data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.cc +177 -138
- data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.h +4 -1
- data/src/core/ext/filters/client_channel/lb_policy/rls/rls.cc +47 -44
- data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +118 -103
- data/src/core/ext/filters/client_channel/lb_policy/subchannel_list.h +83 -78
- data/src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc +57 -67
- data/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc +2 -2
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_impl.cc +5 -7
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_manager.cc +13 -17
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_resolver.cc +3 -3
- data/src/core/ext/filters/client_channel/lb_policy.h +0 -7
- data/src/core/ext/filters/client_channel/lb_policy_registry.cc +3 -5
- data/src/core/ext/filters/client_channel/proxy_mapper_registry.cc +0 -1
- data/src/core/ext/filters/client_channel/resolver/binder/binder_resolver.cc +3 -1
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +6 -6
- 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 +10 -5
- data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc +12 -3
- data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc +5 -5
- data/src/core/ext/filters/client_channel/resolver/google_c2p/google_c2p_resolver.cc +3 -4
- data/src/core/ext/filters/client_channel/resolver/polling_resolver.cc +1 -1
- data/src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.cc +1 -0
- data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +24 -15
- 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 +7 -7
- data/src/core/ext/filters/client_channel/retry_filter.cc +35 -36
- data/src/core/ext/filters/client_channel/retry_filter.h +1 -0
- data/src/core/ext/filters/client_channel/retry_service_config.cc +4 -4
- data/src/core/ext/filters/client_channel/service_config_channel_arg_filter.cc +2 -1
- data/src/core/ext/filters/client_channel/subchannel.cc +53 -50
- data/src/core/ext/filters/client_channel/subchannel.h +6 -22
- data/src/core/ext/filters/client_channel/subchannel_interface.h +10 -18
- data/src/core/ext/filters/client_channel/subchannel_stream_client.cc +12 -97
- data/src/core/ext/filters/client_channel/subchannel_stream_client.h +5 -9
- data/src/core/ext/filters/deadline/deadline_filter.cc +12 -7
- data/src/core/ext/filters/deadline/deadline_filter.h +8 -1
- data/src/core/ext/filters/fault_injection/fault_injection_filter.cc +21 -2
- data/src/core/ext/filters/fault_injection/fault_injection_filter.h +8 -3
- data/src/core/ext/filters/fault_injection/service_config_parser.cc +7 -4
- data/src/core/ext/filters/fault_injection/service_config_parser.h +17 -3
- data/src/core/ext/filters/http/client/http_client_filter.cc +16 -5
- data/src/core/ext/filters/http/client/http_client_filter.h +8 -1
- data/src/core/ext/filters/http/client_authority_filter.cc +11 -10
- data/src/core/ext/filters/http/client_authority_filter.h +5 -2
- 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 +16 -9
- data/src/core/ext/filters/http/server/http_server_filter.h +6 -1
- data/src/core/ext/filters/message_size/message_size_filter.cc +25 -15
- data/src/core/ext/filters/message_size/message_size_filter.h +13 -0
- 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 +13 -2
- data/src/core/ext/filters/rbac/rbac_service_config_parser.h +14 -2
- 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 +9 -0
- data/src/core/ext/filters/server_config_selector/server_config_selector_filter.cc +22 -2
- 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 +4 -4
- data/src/core/ext/transport/chttp2/server/chttp2_server.cc +15 -15
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +196 -476
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.h +1 -1
- data/src/core/ext/transport/chttp2/transport/flow_control.cc +141 -261
- data/src/core/ext/transport/chttp2/transport/flow_control.h +176 -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_parser.cc +7 -6
- data/src/core/ext/transport/chttp2/transport/hpack_parser_table.cc +0 -2
- data/src/core/ext/transport/chttp2/transport/internal.h +9 -111
- 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 +85 -81
- data/src/core/ext/transport/inproc/inproc_transport.h +3 -1
- 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 +164 -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 +94 -0
- 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 +1 -2
- data/src/core/ext/xds/xds_api.cc +16 -18
- data/src/core/ext/xds/xds_api.h +12 -5
- data/src/core/ext/xds/xds_bootstrap.cc +37 -24
- data/src/core/ext/xds/xds_bootstrap.h +9 -11
- data/src/core/ext/xds/xds_certificate_provider.cc +12 -3
- data/src/core/ext/xds/xds_certificate_provider.h +16 -1
- data/src/core/ext/xds/xds_channel_stack_modifier.cc +9 -0
- data/src/core/ext/xds/xds_channel_stack_modifier.h +5 -1
- data/src/core/ext/xds/xds_client.cc +71 -22
- data/src/core/ext/xds/xds_client.h +17 -3
- 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 +21 -10
- data/src/core/ext/xds/xds_cluster.h +9 -1
- data/src/core/ext/xds/xds_cluster_specifier_plugin.cc +16 -7
- data/src/core/ext/xds/xds_cluster_specifier_plugin.h +1 -8
- data/src/core/ext/xds/xds_common_types.cc +36 -22
- data/src/core/ext/xds/xds_common_types.h +12 -4
- data/src/core/ext/xds/xds_endpoint.cc +25 -15
- data/src/core/ext/xds/xds_endpoint.h +13 -5
- data/src/core/ext/xds/xds_http_fault_filter.cc +7 -5
- data/src/core/ext/xds/xds_http_fault_filter.h +3 -1
- data/src/core/ext/xds/xds_http_filters.cc +7 -0
- data/src/core/ext/xds/xds_http_filters.h +3 -3
- data/src/core/ext/xds/xds_http_rbac_filter.cc +16 -0
- data/src/core/ext/xds/xds_http_rbac_filter.h +7 -0
- data/src/core/ext/xds/xds_lb_policy_registry.cc +291 -0
- data/src/core/ext/xds/xds_lb_policy_registry.h +72 -0
- data/src/core/ext/xds/xds_listener.cc +51 -33
- data/src/core/ext/xds/xds_listener.h +10 -1
- data/src/core/ext/xds/xds_resource_type.h +3 -3
- data/src/core/ext/xds/xds_resource_type_impl.h +7 -3
- data/src/core/ext/xds/xds_route_config.cc +56 -28
- data/src/core/ext/xds/xds_route_config.h +11 -2
- data/src/core/ext/xds/xds_routing.cc +16 -0
- data/src/core/ext/xds/xds_routing.h +7 -2
- data/src/core/ext/xds/xds_server_config_fetcher.cc +54 -6
- data/src/core/lib/address_utils/parse_address.cc +5 -8
- data/src/core/lib/address_utils/parse_address.h +3 -2
- 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 +3 -3
- 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 +3 -3
- data/src/core/lib/channel/channel_args.h +1 -0
- 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 -4
- data/src/core/lib/channel/channel_stack.h +1 -11
- data/src/core/lib/channel/channel_stack_builder.h +2 -5
- data/src/core/lib/channel/channel_stack_builder_impl.cc +1 -1
- data/src/core/lib/channel/channel_stack_builder_impl.h +1 -0
- data/src/core/lib/channel/channelz.cc +2 -1
- data/src/core/lib/channel/channelz.h +2 -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 -0
- 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/debug/stats.cc +9 -9
- data/src/core/lib/debug/stats.h +2 -1
- 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_factory.cc +1 -1
- data/src/core/lib/event_engine/event_engine.cc +24 -19
- data/src/core/lib/event_engine/event_engine_factory.h +2 -2
- data/src/core/lib/event_engine/{iomgr_engine.cc → iomgr_engine/iomgr_engine.cc} +44 -91
- data/src/core/lib/event_engine/{iomgr_engine.h → iomgr_engine/iomgr_engine.h} +20 -16
- data/src/core/lib/event_engine/iomgr_engine/thread_pool.cc +123 -0
- data/src/core/lib/event_engine/iomgr_engine/thread_pool.h +70 -0
- data/src/core/lib/event_engine/iomgr_engine/time_averaged_stats.cc +62 -0
- data/src/core/lib/event_engine/iomgr_engine/time_averaged_stats.h +81 -0
- data/src/core/lib/event_engine/iomgr_engine/timer.cc +312 -0
- data/src/core/lib/event_engine/iomgr_engine/timer.h +193 -0
- data/src/core/lib/event_engine/iomgr_engine/timer_heap.cc +107 -0
- data/src/core/lib/event_engine/iomgr_engine/timer_heap.h +56 -0
- data/src/core/lib/event_engine/iomgr_engine/timer_manager.cc +254 -0
- data/src/core/lib/event_engine/iomgr_engine/timer_manager.h +111 -0
- data/src/core/lib/event_engine/promise.h +69 -0
- data/src/core/lib/gpr/time_posix.cc +6 -9
- data/src/core/lib/gpr/time_windows.cc +10 -7
- data/src/core/lib/gprpp/manual_constructor.h +0 -67
- data/src/core/lib/gprpp/status_helper.cc +44 -30
- data/src/core/lib/gprpp/time.cc +8 -0
- data/src/core/lib/gprpp/time.h +4 -0
- 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 +18 -12
- data/src/core/lib/http/httpcli.h +19 -3
- data/src/core/lib/http/httpcli_security_connector.cc +16 -4
- 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 -2
- data/src/core/lib/iomgr/endpoint.h +1 -1
- data/src/core/lib/iomgr/endpoint_cfstream.cc +2 -2
- data/src/core/lib/iomgr/error.cc +11 -9
- data/src/core/lib/iomgr/error.h +9 -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 +77 -52
- 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/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/resolve_address_posix.cc +1 -1
- data/src/core/lib/iomgr/resolve_address_windows.cc +1 -1
- 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 +91 -29
- 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/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/iomgr/work_serializer.h +2 -3
- 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 +7 -13
- data/src/core/lib/promise/loop.h +1 -0
- data/src/core/lib/promise/promise.h +1 -0
- data/src/core/lib/promise/sleep.cc +36 -31
- data/src/core/lib/promise/sleep.h +25 -25
- data/src/core/lib/resolver/resolver.cc +5 -0
- data/src/core/lib/resolver/resolver.h +3 -0
- data/src/core/lib/resolver/resolver_factory.h +5 -2
- data/src/core/lib/resolver/resolver_registry.cc +2 -9
- data/src/core/lib/resolver/resolver_registry.h +12 -1
- data/src/core/lib/resolver/server_address.cc +8 -0
- data/src/core/lib/resolver/server_address.h +9 -2
- data/src/core/lib/resource_quota/memory_quota.cc +18 -60
- data/src/core/lib/resource_quota/memory_quota.h +11 -25
- 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 +9 -3
- 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 -0
- data/src/core/lib/security/authorization/grpc_server_authz_filter.h +12 -1
- data/src/core/lib/security/authorization/matchers.cc +9 -1
- data/src/core/lib/security/authorization/matchers.h +7 -0
- data/src/core/lib/security/authorization/rbac_policy.cc +5 -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 +4 -2
- data/src/core/lib/security/credentials/alts/alts_credentials.h +6 -1
- 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 +4 -4
- data/src/core/lib/security/credentials/composite/composite_credentials.h +16 -2
- data/src/core/lib/security/credentials/credentials.cc +4 -8
- data/src/core/lib/security/credentials/credentials.h +10 -8
- data/src/core/lib/security/credentials/external/aws_external_account_credentials.cc +28 -10
- 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 +24 -9
- 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 +12 -4
- 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 +20 -4
- data/src/core/lib/security/credentials/external/url_external_account_credentials.h +10 -0
- data/src/core/lib/security/credentials/fake/fake_credentials.cc +8 -6
- data/src/core/lib/security/credentials/fake/fake_credentials.h +13 -1
- 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 +27 -10
- data/src/core/lib/security/credentials/google_default/google_default_credentials.h +10 -1
- data/src/core/lib/security/credentials/iam/iam_credentials.cc +9 -3
- data/src/core/lib/security/credentials/iam/iam_credentials.h +10 -0
- data/src/core/lib/security/credentials/insecure/insecure_credentials.cc +4 -0
- data/src/core/lib/security/credentials/insecure/insecure_credentials.h +5 -0
- data/src/core/lib/security/credentials/jwt/json_token.cc +5 -2
- data/src/core/lib/security/credentials/jwt/json_token.h +2 -2
- data/src/core/lib/security/credentials/jwt/jwt_credentials.cc +11 -5
- data/src/core/lib/security/credentials/jwt/jwt_credentials.h +14 -0
- data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +28 -3
- data/src/core/lib/security/credentials/jwt/jwt_verifier.h +4 -2
- data/src/core/lib/security/credentials/local/local_credentials.cc +4 -3
- data/src/core/lib/security/credentials/local/local_credentials.h +7 -0
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +26 -13
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.h +20 -0
- data/src/core/lib/security/credentials/plugin/plugin_credentials.cc +8 -7
- data/src/core/lib/security/credentials/plugin/plugin_credentials.h +24 -0
- data/src/core/lib/security/credentials/ssl/ssl_credentials.cc +5 -0
- data/src/core/lib/security/credentials/ssl/ssl_credentials.h +13 -0
- 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 +9 -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 +7 -2
- data/src/core/lib/security/credentials/tls/tls_credentials.h +5 -1
- 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 +8 -1
- data/src/core/lib/security/credentials/xds/xds_credentials.h +14 -0
- data/src/core/lib/security/security_connector/alts/alts_security_connector.cc +22 -2
- 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 +17 -1
- data/src/core/lib/security/security_connector/fake/fake_security_connector.h +2 -2
- data/src/core/lib/security/security_connector/insecure/insecure_security_connector.cc +9 -0
- data/src/core/lib/security/security_connector/insecure/insecure_security_connector.h +17 -2
- 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 +22 -3
- data/src/core/lib/security/security_connector/local/local_security_connector.h +6 -2
- data/src/core/lib/security/security_connector/security_connector.cc +20 -18
- data/src/core/lib/security/security_connector/security_connector.h +18 -6
- data/src/core/lib/security/security_connector/ssl/ssl_security_connector.cc +18 -6
- 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 +21 -13
- data/src/core/lib/security/security_connector/tls/tls_security_connector.h +23 -3
- data/src/core/lib/security/transport/auth_filters.h +7 -0
- data/src/core/lib/security/transport/client_auth_filter.cc +18 -9
- 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 +44 -11
- data/src/core/lib/security/transport/security_handshaker.h +4 -0
- 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_call_data.h +2 -1
- data/src/core/lib/service_config/service_config_impl.cc +6 -6
- data/src/core/lib/service_config/service_config_impl.h +1 -3
- data/src/core/lib/service_config/service_config_parser.cc +2 -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 +53 -115
- data/src/core/lib/surface/call.h +5 -1
- data/src/core/lib/surface/channel.h +2 -0
- data/src/core/lib/surface/channel_ping.cc +1 -1
- data/src/core/lib/surface/completion_queue.cc +15 -14
- data/src/core/lib/surface/completion_queue.h +2 -1
- data/src/core/lib/surface/init.cc +0 -1
- data/src/core/lib/surface/lame_client.cc +1 -1
- data/src/core/lib/surface/lame_client.h +1 -1
- data/src/core/lib/surface/server.cc +14 -8
- data/src/core/lib/surface/server.h +4 -1
- data/src/core/lib/surface/validate_metadata.cc +1 -1
- data/src/core/lib/surface/version.cc +2 -2
- data/src/core/lib/transport/error_utils.cc +13 -7
- data/src/core/lib/transport/handshaker.cc +3 -3
- data/src/core/lib/transport/http_connect_handshaker.cc +4 -4
- data/src/core/lib/transport/tcp_connect_handshaker.cc +2 -2
- data/src/core/lib/transport/transport.cc +0 -3
- data/src/core/lib/transport/transport.h +20 -14
- 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_tsi_handshaker.cc +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 +13 -1
- data/src/core/tsi/fake_transport_security.h +6 -0
- data/src/core/tsi/ssl_transport_security.cc +1 -1
- data/src/core/tsi/transport_security_grpc.cc +3 -2
- data/src/core/tsi/transport_security_grpc.h +5 -2
- 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 +49 -18
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +1 -1
- data/src/ruby/lib/grpc/errors.rb +1 -1
- data/src/ruby/lib/grpc/version.rb +1 -1
- 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/bind_front.h +10 -1
- data/third_party/abseil-cpp/absl/functional/function_ref.h +2 -1
- 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
- metadata +39 -15
- 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
@@ -0,0 +1,291 @@
|
|
1
|
+
//
|
2
|
+
// Copyright 2022 gRPC authors.
|
3
|
+
//
|
4
|
+
// Licensed under the Apache License, Version 2.0 (the "License");
|
5
|
+
// you may not use this file except in compliance with the License.
|
6
|
+
// You may obtain a copy of the License at
|
7
|
+
//
|
8
|
+
// http://www.apache.org/licenses/LICENSE-2.0
|
9
|
+
//
|
10
|
+
// Unless required by applicable law or agreed to in writing, software
|
11
|
+
// distributed under the License is distributed on an "AS IS" BASIS,
|
12
|
+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
13
|
+
// See the License for the specific language governing permissions and
|
14
|
+
// limitations under the License.
|
15
|
+
//
|
16
|
+
|
17
|
+
#include <grpc/support/port_platform.h>
|
18
|
+
|
19
|
+
#include "src/core/ext/xds/xds_lb_policy_registry.h"
|
20
|
+
|
21
|
+
#include <stddef.h>
|
22
|
+
|
23
|
+
#include <string>
|
24
|
+
#include <type_traits>
|
25
|
+
#include <utility>
|
26
|
+
#include <vector>
|
27
|
+
|
28
|
+
#include "absl/memory/memory.h"
|
29
|
+
#include "absl/status/status.h"
|
30
|
+
#include "absl/strings/str_cat.h"
|
31
|
+
#include "absl/strings/str_format.h"
|
32
|
+
#include "envoy/config/core/v3/extension.upb.h"
|
33
|
+
#include "envoy/extensions/load_balancing_policies/ring_hash/v3/ring_hash.upb.h"
|
34
|
+
#include "envoy/extensions/load_balancing_policies/wrr_locality/v3/wrr_locality.upb.h"
|
35
|
+
#include "google/protobuf/any.upb.h"
|
36
|
+
#include "google/protobuf/struct.upb.h"
|
37
|
+
#include "google/protobuf/struct.upbdefs.h"
|
38
|
+
#include "google/protobuf/wrappers.upb.h"
|
39
|
+
#include "upb/json_encode.h"
|
40
|
+
#include "upb/upb.h"
|
41
|
+
#include "upb/upb.hpp"
|
42
|
+
#include "xds/type/v3/typed_struct.upb.h"
|
43
|
+
|
44
|
+
#include "src/core/ext/filters/client_channel/lb_policy_registry.h"
|
45
|
+
#include "src/core/ext/xds/upb_utils.h"
|
46
|
+
#include "src/core/ext/xds/xds_common_types.h"
|
47
|
+
#include "src/core/lib/iomgr/error.h"
|
48
|
+
|
49
|
+
namespace grpc_core {
|
50
|
+
|
51
|
+
namespace {
|
52
|
+
|
53
|
+
class RingHashLbPolicyConfigFactory
|
54
|
+
: public XdsLbPolicyRegistry::ConfigFactory {
|
55
|
+
public:
|
56
|
+
absl::StatusOr<Json::Object> ConvertXdsLbPolicyConfig(
|
57
|
+
const XdsEncodingContext& context, absl::string_view configuration,
|
58
|
+
int /* recursion_depth */) override {
|
59
|
+
const auto* resource =
|
60
|
+
envoy_extensions_load_balancing_policies_ring_hash_v3_RingHash_parse(
|
61
|
+
configuration.data(), configuration.size(), context.arena);
|
62
|
+
if (resource == nullptr) {
|
63
|
+
return absl::InvalidArgumentError(
|
64
|
+
"Can't decode RingHash loadbalancing policy");
|
65
|
+
}
|
66
|
+
if (envoy_extensions_load_balancing_policies_ring_hash_v3_RingHash_hash_function(
|
67
|
+
resource) !=
|
68
|
+
envoy_extensions_load_balancing_policies_ring_hash_v3_RingHash_XX_HASH) {
|
69
|
+
return absl::InvalidArgumentError(
|
70
|
+
"Invalid hash function provided for RingHash loadbalancing policy. "
|
71
|
+
"Only XX_HASH is supported.");
|
72
|
+
}
|
73
|
+
Json::Object json;
|
74
|
+
const auto* min_ring_size =
|
75
|
+
envoy_extensions_load_balancing_policies_ring_hash_v3_RingHash_minimum_ring_size(
|
76
|
+
resource);
|
77
|
+
if (min_ring_size != nullptr) {
|
78
|
+
json.emplace("minRingSize",
|
79
|
+
google_protobuf_UInt64Value_value(min_ring_size));
|
80
|
+
}
|
81
|
+
const auto* max_ring_size =
|
82
|
+
envoy_extensions_load_balancing_policies_ring_hash_v3_RingHash_maximum_ring_size(
|
83
|
+
resource);
|
84
|
+
if (max_ring_size != nullptr) {
|
85
|
+
json.emplace("maxRingSize",
|
86
|
+
google_protobuf_UInt64Value_value(max_ring_size));
|
87
|
+
}
|
88
|
+
return Json::Object{{"ring_hash_experimental", std::move(json)}};
|
89
|
+
}
|
90
|
+
|
91
|
+
absl::string_view type() override { return Type(); }
|
92
|
+
|
93
|
+
static absl::string_view Type() {
|
94
|
+
return "envoy.extensions.load_balancing_policies.ring_hash.v3.RingHash";
|
95
|
+
}
|
96
|
+
};
|
97
|
+
|
98
|
+
class RoundRobinLbPolicyConfigFactory
|
99
|
+
: public XdsLbPolicyRegistry::ConfigFactory {
|
100
|
+
public:
|
101
|
+
absl::StatusOr<Json::Object> ConvertXdsLbPolicyConfig(
|
102
|
+
const XdsEncodingContext& /* context */,
|
103
|
+
absl::string_view /* configuration */,
|
104
|
+
int /* recursion_depth */) override {
|
105
|
+
return Json::Object{{"round_robin", Json::Object()}};
|
106
|
+
}
|
107
|
+
|
108
|
+
absl::string_view type() override { return Type(); }
|
109
|
+
|
110
|
+
static absl::string_view Type() {
|
111
|
+
return "envoy.extensions.load_balancing_policies.round_robin.v3.RoundRobin";
|
112
|
+
}
|
113
|
+
};
|
114
|
+
|
115
|
+
class WrrLocalityLbPolicyConfigFactory
|
116
|
+
: public XdsLbPolicyRegistry::ConfigFactory {
|
117
|
+
public:
|
118
|
+
absl::StatusOr<Json::Object> ConvertXdsLbPolicyConfig(
|
119
|
+
const XdsEncodingContext& context, absl::string_view configuration,
|
120
|
+
int recursion_depth) override {
|
121
|
+
const auto* resource =
|
122
|
+
envoy_extensions_load_balancing_policies_wrr_locality_v3_WrrLocality_parse(
|
123
|
+
configuration.data(), configuration.size(), context.arena);
|
124
|
+
if (resource == nullptr) {
|
125
|
+
return absl::InvalidArgumentError(
|
126
|
+
"Can't decode WrrLocality loadbalancing policy");
|
127
|
+
}
|
128
|
+
const auto* endpoint_picking_policy =
|
129
|
+
envoy_extensions_load_balancing_policies_wrr_locality_v3_WrrLocality_endpoint_picking_policy(
|
130
|
+
resource);
|
131
|
+
if (endpoint_picking_policy == nullptr) {
|
132
|
+
return absl::InvalidArgumentError(
|
133
|
+
"WrrLocality: endpoint_picking_policy not found");
|
134
|
+
}
|
135
|
+
auto child_policy = XdsLbPolicyRegistry::ConvertXdsLbPolicyConfig(
|
136
|
+
context, endpoint_picking_policy, recursion_depth + 1);
|
137
|
+
if (!child_policy.ok()) {
|
138
|
+
return absl::InvalidArgumentError(
|
139
|
+
absl::StrCat("Error parsing WrrLocality load balancing policy: ",
|
140
|
+
child_policy.status().message()));
|
141
|
+
}
|
142
|
+
return Json::Object{
|
143
|
+
{"xds_wrr_locality_experimental",
|
144
|
+
Json::Object{{"child_policy", *std::move(child_policy)}}}};
|
145
|
+
}
|
146
|
+
|
147
|
+
absl::string_view type() override { return Type(); }
|
148
|
+
|
149
|
+
static absl::string_view Type() {
|
150
|
+
return "envoy.extensions.load_balancing_policies.wrr_locality.v3."
|
151
|
+
"WrrLocality";
|
152
|
+
}
|
153
|
+
};
|
154
|
+
|
155
|
+
absl::StatusOr<Json> ParseStructToJson(const XdsEncodingContext& context,
|
156
|
+
const google_protobuf_Struct* resource) {
|
157
|
+
upb::Status status;
|
158
|
+
const auto* msg_def = google_protobuf_Struct_getmsgdef(context.symtab);
|
159
|
+
size_t json_size = upb_JsonEncode(resource, msg_def, context.symtab, 0,
|
160
|
+
nullptr, 0, status.ptr());
|
161
|
+
if (json_size == static_cast<size_t>(-1)) {
|
162
|
+
return absl::InvalidArgumentError(
|
163
|
+
absl::StrCat("Error parsing google::Protobuf::Struct: ",
|
164
|
+
upb_Status_ErrorMessage(status.ptr())));
|
165
|
+
}
|
166
|
+
void* buf = upb_Arena_Malloc(context.arena, json_size + 1);
|
167
|
+
upb_JsonEncode(resource, msg_def, context.symtab, 0,
|
168
|
+
reinterpret_cast<char*>(buf), json_size + 1, status.ptr());
|
169
|
+
grpc_error_handle error = GRPC_ERROR_NONE;
|
170
|
+
auto json = Json::Parse(reinterpret_cast<char*>(buf), &error);
|
171
|
+
if (!GRPC_ERROR_IS_NONE(error)) {
|
172
|
+
// This should not happen
|
173
|
+
auto ret_status = absl::InternalError(
|
174
|
+
absl::StrCat("Error parsing JSON form of google::Protobuf::Struct "
|
175
|
+
"produced by upb library: ",
|
176
|
+
grpc_error_std_string(error)));
|
177
|
+
GRPC_ERROR_UNREF(error);
|
178
|
+
return ret_status;
|
179
|
+
}
|
180
|
+
return json;
|
181
|
+
}
|
182
|
+
|
183
|
+
} // namespace
|
184
|
+
|
185
|
+
//
|
186
|
+
// XdsLbPolicyRegistry
|
187
|
+
//
|
188
|
+
|
189
|
+
absl::StatusOr<Json::Array> XdsLbPolicyRegistry::ConvertXdsLbPolicyConfig(
|
190
|
+
const XdsEncodingContext& context,
|
191
|
+
const envoy_config_cluster_v3_LoadBalancingPolicy* lb_policy,
|
192
|
+
int recursion_depth) {
|
193
|
+
constexpr int kMaxRecursionDepth = 16;
|
194
|
+
if (recursion_depth >= kMaxRecursionDepth) {
|
195
|
+
return absl::InvalidArgumentError(
|
196
|
+
absl::StrFormat("LoadBalancingPolicy configuration has a recursion "
|
197
|
+
"depth of more than %d.",
|
198
|
+
kMaxRecursionDepth));
|
199
|
+
}
|
200
|
+
size_t size = 0;
|
201
|
+
const auto* policies =
|
202
|
+
envoy_config_cluster_v3_LoadBalancingPolicy_policies(lb_policy, &size);
|
203
|
+
for (size_t i = 0; i < size; ++i) {
|
204
|
+
absl::StatusOr<Json::Object> policy;
|
205
|
+
const auto* typed_extension_config =
|
206
|
+
envoy_config_cluster_v3_LoadBalancingPolicy_Policy_typed_extension_config(
|
207
|
+
policies[i]);
|
208
|
+
if (typed_extension_config == nullptr) {
|
209
|
+
return absl::InvalidArgumentError(
|
210
|
+
"Error parsing LoadBalancingPolicy::Policy - Missing "
|
211
|
+
"typed_extension_config field");
|
212
|
+
}
|
213
|
+
const auto* typed_config =
|
214
|
+
envoy_config_core_v3_TypedExtensionConfig_typed_config(
|
215
|
+
typed_extension_config);
|
216
|
+
if (typed_config == nullptr) {
|
217
|
+
return absl::InvalidArgumentError(
|
218
|
+
"Error parsing LoadBalancingPolicy::Policy - Missing "
|
219
|
+
"TypedExtensionConfig::typed_config field");
|
220
|
+
}
|
221
|
+
auto type = ExtractExtensionTypeName(context, typed_config);
|
222
|
+
if (!type.ok()) {
|
223
|
+
return absl::InvalidArgumentError(absl::StrCat(
|
224
|
+
"Error parsing "
|
225
|
+
"LoadBalancingPolicy::Policy::TypedExtensionConfig::typed_config: ",
|
226
|
+
type.status().message()));
|
227
|
+
}
|
228
|
+
absl::string_view value =
|
229
|
+
UpbStringToAbsl(google_protobuf_Any_value(typed_config));
|
230
|
+
auto config_factory_it = Get()->policy_config_factories_.find(type->type);
|
231
|
+
if (config_factory_it != Get()->policy_config_factories_.end()) {
|
232
|
+
policy = config_factory_it->second->ConvertXdsLbPolicyConfig(
|
233
|
+
context, value, recursion_depth);
|
234
|
+
if (!policy.ok()) {
|
235
|
+
return absl::InvalidArgumentError(
|
236
|
+
absl::StrCat("Error parsing "
|
237
|
+
"LoadBalancingPolicy::Policy::TypedExtensionConfig::"
|
238
|
+
"typed_config to JSON: ",
|
239
|
+
policy.status().message()));
|
240
|
+
}
|
241
|
+
} else if (type->typed_struct != nullptr) {
|
242
|
+
// Custom lb policy config
|
243
|
+
std::string custom_type = std::string(type->type);
|
244
|
+
if (!LoadBalancingPolicyRegistry::LoadBalancingPolicyExists(
|
245
|
+
custom_type.c_str(), nullptr)) {
|
246
|
+
// Skip unsupported custom lb policy.
|
247
|
+
continue;
|
248
|
+
}
|
249
|
+
// Convert typed struct to json.
|
250
|
+
auto value = xds_type_v3_TypedStruct_value(type->typed_struct);
|
251
|
+
if (value == nullptr) {
|
252
|
+
policy = Json::Object{{std::move(custom_type), Json() /* null */}};
|
253
|
+
} else {
|
254
|
+
auto parsed_value = ParseStructToJson(context, value);
|
255
|
+
if (!parsed_value.ok()) {
|
256
|
+
return absl::InvalidArgumentError(absl::StrCat(
|
257
|
+
"Error parsing LoadBalancingPolicy: Custom Policy: ", custom_type,
|
258
|
+
": ", parsed_value.status().message()));
|
259
|
+
}
|
260
|
+
policy =
|
261
|
+
Json::Object{{std::move(custom_type), *(std::move(parsed_value))}};
|
262
|
+
}
|
263
|
+
} else {
|
264
|
+
// Unsupported type. Skipping entry.
|
265
|
+
continue;
|
266
|
+
}
|
267
|
+
return Json::Array{std::move(policy.value())};
|
268
|
+
}
|
269
|
+
return absl::InvalidArgumentError(
|
270
|
+
"No supported load balancing policy config found.");
|
271
|
+
}
|
272
|
+
|
273
|
+
XdsLbPolicyRegistry::XdsLbPolicyRegistry() {
|
274
|
+
policy_config_factories_.emplace(
|
275
|
+
RingHashLbPolicyConfigFactory::Type(),
|
276
|
+
absl::make_unique<RingHashLbPolicyConfigFactory>());
|
277
|
+
policy_config_factories_.emplace(
|
278
|
+
RoundRobinLbPolicyConfigFactory::Type(),
|
279
|
+
absl::make_unique<RoundRobinLbPolicyConfigFactory>());
|
280
|
+
policy_config_factories_.emplace(
|
281
|
+
WrrLocalityLbPolicyConfigFactory::Type(),
|
282
|
+
absl::make_unique<WrrLocalityLbPolicyConfigFactory>());
|
283
|
+
}
|
284
|
+
|
285
|
+
XdsLbPolicyRegistry* XdsLbPolicyRegistry::Get() {
|
286
|
+
// This is thread-safe since C++11
|
287
|
+
static XdsLbPolicyRegistry* instance = new XdsLbPolicyRegistry();
|
288
|
+
return instance;
|
289
|
+
}
|
290
|
+
|
291
|
+
} // namespace grpc_core
|
@@ -0,0 +1,72 @@
|
|
1
|
+
//
|
2
|
+
// Copyright 2022 gRPC authors.
|
3
|
+
//
|
4
|
+
// Licensed under the Apache License, Version 2.0 (the "License");
|
5
|
+
// you may not use this file except in compliance with the License.
|
6
|
+
// You may obtain a copy of the License at
|
7
|
+
//
|
8
|
+
// http://www.apache.org/licenses/LICENSE-2.0
|
9
|
+
//
|
10
|
+
// Unless required by applicable law or agreed to in writing, software
|
11
|
+
// distributed under the License is distributed on an "AS IS" BASIS,
|
12
|
+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
13
|
+
// See the License for the specific language governing permissions and
|
14
|
+
// limitations under the License.
|
15
|
+
//
|
16
|
+
|
17
|
+
#ifndef GRPC_CORE_EXT_XDS_XDS_LB_POLICY_REGISTRY_H
|
18
|
+
#define GRPC_CORE_EXT_XDS_XDS_LB_POLICY_REGISTRY_H
|
19
|
+
|
20
|
+
#include <grpc/support/port_platform.h>
|
21
|
+
|
22
|
+
#include <map>
|
23
|
+
#include <memory>
|
24
|
+
|
25
|
+
#include "absl/status/statusor.h"
|
26
|
+
#include "absl/strings/string_view.h"
|
27
|
+
#include "envoy/config/cluster/v3/cluster.upb.h"
|
28
|
+
|
29
|
+
#include "src/core/ext/xds/upb_utils.h"
|
30
|
+
#include "src/core/lib/json/json.h"
|
31
|
+
|
32
|
+
namespace grpc_core {
|
33
|
+
|
34
|
+
// A registry that maintans a set of converters that are able to map xDS
|
35
|
+
// loadbalancing policy configurations to gRPC's JSON format.
|
36
|
+
class XdsLbPolicyRegistry {
|
37
|
+
public:
|
38
|
+
class ConfigFactory {
|
39
|
+
public:
|
40
|
+
virtual ~ConfigFactory() {}
|
41
|
+
virtual absl::StatusOr<Json::Object> ConvertXdsLbPolicyConfig(
|
42
|
+
const XdsEncodingContext& context, absl::string_view configuration,
|
43
|
+
int recursion_depth) = 0;
|
44
|
+
|
45
|
+
virtual absl::string_view type() = 0;
|
46
|
+
};
|
47
|
+
|
48
|
+
// Converts an xDS cluster load balancing policy message to gRPC's JSON
|
49
|
+
// format. An error is returned if none of the lb policies in the list are
|
50
|
+
// supported, or if a supported lb policy configuration conversion fails. \a
|
51
|
+
// recursion_depth indicates the current depth of the tree if lb_policy
|
52
|
+
// configuration recursively holds other lb policies.
|
53
|
+
static absl::StatusOr<Json::Array> ConvertXdsLbPolicyConfig(
|
54
|
+
const XdsEncodingContext& context,
|
55
|
+
const envoy_config_cluster_v3_LoadBalancingPolicy* lb_policy,
|
56
|
+
int recursion_depth = 0);
|
57
|
+
|
58
|
+
private:
|
59
|
+
XdsLbPolicyRegistry();
|
60
|
+
|
61
|
+
static XdsLbPolicyRegistry* Get();
|
62
|
+
|
63
|
+
// A map of config factories that goes from the type of the lb policy config
|
64
|
+
// to the config factory.
|
65
|
+
std::map<absl::string_view /* Owned by ConfigFactory */,
|
66
|
+
std::unique_ptr<ConfigFactory>>
|
67
|
+
policy_config_factories_;
|
68
|
+
};
|
69
|
+
|
70
|
+
} // namespace grpc_core
|
71
|
+
|
72
|
+
#endif // GRPC_CORE_EXT_XDS_XDS_LB_POLICY_REGISTRY_H
|
@@ -18,10 +18,17 @@
|
|
18
18
|
|
19
19
|
#include "src/core/ext/xds/xds_listener.h"
|
20
20
|
|
21
|
+
#include <stdint.h>
|
22
|
+
|
23
|
+
#include <set>
|
24
|
+
#include <type_traits>
|
25
|
+
#include <utility>
|
26
|
+
|
27
|
+
#include "absl/memory/memory.h"
|
28
|
+
#include "absl/status/status.h"
|
21
29
|
#include "absl/strings/str_cat.h"
|
22
30
|
#include "absl/strings/str_format.h"
|
23
31
|
#include "absl/strings/str_join.h"
|
24
|
-
#include "absl/strings/str_split.h"
|
25
32
|
#include "envoy/config/core/v3/address.upb.h"
|
26
33
|
#include "envoy/config/core/v3/base.upb.h"
|
27
34
|
#include "envoy/config/core/v3/config_source.upb.h"
|
@@ -30,18 +37,29 @@
|
|
30
37
|
#include "envoy/config/listener/v3/listener.upb.h"
|
31
38
|
#include "envoy/config/listener/v3/listener.upbdefs.h"
|
32
39
|
#include "envoy/config/listener/v3/listener_components.upb.h"
|
40
|
+
#include "envoy/config/route/v3/route.upb.h"
|
33
41
|
#include "envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.h"
|
34
42
|
#include "envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.h"
|
43
|
+
#include "envoy/extensions/transport_sockets/tls/v3/tls.upb.h"
|
44
|
+
#include "google/protobuf/any.upb.h"
|
45
|
+
#include "google/protobuf/duration.upb.h"
|
35
46
|
#include "google/protobuf/wrappers.upb.h"
|
36
47
|
#include "upb/text_encode.h"
|
37
48
|
#include "upb/upb.h"
|
38
|
-
|
49
|
+
|
50
|
+
#include <grpc/support/log.h>
|
39
51
|
|
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"
|
62
|
+
#include "src/core/lib/transport/error_utils.h"
|
45
63
|
|
46
64
|
namespace grpc_core {
|
47
65
|
|
@@ -64,7 +82,7 @@ bool XdsListenerResource::DownstreamTlsContext::Empty() const {
|
|
64
82
|
//
|
65
83
|
|
66
84
|
std::string XdsListenerResource::HttpConnectionManager::ToString() const {
|
67
|
-
|
85
|
+
std::vector<std::string> contents;
|
68
86
|
contents.push_back(absl::StrFormat(
|
69
87
|
"route_config_name=%s",
|
70
88
|
!route_config_name.empty() ? route_config_name.c_str() : "<inlined>"));
|
@@ -140,7 +158,7 @@ struct FilterChain {
|
|
140
158
|
};
|
141
159
|
|
142
160
|
std::string FilterChain::FilterChainMatch::ToString() const {
|
143
|
-
|
161
|
+
std::vector<std::string> contents;
|
144
162
|
if (destination_port != 0) {
|
145
163
|
contents.push_back(absl::StrCat("destination_port=", destination_port));
|
146
164
|
}
|
@@ -229,7 +247,7 @@ std::string XdsListenerResource::FilterChainMap::ToString() const {
|
|
229
247
|
//
|
230
248
|
|
231
249
|
std::string XdsListenerResource::ToString() const {
|
232
|
-
|
250
|
+
std::vector<std::string> contents;
|
233
251
|
if (type == ListenerType::kTcpListener) {
|
234
252
|
contents.push_back(absl::StrCat("address=", address));
|
235
253
|
contents.push_back(
|
@@ -332,30 +350,30 @@ grpc_error_handle HttpConnectionManagerParse(
|
|
332
350
|
return GRPC_ERROR_CREATE_FROM_CPP_STRING(
|
333
351
|
absl::StrCat("no filter config specified for filter name ", name));
|
334
352
|
}
|
335
|
-
|
336
|
-
|
337
|
-
|
338
|
-
|
353
|
+
auto filter_type = ExtractExtensionTypeName(context, any);
|
354
|
+
if (!filter_type.ok()) {
|
355
|
+
return absl_status_to_grpc_error(filter_type.status());
|
356
|
+
}
|
339
357
|
const XdsHttpFilterImpl* filter_impl =
|
340
|
-
XdsHttpFilterRegistry::GetFilterForType(filter_type);
|
358
|
+
XdsHttpFilterRegistry::GetFilterForType(filter_type->type);
|
341
359
|
if (filter_impl == nullptr) {
|
342
360
|
if (is_optional) continue;
|
343
|
-
return GRPC_ERROR_CREATE_FROM_CPP_STRING(
|
344
|
-
|
361
|
+
return GRPC_ERROR_CREATE_FROM_CPP_STRING(absl::StrCat(
|
362
|
+
"no filter registered for config type ", filter_type->type));
|
345
363
|
}
|
346
364
|
if ((is_client && !filter_impl->IsSupportedOnClients()) ||
|
347
365
|
(!is_client && !filter_impl->IsSupportedOnServers())) {
|
348
366
|
if (is_optional) continue;
|
349
|
-
return GRPC_ERROR_CREATE_FROM_CPP_STRING(
|
350
|
-
|
351
|
-
|
367
|
+
return GRPC_ERROR_CREATE_FROM_CPP_STRING(absl::StrFormat(
|
368
|
+
"Filter %s is not supported on %s", filter_type->type,
|
369
|
+
is_client ? "clients" : "servers"));
|
352
370
|
}
|
353
371
|
absl::StatusOr<XdsHttpFilterImpl::FilterConfig> filter_config =
|
354
372
|
filter_impl->GenerateFilterConfig(google_protobuf_Any_value(any),
|
355
373
|
context.arena);
|
356
374
|
if (!filter_config.ok()) {
|
357
375
|
return GRPC_ERROR_CREATE_FROM_CPP_STRING(absl::StrCat(
|
358
|
-
"filter config for type ", filter_type,
|
376
|
+
"filter config for type ", filter_type->type,
|
359
377
|
" failed to parse: ", StatusToString(filter_config.status())));
|
360
378
|
}
|
361
379
|
http_connection_manager->http_filters.emplace_back(
|
@@ -414,7 +432,7 @@ grpc_error_handle HttpConnectionManagerParse(
|
|
414
432
|
XdsRouteConfigResource rds_update;
|
415
433
|
grpc_error_handle error =
|
416
434
|
XdsRouteConfigResource::Parse(context, route_config, &rds_update);
|
417
|
-
if (error
|
435
|
+
if (!GRPC_ERROR_IS_NONE(error)) return error;
|
418
436
|
http_connection_manager->rds_update = std::move(rds_update);
|
419
437
|
return GRPC_ERROR_NONE;
|
420
438
|
}
|
@@ -498,7 +516,7 @@ grpc_error_handle DownstreamTlsContextParse(
|
|
498
516
|
grpc_error_handle error =
|
499
517
|
CommonTlsContext::Parse(context, common_tls_context,
|
500
518
|
&downstream_tls_context->common_tls_context);
|
501
|
-
if (error
|
519
|
+
if (!GRPC_ERROR_IS_NONE(error)) errors.push_back(error);
|
502
520
|
}
|
503
521
|
auto* require_client_certificate =
|
504
522
|
envoy_extensions_transport_sockets_tls_v3_DownstreamTlsContext_require_client_certificate(
|
@@ -551,7 +569,7 @@ grpc_error_handle CidrRangeParse(
|
|
551
569
|
envoy_config_core_v3_CidrRange_address_prefix(cidr_range_proto));
|
552
570
|
grpc_error_handle error =
|
553
571
|
grpc_string_to_sockaddr(&cidr_range->address, address_prefix.c_str(), 0);
|
554
|
-
if (error
|
572
|
+
if (!GRPC_ERROR_IS_NONE(error)) return error;
|
555
573
|
cidr_range->prefix_len = 0;
|
556
574
|
auto* prefix_len_proto =
|
557
575
|
envoy_config_core_v3_CidrRange_prefix_len(cidr_range_proto);
|
@@ -585,7 +603,7 @@ grpc_error_handle FilterChainMatchParse(
|
|
585
603
|
for (size_t i = 0; i < size; i++) {
|
586
604
|
XdsListenerResource::FilterChainMap::CidrRange cidr_range;
|
587
605
|
grpc_error_handle error = CidrRangeParse(prefix_ranges[i], &cidr_range);
|
588
|
-
if (error
|
606
|
+
if (!GRPC_ERROR_IS_NONE(error)) return error;
|
589
607
|
filter_chain_match->prefix_ranges.push_back(cidr_range);
|
590
608
|
}
|
591
609
|
filter_chain_match->source_type =
|
@@ -600,7 +618,7 @@ grpc_error_handle FilterChainMatchParse(
|
|
600
618
|
XdsListenerResource::FilterChainMap::CidrRange cidr_range;
|
601
619
|
grpc_error_handle error =
|
602
620
|
CidrRangeParse(source_prefix_ranges[i], &cidr_range);
|
603
|
-
if (error
|
621
|
+
if (!GRPC_ERROR_IS_NONE(error)) return error;
|
604
622
|
filter_chain_match->source_prefix_ranges.push_back(cidr_range);
|
605
623
|
}
|
606
624
|
auto* source_ports = envoy_config_listener_v3_FilterChainMatch_source_ports(
|
@@ -639,7 +657,7 @@ grpc_error_handle FilterChainParse(
|
|
639
657
|
if (filter_chain_match != nullptr) {
|
640
658
|
grpc_error_handle error = FilterChainMatchParse(
|
641
659
|
filter_chain_match, &filter_chain->filter_chain_match);
|
642
|
-
if (error
|
660
|
+
if (!GRPC_ERROR_IS_NONE(error)) errors.push_back(error);
|
643
661
|
}
|
644
662
|
filter_chain->filter_chain_data =
|
645
663
|
std::make_shared<XdsListenerResource::FilterChainData>();
|
@@ -681,7 +699,7 @@ grpc_error_handle FilterChainParse(
|
|
681
699
|
grpc_error_handle error = HttpConnectionManagerParse(
|
682
700
|
false /* is_client */, context, http_connection_manager, is_v2,
|
683
701
|
&filter_chain->filter_chain_data->http_connection_manager);
|
684
|
-
if (error
|
702
|
+
if (!GRPC_ERROR_IS_NONE(error)) errors.push_back(error);
|
685
703
|
}
|
686
704
|
}
|
687
705
|
}
|
@@ -692,7 +710,7 @@ grpc_error_handle FilterChainParse(
|
|
692
710
|
grpc_error_handle error = DownstreamTlsContextParse(
|
693
711
|
context, transport_socket,
|
694
712
|
&filter_chain->filter_chain_data->downstream_tls_context);
|
695
|
-
if (error
|
713
|
+
if (!GRPC_ERROR_IS_NONE(error)) errors.push_back(error);
|
696
714
|
}
|
697
715
|
return GRPC_ERROR_CREATE_FROM_VECTOR("Error parsing FilterChain", &errors);
|
698
716
|
}
|
@@ -761,7 +779,7 @@ grpc_error_handle AddFilterChainDataForSourcePorts(
|
|
761
779
|
for (uint32_t port : filter_chain.filter_chain_match.source_ports) {
|
762
780
|
grpc_error_handle error =
|
763
781
|
AddFilterChainDataForSourcePort(filter_chain, ports_map, port);
|
764
|
-
if (error
|
782
|
+
if (!GRPC_ERROR_IS_NONE(error)) return error;
|
765
783
|
}
|
766
784
|
}
|
767
785
|
return GRPC_ERROR_NONE;
|
@@ -790,7 +808,7 @@ grpc_error_handle AddFilterChainDataForSourceIpRange(
|
|
790
808
|
}
|
791
809
|
grpc_error_handle error = AddFilterChainDataForSourcePorts(
|
792
810
|
filter_chain, &insert_result.first->second.ports_map);
|
793
|
-
if (error
|
811
|
+
if (!GRPC_ERROR_IS_NONE(error)) return error;
|
794
812
|
}
|
795
813
|
}
|
796
814
|
return GRPC_ERROR_NONE;
|
@@ -877,7 +895,7 @@ grpc_error_handle AddFilterChainDataForDestinationIpRange(
|
|
877
895
|
}
|
878
896
|
grpc_error_handle error = AddFilterChainDataForServerNames(
|
879
897
|
filter_chain, &insert_result.first->second);
|
880
|
-
if (error
|
898
|
+
if (!GRPC_ERROR_IS_NONE(error)) return error;
|
881
899
|
}
|
882
900
|
}
|
883
901
|
return GRPC_ERROR_NONE;
|
@@ -911,7 +929,7 @@ grpc_error_handle BuildFilterChainMap(
|
|
911
929
|
if (filter_chain.filter_chain_match.destination_port != 0) continue;
|
912
930
|
grpc_error_handle error = AddFilterChainDataForDestinationIpRange(
|
913
931
|
filter_chain, &internal_filter_chain_map.destination_ip_map);
|
914
|
-
if (error
|
932
|
+
if (!GRPC_ERROR_IS_NONE(error)) return error;
|
915
933
|
}
|
916
934
|
*filter_chain_map =
|
917
935
|
BuildFromInternalFilterChainMap(&internal_filter_chain_map);
|
@@ -926,7 +944,7 @@ grpc_error_handle LdsResourceParseServer(
|
|
926
944
|
grpc_error_handle error =
|
927
945
|
AddressParse(envoy_config_listener_v3_Listener_address(listener),
|
928
946
|
&lds_update->address);
|
929
|
-
if (error
|
947
|
+
if (!GRPC_ERROR_IS_NONE(error)) return error;
|
930
948
|
const auto* use_original_dst =
|
931
949
|
envoy_config_listener_v3_Listener_use_original_dst(listener);
|
932
950
|
if (use_original_dst != nullptr) {
|
@@ -943,19 +961,19 @@ grpc_error_handle LdsResourceParseServer(
|
|
943
961
|
for (size_t i = 0; i < size; i++) {
|
944
962
|
FilterChain filter_chain;
|
945
963
|
error = FilterChainParse(context, filter_chains[i], is_v2, &filter_chain);
|
946
|
-
if (error
|
964
|
+
if (!GRPC_ERROR_IS_NONE(error)) return error;
|
947
965
|
parsed_filter_chains.push_back(std::move(filter_chain));
|
948
966
|
}
|
949
967
|
error =
|
950
968
|
BuildFilterChainMap(parsed_filter_chains, &lds_update->filter_chain_map);
|
951
|
-
if (error
|
969
|
+
if (!GRPC_ERROR_IS_NONE(error)) return error;
|
952
970
|
auto* default_filter_chain =
|
953
971
|
envoy_config_listener_v3_Listener_default_filter_chain(listener);
|
954
972
|
if (default_filter_chain != nullptr) {
|
955
973
|
FilterChain filter_chain;
|
956
974
|
error =
|
957
975
|
FilterChainParse(context, default_filter_chain, is_v2, &filter_chain);
|
958
|
-
if (error
|
976
|
+
if (!GRPC_ERROR_IS_NONE(error)) return error;
|
959
977
|
if (filter_chain.filter_chain_data != nullptr) {
|
960
978
|
lds_update->default_filter_chain =
|
961
979
|
std::move(*filter_chain.filter_chain_data);
|
@@ -1027,7 +1045,7 @@ absl::StatusOr<XdsResourceType::DecodeResult> XdsListenerResourceType::Decode(
|
|
1027
1045
|
auto listener_data = absl::make_unique<ResourceDataSubclass>();
|
1028
1046
|
grpc_error_handle error =
|
1029
1047
|
LdsResourceParse(context, resource, is_v2, &listener_data->resource);
|
1030
|
-
if (error
|
1048
|
+
if (!GRPC_ERROR_IS_NONE(error)) {
|
1031
1049
|
std::string error_str = grpc_error_std_string(error);
|
1032
1050
|
GRPC_ERROR_UNREF(error);
|
1033
1051
|
if (GRPC_TRACE_FLAG_ENABLED(*context.tracer)) {
|
@@ -19,8 +19,14 @@
|
|
19
19
|
|
20
20
|
#include <grpc/support/port_platform.h>
|
21
21
|
|
22
|
+
#include <stdint.h>
|
23
|
+
#include <string.h>
|
24
|
+
|
25
|
+
#include <algorithm>
|
22
26
|
#include <array>
|
27
|
+
#include <cstdint>
|
23
28
|
#include <map>
|
29
|
+
#include <memory>
|
24
30
|
#include <string>
|
25
31
|
#include <vector>
|
26
32
|
|
@@ -29,12 +35,15 @@
|
|
29
35
|
#include "absl/types/optional.h"
|
30
36
|
#include "envoy/config/listener/v3/listener.upbdefs.h"
|
31
37
|
#include "envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.h"
|
38
|
+
#include "upb/def.h"
|
32
39
|
|
33
|
-
#include "src/core/ext/xds/
|
40
|
+
#include "src/core/ext/xds/upb_utils.h"
|
34
41
|
#include "src/core/ext/xds/xds_common_types.h"
|
35
42
|
#include "src/core/ext/xds/xds_http_filters.h"
|
36
43
|
#include "src/core/ext/xds/xds_resource_type_impl.h"
|
37
44
|
#include "src/core/ext/xds/xds_route_config.h"
|
45
|
+
#include "src/core/lib/gprpp/time.h"
|
46
|
+
#include "src/core/lib/iomgr/resolved_address.h"
|
38
47
|
|
39
48
|
namespace grpc_core {
|
40
49
|
|
@@ -14,6 +14,8 @@
|
|
14
14
|
// limitations under the License.
|
15
15
|
//
|
16
16
|
|
17
|
+
#ifndef GRPC_CORE_EXT_XDS_XDS_RESOURCE_TYPE_H
|
18
|
+
#define GRPC_CORE_EXT_XDS_XDS_RESOURCE_TYPE_H
|
17
19
|
#include <grpc/support/port_platform.h>
|
18
20
|
|
19
21
|
#include <memory>
|
@@ -21,12 +23,10 @@
|
|
21
23
|
|
22
24
|
#include "absl/status/statusor.h"
|
23
25
|
#include "absl/strings/string_view.h"
|
26
|
+
#include "upb/def.h"
|
24
27
|
|
25
28
|
#include "src/core/ext/xds/upb_utils.h"
|
26
29
|
|
27
|
-
#ifndef GRPC_CORE_EXT_XDS_XDS_RESOURCE_TYPE_H
|
28
|
-
#define GRPC_CORE_EXT_XDS_XDS_RESOURCE_TYPE_H
|
29
|
-
|
30
30
|
namespace grpc_core {
|
31
31
|
|
32
32
|
// Interface for an xDS resource type.
|