grpc 1.27.0 → 1.28.0.pre2
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 +707 -629
- data/include/grpc/impl/codegen/grpc_types.h +5 -0
- data/include/grpc/impl/codegen/port_platform.h +7 -0
- data/include/grpc/impl/codegen/sync.h +5 -3
- data/include/grpc/impl/codegen/sync_abseil.h +36 -0
- data/include/grpc/module.modulemap +3 -0
- data/include/grpc/support/sync_abseil.h +26 -0
- data/src/core/ext/filters/client_channel/client_channel.cc +47 -29
- data/src/core/ext/filters/client_channel/client_channel_channelz.cc +31 -47
- data/src/core/ext/filters/client_channel/client_channel_channelz.h +1 -3
- data/src/core/ext/filters/client_channel/http_connect_handshaker.cc +1 -1
- data/src/core/ext/filters/client_channel/http_proxy.cc +4 -1
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +21 -28
- data/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc +18 -21
- data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +9 -13
- data/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc +46 -72
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds.cc +413 -422
- data/src/core/ext/filters/client_channel/lb_policy_factory.h +3 -3
- data/src/core/ext/filters/client_channel/lb_policy_registry.cc +43 -75
- data/src/core/ext/filters/client_channel/lb_policy_registry.h +1 -1
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +57 -70
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_libuv.cc +1 -1
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc +1 -1
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +1 -1
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +3 -3
- data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc +2 -2
- data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc +1 -1
- data/src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.cc +3 -3
- data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +4 -2
- data/src/core/ext/filters/client_channel/resolver_result_parsing.cc +228 -286
- data/src/core/ext/filters/client_channel/resolver_result_parsing.h +2 -2
- data/src/core/ext/filters/client_channel/resolving_lb_policy.cc +13 -14
- data/src/core/ext/filters/client_channel/resolving_lb_policy.h +5 -7
- data/src/core/ext/filters/client_channel/service_config.cc +91 -160
- data/src/core/ext/filters/client_channel/service_config.h +14 -21
- data/src/core/ext/filters/client_channel/xds/xds_api.cc +581 -251
- data/src/core/ext/filters/client_channel/xds/xds_api.h +189 -151
- data/src/core/ext/filters/client_channel/xds/xds_bootstrap.cc +133 -350
- data/src/core/ext/filters/client_channel/xds/xds_bootstrap.h +18 -39
- data/src/core/ext/filters/client_channel/xds/xds_channel.h +3 -1
- data/src/core/ext/filters/client_channel/xds/xds_channel_secure.cc +12 -9
- data/src/core/ext/filters/client_channel/xds/xds_client.cc +559 -242
- data/src/core/ext/filters/client_channel/xds/xds_client.h +54 -34
- data/src/core/ext/filters/client_channel/xds/xds_client_stats.cc +53 -128
- data/src/core/ext/filters/client_channel/xds/xds_client_stats.h +105 -132
- data/src/core/ext/filters/message_size/message_size_filter.cc +32 -35
- data/src/core/ext/filters/message_size/message_size_filter.h +1 -1
- data/src/core/ext/transport/chttp2/server/chttp2_server.cc +3 -6
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +4 -6
- data/src/core/ext/transport/chttp2/transport/writing.cc +1 -1
- data/src/core/ext/transport/inproc/inproc_transport.cc +22 -42
- data/src/core/ext/upb-generated/envoy/annotations/deprecation.upb.c +17 -0
- data/src/core/ext/upb-generated/envoy/annotations/deprecation.upb.h +30 -0
- data/src/core/ext/upb-generated/envoy/annotations/resource.upb.c +27 -0
- data/src/core/ext/upb-generated/envoy/annotations/resource.upb.h +54 -0
- data/src/core/ext/upb-generated/envoy/api/v2/auth/cert.upb.c +46 -21
- data/src/core/ext/upb-generated/envoy/api/v2/auth/cert.upb.h +116 -29
- data/src/core/ext/upb-generated/envoy/api/v2/cds.upb.c +4 -362
- data/src/core/ext/upb-generated/envoy/api/v2/cds.upb.h +14 -1337
- data/src/core/ext/upb-generated/envoy/api/v2/cluster.upb.c +390 -0
- data/src/core/ext/upb-generated/envoy/api/v2/cluster.upb.h +1411 -0
- data/src/core/ext/upb-generated/envoy/api/v2/cluster/circuit_breaker.upb.c +29 -8
- data/src/core/ext/upb-generated/envoy/api/v2/cluster/circuit_breaker.upb.h +60 -0
- data/src/core/ext/upb-generated/envoy/api/v2/cluster/filter.upb.c +1 -0
- data/src/core/ext/upb-generated/envoy/api/v2/cluster/outlier_detection.upb.c +1 -0
- data/src/core/ext/upb-generated/envoy/api/v2/core/address.upb.c +5 -3
- data/src/core/ext/upb-generated/envoy/api/v2/core/address.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/api/v2/core/base.upb.c +48 -5
- data/src/core/ext/upb-generated/envoy/api/v2/core/base.upb.h +154 -4
- data/src/core/ext/upb-generated/envoy/api/v2/core/config_source.upb.c +19 -15
- data/src/core/ext/upb-generated/envoy/api/v2/core/config_source.upb.h +46 -32
- data/src/core/ext/upb-generated/envoy/api/v2/core/grpc_service.upb.c +26 -4
- data/src/core/ext/upb-generated/envoy/api/v2/core/grpc_service.upb.h +70 -0
- data/src/core/ext/upb-generated/envoy/api/v2/core/health_check.upb.c +42 -25
- data/src/core/ext/upb-generated/envoy/api/v2/core/health_check.upb.h +83 -25
- data/src/core/ext/upb-generated/envoy/api/v2/core/http_uri.upb.c +1 -0
- data/src/core/ext/upb-generated/envoy/api/v2/core/protocol.upb.c +43 -7
- data/src/core/ext/upb-generated/envoy/api/v2/core/protocol.upb.h +115 -0
- data/src/core/ext/upb-generated/envoy/api/v2/discovery.upb.c +1 -0
- data/src/core/ext/upb-generated/envoy/api/v2/eds.upb.c +7 -68
- data/src/core/ext/upb-generated/envoy/api/v2/eds.upb.h +14 -201
- data/src/core/ext/upb-generated/envoy/api/v2/endpoint.upb.c +91 -0
- data/src/core/ext/upb-generated/envoy/api/v2/endpoint.upb.h +240 -0
- data/src/core/ext/upb-generated/envoy/api/v2/endpoint/endpoint.upb.c +1 -71
- data/src/core/ext/upb-generated/envoy/api/v2/endpoint/endpoint.upb.h +3 -228
- data/src/core/ext/upb-generated/envoy/api/v2/endpoint/endpoint_components.upb.c +88 -0
- data/src/core/ext/upb-generated/envoy/api/v2/endpoint/endpoint_components.upb.h +258 -0
- data/src/core/ext/upb-generated/envoy/api/v2/endpoint/load_report.upb.c +1 -0
- data/src/core/ext/upb-generated/envoy/api/v2/lds.upb.c +30 -0
- data/src/core/ext/upb-generated/envoy/api/v2/lds.upb.h +53 -0
- data/src/core/ext/upb-generated/envoy/api/v2/listener.upb.c +104 -0
- data/src/core/ext/upb-generated/envoy/api/v2/listener.upb.h +383 -0
- data/src/core/ext/upb-generated/envoy/api/v2/listener/listener.upb.c +17 -0
- data/src/core/ext/upb-generated/envoy/api/v2/listener/listener.upb.h +33 -0
- data/src/core/ext/upb-generated/envoy/api/v2/listener/listener_components.upb.c +144 -0
- data/src/core/ext/upb-generated/envoy/api/v2/listener/listener_components.upb.h +527 -0
- data/src/core/ext/upb-generated/envoy/api/v2/listener/udp_listener_config.upb.c +42 -0
- data/src/core/ext/upb-generated/envoy/api/v2/listener/udp_listener_config.upb.h +112 -0
- data/src/core/ext/upb-generated/envoy/api/v2/rds.upb.c +29 -0
- data/src/core/ext/upb-generated/envoy/api/v2/rds.upb.h +53 -0
- data/src/core/ext/upb-generated/envoy/api/v2/route.upb.c +62 -0
- data/src/core/ext/upb-generated/envoy/api/v2/route.upb.h +199 -0
- data/src/core/ext/upb-generated/envoy/api/v2/route/route.upb.c +17 -0
- data/src/core/ext/upb-generated/envoy/api/v2/route/route.upb.h +33 -0
- data/src/core/ext/upb-generated/envoy/api/v2/route/route_components.upb.c +793 -0
- data/src/core/ext/upb-generated/envoy/api/v2/route/route_components.upb.h +2936 -0
- data/src/core/ext/upb-generated/envoy/api/v2/scoped_route.upb.c +58 -0
- data/src/core/ext/upb-generated/envoy/api/v2/scoped_route.upb.h +134 -0
- data/src/core/ext/upb-generated/envoy/api/v2/srds.upb.c +27 -0
- data/src/core/ext/upb-generated/envoy/api/v2/srds.upb.h +53 -0
- data/src/core/ext/upb-generated/envoy/config/filter/accesslog/v2/accesslog.upb.c +227 -0
- data/src/core/ext/upb-generated/envoy/config/filter/accesslog/v2/accesslog.upb.h +725 -0
- data/src/core/ext/upb-generated/envoy/config/filter/network/http_connection_manager/v2/http_connection_manager.upb.c +296 -0
- data/src/core/ext/upb-generated/envoy/config/filter/network/http_connection_manager/v2/http_connection_manager.upb.h +1072 -0
- data/src/core/ext/upb-generated/envoy/config/listener/v2/api_listener.upb.c +32 -0
- data/src/core/ext/upb-generated/envoy/config/listener/v2/api_listener.upb.h +65 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/regex.upb.c +47 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/regex.upb.h +108 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/string.upb.c +52 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/string.upb.h +133 -0
- data/src/core/ext/upb-generated/envoy/type/metadata/v2/metadata.upb.c +87 -0
- data/src/core/ext/upb-generated/envoy/type/metadata/v2/metadata.upb.h +258 -0
- data/src/core/ext/upb-generated/envoy/type/range.upb.c +11 -0
- data/src/core/ext/upb-generated/envoy/type/range.upb.h +27 -0
- data/src/core/ext/upb-generated/envoy/type/semantic_version.upb.c +28 -0
- data/src/core/ext/upb-generated/envoy/type/semantic_version.upb.h +62 -0
- data/src/core/ext/upb-generated/envoy/type/tracing/v2/custom_tag.upb.c +88 -0
- data/src/core/ext/upb-generated/envoy/type/tracing/v2/custom_tag.upb.h +249 -0
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/handshaker.upb.c +30 -27
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/handshaker.upb.h +64 -52
- data/src/core/ext/upb-generated/udpa/annotations/migrate.upb.c +48 -0
- data/src/core/ext/upb-generated/udpa/annotations/migrate.upb.h +104 -0
- data/src/core/ext/upb-generated/udpa/annotations/sensitive.upb.c +17 -0
- data/src/core/ext/upb-generated/udpa/annotations/sensitive.upb.h +30 -0
- data/src/core/ext/upb-generated/validate/validate.upb.c +38 -34
- data/src/core/ext/upb-generated/validate/validate.upb.h +129 -99
- data/src/core/lib/channel/channel_trace.cc +32 -41
- data/src/core/lib/channel/channel_trace.h +3 -3
- data/src/core/lib/channel/channelz.cc +158 -248
- data/src/core/lib/channel/channelz.h +12 -15
- data/src/core/lib/channel/channelz_registry.cc +47 -74
- data/src/core/lib/channel/channelz_registry.h +4 -4
- data/src/core/lib/gpr/sync_abseil.cc +114 -0
- data/src/core/lib/gpr/sync_posix.cc +8 -5
- data/src/core/lib/gpr/sync_windows.cc +4 -2
- data/src/core/lib/gprpp/host_port.cc +1 -1
- data/src/core/lib/gprpp/inlined_vector.h +1 -210
- data/src/core/lib/gprpp/memory.h +2 -6
- data/src/core/lib/gprpp/optional.h +0 -41
- data/src/core/lib/gprpp/string_view.h +5 -114
- data/src/core/lib/iomgr/buffer_list.cc +36 -35
- data/src/core/lib/iomgr/error.h +4 -4
- data/src/core/lib/iomgr/ev_epollex_linux.cc +12 -4
- data/src/core/lib/iomgr/load_file.cc +1 -0
- data/src/core/lib/iomgr/tcp_client_posix.cc +17 -17
- data/src/core/lib/iomgr/tcp_client_posix.h +6 -6
- data/src/core/lib/iomgr/tcp_posix.cc +2 -1
- data/src/core/lib/iomgr/work_serializer.cc +155 -0
- data/src/core/lib/iomgr/work_serializer.h +65 -0
- data/src/core/lib/json/json.h +209 -79
- data/src/core/lib/json/json_reader.cc +469 -455
- data/src/core/lib/json/json_writer.cc +173 -169
- data/src/core/lib/security/credentials/alts/check_gcp_environment.cc +1 -1
- data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +10 -8
- data/src/core/lib/security/credentials/jwt/json_token.cc +26 -56
- data/src/core/lib/security/credentials/jwt/json_token.h +2 -1
- data/src/core/lib/security/credentials/jwt/jwt_credentials.cc +8 -18
- data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +149 -159
- data/src/core/lib/security/credentials/jwt/jwt_verifier.h +2 -3
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +37 -34
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.h +1 -1
- data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.h +2 -1
- data/src/core/lib/security/security_connector/local/local_security_connector.cc +5 -7
- data/src/core/lib/security/security_connector/ssl/ssl_security_connector.cc +3 -15
- data/src/core/lib/security/security_connector/ssl_utils.cc +3 -1
- data/src/core/lib/security/security_connector/ssl_utils.h +0 -1
- data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +24 -1
- data/src/core/lib/security/security_connector/tls/tls_security_connector.h +5 -1
- data/src/core/lib/security/transport/security_handshaker.cc +2 -2
- data/src/core/lib/security/util/json_util.cc +22 -15
- data/src/core/lib/security/util/json_util.h +2 -2
- data/src/core/lib/surface/version.cc +1 -1
- data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +1 -1
- data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +1 -1
- data/src/core/tsi/grpc_shadow_boringssl.h +1333 -1319
- data/src/core/tsi/ssl/session_cache/ssl_session_boringssl.cc +1 -1
- data/src/core/tsi/ssl/session_cache/ssl_session_openssl.cc +1 -1
- data/src/core/tsi/ssl_transport_security.cc +2 -1
- data/src/ruby/lib/grpc/version.rb +1 -1
- data/third_party/abseil-cpp/absl/base/attributes.h +1 -1
- data/third_party/abseil-cpp/absl/base/config.h +10 -4
- data/third_party/abseil-cpp/absl/base/internal/atomic_hook.h +30 -9
- data/third_party/abseil-cpp/absl/base/internal/errno_saver.h +43 -0
- data/third_party/abseil-cpp/absl/base/internal/raw_logging.cc +7 -5
- data/third_party/abseil-cpp/absl/base/internal/raw_logging.h +2 -1
- data/third_party/abseil-cpp/absl/base/internal/spinlock.cc +2 -2
- data/third_party/abseil-cpp/absl/base/internal/spinlock_linux.inc +2 -3
- data/third_party/abseil-cpp/absl/base/internal/spinlock_posix.inc +3 -3
- data/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock.cc +37 -0
- data/third_party/abseil-cpp/absl/base/options.h +2 -10
- data/third_party/abseil-cpp/absl/strings/charconv.cc +0 -1
- data/third_party/abseil-cpp/absl/strings/internal/str_format/arg.cc +388 -0
- data/third_party/abseil-cpp/absl/strings/internal/str_format/arg.h +432 -0
- data/third_party/abseil-cpp/absl/strings/internal/str_format/bind.cc +245 -0
- data/third_party/abseil-cpp/absl/strings/internal/str_format/bind.h +209 -0
- data/third_party/abseil-cpp/absl/strings/internal/str_format/checker.h +326 -0
- data/third_party/abseil-cpp/absl/strings/internal/str_format/extension.cc +51 -0
- data/third_party/abseil-cpp/absl/strings/internal/str_format/extension.h +415 -0
- data/third_party/abseil-cpp/absl/strings/internal/str_format/float_conversion.cc +493 -0
- data/third_party/abseil-cpp/absl/strings/internal/str_format/float_conversion.h +23 -0
- data/third_party/abseil-cpp/absl/strings/internal/str_format/output.cc +72 -0
- data/third_party/abseil-cpp/absl/strings/internal/str_format/output.h +104 -0
- data/third_party/abseil-cpp/absl/strings/internal/str_format/parser.cc +334 -0
- data/third_party/abseil-cpp/absl/strings/internal/str_format/parser.h +333 -0
- data/third_party/abseil-cpp/absl/strings/str_format.h +537 -0
- data/third_party/abseil-cpp/absl/strings/string_view.h +19 -11
- data/{src/boringssl → third_party/boringssl-with-bazel}/err_data.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/a_bitstr.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/a_bool.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/a_d2i_fp.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/a_dup.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/a_enum.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/a_gentm.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/a_i2d_fp.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/a_int.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/a_mbstr.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/a_object.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/a_octet.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/a_print.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/a_strnid.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/a_time.c +3 -4
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/a_type.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/a_utctm.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/a_utf8.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/asn1_lib.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/asn1_locl.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/asn1_par.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/asn_pack.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/f_enum.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/f_int.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/f_string.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/tasn_dec.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/tasn_enc.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/tasn_fre.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/tasn_new.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/tasn_typ.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/tasn_utl.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/time_support.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/base64/base64.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/bio/bio.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/bio/bio_mem.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/bio/connect.c +3 -4
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/bio/fd.c +0 -1
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/bio/file.c +5 -6
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/bio/hexdump.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/bio/internal.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/bio/pair.c +0 -1
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/bio/printf.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/bio/socket.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/bio/socket_helper.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/bn_extra/bn_asn1.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/bn_extra/convert.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/buf/buf.c +10 -69
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/bytestring/asn1_compat.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/bytestring/ber.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/bytestring/cbb.c +41 -2
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/bytestring/cbs.c +60 -3
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/bytestring/internal.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/bytestring/unicode.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/chacha/chacha.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/chacha/internal.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/cipher_extra/cipher_extra.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/cipher_extra/derive_key.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/cipher_extra/e_aesccm.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/cipher_extra/e_aesctrhmac.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/cipher_extra/e_aesgcmsiv.c +8 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/cipher_extra/e_chacha20poly1305.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/cipher_extra/e_null.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/cipher_extra/e_rc2.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/cipher_extra/e_rc4.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/cipher_extra/e_tls.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/cipher_extra/internal.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/cipher_extra/tls_cbc.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/cmac/cmac.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/conf/conf.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/conf/conf_def.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/conf/internal.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/cpu-aarch64-fuchsia.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/cpu-aarch64-linux.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/cpu-arm-linux.c +0 -1
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/cpu-arm-linux.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/cpu-arm.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/cpu-intel.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/cpu-ppc64le.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/crypto.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/curve25519/spake25519.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/dh/check.c +3 -3
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/dh/dh.c +1 -2
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/dh/dh_asn1.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/dh/params.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/digest_extra/digest_extra.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/dsa/dsa.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/dsa/dsa_asn1.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/ec_extra/ec_asn1.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/ec_extra/ec_derive.c +2 -3
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/ecdh_extra/ecdh_extra.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/ecdsa_extra/ecdsa_asn1.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/engine/engine.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/err/err.c +6 -6
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/err/internal.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/evp/digestsign.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/evp/evp.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/evp/evp_asn1.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/evp/evp_ctx.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/evp/internal.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/evp/p_dsa_asn1.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/evp/p_ec.c +0 -1
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/evp/p_ec_asn1.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/evp/p_ed25519.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/evp/p_ed25519_asn1.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/evp/p_rsa.c +14 -2
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/evp/p_rsa_asn1.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/evp/p_x25519.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/evp/p_x25519_asn1.c +1 -2
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/evp/pbkdf.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/evp/print.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/evp/scrypt.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/evp/sign.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/ex_data.c +0 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/aes.c +108 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/aes_nohw.c +1282 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/aes/internal.h +5 -7
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/aes/key_wrap.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/aes/mode_wrappers.c +0 -2
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bcm.c +2 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bn/add.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bn/asm/x86_64-gcc.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bn/bn.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bn/bytes.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bn/cmp.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bn/ctx.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bn/div.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bn/div_extra.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bn/exponentiation.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bn/gcd.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bn/gcd_extra.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bn/generic.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bn/internal.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bn/jacobi.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bn/montgomery.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bn/montgomery_inv.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bn/mul.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bn/prime.c +11 -12
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bn/random.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bn/rsaz_exp.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bn/rsaz_exp.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bn/shift.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bn/sqrt.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/cipher/aead.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/cipher/cipher.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/cipher/e_aes.c +3 -5
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/cipher/e_des.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/cipher/internal.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/delocate.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/des/des.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/des/internal.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/digest/digest.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/digest/digests.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/digest/internal.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/digest/md32_common.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/ec/ec.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/ec/ec_key.c +1 -1
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/ec/ec_montgomery.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/ec/felem.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/ec/internal.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/ec/oct.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/ec/p224-64.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/ec/p256-x86_64-table.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/ec/p256-x86_64.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/ec/p256-x86_64.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/ec/scalar.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/ec/simple.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/ec/simple_mul.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/ec/util.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/ec/wnaf.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/ecdh/ecdh.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/ecdsa/ecdsa.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/fips_shared_support.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/hmac/hmac.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/is_fips.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/md4/md4.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/md5/internal.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/md5/md5.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/modes/cbc.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/modes/cfb.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/modes/ctr.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/modes/gcm.c +45 -193
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/gcm_nohw.c +304 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/modes/internal.h +8 -18
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/modes/ofb.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/modes/polyval.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/rand/ctrdrbg.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/rand/internal.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/rand/rand.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/rand/urandom.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/rsa/blinding.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/rsa/internal.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/rsa/padding.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/rsa/rsa.c +7 -1
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/rsa/rsa_impl.c +60 -51
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/self_check/self_check.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/sha/internal.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/sha/sha1-altivec.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/sha/sha1.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/sha/sha256.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/sha/sha512.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/tls/internal.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/tls/kdf.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/hkdf/hkdf.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/hrss/hrss.c +210 -311
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/hrss/internal.h +0 -1
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/internal.h +21 -1
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/lhash/lhash.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/mem.c +70 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/obj/obj.c +16 -21
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/obj/obj_dat.h +27 -6
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/obj/obj_xref.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/pem/pem_all.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/pem/pem_info.c +0 -1
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/pem/pem_lib.c +7 -7
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/pem/pem_oth.c +0 -1
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/pem/pem_pk8.c +0 -1
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/pem/pem_pkey.c +0 -1
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/pem/pem_x509.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/pem/pem_xaux.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/pkcs7/internal.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/pkcs7/pkcs7.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/pkcs7/pkcs7_x509.c +1 -1
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/pkcs8/internal.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/pkcs8/p5_pbev2.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/pkcs8/pkcs8.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/pkcs8/pkcs8_x509.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/poly1305/internal.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/poly1305/poly1305.c +2 -2
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/poly1305/poly1305_arm.c +21 -20
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/poly1305/poly1305_vec.c +34 -17
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/pool/internal.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/pool/pool.c +1 -2
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/rand_extra/deterministic.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/rand_extra/forkunsafe.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/rand_extra/fuchsia.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/rand_extra/rand_extra.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/rand_extra/windows.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/rc4/rc4.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/refcount_c11.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/refcount_lock.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/rsa_extra/rsa_asn1.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/rsa_extra/rsa_print.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/siphash/siphash.c +3 -1
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/stack/stack.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/thread.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/thread_none.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/thread_pthread.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/thread_win.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/a_digest.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/a_sign.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/a_strex.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/a_verify.c +0 -1
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/algorithm.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/asn1_gen.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/by_dir.c +1 -1
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/by_file.c +0 -1
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/charmap.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/i2d_pr.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/internal.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/rsa_pss.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/t_crl.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/t_req.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/t_x509.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/t_x509a.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/vpm_int.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x509.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x509_att.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x509_cmp.c +0 -1
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x509_d2.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x509_def.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x509_ext.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x509_lu.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x509_obj.c +1 -1
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x509_r2x.c +0 -1
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x509_req.c +0 -1
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x509_set.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x509_trs.c +1 -2
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x509_txt.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x509_v3.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x509_vfy.c +0 -1
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x509_vpm.c +3 -4
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x509cset.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x509name.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x509rset.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x509spki.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x_algor.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x_all.c +0 -1
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x_attrib.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x_crl.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x_exten.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x_info.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x_name.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x_pkey.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x_pubkey.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x_req.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x_sig.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x_spki.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x_val.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x_x509.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x_x509a.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/ext_dat.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/internal.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/pcy_cache.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/pcy_data.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/pcy_int.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/pcy_lib.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/pcy_map.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/pcy_node.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/pcy_tree.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_akey.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_akeya.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_alt.c +3 -3
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_bcons.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_bitst.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_conf.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_cpols.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_crld.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_enum.c +2 -2
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_extku.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_genn.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_ia5.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_info.c +4 -5
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_int.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_lib.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_ncons.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_ocsp.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_pci.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_pcia.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_pcons.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_pku.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_pmaps.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_prn.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_purp.c +2 -3
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_skey.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_sxnet.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_utl.c +11 -12
- data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/aead.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/aes.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/arm_arch.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/asn1.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/asn1_mac.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/asn1t.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/base.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/base64.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/bio.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/blowfish.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/bn.h +32 -20
- data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/buf.h +9 -9
- data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/buffer.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/bytestring.h +34 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/cast.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/chacha.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/cipher.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/cmac.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/conf.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/cpu.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/crypto.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/curve25519.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/des.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/dh.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/digest.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/dsa.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/dtls1.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/e_os2.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/ec.h +11 -4
- data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/ec_key.h +4 -2
- data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/ecdh.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/ecdsa.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/engine.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/err.h +11 -9
- data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/evp.h +20 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/ex_data.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/hkdf.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/hmac.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/hrss.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/is_boringssl.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/lhash.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/md4.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/md5.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/mem.h +17 -2
- data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/nid.h +9 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/obj.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/obj_mac.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/objects.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/opensslconf.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/opensslv.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/ossl_typ.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/pem.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/pkcs12.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/pkcs7.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/pkcs8.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/poly1305.h +5 -7
- data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/pool.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/rand.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/rc4.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/ripemd.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/rsa.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/safestack.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/sha.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/siphash.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/span.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/srtp.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/ssl.h +10 -20
- data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/ssl3.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/stack.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/thread.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/tls1.h +0 -3
- data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/type_check.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/x509.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/x509_vfy.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/x509v3.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/bio_ssl.cc +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/d1_both.cc +0 -1
- data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/d1_lib.cc +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/d1_pkt.cc +0 -1
- data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/d1_srtp.cc +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/dtls_method.cc +0 -1
- data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/dtls_record.cc +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/handoff.cc +126 -29
- data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/handshake.cc +5 -4
- data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/handshake_client.cc +24 -13
- data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/handshake_server.cc +1 -5
- data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/internal.h +32 -26
- data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/s3_both.cc +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/s3_lib.cc +2 -3
- data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/s3_pkt.cc +0 -1
- data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/ssl_aead_ctx.cc +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/ssl_asn1.cc +1 -2
- data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/ssl_buffer.cc +34 -15
- data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/ssl_cert.cc +0 -1
- data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/ssl_cipher.cc +0 -1
- data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/ssl_file.cc +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/ssl_key_share.cc +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/ssl_lib.cc +13 -14
- data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/ssl_privkey.cc +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/ssl_session.cc +2 -1
- data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/ssl_stat.cc +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/ssl_transcript.cc +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/ssl_versions.cc +1 -1
- data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/ssl_x509.cc +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/t1_enc.cc +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/t1_lib.cc +11 -171
- data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/tls13_both.cc +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/tls13_client.cc +3 -4
- data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/tls13_enc.cc +5 -1
- data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/tls13_server.cc +78 -101
- data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/tls_method.cc +1 -1
- data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/tls_record.cc +7 -2
- data/third_party/{boringssl → boringssl-with-bazel/src}/third_party/fiat/curve25519.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/third_party/fiat/curve25519_32.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/third_party/fiat/curve25519_64.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/third_party/fiat/curve25519_tables.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/third_party/fiat/internal.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/third_party/fiat/p256.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/third_party/fiat/p256_32.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/third_party/fiat/p256_64.h +0 -0
- metadata +562 -491
- data/src/core/lib/iomgr/logical_thread.cc +0 -103
- data/src/core/lib/iomgr/logical_thread.h +0 -52
- data/src/core/lib/json/json.cc +0 -94
- data/third_party/boringssl/crypto/fipsmodule/aes/aes.c +0 -860
@@ -70,7 +70,7 @@ class ServiceConfig : public RefCounted<ServiceConfig> {
|
|
70
70
|
virtual ~Parser() = default;
|
71
71
|
|
72
72
|
virtual std::unique_ptr<ParsedConfig> ParseGlobalParams(
|
73
|
-
const
|
73
|
+
const Json& /* json */, grpc_error** error) {
|
74
74
|
// Avoid unused parameter warning on debug-only parameter
|
75
75
|
(void)error;
|
76
76
|
GPR_DEBUG_ASSERT(error != nullptr);
|
@@ -78,7 +78,7 @@ class ServiceConfig : public RefCounted<ServiceConfig> {
|
|
78
78
|
}
|
79
79
|
|
80
80
|
virtual std::unique_ptr<ParsedConfig> ParsePerMethodParams(
|
81
|
-
const
|
81
|
+
const Json& /* json */, grpc_error** error) {
|
82
82
|
// Avoid unused parameter warning on debug-only parameter
|
83
83
|
(void)error;
|
84
84
|
GPR_DEBUG_ASSERT(error != nullptr);
|
@@ -125,16 +125,12 @@ class ServiceConfig : public RefCounted<ServiceConfig> {
|
|
125
125
|
|
126
126
|
/// Creates a new service config from parsing \a json_string.
|
127
127
|
/// Returns null on parse error.
|
128
|
-
static RefCountedPtr<ServiceConfig> Create(
|
128
|
+
static RefCountedPtr<ServiceConfig> Create(StringView json_string,
|
129
129
|
grpc_error** error);
|
130
130
|
|
131
|
-
|
132
|
-
ServiceConfig(grpc_core::UniquePtr<char> service_config_json,
|
133
|
-
grpc_core::UniquePtr<char> json_string, grpc_json* json_tree,
|
134
|
-
grpc_error** error);
|
135
|
-
~ServiceConfig();
|
131
|
+
ServiceConfig(std::string json_string, Json json, grpc_error** error);
|
136
132
|
|
137
|
-
const
|
133
|
+
const std::string& json_string() const { return json_string_; }
|
138
134
|
|
139
135
|
/// Retrieves the global parsed config at index \a index. The
|
140
136
|
/// lifetime of the returned object is tied to the lifetime of the
|
@@ -163,24 +159,21 @@ class ServiceConfig : public RefCounted<ServiceConfig> {
|
|
163
159
|
|
164
160
|
private:
|
165
161
|
// Helper functions to parse the service config
|
166
|
-
grpc_error* ParseGlobalParams(
|
167
|
-
grpc_error* ParsePerMethodParams(
|
168
|
-
|
169
|
-
// Returns the number of names specified in the method config \a json.
|
170
|
-
static int CountNamesInMethodConfig(grpc_json* json);
|
162
|
+
grpc_error* ParseGlobalParams();
|
163
|
+
grpc_error* ParsePerMethodParams();
|
171
164
|
|
172
165
|
// Returns a path string for the JSON name object specified by \a json.
|
173
166
|
// Returns null on error, and stores error in \a error.
|
174
|
-
static
|
175
|
-
|
167
|
+
static UniquePtr<char> ParseJsonMethodName(const Json& json,
|
168
|
+
grpc_error** error);
|
176
169
|
|
177
170
|
grpc_error* ParseJsonMethodConfigToServiceConfigVectorTable(
|
178
|
-
const
|
179
|
-
SliceHashTable<const ParsedConfigVector*>::Entry
|
171
|
+
const Json& json,
|
172
|
+
InlinedVector<SliceHashTable<const ParsedConfigVector*>::Entry, 10>*
|
173
|
+
entries);
|
180
174
|
|
181
|
-
|
182
|
-
|
183
|
-
grpc_json* json_tree_;
|
175
|
+
std::string json_string_;
|
176
|
+
Json json_;
|
184
177
|
|
185
178
|
InlinedVector<std::unique_ptr<ParsedConfig>, kNumPreallocatedParsers>
|
186
179
|
parsed_global_configs_;
|
@@ -19,6 +19,10 @@
|
|
19
19
|
#include <grpc/support/port_platform.h>
|
20
20
|
|
21
21
|
#include <algorithm>
|
22
|
+
#include <cctype>
|
23
|
+
#include <cstdlib>
|
24
|
+
|
25
|
+
#include "absl/strings/str_cat.h"
|
22
26
|
|
23
27
|
#include <grpc/impl/codegen/log.h>
|
24
28
|
#include <grpc/support/alloc.h>
|
@@ -38,6 +42,11 @@
|
|
38
42
|
#include "envoy/api/v2/eds.upb.h"
|
39
43
|
#include "envoy/api/v2/endpoint/endpoint.upb.h"
|
40
44
|
#include "envoy/api/v2/endpoint/load_report.upb.h"
|
45
|
+
#include "envoy/api/v2/lds.upb.h"
|
46
|
+
#include "envoy/api/v2/rds.upb.h"
|
47
|
+
#include "envoy/api/v2/route/route.upb.h"
|
48
|
+
#include "envoy/config/filter/network/http_connection_manager/v2/http_connection_manager.upb.h"
|
49
|
+
#include "envoy/config/listener/v2/api_listener.upb.h"
|
41
50
|
#include "envoy/service/load_stats/v2/lrs.upb.h"
|
42
51
|
#include "envoy/type/percent.upb.h"
|
43
52
|
#include "google/protobuf/any.upb.h"
|
@@ -49,8 +58,12 @@
|
|
49
58
|
|
50
59
|
namespace grpc_core {
|
51
60
|
|
52
|
-
|
53
|
-
|
61
|
+
//
|
62
|
+
// XdsApi::PriorityListUpdate
|
63
|
+
//
|
64
|
+
|
65
|
+
bool XdsApi::PriorityListUpdate::operator==(
|
66
|
+
const XdsApi::PriorityListUpdate& other) const {
|
54
67
|
if (priorities_.size() != other.priorities_.size()) return false;
|
55
68
|
for (size_t i = 0; i < priorities_.size(); ++i) {
|
56
69
|
if (priorities_[i].localities != other.priorities_[i].localities) {
|
@@ -60,8 +73,8 @@ bool XdsPriorityListUpdate::operator==(
|
|
60
73
|
return true;
|
61
74
|
}
|
62
75
|
|
63
|
-
void
|
64
|
-
|
76
|
+
void XdsApi::PriorityListUpdate::Add(
|
77
|
+
XdsApi::PriorityListUpdate::LocalityMap::Locality locality) {
|
65
78
|
// Pad the missing priorities in case the localities are not ordered by
|
66
79
|
// priority.
|
67
80
|
if (!Contains(locality.priority)) priorities_.resize(locality.priority + 1);
|
@@ -69,13 +82,13 @@ void XdsPriorityListUpdate::Add(
|
|
69
82
|
locality_map.localities.emplace(locality.name, std::move(locality));
|
70
83
|
}
|
71
84
|
|
72
|
-
const
|
85
|
+
const XdsApi::PriorityListUpdate::LocalityMap* XdsApi::PriorityListUpdate::Find(
|
73
86
|
uint32_t priority) const {
|
74
87
|
if (!Contains(priority)) return nullptr;
|
75
88
|
return &priorities_[priority];
|
76
89
|
}
|
77
90
|
|
78
|
-
bool
|
91
|
+
bool XdsApi::PriorityListUpdate::Contains(
|
79
92
|
const RefCountedPtr<XdsLocalityName>& name) {
|
80
93
|
for (size_t i = 0; i < priorities_.size(); ++i) {
|
81
94
|
const LocalityMap& locality_map = priorities_[i];
|
@@ -84,7 +97,11 @@ bool XdsPriorityListUpdate::Contains(
|
|
84
97
|
return false;
|
85
98
|
}
|
86
99
|
|
87
|
-
|
100
|
+
//
|
101
|
+
// XdsApi::DropConfig
|
102
|
+
//
|
103
|
+
|
104
|
+
bool XdsApi::DropConfig::ShouldDrop(const std::string** category_name) const {
|
88
105
|
for (size_t i = 0; i < drop_category_list_.size(); ++i) {
|
89
106
|
const auto& drop_category = drop_category_list_[i];
|
90
107
|
// Generate a random number in [0, 1000000).
|
@@ -97,13 +114,30 @@ bool XdsDropConfig::ShouldDrop(const std::string** category_name) const {
|
|
97
114
|
return false;
|
98
115
|
}
|
99
116
|
|
117
|
+
//
|
118
|
+
// XdsApi
|
119
|
+
//
|
120
|
+
|
121
|
+
const char* XdsApi::kLdsTypeUrl = "type.googleapis.com/envoy.api.v2.Listener";
|
122
|
+
const char* XdsApi::kRdsTypeUrl =
|
123
|
+
"type.googleapis.com/envoy.api.v2.RouteConfiguration";
|
124
|
+
const char* XdsApi::kCdsTypeUrl = "type.googleapis.com/envoy.api.v2.Cluster";
|
125
|
+
const char* XdsApi::kEdsTypeUrl =
|
126
|
+
"type.googleapis.com/envoy.api.v2.ClusterLoadAssignment";
|
127
|
+
|
128
|
+
XdsApi::XdsApi(const XdsBootstrap::Node* node)
|
129
|
+
: node_(node),
|
130
|
+
build_version_(absl::StrCat("gRPC C-core ", GPR_PLATFORM_STRING, " ",
|
131
|
+
grpc_version_string())),
|
132
|
+
user_agent_name_(absl::StrCat("gRPC C-core ", GPR_PLATFORM_STRING)) {}
|
133
|
+
|
100
134
|
namespace {
|
101
135
|
|
102
136
|
void PopulateMetadataValue(upb_arena* arena, google_protobuf_Value* value_pb,
|
103
|
-
const
|
137
|
+
const Json& value);
|
104
138
|
|
105
139
|
void PopulateListValue(upb_arena* arena, google_protobuf_ListValue* list_value,
|
106
|
-
const
|
140
|
+
const Json::Array& values) {
|
107
141
|
for (const auto& value : values) {
|
108
142
|
auto* value_pb = google_protobuf_ListValue_add_values(list_value, arena);
|
109
143
|
PopulateMetadataValue(arena, value_pb, value);
|
@@ -111,13 +145,12 @@ void PopulateListValue(upb_arena* arena, google_protobuf_ListValue* list_value,
|
|
111
145
|
}
|
112
146
|
|
113
147
|
void PopulateMetadata(upb_arena* arena, google_protobuf_Struct* metadata_pb,
|
114
|
-
const
|
115
|
-
StringLess>& metadata) {
|
148
|
+
const Json::Object& metadata) {
|
116
149
|
for (const auto& p : metadata) {
|
117
150
|
google_protobuf_Struct_FieldsEntry* field =
|
118
151
|
google_protobuf_Struct_add_fields(metadata_pb, arena);
|
119
|
-
google_protobuf_Struct_FieldsEntry_set_key(
|
120
|
-
|
152
|
+
google_protobuf_Struct_FieldsEntry_set_key(
|
153
|
+
field, upb_strview_makez(p.first.c_str()));
|
121
154
|
google_protobuf_Value* value =
|
122
155
|
google_protobuf_Struct_FieldsEntry_mutable_value(field, arena);
|
123
156
|
PopulateMetadataValue(arena, value, p.second);
|
@@ -125,134 +158,115 @@ void PopulateMetadata(upb_arena* arena, google_protobuf_Struct* metadata_pb,
|
|
125
158
|
}
|
126
159
|
|
127
160
|
void PopulateMetadataValue(upb_arena* arena, google_protobuf_Value* value_pb,
|
128
|
-
const
|
129
|
-
switch (value.type) {
|
130
|
-
case
|
161
|
+
const Json& value) {
|
162
|
+
switch (value.type()) {
|
163
|
+
case Json::Type::JSON_NULL:
|
131
164
|
google_protobuf_Value_set_null_value(value_pb, 0);
|
132
165
|
break;
|
133
|
-
case
|
134
|
-
google_protobuf_Value_set_number_value(
|
166
|
+
case Json::Type::NUMBER:
|
167
|
+
google_protobuf_Value_set_number_value(
|
168
|
+
value_pb, strtod(value.string_value().c_str(), nullptr));
|
135
169
|
break;
|
136
|
-
case
|
170
|
+
case Json::Type::STRING:
|
137
171
|
google_protobuf_Value_set_string_value(
|
138
|
-
value_pb, upb_strview_makez(value.string_value));
|
172
|
+
value_pb, upb_strview_makez(value.string_value().c_str()));
|
139
173
|
break;
|
140
|
-
case
|
141
|
-
google_protobuf_Value_set_bool_value(value_pb,
|
174
|
+
case Json::Type::JSON_TRUE:
|
175
|
+
google_protobuf_Value_set_bool_value(value_pb, true);
|
142
176
|
break;
|
143
|
-
case
|
177
|
+
case Json::Type::JSON_FALSE:
|
178
|
+
google_protobuf_Value_set_bool_value(value_pb, false);
|
179
|
+
break;
|
180
|
+
case Json::Type::OBJECT: {
|
144
181
|
google_protobuf_Struct* struct_value =
|
145
182
|
google_protobuf_Value_mutable_struct_value(value_pb, arena);
|
146
|
-
PopulateMetadata(arena, struct_value, value.
|
183
|
+
PopulateMetadata(arena, struct_value, value.object_value());
|
147
184
|
break;
|
148
185
|
}
|
149
|
-
case
|
186
|
+
case Json::Type::ARRAY: {
|
150
187
|
google_protobuf_ListValue* list_value =
|
151
188
|
google_protobuf_Value_mutable_list_value(value_pb, arena);
|
152
|
-
PopulateListValue(arena, list_value, value.
|
189
|
+
PopulateListValue(arena, list_value, value.array_value());
|
153
190
|
break;
|
154
191
|
}
|
155
192
|
}
|
156
193
|
}
|
157
194
|
|
158
195
|
void PopulateNode(upb_arena* arena, const XdsBootstrap::Node* node,
|
159
|
-
const
|
196
|
+
const std::string& build_version,
|
197
|
+
const std::string& user_agent_name,
|
198
|
+
const std::string& server_name,
|
199
|
+
envoy_api_v2_core_Node* node_msg) {
|
160
200
|
if (node != nullptr) {
|
161
|
-
if (node->id
|
162
|
-
envoy_api_v2_core_Node_set_id(node_msg,
|
201
|
+
if (!node->id.empty()) {
|
202
|
+
envoy_api_v2_core_Node_set_id(node_msg,
|
203
|
+
upb_strview_makez(node->id.c_str()));
|
204
|
+
}
|
205
|
+
if (!node->cluster.empty()) {
|
206
|
+
envoy_api_v2_core_Node_set_cluster(
|
207
|
+
node_msg, upb_strview_makez(node->cluster.c_str()));
|
163
208
|
}
|
164
|
-
if (node->
|
165
|
-
|
166
|
-
|
209
|
+
if (!node->metadata.object_value().empty()) {
|
210
|
+
google_protobuf_Struct* metadata =
|
211
|
+
envoy_api_v2_core_Node_mutable_metadata(node_msg, arena);
|
212
|
+
PopulateMetadata(arena, metadata, node->metadata.object_value());
|
167
213
|
}
|
168
|
-
if (!
|
214
|
+
if (!server_name.empty()) {
|
169
215
|
google_protobuf_Struct* metadata =
|
170
216
|
envoy_api_v2_core_Node_mutable_metadata(node_msg, arena);
|
171
|
-
|
217
|
+
google_protobuf_Struct_FieldsEntry* field =
|
218
|
+
google_protobuf_Struct_add_fields(metadata, arena);
|
219
|
+
google_protobuf_Struct_FieldsEntry_set_key(
|
220
|
+
field, upb_strview_makez("PROXYLESS_CLIENT_HOSTNAME"));
|
221
|
+
google_protobuf_Value* value =
|
222
|
+
google_protobuf_Struct_FieldsEntry_mutable_value(field, arena);
|
223
|
+
google_protobuf_Value_set_string_value(
|
224
|
+
value, upb_strview_make(server_name.data(), server_name.size()));
|
172
225
|
}
|
173
|
-
if (node->locality_region
|
174
|
-
node->locality_subzone
|
226
|
+
if (!node->locality_region.empty() || !node->locality_zone.empty() ||
|
227
|
+
!node->locality_subzone.empty()) {
|
175
228
|
envoy_api_v2_core_Locality* locality =
|
176
229
|
envoy_api_v2_core_Node_mutable_locality(node_msg, arena);
|
177
|
-
if (node->locality_region
|
230
|
+
if (!node->locality_region.empty()) {
|
178
231
|
envoy_api_v2_core_Locality_set_region(
|
179
|
-
locality, upb_strview_makez(node->locality_region));
|
232
|
+
locality, upb_strview_makez(node->locality_region.c_str()));
|
180
233
|
}
|
181
|
-
if (node->locality_zone
|
234
|
+
if (!node->locality_zone.empty()) {
|
182
235
|
envoy_api_v2_core_Locality_set_zone(
|
183
|
-
locality, upb_strview_makez(node->locality_zone));
|
236
|
+
locality, upb_strview_makez(node->locality_zone.c_str()));
|
184
237
|
}
|
185
|
-
if (node->locality_subzone
|
238
|
+
if (!node->locality_subzone.empty()) {
|
186
239
|
envoy_api_v2_core_Locality_set_sub_zone(
|
187
|
-
locality, upb_strview_makez(node->locality_subzone));
|
240
|
+
locality, upb_strview_makez(node->locality_subzone.c_str()));
|
188
241
|
}
|
189
242
|
}
|
190
243
|
}
|
191
|
-
envoy_api_v2_core_Node_set_build_version(
|
192
|
-
|
244
|
+
envoy_api_v2_core_Node_set_build_version(
|
245
|
+
node_msg, upb_strview_make(build_version.data(), build_version.size()));
|
246
|
+
envoy_api_v2_core_Node_set_user_agent_name(
|
247
|
+
node_msg,
|
248
|
+
upb_strview_make(user_agent_name.data(), user_agent_name.size()));
|
249
|
+
envoy_api_v2_core_Node_set_user_agent_version(
|
250
|
+
node_msg, upb_strview_makez(grpc_version_string()));
|
251
|
+
envoy_api_v2_core_Node_add_client_features(
|
252
|
+
node_msg, upb_strview_makez("envoy.lb.does_not_support_overprovisioning"),
|
253
|
+
arena);
|
193
254
|
}
|
194
255
|
|
195
|
-
|
196
|
-
|
197
|
-
grpc_slice XdsUnsupportedTypeNackRequestCreateAndEncode(
|
198
|
-
const std::string& type_url, const std::string& nonce, grpc_error* error) {
|
199
|
-
upb::Arena arena;
|
200
|
-
// Create a request.
|
201
|
-
envoy_api_v2_DiscoveryRequest* request =
|
202
|
-
envoy_api_v2_DiscoveryRequest_new(arena.ptr());
|
203
|
-
// Set type_url.
|
204
|
-
envoy_api_v2_DiscoveryRequest_set_type_url(
|
205
|
-
request, upb_strview_makez(type_url.c_str()));
|
206
|
-
// Set nonce.
|
207
|
-
envoy_api_v2_DiscoveryRequest_set_response_nonce(
|
208
|
-
request, upb_strview_makez(nonce.c_str()));
|
209
|
-
// Set error_detail.
|
210
|
-
grpc_slice error_description_slice;
|
211
|
-
GPR_ASSERT(grpc_error_get_str(error, GRPC_ERROR_STR_DESCRIPTION,
|
212
|
-
&error_description_slice));
|
213
|
-
upb_strview error_description_strview =
|
214
|
-
upb_strview_make(reinterpret_cast<const char*>(
|
215
|
-
GPR_SLICE_START_PTR(error_description_slice)),
|
216
|
-
GPR_SLICE_LENGTH(error_description_slice));
|
217
|
-
google_rpc_Status* error_detail =
|
218
|
-
envoy_api_v2_DiscoveryRequest_mutable_error_detail(request, arena.ptr());
|
219
|
-
google_rpc_Status_set_message(error_detail, error_description_strview);
|
220
|
-
GRPC_ERROR_UNREF(error);
|
221
|
-
// Encode the request.
|
222
|
-
size_t output_length;
|
223
|
-
char* output = envoy_api_v2_DiscoveryRequest_serialize(request, arena.ptr(),
|
224
|
-
&output_length);
|
225
|
-
return grpc_slice_from_copied_buffer(output, output_length);
|
226
|
-
}
|
227
|
-
|
228
|
-
grpc_slice XdsCdsRequestCreateAndEncode(
|
229
|
-
const std::set<StringView>& cluster_names, const XdsBootstrap::Node* node,
|
230
|
-
const char* build_version, const std::string& version,
|
256
|
+
envoy_api_v2_DiscoveryRequest* CreateDiscoveryRequest(
|
257
|
+
upb_arena* arena, const char* type_url, const std::string& version,
|
231
258
|
const std::string& nonce, grpc_error* error) {
|
232
|
-
upb::Arena arena;
|
233
259
|
// Create a request.
|
234
260
|
envoy_api_v2_DiscoveryRequest* request =
|
235
|
-
envoy_api_v2_DiscoveryRequest_new(arena
|
261
|
+
envoy_api_v2_DiscoveryRequest_new(arena);
|
262
|
+
// Set type_url.
|
263
|
+
envoy_api_v2_DiscoveryRequest_set_type_url(request,
|
264
|
+
upb_strview_makez(type_url));
|
236
265
|
// Set version_info.
|
237
266
|
if (!version.empty()) {
|
238
267
|
envoy_api_v2_DiscoveryRequest_set_version_info(
|
239
268
|
request, upb_strview_makez(version.c_str()));
|
240
269
|
}
|
241
|
-
// Populate node.
|
242
|
-
if (build_version != nullptr) {
|
243
|
-
envoy_api_v2_core_Node* node_msg =
|
244
|
-
envoy_api_v2_DiscoveryRequest_mutable_node(request, arena.ptr());
|
245
|
-
PopulateNode(arena.ptr(), node, build_version, node_msg);
|
246
|
-
}
|
247
|
-
// Add resource_names.
|
248
|
-
for (const auto& cluster_name : cluster_names) {
|
249
|
-
envoy_api_v2_DiscoveryRequest_add_resource_names(
|
250
|
-
request, upb_strview_make(cluster_name.data(), cluster_name.size()),
|
251
|
-
arena.ptr());
|
252
|
-
}
|
253
|
-
// Set type_url.
|
254
|
-
envoy_api_v2_DiscoveryRequest_set_type_url(request,
|
255
|
-
upb_strview_makez(kCdsTypeUrl));
|
256
270
|
// Set nonce.
|
257
271
|
if (!nonce.empty()) {
|
258
272
|
envoy_api_v2_DiscoveryRequest_set_response_nonce(
|
@@ -268,36 +282,110 @@ grpc_slice XdsCdsRequestCreateAndEncode(
|
|
268
282
|
GPR_SLICE_START_PTR(error_description_slice)),
|
269
283
|
GPR_SLICE_LENGTH(error_description_slice));
|
270
284
|
google_rpc_Status* error_detail =
|
271
|
-
envoy_api_v2_DiscoveryRequest_mutable_error_detail(request,
|
272
|
-
arena.ptr());
|
285
|
+
envoy_api_v2_DiscoveryRequest_mutable_error_detail(request, arena);
|
273
286
|
google_rpc_Status_set_message(error_detail, error_description_strview);
|
274
287
|
GRPC_ERROR_UNREF(error);
|
275
288
|
}
|
276
|
-
|
289
|
+
return request;
|
290
|
+
}
|
291
|
+
|
292
|
+
grpc_slice SerializeDiscoveryRequest(upb_arena* arena,
|
293
|
+
envoy_api_v2_DiscoveryRequest* request) {
|
277
294
|
size_t output_length;
|
278
|
-
char* output =
|
279
|
-
|
295
|
+
char* output =
|
296
|
+
envoy_api_v2_DiscoveryRequest_serialize(request, arena, &output_length);
|
280
297
|
return grpc_slice_from_copied_buffer(output, output_length);
|
281
298
|
}
|
282
299
|
|
283
|
-
|
284
|
-
|
285
|
-
|
286
|
-
|
300
|
+
} // namespace
|
301
|
+
|
302
|
+
grpc_slice XdsApi::CreateUnsupportedTypeNackRequest(const std::string& type_url,
|
303
|
+
const std::string& nonce,
|
304
|
+
grpc_error* error) {
|
305
|
+
upb::Arena arena;
|
306
|
+
envoy_api_v2_DiscoveryRequest* request = CreateDiscoveryRequest(
|
307
|
+
arena.ptr(), type_url.c_str(), /*version=*/"", nonce, error);
|
308
|
+
return SerializeDiscoveryRequest(arena.ptr(), request);
|
309
|
+
}
|
310
|
+
|
311
|
+
grpc_slice XdsApi::CreateLdsRequest(const std::string& server_name,
|
312
|
+
const std::string& version,
|
313
|
+
const std::string& nonce, grpc_error* error,
|
314
|
+
bool populate_node) {
|
287
315
|
upb::Arena arena;
|
288
|
-
// Create a request.
|
289
316
|
envoy_api_v2_DiscoveryRequest* request =
|
290
|
-
|
291
|
-
//
|
292
|
-
if (
|
293
|
-
|
294
|
-
request,
|
317
|
+
CreateDiscoveryRequest(arena.ptr(), kLdsTypeUrl, version, nonce, error);
|
318
|
+
// Populate node.
|
319
|
+
if (populate_node) {
|
320
|
+
envoy_api_v2_core_Node* node_msg =
|
321
|
+
envoy_api_v2_DiscoveryRequest_mutable_node(request, arena.ptr());
|
322
|
+
PopulateNode(arena.ptr(), node_, build_version_, user_agent_name_, "",
|
323
|
+
node_msg);
|
324
|
+
}
|
325
|
+
// Add resource_name.
|
326
|
+
envoy_api_v2_DiscoveryRequest_add_resource_names(
|
327
|
+
request, upb_strview_make(server_name.data(), server_name.size()),
|
328
|
+
arena.ptr());
|
329
|
+
return SerializeDiscoveryRequest(arena.ptr(), request);
|
330
|
+
}
|
331
|
+
|
332
|
+
grpc_slice XdsApi::CreateRdsRequest(const std::string& route_config_name,
|
333
|
+
const std::string& version,
|
334
|
+
const std::string& nonce, grpc_error* error,
|
335
|
+
bool populate_node) {
|
336
|
+
upb::Arena arena;
|
337
|
+
envoy_api_v2_DiscoveryRequest* request =
|
338
|
+
CreateDiscoveryRequest(arena.ptr(), kRdsTypeUrl, version, nonce, error);
|
339
|
+
// Populate node.
|
340
|
+
if (populate_node) {
|
341
|
+
envoy_api_v2_core_Node* node_msg =
|
342
|
+
envoy_api_v2_DiscoveryRequest_mutable_node(request, arena.ptr());
|
343
|
+
PopulateNode(arena.ptr(), node_, build_version_, user_agent_name_, "",
|
344
|
+
node_msg);
|
345
|
+
}
|
346
|
+
// Add resource_name.
|
347
|
+
envoy_api_v2_DiscoveryRequest_add_resource_names(
|
348
|
+
request,
|
349
|
+
upb_strview_make(route_config_name.data(), route_config_name.size()),
|
350
|
+
arena.ptr());
|
351
|
+
return SerializeDiscoveryRequest(arena.ptr(), request);
|
352
|
+
}
|
353
|
+
|
354
|
+
grpc_slice XdsApi::CreateCdsRequest(const std::set<StringView>& cluster_names,
|
355
|
+
const std::string& version,
|
356
|
+
const std::string& nonce, grpc_error* error,
|
357
|
+
bool populate_node) {
|
358
|
+
upb::Arena arena;
|
359
|
+
envoy_api_v2_DiscoveryRequest* request =
|
360
|
+
CreateDiscoveryRequest(arena.ptr(), kCdsTypeUrl, version, nonce, error);
|
361
|
+
// Populate node.
|
362
|
+
if (populate_node) {
|
363
|
+
envoy_api_v2_core_Node* node_msg =
|
364
|
+
envoy_api_v2_DiscoveryRequest_mutable_node(request, arena.ptr());
|
365
|
+
PopulateNode(arena.ptr(), node_, build_version_, user_agent_name_, "",
|
366
|
+
node_msg);
|
295
367
|
}
|
368
|
+
// Add resource_names.
|
369
|
+
for (const auto& cluster_name : cluster_names) {
|
370
|
+
envoy_api_v2_DiscoveryRequest_add_resource_names(
|
371
|
+
request, upb_strview_make(cluster_name.data(), cluster_name.size()),
|
372
|
+
arena.ptr());
|
373
|
+
}
|
374
|
+
return SerializeDiscoveryRequest(arena.ptr(), request);
|
375
|
+
}
|
376
|
+
|
377
|
+
grpc_slice XdsApi::CreateEdsRequest(
|
378
|
+
const std::set<StringView>& eds_service_names, const std::string& version,
|
379
|
+
const std::string& nonce, grpc_error* error, bool populate_node) {
|
380
|
+
upb::Arena arena;
|
381
|
+
envoy_api_v2_DiscoveryRequest* request =
|
382
|
+
CreateDiscoveryRequest(arena.ptr(), kEdsTypeUrl, version, nonce, error);
|
296
383
|
// Populate node.
|
297
|
-
if (
|
384
|
+
if (populate_node) {
|
298
385
|
envoy_api_v2_core_Node* node_msg =
|
299
386
|
envoy_api_v2_DiscoveryRequest_mutable_node(request, arena.ptr());
|
300
|
-
PopulateNode(arena.ptr(),
|
387
|
+
PopulateNode(arena.ptr(), node_, build_version_, user_agent_name_, "",
|
388
|
+
node_msg);
|
301
389
|
}
|
302
390
|
// Add resource_names.
|
303
391
|
for (const auto& eds_service_name : eds_service_names) {
|
@@ -306,38 +394,283 @@ grpc_slice XdsEdsRequestCreateAndEncode(
|
|
306
394
|
upb_strview_make(eds_service_name.data(), eds_service_name.size()),
|
307
395
|
arena.ptr());
|
308
396
|
}
|
309
|
-
|
310
|
-
|
311
|
-
|
312
|
-
|
313
|
-
|
314
|
-
|
315
|
-
|
397
|
+
return SerializeDiscoveryRequest(arena.ptr(), request);
|
398
|
+
}
|
399
|
+
|
400
|
+
namespace {
|
401
|
+
|
402
|
+
// Better match type has smaller value.
|
403
|
+
enum MatchType {
|
404
|
+
EXACT_MATCH,
|
405
|
+
SUFFIX_MATCH,
|
406
|
+
PREFIX_MATCH,
|
407
|
+
UNIVERSE_MATCH,
|
408
|
+
INVALID_MATCH,
|
409
|
+
};
|
410
|
+
|
411
|
+
// Returns true if match succeeds.
|
412
|
+
bool DomainMatch(MatchType match_type, std::string domain_pattern,
|
413
|
+
std::string expected_host_name) {
|
414
|
+
// Normalize the args to lower-case. Domain matching is case-insensitive.
|
415
|
+
std::transform(domain_pattern.begin(), domain_pattern.end(),
|
416
|
+
domain_pattern.begin(),
|
417
|
+
[](unsigned char c) { return std::tolower(c); });
|
418
|
+
std::transform(expected_host_name.begin(), expected_host_name.end(),
|
419
|
+
expected_host_name.begin(),
|
420
|
+
[](unsigned char c) { return std::tolower(c); });
|
421
|
+
if (match_type == EXACT_MATCH) {
|
422
|
+
return domain_pattern == expected_host_name;
|
423
|
+
} else if (match_type == SUFFIX_MATCH) {
|
424
|
+
// Asterisk must match at least one char.
|
425
|
+
if (expected_host_name.size() < domain_pattern.size()) return false;
|
426
|
+
StringView pattern_suffix(domain_pattern.c_str() + 1);
|
427
|
+
StringView host_suffix(expected_host_name.c_str() +
|
428
|
+
expected_host_name.size() - pattern_suffix.size());
|
429
|
+
return pattern_suffix == host_suffix;
|
430
|
+
} else if (match_type == PREFIX_MATCH) {
|
431
|
+
// Asterisk must match at least one char.
|
432
|
+
if (expected_host_name.size() < domain_pattern.size()) return false;
|
433
|
+
StringView pattern_prefix(domain_pattern.c_str(),
|
434
|
+
domain_pattern.size() - 1);
|
435
|
+
StringView host_prefix(expected_host_name.c_str(), pattern_prefix.size());
|
436
|
+
return pattern_prefix == host_prefix;
|
437
|
+
} else {
|
438
|
+
return match_type == UNIVERSE_MATCH;
|
316
439
|
}
|
317
|
-
|
318
|
-
|
319
|
-
|
320
|
-
|
321
|
-
|
322
|
-
|
323
|
-
|
324
|
-
|
325
|
-
|
326
|
-
|
327
|
-
|
328
|
-
|
329
|
-
|
330
|
-
|
440
|
+
}
|
441
|
+
|
442
|
+
MatchType DomainPatternMatchType(const std::string& domain_pattern) {
|
443
|
+
if (domain_pattern.empty()) return INVALID_MATCH;
|
444
|
+
if (domain_pattern.find('*') == std::string::npos) return EXACT_MATCH;
|
445
|
+
if (domain_pattern == "*") return UNIVERSE_MATCH;
|
446
|
+
if (domain_pattern[0] == '*') return SUFFIX_MATCH;
|
447
|
+
if (domain_pattern[domain_pattern.size() - 1] == '*') return PREFIX_MATCH;
|
448
|
+
return INVALID_MATCH;
|
449
|
+
}
|
450
|
+
|
451
|
+
grpc_error* RouteConfigParse(
|
452
|
+
const envoy_api_v2_RouteConfiguration* route_config,
|
453
|
+
const std::string& expected_server_name, XdsApi::RdsUpdate* rds_update) {
|
454
|
+
// Strip off port from server name, if any.
|
455
|
+
size_t pos = expected_server_name.find(':');
|
456
|
+
std::string expected_host_name = expected_server_name.substr(0, pos);
|
457
|
+
// Get the virtual hosts.
|
458
|
+
size_t size;
|
459
|
+
const envoy_api_v2_route_VirtualHost* const* virtual_hosts =
|
460
|
+
envoy_api_v2_RouteConfiguration_virtual_hosts(route_config, &size);
|
461
|
+
// Find the best matched virtual host.
|
462
|
+
// The search order for 4 groups of domain patterns:
|
463
|
+
// 1. Exact match.
|
464
|
+
// 2. Suffix match (e.g., "*ABC").
|
465
|
+
// 3. Prefix match (e.g., "ABC*").
|
466
|
+
// 4. Universe match (i.e., "*").
|
467
|
+
// Within each group, longest match wins.
|
468
|
+
// If the same best matched domain pattern appears in multiple virtual hosts,
|
469
|
+
// the first matched virtual host wins.
|
470
|
+
const envoy_api_v2_route_VirtualHost* target_virtual_host = nullptr;
|
471
|
+
MatchType best_match_type = INVALID_MATCH;
|
472
|
+
size_t longest_match = 0;
|
473
|
+
// Check each domain pattern in each virtual host to determine the best
|
474
|
+
// matched virtual host.
|
475
|
+
for (size_t i = 0; i < size; ++i) {
|
476
|
+
size_t domain_size;
|
477
|
+
upb_strview const* domains =
|
478
|
+
envoy_api_v2_route_VirtualHost_domains(virtual_hosts[i], &domain_size);
|
479
|
+
for (size_t j = 0; j < domain_size; ++j) {
|
480
|
+
const std::string domain_pattern(domains[j].data, domains[j].size);
|
481
|
+
// Check the match type first. Skip the pattern if it's not better than
|
482
|
+
// current match.
|
483
|
+
const MatchType match_type = DomainPatternMatchType(domain_pattern);
|
484
|
+
if (match_type == INVALID_MATCH) {
|
485
|
+
return GRPC_ERROR_CREATE_FROM_STATIC_STRING("Invalid domain pattern.");
|
486
|
+
}
|
487
|
+
if (match_type > best_match_type) continue;
|
488
|
+
if (match_type == best_match_type &&
|
489
|
+
domain_pattern.size() <= longest_match) {
|
490
|
+
continue;
|
491
|
+
}
|
492
|
+
// Skip if match fails.
|
493
|
+
if (!DomainMatch(match_type, domain_pattern, expected_host_name)) {
|
494
|
+
continue;
|
495
|
+
}
|
496
|
+
// Choose this match.
|
497
|
+
target_virtual_host = virtual_hosts[i];
|
498
|
+
best_match_type = match_type;
|
499
|
+
longest_match = domain_pattern.size();
|
500
|
+
if (best_match_type == EXACT_MATCH) break;
|
501
|
+
}
|
502
|
+
if (best_match_type == EXACT_MATCH) break;
|
331
503
|
}
|
332
|
-
|
333
|
-
|
334
|
-
|
335
|
-
|
336
|
-
|
504
|
+
if (target_virtual_host == nullptr) {
|
505
|
+
return GRPC_ERROR_CREATE_FROM_STATIC_STRING(
|
506
|
+
"No matched virtual host found in the route config.");
|
507
|
+
}
|
508
|
+
// Get the route list from the matched virtual host.
|
509
|
+
const envoy_api_v2_route_Route* const* routes =
|
510
|
+
envoy_api_v2_route_VirtualHost_routes(target_virtual_host, &size);
|
511
|
+
if (size < 1) {
|
512
|
+
return GRPC_ERROR_CREATE_FROM_STATIC_STRING(
|
513
|
+
"No route found in the virtual host.");
|
514
|
+
}
|
515
|
+
// Only look at the last one in the route list (the default route),
|
516
|
+
const envoy_api_v2_route_Route* route = routes[size - 1];
|
517
|
+
// Validate that the match field must have a prefix field which is an empty
|
518
|
+
// string.
|
519
|
+
const envoy_api_v2_route_RouteMatch* match =
|
520
|
+
envoy_api_v2_route_Route_match(route);
|
521
|
+
if (!envoy_api_v2_route_RouteMatch_has_prefix(match)) {
|
522
|
+
return GRPC_ERROR_CREATE_FROM_STATIC_STRING(
|
523
|
+
"No prefix field found in RouteMatch.");
|
524
|
+
}
|
525
|
+
const upb_strview prefix = envoy_api_v2_route_RouteMatch_prefix(match);
|
526
|
+
if (!upb_strview_eql(prefix, upb_strview_makez(""))) {
|
527
|
+
return GRPC_ERROR_CREATE_FROM_STATIC_STRING("Prefix is not empty string.");
|
528
|
+
}
|
529
|
+
if (!envoy_api_v2_route_Route_has_route(route)) {
|
530
|
+
return GRPC_ERROR_CREATE_FROM_STATIC_STRING(
|
531
|
+
"No RouteAction found in route.");
|
532
|
+
}
|
533
|
+
const envoy_api_v2_route_RouteAction* route_action =
|
534
|
+
envoy_api_v2_route_Route_route(route);
|
535
|
+
// Get the cluster in the RouteAction.
|
536
|
+
if (!envoy_api_v2_route_RouteAction_has_cluster(route_action)) {
|
537
|
+
return GRPC_ERROR_CREATE_FROM_STATIC_STRING(
|
538
|
+
"No cluster found in RouteAction.");
|
539
|
+
}
|
540
|
+
const upb_strview cluster =
|
541
|
+
envoy_api_v2_route_RouteAction_cluster(route_action);
|
542
|
+
rds_update->cluster_name = std::string(cluster.data, cluster.size);
|
543
|
+
return GRPC_ERROR_NONE;
|
544
|
+
}
|
545
|
+
|
546
|
+
grpc_error* LdsResponseParse(const envoy_api_v2_DiscoveryResponse* response,
|
547
|
+
const std::string& expected_server_name,
|
548
|
+
XdsApi::LdsUpdate* lds_update, upb_arena* arena) {
|
549
|
+
// Get the resources from the response.
|
550
|
+
size_t size;
|
551
|
+
const google_protobuf_Any* const* resources =
|
552
|
+
envoy_api_v2_DiscoveryResponse_resources(response, &size);
|
553
|
+
if (size < 1) {
|
554
|
+
return GRPC_ERROR_CREATE_FROM_STATIC_STRING(
|
555
|
+
"LDS response contains 0 resource.");
|
556
|
+
}
|
557
|
+
for (size_t i = 0; i < size; ++i) {
|
558
|
+
// Check the type_url of the resource.
|
559
|
+
const upb_strview type_url = google_protobuf_Any_type_url(resources[i]);
|
560
|
+
if (!upb_strview_eql(type_url, upb_strview_makez(XdsApi::kLdsTypeUrl))) {
|
561
|
+
return GRPC_ERROR_CREATE_FROM_STATIC_STRING("Resource is not LDS.");
|
562
|
+
}
|
563
|
+
// Decode the listener.
|
564
|
+
const upb_strview encoded_listener =
|
565
|
+
google_protobuf_Any_value(resources[i]);
|
566
|
+
const envoy_api_v2_Listener* listener = envoy_api_v2_Listener_parse(
|
567
|
+
encoded_listener.data, encoded_listener.size, arena);
|
568
|
+
if (listener == nullptr) {
|
569
|
+
return GRPC_ERROR_CREATE_FROM_STATIC_STRING("Can't decode listener.");
|
570
|
+
}
|
571
|
+
// Check listener name. Ignore unexpected listeners.
|
572
|
+
const upb_strview name = envoy_api_v2_Listener_name(listener);
|
573
|
+
const upb_strview expected_name =
|
574
|
+
upb_strview_makez(expected_server_name.c_str());
|
575
|
+
if (!upb_strview_eql(name, expected_name)) continue;
|
576
|
+
// Get api_listener and decode it to http_connection_manager.
|
577
|
+
const envoy_config_listener_v2_ApiListener* api_listener =
|
578
|
+
envoy_api_v2_Listener_api_listener(listener);
|
579
|
+
if (api_listener == nullptr) {
|
580
|
+
return GRPC_ERROR_CREATE_FROM_STATIC_STRING(
|
581
|
+
"Listener doesn't have ApiListener.");
|
582
|
+
}
|
583
|
+
const upb_strview encoded_api_listener = google_protobuf_Any_value(
|
584
|
+
envoy_config_listener_v2_ApiListener_api_listener(api_listener));
|
585
|
+
const envoy_config_filter_network_http_connection_manager_v2_HttpConnectionManager*
|
586
|
+
http_connection_manager =
|
587
|
+
envoy_config_filter_network_http_connection_manager_v2_HttpConnectionManager_parse(
|
588
|
+
encoded_api_listener.data, encoded_api_listener.size, arena);
|
589
|
+
// Found inlined route_config. Parse it to find the cluster_name.
|
590
|
+
if (envoy_config_filter_network_http_connection_manager_v2_HttpConnectionManager_has_route_config(
|
591
|
+
http_connection_manager)) {
|
592
|
+
const envoy_api_v2_RouteConfiguration* route_config =
|
593
|
+
envoy_config_filter_network_http_connection_manager_v2_HttpConnectionManager_route_config(
|
594
|
+
http_connection_manager);
|
595
|
+
XdsApi::RdsUpdate rds_update;
|
596
|
+
grpc_error* error =
|
597
|
+
RouteConfigParse(route_config, expected_server_name, &rds_update);
|
598
|
+
if (error != GRPC_ERROR_NONE) return error;
|
599
|
+
lds_update->rds_update.emplace(std::move(rds_update));
|
600
|
+
const upb_strview route_config_name =
|
601
|
+
envoy_api_v2_RouteConfiguration_name(route_config);
|
602
|
+
lds_update->route_config_name =
|
603
|
+
std::string(route_config_name.data, route_config_name.size);
|
604
|
+
return GRPC_ERROR_NONE;
|
605
|
+
}
|
606
|
+
// Validate that RDS must be used to get the route_config dynamically.
|
607
|
+
if (!envoy_config_filter_network_http_connection_manager_v2_HttpConnectionManager_has_rds(
|
608
|
+
http_connection_manager)) {
|
609
|
+
return GRPC_ERROR_CREATE_FROM_STATIC_STRING(
|
610
|
+
"HttpConnectionManager neither has inlined route_config nor RDS.");
|
611
|
+
}
|
612
|
+
// Get the route_config_name.
|
613
|
+
const envoy_config_filter_network_http_connection_manager_v2_Rds* rds =
|
614
|
+
envoy_config_filter_network_http_connection_manager_v2_HttpConnectionManager_rds(
|
615
|
+
http_connection_manager);
|
616
|
+
const upb_strview route_config_name =
|
617
|
+
envoy_config_filter_network_http_connection_manager_v2_Rds_route_config_name(
|
618
|
+
rds);
|
619
|
+
lds_update->route_config_name =
|
620
|
+
std::string(route_config_name.data, route_config_name.size);
|
621
|
+
return GRPC_ERROR_NONE;
|
622
|
+
}
|
623
|
+
return GRPC_ERROR_CREATE_FROM_STATIC_STRING(
|
624
|
+
"No listener found for expected server name.");
|
625
|
+
}
|
626
|
+
|
627
|
+
grpc_error* RdsResponseParse(const envoy_api_v2_DiscoveryResponse* response,
|
628
|
+
const std::string& expected_server_name,
|
629
|
+
const std::string& expected_route_config_name,
|
630
|
+
XdsApi::RdsUpdate* rds_update, upb_arena* arena) {
|
631
|
+
// Get the resources from the response.
|
632
|
+
size_t size;
|
633
|
+
const google_protobuf_Any* const* resources =
|
634
|
+
envoy_api_v2_DiscoveryResponse_resources(response, &size);
|
635
|
+
if (size < 1) {
|
636
|
+
return GRPC_ERROR_CREATE_FROM_STATIC_STRING(
|
637
|
+
"RDS response contains 0 resource.");
|
638
|
+
}
|
639
|
+
for (size_t i = 0; i < size; ++i) {
|
640
|
+
// Check the type_url of the resource.
|
641
|
+
const upb_strview type_url = google_protobuf_Any_type_url(resources[i]);
|
642
|
+
if (!upb_strview_eql(type_url, upb_strview_makez(XdsApi::kRdsTypeUrl))) {
|
643
|
+
return GRPC_ERROR_CREATE_FROM_STATIC_STRING("Resource is not RDS.");
|
644
|
+
}
|
645
|
+
// Decode the route_config.
|
646
|
+
const upb_strview encoded_route_config =
|
647
|
+
google_protobuf_Any_value(resources[i]);
|
648
|
+
const envoy_api_v2_RouteConfiguration* route_config =
|
649
|
+
envoy_api_v2_RouteConfiguration_parse(encoded_route_config.data,
|
650
|
+
encoded_route_config.size, arena);
|
651
|
+
if (route_config == nullptr) {
|
652
|
+
return GRPC_ERROR_CREATE_FROM_STATIC_STRING("Can't decode route_config.");
|
653
|
+
}
|
654
|
+
// Check route_config_name. Ignore unexpected route_config.
|
655
|
+
const upb_strview name = envoy_api_v2_RouteConfiguration_name(route_config);
|
656
|
+
const upb_strview expected_name =
|
657
|
+
upb_strview_makez(expected_route_config_name.c_str());
|
658
|
+
if (!upb_strview_eql(name, expected_name)) continue;
|
659
|
+
// Parse the route_config.
|
660
|
+
XdsApi::RdsUpdate local_rds_update;
|
661
|
+
grpc_error* error =
|
662
|
+
RouteConfigParse(route_config, expected_server_name, &local_rds_update);
|
663
|
+
if (error != GRPC_ERROR_NONE) return error;
|
664
|
+
*rds_update = std::move(local_rds_update);
|
665
|
+
return GRPC_ERROR_NONE;
|
666
|
+
}
|
667
|
+
return GRPC_ERROR_CREATE_FROM_STATIC_STRING(
|
668
|
+
"No route config found for expected name.");
|
337
669
|
}
|
338
670
|
|
339
671
|
grpc_error* CdsResponseParse(const envoy_api_v2_DiscoveryResponse* response,
|
340
|
-
CdsUpdateMap* cds_update_map,
|
672
|
+
XdsApi::CdsUpdateMap* cds_update_map,
|
673
|
+
upb_arena* arena) {
|
341
674
|
// Get the resources from the response.
|
342
675
|
size_t size;
|
343
676
|
const google_protobuf_Any* const* resources =
|
@@ -348,10 +681,10 @@ grpc_error* CdsResponseParse(const envoy_api_v2_DiscoveryResponse* response,
|
|
348
681
|
}
|
349
682
|
// Parse all the resources in the CDS response.
|
350
683
|
for (size_t i = 0; i < size; ++i) {
|
351
|
-
CdsUpdate cds_update;
|
684
|
+
XdsApi::CdsUpdate cds_update;
|
352
685
|
// Check the type_url of the resource.
|
353
686
|
const upb_strview type_url = google_protobuf_Any_type_url(resources[i]);
|
354
|
-
if (!upb_strview_eql(type_url, upb_strview_makez(kCdsTypeUrl))) {
|
687
|
+
if (!upb_strview_eql(type_url, upb_strview_makez(XdsApi::kCdsTypeUrl))) {
|
355
688
|
return GRPC_ERROR_CREATE_FROM_STATIC_STRING("Resource is not CDS.");
|
356
689
|
}
|
357
690
|
// Decode the cluster.
|
@@ -397,7 +730,7 @@ grpc_error* CdsResponseParse(const envoy_api_v2_DiscoveryResponse* response,
|
|
397
730
|
return GRPC_ERROR_CREATE_FROM_STATIC_STRING(
|
398
731
|
"ConfigSource is not self.");
|
399
732
|
}
|
400
|
-
cds_update.lrs_load_reporting_server_name.
|
733
|
+
cds_update.lrs_load_reporting_server_name.emplace("");
|
401
734
|
}
|
402
735
|
upb_strview cluster_name = envoy_api_v2_Cluster_name(cluster);
|
403
736
|
cds_update_map->emplace(std::string(cluster_name.data, cluster_name.size),
|
@@ -406,8 +739,6 @@ grpc_error* CdsResponseParse(const envoy_api_v2_DiscoveryResponse* response,
|
|
406
739
|
return GRPC_ERROR_NONE;
|
407
740
|
}
|
408
741
|
|
409
|
-
namespace {
|
410
|
-
|
411
742
|
grpc_error* ServerAddressParseAndAppend(
|
412
743
|
const envoy_api_v2_endpoint_LbEndpoint* lb_endpoint,
|
413
744
|
ServerAddressList* list) {
|
@@ -445,7 +776,7 @@ grpc_error* ServerAddressParseAndAppend(
|
|
445
776
|
|
446
777
|
grpc_error* LocalityParse(
|
447
778
|
const envoy_api_v2_endpoint_LocalityLbEndpoints* locality_lb_endpoints,
|
448
|
-
|
779
|
+
XdsApi::PriorityListUpdate::LocalityMap::Locality* output_locality) {
|
449
780
|
// Parse LB weight.
|
450
781
|
const google_protobuf_UInt32Value* lb_weight =
|
451
782
|
envoy_api_v2_endpoint_LocalityLbEndpoints_load_balancing_weight(
|
@@ -483,7 +814,7 @@ grpc_error* LocalityParse(
|
|
483
814
|
|
484
815
|
grpc_error* DropParseAndAppend(
|
485
816
|
const envoy_api_v2_ClusterLoadAssignment_Policy_DropOverload* drop_overload,
|
486
|
-
|
817
|
+
XdsApi::DropConfig* drop_config, bool* drop_all) {
|
487
818
|
// Get the category.
|
488
819
|
upb_strview category =
|
489
820
|
envoy_api_v2_ClusterLoadAssignment_Policy_DropOverload_category(
|
@@ -523,7 +854,7 @@ grpc_error* DropParseAndAppend(
|
|
523
854
|
grpc_error* EdsResponsedParse(
|
524
855
|
const envoy_api_v2_DiscoveryResponse* response,
|
525
856
|
const std::set<StringView>& expected_eds_service_names,
|
526
|
-
EdsUpdateMap* eds_update_map, upb_arena* arena) {
|
857
|
+
XdsApi::EdsUpdateMap* eds_update_map, upb_arena* arena) {
|
527
858
|
// Get the resources from the response.
|
528
859
|
size_t size;
|
529
860
|
const google_protobuf_Any* const* resources =
|
@@ -533,10 +864,10 @@ grpc_error* EdsResponsedParse(
|
|
533
864
|
"EDS response contains 0 resource.");
|
534
865
|
}
|
535
866
|
for (size_t i = 0; i < size; ++i) {
|
536
|
-
EdsUpdate eds_update;
|
867
|
+
XdsApi::EdsUpdate eds_update;
|
537
868
|
// Check the type_url of the resource.
|
538
869
|
upb_strview type_url = google_protobuf_Any_type_url(resources[i]);
|
539
|
-
if (!upb_strview_eql(type_url, upb_strview_makez(kEdsTypeUrl))) {
|
870
|
+
if (!upb_strview_eql(type_url, upb_strview_makez(XdsApi::kEdsTypeUrl))) {
|
540
871
|
return GRPC_ERROR_CREATE_FROM_STATIC_STRING("Resource is not EDS.");
|
541
872
|
}
|
542
873
|
// Get the cluster_load_assignment.
|
@@ -565,7 +896,7 @@ grpc_error* EdsResponsedParse(
|
|
565
896
|
envoy_api_v2_ClusterLoadAssignment_endpoints(cluster_load_assignment,
|
566
897
|
&locality_size);
|
567
898
|
for (size_t j = 0; j < locality_size; ++j) {
|
568
|
-
|
899
|
+
XdsApi::PriorityListUpdate::LocalityMap::Locality locality;
|
569
900
|
grpc_error* error = LocalityParse(endpoints[j], &locality);
|
570
901
|
if (error != GRPC_ERROR_NONE) return error;
|
571
902
|
// Filter out locality with weight 0.
|
@@ -573,7 +904,7 @@ grpc_error* EdsResponsedParse(
|
|
573
904
|
eds_update.priority_list_update.Add(locality);
|
574
905
|
}
|
575
906
|
// Get the drop config.
|
576
|
-
eds_update.drop_config = MakeRefCounted<
|
907
|
+
eds_update.drop_config = MakeRefCounted<XdsApi::DropConfig>();
|
577
908
|
const envoy_api_v2_ClusterLoadAssignment_Policy* policy =
|
578
909
|
envoy_api_v2_ClusterLoadAssignment_policy(cluster_load_assignment);
|
579
910
|
if (policy != nullptr) {
|
@@ -603,11 +934,13 @@ grpc_error* EdsResponsedParse(
|
|
603
934
|
|
604
935
|
} // namespace
|
605
936
|
|
606
|
-
grpc_error*
|
607
|
-
const grpc_slice& encoded_response,
|
937
|
+
grpc_error* XdsApi::ParseAdsResponse(
|
938
|
+
const grpc_slice& encoded_response, const std::string& expected_server_name,
|
939
|
+
const std::string& expected_route_config_name,
|
608
940
|
const std::set<StringView>& expected_eds_service_names,
|
609
|
-
|
610
|
-
|
941
|
+
LdsUpdate* lds_update, RdsUpdate* rds_update, CdsUpdateMap* cds_update_map,
|
942
|
+
EdsUpdateMap* eds_update_map, std::string* version, std::string* nonce,
|
943
|
+
std::string* type_url) {
|
611
944
|
upb::Arena arena;
|
612
945
|
// Decode the response.
|
613
946
|
const envoy_api_v2_DiscoveryResponse* response =
|
@@ -630,7 +963,14 @@ grpc_error* XdsAdsResponseDecodeAndParse(
|
|
630
963
|
upb_strview nonce_strview = envoy_api_v2_DiscoveryResponse_nonce(response);
|
631
964
|
*nonce = std::string(nonce_strview.data, nonce_strview.size);
|
632
965
|
// Parse the response according to the resource type.
|
633
|
-
if (*type_url ==
|
966
|
+
if (*type_url == kLdsTypeUrl) {
|
967
|
+
return LdsResponseParse(response, expected_server_name, lds_update,
|
968
|
+
arena.ptr());
|
969
|
+
} else if (*type_url == kRdsTypeUrl) {
|
970
|
+
return RdsResponseParse(response, expected_server_name,
|
971
|
+
expected_route_config_name, rds_update,
|
972
|
+
arena.ptr());
|
973
|
+
} else if (*type_url == kCdsTypeUrl) {
|
634
974
|
return CdsResponseParse(response, cds_update_map, arena.ptr());
|
635
975
|
} else if (*type_url == kEdsTypeUrl) {
|
636
976
|
return EdsResponsedParse(response, expected_eds_service_names,
|
@@ -643,7 +983,7 @@ grpc_error* XdsAdsResponseDecodeAndParse(
|
|
643
983
|
|
644
984
|
namespace {
|
645
985
|
|
646
|
-
grpc_slice
|
986
|
+
grpc_slice SerializeLrsRequest(
|
647
987
|
const envoy_service_load_stats_v2_LoadStatsRequest* request,
|
648
988
|
upb_arena* arena) {
|
649
989
|
size_t output_length;
|
@@ -654,9 +994,7 @@ grpc_slice LrsRequestEncode(
|
|
654
994
|
|
655
995
|
} // namespace
|
656
996
|
|
657
|
-
grpc_slice
|
658
|
-
const XdsBootstrap::Node* node,
|
659
|
-
const char* build_version) {
|
997
|
+
grpc_slice XdsApi::CreateLrsInitialRequest(const std::string& server_name) {
|
660
998
|
upb::Arena arena;
|
661
999
|
// Create a request.
|
662
1000
|
envoy_service_load_stats_v2_LoadStatsRequest* request =
|
@@ -665,33 +1003,34 @@ grpc_slice XdsLrsRequestCreateAndEncode(const std::string& server_name,
|
|
665
1003
|
envoy_api_v2_core_Node* node_msg =
|
666
1004
|
envoy_service_load_stats_v2_LoadStatsRequest_mutable_node(request,
|
667
1005
|
arena.ptr());
|
668
|
-
PopulateNode(arena.ptr(),
|
669
|
-
|
670
|
-
|
671
|
-
envoy_api_v2_endpoint_ClusterStats* cluster_stats =
|
672
|
-
envoy_service_load_stats_v2_LoadStatsRequest_add_cluster_stats(
|
673
|
-
request, arena.ptr());
|
674
|
-
// Set the cluster name.
|
675
|
-
envoy_api_v2_endpoint_ClusterStats_set_cluster_name(
|
676
|
-
cluster_stats, upb_strview_makez(server_name.c_str()));
|
677
|
-
return LrsRequestEncode(request, arena.ptr());
|
1006
|
+
PopulateNode(arena.ptr(), node_, build_version_, user_agent_name_,
|
1007
|
+
server_name, node_msg);
|
1008
|
+
return SerializeLrsRequest(request, arena.ptr());
|
678
1009
|
}
|
679
1010
|
|
680
1011
|
namespace {
|
681
1012
|
|
682
|
-
void LocalityStatsPopulate(
|
683
|
-
|
684
|
-
|
685
|
-
|
686
|
-
|
687
|
-
// Set sub_zone.
|
1013
|
+
void LocalityStatsPopulate(envoy_api_v2_endpoint_UpstreamLocalityStats* output,
|
1014
|
+
const XdsLocalityName& locality_name,
|
1015
|
+
const XdsClusterLocalityStats::Snapshot& snapshot,
|
1016
|
+
upb_arena* arena) {
|
1017
|
+
// Set locality.
|
688
1018
|
envoy_api_v2_core_Locality* locality =
|
689
1019
|
envoy_api_v2_endpoint_UpstreamLocalityStats_mutable_locality(output,
|
690
1020
|
arena);
|
691
|
-
|
692
|
-
|
1021
|
+
if (!locality_name.region().empty()) {
|
1022
|
+
envoy_api_v2_core_Locality_set_region(
|
1023
|
+
locality, upb_strview_makez(locality_name.region().c_str()));
|
1024
|
+
}
|
1025
|
+
if (!locality_name.zone().empty()) {
|
1026
|
+
envoy_api_v2_core_Locality_set_zone(
|
1027
|
+
locality, upb_strview_makez(locality_name.zone().c_str()));
|
1028
|
+
}
|
1029
|
+
if (!locality_name.sub_zone().empty()) {
|
1030
|
+
envoy_api_v2_core_Locality_set_sub_zone(
|
1031
|
+
locality, upb_strview_makez(locality_name.sub_zone().c_str()));
|
1032
|
+
}
|
693
1033
|
// Set total counts.
|
694
|
-
const XdsClientStats::LocalityStats::Snapshot& snapshot = input.second;
|
695
1034
|
envoy_api_v2_endpoint_UpstreamLocalityStats_set_total_successful_requests(
|
696
1035
|
output, snapshot.total_successful_requests);
|
697
1036
|
envoy_api_v2_endpoint_UpstreamLocalityStats_set_total_requests_in_progress(
|
@@ -700,16 +1039,15 @@ void LocalityStatsPopulate(
|
|
700
1039
|
output, snapshot.total_error_requests);
|
701
1040
|
envoy_api_v2_endpoint_UpstreamLocalityStats_set_total_issued_requests(
|
702
1041
|
output, snapshot.total_issued_requests);
|
703
|
-
// Add
|
704
|
-
for (auto& p : snapshot.
|
705
|
-
const
|
706
|
-
const
|
707
|
-
p.second;
|
1042
|
+
// Add backend metrics.
|
1043
|
+
for (const auto& p : snapshot.backend_metrics) {
|
1044
|
+
const std::string& metric_name = p.first;
|
1045
|
+
const XdsClusterLocalityStats::BackendMetric& metric_value = p.second;
|
708
1046
|
envoy_api_v2_endpoint_EndpointLoadMetricStats* load_metric =
|
709
1047
|
envoy_api_v2_endpoint_UpstreamLocalityStats_add_load_metric_stats(
|
710
1048
|
output, arena);
|
711
1049
|
envoy_api_v2_endpoint_EndpointLoadMetricStats_set_metric_name(
|
712
|
-
load_metric,
|
1050
|
+
load_metric, upb_strview_make(metric_name.data(), metric_name.size()));
|
713
1051
|
envoy_api_v2_endpoint_EndpointLoadMetricStats_set_num_requests_finished_with_metric(
|
714
1052
|
load_metric, metric_value.num_requests_finished_with_metric);
|
715
1053
|
envoy_api_v2_endpoint_EndpointLoadMetricStats_set_total_metric_value(
|
@@ -719,80 +1057,72 @@ void LocalityStatsPopulate(
|
|
719
1057
|
|
720
1058
|
} // namespace
|
721
1059
|
|
722
|
-
grpc_slice
|
723
|
-
|
1060
|
+
grpc_slice XdsApi::CreateLrsRequest(
|
1061
|
+
ClusterLoadReportMap cluster_load_report_map) {
|
724
1062
|
upb::Arena arena;
|
725
|
-
// Get the snapshots.
|
726
|
-
std::map<StringView, grpc_core::InlinedVector<XdsClientStats::Snapshot, 1>>
|
727
|
-
snapshot_map;
|
728
|
-
for (auto& p : client_stats_map) {
|
729
|
-
const StringView& cluster_name = p.first;
|
730
|
-
for (auto* client_stats : p.second) {
|
731
|
-
XdsClientStats::Snapshot snapshot = client_stats->GetSnapshotAndReset();
|
732
|
-
// Prune unused locality stats.
|
733
|
-
client_stats->PruneLocalityStats();
|
734
|
-
if (snapshot.IsAllZero()) continue;
|
735
|
-
snapshot_map[cluster_name].emplace_back(std::move(snapshot));
|
736
|
-
}
|
737
|
-
}
|
738
|
-
// When all the counts are zero, return empty slice.
|
739
|
-
if (snapshot_map.empty()) return grpc_empty_slice();
|
740
1063
|
// Create a request.
|
741
1064
|
envoy_service_load_stats_v2_LoadStatsRequest* request =
|
742
1065
|
envoy_service_load_stats_v2_LoadStatsRequest_new(arena.ptr());
|
743
|
-
for (auto& p :
|
744
|
-
const
|
745
|
-
const
|
746
|
-
|
747
|
-
|
748
|
-
|
749
|
-
|
750
|
-
|
751
|
-
|
752
|
-
|
753
|
-
|
1066
|
+
for (auto& p : cluster_load_report_map) {
|
1067
|
+
const std::string& cluster_name = p.first.first;
|
1068
|
+
const std::string& eds_service_name = p.first.second;
|
1069
|
+
const ClusterLoadReport& load_report = p.second;
|
1070
|
+
// Add cluster stats.
|
1071
|
+
envoy_api_v2_endpoint_ClusterStats* cluster_stats =
|
1072
|
+
envoy_service_load_stats_v2_LoadStatsRequest_add_cluster_stats(
|
1073
|
+
request, arena.ptr());
|
1074
|
+
// Set the cluster name.
|
1075
|
+
envoy_api_v2_endpoint_ClusterStats_set_cluster_name(
|
1076
|
+
cluster_stats,
|
1077
|
+
upb_strview_make(cluster_name.data(), cluster_name.size()));
|
1078
|
+
// Set EDS service name, if non-empty.
|
1079
|
+
if (!eds_service_name.empty()) {
|
1080
|
+
envoy_api_v2_endpoint_ClusterStats_set_cluster_service_name(
|
754
1081
|
cluster_stats,
|
755
|
-
upb_strview_make(
|
756
|
-
|
757
|
-
|
758
|
-
|
759
|
-
|
760
|
-
|
761
|
-
|
762
|
-
|
763
|
-
// Add dropped requests.
|
764
|
-
for (auto& p : snapshot.dropped_requests) {
|
765
|
-
const char* category = p.first.c_str();
|
766
|
-
const uint64_t count = p.second;
|
767
|
-
envoy_api_v2_endpoint_ClusterStats_DroppedRequests* dropped_requests =
|
768
|
-
envoy_api_v2_endpoint_ClusterStats_add_dropped_requests(
|
769
|
-
cluster_stats, arena.ptr());
|
770
|
-
envoy_api_v2_endpoint_ClusterStats_DroppedRequests_set_category(
|
771
|
-
dropped_requests, upb_strview_makez(category));
|
772
|
-
envoy_api_v2_endpoint_ClusterStats_DroppedRequests_set_dropped_count(
|
773
|
-
dropped_requests, count);
|
774
|
-
}
|
775
|
-
// Set total dropped requests.
|
776
|
-
envoy_api_v2_endpoint_ClusterStats_set_total_dropped_requests(
|
777
|
-
cluster_stats, snapshot.total_dropped_requests);
|
778
|
-
// Set real load report interval.
|
779
|
-
gpr_timespec timespec =
|
780
|
-
grpc_millis_to_timespec(snapshot.load_report_interval, GPR_TIMESPAN);
|
781
|
-
google_protobuf_Duration* load_report_interval =
|
782
|
-
envoy_api_v2_endpoint_ClusterStats_mutable_load_report_interval(
|
1082
|
+
upb_strview_make(eds_service_name.data(), eds_service_name.size()));
|
1083
|
+
}
|
1084
|
+
// Add locality stats.
|
1085
|
+
for (const auto& p : load_report.locality_stats) {
|
1086
|
+
const XdsLocalityName& locality_name = *p.first;
|
1087
|
+
const auto& snapshot = p.second;
|
1088
|
+
envoy_api_v2_endpoint_UpstreamLocalityStats* locality_stats =
|
1089
|
+
envoy_api_v2_endpoint_ClusterStats_add_upstream_locality_stats(
|
783
1090
|
cluster_stats, arena.ptr());
|
784
|
-
|
785
|
-
|
786
|
-
|
787
|
-
|
1091
|
+
LocalityStatsPopulate(locality_stats, locality_name, snapshot,
|
1092
|
+
arena.ptr());
|
1093
|
+
}
|
1094
|
+
// Add dropped requests.
|
1095
|
+
uint64_t total_dropped_requests = 0;
|
1096
|
+
for (const auto& p : load_report.dropped_requests) {
|
1097
|
+
const char* category = p.first.c_str();
|
1098
|
+
const uint64_t count = p.second;
|
1099
|
+
envoy_api_v2_endpoint_ClusterStats_DroppedRequests* dropped_requests =
|
1100
|
+
envoy_api_v2_endpoint_ClusterStats_add_dropped_requests(cluster_stats,
|
1101
|
+
arena.ptr());
|
1102
|
+
envoy_api_v2_endpoint_ClusterStats_DroppedRequests_set_category(
|
1103
|
+
dropped_requests, upb_strview_makez(category));
|
1104
|
+
envoy_api_v2_endpoint_ClusterStats_DroppedRequests_set_dropped_count(
|
1105
|
+
dropped_requests, count);
|
1106
|
+
total_dropped_requests += count;
|
788
1107
|
}
|
1108
|
+
// Set total dropped requests.
|
1109
|
+
envoy_api_v2_endpoint_ClusterStats_set_total_dropped_requests(
|
1110
|
+
cluster_stats, total_dropped_requests);
|
1111
|
+
// Set real load report interval.
|
1112
|
+
gpr_timespec timespec =
|
1113
|
+
grpc_millis_to_timespec(load_report.load_report_interval, GPR_TIMESPAN);
|
1114
|
+
google_protobuf_Duration* load_report_interval =
|
1115
|
+
envoy_api_v2_endpoint_ClusterStats_mutable_load_report_interval(
|
1116
|
+
cluster_stats, arena.ptr());
|
1117
|
+
google_protobuf_Duration_set_seconds(load_report_interval, timespec.tv_sec);
|
1118
|
+
google_protobuf_Duration_set_nanos(load_report_interval, timespec.tv_nsec);
|
789
1119
|
}
|
790
|
-
return
|
1120
|
+
return SerializeLrsRequest(request, arena.ptr());
|
791
1121
|
}
|
792
1122
|
|
793
|
-
grpc_error*
|
794
|
-
|
795
|
-
|
1123
|
+
grpc_error* XdsApi::ParseLrsResponse(const grpc_slice& encoded_response,
|
1124
|
+
std::set<std::string>* cluster_names,
|
1125
|
+
grpc_millis* load_reporting_interval) {
|
796
1126
|
upb::Arena arena;
|
797
1127
|
// Decode the response.
|
798
1128
|
const envoy_service_load_stats_v2_LoadStatsResponse* decoded_response =
|