grpc 1.35.0.pre1 → 1.37.1
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 +121 -89
- data/include/grpc/grpc.h +15 -1
- data/include/grpc/grpc_security.h +16 -11
- data/include/grpc/impl/codegen/port_platform.h +2 -0
- data/src/core/ext/filters/client_channel/client_channel.cc +359 -331
- data/src/core/ext/filters/client_channel/client_channel.h +0 -2
- data/src/core/ext/filters/client_channel/client_channel_factory.h +2 -1
- data/src/core/ext/filters/client_channel/config_selector.h +9 -1
- data/src/core/ext/filters/client_channel/dynamic_filters.cc +9 -4
- data/src/core/ext/filters/client_channel/global_subchannel_pool.cc +24 -142
- data/src/core/ext/filters/client_channel/global_subchannel_pool.h +15 -10
- data/src/core/ext/filters/client_channel/http_connect_handshaker.cc +2 -2
- data/src/core/ext/filters/client_channel/lb_policy.cc +3 -0
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +3 -5
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel.h +1 -2
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel_secure.cc +1 -2
- data/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc +1 -1
- data/src/core/ext/filters/client_channel/lb_policy/priority/priority.cc +8 -6
- data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.cc +23 -0
- data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.h +27 -0
- data/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc +289 -170
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_channel_args.h +5 -0
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_impl.cc +8 -25
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_manager.cc +1 -1
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_resolver.cc +232 -110
- data/src/core/ext/filters/client_channel/local_subchannel_pool.cc +27 -67
- data/src/core/ext/filters/client_channel/local_subchannel_pool.h +10 -9
- data/src/core/ext/filters/client_channel/resolver.cc +5 -5
- data/src/core/ext/filters/client_channel/resolver.h +1 -12
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +36 -45
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc +2 -2
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +3 -1
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +34 -50
- data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc +16 -14
- data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc +18 -15
- data/src/core/ext/filters/client_channel/resolver/google_c2p/google_c2p_resolver.cc +377 -0
- data/src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.cc +4 -4
- data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +307 -155
- data/src/core/ext/filters/client_channel/server_address.cc +9 -0
- data/src/core/ext/filters/client_channel/server_address.h +31 -0
- data/src/core/ext/filters/client_channel/subchannel.cc +69 -146
- data/src/core/ext/filters/client_channel/subchannel.h +63 -95
- data/src/core/ext/filters/client_channel/subchannel_pool_interface.cc +16 -2
- data/src/core/ext/filters/client_channel/subchannel_pool_interface.h +10 -8
- data/src/core/ext/filters/client_idle/client_idle_filter.cc +1 -1
- data/src/core/ext/filters/fault_injection/fault_injection_filter.cc +500 -0
- data/src/core/ext/filters/fault_injection/fault_injection_filter.h +39 -0
- data/src/core/ext/filters/fault_injection/service_config_parser.cc +189 -0
- data/src/core/ext/filters/fault_injection/service_config_parser.h +85 -0
- data/src/core/ext/filters/max_age/max_age_filter.cc +35 -32
- data/src/core/ext/filters/workarounds/workaround_cronet_compression_filter.cc +1 -1
- data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +2 -2
- data/src/core/ext/transport/chttp2/client/insecure/channel_create.cc +3 -2
- data/src/core/ext/transport/chttp2/client/insecure/channel_create_posix.cc +1 -1
- data/src/core/ext/transport/chttp2/client/secure/secure_channel_create.cc +3 -2
- data/src/core/ext/transport/chttp2/server/chttp2_server.cc +490 -178
- data/src/core/ext/transport/chttp2/server/chttp2_server.h +11 -2
- data/src/core/ext/transport/chttp2/server/insecure/server_chttp2.cc +11 -1
- data/src/core/ext/transport/chttp2/server/insecure/server_chttp2_posix.cc +1 -1
- data/src/core/ext/transport/chttp2/server/secure/server_secure_chttp2.cc +62 -18
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +39 -7
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.h +12 -1
- data/src/core/ext/transport/chttp2/transport/frame_data.cc +5 -1
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.cc +1 -1
- data/src/core/ext/transport/chttp2/transport/internal.h +1 -0
- data/src/core/ext/upb-generated/envoy/admin/v3/config_dump.upb.c +406 -0
- data/src/core/ext/upb-generated/envoy/admin/v3/config_dump.upb.h +1459 -0
- data/src/core/ext/upb-generated/envoy/config/accesslog/v3/accesslog.upb.c +0 -1
- data/src/core/ext/upb-generated/envoy/config/bootstrap/v3/bootstrap.upb.c +350 -0
- data/src/core/ext/upb-generated/envoy/config/bootstrap/v3/bootstrap.upb.h +1348 -0
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.c +11 -16
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.h +42 -59
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/outlier_detection.upb.c +3 -2
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/outlier_detection.upb.h +15 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.c +25 -1
- data/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.h +75 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/config_source.upb.c +2 -2
- data/src/core/ext/upb-generated/envoy/config/core/v3/config_source.upb.h +9 -9
- data/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.c +7 -7
- data/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.h +28 -13
- data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.c +6 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.h +25 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/proxy_protocol.upb.c +0 -1
- data/src/core/ext/upb-generated/envoy/config/core/v3/substitution_format_string.upb.c +11 -5
- data/src/core/ext/upb-generated/envoy/config/core/v3/substitution_format_string.upb.h +41 -7
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint.upb.c +0 -1
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.c +23 -21
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.h +122 -77
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener_components.upb.c +13 -9
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener_components.upb.h +37 -5
- data/src/core/ext/upb-generated/envoy/config/listener/v3/udp_listener_config.upb.c +0 -1
- data/src/core/ext/upb-generated/envoy/config/metrics/v3/stats.upb.c +144 -0
- data/src/core/ext/upb-generated/envoy/config/metrics/v3/stats.upb.h +488 -0
- data/src/core/ext/upb-generated/envoy/config/overload/v3/overload.upb.c +141 -0
- data/src/core/ext/upb-generated/envoy/config/overload/v3/overload.upb.h +452 -0
- data/src/core/ext/upb-generated/envoy/config/route/v3/route.upb.c +11 -9
- data/src/core/ext/upb-generated/envoy/config/route/v3/route.upb.h +44 -27
- data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.c +57 -16
- data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.h +150 -0
- data/src/core/ext/upb-generated/envoy/config/trace/v3/http_tracer.upb.c +0 -1
- data/src/core/ext/upb-generated/envoy/extensions/clusters/aggregate/v3/cluster.upb.c +29 -0
- data/src/core/ext/upb-generated/envoy/extensions/clusters/aggregate/v3/cluster.upb.h +67 -0
- data/src/core/ext/upb-generated/envoy/extensions/filters/common/fault/v3/fault.upb.c +79 -0
- data/src/core/ext/upb-generated/envoy/extensions/filters/common/fault/v3/fault.upb.h +268 -0
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/fault/v3/fault.upb.c +78 -0
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/fault/v3/fault.upb.h +281 -0
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/router/v3/router.upb.c +41 -0
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/router/v3/router.upb.h +113 -0
- data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.c +19 -21
- data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.h +64 -51
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/cert.upb.c +0 -1
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.c +16 -13
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.h +50 -18
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/secret.upb.c +4 -7
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/secret.upb.h +0 -17
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls.upb.c +0 -1
- data/src/core/ext/upb-generated/envoy/service/discovery/v3/discovery.upb.c +30 -23
- data/src/core/ext/upb-generated/envoy/service/discovery/v3/discovery.upb.h +85 -73
- data/src/core/ext/upb-generated/envoy/service/endpoint/v3/eds.upb.c +0 -3
- data/src/core/ext/upb-generated/envoy/service/listener/v3/lds.upb.c +0 -3
- data/src/core/ext/upb-generated/envoy/service/load_stats/v3/lrs.upb.c +0 -1
- data/src/core/ext/upb-generated/envoy/service/route/v3/rds.upb.c +0 -2
- data/src/core/ext/upb-generated/envoy/service/status/v3/csds.upb.c +93 -0
- data/src/core/ext/upb-generated/envoy/service/status/v3/csds.upb.h +323 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/node.upb.c +36 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/node.upb.h +90 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/string.upb.c +0 -1
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/struct.upb.c +46 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/struct.upb.h +124 -0
- data/src/core/ext/upb-generated/google/api/expr/v1alpha1/syntax.upb.c +21 -4
- data/src/core/ext/upb-generated/google/api/expr/v1alpha1/syntax.upb.h +29 -0
- data/src/core/ext/upb-generated/udpa/type/v1/typed_struct.upb.c +33 -0
- data/src/core/ext/upb-generated/udpa/type/v1/typed_struct.upb.h +77 -0
- data/src/core/ext/upb-generated/{udpa/core/v1 → xds/core/v3}/authority.upb.c +5 -5
- data/src/core/ext/upb-generated/xds/core/v3/authority.upb.h +60 -0
- data/src/core/ext/upb-generated/xds/core/v3/collection_entry.upb.c +52 -0
- data/src/core/ext/upb-generated/xds/core/v3/collection_entry.upb.h +143 -0
- data/src/core/ext/upb-generated/xds/core/v3/context_params.upb.c +42 -0
- data/src/core/ext/upb-generated/xds/core/v3/context_params.upb.h +84 -0
- data/src/core/ext/upb-generated/{udpa/core/v1 → xds/core/v3}/resource.upb.c +9 -9
- data/src/core/ext/upb-generated/xds/core/v3/resource.upb.h +94 -0
- data/src/core/ext/upb-generated/xds/core/v3/resource_locator.upb.c +54 -0
- data/src/core/ext/upb-generated/xds/core/v3/resource_locator.upb.h +166 -0
- data/src/core/ext/upb-generated/xds/core/v3/resource_name.upb.c +36 -0
- data/src/core/ext/upb-generated/xds/core/v3/resource_name.upb.h +85 -0
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/config_dump.upbdefs.c +354 -0
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/config_dump.upbdefs.h +140 -0
- data/src/core/ext/upbdefs-generated/envoy/config/accesslog/v3/accesslog.upbdefs.c +168 -171
- data/src/core/ext/upbdefs-generated/envoy/config/bootstrap/v3/bootstrap.upbdefs.c +383 -0
- data/src/core/ext/upbdefs-generated/envoy/config/bootstrap/v3/bootstrap.upbdefs.h +115 -0
- data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/cluster.upbdefs.c +405 -420
- data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/cluster.upbdefs.h +2 -2
- data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/outlier_detection.upbdefs.c +12 -9
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/base.upbdefs.c +177 -171
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/base.upbdefs.h +10 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/config_source.upbdefs.c +88 -88
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/health_check.upbdefs.c +153 -153
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/protocol.upbdefs.c +10 -7
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/protocol.upbdefs.h +5 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/proxy_protocol.upbdefs.c +4 -7
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/substitution_format_string.upbdefs.c +33 -20
- data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint.upbdefs.c +56 -59
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener.upbdefs.c +116 -111
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener_components.upbdefs.c +129 -121
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/udp_listener_config.upbdefs.c +21 -24
- data/src/core/ext/upbdefs-generated/envoy/config/metrics/v3/stats.upbdefs.c +141 -0
- data/src/core/ext/upbdefs-generated/envoy/config/metrics/v3/stats.upbdefs.h +70 -0
- data/src/core/ext/upbdefs-generated/envoy/config/overload/v3/overload.upbdefs.c +141 -0
- data/src/core/ext/upbdefs-generated/envoy/config/overload/v3/overload.upbdefs.h +70 -0
- data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route.upbdefs.c +17 -13
- data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.c +753 -724
- data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.h +10 -0
- data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/http_tracer.upbdefs.c +22 -25
- data/src/core/ext/upbdefs-generated/envoy/extensions/clusters/aggregate/v3/cluster.upbdefs.c +51 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/clusters/aggregate/v3/cluster.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/common/fault/v3/fault.upbdefs.c +102 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/common/fault/v3/fault.upbdefs.h +55 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/fault/v3/fault.upbdefs.c +120 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/fault/v3/fault.upbdefs.h +45 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/router/v3/router.upbdefs.c +76 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/router/v3/router.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.c +371 -377
- data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/cert.upbdefs.c +12 -16
- data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/common.upbdefs.c +112 -108
- data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/secret.upbdefs.c +45 -53
- data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/tls.upbdefs.c +177 -180
- data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/discovery.upbdefs.c +92 -102
- data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/discovery.upbdefs.h +5 -0
- data/src/core/ext/upbdefs-generated/envoy/service/endpoint/v3/eds.upbdefs.c +32 -42
- data/src/core/ext/upbdefs-generated/envoy/service/listener/v3/lds.upbdefs.c +30 -40
- data/src/core/ext/upbdefs-generated/envoy/service/load_stats/v3/lrs.upbdefs.c +4 -7
- data/src/core/ext/upbdefs-generated/envoy/service/route/v3/rds.upbdefs.c +38 -44
- data/src/core/ext/upbdefs-generated/envoy/service/status/v3/csds.upbdefs.c +130 -0
- data/src/core/ext/upbdefs-generated/envoy/service/status/v3/csds.upbdefs.h +50 -0
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/node.upbdefs.c +56 -0
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/node.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/string.upbdefs.c +30 -33
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/struct.upbdefs.c +63 -0
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/struct.upbdefs.h +40 -0
- data/src/core/ext/upbdefs-generated/google/protobuf/any.upbdefs.c +8 -7
- data/src/core/ext/upbdefs-generated/google/protobuf/descriptor.upbdefs.c +9 -9
- data/src/core/ext/upbdefs-generated/google/protobuf/duration.upbdefs.c +9 -8
- data/src/core/ext/upbdefs-generated/google/protobuf/empty.upbdefs.c +8 -8
- data/src/core/ext/upbdefs-generated/google/protobuf/struct.upbdefs.c +8 -8
- data/src/core/ext/upbdefs-generated/google/protobuf/timestamp.upbdefs.c +9 -8
- data/src/core/ext/upbdefs-generated/google/protobuf/wrappers.upbdefs.c +8 -8
- data/src/core/ext/upbdefs-generated/udpa/type/v1/typed_struct.upbdefs.c +44 -0
- data/src/core/ext/upbdefs-generated/udpa/type/v1/typed_struct.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/validate/validate.upbdefs.c +14 -11
- data/src/core/ext/upbdefs-generated/xds/core/v3/authority.upbdefs.c +42 -0
- data/src/core/ext/upbdefs-generated/xds/core/v3/authority.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/xds/core/v3/collection_entry.upbdefs.c +62 -0
- data/src/core/ext/upbdefs-generated/xds/core/v3/collection_entry.upbdefs.h +40 -0
- data/src/core/ext/upbdefs-generated/xds/core/v3/context_params.upbdefs.c +45 -0
- data/src/core/ext/upbdefs-generated/xds/core/v3/context_params.upbdefs.h +40 -0
- data/src/core/ext/upbdefs-generated/xds/core/v3/resource.upbdefs.c +49 -0
- data/src/core/ext/upbdefs-generated/xds/core/v3/resource.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/xds/core/v3/resource_locator.upbdefs.c +67 -0
- data/src/core/ext/upbdefs-generated/xds/core/v3/resource_locator.upbdefs.h +40 -0
- data/src/core/ext/upbdefs-generated/xds/core/v3/resource_name.upbdefs.c +50 -0
- data/src/core/ext/upbdefs-generated/xds/core/v3/resource_name.upbdefs.h +35 -0
- data/src/core/ext/xds/xds_api.cc +2149 -666
- data/src/core/ext/xds/xds_api.h +321 -119
- data/src/core/ext/xds/xds_bootstrap.cc +80 -45
- data/src/core/ext/xds/xds_bootstrap.h +17 -5
- data/src/core/ext/xds/xds_certificate_provider.cc +180 -74
- data/src/core/ext/xds/xds_certificate_provider.h +83 -44
- data/src/core/ext/xds/xds_client.cc +181 -34
- data/src/core/ext/xds/xds_client.h +29 -0
- data/src/core/ext/xds/xds_client_stats.cc +2 -1
- data/src/core/ext/xds/xds_client_stats.h +2 -2
- data/src/core/ext/xds/xds_http_fault_filter.cc +226 -0
- data/src/core/ext/xds/xds_http_fault_filter.h +63 -0
- data/src/core/ext/xds/xds_http_filters.cc +114 -0
- data/src/core/ext/xds/xds_http_filters.h +130 -0
- data/src/core/ext/xds/xds_server_config_fetcher.cc +425 -24
- data/src/core/lib/channel/channel_stack.cc +12 -0
- data/src/core/lib/channel/channel_stack.h +7 -0
- data/src/core/lib/channel/channelz.cc +92 -4
- data/src/core/lib/channel/channelz.h +30 -1
- data/src/core/lib/channel/channelz_registry.cc +14 -0
- data/src/core/lib/channel/handshaker.cc +2 -44
- data/src/core/lib/channel/handshaker.h +1 -18
- data/src/core/lib/channel/status_util.cc +12 -2
- data/src/core/lib/channel/status_util.h +5 -0
- data/src/core/lib/gpr/log.cc +6 -1
- data/src/core/lib/gpr/sync_abseil.cc +3 -6
- data/src/core/lib/gpr/sync_windows.cc +2 -2
- data/src/core/lib/gprpp/atomic.h +3 -3
- data/src/core/lib/gprpp/dual_ref_counted.h +3 -3
- data/src/core/lib/gprpp/mpscq.cc +2 -2
- data/src/core/lib/gprpp/ref_counted.h +1 -1
- data/src/core/lib/gprpp/ref_counted_ptr.h +2 -0
- data/src/core/lib/gprpp/sync.h +129 -40
- data/src/core/lib/gprpp/thd.h +1 -1
- data/src/core/lib/gprpp/time_util.cc +77 -0
- data/src/core/lib/gprpp/time_util.h +42 -0
- data/src/core/lib/http/httpcli_security_connector.cc +2 -2
- data/src/core/lib/iomgr/buffer_list.h +1 -1
- data/src/core/lib/iomgr/cfstream_handle.cc +2 -2
- data/src/core/lib/iomgr/error.h +1 -1
- data/src/core/lib/iomgr/ev_apple.cc +11 -8
- data/src/core/lib/iomgr/ev_epoll1_linux.cc +3 -3
- data/src/core/lib/iomgr/ev_epollex_linux.cc +4 -4
- data/src/core/lib/iomgr/ev_posix.cc +3 -3
- data/src/core/lib/iomgr/exec_ctx.cc +6 -2
- data/src/core/lib/iomgr/iomgr_posix.cc +0 -1
- data/src/core/lib/iomgr/iomgr_posix_cfstream.cc +0 -1
- data/src/core/lib/iomgr/resource_quota.cc +1 -1
- data/src/core/lib/iomgr/sockaddr_utils.cc +121 -1
- data/src/core/lib/iomgr/sockaddr_utils.h +25 -0
- data/src/core/lib/iomgr/socket_utils_common_posix.cc +1 -0
- data/src/core/lib/iomgr/tcp_client_posix.cc +1 -1
- data/src/core/lib/iomgr/tcp_posix.cc +5 -8
- data/src/core/lib/iomgr/tcp_uv.cc +2 -2
- data/src/core/lib/iomgr/timer_generic.cc +2 -2
- data/src/core/lib/iomgr/timer_manager.cc +1 -1
- data/src/core/lib/iomgr/wakeup_fd_nospecial.cc +1 -1
- data/src/core/lib/matchers/matchers.cc +339 -0
- data/src/core/lib/matchers/matchers.h +160 -0
- data/src/core/lib/security/credentials/alts/alts_credentials.cc +2 -1
- data/src/core/lib/security/credentials/alts/alts_credentials.h +1 -1
- data/src/core/lib/security/credentials/credentials.h +2 -1
- data/src/core/lib/security/credentials/external/aws_external_account_credentials.cc +1 -1
- data/src/core/lib/security/credentials/external/external_account_credentials.cc +2 -2
- data/src/core/lib/security/credentials/external/file_external_account_credentials.cc +1 -1
- data/src/core/lib/security/credentials/external/url_external_account_credentials.cc +1 -1
- data/src/core/lib/security/credentials/fake/fake_credentials.cc +1 -1
- data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +7 -6
- data/src/core/lib/security/credentials/insecure/insecure_credentials.cc +2 -2
- data/src/core/lib/security/credentials/jwt/json_token.cc +0 -3
- data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +0 -3
- data/src/core/lib/security/credentials/local/local_credentials.cc +2 -1
- data/src/core/lib/security/credentials/local/local_credentials.h +1 -1
- data/src/core/lib/security/credentials/ssl/ssl_credentials.cc +2 -1
- data/src/core/lib/security/credentials/ssl/ssl_credentials.h +1 -1
- data/src/core/lib/security/credentials/tls/tls_credentials.cc +2 -1
- data/src/core/lib/security/credentials/tls/tls_credentials.h +1 -1
- data/src/core/lib/security/credentials/xds/xds_credentials.cc +128 -59
- data/src/core/lib/security/credentials/xds/xds_credentials.h +3 -3
- data/src/core/lib/security/security_connector/insecure/insecure_security_connector.cc +5 -5
- data/src/core/lib/security/security_connector/ssl_utils.cc +9 -4
- data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +32 -14
- data/src/core/lib/security/transport/security_handshaker.cc +33 -5
- data/src/core/lib/security/transport/server_auth_filter.cc +7 -0
- data/src/core/lib/slice/slice_intern.cc +5 -6
- data/src/core/lib/surface/channel.h +3 -3
- data/src/core/lib/surface/completion_queue.cc +1 -1
- data/src/core/lib/surface/init.cc +13 -15
- data/src/core/lib/surface/lame_client.cc +38 -19
- data/src/core/lib/surface/lame_client.h +4 -3
- data/src/core/lib/surface/server.cc +43 -36
- data/src/core/lib/surface/server.h +76 -14
- data/src/core/lib/surface/version.cc +2 -2
- data/src/core/lib/transport/metadata.cc +6 -2
- data/src/core/lib/transport/metadata_batch.cc +27 -0
- data/src/core/lib/transport/metadata_batch.h +14 -0
- data/src/core/plugin_registry/grpc_plugin_registry.cc +12 -0
- data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +18 -24
- data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +16 -21
- data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.h +1 -1
- data/src/core/tsi/alts/handshaker/transport_security_common_api.cc +1 -3
- data/src/core/tsi/fake_transport_security.cc +11 -2
- data/src/core/tsi/ssl/session_cache/ssl_session.h +0 -3
- data/src/core/tsi/ssl/session_cache/ssl_session_cache.cc +0 -2
- data/src/core/tsi/ssl/session_cache/ssl_session_cache.h +2 -4
- data/src/core/tsi/ssl_transport_security.cc +0 -3
- data/src/core/tsi/ssl_transport_security.h +0 -3
- data/src/ruby/ext/grpc/extconf.rb +9 -1
- data/src/ruby/ext/grpc/rb_channel.c +10 -1
- data/src/ruby/ext/grpc/rb_channel_credentials.c +11 -1
- data/src/ruby/ext/grpc/rb_channel_credentials.h +4 -0
- data/src/ruby/ext/grpc/rb_compression_options.c +1 -1
- data/src/ruby/ext/grpc/rb_enable_cpp.cc +1 -1
- data/src/ruby/ext/grpc/rb_grpc.c +4 -0
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.c +2 -0
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +4 -1
- data/src/ruby/ext/grpc/rb_server.c +13 -1
- data/src/ruby/ext/grpc/rb_server_credentials.c +19 -3
- data/src/ruby/ext/grpc/rb_server_credentials.h +4 -0
- data/src/ruby/ext/grpc/rb_xds_channel_credentials.c +215 -0
- data/src/ruby/ext/grpc/rb_xds_channel_credentials.h +35 -0
- data/src/ruby/ext/grpc/rb_xds_server_credentials.c +169 -0
- data/src/ruby/ext/grpc/rb_xds_server_credentials.h +35 -0
- data/src/ruby/lib/grpc/generic/client_stub.rb +4 -2
- data/src/ruby/lib/grpc/version.rb +1 -1
- data/src/ruby/pb/src/proto/grpc/testing/messages_pb.rb +7 -0
- data/src/ruby/spec/call_spec.rb +1 -1
- data/src/ruby/spec/channel_credentials_spec.rb +32 -0
- data/src/ruby/spec/channel_spec.rb +17 -6
- data/src/ruby/spec/client_auth_spec.rb +27 -1
- data/src/ruby/spec/errors_spec.rb +1 -1
- data/src/ruby/spec/generic/active_call_spec.rb +2 -2
- data/src/ruby/spec/generic/client_stub_spec.rb +4 -4
- data/src/ruby/spec/generic/rpc_server_spec.rb +1 -1
- data/src/ruby/spec/server_credentials_spec.rb +25 -0
- data/src/ruby/spec/server_spec.rb +22 -0
- data/third_party/abseil-cpp/absl/synchronization/internal/graphcycles.cc +1 -0
- data/third_party/boringssl-with-bazel/err_data.c +715 -713
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_bitstr.c +3 -3
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_enum.c +2 -2
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_int.c +5 -5
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_object.c +3 -10
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_octet.c +3 -3
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_type.c +4 -2
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_utctm.c +2 -2
- data/third_party/boringssl-with-bazel/src/crypto/asn1/asn1_lib.c +15 -14
- data/third_party/boringssl-with-bazel/src/crypto/asn1/asn1_locl.h +30 -0
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_dec.c +28 -79
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_enc.c +39 -85
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_fre.c +5 -16
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_new.c +10 -61
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_typ.c +0 -2
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_utl.c +2 -2
- data/third_party/boringssl-with-bazel/src/crypto/bio/socket_helper.c +4 -0
- data/third_party/boringssl-with-bazel/src/crypto/blake2/blake2.c +158 -0
- data/third_party/boringssl-with-bazel/src/crypto/bn_extra/bn_asn1.c +3 -10
- data/third_party/boringssl-with-bazel/src/crypto/bytestring/ber.c +8 -9
- data/third_party/boringssl-with-bazel/src/crypto/bytestring/cbs.c +60 -45
- data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_chacha20poly1305.c +6 -81
- data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/internal.h +87 -0
- data/third_party/boringssl-with-bazel/src/crypto/cpu-aarch64-win.c +41 -0
- data/third_party/boringssl-with-bazel/src/crypto/cpu-arm-linux.c +11 -2
- data/third_party/boringssl-with-bazel/src/crypto/cpu-arm.c +3 -3
- data/third_party/boringssl-with-bazel/src/crypto/{dh → dh_extra}/dh_asn1.c +0 -0
- data/third_party/boringssl-with-bazel/src/crypto/{dh → dh_extra}/params.c +179 -0
- data/third_party/boringssl-with-bazel/src/crypto/digest_extra/digest_extra.c +25 -0
- data/third_party/boringssl-with-bazel/src/crypto/ec_extra/ec_asn1.c +2 -17
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bcm.c +3 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/bn.c +13 -20
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/div.c +2 -3
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/internal.h +9 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/cipher.c +21 -13
- data/third_party/boringssl-with-bazel/src/crypto/{dh → fipsmodule/dh}/check.c +0 -0
- data/third_party/boringssl-with-bazel/src/crypto/{dh → fipsmodule/dh}/dh.c +136 -213
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec.c +12 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec_key.c +9 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/internal.h +28 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/rand.c +135 -43
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/urandom.c +0 -7
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/rsa_impl.c +51 -32
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/self_check/self_check.c +147 -0
- data/third_party/boringssl-with-bazel/src/crypto/hpke/hpke.c +18 -29
- data/third_party/boringssl-with-bazel/src/crypto/hpke/internal.h +13 -4
- data/third_party/boringssl-with-bazel/src/crypto/poly1305/poly1305.c +10 -7
- data/third_party/boringssl-with-bazel/src/crypto/poly1305/poly1305_arm.c +13 -11
- data/third_party/boringssl-with-bazel/src/crypto/poly1305/poly1305_vec.c +4 -0
- data/third_party/boringssl-with-bazel/src/crypto/rand_extra/passive.c +34 -0
- data/third_party/boringssl-with-bazel/src/crypto/rand_extra/rand_extra.c +4 -0
- data/third_party/boringssl-with-bazel/src/crypto/stack/stack.c +7 -13
- data/third_party/boringssl-with-bazel/src/crypto/x509/rsa_pss.c +5 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_cmp.c +1 -29
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_ext.c +10 -7
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_r2x.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_set.c +8 -8
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_v3.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509cset.c +29 -23
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_attrib.c +22 -17
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_crl.c +1 -2
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_pkey.c +2 -2
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_x509.c +39 -4
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_x509a.c +2 -2
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_akey.c +3 -3
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_alt.c +11 -10
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_bitst.c +3 -3
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_conf.c +25 -25
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_cpols.c +2 -2
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_enum.c +2 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_genn.c +40 -20
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_ia5.c +3 -4
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_lib.c +25 -36
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_prn.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_skey.c +6 -6
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_utl.c +6 -6
- data/third_party/boringssl-with-bazel/src/include/openssl/arm_arch.h +3 -3
- data/third_party/boringssl-with-bazel/src/include/openssl/asn1.h +652 -545
- data/third_party/boringssl-with-bazel/src/include/openssl/asn1t.h +0 -167
- data/third_party/boringssl-with-bazel/src/include/openssl/base.h +10 -5
- data/third_party/boringssl-with-bazel/src/include/openssl/blake2.h +62 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/bytestring.h +22 -7
- data/third_party/boringssl-with-bazel/src/include/openssl/cipher.h +19 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/cpu.h +22 -32
- data/third_party/boringssl-with-bazel/src/include/openssl/dh.h +56 -26
- data/third_party/boringssl-with-bazel/src/include/openssl/digest.h +1 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/ec.h +15 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/evp.h +12 -2
- data/third_party/boringssl-with-bazel/src/include/openssl/rand.h +3 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/span.h +2 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/ssl.h +67 -33
- data/third_party/boringssl-with-bazel/src/include/openssl/tls1.h +27 -8
- data/third_party/boringssl-with-bazel/src/include/openssl/x509.h +287 -99
- data/third_party/boringssl-with-bazel/src/include/openssl/x509v3.h +139 -36
- data/third_party/boringssl-with-bazel/src/ssl/handshake.cc +4 -3
- data/third_party/boringssl-with-bazel/src/ssl/handshake_client.cc +11 -20
- data/third_party/boringssl-with-bazel/src/ssl/handshake_server.cc +10 -5
- data/third_party/boringssl-with-bazel/src/ssl/internal.h +37 -16
- data/third_party/boringssl-with-bazel/src/ssl/s3_lib.cc +0 -1
- data/third_party/boringssl-with-bazel/src/ssl/ssl_asn1.cc +7 -8
- data/third_party/boringssl-with-bazel/src/ssl/ssl_lib.cc +20 -14
- data/third_party/boringssl-with-bazel/src/ssl/ssl_session.cc +7 -8
- data/third_party/boringssl-with-bazel/src/ssl/ssl_transcript.cc +2 -2
- data/third_party/boringssl-with-bazel/src/ssl/t1_enc.cc +5 -7
- data/third_party/boringssl-with-bazel/src/ssl/t1_lib.cc +362 -50
- data/third_party/boringssl-with-bazel/src/ssl/tls13_client.cc +2 -2
- data/third_party/boringssl-with-bazel/src/ssl/tls13_enc.cc +48 -15
- data/third_party/boringssl-with-bazel/src/ssl/tls13_server.cc +66 -24
- data/third_party/xxhash/xxhash.h +5443 -0
- metadata +140 -84
- data/src/core/ext/upb-generated/udpa/core/v1/authority.upb.h +0 -60
- data/src/core/ext/upb-generated/udpa/core/v1/collection_entry.upb.c +0 -52
- data/src/core/ext/upb-generated/udpa/core/v1/collection_entry.upb.h +0 -143
- data/src/core/ext/upb-generated/udpa/core/v1/context_params.upb.c +0 -42
- data/src/core/ext/upb-generated/udpa/core/v1/context_params.upb.h +0 -84
- data/src/core/ext/upb-generated/udpa/core/v1/resource.upb.h +0 -94
- data/src/core/ext/upb-generated/udpa/core/v1/resource_locator.upb.c +0 -54
- data/src/core/ext/upb-generated/udpa/core/v1/resource_locator.upb.h +0 -173
- data/src/core/ext/upb-generated/udpa/core/v1/resource_name.upb.c +0 -36
- data/src/core/ext/upb-generated/udpa/core/v1/resource_name.upb.h +0 -92
- data/src/core/ext/upbdefs-generated/udpa/core/v1/authority.upbdefs.c +0 -42
- data/src/core/ext/upbdefs-generated/udpa/core/v1/authority.upbdefs.h +0 -35
- data/src/core/ext/upbdefs-generated/udpa/core/v1/collection_entry.upbdefs.c +0 -62
- data/src/core/ext/upbdefs-generated/udpa/core/v1/collection_entry.upbdefs.h +0 -40
- data/src/core/ext/upbdefs-generated/udpa/core/v1/context_params.upbdefs.c +0 -45
- data/src/core/ext/upbdefs-generated/udpa/core/v1/context_params.upbdefs.h +0 -40
- data/src/core/ext/upbdefs-generated/udpa/core/v1/resource.upbdefs.c +0 -49
- data/src/core/ext/upbdefs-generated/udpa/core/v1/resource.upbdefs.h +0 -35
- data/src/core/ext/upbdefs-generated/udpa/core/v1/resource_locator.upbdefs.c +0 -68
- data/src/core/ext/upbdefs-generated/udpa/core/v1/resource_locator.upbdefs.h +0 -40
- data/src/core/ext/upbdefs-generated/udpa/core/v1/resource_name.upbdefs.c +0 -51
- data/src/core/ext/upbdefs-generated/udpa/core/v1/resource_name.upbdefs.h +0 -35
- data/src/core/lib/iomgr/iomgr_posix.h +0 -26
- data/src/core/lib/security/authorization/authorization_engine.cc +0 -177
- data/src/core/lib/security/authorization/authorization_engine.h +0 -84
- data/src/core/lib/security/authorization/evaluate_args.cc +0 -148
- data/src/core/lib/security/authorization/evaluate_args.h +0 -59
- data/src/core/lib/security/authorization/mock_cel/activation.h +0 -57
- data/src/core/lib/security/authorization/mock_cel/cel_expr_builder_factory.h +0 -44
- data/src/core/lib/security/authorization/mock_cel/cel_expression.h +0 -69
- data/src/core/lib/security/authorization/mock_cel/cel_value.h +0 -97
- data/src/core/lib/security/authorization/mock_cel/evaluator_core.h +0 -67
- data/src/core/lib/security/authorization/mock_cel/flat_expr_builder.h +0 -57
- data/third_party/abseil-cpp/absl/container/flat_hash_set.h +0 -504
- data/third_party/upb/upb/json_decode.c +0 -1443
- data/third_party/upb/upb/json_decode.h +0 -23
- data/third_party/upb/upb/json_encode.c +0 -713
- data/third_party/upb/upb/json_encode.h +0 -36
@@ -31,44 +31,34 @@ namespace grpc_core {
|
|
31
31
|
|
32
32
|
class XdsCertificateProvider : public grpc_tls_certificate_provider {
|
33
33
|
public:
|
34
|
-
XdsCertificateProvider(
|
35
|
-
absl::string_view root_cert_name,
|
36
|
-
RefCountedPtr<grpc_tls_certificate_distributor> root_cert_distributor,
|
37
|
-
absl::string_view identity_cert_name,
|
38
|
-
RefCountedPtr<grpc_tls_certificate_distributor> identity_cert_distributor,
|
39
|
-
std::vector<XdsApi::StringMatcher> san_matchers);
|
40
|
-
|
34
|
+
XdsCertificateProvider();
|
41
35
|
~XdsCertificateProvider() override;
|
42
36
|
|
43
|
-
void UpdateRootCertNameAndDistributor(
|
44
|
-
absl::string_view root_cert_name,
|
45
|
-
RefCountedPtr<grpc_tls_certificate_distributor> root_cert_distributor);
|
46
|
-
void UpdateIdentityCertNameAndDistributor(
|
47
|
-
absl::string_view identity_cert_name,
|
48
|
-
RefCountedPtr<grpc_tls_certificate_distributor>
|
49
|
-
identity_cert_distributor);
|
50
|
-
void UpdateSubjectAlternativeNameMatchers(
|
51
|
-
std::vector<XdsApi::StringMatcher> matchers);
|
52
|
-
|
53
37
|
grpc_core::RefCountedPtr<grpc_tls_certificate_distributor> distributor()
|
54
38
|
const override {
|
55
39
|
return distributor_;
|
56
40
|
}
|
57
41
|
|
58
|
-
bool ProvidesRootCerts()
|
59
|
-
|
60
|
-
|
61
|
-
|
42
|
+
bool ProvidesRootCerts(const std::string& cert_name);
|
43
|
+
void UpdateRootCertNameAndDistributor(
|
44
|
+
const std::string& cert_name, absl::string_view root_cert_name,
|
45
|
+
RefCountedPtr<grpc_tls_certificate_distributor> root_cert_distributor);
|
62
46
|
|
63
|
-
bool ProvidesIdentityCerts()
|
64
|
-
|
65
|
-
|
66
|
-
|
47
|
+
bool ProvidesIdentityCerts(const std::string& cert_name);
|
48
|
+
void UpdateIdentityCertNameAndDistributor(
|
49
|
+
const std::string& cert_name, absl::string_view identity_cert_name,
|
50
|
+
RefCountedPtr<grpc_tls_certificate_distributor>
|
51
|
+
identity_cert_distributor);
|
67
52
|
|
68
|
-
std::
|
69
|
-
|
70
|
-
|
71
|
-
|
53
|
+
bool GetRequireClientCertificate(const std::string& cert_name);
|
54
|
+
// Updating \a require_client_certificate for a non-existing \a cert_name has
|
55
|
+
// no effect.
|
56
|
+
void UpdateRequireClientCertificate(const std::string& cert_name,
|
57
|
+
bool require_client_certificate);
|
58
|
+
|
59
|
+
std::vector<StringMatcher> GetSanMatchers(const std::string& cluster);
|
60
|
+
void UpdateSubjectAlternativeNameMatchers(
|
61
|
+
const std::string& cluster, std::vector<StringMatcher> matchers);
|
72
62
|
|
73
63
|
grpc_arg MakeChannelArg() const;
|
74
64
|
|
@@ -76,14 +66,71 @@ class XdsCertificateProvider : public grpc_tls_certificate_provider {
|
|
76
66
|
const grpc_channel_args* args);
|
77
67
|
|
78
68
|
private:
|
69
|
+
class ClusterCertificateState {
|
70
|
+
public:
|
71
|
+
explicit ClusterCertificateState(
|
72
|
+
XdsCertificateProvider* xds_certificate_provider)
|
73
|
+
: xds_certificate_provider_(xds_certificate_provider) {}
|
74
|
+
|
75
|
+
~ClusterCertificateState();
|
76
|
+
|
77
|
+
// Returns true if the certs aren't being watched and there are no
|
78
|
+
// distributors configured.
|
79
|
+
bool IsSafeToRemove() const;
|
80
|
+
|
81
|
+
bool ProvidesRootCerts() const { return root_cert_distributor_ != nullptr; }
|
82
|
+
bool ProvidesIdentityCerts() const {
|
83
|
+
return identity_cert_distributor_ != nullptr;
|
84
|
+
}
|
85
|
+
|
86
|
+
void UpdateRootCertNameAndDistributor(
|
87
|
+
const std::string& cert_name, absl::string_view root_cert_name,
|
88
|
+
RefCountedPtr<grpc_tls_certificate_distributor> root_cert_distributor);
|
89
|
+
void UpdateIdentityCertNameAndDistributor(
|
90
|
+
const std::string& cert_name, absl::string_view identity_cert_name,
|
91
|
+
RefCountedPtr<grpc_tls_certificate_distributor>
|
92
|
+
identity_cert_distributor);
|
93
|
+
|
94
|
+
void UpdateRootCertWatcher(
|
95
|
+
const std::string& cert_name,
|
96
|
+
grpc_tls_certificate_distributor* root_cert_distributor);
|
97
|
+
void UpdateIdentityCertWatcher(
|
98
|
+
const std::string& cert_name,
|
99
|
+
grpc_tls_certificate_distributor* identity_cert_distributor);
|
100
|
+
|
101
|
+
bool require_client_certificate() const {
|
102
|
+
return require_client_certificate_;
|
103
|
+
}
|
104
|
+
void set_require_client_certificate(bool require_client_certificate) {
|
105
|
+
require_client_certificate_ = require_client_certificate;
|
106
|
+
}
|
107
|
+
|
108
|
+
void WatchStatusCallback(const std::string& cert_name,
|
109
|
+
bool root_being_watched,
|
110
|
+
bool identity_being_watched);
|
111
|
+
|
112
|
+
private:
|
113
|
+
XdsCertificateProvider* xds_certificate_provider_;
|
114
|
+
bool watching_root_certs_ = false;
|
115
|
+
bool watching_identity_certs_ = false;
|
116
|
+
std::string root_cert_name_;
|
117
|
+
std::string identity_cert_name_;
|
118
|
+
RefCountedPtr<grpc_tls_certificate_distributor> root_cert_distributor_;
|
119
|
+
RefCountedPtr<grpc_tls_certificate_distributor> identity_cert_distributor_;
|
120
|
+
grpc_tls_certificate_distributor::TlsCertificatesWatcherInterface*
|
121
|
+
root_cert_watcher_ = nullptr;
|
122
|
+
grpc_tls_certificate_distributor::TlsCertificatesWatcherInterface*
|
123
|
+
identity_cert_watcher_ = nullptr;
|
124
|
+
bool require_client_certificate_ = false;
|
125
|
+
};
|
126
|
+
|
79
127
|
void WatchStatusCallback(std::string cert_name, bool root_being_watched,
|
80
128
|
bool identity_being_watched);
|
81
|
-
void UpdateRootCertWatcher(
|
82
|
-
grpc_tls_certificate_distributor* root_cert_distributor);
|
83
|
-
void UpdateIdentityCertWatcher(
|
84
|
-
grpc_tls_certificate_distributor* identity_cert_distributor);
|
85
129
|
|
86
130
|
Mutex mu_;
|
131
|
+
std::map<std::string /*cert_name*/, std::unique_ptr<ClusterCertificateState>>
|
132
|
+
certificate_state_map_;
|
133
|
+
|
87
134
|
// Use a separate mutex for san_matchers_ to avoid deadlocks since
|
88
135
|
// san_matchers_ needs to be accessed when a handshake is being done and we
|
89
136
|
// run into a possible deadlock scenario if using the same mutex. The mutex
|
@@ -93,18 +140,10 @@ class XdsCertificateProvider : public grpc_tls_certificate_provider {
|
|
93
140
|
// -> HandshakeManager::Add() -> SecurityHandshaker::DoHandshake() ->
|
94
141
|
// subject_alternative_names_matchers()
|
95
142
|
Mutex san_matchers_mu_;
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
std::string identity_cert_name_;
|
100
|
-
RefCountedPtr<grpc_tls_certificate_distributor> root_cert_distributor_;
|
101
|
-
RefCountedPtr<grpc_tls_certificate_distributor> identity_cert_distributor_;
|
102
|
-
std::vector<XdsApi::StringMatcher> san_matchers_;
|
143
|
+
std::map<std::string /*cluster_name*/, std::vector<StringMatcher>>
|
144
|
+
san_matcher_map_;
|
145
|
+
|
103
146
|
RefCountedPtr<grpc_tls_certificate_distributor> distributor_;
|
104
|
-
grpc_tls_certificate_distributor::TlsCertificatesWatcherInterface*
|
105
|
-
root_cert_watcher_ = nullptr;
|
106
|
-
grpc_tls_certificate_distributor::TlsCertificatesWatcherInterface*
|
107
|
-
identity_cert_watcher_ = nullptr;
|
108
147
|
};
|
109
148
|
|
110
149
|
} // namespace grpc_core
|
@@ -35,9 +35,11 @@
|
|
35
35
|
#include "src/core/ext/filters/client_channel/client_channel.h"
|
36
36
|
#include "src/core/ext/filters/client_channel/service_config.h"
|
37
37
|
#include "src/core/ext/xds/xds_api.h"
|
38
|
+
#include "src/core/ext/xds/xds_bootstrap.h"
|
38
39
|
#include "src/core/ext/xds/xds_channel_args.h"
|
39
40
|
#include "src/core/ext/xds/xds_client.h"
|
40
41
|
#include "src/core/ext/xds/xds_client_stats.h"
|
42
|
+
#include "src/core/ext/xds/xds_http_filters.h"
|
41
43
|
#include "src/core/lib/backoff/backoff.h"
|
42
44
|
#include "src/core/lib/channel/channel_args.h"
|
43
45
|
#include "src/core/lib/channel/channel_stack.h"
|
@@ -72,6 +74,7 @@ namespace {
|
|
72
74
|
Mutex* g_mu = nullptr;
|
73
75
|
const grpc_channel_args* g_channel_args = nullptr;
|
74
76
|
XdsClient* g_xds_client = nullptr;
|
77
|
+
char* g_fallback_bootstrap_config = nullptr;
|
75
78
|
|
76
79
|
} // namespace
|
77
80
|
|
@@ -193,28 +196,34 @@ class XdsClient::ChannelState::AdsCallState
|
|
193
196
|
"timeout obtaining resource {type=%s name=%s} from xds server",
|
194
197
|
type_url_, name_)
|
195
198
|
.c_str());
|
199
|
+
watcher_error = grpc_error_set_int(
|
200
|
+
watcher_error, GRPC_ERROR_INT_GRPC_STATUS, GRPC_STATUS_UNAVAILABLE);
|
196
201
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_xds_client_trace)) {
|
197
202
|
gpr_log(GPR_INFO, "[xds_client %p] %s", ads_calld_->xds_client(),
|
198
203
|
grpc_error_string(watcher_error));
|
199
204
|
}
|
200
205
|
if (type_url_ == XdsApi::kLdsTypeUrl) {
|
201
206
|
ListenerState& state = ads_calld_->xds_client()->listener_map_[name_];
|
207
|
+
state.meta.client_status = XdsApi::ResourceMetadata::DOES_NOT_EXIST;
|
202
208
|
for (const auto& p : state.watchers) {
|
203
209
|
p.first->OnError(GRPC_ERROR_REF(watcher_error));
|
204
210
|
}
|
205
211
|
} else if (type_url_ == XdsApi::kRdsTypeUrl) {
|
206
212
|
RouteConfigState& state =
|
207
213
|
ads_calld_->xds_client()->route_config_map_[name_];
|
214
|
+
state.meta.client_status = XdsApi::ResourceMetadata::DOES_NOT_EXIST;
|
208
215
|
for (const auto& p : state.watchers) {
|
209
216
|
p.first->OnError(GRPC_ERROR_REF(watcher_error));
|
210
217
|
}
|
211
218
|
} else if (type_url_ == XdsApi::kCdsTypeUrl) {
|
212
219
|
ClusterState& state = ads_calld_->xds_client()->cluster_map_[name_];
|
220
|
+
state.meta.client_status = XdsApi::ResourceMetadata::DOES_NOT_EXIST;
|
213
221
|
for (const auto& p : state.watchers) {
|
214
222
|
p.first->OnError(GRPC_ERROR_REF(watcher_error));
|
215
223
|
}
|
216
224
|
} else if (type_url_ == XdsApi::kEdsTypeUrl) {
|
217
225
|
EndpointState& state = ads_calld_->xds_client()->endpoint_map_[name_];
|
226
|
+
state.meta.client_status = XdsApi::ResourceMetadata::DOES_NOT_EXIST;
|
218
227
|
for (const auto& p : state.watchers) {
|
219
228
|
p.first->OnError(GRPC_ERROR_REF(watcher_error));
|
220
229
|
}
|
@@ -250,10 +259,14 @@ class XdsClient::ChannelState::AdsCallState
|
|
250
259
|
|
251
260
|
void SendMessageLocked(const std::string& type_url);
|
252
261
|
|
253
|
-
void AcceptLdsUpdate(
|
254
|
-
|
255
|
-
void
|
256
|
-
|
262
|
+
void AcceptLdsUpdate(std::string version, grpc_millis update_time,
|
263
|
+
XdsApi::LdsUpdateMap lds_update_map);
|
264
|
+
void AcceptRdsUpdate(std::string version, grpc_millis update_time,
|
265
|
+
XdsApi::RdsUpdateMap rds_update_map);
|
266
|
+
void AcceptCdsUpdate(std::string version, grpc_millis update_time,
|
267
|
+
XdsApi::CdsUpdateMap cds_update_map);
|
268
|
+
void AcceptEdsUpdate(std::string version, grpc_millis update_time,
|
269
|
+
XdsApi::EdsUpdateMap eds_update_map);
|
257
270
|
|
258
271
|
static void OnRequestSent(void* arg, grpc_error* error);
|
259
272
|
void OnRequestSentLocked(grpc_error* error);
|
@@ -502,7 +515,7 @@ XdsClient::ChannelState::LrsCallState* XdsClient::ChannelState::lrs_calld()
|
|
502
515
|
}
|
503
516
|
|
504
517
|
bool XdsClient::ChannelState::HasActiveAdsCall() const {
|
505
|
-
return ads_calld_->calld() != nullptr;
|
518
|
+
return ads_calld_ != nullptr && ads_calld_->calld() != nullptr;
|
506
519
|
}
|
507
520
|
|
508
521
|
void XdsClient::ChannelState::MaybeStartLrsCall() {
|
@@ -865,7 +878,24 @@ bool XdsClient::ChannelState::AdsCallState::HasSubscribedResources() const {
|
|
865
878
|
return false;
|
866
879
|
}
|
867
880
|
|
881
|
+
namespace {
|
882
|
+
|
883
|
+
// Build a resource metadata struct for ADS result accepting methods and CSDS.
|
884
|
+
XdsApi::ResourceMetadata CreateResourceMetadataAcked(
|
885
|
+
std::string serialized_proto, std::string version,
|
886
|
+
grpc_millis update_time) {
|
887
|
+
XdsApi::ResourceMetadata resource_metadata;
|
888
|
+
resource_metadata.serialized_proto = std::move(serialized_proto);
|
889
|
+
resource_metadata.update_time = update_time;
|
890
|
+
resource_metadata.version = std::move(version);
|
891
|
+
resource_metadata.client_status = XdsApi::ResourceMetadata::ACKED;
|
892
|
+
return resource_metadata;
|
893
|
+
}
|
894
|
+
|
895
|
+
} // namespace
|
896
|
+
|
868
897
|
void XdsClient::ChannelState::AdsCallState::AcceptLdsUpdate(
|
898
|
+
std::string version, grpc_millis update_time,
|
869
899
|
XdsApi::LdsUpdateMap lds_update_map) {
|
870
900
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_xds_client_trace)) {
|
871
901
|
gpr_log(GPR_INFO,
|
@@ -877,23 +907,17 @@ void XdsClient::ChannelState::AdsCallState::AcceptLdsUpdate(
|
|
877
907
|
std::set<std::string> rds_resource_names_seen;
|
878
908
|
for (auto& p : lds_update_map) {
|
879
909
|
const std::string& listener_name = p.first;
|
880
|
-
XdsApi::LdsUpdate& lds_update = p.second;
|
910
|
+
XdsApi::LdsUpdate& lds_update = p.second.resource;
|
881
911
|
auto& state = lds_state.subscribed_resources[listener_name];
|
882
912
|
if (state != nullptr) state->Finish();
|
883
913
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_xds_client_trace)) {
|
884
|
-
gpr_log(GPR_INFO, "[xds_client %p] LDS resource %s:
|
885
|
-
|
886
|
-
(!lds_update.route_config_name.empty()
|
887
|
-
? lds_update.route_config_name.c_str()
|
888
|
-
: "<inlined>"));
|
889
|
-
if (lds_update.rds_update.has_value()) {
|
890
|
-
gpr_log(GPR_INFO, "RouteConfiguration: %s",
|
891
|
-
lds_update.rds_update->ToString().c_str());
|
892
|
-
}
|
914
|
+
gpr_log(GPR_INFO, "[xds_client %p] LDS resource %s: %s", xds_client(),
|
915
|
+
listener_name.c_str(), lds_update.ToString().c_str());
|
893
916
|
}
|
894
917
|
// Record the RDS resource names seen.
|
895
|
-
if (!lds_update.route_config_name.empty()) {
|
896
|
-
rds_resource_names_seen.insert(
|
918
|
+
if (!lds_update.http_connection_manager.route_config_name.empty()) {
|
919
|
+
rds_resource_names_seen.insert(
|
920
|
+
lds_update.http_connection_manager.route_config_name);
|
897
921
|
}
|
898
922
|
// Ignore identical update.
|
899
923
|
ListenerState& listener_state = xds_client()->listener_map_[listener_name];
|
@@ -909,6 +933,8 @@ void XdsClient::ChannelState::AdsCallState::AcceptLdsUpdate(
|
|
909
933
|
}
|
910
934
|
// Update the listener state.
|
911
935
|
listener_state.update = std::move(lds_update);
|
936
|
+
listener_state.meta = CreateResourceMetadataAcked(
|
937
|
+
std::move(p.second.serialized_proto), version, update_time);
|
912
938
|
// Notify watchers.
|
913
939
|
for (const auto& p : listener_state.watchers) {
|
914
940
|
p.first->OnListenerChanged(*listener_state.update);
|
@@ -953,6 +979,7 @@ void XdsClient::ChannelState::AdsCallState::AcceptLdsUpdate(
|
|
953
979
|
}
|
954
980
|
|
955
981
|
void XdsClient::ChannelState::AdsCallState::AcceptRdsUpdate(
|
982
|
+
std::string version, grpc_millis update_time,
|
956
983
|
XdsApi::RdsUpdateMap rds_update_map) {
|
957
984
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_xds_client_trace)) {
|
958
985
|
gpr_log(GPR_INFO,
|
@@ -963,7 +990,7 @@ void XdsClient::ChannelState::AdsCallState::AcceptRdsUpdate(
|
|
963
990
|
auto& rds_state = state_map_[XdsApi::kRdsTypeUrl];
|
964
991
|
for (auto& p : rds_update_map) {
|
965
992
|
const std::string& route_config_name = p.first;
|
966
|
-
XdsApi::RdsUpdate& rds_update = p.second;
|
993
|
+
XdsApi::RdsUpdate& rds_update = p.second.resource;
|
967
994
|
auto& state = rds_state.subscribed_resources[route_config_name];
|
968
995
|
if (state != nullptr) state->Finish();
|
969
996
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_xds_client_trace)) {
|
@@ -984,6 +1011,8 @@ void XdsClient::ChannelState::AdsCallState::AcceptRdsUpdate(
|
|
984
1011
|
}
|
985
1012
|
// Update the cache.
|
986
1013
|
route_config_state.update = std::move(rds_update);
|
1014
|
+
route_config_state.meta = CreateResourceMetadataAcked(
|
1015
|
+
std::move(p.second.serialized_proto), version, update_time);
|
987
1016
|
// Notify all watchers.
|
988
1017
|
for (const auto& p : route_config_state.watchers) {
|
989
1018
|
p.first->OnRouteConfigChanged(*route_config_state.update);
|
@@ -992,6 +1021,7 @@ void XdsClient::ChannelState::AdsCallState::AcceptRdsUpdate(
|
|
992
1021
|
}
|
993
1022
|
|
994
1023
|
void XdsClient::ChannelState::AdsCallState::AcceptCdsUpdate(
|
1024
|
+
std::string version, grpc_millis update_time,
|
995
1025
|
XdsApi::CdsUpdateMap cds_update_map) {
|
996
1026
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_xds_client_trace)) {
|
997
1027
|
gpr_log(GPR_INFO,
|
@@ -1003,7 +1033,7 @@ void XdsClient::ChannelState::AdsCallState::AcceptCdsUpdate(
|
|
1003
1033
|
std::set<std::string> eds_resource_names_seen;
|
1004
1034
|
for (auto& p : cds_update_map) {
|
1005
1035
|
const char* cluster_name = p.first.c_str();
|
1006
|
-
XdsApi::CdsUpdate& cds_update = p.second;
|
1036
|
+
XdsApi::CdsUpdate& cds_update = p.second.resource;
|
1007
1037
|
auto& state = cds_state.subscribed_resources[cluster_name];
|
1008
1038
|
if (state != nullptr) state->Finish();
|
1009
1039
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_xds_client_trace)) {
|
@@ -1027,6 +1057,8 @@ void XdsClient::ChannelState::AdsCallState::AcceptCdsUpdate(
|
|
1027
1057
|
}
|
1028
1058
|
// Update the cluster state.
|
1029
1059
|
cluster_state.update = std::move(cds_update);
|
1060
|
+
cluster_state.meta = CreateResourceMetadataAcked(
|
1061
|
+
std::move(p.second.serialized_proto), version, update_time);
|
1030
1062
|
// Notify all watchers.
|
1031
1063
|
for (const auto& p : cluster_state.watchers) {
|
1032
1064
|
p.first->OnClusterChanged(cluster_state.update.value());
|
@@ -1070,6 +1102,7 @@ void XdsClient::ChannelState::AdsCallState::AcceptCdsUpdate(
|
|
1070
1102
|
}
|
1071
1103
|
|
1072
1104
|
void XdsClient::ChannelState::AdsCallState::AcceptEdsUpdate(
|
1105
|
+
std::string version, grpc_millis update_time,
|
1073
1106
|
XdsApi::EdsUpdateMap eds_update_map) {
|
1074
1107
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_xds_client_trace)) {
|
1075
1108
|
gpr_log(GPR_INFO,
|
@@ -1080,7 +1113,7 @@ void XdsClient::ChannelState::AdsCallState::AcceptEdsUpdate(
|
|
1080
1113
|
auto& eds_state = state_map_[XdsApi::kEdsTypeUrl];
|
1081
1114
|
for (auto& p : eds_update_map) {
|
1082
1115
|
const char* eds_service_name = p.first.c_str();
|
1083
|
-
XdsApi::EdsUpdate& eds_update = p.second;
|
1116
|
+
XdsApi::EdsUpdate& eds_update = p.second.resource;
|
1084
1117
|
auto& state = eds_state.subscribed_resources[eds_service_name];
|
1085
1118
|
if (state != nullptr) state->Finish();
|
1086
1119
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_xds_client_trace)) {
|
@@ -1101,6 +1134,8 @@ void XdsClient::ChannelState::AdsCallState::AcceptEdsUpdate(
|
|
1101
1134
|
}
|
1102
1135
|
// Update the cluster state.
|
1103
1136
|
endpoint_state.update = std::move(eds_update);
|
1137
|
+
endpoint_state.meta = CreateResourceMetadataAcked(
|
1138
|
+
std::move(p.second.serialized_proto), version, update_time);
|
1104
1139
|
// Notify all watchers.
|
1105
1140
|
for (const auto& p : endpoint_state.watchers) {
|
1106
1141
|
p.first->OnEndpointChanged(endpoint_state.update.value());
|
@@ -1167,7 +1202,8 @@ bool XdsClient::ChannelState::AdsCallState::OnResponseReceivedLocked() {
|
|
1167
1202
|
recv_message_payload_ = nullptr;
|
1168
1203
|
// Parse and validate the response.
|
1169
1204
|
XdsApi::AdsParseResult result = xds_client()->api_.ParseAdsResponse(
|
1170
|
-
|
1205
|
+
chand()->server_, response_slice,
|
1206
|
+
ResourceNamesForRequest(XdsApi::kLdsTypeUrl),
|
1171
1207
|
ResourceNamesForRequest(XdsApi::kRdsTypeUrl),
|
1172
1208
|
ResourceNamesForRequest(XdsApi::kCdsTypeUrl),
|
1173
1209
|
ResourceNamesForRequest(XdsApi::kEdsTypeUrl));
|
@@ -1179,11 +1215,14 @@ bool XdsClient::ChannelState::AdsCallState::OnResponseReceivedLocked() {
|
|
1179
1215
|
xds_client(), grpc_error_string(result.parse_error));
|
1180
1216
|
GRPC_ERROR_UNREF(result.parse_error);
|
1181
1217
|
} else {
|
1218
|
+
grpc_millis update_time = grpc_core::ExecCtx::Get()->Now();
|
1182
1219
|
// Update nonce.
|
1183
1220
|
auto& state = state_map_[result.type_url];
|
1184
1221
|
state.nonce = std::move(result.nonce);
|
1185
1222
|
// NACK or ACK the response.
|
1186
1223
|
if (result.parse_error != GRPC_ERROR_NONE) {
|
1224
|
+
xds_client()->UpdateResourceMetadataWithFailedParseResult(update_time,
|
1225
|
+
result);
|
1187
1226
|
GRPC_ERROR_UNREF(state.error);
|
1188
1227
|
state.error = result.parse_error;
|
1189
1228
|
// NACK unacceptable update.
|
@@ -1197,13 +1236,17 @@ bool XdsClient::ChannelState::AdsCallState::OnResponseReceivedLocked() {
|
|
1197
1236
|
seen_response_ = true;
|
1198
1237
|
// Accept the ADS response according to the type_url.
|
1199
1238
|
if (result.type_url == XdsApi::kLdsTypeUrl) {
|
1200
|
-
AcceptLdsUpdate(
|
1239
|
+
AcceptLdsUpdate(result.version, update_time,
|
1240
|
+
std::move(result.lds_update_map));
|
1201
1241
|
} else if (result.type_url == XdsApi::kRdsTypeUrl) {
|
1202
|
-
AcceptRdsUpdate(
|
1242
|
+
AcceptRdsUpdate(result.version, update_time,
|
1243
|
+
std::move(result.rds_update_map));
|
1203
1244
|
} else if (result.type_url == XdsApi::kCdsTypeUrl) {
|
1204
|
-
AcceptCdsUpdate(
|
1245
|
+
AcceptCdsUpdate(result.version, update_time,
|
1246
|
+
std::move(result.cds_update_map));
|
1205
1247
|
} else if (result.type_url == XdsApi::kEdsTypeUrl) {
|
1206
|
-
AcceptEdsUpdate(
|
1248
|
+
AcceptEdsUpdate(result.version, update_time,
|
1249
|
+
std::move(result.eds_update_map));
|
1207
1250
|
}
|
1208
1251
|
xds_client()->resource_version_map_[result.type_url] =
|
1209
1252
|
std::move(result.version);
|
@@ -1740,8 +1783,8 @@ XdsClient::XdsClient(grpc_error** error)
|
|
1740
1783
|
: nullptr),
|
1741
1784
|
request_timeout_(GetRequestTimeout()),
|
1742
1785
|
interested_parties_(grpc_pollset_set_create()),
|
1743
|
-
bootstrap_(
|
1744
|
-
|
1786
|
+
bootstrap_(XdsBootstrap::Create(this, &grpc_xds_client_trace,
|
1787
|
+
g_fallback_bootstrap_config, error)),
|
1745
1788
|
certificate_provider_store_(MakeOrphanable<CertificateProviderStore>(
|
1746
1789
|
bootstrap_ == nullptr
|
1747
1790
|
? CertificateProviderStore::PluginDefinitionMap()
|
@@ -2198,25 +2241,109 @@ XdsApi::ClusterLoadReportMap XdsClient::BuildLoadReportSnapshotLocked(
|
|
2198
2241
|
return snapshot_map;
|
2199
2242
|
}
|
2200
2243
|
|
2244
|
+
void XdsClient::UpdateResourceMetadataWithFailedParseResult(
|
2245
|
+
grpc_millis update_time, const XdsApi::AdsParseResult& result) {
|
2246
|
+
// ADS update is rejected and the resource names in the failed update is
|
2247
|
+
// available.
|
2248
|
+
absl::string_view details = grpc_error_string(result.parse_error);
|
2249
|
+
for (auto& name : result.resource_names_failed) {
|
2250
|
+
XdsApi::ResourceMetadata* resource_metadata = nullptr;
|
2251
|
+
if (result.type_url == XdsApi::kLdsTypeUrl) {
|
2252
|
+
auto it = listener_map_.find(name);
|
2253
|
+
if (it != listener_map_.end()) {
|
2254
|
+
resource_metadata = &it->second.meta;
|
2255
|
+
}
|
2256
|
+
} else if (result.type_url == XdsApi::kRdsTypeUrl) {
|
2257
|
+
auto it = route_config_map_.find(name);
|
2258
|
+
if (route_config_map_.find(name) != route_config_map_.end()) {
|
2259
|
+
resource_metadata = &it->second.meta;
|
2260
|
+
}
|
2261
|
+
} else if (result.type_url == XdsApi::kCdsTypeUrl) {
|
2262
|
+
auto it = cluster_map_.find(name);
|
2263
|
+
if (cluster_map_.find(name) != cluster_map_.end()) {
|
2264
|
+
resource_metadata = &it->second.meta;
|
2265
|
+
}
|
2266
|
+
} else if (result.type_url == XdsApi::kEdsTypeUrl) {
|
2267
|
+
auto it = endpoint_map_.find(name);
|
2268
|
+
if (endpoint_map_.find(name) != endpoint_map_.end()) {
|
2269
|
+
resource_metadata = &it->second.meta;
|
2270
|
+
}
|
2271
|
+
}
|
2272
|
+
if (resource_metadata == nullptr) {
|
2273
|
+
return;
|
2274
|
+
}
|
2275
|
+
resource_metadata->client_status = XdsApi::ResourceMetadata::NACKED;
|
2276
|
+
resource_metadata->failed_version = result.version;
|
2277
|
+
resource_metadata->failed_details = std::string(details);
|
2278
|
+
resource_metadata->failed_update_time = update_time;
|
2279
|
+
}
|
2280
|
+
}
|
2281
|
+
|
2282
|
+
std::string XdsClient::DumpClientConfigBinary() {
|
2283
|
+
MutexLock lock(&mu_);
|
2284
|
+
XdsApi::ResourceTypeMetadataMap resource_type_metadata_map;
|
2285
|
+
// Update per-xds-type version if available, this version corresponding to the
|
2286
|
+
// last successful ADS update version.
|
2287
|
+
for (auto& p : resource_version_map_) {
|
2288
|
+
resource_type_metadata_map[p.first].version = p.second;
|
2289
|
+
}
|
2290
|
+
// Collect resource metadata from listeners
|
2291
|
+
auto& lds_map =
|
2292
|
+
resource_type_metadata_map[XdsApi::kLdsTypeUrl].resource_metadata_map;
|
2293
|
+
for (auto& p : listener_map_) {
|
2294
|
+
lds_map[p.first] = &p.second.meta;
|
2295
|
+
}
|
2296
|
+
// Collect resource metadata from route configs
|
2297
|
+
auto& rds_map =
|
2298
|
+
resource_type_metadata_map[XdsApi::kRdsTypeUrl].resource_metadata_map;
|
2299
|
+
for (auto& p : route_config_map_) {
|
2300
|
+
rds_map[p.first] = &p.second.meta;
|
2301
|
+
}
|
2302
|
+
// Collect resource metadata from clusters
|
2303
|
+
auto& cds_map =
|
2304
|
+
resource_type_metadata_map[XdsApi::kCdsTypeUrl].resource_metadata_map;
|
2305
|
+
for (auto& p : cluster_map_) {
|
2306
|
+
cds_map[p.first] = &p.second.meta;
|
2307
|
+
}
|
2308
|
+
// Collect resource metadata from endpoints
|
2309
|
+
auto& eds_map =
|
2310
|
+
resource_type_metadata_map[XdsApi::kEdsTypeUrl].resource_metadata_map;
|
2311
|
+
for (auto& p : endpoint_map_) {
|
2312
|
+
eds_map[p.first] = &p.second.meta;
|
2313
|
+
}
|
2314
|
+
// Assemble config dump messages
|
2315
|
+
return api_.AssembleClientConfig(resource_type_metadata_map);
|
2316
|
+
}
|
2317
|
+
|
2201
2318
|
//
|
2202
2319
|
// accessors for global state
|
2203
2320
|
//
|
2204
2321
|
|
2205
|
-
void XdsClientGlobalInit() {
|
2322
|
+
void XdsClientGlobalInit() {
|
2323
|
+
g_mu = new Mutex;
|
2324
|
+
XdsHttpFilterRegistry::Init();
|
2325
|
+
}
|
2206
2326
|
|
2207
2327
|
void XdsClientGlobalShutdown() {
|
2208
2328
|
delete g_mu;
|
2209
2329
|
g_mu = nullptr;
|
2330
|
+
gpr_free(g_fallback_bootstrap_config);
|
2331
|
+
g_fallback_bootstrap_config = nullptr;
|
2332
|
+
XdsHttpFilterRegistry::Shutdown();
|
2210
2333
|
}
|
2211
2334
|
|
2212
2335
|
RefCountedPtr<XdsClient> XdsClient::GetOrCreate(grpc_error** error) {
|
2213
|
-
|
2214
|
-
|
2215
|
-
|
2216
|
-
if (
|
2336
|
+
RefCountedPtr<XdsClient> xds_client;
|
2337
|
+
{
|
2338
|
+
MutexLock lock(g_mu);
|
2339
|
+
if (g_xds_client != nullptr) {
|
2340
|
+
auto xds_client = g_xds_client->RefIfNonZero();
|
2341
|
+
if (xds_client != nullptr) return xds_client;
|
2342
|
+
}
|
2343
|
+
xds_client = MakeRefCounted<XdsClient>(error);
|
2344
|
+
if (*error != GRPC_ERROR_NONE) return nullptr;
|
2345
|
+
g_xds_client = xds_client.get();
|
2217
2346
|
}
|
2218
|
-
auto xds_client = MakeRefCounted<XdsClient>(error);
|
2219
|
-
g_xds_client = xds_client.get();
|
2220
2347
|
return xds_client;
|
2221
2348
|
}
|
2222
2349
|
|
@@ -2232,6 +2359,26 @@ void UnsetGlobalXdsClientForTest() {
|
|
2232
2359
|
g_xds_client = nullptr;
|
2233
2360
|
}
|
2234
2361
|
|
2362
|
+
void SetXdsFallbackBootstrapConfig(const char* config) {
|
2363
|
+
MutexLock lock(g_mu);
|
2364
|
+
gpr_free(g_fallback_bootstrap_config);
|
2365
|
+
g_fallback_bootstrap_config = gpr_strdup(config);
|
2366
|
+
}
|
2367
|
+
|
2235
2368
|
} // namespace internal
|
2236
2369
|
|
2237
2370
|
} // namespace grpc_core
|
2371
|
+
|
2372
|
+
// The returned bytes may contain NULL(0), so we can't use c-string.
|
2373
|
+
grpc_slice grpc_dump_xds_configs() {
|
2374
|
+
grpc_core::ApplicationCallbackExecCtx callback_exec_ctx;
|
2375
|
+
grpc_core::ExecCtx exec_ctx;
|
2376
|
+
grpc_error* error = GRPC_ERROR_NONE;
|
2377
|
+
auto xds_client = grpc_core::XdsClient::GetOrCreate(&error);
|
2378
|
+
if (error != GRPC_ERROR_NONE) {
|
2379
|
+
// If we isn't using xDS, just return an empty string.
|
2380
|
+
GRPC_ERROR_UNREF(error);
|
2381
|
+
return grpc_empty_slice();
|
2382
|
+
}
|
2383
|
+
return grpc_slice_from_cpp_string(xds_client->DumpClientConfigBinary());
|
2384
|
+
}
|