grpc 1.55.3 → 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 -70
- 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 +82 -98
- data/src/core/ext/filters/client_channel/client_channel.h +4 -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/hpack_parser.cc +543 -567
- data/src/core/ext/transport/chttp2/transport/hpack_parser.h +9 -150
- data/src/core/ext/transport/chttp2/transport/hpack_parser_table.cc +32 -46
- data/src/core/ext/transport/chttp2/transport/hpack_parser_table.h +5 -18
- data/src/core/ext/transport/chttp2/transport/internal.h +1 -15
- data/src/core/ext/transport/chttp2/transport/parsing.cc +12 -12
- 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/backoff/random_early_detection.h +0 -5
- 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 +3 -2
- data/src/core/lib/event_engine/posix_engine/posix_engine.h +1 -2
- data/src/core/lib/event_engine/posix_engine/posix_engine_listener.cc +4 -33
- data/src/core/lib/event_engine/posix_engine/posix_engine_listener.h +7 -11
- 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 +156 -140
- data/src/core/lib/iomgr/tcp_server_utils_posix.h +1 -13
- data/src/core/lib/iomgr/tcp_server_utils_posix_common.cc +0 -21
- 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/validate_metadata.cc +22 -37
- data/src/core/lib/surface/validate_metadata.h +3 -13
- 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 -16
- 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/src/core/ext/transport/chttp2/transport/hpack_parse_result.cc +0 -176
- data/src/core/ext/transport/chttp2/transport/hpack_parse_result.h +0 -325
- data/third_party/cares/cares/src/lib/ares_library_init.h +0 -43
@@ -22,6 +22,7 @@
|
|
22
22
|
|
23
23
|
#include <algorithm>
|
24
24
|
#include <initializer_list>
|
25
|
+
#include <map>
|
25
26
|
#include <memory>
|
26
27
|
#include <vector>
|
27
28
|
|
@@ -32,14 +33,13 @@
|
|
32
33
|
#include <grpc/support/time.h>
|
33
34
|
|
34
35
|
#include "src/core/lib/config/core_configuration.h"
|
35
|
-
#include "src/core/lib/json/json_util.h"
|
36
36
|
#include "src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.h"
|
37
37
|
|
38
38
|
namespace grpc_core {
|
39
39
|
|
40
40
|
namespace {
|
41
41
|
|
42
|
-
|
42
|
+
constexpr absl::string_view kFileWatcherPlugin = "file_watcher";
|
43
43
|
|
44
44
|
} // namespace
|
45
45
|
|
@@ -47,7 +47,7 @@ const char* kFileWatcherPlugin = "file_watcher";
|
|
47
47
|
// FileWatcherCertificateProviderFactory::Config
|
48
48
|
//
|
49
49
|
|
50
|
-
|
50
|
+
absl::string_view FileWatcherCertificateProviderFactory::Config::name() const {
|
51
51
|
return kFileWatcherPlugin;
|
52
52
|
}
|
53
53
|
|
@@ -71,58 +71,46 @@ std::string FileWatcherCertificateProviderFactory::Config::ToString() const {
|
|
71
71
|
return absl::StrJoin(parts, "");
|
72
72
|
}
|
73
73
|
|
74
|
-
|
75
|
-
FileWatcherCertificateProviderFactory::Config::
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
74
|
+
const JsonLoaderInterface*
|
75
|
+
FileWatcherCertificateProviderFactory::Config::JsonLoader(const JsonArgs&) {
|
76
|
+
static const auto* loader =
|
77
|
+
JsonObjectLoader<Config>()
|
78
|
+
.OptionalField("certificate_file", &Config::identity_cert_file_)
|
79
|
+
.OptionalField("private_key_file", &Config::private_key_file_)
|
80
|
+
.OptionalField("ca_certificate_file", &Config::root_cert_file_)
|
81
|
+
.OptionalField("refresh_interval", &Config::refresh_interval_)
|
82
|
+
.Finish();
|
83
|
+
return loader;
|
84
|
+
}
|
85
|
+
|
86
|
+
void FileWatcherCertificateProviderFactory::Config::JsonPostLoad(
|
87
|
+
const Json& json, const JsonArgs& /*args*/, ValidationErrors* errors) {
|
88
|
+
if ((json.object().find("certificate_file") == json.object().end()) !=
|
89
|
+
(json.object().find("private_key_file") == json.object().end())) {
|
90
|
+
errors->AddError(
|
90
91
|
"fields \"certificate_file\" and \"private_key_file\" must be both set "
|
91
|
-
"or both unset
|
92
|
+
"or both unset");
|
92
93
|
}
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
"
|
98
|
-
"be specified."));
|
99
|
-
}
|
100
|
-
if (!ParseJsonObjectFieldAsDuration(config_json.object(), "refresh_interval",
|
101
|
-
&config->refresh_interval_, &error_list,
|
102
|
-
false)) {
|
103
|
-
config->refresh_interval_ = Duration::Minutes(10); // 10 minutes default
|
104
|
-
}
|
105
|
-
if (!error_list.empty()) {
|
106
|
-
*error = GRPC_ERROR_CREATE_FROM_VECTOR(
|
107
|
-
"Error parsing file watcher certificate provider config", &error_list);
|
108
|
-
return nullptr;
|
94
|
+
if ((json.object().find("certificate_file") == json.object().end()) &&
|
95
|
+
(json.object().find("ca_certificate_file") == json.object().end())) {
|
96
|
+
errors->AddError(
|
97
|
+
"at least one of \"certificate_file\" and \"ca_certificate_file\" must "
|
98
|
+
"be specified");
|
109
99
|
}
|
110
|
-
return config;
|
111
100
|
}
|
112
101
|
|
113
102
|
//
|
114
103
|
// FileWatcherCertificateProviderFactory
|
115
104
|
//
|
116
105
|
|
117
|
-
|
106
|
+
absl::string_view FileWatcherCertificateProviderFactory::name() const {
|
118
107
|
return kFileWatcherPlugin;
|
119
108
|
}
|
120
109
|
|
121
110
|
RefCountedPtr<CertificateProviderFactory::Config>
|
122
111
|
FileWatcherCertificateProviderFactory::CreateCertificateProviderConfig(
|
123
|
-
const Json& config_json,
|
124
|
-
return
|
125
|
-
error);
|
112
|
+
const Json& config_json, const JsonArgs& args, ValidationErrors* errors) {
|
113
|
+
return LoadFromJson<RefCountedPtr<Config>>(config_json, args, errors);
|
126
114
|
}
|
127
115
|
|
128
116
|
RefCountedPtr<grpc_tls_certificate_provider>
|
@@ -130,7 +118,7 @@ FileWatcherCertificateProviderFactory::CreateCertificateProvider(
|
|
130
118
|
RefCountedPtr<CertificateProviderFactory::Config> config) {
|
131
119
|
if (config->name() != name()) {
|
132
120
|
gpr_log(GPR_ERROR, "Wrong config type Actual:%s vs Expected:%s",
|
133
|
-
config->name(), name());
|
121
|
+
std::string(config->name()).c_str(), std::string(name()).c_str());
|
134
122
|
return nullptr;
|
135
123
|
}
|
136
124
|
auto* file_watcher_config =
|
@@ -23,12 +23,16 @@
|
|
23
23
|
|
24
24
|
#include <string>
|
25
25
|
|
26
|
+
#include "absl/strings/string_view.h"
|
27
|
+
|
26
28
|
#include <grpc/grpc_security.h>
|
27
29
|
|
28
30
|
#include "src/core/lib/gprpp/ref_counted_ptr.h"
|
29
31
|
#include "src/core/lib/gprpp/time.h"
|
30
|
-
#include "src/core/lib/
|
32
|
+
#include "src/core/lib/gprpp/validation_errors.h"
|
31
33
|
#include "src/core/lib/json/json.h"
|
34
|
+
#include "src/core/lib/json/json_args.h"
|
35
|
+
#include "src/core/lib/json/json_object_loader.h"
|
32
36
|
#include "src/core/lib/security/certificate_provider/certificate_provider_factory.h"
|
33
37
|
|
34
38
|
namespace grpc_core {
|
@@ -38,10 +42,7 @@ class FileWatcherCertificateProviderFactory
|
|
38
42
|
public:
|
39
43
|
class Config : public CertificateProviderFactory::Config {
|
40
44
|
public:
|
41
|
-
|
42
|
-
grpc_error_handle* error);
|
43
|
-
|
44
|
-
const char* name() const override;
|
45
|
+
absl::string_view name() const override;
|
45
46
|
|
46
47
|
std::string ToString() const override;
|
47
48
|
|
@@ -55,18 +56,22 @@ class FileWatcherCertificateProviderFactory
|
|
55
56
|
|
56
57
|
Duration refresh_interval() const { return refresh_interval_; }
|
57
58
|
|
59
|
+
static const JsonLoaderInterface* JsonLoader(const JsonArgs& args);
|
60
|
+
void JsonPostLoad(const Json& json, const JsonArgs& args,
|
61
|
+
ValidationErrors* errors);
|
62
|
+
|
58
63
|
private:
|
59
64
|
std::string identity_cert_file_;
|
60
65
|
std::string private_key_file_;
|
61
66
|
std::string root_cert_file_;
|
62
|
-
Duration refresh_interval_;
|
67
|
+
Duration refresh_interval_ = Duration::Minutes(10);
|
63
68
|
};
|
64
69
|
|
65
|
-
|
70
|
+
absl::string_view name() const override;
|
66
71
|
|
67
72
|
RefCountedPtr<CertificateProviderFactory::Config>
|
68
|
-
CreateCertificateProviderConfig(const Json& config_json,
|
69
|
-
|
73
|
+
CreateCertificateProviderConfig(const Json& config_json, const JsonArgs& args,
|
74
|
+
ValidationErrors* errors) override;
|
70
75
|
|
71
76
|
RefCountedPtr<grpc_tls_certificate_provider> CreateCertificateProvider(
|
72
77
|
RefCountedPtr<CertificateProviderFactory::Config> config) override;
|
data/src/core/ext/xds/xds_api.cc
CHANGED
@@ -114,11 +114,8 @@ void PopulateMetadataValue(const XdsApiContext& context,
|
|
114
114
|
google_protobuf_Value_set_string_value(
|
115
115
|
value_pb, StdStringToUpbString(value.string()));
|
116
116
|
break;
|
117
|
-
case Json::Type::
|
118
|
-
google_protobuf_Value_set_bool_value(value_pb,
|
119
|
-
break;
|
120
|
-
case Json::Type::kFalse:
|
121
|
-
google_protobuf_Value_set_bool_value(value_pb, false);
|
117
|
+
case Json::Type::kBoolean:
|
118
|
+
google_protobuf_Value_set_bool_value(value_pb, value.boolean());
|
122
119
|
break;
|
123
120
|
case Json::Type::kObject: {
|
124
121
|
google_protobuf_Struct* struct_value =
|
@@ -327,11 +324,17 @@ absl::Status XdsApi::ParseAdsResponse(absl::string_view encoded_response,
|
|
327
324
|
const auto* resource_wrapper = envoy_service_discovery_v3_Resource_parse(
|
328
325
|
serialized_resource.data(), serialized_resource.size(), arena.ptr());
|
329
326
|
if (resource_wrapper == nullptr) {
|
330
|
-
parser->ResourceWrapperParsingFailed(
|
327
|
+
parser->ResourceWrapperParsingFailed(
|
328
|
+
i, "Can't decode Resource proto wrapper");
|
331
329
|
continue;
|
332
330
|
}
|
333
331
|
const auto* resource =
|
334
332
|
envoy_service_discovery_v3_Resource_resource(resource_wrapper);
|
333
|
+
if (resource == nullptr) {
|
334
|
+
parser->ResourceWrapperParsingFailed(
|
335
|
+
i, "No resource present in Resource proto wrapper");
|
336
|
+
continue;
|
337
|
+
}
|
335
338
|
type_url = absl::StripPrefix(
|
336
339
|
UpbStringToAbsl(google_protobuf_Any_type_url(resource)),
|
337
340
|
"type.googleapis.com/");
|
data/src/core/ext/xds/xds_api.h
CHANGED
@@ -75,8 +75,9 @@ class XdsApi {
|
|
75
75
|
absl::string_view serialized_resource) = 0;
|
76
76
|
|
77
77
|
// Called when a resource is wrapped in a Resource wrapper proto but
|
78
|
-
// we fail to
|
79
|
-
virtual void ResourceWrapperParsingFailed(size_t idx
|
78
|
+
// we fail to parse the Resource wrapper.
|
79
|
+
virtual void ResourceWrapperParsingFailed(size_t idx,
|
80
|
+
absl::string_view message) = 0;
|
80
81
|
};
|
81
82
|
|
82
83
|
struct ClusterLoadReport {
|
@@ -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
|
//
|