grpc 1.24.0 → 1.25.0.pre1
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of grpc might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/Makefile +306 -243
- data/etc/roots.pem +0 -100
- data/include/grpc/grpc_security.h +44 -18
- data/include/grpc/impl/codegen/grpc_types.h +15 -0
- data/include/grpc/impl/codegen/port_platform.h +27 -11
- data/include/grpc/impl/codegen/sync_generic.h +1 -1
- data/src/boringssl/err_data.c +695 -650
- data/src/core/ext/filters/client_channel/client_channel.cc +257 -179
- data/src/core/ext/filters/client_channel/client_channel.h +24 -0
- data/src/core/ext/filters/client_channel/client_channel_channelz.cc +2 -3
- data/src/core/ext/filters/client_channel/client_channel_factory.h +1 -5
- data/src/core/ext/filters/client_channel/health/health_check_client.cc +18 -45
- data/src/core/ext/filters/client_channel/health/health_check_client.h +5 -13
- data/src/core/ext/filters/client_channel/http_connect_handshaker.cc +1 -1
- data/src/core/ext/filters/client_channel/lb_policy.cc +2 -3
- data/src/core/ext/filters/client_channel/lb_policy.h +65 -55
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.cc +14 -14
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +113 -36
- data/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc +14 -19
- data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +36 -13
- data/src/core/ext/filters/client_channel/lb_policy/subchannel_list.h +3 -10
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds.cc +814 -1589
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds.h +2 -5
- data/src/core/ext/filters/client_channel/lb_policy_factory.h +3 -6
- data/src/core/ext/filters/client_channel/resolver.cc +1 -2
- data/src/core/ext/filters/client_channel/resolver.h +8 -16
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +25 -8
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver.cc +46 -12
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver.h +10 -17
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_libuv.cc +7 -8
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc +4 -4
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +111 -44
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +22 -14
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.h +1 -1
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_fallback.cc +2 -2
- data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc +29 -10
- data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc +27 -36
- data/src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.cc +7 -10
- data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +60 -16
- data/src/core/ext/filters/client_channel/resolver_factory.h +4 -8
- data/src/core/ext/filters/client_channel/resolver_registry.cc +1 -1
- data/src/core/ext/filters/client_channel/resolver_registry.h +1 -1
- data/src/core/ext/filters/client_channel/resolver_result_parsing.cc +7 -10
- data/src/core/ext/filters/client_channel/resolving_lb_policy.cc +7 -8
- data/src/core/ext/filters/client_channel/resolving_lb_policy.h +1 -1
- data/src/core/ext/filters/client_channel/retry_throttle.cc +5 -5
- data/src/core/ext/filters/client_channel/retry_throttle.h +1 -4
- data/src/core/ext/filters/client_channel/service_config.h +8 -8
- data/src/core/ext/filters/client_channel/subchannel.cc +53 -86
- data/src/core/ext/filters/client_channel/subchannel.h +7 -9
- data/src/core/ext/filters/client_channel/subchannel_interface.h +9 -13
- data/src/core/ext/filters/client_channel/subchannel_pool_interface.h +3 -6
- data/src/core/ext/filters/client_channel/{lb_policy/xds/xds_load_balancer_api.cc → xds/xds_api.cc} +169 -52
- data/src/core/ext/filters/client_channel/xds/xds_api.h +171 -0
- data/src/core/ext/filters/client_channel/xds/xds_bootstrap.cc +450 -0
- data/src/core/ext/filters/client_channel/xds/xds_bootstrap.h +99 -0
- data/src/core/ext/filters/client_channel/{lb_policy/xds → xds}/xds_channel.h +8 -6
- data/src/core/ext/filters/client_channel/xds/xds_channel_args.h +26 -0
- data/src/core/ext/filters/client_channel/{lb_policy/xds → xds}/xds_channel_secure.cc +28 -11
- data/src/core/ext/filters/client_channel/xds/xds_client.cc +1413 -0
- data/src/core/ext/filters/client_channel/xds/xds_client.h +221 -0
- data/src/core/ext/filters/client_channel/{lb_policy/xds → xds}/xds_client_stats.cc +1 -5
- data/src/core/ext/filters/client_channel/{lb_policy/xds → xds}/xds_client_stats.h +3 -4
- data/src/core/ext/filters/deadline/deadline_filter.cc +20 -20
- data/src/core/ext/filters/http/client/http_client_filter.cc +15 -15
- data/src/core/ext/filters/http/client_authority_filter.cc +14 -14
- data/src/core/ext/filters/http/message_compress/message_compress_filter.cc +12 -12
- data/src/core/ext/filters/max_age/max_age_filter.cc +59 -50
- data/src/core/ext/filters/message_size/message_size_filter.cc +18 -18
- data/src/core/ext/filters/workarounds/workaround_cronet_compression_filter.cc +15 -14
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +233 -175
- data/src/core/ext/transport/chttp2/transport/flow_control.h +21 -24
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.cc +253 -163
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.h +24 -12
- data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +2 -3
- data/src/core/ext/transport/chttp2/transport/internal.h +13 -15
- data/src/core/ext/transport/chttp2/transport/writing.cc +3 -0
- data/src/core/ext/transport/inproc/inproc_transport.cc +20 -13
- data/src/core/lib/channel/channel_args.cc +16 -0
- data/src/core/lib/channel/channel_args.h +22 -0
- data/src/core/lib/channel/channelz.cc +5 -6
- data/src/core/lib/channel/channelz.h +1 -1
- data/src/core/lib/channel/connected_channel.cc +20 -20
- data/src/core/lib/channel/handshaker.h +3 -4
- data/src/core/lib/channel/handshaker_factory.h +1 -3
- data/src/core/lib/debug/trace.h +3 -2
- data/src/core/lib/gprpp/arena.cc +3 -3
- data/src/core/lib/gprpp/arena.h +2 -3
- data/src/core/lib/gprpp/inlined_vector.h +9 -0
- data/src/core/lib/gprpp/map.h +3 -501
- data/src/core/lib/gprpp/memory.h +45 -41
- data/src/core/lib/gprpp/mpscq.cc +108 -0
- data/src/core/lib/gprpp/mpscq.h +98 -0
- data/src/core/lib/gprpp/orphanable.h +6 -11
- data/src/core/lib/gprpp/ref_counted.h +25 -19
- data/src/core/lib/gprpp/set.h +33 -0
- data/src/core/lib/gprpp/thd.h +2 -4
- data/src/core/lib/http/httpcli.cc +1 -1
- data/src/core/lib/http/httpcli_security_connector.cc +15 -11
- data/src/core/lib/http/parser.cc +1 -1
- data/src/core/lib/iomgr/buffer_list.cc +4 -5
- data/src/core/lib/iomgr/buffer_list.h +5 -6
- data/src/core/lib/iomgr/call_combiner.cc +4 -5
- data/src/core/lib/iomgr/call_combiner.h +2 -2
- data/src/core/lib/iomgr/cfstream_handle.h +3 -5
- data/src/core/lib/iomgr/closure.h +8 -3
- data/src/core/lib/iomgr/combiner.cc +45 -82
- data/src/core/lib/iomgr/combiner.h +32 -8
- data/src/core/lib/iomgr/endpoint_cfstream.cc +5 -3
- data/src/core/lib/iomgr/ev_epoll1_linux.cc +19 -15
- data/src/core/lib/iomgr/exec_ctx.h +4 -3
- data/src/core/lib/iomgr/executor.cc +4 -2
- data/src/core/lib/iomgr/executor.h +3 -0
- data/src/core/lib/iomgr/executor/mpmcqueue.h +3 -6
- data/src/core/lib/iomgr/executor/threadpool.cc +1 -2
- data/src/core/lib/iomgr/executor/threadpool.h +7 -11
- data/src/core/lib/iomgr/resource_quota.cc +55 -51
- data/src/core/lib/iomgr/resource_quota.h +13 -9
- data/src/core/lib/iomgr/socket_utils_common_posix.cc +13 -0
- data/src/core/lib/iomgr/socket_utils_posix.h +4 -0
- data/src/core/lib/iomgr/tcp_client_posix.cc +4 -11
- data/src/core/lib/iomgr/tcp_custom.cc +9 -7
- data/src/core/lib/iomgr/tcp_posix.cc +20 -16
- data/src/core/lib/iomgr/tcp_server.h +1 -4
- data/src/core/lib/iomgr/tcp_server_custom.cc +5 -5
- data/src/core/lib/iomgr/tcp_server_posix.cc +1 -1
- data/src/core/lib/iomgr/tcp_server_utils_posix_common.cc +2 -11
- data/src/core/lib/iomgr/timer_custom.cc +2 -2
- data/src/core/lib/iomgr/udp_server.cc +3 -2
- data/src/core/lib/iomgr/udp_server.h +6 -12
- data/src/core/lib/json/json.h +1 -1
- data/src/core/lib/json/json_string.cc +2 -2
- data/src/core/lib/profiling/basic_timers.cc +2 -2
- data/src/core/lib/security/credentials/alts/alts_credentials.cc +2 -2
- data/src/core/lib/security/credentials/alts/grpc_alts_credentials_server_options.cc +1 -1
- data/src/core/lib/security/credentials/credentials.h +4 -20
- data/src/core/lib/security/credentials/fake/fake_credentials.cc +4 -4
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.h +1 -3
- data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.h +64 -0
- data/src/core/lib/security/security_connector/alts/alts_security_connector.cc +4 -4
- data/src/core/lib/security/security_connector/fake/fake_security_connector.cc +9 -7
- data/src/core/lib/security/security_connector/load_system_roots_linux.cc +2 -0
- data/src/core/lib/security/security_connector/local/local_security_connector.cc +4 -4
- data/src/core/lib/security/security_connector/security_connector.cc +1 -0
- data/src/core/lib/security/security_connector/security_connector.h +19 -17
- data/src/core/lib/security/security_connector/ssl/ssl_security_connector.cc +8 -5
- data/src/core/lib/security/security_connector/ssl_utils.cc +2 -2
- data/src/core/lib/security/security_connector/ssl_utils.h +1 -1
- data/src/core/lib/security/security_connector/tls/spiffe_security_connector.cc +14 -6
- data/src/core/lib/security/security_connector/tls/spiffe_security_connector.h +4 -2
- data/src/core/lib/security/transport/client_auth_filter.cc +17 -17
- data/src/core/lib/security/transport/security_handshaker.cc +29 -13
- data/src/core/lib/security/transport/security_handshaker.h +4 -2
- data/src/core/lib/security/transport/server_auth_filter.cc +14 -14
- data/src/core/lib/slice/slice.cc +2 -10
- data/src/core/lib/slice/slice_hash_table.h +4 -6
- data/src/core/lib/slice/slice_intern.cc +42 -39
- data/src/core/lib/slice/slice_internal.h +3 -3
- data/src/core/lib/slice/slice_utils.h +21 -4
- data/src/core/lib/slice/slice_weak_hash_table.h +4 -6
- data/src/core/lib/surface/call.cc +3 -3
- data/src/core/lib/surface/channel.cc +7 -0
- data/src/core/lib/surface/completion_queue.cc +12 -11
- data/src/core/lib/surface/completion_queue.h +4 -2
- data/src/core/lib/surface/init.cc +1 -0
- data/src/core/lib/surface/lame_client.cc +33 -18
- data/src/core/lib/surface/server.cc +77 -76
- data/src/core/lib/surface/version.cc +1 -1
- data/src/core/lib/transport/byte_stream.h +3 -7
- data/src/core/lib/transport/connectivity_state.cc +112 -98
- data/src/core/lib/transport/connectivity_state.h +100 -50
- data/src/core/lib/transport/static_metadata.cc +276 -288
- data/src/core/lib/transport/static_metadata.h +73 -76
- data/src/core/lib/transport/status_conversion.cc +1 -1
- data/src/core/lib/transport/status_metadata.cc +1 -1
- data/src/core/lib/transport/transport.cc +2 -2
- data/src/core/lib/transport/transport.h +12 -4
- data/src/core/lib/transport/transport_op_string.cc +14 -11
- data/src/core/tsi/alts/frame_protector/alts_unseal_privacy_integrity_crypter.cc +1 -1
- data/src/core/tsi/alts/handshaker/alts_shared_resource.cc +1 -1
- data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +5 -5
- data/src/core/tsi/alts/zero_copy_frame_protector/alts_zero_copy_grpc_protector.cc +12 -2
- data/src/core/tsi/fake_transport_security.cc +7 -5
- data/src/core/tsi/grpc_shadow_boringssl.h +2918 -2627
- data/src/core/tsi/local_transport_security.cc +8 -6
- data/src/core/tsi/ssl/session_cache/ssl_session.h +1 -3
- data/src/core/tsi/ssl/session_cache/ssl_session_boringssl.cc +1 -2
- data/src/core/tsi/ssl/session_cache/ssl_session_cache.cc +7 -5
- data/src/core/tsi/ssl/session_cache/ssl_session_cache.h +4 -6
- data/src/core/tsi/ssl/session_cache/ssl_session_openssl.cc +1 -2
- data/src/core/tsi/ssl_transport_security.cc +12 -12
- data/src/core/tsi/ssl_transport_security.h +2 -2
- data/src/core/tsi/transport_security_grpc.cc +7 -0
- data/src/core/tsi/transport_security_grpc.h +6 -0
- data/src/ruby/ext/grpc/extconf.rb +1 -0
- data/src/ruby/ext/grpc/rb_call.c +1 -1
- data/src/ruby/ext/grpc/rb_channel.c +1 -1
- data/src/ruby/lib/grpc/generic/bidi_call.rb +1 -1
- data/src/ruby/lib/grpc/generic/rpc_server.rb +1 -1
- data/src/ruby/lib/grpc/version.rb +1 -1
- data/src/ruby/spec/google_rpc_status_utils_spec.rb +2 -2
- data/third_party/boringssl/crypto/asn1/a_bool.c +18 -5
- data/third_party/boringssl/crypto/asn1/a_d2i_fp.c +17 -221
- data/third_party/boringssl/crypto/asn1/a_dup.c +0 -24
- data/third_party/boringssl/crypto/asn1/a_enum.c +2 -2
- data/third_party/boringssl/crypto/asn1/a_i2d_fp.c +10 -72
- data/third_party/boringssl/crypto/asn1/a_int.c +12 -71
- data/third_party/boringssl/crypto/asn1/a_mbstr.c +110 -216
- data/third_party/boringssl/crypto/asn1/a_object.c +16 -5
- data/third_party/boringssl/crypto/asn1/a_strnid.c +1 -0
- data/third_party/boringssl/crypto/asn1/asn1_lib.c +5 -1
- data/third_party/boringssl/crypto/asn1/tasn_enc.c +3 -1
- data/third_party/boringssl/crypto/base64/base64.c +2 -2
- data/third_party/boringssl/crypto/bio/bio.c +73 -9
- data/third_party/boringssl/crypto/bio/connect.c +4 -0
- data/third_party/boringssl/crypto/bio/fd.c +4 -0
- data/third_party/boringssl/crypto/bio/file.c +5 -2
- data/third_party/boringssl/crypto/bio/socket.c +4 -0
- data/third_party/boringssl/crypto/bio/socket_helper.c +4 -0
- data/third_party/boringssl/crypto/bn_extra/convert.c +11 -7
- data/third_party/boringssl/crypto/bytestring/ber.c +8 -4
- data/third_party/boringssl/crypto/bytestring/cbb.c +19 -7
- data/third_party/boringssl/crypto/bytestring/cbs.c +28 -15
- data/third_party/boringssl/crypto/bytestring/internal.h +28 -7
- data/third_party/boringssl/crypto/bytestring/unicode.c +155 -0
- data/third_party/boringssl/crypto/chacha/chacha.c +36 -19
- data/third_party/boringssl/crypto/chacha/internal.h +45 -0
- data/third_party/boringssl/crypto/cipher_extra/cipher_extra.c +29 -0
- data/third_party/boringssl/crypto/cipher_extra/e_aesccm.c +269 -25
- data/third_party/boringssl/crypto/cipher_extra/e_aesctrhmac.c +16 -14
- data/third_party/boringssl/crypto/cipher_extra/e_aesgcmsiv.c +54 -38
- data/third_party/boringssl/crypto/cipher_extra/e_chacha20poly1305.c +133 -41
- data/third_party/boringssl/crypto/cipher_extra/e_tls.c +23 -15
- data/third_party/boringssl/crypto/cipher_extra/tls_cbc.c +24 -15
- data/third_party/boringssl/crypto/cmac/cmac.c +62 -25
- data/third_party/boringssl/crypto/conf/conf.c +7 -0
- data/third_party/boringssl/crypto/cpu-arm-linux.c +4 -148
- data/third_party/boringssl/crypto/cpu-arm-linux.h +201 -0
- data/third_party/boringssl/crypto/cpu-intel.c +45 -51
- data/third_party/boringssl/crypto/crypto.c +39 -22
- data/third_party/boringssl/crypto/curve25519/spake25519.c +1 -1
- data/third_party/boringssl/crypto/dsa/dsa.c +77 -53
- data/third_party/boringssl/crypto/ec_extra/ec_asn1.c +20 -8
- data/third_party/boringssl/crypto/ec_extra/ec_derive.c +96 -0
- data/third_party/boringssl/crypto/{ecdh/ecdh.c → ecdh_extra/ecdh_extra.c} +20 -58
- data/third_party/boringssl/crypto/ecdsa_extra/ecdsa_asn1.c +1 -9
- data/third_party/boringssl/crypto/engine/engine.c +2 -1
- data/third_party/boringssl/crypto/err/err.c +2 -0
- data/third_party/boringssl/crypto/err/internal.h +2 -2
- data/third_party/boringssl/crypto/evp/evp.c +89 -8
- data/third_party/boringssl/crypto/evp/evp_asn1.c +56 -5
- data/third_party/boringssl/crypto/evp/evp_ctx.c +52 -14
- data/third_party/boringssl/crypto/evp/internal.h +18 -1
- data/third_party/boringssl/crypto/evp/p_dsa_asn1.c +5 -0
- data/third_party/boringssl/crypto/evp/p_ec.c +51 -3
- data/third_party/boringssl/crypto/evp/p_ec_asn1.c +6 -7
- data/third_party/boringssl/crypto/evp/p_ed25519.c +36 -3
- data/third_party/boringssl/crypto/evp/p_ed25519_asn1.c +76 -45
- data/third_party/boringssl/crypto/evp/p_rsa.c +3 -1
- data/third_party/boringssl/crypto/evp/p_rsa_asn1.c +5 -0
- data/third_party/boringssl/crypto/evp/p_x25519.c +110 -0
- data/third_party/boringssl/crypto/evp/p_x25519_asn1.c +249 -0
- data/third_party/boringssl/crypto/evp/scrypt.c +6 -2
- data/third_party/boringssl/crypto/fipsmodule/aes/aes.c +34 -274
- data/third_party/boringssl/crypto/fipsmodule/aes/internal.h +161 -21
- data/third_party/boringssl/crypto/fipsmodule/aes/key_wrap.c +111 -13
- data/third_party/boringssl/crypto/fipsmodule/aes/mode_wrappers.c +17 -21
- data/third_party/boringssl/crypto/fipsmodule/bcm.c +119 -7
- data/third_party/boringssl/crypto/fipsmodule/bn/bn.c +19 -2
- data/third_party/boringssl/crypto/fipsmodule/bn/cmp.c +2 -2
- data/third_party/boringssl/crypto/fipsmodule/bn/ctx.c +93 -160
- data/third_party/boringssl/crypto/fipsmodule/bn/div.c +48 -57
- data/third_party/boringssl/crypto/fipsmodule/bn/div_extra.c +87 -0
- data/third_party/boringssl/crypto/fipsmodule/bn/exponentiation.c +143 -211
- data/third_party/boringssl/crypto/fipsmodule/bn/gcd.c +0 -305
- data/third_party/boringssl/crypto/fipsmodule/bn/gcd_extra.c +325 -0
- data/third_party/boringssl/crypto/fipsmodule/bn/internal.h +168 -50
- data/third_party/boringssl/crypto/fipsmodule/bn/montgomery.c +68 -92
- data/third_party/boringssl/crypto/fipsmodule/bn/montgomery_inv.c +7 -6
- data/third_party/boringssl/crypto/fipsmodule/bn/mul.c +11 -14
- data/third_party/boringssl/crypto/fipsmodule/bn/prime.c +358 -443
- data/third_party/boringssl/crypto/fipsmodule/bn/random.c +25 -35
- data/third_party/boringssl/crypto/fipsmodule/bn/rsaz_exp.c +20 -25
- data/third_party/boringssl/crypto/fipsmodule/bn/rsaz_exp.h +76 -5
- data/third_party/boringssl/crypto/fipsmodule/bn/shift.c +14 -14
- data/third_party/boringssl/crypto/fipsmodule/cipher/cipher.c +7 -2
- data/third_party/boringssl/crypto/fipsmodule/cipher/e_aes.c +383 -516
- data/third_party/boringssl/crypto/fipsmodule/cipher/e_des.c +4 -0
- data/third_party/boringssl/crypto/fipsmodule/cipher/internal.h +3 -4
- data/third_party/boringssl/crypto/fipsmodule/delocate.h +3 -2
- data/third_party/boringssl/crypto/fipsmodule/digest/digest.c +32 -17
- data/third_party/boringssl/crypto/fipsmodule/digest/md32_common.h +3 -3
- data/third_party/boringssl/crypto/fipsmodule/ec/ec.c +228 -122
- data/third_party/boringssl/crypto/fipsmodule/ec/ec_key.c +34 -8
- data/third_party/boringssl/crypto/fipsmodule/ec/ec_montgomery.c +311 -98
- data/third_party/boringssl/crypto/fipsmodule/ec/felem.c +82 -0
- data/third_party/boringssl/crypto/fipsmodule/ec/internal.h +263 -97
- data/third_party/boringssl/crypto/fipsmodule/ec/oct.c +22 -59
- data/third_party/boringssl/crypto/fipsmodule/ec/p224-64.c +317 -234
- data/third_party/boringssl/crypto/fipsmodule/ec/p256-x86_64-table.h +9473 -9475
- data/third_party/boringssl/crypto/fipsmodule/ec/p256-x86_64.c +313 -109
- data/third_party/boringssl/crypto/fipsmodule/ec/p256-x86_64.h +36 -0
- data/third_party/boringssl/crypto/fipsmodule/ec/scalar.c +96 -0
- data/third_party/boringssl/crypto/fipsmodule/ec/simple.c +126 -792
- data/third_party/boringssl/crypto/fipsmodule/ec/simple_mul.c +84 -0
- data/third_party/boringssl/crypto/fipsmodule/ec/util.c +163 -12
- data/third_party/boringssl/crypto/fipsmodule/ec/wnaf.c +84 -211
- data/third_party/boringssl/crypto/fipsmodule/ecdh/ecdh.c +122 -0
- data/third_party/boringssl/crypto/fipsmodule/ecdsa/ecdsa.c +60 -205
- data/third_party/boringssl/crypto/fipsmodule/fips_shared_support.c +32 -0
- data/third_party/boringssl/crypto/fipsmodule/is_fips.c +2 -0
- data/third_party/boringssl/crypto/fipsmodule/md4/md4.c +3 -1
- data/third_party/boringssl/crypto/fipsmodule/md5/internal.h +37 -0
- data/third_party/boringssl/crypto/fipsmodule/md5/md5.c +11 -8
- data/third_party/boringssl/crypto/fipsmodule/modes/cbc.c +35 -79
- data/third_party/boringssl/crypto/fipsmodule/modes/cfb.c +7 -39
- data/third_party/boringssl/crypto/fipsmodule/modes/ctr.c +7 -27
- data/third_party/boringssl/crypto/fipsmodule/modes/gcm.c +123 -309
- data/third_party/boringssl/crypto/fipsmodule/modes/internal.h +189 -126
- data/third_party/boringssl/crypto/fipsmodule/modes/ofb.c +3 -2
- data/third_party/boringssl/crypto/fipsmodule/rand/ctrdrbg.c +2 -2
- data/third_party/boringssl/crypto/fipsmodule/rand/internal.h +35 -0
- data/third_party/boringssl/crypto/fipsmodule/rand/rand.c +24 -19
- data/third_party/boringssl/crypto/fipsmodule/rand/urandom.c +256 -77
- data/third_party/boringssl/crypto/fipsmodule/rsa/padding.c +10 -7
- data/third_party/boringssl/crypto/fipsmodule/rsa/rsa.c +5 -1
- data/third_party/boringssl/crypto/fipsmodule/rsa/rsa_impl.c +131 -14
- data/third_party/boringssl/crypto/fipsmodule/self_check/self_check.c +83 -10
- data/third_party/boringssl/crypto/fipsmodule/sha/internal.h +53 -0
- data/third_party/boringssl/crypto/fipsmodule/sha/sha1.c +9 -13
- data/third_party/boringssl/crypto/fipsmodule/sha/sha256.c +18 -12
- data/third_party/boringssl/crypto/fipsmodule/sha/sha512.c +95 -168
- data/third_party/boringssl/crypto/hrss/hrss.c +2201 -0
- data/third_party/boringssl/crypto/hrss/internal.h +62 -0
- data/third_party/boringssl/crypto/internal.h +95 -20
- data/third_party/boringssl/crypto/lhash/lhash.c +45 -33
- data/third_party/boringssl/crypto/mem.c +39 -2
- data/third_party/boringssl/crypto/obj/obj.c +4 -4
- data/third_party/boringssl/crypto/obj/obj_dat.h +6181 -875
- data/third_party/boringssl/crypto/pem/pem_all.c +2 -3
- data/third_party/boringssl/crypto/pem/pem_info.c +144 -162
- data/third_party/boringssl/crypto/pem/pem_lib.c +53 -52
- data/third_party/boringssl/crypto/pem/pem_pkey.c +13 -21
- data/third_party/boringssl/crypto/pkcs7/pkcs7.c +15 -22
- data/third_party/boringssl/crypto/pkcs7/pkcs7_x509.c +168 -16
- data/third_party/boringssl/crypto/pkcs8/internal.h +11 -0
- data/third_party/boringssl/crypto/pkcs8/p5_pbev2.c +24 -15
- data/third_party/boringssl/crypto/pkcs8/pkcs8.c +42 -25
- data/third_party/boringssl/crypto/pkcs8/pkcs8_x509.c +559 -43
- data/third_party/boringssl/crypto/pool/internal.h +1 -1
- data/third_party/boringssl/crypto/pool/pool.c +21 -0
- data/third_party/boringssl/crypto/rand_extra/deterministic.c +8 -0
- data/third_party/boringssl/crypto/rand_extra/fuchsia.c +1 -14
- data/third_party/boringssl/crypto/refcount_lock.c +2 -2
- data/third_party/boringssl/crypto/rsa_extra/rsa_print.c +22 -0
- data/third_party/boringssl/crypto/siphash/siphash.c +80 -0
- data/third_party/boringssl/crypto/stack/stack.c +83 -32
- data/third_party/boringssl/crypto/thread_none.c +2 -2
- data/third_party/boringssl/crypto/thread_pthread.c +2 -2
- data/third_party/boringssl/crypto/thread_win.c +38 -19
- data/third_party/boringssl/crypto/x509/a_strex.c +22 -2
- data/third_party/boringssl/crypto/x509/asn1_gen.c +2 -1
- data/third_party/boringssl/crypto/x509/by_dir.c +7 -0
- data/third_party/boringssl/crypto/x509/by_file.c +12 -10
- data/third_party/boringssl/crypto/x509/t_crl.c +5 -8
- data/third_party/boringssl/crypto/x509/t_req.c +1 -3
- data/third_party/boringssl/crypto/x509/t_x509.c +5 -8
- data/third_party/boringssl/crypto/x509/x509_cmp.c +1 -1
- data/third_party/boringssl/crypto/x509/x509_def.c +1 -1
- data/third_party/boringssl/crypto/x509/x509_lu.c +114 -5
- data/third_party/boringssl/crypto/x509/x509_req.c +20 -0
- data/third_party/boringssl/crypto/x509/x509_set.c +5 -0
- data/third_party/boringssl/crypto/x509/x509_trs.c +1 -0
- data/third_party/boringssl/crypto/x509/x509_txt.c +4 -5
- data/third_party/boringssl/crypto/x509/x509_vfy.c +145 -138
- data/third_party/boringssl/crypto/x509/x509_vpm.c +2 -0
- data/third_party/boringssl/crypto/x509/x509cset.c +40 -0
- data/third_party/boringssl/crypto/x509/x509name.c +2 -3
- data/third_party/boringssl/crypto/x509/x_all.c +109 -210
- data/third_party/boringssl/crypto/x509/x_x509.c +6 -0
- data/third_party/boringssl/crypto/x509v3/ext_dat.h +1 -3
- data/third_party/boringssl/crypto/x509v3/internal.h +56 -0
- data/third_party/boringssl/crypto/x509v3/pcy_cache.c +2 -0
- data/third_party/boringssl/crypto/x509v3/pcy_node.c +1 -0
- data/third_party/boringssl/crypto/x509v3/pcy_tree.c +4 -2
- data/third_party/boringssl/crypto/x509v3/v3_akey.c +5 -2
- data/third_party/boringssl/crypto/x509v3/v3_alt.c +19 -13
- data/third_party/boringssl/crypto/x509v3/v3_conf.c +2 -1
- data/third_party/boringssl/crypto/x509v3/v3_cpols.c +3 -2
- data/third_party/boringssl/crypto/x509v3/v3_genn.c +1 -6
- data/third_party/boringssl/crypto/x509v3/v3_lib.c +1 -0
- data/third_party/boringssl/crypto/x509v3/v3_ocsp.c +68 -0
- data/third_party/boringssl/crypto/x509v3/v3_pci.c +2 -1
- data/third_party/boringssl/crypto/x509v3/v3_purp.c +47 -69
- data/third_party/boringssl/crypto/x509v3/v3_skey.c +5 -2
- data/third_party/boringssl/crypto/x509v3/v3_utl.c +69 -25
- data/third_party/boringssl/include/openssl/aead.h +45 -19
- data/third_party/boringssl/include/openssl/aes.h +32 -7
- data/third_party/boringssl/include/openssl/asn1.h +7 -77
- data/third_party/boringssl/include/openssl/base.h +120 -6
- data/third_party/boringssl/include/openssl/base64.h +4 -1
- data/third_party/boringssl/include/openssl/bio.h +112 -81
- data/third_party/boringssl/include/openssl/blowfish.h +3 -3
- data/third_party/boringssl/include/openssl/bn.h +55 -29
- data/third_party/boringssl/include/openssl/buf.h +2 -2
- data/third_party/boringssl/include/openssl/bytestring.h +54 -32
- data/third_party/boringssl/include/openssl/cast.h +2 -2
- data/third_party/boringssl/include/openssl/cipher.h +46 -16
- data/third_party/boringssl/include/openssl/cmac.h +6 -2
- data/third_party/boringssl/include/openssl/conf.h +3 -6
- data/third_party/boringssl/include/openssl/cpu.h +25 -9
- data/third_party/boringssl/include/openssl/crypto.h +32 -10
- data/third_party/boringssl/include/openssl/curve25519.h +4 -4
- data/third_party/boringssl/include/openssl/dh.h +3 -2
- data/third_party/boringssl/include/openssl/digest.h +21 -7
- data/third_party/boringssl/include/openssl/dsa.h +8 -2
- data/third_party/boringssl/include/openssl/e_os2.h +18 -0
- data/third_party/boringssl/include/openssl/ec.h +25 -21
- data/third_party/boringssl/include/openssl/ec_key.h +36 -8
- data/third_party/boringssl/include/openssl/ecdh.h +17 -0
- data/third_party/boringssl/include/openssl/ecdsa.h +3 -3
- data/third_party/boringssl/include/openssl/engine.h +4 -4
- data/third_party/boringssl/include/openssl/err.h +3 -0
- data/third_party/boringssl/include/openssl/evp.h +199 -42
- data/third_party/boringssl/include/openssl/hmac.h +4 -4
- data/third_party/boringssl/include/openssl/hrss.h +100 -0
- data/third_party/boringssl/include/openssl/lhash.h +131 -23
- data/third_party/boringssl/include/openssl/md4.h +6 -4
- data/third_party/boringssl/include/openssl/md5.h +6 -4
- data/third_party/boringssl/include/openssl/mem.h +6 -2
- data/third_party/boringssl/include/openssl/nid.h +3 -0
- data/third_party/boringssl/include/openssl/obj.h +3 -0
- data/third_party/boringssl/include/openssl/pem.h +102 -64
- data/third_party/boringssl/include/openssl/pkcs7.h +136 -3
- data/third_party/boringssl/include/openssl/pkcs8.h +42 -3
- data/third_party/boringssl/include/openssl/pool.h +13 -2
- data/third_party/boringssl/include/openssl/ripemd.h +5 -4
- data/third_party/boringssl/include/openssl/rsa.h +46 -15
- data/third_party/boringssl/include/openssl/sha.h +40 -28
- data/third_party/boringssl/include/openssl/siphash.h +37 -0
- data/third_party/boringssl/include/openssl/span.h +17 -9
- data/third_party/boringssl/include/openssl/ssl.h +766 -393
- data/third_party/boringssl/include/openssl/ssl3.h +4 -3
- data/third_party/boringssl/include/openssl/stack.h +134 -77
- data/third_party/boringssl/include/openssl/thread.h +1 -1
- data/third_party/boringssl/include/openssl/tls1.h +25 -9
- data/third_party/boringssl/include/openssl/type_check.h +14 -15
- data/third_party/boringssl/include/openssl/x509.h +28 -3
- data/third_party/boringssl/include/openssl/x509_vfy.h +98 -32
- data/third_party/boringssl/include/openssl/x509v3.h +17 -13
- data/third_party/boringssl/ssl/d1_both.cc +9 -18
- data/third_party/boringssl/ssl/d1_lib.cc +4 -3
- data/third_party/boringssl/ssl/d1_pkt.cc +4 -4
- data/third_party/boringssl/ssl/d1_srtp.cc +15 -15
- data/third_party/boringssl/ssl/dtls_method.cc +0 -1
- data/third_party/boringssl/ssl/dtls_record.cc +28 -28
- data/third_party/boringssl/ssl/handoff.cc +295 -91
- data/third_party/boringssl/ssl/handshake.cc +133 -72
- data/third_party/boringssl/ssl/handshake_client.cc +218 -189
- data/third_party/boringssl/ssl/handshake_server.cc +399 -272
- data/third_party/boringssl/ssl/internal.h +1413 -928
- data/third_party/boringssl/ssl/s3_both.cc +175 -36
- data/third_party/boringssl/ssl/s3_lib.cc +9 -13
- data/third_party/boringssl/ssl/s3_pkt.cc +63 -29
- data/third_party/boringssl/ssl/ssl_aead_ctx.cc +55 -35
- data/third_party/boringssl/ssl/ssl_asn1.cc +57 -73
- data/third_party/boringssl/ssl/ssl_buffer.cc +13 -12
- data/third_party/boringssl/ssl/ssl_cert.cc +313 -210
- data/third_party/boringssl/ssl/ssl_cipher.cc +159 -221
- data/third_party/boringssl/ssl/ssl_file.cc +2 -0
- data/third_party/boringssl/ssl/ssl_key_share.cc +164 -19
- data/third_party/boringssl/ssl/ssl_lib.cc +847 -555
- data/third_party/boringssl/ssl/ssl_privkey.cc +441 -111
- data/third_party/boringssl/ssl/ssl_session.cc +230 -178
- data/third_party/boringssl/ssl/ssl_transcript.cc +21 -142
- data/third_party/boringssl/ssl/ssl_versions.cc +88 -93
- data/third_party/boringssl/ssl/ssl_x509.cc +279 -218
- data/third_party/boringssl/ssl/t1_enc.cc +5 -96
- data/third_party/boringssl/ssl/t1_lib.cc +931 -678
- data/third_party/boringssl/ssl/tls13_both.cc +251 -121
- data/third_party/boringssl/ssl/tls13_client.cc +129 -73
- data/third_party/boringssl/ssl/tls13_enc.cc +350 -282
- data/third_party/boringssl/ssl/tls13_server.cc +259 -192
- data/third_party/boringssl/ssl/tls_method.cc +26 -21
- data/third_party/boringssl/ssl/tls_record.cc +42 -47
- data/third_party/boringssl/third_party/fiat/curve25519.c +261 -1324
- data/third_party/boringssl/third_party/fiat/curve25519_32.h +911 -0
- data/third_party/boringssl/third_party/fiat/curve25519_64.h +559 -0
- data/third_party/boringssl/third_party/fiat/p256.c +238 -999
- data/third_party/boringssl/third_party/fiat/p256_32.h +3226 -0
- data/third_party/boringssl/third_party/fiat/p256_64.h +1217 -0
- data/third_party/upb/upb/port_def.inc +1 -1
- data/third_party/upb/upb/table.c +2 -1
- metadata +71 -43
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_load_balancer_api.h +0 -127
- data/src/core/lib/gpr/mpscq.cc +0 -117
- data/src/core/lib/gpr/mpscq.h +0 -88
- data/src/core/lib/gprpp/abstract.h +0 -47
- data/src/core/lib/gprpp/pair.h +0 -38
- data/third_party/boringssl/crypto/cipher_extra/e_ssl3.c +0 -460
- data/third_party/boringssl/crypto/fipsmodule/modes/ccm.c +0 -256
- data/third_party/boringssl/include/openssl/lhash_macros.h +0 -174
- data/third_party/boringssl/ssl/custom_extensions.cc +0 -265
@@ -77,9 +77,9 @@ class ConnectedSubchannel : public RefCounted<ConnectedSubchannel> {
|
|
77
77
|
RefCountedPtr<channelz::SubchannelNode> channelz_subchannel);
|
78
78
|
~ConnectedSubchannel();
|
79
79
|
|
80
|
-
void
|
81
|
-
|
82
|
-
|
80
|
+
void StartWatch(grpc_pollset_set* interested_parties,
|
81
|
+
OrphanablePtr<ConnectivityStateWatcherInterface> watcher);
|
82
|
+
|
83
83
|
void Ping(grpc_closure* on_initiate, grpc_closure* on_ack);
|
84
84
|
|
85
85
|
grpc_channel_stack* channel_stack() const { return channel_stack_; }
|
@@ -192,11 +192,9 @@ class Subchannel {
|
|
192
192
|
virtual void OnConnectivityStateChange(
|
193
193
|
grpc_connectivity_state new_state,
|
194
194
|
RefCountedPtr<ConnectedSubchannel> connected_subchannel) // NOLINT
|
195
|
-
|
196
|
-
|
197
|
-
virtual grpc_pollset_set* interested_parties() GRPC_ABSTRACT;
|
195
|
+
= 0;
|
198
196
|
|
199
|
-
|
197
|
+
virtual grpc_pollset_set* interested_parties() = 0;
|
200
198
|
};
|
201
199
|
|
202
200
|
// The ctor and dtor are not intended to use directly.
|
@@ -294,8 +292,8 @@ class Subchannel {
|
|
294
292
|
bool empty() const { return watchers_.empty(); }
|
295
293
|
|
296
294
|
private:
|
297
|
-
// TODO(roth):
|
298
|
-
//
|
295
|
+
// TODO(roth): Once we can use C++-14 heterogeneous lookups, this can
|
296
|
+
// be a set instead of a map.
|
299
297
|
Map<ConnectivityStateWatcherInterface*,
|
300
298
|
OrphanablePtr<ConnectivityStateWatcherInterface>>
|
301
299
|
watchers_;
|
@@ -36,14 +36,12 @@ class SubchannelInterface : public RefCounted<SubchannelInterface> {
|
|
36
36
|
// Will be invoked whenever the subchannel's connectivity state
|
37
37
|
// changes. There will be only one invocation of this method on a
|
38
38
|
// given watcher instance at any given time.
|
39
|
-
virtual void OnConnectivityStateChange(
|
40
|
-
|
39
|
+
virtual void OnConnectivityStateChange(
|
40
|
+
grpc_connectivity_state new_state) = 0;
|
41
41
|
|
42
42
|
// TODO(roth): Remove this as soon as we move to EventManager-based
|
43
43
|
// polling.
|
44
|
-
virtual grpc_pollset_set* interested_parties()
|
45
|
-
|
46
|
-
GRPC_ABSTRACT_BASE_CLASS
|
44
|
+
virtual grpc_pollset_set* interested_parties() = 0;
|
47
45
|
};
|
48
46
|
|
49
47
|
template <typename TraceFlagT = TraceFlag>
|
@@ -53,7 +51,7 @@ class SubchannelInterface : public RefCounted<SubchannelInterface> {
|
|
53
51
|
virtual ~SubchannelInterface() = default;
|
54
52
|
|
55
53
|
// Returns the current connectivity state of the subchannel.
|
56
|
-
virtual grpc_connectivity_state CheckConnectivityState()
|
54
|
+
virtual grpc_connectivity_state CheckConnectivityState() = 0;
|
57
55
|
|
58
56
|
// Starts watching the subchannel's connectivity state.
|
59
57
|
// The first callback to the watcher will be delivered when the
|
@@ -68,29 +66,27 @@ class SubchannelInterface : public RefCounted<SubchannelInterface> {
|
|
68
66
|
// the previous watcher using CancelConnectivityStateWatch().
|
69
67
|
virtual void WatchConnectivityState(
|
70
68
|
grpc_connectivity_state initial_state,
|
71
|
-
UniquePtr<ConnectivityStateWatcherInterface> watcher)
|
69
|
+
UniquePtr<ConnectivityStateWatcherInterface> watcher) = 0;
|
72
70
|
|
73
71
|
// Cancels a connectivity state watch.
|
74
72
|
// If the watcher has already been destroyed, this is a no-op.
|
75
73
|
virtual void CancelConnectivityStateWatch(
|
76
|
-
ConnectivityStateWatcherInterface* watcher)
|
74
|
+
ConnectivityStateWatcherInterface* watcher) = 0;
|
77
75
|
|
78
76
|
// Attempt to connect to the backend. Has no effect if already connected.
|
79
77
|
// If the subchannel is currently in backoff delay due to a previously
|
80
78
|
// failed attempt, the new connection attempt will not start until the
|
81
79
|
// backoff delay has elapsed.
|
82
|
-
virtual void AttemptToConnect()
|
80
|
+
virtual void AttemptToConnect() = 0;
|
83
81
|
|
84
82
|
// Resets the subchannel's connection backoff state. If AttemptToConnect()
|
85
83
|
// has been called since the subchannel entered TRANSIENT_FAILURE state,
|
86
84
|
// starts a new connection attempt immediately; otherwise, a new connection
|
87
85
|
// attempt will be started as soon as AttemptToConnect() is called.
|
88
|
-
virtual void ResetBackoff()
|
86
|
+
virtual void ResetBackoff() = 0;
|
89
87
|
|
90
88
|
// TODO(roth): Need a better non-grpc-specific abstraction here.
|
91
|
-
virtual const grpc_channel_args* channel_args()
|
92
|
-
|
93
|
-
GRPC_ABSTRACT_BASE_CLASS
|
89
|
+
virtual const grpc_channel_args* channel_args() = 0;
|
94
90
|
};
|
95
91
|
|
96
92
|
} // namespace grpc_core
|
@@ -23,7 +23,6 @@
|
|
23
23
|
|
24
24
|
#include "src/core/lib/avl/avl.h"
|
25
25
|
#include "src/core/lib/channel/channel_args.h"
|
26
|
-
#include "src/core/lib/gprpp/abstract.h"
|
27
26
|
#include "src/core/lib/gprpp/ref_counted.h"
|
28
27
|
|
29
28
|
namespace grpc_core {
|
@@ -70,14 +69,14 @@ class SubchannelPoolInterface : public RefCounted<SubchannelPoolInterface> {
|
|
70
69
|
// with \a key, which may be different from \a constructed because we reuse
|
71
70
|
// (instead of update) any existing subchannel already registered with \a key.
|
72
71
|
virtual Subchannel* RegisterSubchannel(SubchannelKey* key,
|
73
|
-
Subchannel* constructed)
|
72
|
+
Subchannel* constructed) = 0;
|
74
73
|
|
75
74
|
// Removes the registered subchannel found by \a key.
|
76
|
-
virtual void UnregisterSubchannel(SubchannelKey* key)
|
75
|
+
virtual void UnregisterSubchannel(SubchannelKey* key) = 0;
|
77
76
|
|
78
77
|
// Finds the subchannel registered for the given subchannel key. Returns NULL
|
79
78
|
// if no such channel exists. Thread-safe.
|
80
|
-
virtual Subchannel* FindSubchannel(SubchannelKey* key)
|
79
|
+
virtual Subchannel* FindSubchannel(SubchannelKey* key) = 0;
|
81
80
|
|
82
81
|
// Creates a channel arg from \a subchannel pool.
|
83
82
|
static grpc_arg CreateChannelArg(SubchannelPoolInterface* subchannel_pool);
|
@@ -85,8 +84,6 @@ class SubchannelPoolInterface : public RefCounted<SubchannelPoolInterface> {
|
|
85
84
|
// Gets the subchannel pool from the channel args.
|
86
85
|
static SubchannelPoolInterface* GetSubchannelPoolFromChannelArgs(
|
87
86
|
const grpc_channel_args* args);
|
88
|
-
|
89
|
-
GRPC_ABSTRACT_BASE_CLASS
|
90
87
|
};
|
91
88
|
|
92
89
|
} // namespace grpc_core
|
data/src/core/ext/filters/client_channel/{lb_policy/xds/xds_load_balancer_api.cc → xds/xds_api.cc}
RENAMED
@@ -24,7 +24,7 @@
|
|
24
24
|
#include <grpc/support/alloc.h>
|
25
25
|
#include <grpc/support/string_util.h>
|
26
26
|
|
27
|
-
#include "src/core/ext/filters/client_channel/
|
27
|
+
#include "src/core/ext/filters/client_channel/xds/xds_api.h"
|
28
28
|
#include "src/core/lib/iomgr/error.h"
|
29
29
|
#include "src/core/lib/iomgr/sockaddr_utils.h"
|
30
30
|
|
@@ -49,15 +49,49 @@ namespace {
|
|
49
49
|
|
50
50
|
constexpr char kEdsTypeUrl[] =
|
51
51
|
"type.googleapis.com/envoy.api.v2.ClusterLoadAssignment";
|
52
|
-
constexpr char kEndpointRequired[] = "endpointRequired";
|
53
52
|
|
54
53
|
} // namespace
|
55
54
|
|
55
|
+
bool XdsPriorityListUpdate::operator==(
|
56
|
+
const XdsPriorityListUpdate& other) const {
|
57
|
+
if (priorities_.size() != other.priorities_.size()) return false;
|
58
|
+
for (size_t i = 0; i < priorities_.size(); ++i) {
|
59
|
+
if (priorities_[i].localities != other.priorities_[i].localities) {
|
60
|
+
return false;
|
61
|
+
}
|
62
|
+
}
|
63
|
+
return true;
|
64
|
+
}
|
65
|
+
|
66
|
+
void XdsPriorityListUpdate::Add(
|
67
|
+
XdsPriorityListUpdate::LocalityMap::Locality locality) {
|
68
|
+
// Pad the missing priorities in case the localities are not ordered by
|
69
|
+
// priority.
|
70
|
+
if (!Contains(locality.priority)) priorities_.resize(locality.priority + 1);
|
71
|
+
LocalityMap& locality_map = priorities_[locality.priority];
|
72
|
+
locality_map.localities.emplace(locality.name, std::move(locality));
|
73
|
+
}
|
74
|
+
|
75
|
+
const XdsPriorityListUpdate::LocalityMap* XdsPriorityListUpdate::Find(
|
76
|
+
uint32_t priority) const {
|
77
|
+
if (!Contains(priority)) return nullptr;
|
78
|
+
return &priorities_[priority];
|
79
|
+
}
|
80
|
+
|
81
|
+
bool XdsPriorityListUpdate::Contains(
|
82
|
+
const RefCountedPtr<XdsLocalityName>& name) {
|
83
|
+
for (size_t i = 0; i < priorities_.size(); ++i) {
|
84
|
+
const LocalityMap& locality_map = priorities_[i];
|
85
|
+
if (locality_map.Contains(name)) return true;
|
86
|
+
}
|
87
|
+
return false;
|
88
|
+
}
|
89
|
+
|
56
90
|
bool XdsDropConfig::ShouldDrop(const UniquePtr<char>** category_name) const {
|
57
91
|
for (size_t i = 0; i < drop_category_list_.size(); ++i) {
|
58
92
|
const auto& drop_category = drop_category_list_[i];
|
59
93
|
// Generate a random number in [0, 1000000).
|
60
|
-
const
|
94
|
+
const uint32_t random = static_cast<uint32_t>(rand()) % 1000000;
|
61
95
|
if (random < drop_category.parts_per_million) {
|
62
96
|
*category_name = &drop_category.name;
|
63
97
|
return true;
|
@@ -66,24 +100,115 @@ bool XdsDropConfig::ShouldDrop(const UniquePtr<char>** category_name) const {
|
|
66
100
|
return false;
|
67
101
|
}
|
68
102
|
|
69
|
-
|
103
|
+
namespace {
|
104
|
+
|
105
|
+
void PopulateMetadataValue(upb_arena* arena, google_protobuf_Value* value_pb,
|
106
|
+
const XdsBootstrap::MetadataValue& value);
|
107
|
+
|
108
|
+
void PopulateListValue(upb_arena* arena, google_protobuf_ListValue* list_value,
|
109
|
+
const std::vector<XdsBootstrap::MetadataValue>& values) {
|
110
|
+
for (const auto& value : values) {
|
111
|
+
auto* value_pb = google_protobuf_ListValue_add_values(list_value, arena);
|
112
|
+
PopulateMetadataValue(arena, value_pb, value);
|
113
|
+
}
|
114
|
+
}
|
115
|
+
|
116
|
+
void PopulateMetadata(
|
117
|
+
upb_arena* arena, google_protobuf_Struct* metadata_pb,
|
118
|
+
const Map<const char*, XdsBootstrap::MetadataValue, StringLess>& metadata) {
|
119
|
+
for (const auto& p : metadata) {
|
120
|
+
google_protobuf_Struct_FieldsEntry* field =
|
121
|
+
google_protobuf_Struct_add_fields(metadata_pb, arena);
|
122
|
+
google_protobuf_Struct_FieldsEntry_set_key(field,
|
123
|
+
upb_strview_makez(p.first));
|
124
|
+
google_protobuf_Value* value =
|
125
|
+
google_protobuf_Struct_FieldsEntry_mutable_value(field, arena);
|
126
|
+
PopulateMetadataValue(arena, value, p.second);
|
127
|
+
}
|
128
|
+
}
|
129
|
+
|
130
|
+
void PopulateMetadataValue(upb_arena* arena, google_protobuf_Value* value_pb,
|
131
|
+
const XdsBootstrap::MetadataValue& value) {
|
132
|
+
switch (value.type) {
|
133
|
+
case XdsBootstrap::MetadataValue::Type::MD_NULL:
|
134
|
+
google_protobuf_Value_set_null_value(value_pb, 0);
|
135
|
+
break;
|
136
|
+
case XdsBootstrap::MetadataValue::Type::DOUBLE:
|
137
|
+
google_protobuf_Value_set_number_value(value_pb, value.double_value);
|
138
|
+
break;
|
139
|
+
case XdsBootstrap::MetadataValue::Type::STRING:
|
140
|
+
google_protobuf_Value_set_string_value(
|
141
|
+
value_pb, upb_strview_makez(value.string_value));
|
142
|
+
break;
|
143
|
+
case XdsBootstrap::MetadataValue::Type::BOOL:
|
144
|
+
google_protobuf_Value_set_bool_value(value_pb, value.bool_value);
|
145
|
+
break;
|
146
|
+
case XdsBootstrap::MetadataValue::Type::STRUCT: {
|
147
|
+
google_protobuf_Struct* struct_value =
|
148
|
+
google_protobuf_Value_mutable_struct_value(value_pb, arena);
|
149
|
+
PopulateMetadata(arena, struct_value, value.struct_value);
|
150
|
+
break;
|
151
|
+
}
|
152
|
+
case XdsBootstrap::MetadataValue::Type::LIST: {
|
153
|
+
google_protobuf_ListValue* list_value =
|
154
|
+
google_protobuf_Value_mutable_list_value(value_pb, arena);
|
155
|
+
PopulateListValue(arena, list_value, value.list_value);
|
156
|
+
break;
|
157
|
+
}
|
158
|
+
}
|
159
|
+
}
|
160
|
+
|
161
|
+
void PopulateNode(upb_arena* arena, const XdsBootstrap::Node* node,
|
162
|
+
const char* build_version, envoy_api_v2_core_Node* node_msg) {
|
163
|
+
if (node != nullptr) {
|
164
|
+
if (node->id != nullptr) {
|
165
|
+
envoy_api_v2_core_Node_set_id(node_msg, upb_strview_makez(node->id));
|
166
|
+
}
|
167
|
+
if (node->cluster != nullptr) {
|
168
|
+
envoy_api_v2_core_Node_set_cluster(node_msg,
|
169
|
+
upb_strview_makez(node->cluster));
|
170
|
+
}
|
171
|
+
if (!node->metadata.empty()) {
|
172
|
+
google_protobuf_Struct* metadata =
|
173
|
+
envoy_api_v2_core_Node_mutable_metadata(node_msg, arena);
|
174
|
+
PopulateMetadata(arena, metadata, node->metadata);
|
175
|
+
}
|
176
|
+
if (node->locality_region != nullptr || node->locality_zone != nullptr ||
|
177
|
+
node->locality_subzone != nullptr) {
|
178
|
+
envoy_api_v2_core_Locality* locality =
|
179
|
+
envoy_api_v2_core_Node_mutable_locality(node_msg, arena);
|
180
|
+
if (node->locality_region != nullptr) {
|
181
|
+
envoy_api_v2_core_Locality_set_region(
|
182
|
+
locality, upb_strview_makez(node->locality_region));
|
183
|
+
}
|
184
|
+
if (node->locality_zone != nullptr) {
|
185
|
+
envoy_api_v2_core_Locality_set_zone(
|
186
|
+
locality, upb_strview_makez(node->locality_zone));
|
187
|
+
}
|
188
|
+
if (node->locality_subzone != nullptr) {
|
189
|
+
envoy_api_v2_core_Locality_set_sub_zone(
|
190
|
+
locality, upb_strview_makez(node->locality_subzone));
|
191
|
+
}
|
192
|
+
}
|
193
|
+
}
|
194
|
+
envoy_api_v2_core_Node_set_build_version(node_msg,
|
195
|
+
upb_strview_makez(build_version));
|
196
|
+
}
|
197
|
+
|
198
|
+
} // namespace
|
199
|
+
|
200
|
+
grpc_slice XdsEdsRequestCreateAndEncode(const char* server_name,
|
201
|
+
const XdsBootstrap::Node* node,
|
202
|
+
const char* build_version) {
|
70
203
|
upb::Arena arena;
|
71
204
|
// Create a request.
|
72
205
|
envoy_api_v2_DiscoveryRequest* request =
|
73
206
|
envoy_api_v2_DiscoveryRequest_new(arena.ptr());
|
74
|
-
envoy_api_v2_core_Node*
|
207
|
+
envoy_api_v2_core_Node* node_msg =
|
75
208
|
envoy_api_v2_DiscoveryRequest_mutable_node(request, arena.ptr());
|
76
|
-
|
77
|
-
envoy_api_v2_core_Node_mutable_metadata(node, arena.ptr());
|
78
|
-
google_protobuf_Struct_FieldsEntry* field =
|
79
|
-
google_protobuf_Struct_add_fields(metadata, arena.ptr());
|
80
|
-
google_protobuf_Struct_FieldsEntry_set_key(
|
81
|
-
field, upb_strview_makez(kEndpointRequired));
|
82
|
-
google_protobuf_Value* value =
|
83
|
-
google_protobuf_Struct_FieldsEntry_mutable_value(field, arena.ptr());
|
84
|
-
google_protobuf_Value_set_bool_value(value, true);
|
209
|
+
PopulateNode(arena.ptr(), node, build_version, node_msg);
|
85
210
|
envoy_api_v2_DiscoveryRequest_add_resource_names(
|
86
|
-
request, upb_strview_makez(
|
211
|
+
request, upb_strview_makez(server_name), arena.ptr());
|
87
212
|
envoy_api_v2_DiscoveryRequest_set_type_url(request,
|
88
213
|
upb_strview_makez(kEdsTypeUrl));
|
89
214
|
// Encode the request.
|
@@ -136,7 +261,7 @@ UniquePtr<char> StringCopy(const upb_strview& strview) {
|
|
136
261
|
|
137
262
|
grpc_error* LocalityParse(
|
138
263
|
const envoy_api_v2_endpoint_LocalityLbEndpoints* locality_lb_endpoints,
|
139
|
-
|
264
|
+
XdsPriorityListUpdate::LocalityMap::Locality* output_locality) {
|
140
265
|
// Parse LB weight.
|
141
266
|
const google_protobuf_UInt32Value* lb_weight =
|
142
267
|
envoy_api_v2_endpoint_LocalityLbEndpoints_load_balancing_weight(
|
@@ -144,13 +269,13 @@ grpc_error* LocalityParse(
|
|
144
269
|
// If LB weight is not specified, it means this locality is assigned no load.
|
145
270
|
// TODO(juanlishen): When we support CDS to configure the inter-locality
|
146
271
|
// policy, we should change the LB weight handling.
|
147
|
-
|
272
|
+
output_locality->lb_weight =
|
148
273
|
lb_weight != nullptr ? google_protobuf_UInt32Value_value(lb_weight) : 0;
|
149
|
-
if (
|
274
|
+
if (output_locality->lb_weight == 0) return GRPC_ERROR_NONE;
|
150
275
|
// Parse locality name.
|
151
276
|
const envoy_api_v2_core_Locality* locality =
|
152
277
|
envoy_api_v2_endpoint_LocalityLbEndpoints_locality(locality_lb_endpoints);
|
153
|
-
|
278
|
+
output_locality->name = MakeRefCounted<XdsLocalityName>(
|
154
279
|
StringCopy(envoy_api_v2_core_Locality_region(locality)),
|
155
280
|
StringCopy(envoy_api_v2_core_Locality_zone(locality)),
|
156
281
|
StringCopy(envoy_api_v2_core_Locality_sub_zone(locality)));
|
@@ -160,12 +285,12 @@ grpc_error* LocalityParse(
|
|
160
285
|
envoy_api_v2_endpoint_LocalityLbEndpoints_lb_endpoints(
|
161
286
|
locality_lb_endpoints, &size);
|
162
287
|
for (size_t i = 0; i < size; ++i) {
|
163
|
-
grpc_error* error = ServerAddressParseAndAppend(
|
164
|
-
|
288
|
+
grpc_error* error = ServerAddressParseAndAppend(
|
289
|
+
lb_endpoints[i], &output_locality->serverlist);
|
165
290
|
if (error != GRPC_ERROR_NONE) return error;
|
166
291
|
}
|
167
292
|
// Parse the priority.
|
168
|
-
|
293
|
+
output_locality->priority =
|
169
294
|
envoy_api_v2_endpoint_LocalityLbEndpoints_priority(locality_lb_endpoints);
|
170
295
|
return GRPC_ERROR_NONE;
|
171
296
|
}
|
@@ -211,7 +336,7 @@ grpc_error* DropParseAndAppend(
|
|
211
336
|
} // namespace
|
212
337
|
|
213
338
|
grpc_error* XdsEdsResponseDecodeAndParse(const grpc_slice& encoded_response,
|
214
|
-
|
339
|
+
EdsUpdate* update) {
|
215
340
|
upb::Arena arena;
|
216
341
|
// Decode the response.
|
217
342
|
const envoy_api_v2_DiscoveryResponse* response =
|
@@ -253,18 +378,13 @@ grpc_error* XdsEdsResponseDecodeAndParse(const grpc_slice& encoded_response,
|
|
253
378
|
envoy_api_v2_ClusterLoadAssignment_endpoints(cluster_load_assignment,
|
254
379
|
&size);
|
255
380
|
for (size_t i = 0; i < size; ++i) {
|
256
|
-
|
257
|
-
grpc_error* error = LocalityParse(endpoints[i], &
|
381
|
+
XdsPriorityListUpdate::LocalityMap::Locality locality;
|
382
|
+
grpc_error* error = LocalityParse(endpoints[i], &locality);
|
258
383
|
if (error != GRPC_ERROR_NONE) return error;
|
259
384
|
// Filter out locality with weight 0.
|
260
|
-
if (
|
261
|
-
update->
|
385
|
+
if (locality.lb_weight == 0) continue;
|
386
|
+
update->priority_list_update.Add(locality);
|
262
387
|
}
|
263
|
-
// The locality list is sorted here into deterministic order so that it's
|
264
|
-
// easier to check if two locality lists contain the same set of localities.
|
265
|
-
std::sort(update->locality_list.data(),
|
266
|
-
update->locality_list.data() + update->locality_list.size(),
|
267
|
-
XdsLocalityInfo::Less());
|
268
388
|
// Get the drop config.
|
269
389
|
update->drop_config = MakeRefCounted<XdsDropConfig>();
|
270
390
|
const envoy_api_v2_ClusterLoadAssignment_Policy* policy =
|
@@ -296,11 +416,18 @@ grpc_slice LrsRequestEncode(
|
|
296
416
|
|
297
417
|
} // namespace
|
298
418
|
|
299
|
-
grpc_slice XdsLrsRequestCreateAndEncode(const char* server_name
|
419
|
+
grpc_slice XdsLrsRequestCreateAndEncode(const char* server_name,
|
420
|
+
const XdsBootstrap::Node* node,
|
421
|
+
const char* build_version) {
|
300
422
|
upb::Arena arena;
|
301
423
|
// Create a request.
|
302
424
|
envoy_service_load_stats_v2_LoadStatsRequest* request =
|
303
425
|
envoy_service_load_stats_v2_LoadStatsRequest_new(arena.ptr());
|
426
|
+
// Populate node.
|
427
|
+
envoy_api_v2_core_Node* node_msg =
|
428
|
+
envoy_service_load_stats_v2_LoadStatsRequest_mutable_node(request,
|
429
|
+
arena.ptr());
|
430
|
+
PopulateNode(arena.ptr(), node, build_version, node_msg);
|
304
431
|
// Add cluster stats. There is only one because we only use one server name in
|
305
432
|
// one channel.
|
306
433
|
envoy_api_v2_endpoint_ClusterStats* cluster_stats =
|
@@ -314,18 +441,11 @@ grpc_slice XdsLrsRequestCreateAndEncode(const char* server_name) {
|
|
314
441
|
|
315
442
|
namespace {
|
316
443
|
|
317
|
-
void LocalityStatsPopulate(
|
318
|
-
|
319
|
-
|
320
|
-
|
321
|
-
|
322
|
-
// once using stdlib is enabled by default.
|
323
|
-
Pair<const RefCountedPtr<XdsLocalityName>,
|
324
|
-
#else
|
325
|
-
Pair<RefCountedPtr<XdsLocalityName>,
|
326
|
-
#endif
|
327
|
-
XdsClientStats::LocalityStats::Snapshot>& input,
|
328
|
-
upb_arena* arena) {
|
444
|
+
void LocalityStatsPopulate(
|
445
|
+
envoy_api_v2_endpoint_UpstreamLocalityStats* output,
|
446
|
+
std::pair<const RefCountedPtr<XdsLocalityName>,
|
447
|
+
XdsClientStats::LocalityStats::Snapshot>& input,
|
448
|
+
upb_arena* arena) {
|
329
449
|
// Set sub_zone.
|
330
450
|
envoy_api_v2_core_Locality* locality =
|
331
451
|
envoy_api_v2_endpoint_UpstreamLocalityStats_mutable_locality(output,
|
@@ -414,8 +534,8 @@ grpc_slice XdsLrsRequestCreateAndEncode(const char* server_name,
|
|
414
534
|
}
|
415
535
|
|
416
536
|
grpc_error* XdsLrsResponseDecodeAndParse(const grpc_slice& encoded_response,
|
417
|
-
|
418
|
-
|
537
|
+
UniquePtr<char>* cluster_name,
|
538
|
+
grpc_millis* load_reporting_interval) {
|
419
539
|
upb::Arena arena;
|
420
540
|
// Decode the response.
|
421
541
|
const envoy_service_load_stats_v2_LoadStatsResponse* decoded_response =
|
@@ -435,11 +555,8 @@ grpc_error* XdsLrsResponseDecodeAndParse(const grpc_slice& encoded_response,
|
|
435
555
|
return GRPC_ERROR_CREATE_FROM_STATIC_STRING(
|
436
556
|
"The number of clusters (server names) is not 1.");
|
437
557
|
}
|
438
|
-
//
|
439
|
-
|
440
|
-
return GRPC_ERROR_CREATE_FROM_STATIC_STRING(
|
441
|
-
"Unexpected cluster (server name).");
|
442
|
-
}
|
558
|
+
// Get the cluster name for reporting loads.
|
559
|
+
*cluster_name = StringCopy(clusters[0]);
|
443
560
|
// Get the load report interval.
|
444
561
|
const google_protobuf_Duration* load_reporting_interval_duration =
|
445
562
|
envoy_service_load_stats_v2_LoadStatsResponse_load_reporting_interval(
|