gitextract__6xnhcut/ ├── .gemini/ │ └── config.yaml ├── .github/ │ ├── ISSUE_TEMPLATE/ │ │ ├── bug.md │ │ ├── feature.md │ │ └── question.md │ ├── codecov.yml │ ├── pull_request_template.md │ └── workflows/ │ ├── codeql-analysis.yml │ ├── coverage.yml │ ├── deps.yml │ ├── lock.yml │ ├── pr-validation.yml │ ├── release.yml │ ├── stale.yml │ └── testing.yml ├── AUTHORS ├── CODE-OF-CONDUCT.md ├── CONTRIBUTING.md ├── Documentation/ │ ├── anti-patterns.md │ ├── benchmark.md │ ├── compression.md │ ├── concurrency.md │ ├── encoding.md │ ├── grpc-auth-support.md │ ├── grpc-metadata.md │ ├── keepalive.md │ ├── log_levels.md │ ├── proxy.md │ ├── rpc-errors.md │ ├── server-reflection-tutorial.md │ └── versioning.md ├── GOVERNANCE.md ├── LICENSE ├── MAINTAINERS.md ├── Makefile ├── NOTICE.txt ├── README.md ├── SECURITY.md ├── admin/ │ ├── admin.go │ ├── admin_test.go │ └── test/ │ ├── admin_test.go │ └── utils.go ├── attributes/ │ ├── attributes.go │ └── attributes_test.go ├── authz/ │ ├── audit/ │ │ ├── audit_logger.go │ │ ├── audit_logging_test.go │ │ └── stdout/ │ │ ├── stdout_logger.go │ │ └── stdout_logger_test.go │ ├── grpc_authz_end2end_test.go │ ├── grpc_authz_server_interceptors.go │ ├── grpc_authz_server_interceptors_test.go │ ├── rbac_translator.go │ └── rbac_translator_test.go ├── backoff/ │ └── backoff.go ├── backoff.go ├── balancer/ │ ├── balancer.go │ ├── base/ │ │ ├── balancer.go │ │ ├── balancer_test.go │ │ └── base.go │ ├── conn_state_evaluator.go │ ├── conn_state_evaluator_test.go │ ├── endpointsharding/ │ │ ├── endpointsharding.go │ │ ├── endpointsharding_ext_test.go │ │ └── endpointsharding_test.go │ ├── grpclb/ │ │ ├── grpc_lb_v1/ │ │ │ ├── load_balancer.pb.go │ │ │ └── load_balancer_grpc.pb.go │ │ ├── grpclb.go │ │ ├── grpclb_config.go │ │ ├── grpclb_config_test.go │ │ ├── grpclb_picker.go │ │ ├── grpclb_remote_balancer.go │ │ ├── grpclb_test.go │ │ ├── grpclb_util.go │ │ ├── grpclb_util_test.go │ │ └── state/ │ │ └── state.go │ ├── lazy/ │ │ ├── lazy.go │ │ └── lazy_ext_test.go │ ├── leastrequest/ │ │ ├── leastrequest.go │ │ └── leastrequest_test.go │ ├── pickfirst/ │ │ ├── internal/ │ │ │ └── internal.go │ │ ├── metrics_test.go │ │ ├── pickfirst.go │ │ ├── pickfirst_ext_test.go │ │ ├── pickfirst_test.go │ │ └── pickfirstleaf/ │ │ └── pickfirstleaf.go │ ├── randomsubsetting/ │ │ ├── randomsubsetting.go │ │ └── randomsubsetting_test.go │ ├── ringhash/ │ │ ├── config.go │ │ ├── config_test.go │ │ ├── logging.go │ │ ├── picker.go │ │ ├── picker_test.go │ │ ├── ring.go │ │ ├── ring_test.go │ │ ├── ringhash.go │ │ ├── ringhash_e2e_test.go │ │ └── ringhash_test.go │ ├── rls/ │ │ ├── balancer.go │ │ ├── balancer_test.go │ │ ├── cache.go │ │ ├── cache_test.go │ │ ├── child_policy.go │ │ ├── config.go │ │ ├── config_test.go │ │ ├── control_channel.go │ │ ├── control_channel_test.go │ │ ├── helpers_test.go │ │ ├── internal/ │ │ │ ├── adaptive/ │ │ │ │ ├── adaptive.go │ │ │ │ ├── adaptive_test.go │ │ │ │ ├── lookback.go │ │ │ │ └── lookback_test.go │ │ │ ├── keys/ │ │ │ │ ├── builder.go │ │ │ │ └── builder_test.go │ │ │ └── test/ │ │ │ └── e2e/ │ │ │ ├── e2e.go │ │ │ ├── rls_child_policy.go │ │ │ └── rls_lb_config.go │ │ ├── metrics_test.go │ │ ├── picker.go │ │ └── picker_test.go │ ├── roundrobin/ │ │ └── roundrobin.go │ ├── subconn.go │ ├── weightedroundrobin/ │ │ ├── balancer.go │ │ ├── balancer_test.go │ │ ├── config.go │ │ ├── internal/ │ │ │ └── internal.go │ │ ├── logging.go │ │ ├── metrics_test.go │ │ └── scheduler.go │ └── weightedtarget/ │ ├── logging.go │ ├── weightedaggregator/ │ │ └── aggregator.go │ ├── weightedtarget.go │ ├── weightedtarget_config.go │ ├── weightedtarget_config_test.go │ └── weightedtarget_test.go ├── balancer_wrapper.go ├── balancer_wrapper_test.go ├── benchmark/ │ ├── benchmain/ │ │ └── main.go │ ├── benchmark.go │ ├── benchresult/ │ │ └── main.go │ ├── client/ │ │ └── main.go │ ├── flags/ │ │ ├── flags.go │ │ └── flags_test.go │ ├── latency/ │ │ ├── latency.go │ │ └── latency_test.go │ ├── primitives/ │ │ ├── code_string_test.go │ │ ├── context_test.go │ │ ├── primitives_test.go │ │ ├── safe_config_selector_test.go │ │ └── syncmap_test.go │ ├── run_bench.sh │ ├── server/ │ │ └── main.go │ ├── stats/ │ │ ├── curve.go │ │ ├── histogram.go │ │ └── stats.go │ └── worker/ │ ├── benchmark_client.go │ ├── benchmark_server.go │ └── main.go ├── binarylog/ │ ├── binarylog_end2end_test.go │ ├── grpc_binarylog_v1/ │ │ └── binarylog.pb.go │ └── sink.go ├── call.go ├── channelz/ │ ├── channelz.go │ ├── grpc_channelz_v1/ │ │ ├── channelz.pb.go │ │ └── channelz_grpc.pb.go │ ├── internal/ │ │ └── protoconv/ │ │ ├── channel.go │ │ ├── server.go │ │ ├── socket.go │ │ ├── sockopt_linux.go │ │ ├── sockopt_nonlinux.go │ │ ├── subchannel.go │ │ └── util.go │ └── service/ │ ├── service.go │ ├── service_sktopt_test.go │ └── service_test.go ├── clientconn.go ├── clientconn_authority_test.go ├── clientconn_parsed_target_test.go ├── clientconn_test.go ├── cmd/ │ └── protoc-gen-go-grpc/ │ ├── README.md │ ├── go.mod │ ├── go.sum │ ├── grpc.go │ ├── main.go │ ├── protoc-gen-go-grpc_test.sh │ └── unimpl_test.go ├── codec.go ├── codec_test.go ├── codes/ │ ├── code_string.go │ ├── codes.go │ └── codes_test.go ├── connectivity/ │ └── connectivity.go ├── credentials/ │ ├── alts/ │ │ ├── alts.go │ │ ├── alts_test.go │ │ ├── internal/ │ │ │ ├── authinfo/ │ │ │ │ ├── authinfo.go │ │ │ │ └── authinfo_test.go │ │ │ ├── common.go │ │ │ ├── conn/ │ │ │ │ ├── aeadrekey.go │ │ │ │ ├── aeadrekey_test.go │ │ │ │ ├── aes128gcm.go │ │ │ │ ├── aes128gcm_test.go │ │ │ │ ├── aes128gcmrekey.go │ │ │ │ ├── aes128gcmrekey_test.go │ │ │ │ ├── common.go │ │ │ │ ├── counter.go │ │ │ │ ├── counter_test.go │ │ │ │ ├── record.go │ │ │ │ ├── record_test.go │ │ │ │ └── utils.go │ │ │ ├── handshaker/ │ │ │ │ ├── handshaker.go │ │ │ │ ├── handshaker_test.go │ │ │ │ └── service/ │ │ │ │ ├── service.go │ │ │ │ └── service_test.go │ │ │ ├── proto/ │ │ │ │ └── grpc_gcp/ │ │ │ │ ├── altscontext.pb.go │ │ │ │ ├── handshaker.pb.go │ │ │ │ ├── handshaker_grpc.pb.go │ │ │ │ └── transport_security_common.pb.go │ │ │ └── testutil/ │ │ │ └── testutil.go │ │ ├── utils.go │ │ └── utils_test.go │ ├── credentials.go │ ├── credentials_ext_test.go │ ├── credentials_test.go │ ├── google/ │ │ ├── google.go │ │ ├── google_test.go │ │ ├── xds.go │ │ └── xds_test.go │ ├── insecure/ │ │ └── insecure.go │ ├── jwt/ │ │ ├── doc.go │ │ ├── file_reader.go │ │ ├── file_reader_test.go │ │ ├── token_file_call_creds.go │ │ ├── token_file_call_creds_ext_test.go │ │ └── token_file_call_creds_test.go │ ├── local/ │ │ ├── local.go │ │ └── local_test.go │ ├── oauth/ │ │ ├── oauth.go │ │ └── oauth_test.go │ ├── sts/ │ │ ├── sts.go │ │ └── sts_test.go │ ├── tls/ │ │ └── certprovider/ │ │ ├── distributor.go │ │ ├── distributor_test.go │ │ ├── pemfile/ │ │ │ ├── builder.go │ │ │ ├── builder_test.go │ │ │ ├── watcher.go │ │ │ └── watcher_test.go │ │ ├── provider.go │ │ ├── store.go │ │ └── store_test.go │ ├── tls.go │ ├── tls_ext_test.go │ └── xds/ │ ├── xds.go │ ├── xds_client_test.go │ └── xds_server_test.go ├── default_dial_option_server_option_test.go ├── dial_test.go ├── dialoptions.go ├── doc.go ├── encoding/ │ ├── compressor_test.go │ ├── encoding.go │ ├── encoding_test.go │ ├── encoding_v2.go │ ├── gzip/ │ │ └── gzip.go │ ├── internal/ │ │ └── internal.go │ └── proto/ │ ├── proto.go │ ├── proto_benchmark_test.go │ └── proto_test.go ├── examples/ │ ├── README.md │ ├── data/ │ │ ├── data.go │ │ ├── rbac/ │ │ │ └── policy.json │ │ └── x509/ │ │ ├── README.md │ │ ├── ca_cert.pem │ │ ├── ca_key.pem │ │ ├── client_ca_cert.pem │ │ ├── client_ca_key.pem │ │ ├── client_cert.pem │ │ ├── client_key.pem │ │ ├── create.sh │ │ ├── openssl.cnf │ │ ├── server_cert.pem │ │ └── server_key.pem │ ├── examples_test.sh │ ├── features/ │ │ ├── advancedtls/ │ │ │ ├── README.md │ │ │ ├── client/ │ │ │ │ └── main.go │ │ │ ├── creds/ │ │ │ │ ├── ca_cert.pem │ │ │ │ ├── ca_key.pem │ │ │ │ ├── client_cert.pem │ │ │ │ ├── client_cert_revoked.pem │ │ │ │ ├── client_key.pem │ │ │ │ ├── crl/ │ │ │ │ │ └── client_revoked.crl │ │ │ │ ├── localhost-openssl.cnf │ │ │ │ ├── openssl-ca.cnf │ │ │ │ ├── server_cert.pem │ │ │ │ ├── server_cert_revoked.pem │ │ │ │ ├── server_key.pem │ │ │ │ └── server_revoked.crl │ │ │ ├── generate.sh │ │ │ ├── localhost-openssl.cnf │ │ │ ├── openssl-ca.cnf │ │ │ └── server/ │ │ │ └── main.go │ │ ├── authentication/ │ │ │ ├── README.md │ │ │ ├── client/ │ │ │ │ └── main.go │ │ │ └── server/ │ │ │ └── main.go │ │ ├── authz/ │ │ │ ├── README.md │ │ │ ├── client/ │ │ │ │ └── main.go │ │ │ ├── server/ │ │ │ │ └── main.go │ │ │ └── token/ │ │ │ └── token.go │ │ ├── cancellation/ │ │ │ ├── README.md │ │ │ ├── client/ │ │ │ │ └── main.go │ │ │ └── server/ │ │ │ └── main.go │ │ ├── compression/ │ │ │ ├── README.md │ │ │ ├── client/ │ │ │ │ └── main.go │ │ │ └── server/ │ │ │ └── main.go │ │ ├── csm_observability/ │ │ │ ├── README.md │ │ │ ├── client/ │ │ │ │ ├── Dockerfile │ │ │ │ └── main.go │ │ │ └── server/ │ │ │ ├── Dockerfile │ │ │ └── main.go │ │ ├── customloadbalancer/ │ │ │ ├── README.md │ │ │ ├── client/ │ │ │ │ ├── customroundrobin/ │ │ │ │ │ └── customroundrobin.go │ │ │ │ └── main.go │ │ │ └── server/ │ │ │ └── main.go │ │ ├── deadline/ │ │ │ ├── client/ │ │ │ │ └── main.go │ │ │ └── server/ │ │ │ └── main.go │ │ ├── debugging/ │ │ │ ├── README.md │ │ │ ├── client/ │ │ │ │ └── main.go │ │ │ └── server/ │ │ │ └── main.go │ │ ├── dualstack/ │ │ │ ├── README.md │ │ │ ├── client/ │ │ │ │ └── main.go │ │ │ └── server/ │ │ │ └── main.go │ │ ├── encryption/ │ │ │ ├── ALTS/ │ │ │ │ ├── client/ │ │ │ │ │ └── main.go │ │ │ │ └── server/ │ │ │ │ └── main.go │ │ │ ├── README.md │ │ │ ├── TLS/ │ │ │ │ ├── client/ │ │ │ │ │ └── main.go │ │ │ │ └── server/ │ │ │ │ └── main.go │ │ │ └── mTLS/ │ │ │ ├── client/ │ │ │ │ └── main.go │ │ │ └── server/ │ │ │ └── main.go │ │ ├── error_details/ │ │ │ ├── README.md │ │ │ ├── client/ │ │ │ │ └── main.go │ │ │ └── server/ │ │ │ └── main.go │ │ ├── error_handling/ │ │ │ ├── README.md │ │ │ ├── client/ │ │ │ │ └── main.go │ │ │ └── server/ │ │ │ └── main.go │ │ ├── flow_control/ │ │ │ ├── README.md │ │ │ ├── client/ │ │ │ │ └── main.go │ │ │ └── server/ │ │ │ └── main.go │ │ ├── gracefulstop/ │ │ │ ├── README.md │ │ │ ├── client/ │ │ │ │ └── main.go │ │ │ └── server/ │ │ │ └── main.go │ │ ├── health/ │ │ │ ├── README.md │ │ │ ├── client/ │ │ │ │ └── main.go │ │ │ └── server/ │ │ │ └── main.go │ │ ├── interceptor/ │ │ │ ├── README.md │ │ │ ├── client/ │ │ │ │ └── main.go │ │ │ └── server/ │ │ │ └── main.go │ │ ├── keepalive/ │ │ │ ├── README.md │ │ │ ├── client/ │ │ │ │ └── main.go │ │ │ └── server/ │ │ │ └── main.go │ │ ├── load_balancing/ │ │ │ ├── README.md │ │ │ ├── client/ │ │ │ │ └── main.go │ │ │ └── server/ │ │ │ └── main.go │ │ ├── metadata/ │ │ │ ├── README.md │ │ │ ├── client/ │ │ │ │ └── main.go │ │ │ └── server/ │ │ │ └── main.go │ │ ├── metadata_interceptor/ │ │ │ ├── README.md │ │ │ ├── client/ │ │ │ │ └── main.go │ │ │ └── server/ │ │ │ └── main.go │ │ ├── multiplex/ │ │ │ ├── README.md │ │ │ ├── client/ │ │ │ │ └── main.go │ │ │ └── server/ │ │ │ └── main.go │ │ ├── name_resolving/ │ │ │ ├── README.md │ │ │ ├── client/ │ │ │ │ └── main.go │ │ │ └── server/ │ │ │ └── main.go │ │ ├── observability/ │ │ │ ├── README.md │ │ │ ├── client/ │ │ │ │ ├── clientConfig.json │ │ │ │ └── main.go │ │ │ └── server/ │ │ │ ├── main.go │ │ │ └── serverConfig.json │ │ ├── opentelemetry/ │ │ │ ├── README.md │ │ │ ├── client/ │ │ │ │ └── main.go │ │ │ └── server/ │ │ │ └── main.go │ │ ├── orca/ │ │ │ ├── README.md │ │ │ ├── client/ │ │ │ │ └── main.go │ │ │ └── server/ │ │ │ └── main.go │ │ ├── proto/ │ │ │ └── echo/ │ │ │ ├── echo.pb.go │ │ │ ├── echo.proto │ │ │ └── echo_grpc.pb.go │ │ ├── reflection/ │ │ │ ├── README.md │ │ │ └── server/ │ │ │ └── main.go │ │ ├── retry/ │ │ │ ├── README.md │ │ │ ├── client/ │ │ │ │ └── main.go │ │ │ └── server/ │ │ │ └── main.go │ │ ├── stats_monitoring/ │ │ │ ├── README.md │ │ │ ├── client/ │ │ │ │ └── main.go │ │ │ ├── server/ │ │ │ │ └── main.go │ │ │ └── statshandler/ │ │ │ └── handler.go │ │ ├── unix_abstract/ │ │ │ ├── README.md │ │ │ ├── client/ │ │ │ │ └── main.go │ │ │ └── server/ │ │ │ └── main.go │ │ ├── wait_for_ready/ │ │ │ ├── README.md │ │ │ └── main.go │ │ └── xds/ │ │ ├── README.md │ │ ├── client/ │ │ │ └── main.go │ │ └── server/ │ │ └── main.go │ ├── go.mod │ ├── go.sum │ ├── gotutorial.md │ ├── helloworld/ │ │ ├── README.md │ │ ├── greeter_client/ │ │ │ └── main.go │ │ ├── greeter_server/ │ │ │ └── main.go │ │ └── helloworld/ │ │ ├── helloworld.pb.go │ │ ├── helloworld.proto │ │ └── helloworld_grpc.pb.go │ └── route_guide/ │ ├── README.md │ ├── client/ │ │ └── client.go │ ├── routeguide/ │ │ ├── route_guide.pb.go │ │ ├── route_guide.proto │ │ └── route_guide_grpc.pb.go │ ├── server/ │ │ └── server.go │ └── testdata/ │ └── route_guide_db.json ├── experimental/ │ ├── credentials/ │ │ ├── credentials_test.go │ │ ├── internal/ │ │ │ ├── spiffe.go │ │ │ ├── spiffe_test.go │ │ │ ├── syscallconn.go │ │ │ └── syscallconn_test.go │ │ ├── tls.go │ │ └── tls_ext_test.go │ ├── experimental.go │ ├── opentelemetry/ │ │ └── trace_options.go │ ├── shared_buffer_pool_test.go │ └── stats/ │ ├── metricregistry.go │ ├── metricregistry_test.go │ └── metrics.go ├── gcp/ │ └── observability/ │ ├── config.go │ ├── exporting.go │ ├── go.mod │ ├── go.sum │ ├── logging.go │ ├── logging_test.go │ ├── observability.go │ ├── observability_test.go │ └── opencensus.go ├── go.mod ├── go.sum ├── grpc_test.go ├── grpclog/ │ ├── component.go │ ├── glogger/ │ │ └── glogger.go │ ├── grpclog.go │ ├── internal/ │ │ ├── grpclog.go │ │ ├── logger.go │ │ ├── loggerv2.go │ │ └── loggerv2_test.go │ ├── logger.go │ └── loggerv2.go ├── health/ │ ├── client.go │ ├── client_test.go │ ├── grpc_health_v1/ │ │ ├── health.pb.go │ │ └── health_grpc.pb.go │ ├── logging.go │ ├── producer.go │ ├── server.go │ ├── server_internal_test.go │ └── server_test.go ├── interceptor.go ├── internal/ │ ├── admin/ │ │ └── admin.go │ ├── backoff/ │ │ └── backoff.go │ ├── balancer/ │ │ ├── gracefulswitch/ │ │ │ ├── config.go │ │ │ ├── gracefulswitch.go │ │ │ └── gracefulswitch_test.go │ │ ├── nop/ │ │ │ └── nop.go │ │ ├── stub/ │ │ │ └── stub.go │ │ └── weight/ │ │ ├── weight.go │ │ └── weight_test.go │ ├── balancergroup/ │ │ ├── balancergroup.go │ │ ├── balancergroup_test.go │ │ └── balancerstateaggregator.go │ ├── balancerload/ │ │ └── load.go │ ├── binarylog/ │ │ ├── binarylog.go │ │ ├── binarylog_test.go │ │ ├── binarylog_testutil.go │ │ ├── env_config.go │ │ ├── env_config_test.go │ │ ├── method_logger.go │ │ ├── method_logger_test.go │ │ ├── regexp_test.go │ │ └── sink.go │ ├── buffer/ │ │ ├── unbounded.go │ │ └── unbounded_test.go │ ├── cache/ │ │ ├── timeoutCache.go │ │ └── timeoutCache_test.go │ ├── channelz/ │ │ ├── channel.go │ │ ├── channelmap.go │ │ ├── funcs.go │ │ ├── logging.go │ │ ├── server.go │ │ ├── socket.go │ │ ├── subchannel.go │ │ ├── syscall_linux.go │ │ ├── syscall_nonlinux.go │ │ ├── syscall_test.go │ │ └── trace.go │ ├── credentials/ │ │ ├── credentials.go │ │ ├── spiffe/ │ │ │ ├── spiffe.go │ │ │ └── spiffe_test.go │ │ ├── spiffe.go │ │ ├── spiffe_test.go │ │ ├── syscallconn.go │ │ ├── syscallconn_test.go │ │ ├── util.go │ │ ├── util_test.go │ │ └── xds/ │ │ ├── handshake_info.go │ │ └── handshake_info_test.go │ ├── envconfig/ │ │ ├── envconfig.go │ │ ├── envconfig_test.go │ │ ├── observability.go │ │ └── xds.go │ ├── experimental.go │ ├── googlecloud/ │ │ ├── googlecloud.go │ │ ├── googlecloud_test.go │ │ ├── manufacturer.go │ │ ├── manufacturer_linux.go │ │ └── manufacturer_windows.go │ ├── grpclog/ │ │ └── prefix_logger.go │ ├── grpcsync/ │ │ ├── callback_serializer.go │ │ ├── callback_serializer_test.go │ │ ├── event.go │ │ ├── event_test.go │ │ ├── pubsub.go │ │ └── pubsub_test.go │ ├── grpctest/ │ │ ├── example_test.go │ │ ├── grpctest.go │ │ ├── grpctest_test.go │ │ ├── tlogger.go │ │ └── tlogger_test.go │ ├── grpcutil/ │ │ ├── compressor.go │ │ ├── compressor_test.go │ │ ├── encode_duration.go │ │ ├── encode_duration_test.go │ │ ├── grpcutil.go │ │ ├── metadata.go │ │ ├── method.go │ │ ├── method_test.go │ │ ├── regex.go │ │ └── regex_test.go │ ├── hierarchy/ │ │ ├── hierarchy.go │ │ └── hierarchy_ext_test.go │ ├── idle/ │ │ ├── idle.go │ │ ├── idle_e2e_test.go │ │ └── idle_test.go │ ├── internal.go │ ├── leakcheck/ │ │ ├── leakcheck.go │ │ ├── leakcheck_enabled.go │ │ └── leakcheck_test.go │ ├── mem/ │ │ ├── buffer_pool.go │ │ ├── buffer_pool_ext_test.go │ │ └── buffer_pool_test.go │ ├── metadata/ │ │ ├── metadata.go │ │ └── metadata_test.go │ ├── pretty/ │ │ └── pretty.go │ ├── profiling/ │ │ ├── buffer/ │ │ │ ├── buffer.go │ │ │ └── buffer_test.go │ │ ├── goid_modified.go │ │ ├── goid_regular.go │ │ ├── profiling.go │ │ └── profiling_test.go │ ├── proto/ │ │ └── grpc_lookup_v1/ │ │ ├── rls.pb.go │ │ ├── rls_config.pb.go │ │ └── rls_grpc.pb.go │ ├── proxyattributes/ │ │ ├── proxyattributes.go │ │ └── proxyattributes_test.go │ ├── resolver/ │ │ ├── config_selector.go │ │ ├── config_selector_test.go │ │ ├── delegatingresolver/ │ │ │ ├── delegatingresolver.go │ │ │ ├── delegatingresolver_ext_test.go │ │ │ └── delegatingresolver_test.go │ │ ├── dns/ │ │ │ ├── dns_resolver.go │ │ │ ├── dns_resolver_test.go │ │ │ ├── fake_net_resolver_test.go │ │ │ └── internal/ │ │ │ └── internal.go │ │ ├── passthrough/ │ │ │ └── passthrough.go │ │ └── unix/ │ │ └── unix.go │ ├── ringhash/ │ │ └── ringhash.go │ ├── serviceconfig/ │ │ ├── duration.go │ │ ├── duration_test.go │ │ ├── serviceconfig.go │ │ └── serviceconfig_test.go │ ├── stats/ │ │ ├── labels.go │ │ ├── metrics_recorder_list.go │ │ ├── metrics_recorder_list_test.go │ │ └── stats.go │ ├── status/ │ │ ├── status.go │ │ └── status_test.go │ ├── stubserver/ │ │ └── stubserver.go │ ├── syscall/ │ │ ├── syscall_linux.go │ │ └── syscall_nonlinux.go │ ├── tcp_keepalive_others.go │ ├── tcp_keepalive_unix.go │ ├── tcp_keepalive_windows.go │ ├── testutils/ │ │ ├── balancer.go │ │ ├── blocking_context_dialer.go │ │ ├── blocking_context_dialer_test.go │ │ ├── channel.go │ │ ├── envconfig.go │ │ ├── fakegrpclb/ │ │ │ └── server.go │ │ ├── http_client.go │ │ ├── local_listener.go │ │ ├── marshal_any.go │ │ ├── parse_port.go │ │ ├── parse_url.go │ │ ├── pickfirst/ │ │ │ └── pickfirst.go │ │ ├── pipe_listener.go │ │ ├── pipe_listener_test.go │ │ ├── proxyserver/ │ │ │ └── proxyserver.go │ │ ├── resolver.go │ │ ├── restartable_listener.go │ │ ├── rls/ │ │ │ └── fake_rls_server.go │ │ ├── roundrobin/ │ │ │ └── roundrobin.go │ │ ├── state.go │ │ ├── stats/ │ │ │ └── test_metrics_recorder.go │ │ ├── status_equal.go │ │ ├── status_equal_test.go │ │ ├── stubstatshandler.go │ │ ├── tls_creds.go │ │ ├── wrappers.go │ │ ├── wrr.go │ │ ├── xds/ │ │ │ ├── e2e/ │ │ │ │ ├── bootstrap.go │ │ │ │ ├── clientresources.go │ │ │ │ ├── logging.go │ │ │ │ ├── server.go │ │ │ │ └── setup/ │ │ │ │ └── setup.go │ │ │ └── fakeserver/ │ │ │ └── server.go │ │ └── xds_bootstrap.go │ ├── transport/ │ │ ├── bdp_estimator.go │ │ ├── client_stream.go │ │ ├── controlbuf.go │ │ ├── defaults.go │ │ ├── flowcontrol.go │ │ ├── handler_server.go │ │ ├── handler_server_test.go │ │ ├── http2_client.go │ │ ├── http2_server.go │ │ ├── http_util.go │ │ ├── http_util_test.go │ │ ├── keepalive_test.go │ │ ├── logging.go │ │ ├── networktype/ │ │ │ └── networktype.go │ │ ├── proxy.go │ │ ├── proxy_ext_test.go │ │ ├── proxy_test.go │ │ ├── server_stream.go │ │ ├── transport.go │ │ └── transport_test.go │ ├── wrr/ │ │ ├── edf.go │ │ ├── edf_test.go │ │ ├── random.go │ │ ├── wrr.go │ │ └── wrr_test.go │ └── xds/ │ ├── balancer/ │ │ ├── balancer.go │ │ ├── cdsbalancer/ │ │ │ ├── aggregate_cluster_test.go │ │ │ ├── cdsbalancer.go │ │ │ ├── cdsbalancer_test.go │ │ │ ├── configbuilder.go │ │ │ ├── configbuilder_childname.go │ │ │ ├── configbuilder_childname_test.go │ │ │ ├── configbuilder_test.go │ │ │ ├── e2e_test/ │ │ │ │ ├── aggregate_cluster_test.go │ │ │ │ ├── balancer_test.go │ │ │ │ ├── dns_impl_test.go │ │ │ │ └── eds_impl_test.go │ │ │ └── logging.go │ │ ├── clusterimpl/ │ │ │ ├── balancer_test.go │ │ │ ├── clusterimpl.go │ │ │ ├── config.go │ │ │ ├── config_test.go │ │ │ ├── internal/ │ │ │ │ └── internal.go │ │ │ ├── logging.go │ │ │ ├── picker.go │ │ │ └── tests/ │ │ │ ├── balancer_test.go │ │ │ └── clusterimpl_security_test.go │ │ ├── clustermanager/ │ │ │ ├── balancerstateaggregator.go │ │ │ ├── clustermanager.go │ │ │ ├── clustermanager_test.go │ │ │ ├── config.go │ │ │ ├── config_test.go │ │ │ ├── e2e_test/ │ │ │ │ └── clustermanager_test.go │ │ │ └── picker.go │ │ ├── loadstore/ │ │ │ └── load_store_wrapper.go │ │ ├── outlierdetection/ │ │ │ ├── balancer.go │ │ │ ├── balancer_ext_test.go │ │ │ ├── balancer_test.go │ │ │ ├── callcounter.go │ │ │ ├── callcounter_test.go │ │ │ ├── config.go │ │ │ ├── config_test.go │ │ │ ├── e2e_test/ │ │ │ │ └── outlierdetection_test.go │ │ │ ├── logging.go │ │ │ └── subconn_wrapper.go │ │ ├── priority/ │ │ │ ├── balancer.go │ │ │ ├── balancer_child.go │ │ │ ├── balancer_priority.go │ │ │ ├── balancer_test.go │ │ │ ├── config.go │ │ │ ├── config_test.go │ │ │ ├── ignore_resolve_now.go │ │ │ ├── ignore_resolve_now_test.go │ │ │ └── logging.go │ │ └── wrrlocality/ │ │ ├── balancer.go │ │ ├── balancer_test.go │ │ └── logging.go │ ├── bootstrap/ │ │ ├── bootstrap.go │ │ ├── bootstrap_test.go │ │ ├── jwtcreds/ │ │ │ ├── call_creds.go │ │ │ └── call_creds_test.go │ │ ├── logging.go │ │ ├── template.go │ │ ├── template_test.go │ │ └── tlscreds/ │ │ ├── bundle.go │ │ ├── bundle_ext_test.go │ │ └── bundle_test.go │ ├── clients/ │ │ ├── config.go │ │ ├── grpctransport/ │ │ │ ├── examples_test.go │ │ │ ├── grpc_transport.go │ │ │ ├── grpc_transport_ext_test.go │ │ │ └── grpc_transport_test.go │ │ ├── internal/ │ │ │ ├── backoff/ │ │ │ │ └── backoff.go │ │ │ ├── buffer/ │ │ │ │ ├── unbounded.go │ │ │ │ └── unbounded_test.go │ │ │ ├── internal.go │ │ │ ├── internal_test.go │ │ │ ├── pretty/ │ │ │ │ └── pretty.go │ │ │ ├── syncutil/ │ │ │ │ ├── callback_serializer.go │ │ │ │ ├── callback_serializer_test.go │ │ │ │ ├── event.go │ │ │ │ └── event_test.go │ │ │ └── testutils/ │ │ │ ├── channel.go │ │ │ ├── e2e/ │ │ │ │ ├── clientresources.go │ │ │ │ ├── logging.go │ │ │ │ └── server.go │ │ │ ├── fakeserver/ │ │ │ │ └── server.go │ │ │ ├── faketransport/ │ │ │ │ └── xds_fake_transport.go │ │ │ ├── marshal_any.go │ │ │ ├── restartable_listener.go │ │ │ └── wrappers.go │ │ ├── lrsclient/ │ │ │ ├── internal/ │ │ │ │ └── internal.go │ │ │ ├── load_store.go │ │ │ ├── load_store_test.go │ │ │ ├── loadreport_test.go │ │ │ ├── logging.go │ │ │ ├── lrs_stream.go │ │ │ ├── lrsclient.go │ │ │ └── lrsconfig.go │ │ ├── transport_builder.go │ │ └── xdsclient/ │ │ ├── ads_stream.go │ │ ├── authority.go │ │ ├── channel.go │ │ ├── channel_test.go │ │ ├── clientimpl_watchers.go │ │ ├── helpers_test.go │ │ ├── internal/ │ │ │ ├── internal.go │ │ │ └── xdsresource/ │ │ │ ├── ads_stream.go │ │ │ ├── errors.go │ │ │ ├── name.go │ │ │ ├── type.go │ │ │ └── version.go │ │ ├── logging.go │ │ ├── metrics/ │ │ │ └── metrics.go │ │ ├── resource_type.go │ │ ├── resource_watcher.go │ │ ├── test/ │ │ │ ├── ads_stream_ack_nack_test.go │ │ │ ├── ads_stream_backoff_test.go │ │ │ ├── ads_stream_flow_control_test.go │ │ │ ├── ads_stream_restart_test.go │ │ │ ├── ads_stream_watch_test.go │ │ │ ├── authority_test.go │ │ │ ├── custom_resource_watch_test.go │ │ │ ├── dump_test.go │ │ │ ├── helpers_test.go │ │ │ ├── lds_watchers_test.go │ │ │ ├── metrics_test.go │ │ │ └── misc_watchers_test.go │ │ ├── xdsclient.go │ │ ├── xdsclient_test.go │ │ └── xdsconfig.go │ ├── clusterspecifier/ │ │ ├── cluster_specifier.go │ │ └── rls/ │ │ ├── rls.go │ │ └── rls_test.go │ ├── httpfilter/ │ │ ├── fault/ │ │ │ ├── fault.go │ │ │ └── fault_test.go │ │ ├── httpfilter.go │ │ ├── rbac/ │ │ │ └── rbac.go │ │ └── router/ │ │ └── router.go │ ├── matcher/ │ │ ├── matcher_header.go │ │ ├── matcher_header_test.go │ │ ├── string_matcher.go │ │ └── string_matcher_test.go │ ├── rbac/ │ │ ├── converter.go │ │ ├── converter_test.go │ │ ├── matchers.go │ │ ├── rbac_engine.go │ │ └── rbac_engine_test.go │ ├── resolver/ │ │ ├── cluster_specifier_plugin_test.go │ │ ├── helpers_test.go │ │ ├── internal/ │ │ │ └── internal.go │ │ ├── logging.go │ │ ├── serviceconfig.go │ │ ├── serviceconfig_test.go │ │ ├── watch_service_test.go │ │ ├── xds_http_filters_test.go │ │ ├── xds_resolver.go │ │ └── xds_resolver_test.go │ ├── server/ │ │ ├── conn_wrapper.go │ │ ├── filter_chain_manager.go │ │ ├── filter_chain_manager_test.go │ │ ├── listener_wrapper.go │ │ ├── rds_handler.go │ │ ├── rds_handler_test.go │ │ ├── routing.go │ │ └── routing_test.go │ ├── test/ │ │ └── e2e/ │ │ ├── README.md │ │ ├── controlplane.go │ │ ├── e2e.go │ │ ├── e2e_test.go │ │ ├── e2e_utils.go │ │ └── run.sh │ ├── testutils/ │ │ ├── balancer_test.go │ │ ├── fakeclient/ │ │ │ └── client.go │ │ ├── resource_watcher.go │ │ └── testutils.go │ ├── xds.go │ ├── xds_test.go │ ├── xdsclient/ │ │ ├── attributes.go │ │ ├── client.go │ │ ├── client_refcounted_test.go │ │ ├── client_test.go │ │ ├── clientimpl.go │ │ ├── clientimpl_loadreport.go │ │ ├── clientimpl_test.go │ │ ├── internal/ │ │ │ └── internal.go │ │ ├── logging.go │ │ ├── metrics_test.go │ │ ├── pool/ │ │ │ └── pool_ext_test.go │ │ ├── pool.go │ │ ├── requests_counter.go │ │ ├── requests_counter_test.go │ │ ├── resource_types.go │ │ ├── tests/ │ │ │ ├── ads_stream_ack_nack_test.go │ │ │ ├── ads_stream_restart_test.go │ │ │ ├── authority_test.go │ │ │ ├── cds_watchers_test.go │ │ │ ├── client_custom_dialopts_test.go │ │ │ ├── dump_test.go │ │ │ ├── eds_watchers_test.go │ │ │ ├── fallback/ │ │ │ │ └── fallback_test.go │ │ │ ├── federation_watchers_test.go │ │ │ ├── helpers_test.go │ │ │ ├── lds_watchers_test.go │ │ │ ├── loadreport_test.go │ │ │ ├── rds_watchers_test.go │ │ │ └── resource_update_test.go │ │ ├── xdsclient_test.go │ │ ├── xdslbregistry/ │ │ │ ├── converter/ │ │ │ │ └── converter.go │ │ │ ├── xdslbregistry.go │ │ │ └── xdslbregistry_test.go │ │ └── xdsresource/ │ │ ├── cluster_resource_type.go │ │ ├── endpoints_resource_type.go │ │ ├── errors.go │ │ ├── filter_chain.go │ │ ├── filter_chain_test.go │ │ ├── listener_resource_type.go │ │ ├── logging.go │ │ ├── matcher.go │ │ ├── matcher_path.go │ │ ├── matcher_path_test.go │ │ ├── matcher_test.go │ │ ├── metadata.go │ │ ├── metadata_test.go │ │ ├── name.go │ │ ├── name_test.go │ │ ├── resource_type.go │ │ ├── route_config_resource_type.go │ │ ├── test_utils_test.go │ │ ├── tests/ │ │ │ └── unmarshal_cds_test.go │ │ ├── type.go │ │ ├── type_cds.go │ │ ├── type_eds.go │ │ ├── type_lds.go │ │ ├── type_rds.go │ │ ├── unmarshal_cds.go │ │ ├── unmarshal_cds_test.go │ │ ├── unmarshal_eds.go │ │ ├── unmarshal_eds_test.go │ │ ├── unmarshal_lds.go │ │ ├── unmarshal_lds_test.go │ │ ├── unmarshal_rds.go │ │ ├── unmarshal_rds_test.go │ │ ├── version/ │ │ │ └── version.go │ │ └── xdsconfig.go │ └── xdsdepmgr/ │ ├── xds_dependency_manager.go │ └── xds_dependency_manager_test.go ├── interop/ │ ├── alts/ │ │ ├── client/ │ │ │ └── client.go │ │ └── server/ │ │ └── server.go │ ├── client/ │ │ └── client.go │ ├── fake_grpclb/ │ │ └── fake_grpclb.go │ ├── grpc_testing/ │ │ ├── benchmark_service.pb.go │ │ ├── benchmark_service_grpc.pb.go │ │ ├── control.pb.go │ │ ├── core/ │ │ │ └── stats.pb.go │ │ ├── empty.pb.go │ │ ├── messages.pb.go │ │ ├── payloads.pb.go │ │ ├── report_qps_scenario_service.pb.go │ │ ├── report_qps_scenario_service_grpc.pb.go │ │ ├── stats.pb.go │ │ ├── test.pb.go │ │ ├── test_grpc.pb.go │ │ ├── worker_service.pb.go │ │ └── worker_service_grpc.pb.go │ ├── grpclb_fallback/ │ │ └── client_linux.go │ ├── http2/ │ │ └── negative_http2_client.go │ ├── interop_test.sh │ ├── observability/ │ │ ├── Dockerfile │ │ ├── build_docker.sh │ │ ├── client/ │ │ │ └── client.go │ │ ├── go.mod │ │ ├── go.sum │ │ ├── run.sh │ │ └── server/ │ │ └── server.go │ ├── orcalb.go │ ├── server/ │ │ └── server.go │ ├── soak_tests.go │ ├── stress/ │ │ ├── client/ │ │ │ └── main.go │ │ ├── grpc_testing/ │ │ │ ├── metrics.pb.go │ │ │ ├── metrics.proto │ │ │ └── metrics_grpc.pb.go │ │ └── metrics_client/ │ │ └── main.go │ ├── test_utils.go │ ├── xds/ │ │ ├── client/ │ │ │ ├── Dockerfile │ │ │ └── client.go │ │ ├── custom_lb.go │ │ ├── custom_lb_test.go │ │ ├── go.mod │ │ ├── go.sum │ │ └── server/ │ │ ├── Dockerfile │ │ └── server.go │ └── xds_federation/ │ └── client.go ├── keepalive/ │ └── keepalive.go ├── mem/ │ ├── buffer_pool.go │ ├── buffer_pool_test.go │ ├── buffer_slice.go │ ├── buffer_slice_test.go │ ├── buffers.go │ └── buffers_test.go ├── metadata/ │ ├── metadata.go │ └── metadata_test.go ├── orca/ │ ├── call_metrics.go │ ├── call_metrics_test.go │ ├── internal/ │ │ └── internal.go │ ├── orca.go │ ├── orca_test.go │ ├── producer.go │ ├── producer_test.go │ ├── server_metrics.go │ ├── server_metrics_test.go │ ├── service.go │ └── service_test.go ├── peer/ │ ├── peer.go │ └── peer_test.go ├── picker_wrapper.go ├── picker_wrapper_test.go ├── preloader.go ├── producer_ext_test.go ├── profiling/ │ ├── cmd/ │ │ ├── catapult.go │ │ ├── flags.go │ │ ├── local.go │ │ ├── main.go │ │ └── remote.go │ ├── profiling.go │ ├── proto/ │ │ ├── service.pb.go │ │ ├── service.proto │ │ └── service_grpc.pb.go │ └── service/ │ └── service.go ├── reflection/ │ ├── README.md │ ├── adapt.go │ ├── grpc_reflection_v1/ │ │ ├── reflection.pb.go │ │ └── reflection_grpc.pb.go │ ├── grpc_reflection_v1alpha/ │ │ ├── reflection.pb.go │ │ └── reflection_grpc.pb.go │ ├── grpc_testing/ │ │ ├── proto2.pb.go │ │ ├── proto2.proto │ │ ├── proto2_ext.pb.go │ │ ├── proto2_ext.proto │ │ ├── proto2_ext2.pb.go │ │ ├── proto2_ext2.proto │ │ ├── test.pb.go │ │ ├── test.proto │ │ └── test_grpc.pb.go │ ├── internal/ │ │ └── internal.go │ ├── serverreflection.go │ └── test/ │ └── serverreflection_test.go ├── resolver/ │ ├── dns/ │ │ └── dns_resolver.go │ ├── manual/ │ │ ├── manual.go │ │ └── manual_test.go │ ├── map.go │ ├── map_test.go │ ├── passthrough/ │ │ └── passthrough.go │ ├── resolver.go │ ├── resolver_test.go │ └── ringhash/ │ └── attr.go ├── resolver_balancer_ext_test.go ├── resolver_test.go ├── resolver_wrapper.go ├── rpc_util.go ├── rpc_util_test.go ├── scripts/ │ ├── common.sh │ ├── gen-deps.sh │ ├── install-protoc.sh │ ├── regenerate.sh │ ├── revive.toml │ ├── vet-proto.sh │ └── vet.sh ├── security/ │ └── advancedtls/ │ ├── advancedtls.go │ ├── advancedtls_integration_test.go │ ├── advancedtls_test.go │ ├── crl.go │ ├── crl_provider.go │ ├── crl_provider_test.go │ ├── crl_test.go │ ├── examples/ │ │ ├── credential_reloading_from_files/ │ │ │ ├── README.md │ │ │ ├── client/ │ │ │ │ └── main.go │ │ │ └── server/ │ │ │ └── main.go │ │ ├── examples_test.sh │ │ ├── go.mod │ │ └── go.sum │ ├── go.mod │ ├── go.sum │ ├── internal/ │ │ └── testutils/ │ │ └── testutils.go │ ├── sni.go │ └── testdata/ │ ├── README.md │ ├── another_client_cert_1.pem │ ├── another_client_key_1.pem │ ├── client_cert_1.pem │ ├── client_cert_2.pem │ ├── client_key_1.pem │ ├── client_key_2.pem │ ├── client_trust_cert_1.pem │ ├── client_trust_cert_2.pem │ ├── client_trust_key_1.pem │ ├── client_trust_key_2.pem │ ├── crl/ │ │ ├── 1.crl │ │ ├── 2.crl │ │ ├── 2f11f022.r0 │ │ ├── 3.crl │ │ ├── 4.crl │ │ ├── 5.crl │ │ ├── 6.crl │ │ ├── README.md │ │ ├── provider_ca.cnf │ │ ├── provider_client_cert.key │ │ ├── provider_client_cert.pem │ │ ├── provider_client_trust_cert.pem │ │ ├── provider_client_trust_key.pem │ │ ├── provider_create.sh │ │ ├── provider_crl.cnf │ │ ├── provider_crl_empty.pem │ │ ├── provider_crl_server_revoked.pem │ │ ├── provider_extensions.conf │ │ ├── provider_malicious_client_trust_cert.pem │ │ ├── provider_malicious_client_trust_key.pem │ │ ├── provider_malicious_crl_empty.pem │ │ ├── provider_server_cert.key │ │ ├── provider_server_cert.pem │ │ ├── provider_server_trust_cert.pem │ │ ├── provider_server_trust_key.pem │ │ ├── revokedInt.pem │ │ ├── revokedLeaf.pem │ │ └── unrevoked.pem │ ├── localhost-openssl.cnf │ ├── openssl-ca.cnf │ ├── server_cert_1.pem │ ├── server_cert_1.txt │ ├── server_cert_2.pem │ ├── server_cert_2.txt │ ├── server_cert_3.pem │ ├── server_cert_3.txt │ ├── server_cert_localhost_1.pem │ ├── server_key_1.pem │ ├── server_key_2.pem │ ├── server_key_3.pem │ ├── server_key_localhost_1.pem │ ├── server_trust_cert_1.pem │ ├── server_trust_cert_2.pem │ ├── server_trust_key_1.pem │ ├── server_trust_key_2.pem │ └── testdata.go ├── server.go ├── server_ext_test.go ├── server_test.go ├── service_config.go ├── service_config_test.go ├── serviceconfig/ │ └── serviceconfig.go ├── stats/ │ ├── handlers.go │ ├── metrics.go │ ├── opencensus/ │ │ ├── client_metrics.go │ │ ├── e2e_test.go │ │ ├── go.mod │ │ ├── go.sum │ │ ├── opencensus.go │ │ ├── server_metrics.go │ │ ├── stats.go │ │ └── trace.go │ ├── opentelemetry/ │ │ ├── client_metrics.go │ │ ├── client_tracing.go │ │ ├── csm/ │ │ │ ├── observability.go │ │ │ ├── observability_test.go │ │ │ ├── pluginoption.go │ │ │ └── pluginoption_test.go │ │ ├── e2e_test.go │ │ ├── example_test.go │ │ ├── grpc_trace_bin_propagator.go │ │ ├── grpc_trace_bin_propagator_test.go │ │ ├── internal/ │ │ │ ├── pluginoption.go │ │ │ ├── testutils/ │ │ │ │ └── testutils.go │ │ │ └── tracing/ │ │ │ ├── carrier.go │ │ │ └── carrier_test.go │ │ ├── metricsregistry_test.go │ │ ├── opentelemetry.go │ │ ├── server_metrics.go │ │ ├── server_tracing.go │ │ └── trace.go │ ├── stats.go │ └── stats_test.go ├── status/ │ ├── status.go │ ├── status_ext_test.go │ └── status_test.go ├── stream.go ├── stream_interfaces.go ├── stream_test.go ├── tap/ │ └── tap.go ├── test/ │ ├── authority_test.go │ ├── balancer_switching_test.go │ ├── balancer_test.go │ ├── bufconn/ │ │ ├── bufconn.go │ │ └── bufconn_test.go │ ├── channelz_linux_test.go │ ├── channelz_test.go │ ├── clientconn_state_transition_test.go │ ├── clientconn_test.go │ ├── clienttester.go │ ├── codec_perf/ │ │ ├── perf.pb.go │ │ └── perf.proto │ ├── compressor_test.go │ ├── config_selector_test.go │ ├── context_canceled_test.go │ ├── control_plane_status_test.go │ ├── creds_test.go │ ├── end2end_test.go │ ├── goaway_test.go │ ├── gracefulstop_test.go │ ├── healthcheck_test.go │ ├── http_header_end2end_test.go │ ├── insecure_creds_test.go │ ├── interceptor_test.go │ ├── invoke_test.go │ ├── kokoro/ │ │ ├── README.md │ │ ├── psm-csm.cfg │ │ ├── psm-dualstack.cfg │ │ ├── psm-interop-build-go.sh │ │ ├── psm-interop-test-go.sh │ │ ├── psm-light.cfg │ │ ├── psm-security.cfg │ │ ├── psm-spiffe.cfg │ │ ├── xds.cfg │ │ ├── xds.sh │ │ ├── xds_k8s_lb.cfg │ │ ├── xds_url_map.cfg │ │ ├── xds_v3.cfg │ │ └── xds_v3.sh │ ├── local_creds_test.go │ ├── logging.go │ ├── malformed_method_test.go │ ├── metadata_test.go │ ├── parse_config.go │ ├── race_test.go │ ├── rawConnWrapper.go │ ├── resolver_update_test.go │ ├── retry_test.go │ ├── roundrobin_test.go │ ├── server_test.go │ ├── servertester.go │ ├── stats_test.go │ ├── stream_cleanup_test.go │ ├── subconn_test.go │ ├── timeouts.go │ ├── tools/ │ │ ├── go.mod │ │ ├── go.sum │ │ ├── tools.go │ │ └── tools_vet.go │ ├── transport_test.go │ └── xds/ │ ├── xds_client_ack_nack_test.go │ ├── xds_client_affinity_test.go │ ├── xds_client_certificate_providers_test.go │ ├── xds_client_custom_lb_test.go │ ├── xds_client_federation_test.go │ ├── xds_client_ignore_resource_deletion_test.go │ ├── xds_client_integration_test.go │ ├── xds_client_outlier_detection_test.go │ ├── xds_client_priority_locality_test.go │ ├── xds_client_retry_test.go │ ├── xds_rls_clusterspecifier_plugin_test.go │ ├── xds_security_config_nack_test.go │ ├── xds_server_filter_state_retention_test.go │ ├── xds_server_integration_test.go │ ├── xds_server_rbac_test.go │ └── xds_telemetry_labels_test.go ├── testdata/ │ ├── README.md │ ├── ca.pem │ ├── grpc_testing_not_regenerated/ │ │ ├── README.md │ │ ├── dynamic.go │ │ ├── dynamic.proto │ │ ├── simple.proto │ │ ├── simple_message_v1.go │ │ ├── testv3.go │ │ └── testv3.proto │ ├── server1.key │ ├── server1.pem │ ├── spiffe/ │ │ ├── README.md │ │ ├── client_spiffe.pem │ │ ├── server1_spiffe.pem │ │ ├── spiffe-openssl.cnf │ │ ├── spiffe_cert.pem │ │ ├── spiffe_multi_uri_san_cert.pem │ │ ├── spiffe_test.json │ │ ├── spiffebundle.json │ │ ├── spiffebundle2.json │ │ ├── spiffebundle_corrupted_cert.json │ │ ├── spiffebundle_empty_keys.json │ │ ├── spiffebundle_empty_string_key.json │ │ ├── spiffebundle_invalid_trustdomain.json │ │ ├── spiffebundle_malformed.json │ │ ├── spiffebundle_match_client_spiffe.json │ │ ├── spiffebundle_wrong_kid.json │ │ ├── spiffebundle_wrong_kty.json │ │ ├── spiffebundle_wrong_multi_certs.json │ │ ├── spiffebundle_wrong_root.json │ │ ├── spiffebundle_wrong_seq_type.json │ │ └── spiffebundle_wrong_use.json │ ├── spiffe_end2end/ │ │ ├── README.md │ │ ├── ca.key │ │ ├── ca.pem │ │ ├── client.key │ │ ├── client_spiffe.pem │ │ ├── client_spiffebundle.json │ │ ├── generate.sh │ │ ├── intermediate.cnf │ │ ├── intermediate_ca.key │ │ ├── intermediate_ca.pem │ │ ├── intermediate_gen.sh │ │ ├── leaf_and_intermediate_chain.pem │ │ ├── leaf_signed_by_intermediate.key │ │ ├── leaf_signed_by_intermediate.pem │ │ ├── server.key │ │ ├── server_spiffe.pem │ │ ├── server_spiffebundle.json │ │ └── spiffe-openssl.cnf │ ├── testdata.go │ └── x509/ │ ├── README.md │ ├── client1_cert.pem │ ├── client1_key.pem │ ├── client2_cert.pem │ ├── client2_key.pem │ ├── client_ca_cert.pem │ ├── client_ca_key.pem │ ├── client_with_spiffe_cert.pem │ ├── client_with_spiffe_key.pem │ ├── client_with_spiffe_openssl.cnf │ ├── create.sh │ ├── multiple_uri_cert.pem │ ├── multiple_uri_key.pem │ ├── openssl.cnf │ ├── server1_cert.pem │ ├── server1_key.pem │ ├── server2_cert.pem │ ├── server2_key.pem │ ├── server_ca_cert.pem │ ├── server_ca_key.pem │ ├── spiffe_cert.pem │ └── spiffe_key.pem ├── trace.go ├── trace_notrace.go ├── trace_test.go ├── trace_withtrace.go ├── version.go └── xds/ ├── bootstrap/ │ ├── bootstrap.go │ ├── bootstrap_test.go │ └── credentials.go ├── csds/ │ ├── csds.go │ └── csds_e2e_test.go ├── googledirectpath/ │ ├── googlec2p.go │ ├── googlec2p_test.go │ └── utils.go ├── server.go ├── server_ext_test.go ├── server_options.go ├── server_resource_ext_test.go ├── server_security_ext_test.go ├── server_serving_mode_ext_test.go ├── server_test.go ├── test/ │ └── eds_resource_missing_test.go └── xds.go