grpc 1.55.0 → 1.56.0.pre3
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 +100 -68
- data/include/grpc/event_engine/event_engine.h +4 -3
- data/include/grpc/grpc_audit_logging.h +96 -0
- data/include/grpc/module.modulemap +2 -0
- data/include/grpc/support/json.h +218 -0
- data/src/core/ext/filters/backend_metrics/backend_metric_filter.cc +5 -0
- data/src/core/ext/filters/client_channel/backend_metric.cc +2 -0
- data/src/core/ext/filters/client_channel/channel_connectivity.cc +4 -4
- data/src/core/ext/filters/client_channel/client_channel.cc +86 -104
- data/src/core/ext/filters/client_channel/client_channel.h +6 -0
- data/src/core/ext/filters/client_channel/client_channel_channelz.cc +19 -18
- data/src/core/ext/filters/client_channel/client_channel_internal.h +16 -21
- data/src/core/ext/filters/client_channel/config_selector.h +9 -24
- data/src/core/ext/filters/client_channel/lb_policy/backend_metric_data.h +3 -0
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +5 -4
- data/src/core/ext/filters/client_channel/lb_policy/health_check_client.cc +455 -0
- data/src/core/ext/filters/client_channel/lb_policy/health_check_client.h +54 -0
- data/src/core/ext/filters/client_channel/lb_policy/health_check_client_internal.h +186 -0
- data/src/core/ext/filters/client_channel/lb_policy/oob_backend_metric.cc +2 -7
- data/src/core/ext/filters/client_channel/lb_policy/outlier_detection/outlier_detection.cc +52 -20
- data/src/core/ext/filters/client_channel/lb_policy/outlier_detection/outlier_detection.h +23 -2
- data/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc +19 -6
- data/src/core/ext/filters/client_channel/lb_policy/priority/priority.cc +1 -9
- data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.cc +16 -7
- data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.h +18 -1
- data/src/core/ext/filters/client_channel/lb_policy/rls/rls.cc +12 -9
- data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +6 -4
- data/src/core/ext/filters/client_channel/lb_policy/subchannel_list.h +36 -13
- data/src/core/ext/filters/client_channel/lb_policy/weighted_round_robin/static_stride_scheduler.cc +76 -6
- data/src/core/ext/filters/client_channel/lb_policy/weighted_round_robin/weighted_round_robin.cc +32 -39
- data/src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc +4 -10
- data/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc +52 -47
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_impl.cc +1 -9
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_manager.cc +14 -16
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_resolver.cc +40 -43
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_override_host.cc +7 -12
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_wrr_locality.cc +12 -19
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +35 -33
- data/src/core/ext/filters/client_channel/resolver/dns/event_engine/event_engine_client_channel_resolver.cc +29 -4
- data/src/core/ext/filters/client_channel/resolver/dns/event_engine/service_config_helper.cc +1 -1
- data/src/core/ext/filters/client_channel/resolver/google_c2p/google_c2p_resolver.cc +28 -27
- data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +163 -46
- data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.h +16 -1
- data/src/core/ext/filters/client_channel/retry_service_config.cc +1 -0
- data/src/core/ext/filters/client_channel/service_config_channel_arg_filter.cc +10 -40
- data/src/core/ext/filters/client_channel/subchannel.cc +10 -196
- data/src/core/ext/filters/client_channel/subchannel.h +3 -43
- data/src/core/ext/filters/http/message_compress/compression_filter.cc +5 -5
- data/src/core/ext/filters/rbac/rbac_service_config_parser.cc +100 -6
- data/src/core/ext/filters/server_config_selector/server_config_selector_filter.cc +6 -8
- data/src/core/ext/filters/stateful_session/stateful_session_filter.cc +3 -3
- data/src/core/ext/filters/stateful_session/stateful_session_filter.h +16 -1
- data/src/core/ext/transport/chttp2/transport/flow_control.cc +46 -95
- data/src/core/ext/transport/chttp2/transport/internal.h +1 -15
- data/src/core/ext/upb-generated/xds/data/orca/v3/orca_load_report.upb.c +11 -2
- data/src/core/ext/upb-generated/xds/data/orca/v3/orca_load_report.upb.h +15 -0
- data/src/core/ext/xds/certificate_provider_store.cc +4 -9
- data/src/core/ext/xds/certificate_provider_store.h +1 -1
- data/src/core/ext/xds/file_watcher_certificate_provider_factory.cc +30 -42
- data/src/core/ext/xds/file_watcher_certificate_provider_factory.h +14 -9
- data/src/core/ext/xds/xds_api.cc +9 -6
- data/src/core/ext/xds/xds_api.h +3 -2
- data/src/core/ext/xds/xds_audit_logger_registry.cc +122 -0
- data/src/core/ext/xds/xds_audit_logger_registry.h +68 -0
- data/src/core/ext/xds/xds_bootstrap_grpc.cc +21 -9
- data/src/core/ext/xds/xds_bootstrap_grpc.h +5 -0
- data/src/core/ext/xds/xds_client.cc +5 -4
- data/src/core/ext/xds/xds_client_stats.h +1 -1
- data/src/core/ext/xds/xds_cluster.cc +20 -19
- data/src/core/ext/xds/xds_cluster_specifier_plugin.cc +11 -8
- data/src/core/ext/xds/xds_common_types.cc +3 -1
- data/src/core/ext/xds/xds_http_fault_filter.cc +16 -13
- data/src/core/ext/xds/xds_http_fault_filter.h +2 -1
- data/src/core/ext/xds/xds_http_filters.h +4 -2
- data/src/core/ext/xds/xds_http_rbac_filter.cc +154 -67
- data/src/core/ext/xds/xds_http_rbac_filter.h +2 -1
- data/src/core/ext/xds/xds_http_stateful_session_filter.cc +15 -11
- data/src/core/ext/xds/xds_http_stateful_session_filter.h +2 -1
- data/src/core/ext/xds/xds_lb_policy_registry.cc +22 -16
- data/src/core/ext/xds/xds_listener.cc +1 -0
- data/src/core/ext/xds/xds_route_config.cc +40 -3
- data/src/core/ext/xds/xds_routing.cc +2 -2
- data/src/core/ext/xds/xds_transport_grpc.cc +3 -1
- data/src/core/lib/avl/avl.h +5 -0
- data/src/core/lib/channel/channel_args.cc +80 -22
- data/src/core/lib/channel/channel_args.h +34 -1
- data/src/core/lib/channel/channel_trace.cc +16 -12
- data/src/core/lib/channel/channelz.cc +159 -132
- data/src/core/lib/channel/channelz.h +42 -35
- data/src/core/lib/channel/channelz_registry.cc +23 -20
- data/src/core/lib/channel/connected_channel.cc +17 -6
- data/src/core/lib/channel/promise_based_filter.cc +0 -4
- data/src/core/lib/channel/promise_based_filter.h +2 -0
- data/src/core/lib/compression/compression_internal.cc +2 -5
- data/src/core/lib/config/config_vars.cc +20 -18
- data/src/core/lib/config/config_vars.h +4 -4
- data/src/core/lib/config/load_config.cc +13 -0
- data/src/core/lib/config/load_config.h +6 -0
- data/src/core/lib/debug/event_log.h +1 -1
- data/src/core/lib/debug/stats_data.h +1 -1
- data/src/core/lib/debug/trace.cc +24 -55
- data/src/core/lib/debug/trace.h +3 -1
- data/src/core/lib/event_engine/cf_engine/cf_engine.cc +211 -0
- data/src/core/lib/event_engine/cf_engine/cf_engine.h +86 -0
- data/src/core/lib/event_engine/cf_engine/cfstream_endpoint.cc +354 -0
- data/src/core/lib/event_engine/cf_engine/cfstream_endpoint.h +146 -0
- data/src/core/lib/event_engine/cf_engine/cftype_unique_ref.h +79 -0
- data/src/core/lib/event_engine/default_event_engine.cc +13 -1
- data/src/core/lib/event_engine/default_event_engine_factory.cc +14 -2
- data/src/core/lib/event_engine/poller.h +2 -2
- data/src/core/lib/event_engine/posix.h +4 -0
- data/src/core/lib/event_engine/posix_engine/ev_epoll1_linux.cc +1 -1
- data/src/core/lib/event_engine/posix_engine/lockfree_event.cc +7 -18
- data/src/core/lib/event_engine/posix_engine/posix_endpoint.h +9 -0
- data/src/core/lib/event_engine/posix_engine/posix_engine.cc +33 -19
- data/src/core/lib/event_engine/posix_engine/posix_engine.h +1 -1
- data/src/core/lib/event_engine/posix_engine/posix_engine_listener.cc +4 -4
- data/src/core/lib/event_engine/posix_engine/posix_engine_listener.h +7 -8
- data/src/core/lib/event_engine/posix_engine/timer_manager.h +1 -1
- data/src/core/lib/event_engine/shim.cc +7 -1
- data/src/core/lib/event_engine/{thread_pool.cc → thread_pool/original_thread_pool.cc} +28 -25
- data/src/core/lib/event_engine/{thread_pool.h → thread_pool/original_thread_pool.h} +11 -15
- data/src/core/lib/event_engine/thread_pool/thread_pool.h +50 -0
- data/src/core/lib/event_engine/{executor/executor.h → thread_pool/thread_pool_factory.cc} +17 -15
- data/src/core/lib/event_engine/thread_pool/work_stealing_thread_pool.cc +489 -0
- data/src/core/lib/event_engine/thread_pool/work_stealing_thread_pool.h +249 -0
- data/src/core/lib/event_engine/thready_event_engine/thready_event_engine.cc +166 -0
- data/src/core/lib/event_engine/thready_event_engine/thready_event_engine.h +108 -0
- data/src/core/lib/event_engine/windows/iocp.cc +4 -3
- data/src/core/lib/event_engine/windows/iocp.h +3 -3
- data/src/core/lib/event_engine/windows/win_socket.cc +6 -6
- data/src/core/lib/event_engine/windows/win_socket.h +4 -4
- data/src/core/lib/event_engine/windows/windows_endpoint.cc +11 -10
- data/src/core/lib/event_engine/windows/windows_endpoint.h +3 -2
- data/src/core/lib/event_engine/windows/windows_engine.cc +19 -17
- data/src/core/lib/event_engine/windows/windows_engine.h +6 -6
- data/src/core/lib/event_engine/windows/windows_listener.cc +3 -3
- data/src/core/lib/event_engine/windows/windows_listener.h +3 -2
- data/src/core/lib/event_engine/work_queue/basic_work_queue.cc +63 -0
- data/src/core/lib/event_engine/work_queue/basic_work_queue.h +71 -0
- data/src/core/lib/event_engine/work_queue/work_queue.h +62 -0
- data/src/core/lib/experiments/config.cc +38 -7
- data/src/core/lib/experiments/config.h +16 -0
- data/src/core/lib/experiments/experiments.cc +67 -20
- data/src/core/lib/experiments/experiments.h +27 -21
- data/src/core/lib/gpr/log_internal.h +55 -0
- data/src/core/lib/gprpp/crash.cc +10 -0
- data/src/core/lib/gprpp/crash.h +3 -0
- data/src/core/lib/gprpp/per_cpu.cc +33 -0
- data/src/core/lib/gprpp/per_cpu.h +29 -6
- data/src/core/lib/gprpp/time.cc +1 -0
- data/src/core/lib/iomgr/cfstream_handle.cc +1 -1
- data/src/core/lib/iomgr/endpoint_cfstream.cc +10 -8
- data/src/core/lib/iomgr/ev_apple.cc +12 -12
- data/src/core/lib/iomgr/ev_epoll1_linux.cc +10 -3
- data/src/core/lib/iomgr/event_engine_shims/endpoint.cc +15 -1
- data/src/core/lib/iomgr/iocp_windows.cc +24 -3
- data/src/core/lib/iomgr/iocp_windows.h +11 -0
- data/src/core/lib/iomgr/iomgr_posix_cfstream.cc +1 -1
- data/src/core/lib/iomgr/socket_utils_common_posix.cc +4 -2
- data/src/core/lib/iomgr/socket_windows.cc +61 -7
- data/src/core/lib/iomgr/socket_windows.h +9 -2
- data/src/core/lib/iomgr/tcp_client_cfstream.cc +14 -3
- data/src/core/lib/iomgr/tcp_server_posix.cc +148 -107
- data/src/core/lib/iomgr/tcp_server_utils_posix.h +1 -1
- data/src/core/lib/iomgr/tcp_server_windows.cc +1 -1
- data/src/core/lib/json/json.h +2 -166
- data/src/core/lib/json/json_object_loader.cc +8 -9
- data/src/core/lib/json/json_object_loader.h +25 -18
- data/src/core/lib/json/json_reader.cc +13 -6
- data/src/core/lib/json/json_util.cc +6 -11
- data/src/core/lib/json/json_writer.cc +7 -8
- data/src/core/lib/load_balancing/lb_policy.h +13 -0
- data/src/core/lib/load_balancing/lb_policy_registry.cc +2 -1
- data/src/core/lib/matchers/matchers.cc +3 -4
- data/src/core/lib/matchers/matchers.h +2 -1
- data/src/core/lib/promise/activity.cc +5 -0
- data/src/core/lib/promise/activity.h +10 -0
- data/src/core/lib/promise/detail/promise_factory.h +1 -1
- data/src/core/lib/promise/party.cc +31 -13
- data/src/core/lib/promise/party.h +11 -2
- data/src/core/lib/promise/pipe.h +9 -2
- data/src/core/lib/promise/prioritized_race.h +95 -0
- data/src/core/lib/promise/sleep.cc +2 -1
- data/src/core/lib/resolver/server_address.cc +0 -8
- data/src/core/lib/resolver/server_address.h +0 -6
- data/src/core/lib/resource_quota/memory_quota.cc +7 -7
- data/src/core/lib/resource_quota/memory_quota.h +1 -2
- data/src/core/lib/security/authorization/audit_logging.cc +98 -0
- data/src/core/lib/security/authorization/audit_logging.h +73 -0
- data/src/core/lib/security/authorization/grpc_authorization_engine.cc +47 -2
- data/src/core/lib/security/authorization/grpc_authorization_engine.h +18 -1
- data/src/core/lib/security/authorization/rbac_policy.cc +36 -4
- data/src/core/lib/security/authorization/rbac_policy.h +19 -2
- data/src/core/lib/security/authorization/stdout_logger.cc +75 -0
- data/src/core/lib/security/authorization/stdout_logger.h +61 -0
- data/src/core/lib/security/certificate_provider/certificate_provider_factory.h +8 -4
- data/src/core/lib/security/certificate_provider/certificate_provider_registry.cc +8 -18
- data/src/core/lib/security/certificate_provider/certificate_provider_registry.h +14 -8
- data/src/core/lib/security/credentials/external/aws_external_account_credentials.cc +19 -12
- data/src/core/lib/security/credentials/external/external_account_credentials.cc +4 -2
- data/src/core/lib/security/credentials/external/file_external_account_credentials.cc +1 -0
- data/src/core/lib/security/credentials/external/url_external_account_credentials.cc +1 -0
- data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +1 -0
- data/src/core/lib/security/credentials/jwt/json_token.cc +15 -14
- data/src/core/lib/security/credentials/jwt/jwt_credentials.cc +4 -2
- data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +1 -0
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +1 -0
- data/src/core/lib/security/security_connector/alts/alts_security_connector.cc +1 -5
- data/src/core/lib/security/util/json_util.cc +1 -0
- data/src/core/lib/service_config/service_config_call_data.h +49 -20
- data/src/core/lib/service_config/service_config_impl.cc +2 -1
- data/src/core/lib/surface/call.cc +38 -23
- data/src/core/lib/surface/completion_queue.cc +6 -2
- data/src/core/lib/surface/version.cc +2 -2
- data/src/core/lib/transport/batch_builder.cc +15 -12
- data/src/core/lib/transport/batch_builder.h +39 -35
- data/src/core/plugin_registry/grpc_plugin_registry.cc +0 -2
- data/src/core/plugin_registry/grpc_plugin_registry_extra.cc +2 -0
- data/src/ruby/ext/grpc/extconf.rb +8 -9
- data/src/ruby/lib/grpc/version.rb +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_mbstr.c +9 -8
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_strnid.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/asn1/internal.h +3 -3
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_dec.c +10 -6
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_enc.c +7 -4
- data/third_party/boringssl-with-bazel/src/crypto/bio/bio.c +6 -4
- data/third_party/boringssl-with-bazel/src/crypto/bio/fd.c +2 -1
- data/third_party/boringssl-with-bazel/src/crypto/bio/file.c +5 -9
- data/third_party/boringssl-with-bazel/src/crypto/bio/pair.c +4 -2
- data/third_party/boringssl-with-bazel/src/crypto/blake2/blake2.c +31 -22
- data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_tls.c +29 -26
- data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/internal.h +8 -0
- data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/tls_cbc.c +189 -13
- data/third_party/boringssl-with-bazel/src/crypto/cpu_aarch64_openbsd.c +62 -0
- data/third_party/boringssl-with-bazel/src/crypto/cpu_arm_openbsd.c +31 -0
- data/third_party/boringssl-with-bazel/src/crypto/curve25519/curve25519.c +6 -4
- data/third_party/boringssl-with-bazel/src/crypto/curve25519/curve25519_tables.h +795 -795
- data/third_party/boringssl-with-bazel/src/crypto/curve25519/internal.h +1 -5
- data/third_party/boringssl-with-bazel/src/crypto/dsa/dsa.c +4 -0
- data/third_party/boringssl-with-bazel/src/crypto/ec_extra/hash_to_curve.c +18 -6
- data/third_party/boringssl-with-bazel/src/crypto/ec_extra/internal.h +15 -7
- data/third_party/boringssl-with-bazel/src/crypto/ecdh_extra/ecdh_extra.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/evp/p_rsa.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bcm.c +1 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/dh/dh.c +3 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec.c +24 -24
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec_key.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec_montgomery.c +7 -7
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/internal.h +74 -74
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/oct.c +1 -2
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p224-64.c +11 -11
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256-nistz.c +12 -12
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256.c +14 -15
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256_table.h +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/simple.c +10 -10
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/simple_mul.c +23 -23
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/wnaf.c +13 -13
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdh/ecdh.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdsa/ecdsa.c +2 -2
- data/third_party/boringssl-with-bazel/src/crypto/{hkdf → fipsmodule/hkdf}/hkdf.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/cbc.c +2 -10
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/ctr.c +1 -4
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/gcm.c +115 -133
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/gcm_nohw.c +12 -14
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/internal.h +57 -47
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/ofb.c +1 -8
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/polyval.c +27 -28
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/urandom.c +11 -23
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/internal.h +21 -16
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/padding.c +5 -288
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/rsa.c +143 -83
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/rsa_impl.c +95 -183
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/self_check/self_check.c +71 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/tls/internal.h +8 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/tls/kdf.c +33 -0
- data/third_party/boringssl-with-bazel/src/crypto/hpke/hpke.c +162 -6
- data/third_party/boringssl-with-bazel/src/crypto/internal.h +18 -0
- data/third_party/boringssl-with-bazel/src/crypto/kyber/kyber.c +18 -11
- data/third_party/boringssl-with-bazel/src/crypto/obj/obj_dat.h +6 -13
- data/third_party/boringssl-with-bazel/src/crypto/pem/pem_lib.c +18 -14
- data/third_party/boringssl-with-bazel/src/crypto/{refcount_lock.c → refcount_no_threads.c} +3 -13
- data/third_party/boringssl-with-bazel/src/crypto/refcount_win.c +89 -0
- data/third_party/boringssl-with-bazel/src/crypto/rsa_extra/internal.h +77 -0
- data/third_party/boringssl-with-bazel/src/crypto/rsa_extra/rsa_crypt.c +568 -0
- data/third_party/boringssl-with-bazel/src/crypto/trust_token/internal.h +62 -0
- data/third_party/boringssl-with-bazel/src/crypto/trust_token/pmbtoken.c +218 -44
- data/third_party/boringssl-with-bazel/src/crypto/trust_token/trust_token.c +35 -0
- data/third_party/boringssl-with-bazel/src/crypto/trust_token/voprf.c +588 -39
- data/third_party/boringssl-with-bazel/src/crypto/x509/a_sign.c +27 -18
- data/third_party/boringssl-with-bazel/src/crypto/x509/asn1_gen.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509/name_print.c +17 -39
- data/third_party/boringssl-with-bazel/src/crypto/x509/t_x509.c +39 -48
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_att.c +0 -140
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_req.c +72 -23
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509name.c +11 -14
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509spki.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_x509a.c +2 -2
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/internal.h +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_conf.c +33 -46
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_cpols.c +1 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_info.c +3 -5
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_lib.c +14 -46
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_prn.c +14 -26
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_skey.c +17 -10
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_utl.c +1 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/aead.h +5 -7
- data/third_party/boringssl-with-bazel/src/include/openssl/asn1.h +6 -4
- data/third_party/boringssl-with-bazel/src/include/openssl/base.h +32 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/bio.h +0 -4
- data/third_party/boringssl-with-bazel/src/include/openssl/blake2.h +1 -4
- data/third_party/boringssl-with-bazel/src/include/openssl/evp.h +3 -3
- data/third_party/boringssl-with-bazel/src/include/openssl/hpke.h +28 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/nid.h +2 -11
- data/third_party/boringssl-with-bazel/src/include/openssl/pem.h +0 -3
- data/third_party/boringssl-with-bazel/src/include/openssl/rsa.h +91 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/span.h +5 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/ssl.h +149 -20
- data/third_party/boringssl-with-bazel/src/include/openssl/thread.h +4 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/tls1.h +4 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/trust_token.h +8 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/x509.h +774 -615
- data/third_party/boringssl-with-bazel/src/include/openssl/x509v3.h +42 -10
- data/third_party/boringssl-with-bazel/src/ssl/encrypted_client_hello.cc +11 -6
- data/third_party/boringssl-with-bazel/src/ssl/extensions.cc +2 -4
- data/third_party/boringssl-with-bazel/src/ssl/handshake_client.cc +24 -16
- data/third_party/boringssl-with-bazel/src/ssl/internal.h +65 -18
- data/third_party/boringssl-with-bazel/src/ssl/s3_both.cc +37 -18
- data/third_party/boringssl-with-bazel/src/ssl/ssl_cipher.cc +187 -193
- data/third_party/boringssl-with-bazel/src/ssl/ssl_key_share.cc +13 -129
- data/third_party/boringssl-with-bazel/src/ssl/ssl_lib.cc +85 -10
- data/third_party/boringssl-with-bazel/src/ssl/ssl_privkey.cc +17 -4
- data/third_party/boringssl-with-bazel/src/ssl/ssl_versions.cc +27 -19
- data/third_party/boringssl-with-bazel/src/ssl/tls13_client.cc +1 -1
- data/third_party/boringssl-with-bazel/src/ssl/tls13_enc.cc +5 -21
- data/third_party/boringssl-with-bazel/src/ssl/tls13_server.cc +5 -2
- data/third_party/boringssl-with-bazel/src/third_party/fiat/curve25519_64_msvc.h +1281 -0
- data/third_party/boringssl-with-bazel/src/third_party/fiat/p256_64_msvc.h +2002 -0
- data/third_party/cares/cares/include/ares.h +23 -1
- data/third_party/cares/cares/{src/lib → include}/ares_nameser.h +9 -7
- data/third_party/cares/cares/include/ares_rules.h +2 -2
- data/third_party/cares/cares/include/ares_version.h +3 -3
- data/third_party/cares/cares/src/lib/ares__addrinfo2hostent.c +266 -0
- data/third_party/cares/cares/src/lib/ares__addrinfo_localhost.c +240 -0
- data/third_party/cares/cares/src/lib/ares__parse_into_addrinfo.c +49 -80
- data/third_party/cares/cares/src/lib/ares__readaddrinfo.c +37 -43
- data/third_party/cares/cares/src/lib/ares__sortaddrinfo.c +12 -4
- data/third_party/cares/cares/src/lib/ares_data.c +16 -0
- data/third_party/cares/cares/src/lib/ares_data.h +7 -0
- data/third_party/cares/cares/src/lib/ares_destroy.c +8 -0
- data/third_party/cares/cares/src/lib/ares_expand_name.c +17 -6
- data/third_party/cares/cares/src/lib/ares_freeaddrinfo.c +1 -0
- data/third_party/cares/cares/src/lib/ares_getaddrinfo.c +156 -78
- data/third_party/cares/cares/src/lib/ares_gethostbyname.c +130 -326
- data/third_party/cares/cares/src/lib/ares_init.c +97 -485
- data/third_party/cares/cares/src/lib/ares_library_init.c +2 -89
- data/third_party/cares/cares/src/lib/ares_parse_a_reply.c +23 -142
- data/third_party/cares/cares/src/lib/ares_parse_aaaa_reply.c +22 -142
- data/third_party/cares/cares/src/lib/ares_parse_uri_reply.c +184 -0
- data/third_party/cares/cares/src/lib/ares_private.h +30 -16
- data/third_party/cares/cares/src/lib/ares_process.c +55 -16
- data/third_party/cares/cares/src/lib/ares_query.c +1 -35
- data/third_party/cares/cares/src/lib/ares_rand.c +279 -0
- data/third_party/cares/cares/src/lib/ares_send.c +5 -7
- data/third_party/cares/cares/src/lib/ares_strdup.c +12 -19
- data/third_party/cares/cares/src/lib/ares_strsplit.c +44 -128
- data/third_party/cares/cares/src/lib/ares_strsplit.h +9 -10
- data/third_party/cares/cares/src/lib/inet_net_pton.c +78 -116
- data/third_party/cares/cares/src/tools/ares_getopt.h +53 -0
- metadata +50 -14
- data/src/core/ext/filters/client_channel/health/health_check_client.cc +0 -175
- data/src/core/ext/filters/client_channel/health/health_check_client.h +0 -43
- data/third_party/cares/cares/src/lib/ares_library_init.h +0 -43
@@ -0,0 +1,122 @@
|
|
1
|
+
//
|
2
|
+
// Copyright 2023 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_audit_logger_registry.h"
|
20
|
+
|
21
|
+
#include <string>
|
22
|
+
#include <utility>
|
23
|
+
|
24
|
+
#include "absl/status/status.h"
|
25
|
+
#include "absl/status/statusor.h"
|
26
|
+
#include "absl/strings/string_view.h"
|
27
|
+
#include "absl/types/optional.h"
|
28
|
+
#include "envoy/config/core/v3/extension.upb.h"
|
29
|
+
#include "envoy/config/rbac/v3/rbac.upb.h"
|
30
|
+
|
31
|
+
#include "src/core/ext/xds/xds_common_types.h"
|
32
|
+
#include "src/core/lib/gprpp/match.h"
|
33
|
+
#include "src/core/lib/gprpp/validation_errors.h"
|
34
|
+
#include "src/core/lib/security/authorization/audit_logging.h"
|
35
|
+
|
36
|
+
namespace grpc_core {
|
37
|
+
|
38
|
+
namespace {
|
39
|
+
|
40
|
+
using experimental::AuditLoggerRegistry;
|
41
|
+
|
42
|
+
class StdoutLoggerConfigFactory : public XdsAuditLoggerRegistry::ConfigFactory {
|
43
|
+
public:
|
44
|
+
Json::Object ConvertXdsAuditLoggerConfig(
|
45
|
+
const XdsResourceType::DecodeContext& /*context*/,
|
46
|
+
absl::string_view /*configuration*/,
|
47
|
+
ValidationErrors* /*errors*/) override {
|
48
|
+
// Stdout logger has no configuration right now. So we don't process the
|
49
|
+
// config protobuf.
|
50
|
+
return {};
|
51
|
+
}
|
52
|
+
|
53
|
+
absl::string_view type() override { return Type(); }
|
54
|
+
absl::string_view name() override { return "stdout_logger"; }
|
55
|
+
|
56
|
+
static absl::string_view Type() {
|
57
|
+
return "envoy.extensions.rbac.audit_loggers.stream.v3.StdoutAuditLog";
|
58
|
+
}
|
59
|
+
};
|
60
|
+
|
61
|
+
} // namespace
|
62
|
+
|
63
|
+
XdsAuditLoggerRegistry::XdsAuditLoggerRegistry() {
|
64
|
+
audit_logger_config_factories_.emplace(
|
65
|
+
StdoutLoggerConfigFactory::Type(),
|
66
|
+
std::make_unique<StdoutLoggerConfigFactory>());
|
67
|
+
}
|
68
|
+
|
69
|
+
Json XdsAuditLoggerRegistry::ConvertXdsAuditLoggerConfig(
|
70
|
+
const XdsResourceType::DecodeContext& context,
|
71
|
+
const envoy_config_rbac_v3_RBAC_AuditLoggingOptions_AuditLoggerConfig*
|
72
|
+
logger_config,
|
73
|
+
ValidationErrors* errors) const {
|
74
|
+
const auto* typed_extension_config =
|
75
|
+
envoy_config_rbac_v3_RBAC_AuditLoggingOptions_AuditLoggerConfig_audit_logger(
|
76
|
+
logger_config);
|
77
|
+
ValidationErrors::ScopedField field(errors, ".audit_logger");
|
78
|
+
if (typed_extension_config == nullptr) {
|
79
|
+
errors->AddError("field not present");
|
80
|
+
return Json(); // A null Json object.
|
81
|
+
}
|
82
|
+
ValidationErrors::ScopedField field2(errors, ".typed_config");
|
83
|
+
const auto* typed_config =
|
84
|
+
envoy_config_core_v3_TypedExtensionConfig_typed_config(
|
85
|
+
typed_extension_config);
|
86
|
+
auto extension = ExtractXdsExtension(context, typed_config, errors);
|
87
|
+
if (!extension.has_value()) return Json();
|
88
|
+
absl::string_view name;
|
89
|
+
Json config;
|
90
|
+
Match(
|
91
|
+
extension->value,
|
92
|
+
// Built-in logger types.
|
93
|
+
[&](absl::string_view serialized_value) {
|
94
|
+
auto it = audit_logger_config_factories_.find(extension->type);
|
95
|
+
if (it == audit_logger_config_factories_.end()) return;
|
96
|
+
name = it->second->name();
|
97
|
+
config = Json::FromObject(it->second->ConvertXdsAuditLoggerConfig(
|
98
|
+
context, serialized_value, errors));
|
99
|
+
},
|
100
|
+
// Custom logger types.
|
101
|
+
[&](Json json) {
|
102
|
+
if (!AuditLoggerRegistry::FactoryExists(extension->type)) return;
|
103
|
+
name = extension->type;
|
104
|
+
config = json;
|
105
|
+
});
|
106
|
+
// Config not found in either case if name is empty.
|
107
|
+
if (name.empty()) {
|
108
|
+
if (!envoy_config_rbac_v3_RBAC_AuditLoggingOptions_AuditLoggerConfig_is_optional(
|
109
|
+
logger_config)) {
|
110
|
+
errors->AddError("unsupported audit logger type");
|
111
|
+
}
|
112
|
+
return Json();
|
113
|
+
}
|
114
|
+
// Validate the converted config.
|
115
|
+
auto result = AuditLoggerRegistry::ParseConfig(name, config);
|
116
|
+
if (!result.ok()) {
|
117
|
+
errors->AddError(result.status().message());
|
118
|
+
return Json();
|
119
|
+
}
|
120
|
+
return Json::FromObject({{std::string(name), std::move(config)}});
|
121
|
+
}
|
122
|
+
} // namespace grpc_core
|
@@ -0,0 +1,68 @@
|
|
1
|
+
//
|
2
|
+
// Copyright 2023 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_SRC_CORE_EXT_XDS_XDS_AUDIT_LOGGER_REGISTRY_H
|
18
|
+
#define GRPC_SRC_CORE_EXT_XDS_XDS_AUDIT_LOGGER_REGISTRY_H
|
19
|
+
|
20
|
+
#include <grpc/support/port_platform.h>
|
21
|
+
|
22
|
+
#include <map>
|
23
|
+
#include <memory>
|
24
|
+
|
25
|
+
#include "absl/strings/string_view.h"
|
26
|
+
#include "envoy/config/rbac/v3/rbac.upb.h"
|
27
|
+
|
28
|
+
#include "src/core/ext/xds/xds_resource_type.h"
|
29
|
+
#include "src/core/lib/gprpp/validation_errors.h"
|
30
|
+
#include "src/core/lib/json/json.h"
|
31
|
+
|
32
|
+
namespace grpc_core {
|
33
|
+
|
34
|
+
// A registry that maintains a set of converters that are able to map xDS
|
35
|
+
// RBAC audit logger configuration to gRPC's JSON format.
|
36
|
+
class XdsAuditLoggerRegistry {
|
37
|
+
public:
|
38
|
+
class ConfigFactory {
|
39
|
+
public:
|
40
|
+
virtual ~ConfigFactory() = default;
|
41
|
+
virtual Json::Object ConvertXdsAuditLoggerConfig(
|
42
|
+
const XdsResourceType::DecodeContext& context,
|
43
|
+
absl::string_view configuration, ValidationErrors* errors) = 0;
|
44
|
+
// The full proto message name for the logger config.
|
45
|
+
virtual absl::string_view type() = 0;
|
46
|
+
// The logger name used for the gRPC registry.
|
47
|
+
virtual absl::string_view name() = 0;
|
48
|
+
};
|
49
|
+
|
50
|
+
XdsAuditLoggerRegistry();
|
51
|
+
|
52
|
+
Json ConvertXdsAuditLoggerConfig(
|
53
|
+
const XdsResourceType::DecodeContext& context,
|
54
|
+
const envoy_config_rbac_v3_RBAC_AuditLoggingOptions_AuditLoggerConfig*
|
55
|
+
logger_config,
|
56
|
+
ValidationErrors* errors) const;
|
57
|
+
|
58
|
+
private:
|
59
|
+
// A map of config factories that goes from the type of the audit logging
|
60
|
+
// config to the config factory.
|
61
|
+
std::map<absl::string_view /* Owned by ConfigFactory */,
|
62
|
+
std::unique_ptr<ConfigFactory>>
|
63
|
+
audit_logger_config_factories_;
|
64
|
+
};
|
65
|
+
|
66
|
+
} // namespace grpc_core
|
67
|
+
|
68
|
+
#endif // GRPC_SRC_CORE_EXT_XDS_XDS_AUDIT_LOGGER_REGISTRY_H
|
@@ -35,6 +35,8 @@
|
|
35
35
|
#include "absl/strings/string_view.h"
|
36
36
|
#include "absl/types/optional.h"
|
37
37
|
|
38
|
+
#include <grpc/support/json.h>
|
39
|
+
|
38
40
|
#include "src/core/lib/config/core_configuration.h"
|
39
41
|
#include "src/core/lib/gprpp/ref_counted_ptr.h"
|
40
42
|
#include "src/core/lib/json/json.h"
|
@@ -139,7 +141,7 @@ void GrpcXdsBootstrap::GrpcXdsServer::JsonPostLoad(const Json& json,
|
|
139
141
|
CoreConfiguration::Get().channel_creds_registry().IsSupported(
|
140
142
|
creds.type)) {
|
141
143
|
if (!CoreConfiguration::Get().channel_creds_registry().IsValidConfig(
|
142
|
-
creds.type, creds.config)) {
|
144
|
+
creds.type, Json::FromObject(creds.config))) {
|
143
145
|
errors->AddError(absl::StrCat(
|
144
146
|
"invalid config for channel creds type \"", creds.type, "\""));
|
145
147
|
continue;
|
@@ -173,22 +175,25 @@ void GrpcXdsBootstrap::GrpcXdsServer::JsonPostLoad(const Json& json,
|
|
173
175
|
}
|
174
176
|
|
175
177
|
Json GrpcXdsBootstrap::GrpcXdsServer::ToJson() const {
|
176
|
-
Json::Object channel_creds_json{
|
178
|
+
Json::Object channel_creds_json{
|
179
|
+
{"type", Json::FromString(channel_creds_.type)},
|
180
|
+
};
|
177
181
|
if (!channel_creds_.config.empty()) {
|
178
|
-
channel_creds_json["config"] = channel_creds_.config;
|
182
|
+
channel_creds_json["config"] = Json::FromObject(channel_creds_.config);
|
179
183
|
}
|
180
184
|
Json::Object json{
|
181
|
-
{"server_uri", server_uri_},
|
182
|
-
{"channel_creds",
|
185
|
+
{"server_uri", Json::FromString(server_uri_)},
|
186
|
+
{"channel_creds",
|
187
|
+
Json::FromArray({Json::FromObject(std::move(channel_creds_json))})},
|
183
188
|
};
|
184
189
|
if (!server_features_.empty()) {
|
185
190
|
Json::Array server_features_json;
|
186
191
|
for (auto& feature : server_features_) {
|
187
|
-
server_features_json.emplace_back(feature);
|
192
|
+
server_features_json.emplace_back(Json::FromString(feature));
|
188
193
|
}
|
189
|
-
json["server_features"] = std::move(server_features_json);
|
194
|
+
json["server_features"] = Json::FromArray(std::move(server_features_json));
|
190
195
|
}
|
191
|
-
return json;
|
196
|
+
return Json::FromObject(std::move(json));
|
192
197
|
}
|
193
198
|
|
194
199
|
//
|
@@ -254,6 +259,13 @@ const JsonLoaderInterface* GrpcXdsBootstrap::JsonLoader(const JsonArgs&) {
|
|
254
259
|
void GrpcXdsBootstrap::JsonPostLoad(const Json& /*json*/,
|
255
260
|
const JsonArgs& /*args*/,
|
256
261
|
ValidationErrors* errors) {
|
262
|
+
// Verify that there is at least one server present.
|
263
|
+
{
|
264
|
+
ValidationErrors::ScopedField field(errors, ".xds_servers");
|
265
|
+
if (servers_.empty() && !errors->FieldHasErrors()) {
|
266
|
+
errors->AddError("must be non-empty");
|
267
|
+
}
|
268
|
+
}
|
257
269
|
// Verify that each authority has the right prefix in the
|
258
270
|
// client_listener_resource_name_template field.
|
259
271
|
{
|
@@ -292,7 +304,7 @@ std::string GrpcXdsBootstrap::ToString() const {
|
|
292
304
|
"},\n",
|
293
305
|
node_->id(), node_->cluster(), node_->locality_region(),
|
294
306
|
node_->locality_zone(), node_->locality_sub_zone(),
|
295
|
-
JsonDump(Json
|
307
|
+
JsonDump(Json::FromObject(node_->metadata()))));
|
296
308
|
}
|
297
309
|
parts.push_back(
|
298
310
|
absl::StrFormat("servers=[\n%s\n],\n", JsonDump(servers_[0].ToJson())));
|
@@ -30,6 +30,7 @@
|
|
30
30
|
#include "absl/types/optional.h"
|
31
31
|
|
32
32
|
#include "src/core/ext/xds/certificate_provider_store.h"
|
33
|
+
#include "src/core/ext/xds/xds_audit_logger_registry.h"
|
33
34
|
#include "src/core/ext/xds/xds_bootstrap.h"
|
34
35
|
#include "src/core/ext/xds/xds_cluster_specifier_plugin.h"
|
35
36
|
#include "src/core/ext/xds/xds_http_filters.h"
|
@@ -161,6 +162,9 @@ class GrpcXdsBootstrap : public XdsBootstrap {
|
|
161
162
|
const XdsLbPolicyRegistry& lb_policy_registry() const {
|
162
163
|
return lb_policy_registry_;
|
163
164
|
}
|
165
|
+
const XdsAuditLoggerRegistry& audit_logger_registry() const {
|
166
|
+
return audit_logger_registry_;
|
167
|
+
}
|
164
168
|
|
165
169
|
// Exposed for testing purposes only.
|
166
170
|
const std::map<std::string, GrpcAuthority>& authorities() const {
|
@@ -177,6 +181,7 @@ class GrpcXdsBootstrap : public XdsBootstrap {
|
|
177
181
|
XdsHttpFilterRegistry http_filter_registry_;
|
178
182
|
XdsClusterSpecifierPluginRegistry cluster_specifier_plugin_registry_;
|
179
183
|
XdsLbPolicyRegistry lb_policy_registry_;
|
184
|
+
XdsAuditLoggerRegistry audit_logger_registry_;
|
180
185
|
};
|
181
186
|
|
182
187
|
} // namespace grpc_core
|
@@ -152,7 +152,8 @@ class XdsClient::ChannelState::AdsCallState
|
|
152
152
|
absl::string_view serialized_resource) override
|
153
153
|
ABSL_EXCLUSIVE_LOCKS_REQUIRED(&XdsClient::mu_);
|
154
154
|
|
155
|
-
void ResourceWrapperParsingFailed(size_t idx
|
155
|
+
void ResourceWrapperParsingFailed(size_t idx,
|
156
|
+
absl::string_view message) override;
|
156
157
|
|
157
158
|
Result TakeResult() { return std::move(result_); }
|
158
159
|
|
@@ -878,9 +879,9 @@ void XdsClient::ChannelState::AdsCallState::AdsResponseParser::ParseResource(
|
|
878
879
|
}
|
879
880
|
|
880
881
|
void XdsClient::ChannelState::AdsCallState::AdsResponseParser::
|
881
|
-
ResourceWrapperParsingFailed(size_t idx) {
|
882
|
-
result_.errors.emplace_back(
|
883
|
-
"resource index ", idx, ":
|
882
|
+
ResourceWrapperParsingFailed(size_t idx, absl::string_view message) {
|
883
|
+
result_.errors.emplace_back(
|
884
|
+
absl::StrCat("resource index ", idx, ": ", message));
|
884
885
|
}
|
885
886
|
|
886
887
|
//
|
@@ -239,7 +239,7 @@ class XdsClusterLocalityStats : public RefCounted<XdsClusterLocalityStats> {
|
|
239
239
|
absl::string_view cluster_name_;
|
240
240
|
absl::string_view eds_service_name_;
|
241
241
|
RefCountedPtr<XdsLocalityName> name_;
|
242
|
-
PerCpu<Stats> stats_{32};
|
242
|
+
PerCpu<Stats> stats_{PerCpuOptions().SetMaxShards(32).SetCpusPerShard(4)};
|
243
243
|
};
|
244
244
|
|
245
245
|
} // namespace grpc_core
|
@@ -46,6 +46,7 @@
|
|
46
46
|
#include "upb/base/string_view.h"
|
47
47
|
#include "upb/text/encode.h"
|
48
48
|
|
49
|
+
#include <grpc/support/json.h>
|
49
50
|
#include <grpc/support/log.h>
|
50
51
|
|
51
52
|
#include "src/core/ext/xds/upb_utils.h"
|
@@ -102,8 +103,8 @@ std::string XdsClusterResource::ToString() const {
|
|
102
103
|
"prioritized_cluster_names=[",
|
103
104
|
absl::StrJoin(aggregate.prioritized_cluster_names, ", "), "]"));
|
104
105
|
});
|
105
|
-
contents.push_back(
|
106
|
-
|
106
|
+
contents.push_back(absl::StrCat("lb_policy_config=",
|
107
|
+
JsonDump(Json::FromArray(lb_policy_config))));
|
107
108
|
if (lrs_load_reporting_server.has_value()) {
|
108
109
|
contents.push_back(absl::StrCat("lrs_load_reporting_server_name=",
|
109
110
|
lrs_load_reporting_server->server_uri()));
|
@@ -329,7 +330,8 @@ void ParseLbPolicyConfig(const XdsResourceType::DecodeContext& context,
|
|
329
330
|
if (original_error_count == errors->size()) {
|
330
331
|
auto config = CoreConfiguration::Get()
|
331
332
|
.lb_policy_registry()
|
332
|
-
.ParseLoadBalancingConfig(
|
333
|
+
.ParseLoadBalancingConfig(
|
334
|
+
Json::FromArray(cds_update->lb_policy_config));
|
333
335
|
if (!config.ok()) errors->AddError(config.status().message());
|
334
336
|
}
|
335
337
|
return;
|
@@ -339,17 +341,16 @@ void ParseLbPolicyConfig(const XdsResourceType::DecodeContext& context,
|
|
339
341
|
if (envoy_config_cluster_v3_Cluster_lb_policy(cluster) ==
|
340
342
|
envoy_config_cluster_v3_Cluster_ROUND_ROBIN) {
|
341
343
|
cds_update->lb_policy_config = {
|
342
|
-
Json::
|
344
|
+
Json::FromObject({
|
343
345
|
{"xds_wrr_locality_experimental",
|
344
|
-
Json::
|
345
|
-
{"childPolicy",
|
346
|
-
|
347
|
-
|
348
|
-
|
349
|
-
|
350
|
-
|
351
|
-
|
352
|
-
},
|
346
|
+
Json::FromObject({
|
347
|
+
{"childPolicy", Json::FromArray({
|
348
|
+
Json::FromObject({
|
349
|
+
{"round_robin", Json::FromObject({})},
|
350
|
+
}),
|
351
|
+
})},
|
352
|
+
})},
|
353
|
+
}),
|
353
354
|
};
|
354
355
|
} else if (envoy_config_cluster_v3_Cluster_lb_policy(cluster) ==
|
355
356
|
envoy_config_cluster_v3_Cluster_RING_HASH) {
|
@@ -391,13 +392,13 @@ void ParseLbPolicyConfig(const XdsResourceType::DecodeContext& context,
|
|
391
392
|
}
|
392
393
|
}
|
393
394
|
cds_update->lb_policy_config = {
|
394
|
-
Json::
|
395
|
+
Json::FromObject({
|
395
396
|
{"ring_hash_experimental",
|
396
|
-
Json::
|
397
|
-
{"minRingSize", min_ring_size},
|
398
|
-
{"maxRingSize", max_ring_size},
|
399
|
-
}},
|
400
|
-
},
|
397
|
+
Json::FromObject({
|
398
|
+
{"minRingSize", Json::FromNumber(min_ring_size)},
|
399
|
+
{"maxRingSize", Json::FromNumber(max_ring_size)},
|
400
|
+
})},
|
401
|
+
}),
|
401
402
|
};
|
402
403
|
} else {
|
403
404
|
ValidationErrors::ScopedField field(errors, ".lb_policy");
|
@@ -30,6 +30,7 @@
|
|
30
30
|
#include "upb/json/encode.h"
|
31
31
|
#include "upb/upb.hpp"
|
32
32
|
|
33
|
+
#include <grpc/support/json.h>
|
33
34
|
#include <grpc/support/log.h>
|
34
35
|
|
35
36
|
#include "src/core/lib/json/json.h"
|
@@ -91,14 +92,16 @@ Json XdsRouteLookupClusterSpecifierPlugin::GenerateLoadBalancingPolicyConfig(
|
|
91
92
|
reinterpret_cast<char*>(buf), json_size + 1, status.ptr());
|
92
93
|
auto json = JsonParse(reinterpret_cast<char*>(buf));
|
93
94
|
GPR_ASSERT(json.ok());
|
94
|
-
return Json::
|
95
|
-
{"rls_experimental",
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
95
|
+
return Json::FromArray({Json::FromObject(
|
96
|
+
{{"rls_experimental",
|
97
|
+
Json::FromObject({
|
98
|
+
{"routeLookupConfig", std::move(*json)},
|
99
|
+
{"childPolicy",
|
100
|
+
Json::FromArray({
|
101
|
+
Json::FromObject({{"cds_experimental", Json::FromObject({})}}),
|
102
|
+
})},
|
103
|
+
{"childPolicyConfigTargetFieldName", Json::FromString("cluster")},
|
104
|
+
})}})});
|
102
105
|
}
|
103
106
|
|
104
107
|
//
|
@@ -45,6 +45,8 @@
|
|
45
45
|
#include "upb/upb.hpp"
|
46
46
|
#include "xds/type/v3/typed_struct.upb.h"
|
47
47
|
|
48
|
+
#include <grpc/support/json.h>
|
49
|
+
|
48
50
|
#include "src/core/ext/xds/upb_utils.h"
|
49
51
|
#include "src/core/ext/xds/xds_bootstrap_grpc.h"
|
50
52
|
#include "src/core/ext/xds/xds_client.h"
|
@@ -486,7 +488,7 @@ absl::optional<XdsExtension> ExtractXdsExtension(
|
|
486
488
|
errors, absl::StrCat(".value[", extension.type, "]"));
|
487
489
|
auto* protobuf_struct = xds_type_v3_TypedStruct_value(typed_struct);
|
488
490
|
if (protobuf_struct == nullptr) {
|
489
|
-
extension.value = Json::
|
491
|
+
extension.value = Json::FromObject({}); // Default to empty object.
|
490
492
|
} else {
|
491
493
|
auto json = ParseProtobufStructToJson(context, protobuf_struct);
|
492
494
|
if (!json.ok()) {
|
@@ -34,6 +34,7 @@
|
|
34
34
|
#include "google/protobuf/wrappers.upb.h"
|
35
35
|
|
36
36
|
#include <grpc/status.h>
|
37
|
+
#include <grpc/support/json.h>
|
37
38
|
|
38
39
|
#include "src/core/ext/filters/fault_injection/fault_injection_filter.h"
|
39
40
|
#include "src/core/ext/filters/fault_injection/fault_injection_service_config_parser.h"
|
@@ -139,14 +140,14 @@ XdsHttpFaultFilter::GenerateFilterConfig(
|
|
139
140
|
}
|
140
141
|
// Set the abort_code, even if it's OK
|
141
142
|
fault_injection_policy_json["abortCode"] =
|
142
|
-
grpc_status_code_to_string(abort_grpc_status_code);
|
143
|
+
Json::FromString(grpc_status_code_to_string(abort_grpc_status_code));
|
143
144
|
// Set the headers if we enabled header abort injection control
|
144
145
|
if (envoy_extensions_filters_http_fault_v3_FaultAbort_has_header_abort(
|
145
146
|
fault_abort)) {
|
146
147
|
fault_injection_policy_json["abortCodeHeader"] =
|
147
|
-
"x-envoy-fault-abort-grpc-request";
|
148
|
+
Json::FromString("x-envoy-fault-abort-grpc-request");
|
148
149
|
fault_injection_policy_json["abortPercentageHeader"] =
|
149
|
-
"x-envoy-fault-abort-percentage";
|
150
|
+
Json::FromString("x-envoy-fault-abort-percentage");
|
150
151
|
}
|
151
152
|
// Set the fraction percent
|
152
153
|
auto* percent =
|
@@ -154,9 +155,9 @@ XdsHttpFaultFilter::GenerateFilterConfig(
|
|
154
155
|
fault_abort);
|
155
156
|
if (percent != nullptr) {
|
156
157
|
fault_injection_policy_json["abortPercentageNumerator"] =
|
157
|
-
envoy_type_v3_FractionalPercent_numerator(percent);
|
158
|
+
Json::FromNumber(envoy_type_v3_FractionalPercent_numerator(percent));
|
158
159
|
fault_injection_policy_json["abortPercentageDenominator"] =
|
159
|
-
GetDenominator(percent);
|
160
|
+
Json::FromNumber(GetDenominator(percent));
|
160
161
|
}
|
161
162
|
}
|
162
163
|
// Section 2: Parse the delay injection config
|
@@ -171,15 +172,16 @@ XdsHttpFaultFilter::GenerateFilterConfig(
|
|
171
172
|
if (delay_duration != nullptr) {
|
172
173
|
ValidationErrors::ScopedField field(errors, ".fixed_delay");
|
173
174
|
Duration duration = ParseDuration(delay_duration, errors);
|
174
|
-
fault_injection_policy_json["delay"] =
|
175
|
+
fault_injection_policy_json["delay"] =
|
176
|
+
Json::FromString(duration.ToJsonString());
|
175
177
|
}
|
176
178
|
// Set the headers if we enabled header delay injection control
|
177
179
|
if (envoy_extensions_filters_common_fault_v3_FaultDelay_has_header_delay(
|
178
180
|
fault_delay)) {
|
179
181
|
fault_injection_policy_json["delayHeader"] =
|
180
|
-
"x-envoy-fault-delay-request";
|
182
|
+
Json::FromString("x-envoy-fault-delay-request");
|
181
183
|
fault_injection_policy_json["delayPercentageHeader"] =
|
182
|
-
"x-envoy-fault-delay-request-percentage";
|
184
|
+
Json::FromString("x-envoy-fault-delay-request-percentage");
|
183
185
|
}
|
184
186
|
// Set the fraction percent
|
185
187
|
auto* percent =
|
@@ -187,9 +189,9 @@ XdsHttpFaultFilter::GenerateFilterConfig(
|
|
187
189
|
fault_delay);
|
188
190
|
if (percent != nullptr) {
|
189
191
|
fault_injection_policy_json["delayPercentageNumerator"] =
|
190
|
-
envoy_type_v3_FractionalPercent_numerator(percent);
|
192
|
+
Json::FromNumber(envoy_type_v3_FractionalPercent_numerator(percent));
|
191
193
|
fault_injection_policy_json["delayPercentageDenominator"] =
|
192
|
-
GetDenominator(percent);
|
194
|
+
Json::FromNumber(GetDenominator(percent));
|
193
195
|
}
|
194
196
|
}
|
195
197
|
// Section 3: Parse the maximum active faults
|
@@ -198,10 +200,10 @@ XdsHttpFaultFilter::GenerateFilterConfig(
|
|
198
200
|
http_fault);
|
199
201
|
if (max_fault_wrapper != nullptr) {
|
200
202
|
fault_injection_policy_json["maxFaults"] =
|
201
|
-
google_protobuf_UInt32Value_value(max_fault_wrapper);
|
203
|
+
Json::FromNumber(google_protobuf_UInt32Value_value(max_fault_wrapper));
|
202
204
|
}
|
203
205
|
return FilterConfig{ConfigProtoName(),
|
204
|
-
std::move(fault_injection_policy_json)};
|
206
|
+
Json::FromObject(std::move(fault_injection_policy_json))};
|
205
207
|
}
|
206
208
|
|
207
209
|
absl::optional<XdsHttpFilterImpl::FilterConfig>
|
@@ -225,7 +227,8 @@ ChannelArgs XdsHttpFaultFilter::ModifyChannelArgs(
|
|
225
227
|
absl::StatusOr<XdsHttpFilterImpl::ServiceConfigJsonEntry>
|
226
228
|
XdsHttpFaultFilter::GenerateServiceConfig(
|
227
229
|
const FilterConfig& hcm_filter_config,
|
228
|
-
const FilterConfig* filter_config_override
|
230
|
+
const FilterConfig* filter_config_override,
|
231
|
+
absl::string_view /*filter_name*/) const {
|
229
232
|
Json policy_json = filter_config_override != nullptr
|
230
233
|
? filter_config_override->config
|
231
234
|
: hcm_filter_config.config;
|
@@ -48,7 +48,8 @@ class XdsHttpFaultFilter : public XdsHttpFilterImpl {
|
|
48
48
|
ChannelArgs ModifyChannelArgs(const ChannelArgs& args) const override;
|
49
49
|
absl::StatusOr<ServiceConfigJsonEntry> GenerateServiceConfig(
|
50
50
|
const FilterConfig& hcm_filter_config,
|
51
|
-
const FilterConfig* filter_config_override
|
51
|
+
const FilterConfig* filter_config_override,
|
52
|
+
absl::string_view filter_name) const override;
|
52
53
|
bool IsSupportedOnClients() const override { return true; }
|
53
54
|
bool IsSupportedOnServers() const override { return false; }
|
54
55
|
};
|
@@ -112,7 +112,8 @@ class XdsHttpFilterImpl {
|
|
112
112
|
// there is no override in any of those locations.
|
113
113
|
virtual absl::StatusOr<ServiceConfigJsonEntry> GenerateServiceConfig(
|
114
114
|
const FilterConfig& hcm_filter_config,
|
115
|
-
const FilterConfig* filter_config_override
|
115
|
+
const FilterConfig* filter_config_override,
|
116
|
+
absl::string_view filter_name) const = 0;
|
116
117
|
|
117
118
|
// Returns true if the filter is supported on clients; false otherwise
|
118
119
|
virtual bool IsSupportedOnClients() const = 0;
|
@@ -138,7 +139,8 @@ class XdsHttpRouterFilter : public XdsHttpFilterImpl {
|
|
138
139
|
const grpc_channel_filter* channel_filter() const override { return nullptr; }
|
139
140
|
absl::StatusOr<ServiceConfigJsonEntry> GenerateServiceConfig(
|
140
141
|
const FilterConfig& /*hcm_filter_config*/,
|
141
|
-
const FilterConfig* /*filter_config_override
|
142
|
+
const FilterConfig* /*filter_config_override*/,
|
143
|
+
absl::string_view /*filter_name*/) const override {
|
142
144
|
// This will never be called, since channel_filter() returns null.
|
143
145
|
return absl::UnimplementedError("router filter should never be called");
|
144
146
|
}
|