diff --git a/BUILD b/BUILD index 778b365ff04e2..2daac9131ead1 100644 --- a/BUILD +++ b/BUILD @@ -1375,7 +1375,6 @@ grpc_cc_library( "src/core/ext/xds/xds_certificate_provider.cc", "src/core/ext/xds/xds_client.cc", "src/core/ext/xds/xds_client_stats.cc", - "src/core/ext/xds/xds_http_filters.cc", "src/core/lib/security/credentials/xds/xds_credentials.cc", ], hdrs = [ @@ -1389,7 +1388,6 @@ grpc_cc_library( "src/core/ext/xds/xds_channel_args.h", "src/core/ext/xds/xds_client.h", "src/core/ext/xds/xds_client_stats.h", - "src/core/ext/xds/xds_http_filters.h", "src/core/lib/security/credentials/xds/xds_credentials.h", ], external_deps = [ @@ -1407,8 +1405,6 @@ grpc_cc_library( "grpc_client_channel", "grpc_secure", "grpc_transport_chttp2_client_secure", - "udpa_type_upb", - "udpa_type_upbdefs", ], ) @@ -2650,7 +2646,6 @@ grpc_cc_library( "src/core/ext/upb-generated/envoy/config/route/v3/scoped_route.upb.c", "src/core/ext/upb-generated/envoy/config/trace/v3/http_tracer.upb.c", "src/core/ext/upb-generated/envoy/extensions/clusters/aggregate/v3/cluster.upb.c", - "src/core/ext/upb-generated/envoy/extensions/filters/http/router/v3/router.upb.c", "src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.c", "src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/cert.upb.c", "src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.c", @@ -2684,7 +2679,6 @@ grpc_cc_library( "src/core/ext/upb-generated/envoy/config/route/v3/scoped_route.upb.h", "src/core/ext/upb-generated/envoy/config/trace/v3/http_tracer.upb.h", "src/core/ext/upb-generated/envoy/extensions/clusters/aggregate/v3/cluster.upb.h", - "src/core/ext/upb-generated/envoy/extensions/filters/http/router/v3/router.upb.h", "src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.h", "src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/cert.upb.h", "src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.h", @@ -2735,7 +2729,6 @@ grpc_cc_library( "src/core/ext/upbdefs-generated/envoy/config/route/v3/scoped_route.upbdefs.c", "src/core/ext/upbdefs-generated/envoy/config/trace/v3/http_tracer.upbdefs.c", "src/core/ext/upbdefs-generated/envoy/extensions/clusters/aggregate/v3/cluster.upbdefs.c", - "src/core/ext/upbdefs-generated/envoy/extensions/filters/http/router/v3/router.upbdefs.c", "src/core/ext/upbdefs-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.c", "src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/cert.upbdefs.c", "src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/common.upbdefs.c", @@ -2768,7 +2761,6 @@ grpc_cc_library( "src/core/ext/upbdefs-generated/envoy/config/route/v3/scoped_route.upbdefs.h", "src/core/ext/upbdefs-generated/envoy/config/trace/v3/http_tracer.upbdefs.h", "src/core/ext/upbdefs-generated/envoy/extensions/clusters/aggregate/v3/cluster.upbdefs.h", - "src/core/ext/upbdefs-generated/envoy/extensions/filters/http/router/v3/router.upbdefs.h", "src/core/ext/upbdefs-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.h", "src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/cert.upbdefs.h", "src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/common.upbdefs.h", @@ -3201,45 +3193,6 @@ grpc_cc_library( ], ) -grpc_cc_library( - name = "udpa_type_upb", - srcs = [ - "src/core/ext/upb-generated/udpa/type/v1/typed_struct.upb.c", - ], - hdrs = [ - "src/core/ext/upb-generated/udpa/type/v1/typed_struct.upb.h", - ], - external_deps = [ - "upb_lib", - "upb_lib_descriptor", - ], - language = "c++", - deps = [ - ":google_api_upb", - ":proto_gen_validate_upb", - ], -) - -grpc_cc_library( - name = "udpa_type_upbdefs", - srcs = [ - "src/core/ext/upbdefs-generated/udpa/type/v1/typed_struct.upbdefs.c", - ], - hdrs = [ - "src/core/ext/upbdefs-generated/udpa/type/v1/typed_struct.upbdefs.h", - ], - external_deps = [ - "upb_lib", - "upb_lib_descriptor_reflection", - "upb_textformat_lib", - ], - language = "c++", - deps = [ - ":google_api_upbdefs", - ":proto_gen_validate_upbdefs", - ], -) - # Once upb code-gen issue is resolved, replace grpc_health_upb with this. # grpc_upb_proto_library( # name = "grpc_health_upb", diff --git a/BUILD.gn b/BUILD.gn index ddaeda866440b..42d09d4f16cf2 100644 --- a/BUILD.gn +++ b/BUILD.gn @@ -462,8 +462,6 @@ config("grpc_config") { "src/core/ext/upb-generated/envoy/config/trace/v3/http_tracer.upb.h", "src/core/ext/upb-generated/envoy/extensions/clusters/aggregate/v3/cluster.upb.c", "src/core/ext/upb-generated/envoy/extensions/clusters/aggregate/v3/cluster.upb.h", - "src/core/ext/upb-generated/envoy/extensions/filters/http/router/v3/router.upb.c", - "src/core/ext/upb-generated/envoy/extensions/filters/http/router/v3/router.upb.h", "src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.c", "src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.h", "src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/cert.upb.c", @@ -558,8 +556,6 @@ config("grpc_config") { "src/core/ext/upb-generated/udpa/annotations/versioning.upb.h", "src/core/ext/upb-generated/udpa/data/orca/v1/orca_load_report.upb.c", "src/core/ext/upb-generated/udpa/data/orca/v1/orca_load_report.upb.h", - "src/core/ext/upb-generated/udpa/type/v1/typed_struct.upb.c", - "src/core/ext/upb-generated/udpa/type/v1/typed_struct.upb.h", "src/core/ext/upb-generated/validate/validate.upb.c", "src/core/ext/upb-generated/validate/validate.upb.h", "src/core/ext/upb-generated/xds/core/v3/authority.upb.c", @@ -638,8 +634,6 @@ config("grpc_config") { "src/core/ext/upbdefs-generated/envoy/config/trace/v3/http_tracer.upbdefs.h", "src/core/ext/upbdefs-generated/envoy/extensions/clusters/aggregate/v3/cluster.upbdefs.c", "src/core/ext/upbdefs-generated/envoy/extensions/clusters/aggregate/v3/cluster.upbdefs.h", - "src/core/ext/upbdefs-generated/envoy/extensions/filters/http/router/v3/router.upbdefs.c", - "src/core/ext/upbdefs-generated/envoy/extensions/filters/http/router/v3/router.upbdefs.h", "src/core/ext/upbdefs-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.c", "src/core/ext/upbdefs-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.h", "src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/cert.upbdefs.c", @@ -718,8 +712,6 @@ config("grpc_config") { "src/core/ext/upbdefs-generated/udpa/annotations/status.upbdefs.h", "src/core/ext/upbdefs-generated/udpa/annotations/versioning.upbdefs.c", "src/core/ext/upbdefs-generated/udpa/annotations/versioning.upbdefs.h", - "src/core/ext/upbdefs-generated/udpa/type/v1/typed_struct.upbdefs.c", - "src/core/ext/upbdefs-generated/udpa/type/v1/typed_struct.upbdefs.h", "src/core/ext/upbdefs-generated/validate/validate.upbdefs.c", "src/core/ext/upbdefs-generated/validate/validate.upbdefs.h", "src/core/ext/upbdefs-generated/xds/core/v3/authority.upbdefs.c", @@ -752,8 +744,6 @@ config("grpc_config") { "src/core/ext/xds/xds_client.h", "src/core/ext/xds/xds_client_stats.cc", "src/core/ext/xds/xds_client_stats.h", - "src/core/ext/xds/xds_http_filters.cc", - "src/core/ext/xds/xds_http_filters.h", "src/core/ext/xds/xds_server_config_fetcher.cc", "src/core/lib/avl/avl.cc", "src/core/lib/avl/avl.h", diff --git a/CMakeLists.txt b/CMakeLists.txt index 650d9a9976e50..f4eb3b6396797 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -502,9 +502,6 @@ protobuf_generate_grpc_cpp( protobuf_generate_grpc_cpp( src/proto/grpc/testing/xds/v3/route.proto ) -protobuf_generate_grpc_cpp( - src/proto/grpc/testing/xds/v3/router.proto -) protobuf_generate_grpc_cpp( src/proto/grpc/testing/xds/v3/string.proto ) @@ -1592,7 +1589,6 @@ add_library(grpc src/core/ext/upb-generated/envoy/config/route/v3/scoped_route.upb.c src/core/ext/upb-generated/envoy/config/trace/v3/http_tracer.upb.c src/core/ext/upb-generated/envoy/extensions/clusters/aggregate/v3/cluster.upb.c - src/core/ext/upb-generated/envoy/extensions/filters/http/router/v3/router.upb.c src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.c src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/cert.upb.c src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.c @@ -1640,7 +1636,6 @@ add_library(grpc src/core/ext/upb-generated/udpa/annotations/status.upb.c src/core/ext/upb-generated/udpa/annotations/versioning.upb.c src/core/ext/upb-generated/udpa/data/orca/v1/orca_load_report.upb.c - src/core/ext/upb-generated/udpa/type/v1/typed_struct.upb.c src/core/ext/upb-generated/validate/validate.upb.c src/core/ext/upb-generated/xds/core/v3/authority.upb.c src/core/ext/upb-generated/xds/core/v3/collection_entry.upb.c @@ -1680,7 +1675,6 @@ add_library(grpc src/core/ext/upbdefs-generated/envoy/config/route/v3/scoped_route.upbdefs.c src/core/ext/upbdefs-generated/envoy/config/trace/v3/http_tracer.upbdefs.c src/core/ext/upbdefs-generated/envoy/extensions/clusters/aggregate/v3/cluster.upbdefs.c - src/core/ext/upbdefs-generated/envoy/extensions/filters/http/router/v3/router.upbdefs.c src/core/ext/upbdefs-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.c src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/cert.upbdefs.c src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/common.upbdefs.c @@ -1720,7 +1714,6 @@ add_library(grpc src/core/ext/upbdefs-generated/udpa/annotations/sensitive.upbdefs.c src/core/ext/upbdefs-generated/udpa/annotations/status.upbdefs.c src/core/ext/upbdefs-generated/udpa/annotations/versioning.upbdefs.c - src/core/ext/upbdefs-generated/udpa/type/v1/typed_struct.upbdefs.c src/core/ext/upbdefs-generated/validate/validate.upbdefs.c src/core/ext/upbdefs-generated/xds/core/v3/authority.upbdefs.c src/core/ext/upbdefs-generated/xds/core/v3/collection_entry.upbdefs.c @@ -1736,7 +1729,6 @@ add_library(grpc src/core/ext/xds/xds_certificate_provider.cc src/core/ext/xds/xds_client.cc src/core/ext/xds/xds_client_stats.cc - src/core/ext/xds/xds_http_filters.cc src/core/ext/xds/xds_server_config_fetcher.cc src/core/lib/avl/avl.cc src/core/lib/backoff/backoff.cc @@ -15718,10 +15710,6 @@ if(_gRPC_PLATFORM_LINUX OR _gRPC_PLATFORM_MAC OR _gRPC_PLATFORM_POSIX) ${_gRPC_PROTO_GENS_DIR}/src/proto/grpc/testing/xds/v3/route.grpc.pb.cc ${_gRPC_PROTO_GENS_DIR}/src/proto/grpc/testing/xds/v3/route.pb.h ${_gRPC_PROTO_GENS_DIR}/src/proto/grpc/testing/xds/v3/route.grpc.pb.h - ${_gRPC_PROTO_GENS_DIR}/src/proto/grpc/testing/xds/v3/router.pb.cc - ${_gRPC_PROTO_GENS_DIR}/src/proto/grpc/testing/xds/v3/router.grpc.pb.cc - ${_gRPC_PROTO_GENS_DIR}/src/proto/grpc/testing/xds/v3/router.pb.h - ${_gRPC_PROTO_GENS_DIR}/src/proto/grpc/testing/xds/v3/router.grpc.pb.h ${_gRPC_PROTO_GENS_DIR}/src/proto/grpc/testing/xds/v3/string.pb.cc ${_gRPC_PROTO_GENS_DIR}/src/proto/grpc/testing/xds/v3/string.grpc.pb.cc ${_gRPC_PROTO_GENS_DIR}/src/proto/grpc/testing/xds/v3/string.pb.h diff --git a/Makefile b/Makefile index cb4e68971d107..cf0d6fa232c19 100644 --- a/Makefile +++ b/Makefile @@ -1172,7 +1172,6 @@ LIBGRPC_SRC = \ src/core/ext/upb-generated/envoy/config/route/v3/scoped_route.upb.c \ src/core/ext/upb-generated/envoy/config/trace/v3/http_tracer.upb.c \ src/core/ext/upb-generated/envoy/extensions/clusters/aggregate/v3/cluster.upb.c \ - src/core/ext/upb-generated/envoy/extensions/filters/http/router/v3/router.upb.c \ src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.c \ src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/cert.upb.c \ src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.c \ @@ -1220,7 +1219,6 @@ LIBGRPC_SRC = \ src/core/ext/upb-generated/udpa/annotations/status.upb.c \ src/core/ext/upb-generated/udpa/annotations/versioning.upb.c \ src/core/ext/upb-generated/udpa/data/orca/v1/orca_load_report.upb.c \ - src/core/ext/upb-generated/udpa/type/v1/typed_struct.upb.c \ src/core/ext/upb-generated/validate/validate.upb.c \ src/core/ext/upb-generated/xds/core/v3/authority.upb.c \ src/core/ext/upb-generated/xds/core/v3/collection_entry.upb.c \ @@ -1260,7 +1258,6 @@ LIBGRPC_SRC = \ src/core/ext/upbdefs-generated/envoy/config/route/v3/scoped_route.upbdefs.c \ src/core/ext/upbdefs-generated/envoy/config/trace/v3/http_tracer.upbdefs.c \ src/core/ext/upbdefs-generated/envoy/extensions/clusters/aggregate/v3/cluster.upbdefs.c \ - src/core/ext/upbdefs-generated/envoy/extensions/filters/http/router/v3/router.upbdefs.c \ src/core/ext/upbdefs-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.c \ src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/cert.upbdefs.c \ src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/common.upbdefs.c \ @@ -1300,7 +1297,6 @@ LIBGRPC_SRC = \ src/core/ext/upbdefs-generated/udpa/annotations/sensitive.upbdefs.c \ src/core/ext/upbdefs-generated/udpa/annotations/status.upbdefs.c \ src/core/ext/upbdefs-generated/udpa/annotations/versioning.upbdefs.c \ - src/core/ext/upbdefs-generated/udpa/type/v1/typed_struct.upbdefs.c \ src/core/ext/upbdefs-generated/validate/validate.upbdefs.c \ src/core/ext/upbdefs-generated/xds/core/v3/authority.upbdefs.c \ src/core/ext/upbdefs-generated/xds/core/v3/collection_entry.upbdefs.c \ @@ -1316,7 +1312,6 @@ LIBGRPC_SRC = \ src/core/ext/xds/xds_certificate_provider.cc \ src/core/ext/xds/xds_client.cc \ src/core/ext/xds/xds_client_stats.cc \ - src/core/ext/xds/xds_http_filters.cc \ src/core/ext/xds/xds_server_config_fetcher.cc \ src/core/lib/avl/avl.cc \ src/core/lib/backoff/backoff.cc \ @@ -2698,7 +2693,6 @@ src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.c: $(OPENS src/core/ext/upb-generated/envoy/config/route/v3/scoped_route.upb.c: $(OPENSSL_DEP) src/core/ext/upb-generated/envoy/config/trace/v3/http_tracer.upb.c: $(OPENSSL_DEP) src/core/ext/upb-generated/envoy/extensions/clusters/aggregate/v3/cluster.upb.c: $(OPENSSL_DEP) -src/core/ext/upb-generated/envoy/extensions/filters/http/router/v3/router.upb.c: $(OPENSSL_DEP) src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.c: $(OPENSSL_DEP) src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/cert.upb.c: $(OPENSSL_DEP) src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.c: $(OPENSSL_DEP) @@ -2732,7 +2726,6 @@ src/core/ext/upb-generated/udpa/annotations/security.upb.c: $(OPENSSL_DEP) src/core/ext/upb-generated/udpa/annotations/sensitive.upb.c: $(OPENSSL_DEP) src/core/ext/upb-generated/udpa/annotations/status.upb.c: $(OPENSSL_DEP) src/core/ext/upb-generated/udpa/annotations/versioning.upb.c: $(OPENSSL_DEP) -src/core/ext/upb-generated/udpa/type/v1/typed_struct.upb.c: $(OPENSSL_DEP) src/core/ext/upb-generated/xds/core/v3/authority.upb.c: $(OPENSSL_DEP) src/core/ext/upb-generated/xds/core/v3/collection_entry.upb.c: $(OPENSSL_DEP) src/core/ext/upb-generated/xds/core/v3/context_params.upb.c: $(OPENSSL_DEP) @@ -2771,7 +2764,6 @@ src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.c: src/core/ext/upbdefs-generated/envoy/config/route/v3/scoped_route.upbdefs.c: $(OPENSSL_DEP) src/core/ext/upbdefs-generated/envoy/config/trace/v3/http_tracer.upbdefs.c: $(OPENSSL_DEP) src/core/ext/upbdefs-generated/envoy/extensions/clusters/aggregate/v3/cluster.upbdefs.c: $(OPENSSL_DEP) -src/core/ext/upbdefs-generated/envoy/extensions/filters/http/router/v3/router.upbdefs.c: $(OPENSSL_DEP) src/core/ext/upbdefs-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.c: $(OPENSSL_DEP) src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/cert.upbdefs.c: $(OPENSSL_DEP) src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/common.upbdefs.c: $(OPENSSL_DEP) @@ -2811,7 +2803,6 @@ src/core/ext/upbdefs-generated/udpa/annotations/security.upbdefs.c: $(OPENSSL_DE src/core/ext/upbdefs-generated/udpa/annotations/sensitive.upbdefs.c: $(OPENSSL_DEP) src/core/ext/upbdefs-generated/udpa/annotations/status.upbdefs.c: $(OPENSSL_DEP) src/core/ext/upbdefs-generated/udpa/annotations/versioning.upbdefs.c: $(OPENSSL_DEP) -src/core/ext/upbdefs-generated/udpa/type/v1/typed_struct.upbdefs.c: $(OPENSSL_DEP) src/core/ext/upbdefs-generated/validate/validate.upbdefs.c: $(OPENSSL_DEP) src/core/ext/upbdefs-generated/xds/core/v3/authority.upbdefs.c: $(OPENSSL_DEP) src/core/ext/upbdefs-generated/xds/core/v3/collection_entry.upbdefs.c: $(OPENSSL_DEP) @@ -2827,7 +2818,6 @@ src/core/ext/xds/xds_bootstrap.cc: $(OPENSSL_DEP) src/core/ext/xds/xds_certificate_provider.cc: $(OPENSSL_DEP) src/core/ext/xds/xds_client.cc: $(OPENSSL_DEP) src/core/ext/xds/xds_client_stats.cc: $(OPENSSL_DEP) -src/core/ext/xds/xds_http_filters.cc: $(OPENSSL_DEP) src/core/ext/xds/xds_server_config_fetcher.cc: $(OPENSSL_DEP) src/core/lib/http/httpcli_security_connector.cc: $(OPENSSL_DEP) src/core/lib/security/authorization/authorization_engine.cc: $(OPENSSL_DEP) diff --git a/build_autogenerated.yaml b/build_autogenerated.yaml index 715b9cc5bb4e9..1a21e1a56f599 100644 --- a/build_autogenerated.yaml +++ b/build_autogenerated.yaml @@ -500,7 +500,6 @@ libs: - src/core/ext/upb-generated/envoy/config/route/v3/scoped_route.upb.h - src/core/ext/upb-generated/envoy/config/trace/v3/http_tracer.upb.h - src/core/ext/upb-generated/envoy/extensions/clusters/aggregate/v3/cluster.upb.h - - src/core/ext/upb-generated/envoy/extensions/filters/http/router/v3/router.upb.h - src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.h - src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/cert.upb.h - src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.h @@ -548,7 +547,6 @@ libs: - src/core/ext/upb-generated/udpa/annotations/status.upb.h - src/core/ext/upb-generated/udpa/annotations/versioning.upb.h - src/core/ext/upb-generated/udpa/data/orca/v1/orca_load_report.upb.h - - src/core/ext/upb-generated/udpa/type/v1/typed_struct.upb.h - src/core/ext/upb-generated/validate/validate.upb.h - src/core/ext/upb-generated/xds/core/v3/authority.upb.h - src/core/ext/upb-generated/xds/core/v3/collection_entry.upb.h @@ -588,7 +586,6 @@ libs: - src/core/ext/upbdefs-generated/envoy/config/route/v3/scoped_route.upbdefs.h - src/core/ext/upbdefs-generated/envoy/config/trace/v3/http_tracer.upbdefs.h - src/core/ext/upbdefs-generated/envoy/extensions/clusters/aggregate/v3/cluster.upbdefs.h - - src/core/ext/upbdefs-generated/envoy/extensions/filters/http/router/v3/router.upbdefs.h - src/core/ext/upbdefs-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.h - src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/cert.upbdefs.h - src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/common.upbdefs.h @@ -628,7 +625,6 @@ libs: - src/core/ext/upbdefs-generated/udpa/annotations/sensitive.upbdefs.h - src/core/ext/upbdefs-generated/udpa/annotations/status.upbdefs.h - src/core/ext/upbdefs-generated/udpa/annotations/versioning.upbdefs.h - - src/core/ext/upbdefs-generated/udpa/type/v1/typed_struct.upbdefs.h - src/core/ext/upbdefs-generated/validate/validate.upbdefs.h - src/core/ext/upbdefs-generated/xds/core/v3/authority.upbdefs.h - src/core/ext/upbdefs-generated/xds/core/v3/collection_entry.upbdefs.h @@ -646,7 +642,6 @@ libs: - src/core/ext/xds/xds_channel_args.h - src/core/ext/xds/xds_client.h - src/core/ext/xds/xds_client_stats.h - - src/core/ext/xds/xds_http_filters.h - src/core/lib/avl/avl.h - src/core/lib/backoff/backoff.h - src/core/lib/channel/channel_args.h @@ -1011,7 +1006,6 @@ libs: - src/core/ext/upb-generated/envoy/config/route/v3/scoped_route.upb.c - src/core/ext/upb-generated/envoy/config/trace/v3/http_tracer.upb.c - src/core/ext/upb-generated/envoy/extensions/clusters/aggregate/v3/cluster.upb.c - - src/core/ext/upb-generated/envoy/extensions/filters/http/router/v3/router.upb.c - src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.c - src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/cert.upb.c - src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.c @@ -1059,7 +1053,6 @@ libs: - src/core/ext/upb-generated/udpa/annotations/status.upb.c - src/core/ext/upb-generated/udpa/annotations/versioning.upb.c - src/core/ext/upb-generated/udpa/data/orca/v1/orca_load_report.upb.c - - src/core/ext/upb-generated/udpa/type/v1/typed_struct.upb.c - src/core/ext/upb-generated/validate/validate.upb.c - src/core/ext/upb-generated/xds/core/v3/authority.upb.c - src/core/ext/upb-generated/xds/core/v3/collection_entry.upb.c @@ -1099,7 +1092,6 @@ libs: - src/core/ext/upbdefs-generated/envoy/config/route/v3/scoped_route.upbdefs.c - src/core/ext/upbdefs-generated/envoy/config/trace/v3/http_tracer.upbdefs.c - src/core/ext/upbdefs-generated/envoy/extensions/clusters/aggregate/v3/cluster.upbdefs.c - - src/core/ext/upbdefs-generated/envoy/extensions/filters/http/router/v3/router.upbdefs.c - src/core/ext/upbdefs-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.c - src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/cert.upbdefs.c - src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/common.upbdefs.c @@ -1139,7 +1131,6 @@ libs: - src/core/ext/upbdefs-generated/udpa/annotations/sensitive.upbdefs.c - src/core/ext/upbdefs-generated/udpa/annotations/status.upbdefs.c - src/core/ext/upbdefs-generated/udpa/annotations/versioning.upbdefs.c - - src/core/ext/upbdefs-generated/udpa/type/v1/typed_struct.upbdefs.c - src/core/ext/upbdefs-generated/validate/validate.upbdefs.c - src/core/ext/upbdefs-generated/xds/core/v3/authority.upbdefs.c - src/core/ext/upbdefs-generated/xds/core/v3/collection_entry.upbdefs.c @@ -1155,7 +1146,6 @@ libs: - src/core/ext/xds/xds_certificate_provider.cc - src/core/ext/xds/xds_client.cc - src/core/ext/xds/xds_client_stats.cc - - src/core/ext/xds/xds_http_filters.cc - src/core/ext/xds/xds_server_config_fetcher.cc - src/core/lib/avl/avl.cc - src/core/lib/backoff/backoff.cc @@ -8024,7 +8014,6 @@ targets: - src/proto/grpc/testing/xds/v3/range.proto - src/proto/grpc/testing/xds/v3/regex.proto - src/proto/grpc/testing/xds/v3/route.proto - - src/proto/grpc/testing/xds/v3/router.proto - src/proto/grpc/testing/xds/v3/string.proto - src/proto/grpc/testing/xds/v3/tls.proto - test/cpp/end2end/test_service_impl.cc diff --git a/config.m4 b/config.m4 index fa847df36eb7e..cc6a6b1048b7e 100644 --- a/config.m4 +++ b/config.m4 @@ -177,7 +177,6 @@ if test "$PHP_GRPC" != "no"; then src/core/ext/upb-generated/envoy/config/route/v3/scoped_route.upb.c \ src/core/ext/upb-generated/envoy/config/trace/v3/http_tracer.upb.c \ src/core/ext/upb-generated/envoy/extensions/clusters/aggregate/v3/cluster.upb.c \ - src/core/ext/upb-generated/envoy/extensions/filters/http/router/v3/router.upb.c \ src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.c \ src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/cert.upb.c \ src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.c \ @@ -226,7 +225,6 @@ if test "$PHP_GRPC" != "no"; then src/core/ext/upb-generated/udpa/annotations/status.upb.c \ src/core/ext/upb-generated/udpa/annotations/versioning.upb.c \ src/core/ext/upb-generated/udpa/data/orca/v1/orca_load_report.upb.c \ - src/core/ext/upb-generated/udpa/type/v1/typed_struct.upb.c \ src/core/ext/upb-generated/validate/validate.upb.c \ src/core/ext/upb-generated/xds/core/v3/authority.upb.c \ src/core/ext/upb-generated/xds/core/v3/collection_entry.upb.c \ @@ -266,7 +264,6 @@ if test "$PHP_GRPC" != "no"; then src/core/ext/upbdefs-generated/envoy/config/route/v3/scoped_route.upbdefs.c \ src/core/ext/upbdefs-generated/envoy/config/trace/v3/http_tracer.upbdefs.c \ src/core/ext/upbdefs-generated/envoy/extensions/clusters/aggregate/v3/cluster.upbdefs.c \ - src/core/ext/upbdefs-generated/envoy/extensions/filters/http/router/v3/router.upbdefs.c \ src/core/ext/upbdefs-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.c \ src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/cert.upbdefs.c \ src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/common.upbdefs.c \ @@ -307,7 +304,6 @@ if test "$PHP_GRPC" != "no"; then src/core/ext/upbdefs-generated/udpa/annotations/sensitive.upbdefs.c \ src/core/ext/upbdefs-generated/udpa/annotations/status.upbdefs.c \ src/core/ext/upbdefs-generated/udpa/annotations/versioning.upbdefs.c \ - src/core/ext/upbdefs-generated/udpa/type/v1/typed_struct.upbdefs.c \ src/core/ext/upbdefs-generated/validate/validate.upbdefs.c \ src/core/ext/upbdefs-generated/xds/core/v3/authority.upbdefs.c \ src/core/ext/upbdefs-generated/xds/core/v3/collection_entry.upbdefs.c \ @@ -323,7 +319,6 @@ if test "$PHP_GRPC" != "no"; then src/core/ext/xds/xds_certificate_provider.cc \ src/core/ext/xds/xds_client.cc \ src/core/ext/xds/xds_client_stats.cc \ - src/core/ext/xds/xds_http_filters.cc \ src/core/ext/xds/xds_server_config_fetcher.cc \ src/core/lib/avl/avl.cc \ src/core/lib/backoff/backoff.cc \ @@ -1058,7 +1053,6 @@ if test "$PHP_GRPC" != "no"; then PHP_ADD_BUILD_DIR($ext_builddir/src/core/ext/upb-generated/envoy/config/route/v3) PHP_ADD_BUILD_DIR($ext_builddir/src/core/ext/upb-generated/envoy/config/trace/v3) PHP_ADD_BUILD_DIR($ext_builddir/src/core/ext/upb-generated/envoy/extensions/clusters/aggregate/v3) - PHP_ADD_BUILD_DIR($ext_builddir/src/core/ext/upb-generated/envoy/extensions/filters/http/router/v3) PHP_ADD_BUILD_DIR($ext_builddir/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3) PHP_ADD_BUILD_DIR($ext_builddir/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3) PHP_ADD_BUILD_DIR($ext_builddir/src/core/ext/upb-generated/envoy/service/cluster/v3) @@ -1080,7 +1074,6 @@ if test "$PHP_GRPC" != "no"; then PHP_ADD_BUILD_DIR($ext_builddir/src/core/ext/upb-generated/src/proto/grpc/lb/v1) PHP_ADD_BUILD_DIR($ext_builddir/src/core/ext/upb-generated/udpa/annotations) PHP_ADD_BUILD_DIR($ext_builddir/src/core/ext/upb-generated/udpa/data/orca/v1) - PHP_ADD_BUILD_DIR($ext_builddir/src/core/ext/upb-generated/udpa/type/v1) PHP_ADD_BUILD_DIR($ext_builddir/src/core/ext/upb-generated/validate) PHP_ADD_BUILD_DIR($ext_builddir/src/core/ext/upb-generated/xds/core/v3) PHP_ADD_BUILD_DIR($ext_builddir/src/core/ext/upbdefs-generated/envoy/annotations) @@ -1092,7 +1085,6 @@ if test "$PHP_GRPC" != "no"; then PHP_ADD_BUILD_DIR($ext_builddir/src/core/ext/upbdefs-generated/envoy/config/route/v3) PHP_ADD_BUILD_DIR($ext_builddir/src/core/ext/upbdefs-generated/envoy/config/trace/v3) PHP_ADD_BUILD_DIR($ext_builddir/src/core/ext/upbdefs-generated/envoy/extensions/clusters/aggregate/v3) - PHP_ADD_BUILD_DIR($ext_builddir/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/router/v3) PHP_ADD_BUILD_DIR($ext_builddir/src/core/ext/upbdefs-generated/envoy/extensions/filters/network/http_connection_manager/v3) PHP_ADD_BUILD_DIR($ext_builddir/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3) PHP_ADD_BUILD_DIR($ext_builddir/src/core/ext/upbdefs-generated/envoy/service/cluster/v3) @@ -1109,7 +1101,6 @@ if test "$PHP_GRPC" != "no"; then PHP_ADD_BUILD_DIR($ext_builddir/src/core/ext/upbdefs-generated/google/protobuf) PHP_ADD_BUILD_DIR($ext_builddir/src/core/ext/upbdefs-generated/google/rpc) PHP_ADD_BUILD_DIR($ext_builddir/src/core/ext/upbdefs-generated/udpa/annotations) - PHP_ADD_BUILD_DIR($ext_builddir/src/core/ext/upbdefs-generated/udpa/type/v1) PHP_ADD_BUILD_DIR($ext_builddir/src/core/ext/upbdefs-generated/validate) PHP_ADD_BUILD_DIR($ext_builddir/src/core/ext/upbdefs-generated/xds/core/v3) PHP_ADD_BUILD_DIR($ext_builddir/src/core/ext/xds) diff --git a/config.w32 b/config.w32 index d45a565d96234..03662fc78a105 100644 --- a/config.w32 +++ b/config.w32 @@ -144,7 +144,6 @@ if (PHP_GRPC != "no") { "src\\core\\ext\\upb-generated\\envoy\\config\\route\\v3\\scoped_route.upb.c " + "src\\core\\ext\\upb-generated\\envoy\\config\\trace\\v3\\http_tracer.upb.c " + "src\\core\\ext\\upb-generated\\envoy\\extensions\\clusters\\aggregate\\v3\\cluster.upb.c " + - "src\\core\\ext\\upb-generated\\envoy\\extensions\\filters\\http\\router\\v3\\router.upb.c " + "src\\core\\ext\\upb-generated\\envoy\\extensions\\filters\\network\\http_connection_manager\\v3\\http_connection_manager.upb.c " + "src\\core\\ext\\upb-generated\\envoy\\extensions\\transport_sockets\\tls\\v3\\cert.upb.c " + "src\\core\\ext\\upb-generated\\envoy\\extensions\\transport_sockets\\tls\\v3\\common.upb.c " + @@ -193,7 +192,6 @@ if (PHP_GRPC != "no") { "src\\core\\ext\\upb-generated\\udpa\\annotations\\status.upb.c " + "src\\core\\ext\\upb-generated\\udpa\\annotations\\versioning.upb.c " + "src\\core\\ext\\upb-generated\\udpa\\data\\orca\\v1\\orca_load_report.upb.c " + - "src\\core\\ext\\upb-generated\\udpa\\type\\v1\\typed_struct.upb.c " + "src\\core\\ext\\upb-generated\\validate\\validate.upb.c " + "src\\core\\ext\\upb-generated\\xds\\core\\v3\\authority.upb.c " + "src\\core\\ext\\upb-generated\\xds\\core\\v3\\collection_entry.upb.c " + @@ -233,7 +231,6 @@ if (PHP_GRPC != "no") { "src\\core\\ext\\upbdefs-generated\\envoy\\config\\route\\v3\\scoped_route.upbdefs.c " + "src\\core\\ext\\upbdefs-generated\\envoy\\config\\trace\\v3\\http_tracer.upbdefs.c " + "src\\core\\ext\\upbdefs-generated\\envoy\\extensions\\clusters\\aggregate\\v3\\cluster.upbdefs.c " + - "src\\core\\ext\\upbdefs-generated\\envoy\\extensions\\filters\\http\\router\\v3\\router.upbdefs.c " + "src\\core\\ext\\upbdefs-generated\\envoy\\extensions\\filters\\network\\http_connection_manager\\v3\\http_connection_manager.upbdefs.c " + "src\\core\\ext\\upbdefs-generated\\envoy\\extensions\\transport_sockets\\tls\\v3\\cert.upbdefs.c " + "src\\core\\ext\\upbdefs-generated\\envoy\\extensions\\transport_sockets\\tls\\v3\\common.upbdefs.c " + @@ -274,7 +271,6 @@ if (PHP_GRPC != "no") { "src\\core\\ext\\upbdefs-generated\\udpa\\annotations\\sensitive.upbdefs.c " + "src\\core\\ext\\upbdefs-generated\\udpa\\annotations\\status.upbdefs.c " + "src\\core\\ext\\upbdefs-generated\\udpa\\annotations\\versioning.upbdefs.c " + - "src\\core\\ext\\upbdefs-generated\\udpa\\type\\v1\\typed_struct.upbdefs.c " + "src\\core\\ext\\upbdefs-generated\\validate\\validate.upbdefs.c " + "src\\core\\ext\\upbdefs-generated\\xds\\core\\v3\\authority.upbdefs.c " + "src\\core\\ext\\upbdefs-generated\\xds\\core\\v3\\collection_entry.upbdefs.c " + @@ -290,7 +286,6 @@ if (PHP_GRPC != "no") { "src\\core\\ext\\xds\\xds_certificate_provider.cc " + "src\\core\\ext\\xds\\xds_client.cc " + "src\\core\\ext\\xds\\xds_client_stats.cc " + - "src\\core\\ext\\xds\\xds_http_filters.cc " + "src\\core\\ext\\xds\\xds_server_config_fetcher.cc " + "src\\core\\lib\\avl\\avl.cc " + "src\\core\\lib\\backoff\\backoff.cc " + @@ -1076,9 +1071,6 @@ if (PHP_GRPC != "no") { FSO.CreateFolder(base_dir+"\\ext\\grpc\\src\\core\\ext\\upb-generated\\envoy\\extensions\\clusters\\aggregate"); FSO.CreateFolder(base_dir+"\\ext\\grpc\\src\\core\\ext\\upb-generated\\envoy\\extensions\\clusters\\aggregate\\v3"); FSO.CreateFolder(base_dir+"\\ext\\grpc\\src\\core\\ext\\upb-generated\\envoy\\extensions\\filters"); - FSO.CreateFolder(base_dir+"\\ext\\grpc\\src\\core\\ext\\upb-generated\\envoy\\extensions\\filters\\http"); - FSO.CreateFolder(base_dir+"\\ext\\grpc\\src\\core\\ext\\upb-generated\\envoy\\extensions\\filters\\http\\router"); - FSO.CreateFolder(base_dir+"\\ext\\grpc\\src\\core\\ext\\upb-generated\\envoy\\extensions\\filters\\http\\router\\v3"); FSO.CreateFolder(base_dir+"\\ext\\grpc\\src\\core\\ext\\upb-generated\\envoy\\extensions\\filters\\network"); FSO.CreateFolder(base_dir+"\\ext\\grpc\\src\\core\\ext\\upb-generated\\envoy\\extensions\\filters\\network\\http_connection_manager"); FSO.CreateFolder(base_dir+"\\ext\\grpc\\src\\core\\ext\\upb-generated\\envoy\\extensions\\filters\\network\\http_connection_manager\\v3"); @@ -1125,8 +1117,6 @@ if (PHP_GRPC != "no") { FSO.CreateFolder(base_dir+"\\ext\\grpc\\src\\core\\ext\\upb-generated\\udpa\\data"); FSO.CreateFolder(base_dir+"\\ext\\grpc\\src\\core\\ext\\upb-generated\\udpa\\data\\orca"); FSO.CreateFolder(base_dir+"\\ext\\grpc\\src\\core\\ext\\upb-generated\\udpa\\data\\orca\\v1"); - FSO.CreateFolder(base_dir+"\\ext\\grpc\\src\\core\\ext\\upb-generated\\udpa\\type"); - FSO.CreateFolder(base_dir+"\\ext\\grpc\\src\\core\\ext\\upb-generated\\udpa\\type\\v1"); FSO.CreateFolder(base_dir+"\\ext\\grpc\\src\\core\\ext\\upb-generated\\validate"); FSO.CreateFolder(base_dir+"\\ext\\grpc\\src\\core\\ext\\upb-generated\\xds"); FSO.CreateFolder(base_dir+"\\ext\\grpc\\src\\core\\ext\\upb-generated\\xds\\core"); @@ -1154,9 +1144,6 @@ if (PHP_GRPC != "no") { FSO.CreateFolder(base_dir+"\\ext\\grpc\\src\\core\\ext\\upbdefs-generated\\envoy\\extensions\\clusters\\aggregate"); FSO.CreateFolder(base_dir+"\\ext\\grpc\\src\\core\\ext\\upbdefs-generated\\envoy\\extensions\\clusters\\aggregate\\v3"); FSO.CreateFolder(base_dir+"\\ext\\grpc\\src\\core\\ext\\upbdefs-generated\\envoy\\extensions\\filters"); - FSO.CreateFolder(base_dir+"\\ext\\grpc\\src\\core\\ext\\upbdefs-generated\\envoy\\extensions\\filters\\http"); - FSO.CreateFolder(base_dir+"\\ext\\grpc\\src\\core\\ext\\upbdefs-generated\\envoy\\extensions\\filters\\http\\router"); - FSO.CreateFolder(base_dir+"\\ext\\grpc\\src\\core\\ext\\upbdefs-generated\\envoy\\extensions\\filters\\http\\router\\v3"); FSO.CreateFolder(base_dir+"\\ext\\grpc\\src\\core\\ext\\upbdefs-generated\\envoy\\extensions\\filters\\network"); FSO.CreateFolder(base_dir+"\\ext\\grpc\\src\\core\\ext\\upbdefs-generated\\envoy\\extensions\\filters\\network\\http_connection_manager"); FSO.CreateFolder(base_dir+"\\ext\\grpc\\src\\core\\ext\\upbdefs-generated\\envoy\\extensions\\filters\\network\\http_connection_manager\\v3"); @@ -1190,8 +1177,6 @@ if (PHP_GRPC != "no") { FSO.CreateFolder(base_dir+"\\ext\\grpc\\src\\core\\ext\\upbdefs-generated\\google\\rpc"); FSO.CreateFolder(base_dir+"\\ext\\grpc\\src\\core\\ext\\upbdefs-generated\\udpa"); FSO.CreateFolder(base_dir+"\\ext\\grpc\\src\\core\\ext\\upbdefs-generated\\udpa\\annotations"); - FSO.CreateFolder(base_dir+"\\ext\\grpc\\src\\core\\ext\\upbdefs-generated\\udpa\\type"); - FSO.CreateFolder(base_dir+"\\ext\\grpc\\src\\core\\ext\\upbdefs-generated\\udpa\\type\\v1"); FSO.CreateFolder(base_dir+"\\ext\\grpc\\src\\core\\ext\\upbdefs-generated\\validate"); FSO.CreateFolder(base_dir+"\\ext\\grpc\\src\\core\\ext\\upbdefs-generated\\xds"); FSO.CreateFolder(base_dir+"\\ext\\grpc\\src\\core\\ext\\upbdefs-generated\\xds\\core"); diff --git a/gRPC-C++.podspec b/gRPC-C++.podspec index 69f5b8290e0bb..61f45bb0a259b 100644 --- a/gRPC-C++.podspec +++ b/gRPC-C++.podspec @@ -315,7 +315,6 @@ Pod::Spec.new do |s| 'src/core/ext/upb-generated/envoy/config/route/v3/scoped_route.upb.h', 'src/core/ext/upb-generated/envoy/config/trace/v3/http_tracer.upb.h', 'src/core/ext/upb-generated/envoy/extensions/clusters/aggregate/v3/cluster.upb.h', - 'src/core/ext/upb-generated/envoy/extensions/filters/http/router/v3/router.upb.h', 'src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.h', 'src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/cert.upb.h', 'src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.h', @@ -364,7 +363,6 @@ Pod::Spec.new do |s| 'src/core/ext/upb-generated/udpa/annotations/status.upb.h', 'src/core/ext/upb-generated/udpa/annotations/versioning.upb.h', 'src/core/ext/upb-generated/udpa/data/orca/v1/orca_load_report.upb.h', - 'src/core/ext/upb-generated/udpa/type/v1/typed_struct.upb.h', 'src/core/ext/upb-generated/validate/validate.upb.h', 'src/core/ext/upb-generated/xds/core/v3/authority.upb.h', 'src/core/ext/upb-generated/xds/core/v3/collection_entry.upb.h', @@ -404,7 +402,6 @@ Pod::Spec.new do |s| 'src/core/ext/upbdefs-generated/envoy/config/route/v3/scoped_route.upbdefs.h', 'src/core/ext/upbdefs-generated/envoy/config/trace/v3/http_tracer.upbdefs.h', 'src/core/ext/upbdefs-generated/envoy/extensions/clusters/aggregate/v3/cluster.upbdefs.h', - 'src/core/ext/upbdefs-generated/envoy/extensions/filters/http/router/v3/router.upbdefs.h', 'src/core/ext/upbdefs-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.h', 'src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/cert.upbdefs.h', 'src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/common.upbdefs.h', @@ -445,7 +442,6 @@ Pod::Spec.new do |s| 'src/core/ext/upbdefs-generated/udpa/annotations/sensitive.upbdefs.h', 'src/core/ext/upbdefs-generated/udpa/annotations/status.upbdefs.h', 'src/core/ext/upbdefs-generated/udpa/annotations/versioning.upbdefs.h', - 'src/core/ext/upbdefs-generated/udpa/type/v1/typed_struct.upbdefs.h', 'src/core/ext/upbdefs-generated/validate/validate.upbdefs.h', 'src/core/ext/upbdefs-generated/xds/core/v3/authority.upbdefs.h', 'src/core/ext/upbdefs-generated/xds/core/v3/collection_entry.upbdefs.h', @@ -463,7 +459,6 @@ Pod::Spec.new do |s| 'src/core/ext/xds/xds_channel_args.h', 'src/core/ext/xds/xds_client.h', 'src/core/ext/xds/xds_client_stats.h', - 'src/core/ext/xds/xds_http_filters.h', 'src/core/lib/avl/avl.h', 'src/core/lib/backoff/backoff.h', 'src/core/lib/channel/channel_args.h', @@ -941,7 +936,6 @@ Pod::Spec.new do |s| 'src/core/ext/upb-generated/envoy/config/route/v3/scoped_route.upb.h', 'src/core/ext/upb-generated/envoy/config/trace/v3/http_tracer.upb.h', 'src/core/ext/upb-generated/envoy/extensions/clusters/aggregate/v3/cluster.upb.h', - 'src/core/ext/upb-generated/envoy/extensions/filters/http/router/v3/router.upb.h', 'src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.h', 'src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/cert.upb.h', 'src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.h', @@ -990,7 +984,6 @@ Pod::Spec.new do |s| 'src/core/ext/upb-generated/udpa/annotations/status.upb.h', 'src/core/ext/upb-generated/udpa/annotations/versioning.upb.h', 'src/core/ext/upb-generated/udpa/data/orca/v1/orca_load_report.upb.h', - 'src/core/ext/upb-generated/udpa/type/v1/typed_struct.upb.h', 'src/core/ext/upb-generated/validate/validate.upb.h', 'src/core/ext/upb-generated/xds/core/v3/authority.upb.h', 'src/core/ext/upb-generated/xds/core/v3/collection_entry.upb.h', @@ -1030,7 +1023,6 @@ Pod::Spec.new do |s| 'src/core/ext/upbdefs-generated/envoy/config/route/v3/scoped_route.upbdefs.h', 'src/core/ext/upbdefs-generated/envoy/config/trace/v3/http_tracer.upbdefs.h', 'src/core/ext/upbdefs-generated/envoy/extensions/clusters/aggregate/v3/cluster.upbdefs.h', - 'src/core/ext/upbdefs-generated/envoy/extensions/filters/http/router/v3/router.upbdefs.h', 'src/core/ext/upbdefs-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.h', 'src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/cert.upbdefs.h', 'src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/common.upbdefs.h', @@ -1071,7 +1063,6 @@ Pod::Spec.new do |s| 'src/core/ext/upbdefs-generated/udpa/annotations/sensitive.upbdefs.h', 'src/core/ext/upbdefs-generated/udpa/annotations/status.upbdefs.h', 'src/core/ext/upbdefs-generated/udpa/annotations/versioning.upbdefs.h', - 'src/core/ext/upbdefs-generated/udpa/type/v1/typed_struct.upbdefs.h', 'src/core/ext/upbdefs-generated/validate/validate.upbdefs.h', 'src/core/ext/upbdefs-generated/xds/core/v3/authority.upbdefs.h', 'src/core/ext/upbdefs-generated/xds/core/v3/collection_entry.upbdefs.h', @@ -1089,7 +1080,6 @@ Pod::Spec.new do |s| 'src/core/ext/xds/xds_channel_args.h', 'src/core/ext/xds/xds_client.h', 'src/core/ext/xds/xds_client_stats.h', - 'src/core/ext/xds/xds_http_filters.h', 'src/core/lib/avl/avl.h', 'src/core/lib/backoff/backoff.h', 'src/core/lib/channel/channel_args.h', diff --git a/gRPC-Core.podspec b/gRPC-Core.podspec index 91aebaa6dd6a5..57b0e1948841d 100644 --- a/gRPC-Core.podspec +++ b/gRPC-Core.podspec @@ -442,8 +442,6 @@ Pod::Spec.new do |s| 'src/core/ext/upb-generated/envoy/config/trace/v3/http_tracer.upb.h', 'src/core/ext/upb-generated/envoy/extensions/clusters/aggregate/v3/cluster.upb.c', 'src/core/ext/upb-generated/envoy/extensions/clusters/aggregate/v3/cluster.upb.h', - 'src/core/ext/upb-generated/envoy/extensions/filters/http/router/v3/router.upb.c', - 'src/core/ext/upb-generated/envoy/extensions/filters/http/router/v3/router.upb.h', 'src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.c', 'src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.h', 'src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/cert.upb.c', @@ -540,8 +538,6 @@ Pod::Spec.new do |s| 'src/core/ext/upb-generated/udpa/annotations/versioning.upb.h', 'src/core/ext/upb-generated/udpa/data/orca/v1/orca_load_report.upb.c', 'src/core/ext/upb-generated/udpa/data/orca/v1/orca_load_report.upb.h', - 'src/core/ext/upb-generated/udpa/type/v1/typed_struct.upb.c', - 'src/core/ext/upb-generated/udpa/type/v1/typed_struct.upb.h', 'src/core/ext/upb-generated/validate/validate.upb.c', 'src/core/ext/upb-generated/validate/validate.upb.h', 'src/core/ext/upb-generated/xds/core/v3/authority.upb.c', @@ -620,8 +616,6 @@ Pod::Spec.new do |s| 'src/core/ext/upbdefs-generated/envoy/config/trace/v3/http_tracer.upbdefs.h', 'src/core/ext/upbdefs-generated/envoy/extensions/clusters/aggregate/v3/cluster.upbdefs.c', 'src/core/ext/upbdefs-generated/envoy/extensions/clusters/aggregate/v3/cluster.upbdefs.h', - 'src/core/ext/upbdefs-generated/envoy/extensions/filters/http/router/v3/router.upbdefs.c', - 'src/core/ext/upbdefs-generated/envoy/extensions/filters/http/router/v3/router.upbdefs.h', 'src/core/ext/upbdefs-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.c', 'src/core/ext/upbdefs-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.h', 'src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/cert.upbdefs.c', @@ -702,8 +696,6 @@ Pod::Spec.new do |s| 'src/core/ext/upbdefs-generated/udpa/annotations/status.upbdefs.h', 'src/core/ext/upbdefs-generated/udpa/annotations/versioning.upbdefs.c', 'src/core/ext/upbdefs-generated/udpa/annotations/versioning.upbdefs.h', - 'src/core/ext/upbdefs-generated/udpa/type/v1/typed_struct.upbdefs.c', - 'src/core/ext/upbdefs-generated/udpa/type/v1/typed_struct.upbdefs.h', 'src/core/ext/upbdefs-generated/validate/validate.upbdefs.c', 'src/core/ext/upbdefs-generated/validate/validate.upbdefs.h', 'src/core/ext/upbdefs-generated/xds/core/v3/authority.upbdefs.c', @@ -736,8 +728,6 @@ Pod::Spec.new do |s| 'src/core/ext/xds/xds_client.h', 'src/core/ext/xds/xds_client_stats.cc', 'src/core/ext/xds/xds_client_stats.h', - 'src/core/ext/xds/xds_http_filters.cc', - 'src/core/ext/xds/xds_http_filters.h', 'src/core/ext/xds/xds_server_config_fetcher.cc', 'src/core/lib/avl/avl.cc', 'src/core/lib/avl/avl.h', @@ -1482,7 +1472,6 @@ Pod::Spec.new do |s| 'src/core/ext/upb-generated/envoy/config/route/v3/scoped_route.upb.h', 'src/core/ext/upb-generated/envoy/config/trace/v3/http_tracer.upb.h', 'src/core/ext/upb-generated/envoy/extensions/clusters/aggregate/v3/cluster.upb.h', - 'src/core/ext/upb-generated/envoy/extensions/filters/http/router/v3/router.upb.h', 'src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.h', 'src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/cert.upb.h', 'src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.h', @@ -1531,7 +1520,6 @@ Pod::Spec.new do |s| 'src/core/ext/upb-generated/udpa/annotations/status.upb.h', 'src/core/ext/upb-generated/udpa/annotations/versioning.upb.h', 'src/core/ext/upb-generated/udpa/data/orca/v1/orca_load_report.upb.h', - 'src/core/ext/upb-generated/udpa/type/v1/typed_struct.upb.h', 'src/core/ext/upb-generated/validate/validate.upb.h', 'src/core/ext/upb-generated/xds/core/v3/authority.upb.h', 'src/core/ext/upb-generated/xds/core/v3/collection_entry.upb.h', @@ -1571,7 +1559,6 @@ Pod::Spec.new do |s| 'src/core/ext/upbdefs-generated/envoy/config/route/v3/scoped_route.upbdefs.h', 'src/core/ext/upbdefs-generated/envoy/config/trace/v3/http_tracer.upbdefs.h', 'src/core/ext/upbdefs-generated/envoy/extensions/clusters/aggregate/v3/cluster.upbdefs.h', - 'src/core/ext/upbdefs-generated/envoy/extensions/filters/http/router/v3/router.upbdefs.h', 'src/core/ext/upbdefs-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.h', 'src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/cert.upbdefs.h', 'src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/common.upbdefs.h', @@ -1612,7 +1599,6 @@ Pod::Spec.new do |s| 'src/core/ext/upbdefs-generated/udpa/annotations/sensitive.upbdefs.h', 'src/core/ext/upbdefs-generated/udpa/annotations/status.upbdefs.h', 'src/core/ext/upbdefs-generated/udpa/annotations/versioning.upbdefs.h', - 'src/core/ext/upbdefs-generated/udpa/type/v1/typed_struct.upbdefs.h', 'src/core/ext/upbdefs-generated/validate/validate.upbdefs.h', 'src/core/ext/upbdefs-generated/xds/core/v3/authority.upbdefs.h', 'src/core/ext/upbdefs-generated/xds/core/v3/collection_entry.upbdefs.h', @@ -1630,7 +1616,6 @@ Pod::Spec.new do |s| 'src/core/ext/xds/xds_channel_args.h', 'src/core/ext/xds/xds_client.h', 'src/core/ext/xds/xds_client_stats.h', - 'src/core/ext/xds/xds_http_filters.h', 'src/core/lib/avl/avl.h', 'src/core/lib/backoff/backoff.h', 'src/core/lib/channel/channel_args.h', diff --git a/grpc.gemspec b/grpc.gemspec index f5065a5d22d47..5c3d0a5ccad1d 100644 --- a/grpc.gemspec +++ b/grpc.gemspec @@ -357,8 +357,6 @@ Gem::Specification.new do |s| s.files += %w( src/core/ext/upb-generated/envoy/config/trace/v3/http_tracer.upb.h ) s.files += %w( src/core/ext/upb-generated/envoy/extensions/clusters/aggregate/v3/cluster.upb.c ) s.files += %w( src/core/ext/upb-generated/envoy/extensions/clusters/aggregate/v3/cluster.upb.h ) - s.files += %w( src/core/ext/upb-generated/envoy/extensions/filters/http/router/v3/router.upb.c ) - s.files += %w( src/core/ext/upb-generated/envoy/extensions/filters/http/router/v3/router.upb.h ) s.files += %w( src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.c ) s.files += %w( src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.h ) s.files += %w( src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/cert.upb.c ) @@ -455,8 +453,6 @@ Gem::Specification.new do |s| s.files += %w( src/core/ext/upb-generated/udpa/annotations/versioning.upb.h ) s.files += %w( src/core/ext/upb-generated/udpa/data/orca/v1/orca_load_report.upb.c ) s.files += %w( src/core/ext/upb-generated/udpa/data/orca/v1/orca_load_report.upb.h ) - s.files += %w( src/core/ext/upb-generated/udpa/type/v1/typed_struct.upb.c ) - s.files += %w( src/core/ext/upb-generated/udpa/type/v1/typed_struct.upb.h ) s.files += %w( src/core/ext/upb-generated/validate/validate.upb.c ) s.files += %w( src/core/ext/upb-generated/validate/validate.upb.h ) s.files += %w( src/core/ext/upb-generated/xds/core/v3/authority.upb.c ) @@ -535,8 +531,6 @@ Gem::Specification.new do |s| s.files += %w( src/core/ext/upbdefs-generated/envoy/config/trace/v3/http_tracer.upbdefs.h ) s.files += %w( src/core/ext/upbdefs-generated/envoy/extensions/clusters/aggregate/v3/cluster.upbdefs.c ) s.files += %w( src/core/ext/upbdefs-generated/envoy/extensions/clusters/aggregate/v3/cluster.upbdefs.h ) - s.files += %w( src/core/ext/upbdefs-generated/envoy/extensions/filters/http/router/v3/router.upbdefs.c ) - s.files += %w( src/core/ext/upbdefs-generated/envoy/extensions/filters/http/router/v3/router.upbdefs.h ) s.files += %w( src/core/ext/upbdefs-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.c ) s.files += %w( src/core/ext/upbdefs-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.h ) s.files += %w( src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/cert.upbdefs.c ) @@ -617,8 +611,6 @@ Gem::Specification.new do |s| s.files += %w( src/core/ext/upbdefs-generated/udpa/annotations/status.upbdefs.h ) s.files += %w( src/core/ext/upbdefs-generated/udpa/annotations/versioning.upbdefs.c ) s.files += %w( src/core/ext/upbdefs-generated/udpa/annotations/versioning.upbdefs.h ) - s.files += %w( src/core/ext/upbdefs-generated/udpa/type/v1/typed_struct.upbdefs.c ) - s.files += %w( src/core/ext/upbdefs-generated/udpa/type/v1/typed_struct.upbdefs.h ) s.files += %w( src/core/ext/upbdefs-generated/validate/validate.upbdefs.c ) s.files += %w( src/core/ext/upbdefs-generated/validate/validate.upbdefs.h ) s.files += %w( src/core/ext/upbdefs-generated/xds/core/v3/authority.upbdefs.c ) @@ -651,8 +643,6 @@ Gem::Specification.new do |s| s.files += %w( src/core/ext/xds/xds_client.h ) s.files += %w( src/core/ext/xds/xds_client_stats.cc ) s.files += %w( src/core/ext/xds/xds_client_stats.h ) - s.files += %w( src/core/ext/xds/xds_http_filters.cc ) - s.files += %w( src/core/ext/xds/xds_http_filters.h ) s.files += %w( src/core/ext/xds/xds_server_config_fetcher.cc ) s.files += %w( src/core/lib/avl/avl.cc ) s.files += %w( src/core/lib/avl/avl.h ) diff --git a/grpc.gyp b/grpc.gyp index 15b2d727c384b..06527d923a646 100644 --- a/grpc.gyp +++ b/grpc.gyp @@ -591,7 +591,6 @@ 'src/core/ext/upb-generated/envoy/config/route/v3/scoped_route.upb.c', 'src/core/ext/upb-generated/envoy/config/trace/v3/http_tracer.upb.c', 'src/core/ext/upb-generated/envoy/extensions/clusters/aggregate/v3/cluster.upb.c', - 'src/core/ext/upb-generated/envoy/extensions/filters/http/router/v3/router.upb.c', 'src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.c', 'src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/cert.upb.c', 'src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.c', @@ -639,7 +638,6 @@ 'src/core/ext/upb-generated/udpa/annotations/status.upb.c', 'src/core/ext/upb-generated/udpa/annotations/versioning.upb.c', 'src/core/ext/upb-generated/udpa/data/orca/v1/orca_load_report.upb.c', - 'src/core/ext/upb-generated/udpa/type/v1/typed_struct.upb.c', 'src/core/ext/upb-generated/validate/validate.upb.c', 'src/core/ext/upb-generated/xds/core/v3/authority.upb.c', 'src/core/ext/upb-generated/xds/core/v3/collection_entry.upb.c', @@ -679,7 +677,6 @@ 'src/core/ext/upbdefs-generated/envoy/config/route/v3/scoped_route.upbdefs.c', 'src/core/ext/upbdefs-generated/envoy/config/trace/v3/http_tracer.upbdefs.c', 'src/core/ext/upbdefs-generated/envoy/extensions/clusters/aggregate/v3/cluster.upbdefs.c', - 'src/core/ext/upbdefs-generated/envoy/extensions/filters/http/router/v3/router.upbdefs.c', 'src/core/ext/upbdefs-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.c', 'src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/cert.upbdefs.c', 'src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/common.upbdefs.c', @@ -719,7 +716,6 @@ 'src/core/ext/upbdefs-generated/udpa/annotations/sensitive.upbdefs.c', 'src/core/ext/upbdefs-generated/udpa/annotations/status.upbdefs.c', 'src/core/ext/upbdefs-generated/udpa/annotations/versioning.upbdefs.c', - 'src/core/ext/upbdefs-generated/udpa/type/v1/typed_struct.upbdefs.c', 'src/core/ext/upbdefs-generated/validate/validate.upbdefs.c', 'src/core/ext/upbdefs-generated/xds/core/v3/authority.upbdefs.c', 'src/core/ext/upbdefs-generated/xds/core/v3/collection_entry.upbdefs.c', @@ -735,7 +731,6 @@ 'src/core/ext/xds/xds_certificate_provider.cc', 'src/core/ext/xds/xds_client.cc', 'src/core/ext/xds/xds_client_stats.cc', - 'src/core/ext/xds/xds_http_filters.cc', 'src/core/ext/xds/xds_server_config_fetcher.cc', 'src/core/lib/avl/avl.cc', 'src/core/lib/backoff/backoff.cc', diff --git a/package.xml b/package.xml index 56873582e2fd0..4368ed9d9e358 100644 --- a/package.xml +++ b/package.xml @@ -337,8 +337,6 @@ - - @@ -435,8 +433,6 @@ - - @@ -515,8 +511,6 @@ - - @@ -597,8 +591,6 @@ - - @@ -631,8 +623,6 @@ - - diff --git a/src/core/ext/filters/client_channel/client_channel.cc b/src/core/ext/filters/client_channel/client_channel.cc index 455e1460c4f23..1171f38aa742e 100644 --- a/src/core/ext/filters/client_channel/client_channel.cc +++ b/src/core/ext/filters/client_channel/client_channel.cc @@ -2297,7 +2297,7 @@ void ChannelData::UpdateServiceConfigInDataPlaneLocked() { server_name_, retry_throttle_config.value().max_milli_tokens, retry_throttle_config.value().milli_token_ratio); } - // Construct dynamic filter stack. + // Construct per-LB filter stack. std::vector filters = config_selector->GetFilters(); filters.push_back(&kDynamicTerminationFilterVtable); @@ -2312,7 +2312,6 @@ void ChannelData::UpdateServiceConfigInDataPlaneLocked() { } grpc_channel_args* new_args = grpc_channel_args_copy_and_add( channel_args_, args_to_add.data(), args_to_add.size()); - new_args = config_selector->ModifyChannelArgs(new_args); RefCountedPtr dynamic_filters = DynamicFilters::Create(new_args, std::move(filters)); GPR_ASSERT(dynamic_filters != nullptr); diff --git a/src/core/ext/filters/client_channel/config_selector.h b/src/core/ext/filters/client_channel/config_selector.h index 61916d2bc3afb..6e41faaecaaaa 100644 --- a/src/core/ext/filters/client_channel/config_selector.h +++ b/src/core/ext/filters/client_channel/config_selector.h @@ -82,16 +82,8 @@ class ConfigSelector : public RefCounted { return cs1->Equals(cs2); } - // The channel will call this when the resolver returns a new ConfigSelector - // to determine what set of dynamic filters will be configured. virtual std::vector GetFilters() { return {}; } - // Modifies channel args to be passed to the dynamic filter stack. - // Takes ownership of argument. Caller takes ownership of result. - virtual grpc_channel_args* ModifyChannelArgs(grpc_channel_args* args) { - return args; - } - virtual CallConfig GetCallConfig(GetCallConfigArgs args) = 0; grpc_arg MakeChannelArg() const; diff --git a/src/core/ext/filters/client_channel/dynamic_filters.cc b/src/core/ext/filters/client_channel/dynamic_filters.cc index 1286fcec42c3d..afde3c751da32 100644 --- a/src/core/ext/filters/client_channel/dynamic_filters.cc +++ b/src/core/ext/filters/client_channel/dynamic_filters.cc @@ -18,7 +18,6 @@ #include "src/core/ext/filters/client_channel/dynamic_filters.h" -#include "src/core/lib/channel/channel_args.h" #include "src/core/lib/channel/channel_stack.h" #include "src/core/lib/surface/lame_client.h" @@ -161,16 +160,12 @@ RefCountedPtr DynamicFilters::Create( // Attempt to create channel stack from requested filters. auto p = CreateChannelStack(args, std::move(filters)); if (p.second != GRPC_ERROR_NONE) { - // Channel stack creation failed with requested filters. - // Create with lame filter instead. + // Initial pass failed. Create with lame filter. grpc_error* error = p.second; - grpc_arg error_arg = MakeLameClientErrorArg(error); - grpc_channel_args* new_args = - grpc_channel_args_copy_and_add(args, &error_arg, 1); - GRPC_ERROR_UNREF(error); - p = CreateChannelStack(new_args, {&grpc_lame_filter}); + p = CreateChannelStack(args, {&grpc_lame_filter}); GPR_ASSERT(p.second == GRPC_ERROR_NONE); - grpc_channel_args_destroy(new_args); + grpc_channel_element* elem = grpc_channel_stack_element(p.first, 0); + SetLameFilterError(elem, error); } return MakeRefCounted(p.first); } diff --git a/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc b/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc index f95b957e26c1f..5e8620736c5a2 100644 --- a/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +++ b/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc @@ -26,11 +26,9 @@ #include "src/core/ext/filters/client_channel/config_selector.h" #include "src/core/ext/filters/client_channel/resolver_registry.h" #include "src/core/ext/xds/xds_client.h" -#include "src/core/ext/xds/xds_http_filters.h" #include "src/core/lib/channel/channel_args.h" #include "src/core/lib/iomgr/closure.h" #include "src/core/lib/iomgr/exec_ctx.h" -#include "src/core/lib/surface/lame_client.h" #include "src/core/lib/transport/timeout_encoding.h" namespace grpc_core { @@ -137,7 +135,9 @@ class XdsResolver : public Resolver { class XdsConfigSelector : public ConfigSelector { public: - XdsConfigSelector(RefCountedPtr resolver, grpc_error** error); + XdsConfigSelector(RefCountedPtr resolver, + const std::vector& routes, + grpc_error* error); ~XdsConfigSelector() override; const char* name() const override { return "XdsConfigSelector"; } @@ -151,41 +151,26 @@ class XdsResolver : public Resolver { CallConfig GetCallConfig(GetCallConfigArgs args) override; - std::vector GetFilters() override { - return filters_; - } - - grpc_channel_args* ModifyChannelArgs(grpc_channel_args* args) override; - private: struct Route { - struct ClusterWeightState { - uint32_t range_end; - absl::string_view cluster; - RefCountedPtr method_config; - - bool operator==(const ClusterWeightState& other) const; - }; - XdsApi::Route route; + absl::InlinedVector, 2> + weighted_cluster_state; RefCountedPtr method_config; - absl::InlinedVector weighted_cluster_state; - - bool operator==(const Route& other) const; + bool operator==(const Route& other) const { + return route == other.route && + weighted_cluster_state == other.weighted_cluster_state; + } }; using RouteTable = std::vector; void MaybeAddCluster(const std::string& name); - grpc_error* CreateMethodConfig( - const XdsApi::Route& route, - const XdsApi::Route::ClusterWeight* cluster_weight, - RefCountedPtr* method_config); + grpc_error* CreateMethodConfig(RefCountedPtr* method_config, + const XdsApi::Route& route); RefCountedPtr resolver_; RouteTable route_table_; std::map> clusters_; - std::vector filters_; - grpc_error* filter_error_ = GRPC_ERROR_NONE; }; void OnListenerUpdate(XdsApi::LdsUpdate listener); @@ -202,20 +187,13 @@ class XdsResolver : public Resolver { std::string server_name_; const grpc_channel_args* args_; grpc_pollset_set* interested_parties_; - RefCountedPtr xds_client_; - XdsClient::ListenerWatcherInterface* listener_watcher_ = nullptr; - // This will not contain the RouteConfiguration, even if it comes with the - // LDS response; instead, the relevant VirtualHost from the - // RouteConfiguration will be saved in current_virtual_host_. - XdsApi::LdsUpdate current_listener_; - std::string route_config_name_; XdsClient::RouteConfigWatcherInterface* route_config_watcher_ = nullptr; - XdsApi::RdsUpdate::VirtualHost current_virtual_host_; - ClusterState::ClusterStateMap cluster_state_map_; + std::vector current_update_; + XdsApi::Duration http_max_stream_duration_; }; // @@ -282,35 +260,13 @@ void XdsResolver::Notifier::RunInWorkSerializer(grpc_error* error) { delete this; } -// -// XdsResolver::XdsConfigSelector::Route -// - -bool MethodConfigsEqual(const ServiceConfig* sc1, const ServiceConfig* sc2) { - if (sc1 == nullptr) return sc2 == nullptr; - if (sc2 == nullptr) return false; - return sc1->json_string() == sc2->json_string(); -} - -bool XdsResolver::XdsConfigSelector::Route::ClusterWeightState::operator==( - const ClusterWeightState& other) const { - return range_end == other.range_end && cluster == other.cluster && - MethodConfigsEqual(method_config.get(), other.method_config.get()); -} - -bool XdsResolver::XdsConfigSelector::Route::operator==( - const Route& other) const { - return route == other.route && - weighted_cluster_state == other.weighted_cluster_state && - MethodConfigsEqual(method_config.get(), other.method_config.get()); -} - // // XdsResolver::XdsConfigSelector // XdsResolver::XdsConfigSelector::XdsConfigSelector( - RefCountedPtr resolver, grpc_error** error) + RefCountedPtr resolver, + const std::vector& routes, grpc_error* error) : resolver_(std::move(resolver)) { if (GRPC_TRACE_FLAG_ENABLED(grpc_xds_resolver_trace)) { gpr_log(GPR_INFO, "[xds_resolver %p] creating XdsConfigSelector %p", @@ -325,8 +281,8 @@ XdsResolver::XdsConfigSelector::XdsConfigSelector( // weighted_cluster_state field points to the memory in the route field, so // moving the entry in a reallocation will cause the string_view to point to // invalid data. - route_table_.reserve(resolver_->current_virtual_host_.routes.size()); - for (auto& route : resolver_->current_virtual_host_.routes) { + route_table_.reserve(routes.size()); + for (auto& route : routes) { if (GRPC_TRACE_FLAG_ENABLED(grpc_xds_resolver_trace)) { gpr_log(GPR_INFO, "[xds_resolver %p] XdsConfigSelector %p: route: %s", resolver_.get(), this, route.ToString().c_str()); @@ -338,95 +294,27 @@ XdsResolver::XdsConfigSelector::XdsConfigSelector( // one. if (!route.max_stream_duration.has_value()) { route_entry.route.max_stream_duration = - resolver_->current_listener_.http_max_stream_duration; + resolver_->http_max_stream_duration_; } + error = CreateMethodConfig(&route_entry.method_config, route_entry.route); if (route.weighted_clusters.empty()) { - *error = CreateMethodConfig(route_entry.route, nullptr, - &route_entry.method_config); MaybeAddCluster(route.cluster_name); } else { uint32_t end = 0; for (const auto& weighted_cluster : route_entry.route.weighted_clusters) { - Route::ClusterWeightState cluster_weight_state; - *error = CreateMethodConfig(route_entry.route, &weighted_cluster, - &cluster_weight_state.method_config); - if (*error != GRPC_ERROR_NONE) return; - end += weighted_cluster.weight; - cluster_weight_state.range_end = end; - cluster_weight_state.cluster = weighted_cluster.name; - route_entry.weighted_cluster_state.push_back( - std::move(cluster_weight_state)); MaybeAddCluster(weighted_cluster.name); + end += weighted_cluster.weight; + route_entry.weighted_cluster_state.emplace_back(end, + weighted_cluster.name); } } } - // Populate filter list. - if (XdsFaultInjectionEnabled()) { - bool found_router = false; - for (const auto& http_filter : resolver_->current_listener_.http_filters) { - // Stop at the router filter. It's a no-op for us, and we ignore - // anything that may come after it, for compatibility with Envoy. - if (http_filter.config.config_proto_type_name == - kXdsHttpRouterFilterConfigName) { - found_router = true; - break; - } - // Find filter. This is guaranteed to succeed, because it's checked - // at config validation time in the XdsApi code. - const XdsHttpFilterImpl* filter_impl = - XdsHttpFilterRegistry::GetFilterForType( - http_filter.config.config_proto_type_name); - GPR_ASSERT(filter_impl != nullptr); - // Add C-core filter to list. - filters_.push_back(filter_impl->channel_filter()); - } - // For compatibility with Envoy, if the router filter is not - // configured, we fail all RPCs. - if (!found_router) { - filter_error_ = grpc_error_set_int( - GRPC_ERROR_CREATE_FROM_STATIC_STRING( - "no xDS HTTP router filter configured"), - GRPC_ERROR_INT_GRPC_STATUS, GRPC_STATUS_UNAVAILABLE); - filters_.push_back(&grpc_lame_filter); - } - } -} - -XdsResolver::XdsConfigSelector::~XdsConfigSelector() { - if (GRPC_TRACE_FLAG_ENABLED(grpc_xds_resolver_trace)) { - gpr_log(GPR_INFO, "[xds_resolver %p] destroying XdsConfigSelector %p", - resolver_.get(), this); - } - clusters_.clear(); - resolver_->MaybeRemoveUnusedClusters(); - GRPC_ERROR_UNREF(filter_error_); -} - -const XdsHttpFilterImpl::FilterConfig* FindFilterConfigOverride( - const std::string& instance_name, - const XdsApi::RdsUpdate::VirtualHost& vhost, const XdsApi::Route& route, - const XdsApi::Route::ClusterWeight* cluster_weight) { - // Check ClusterWeight, if any. - if (cluster_weight != nullptr) { - auto it = cluster_weight->typed_per_filter_config.find(instance_name); - if (it != cluster_weight->typed_per_filter_config.end()) return &it->second; - } - // Check Route. - auto it = route.typed_per_filter_config.find(instance_name); - if (it != route.typed_per_filter_config.end()) return &it->second; - // Check VirtualHost. - it = vhost.typed_per_filter_config.find(instance_name); - if (it != vhost.typed_per_filter_config.end()) return &it->second; - // Not found. - return nullptr; } grpc_error* XdsResolver::XdsConfigSelector::CreateMethodConfig( - const XdsApi::Route& route, - const XdsApi::Route::ClusterWeight* cluster_weight, - RefCountedPtr* method_config) { + RefCountedPtr* method_config, const XdsApi::Route& route) { + grpc_error* error = GRPC_ERROR_NONE; std::vector fields; - // Set timeout. if (route.max_stream_duration.has_value() && (route.max_stream_duration->seconds != 0 || route.max_stream_duration->nanos != 0)) { @@ -434,50 +322,6 @@ grpc_error* XdsResolver::XdsConfigSelector::CreateMethodConfig( route.max_stream_duration->seconds, route.max_stream_duration->nanos)); } - // Handle xDS HTTP filters. - std::map> per_filter_configs; - grpc_channel_args* args = grpc_channel_args_copy(resolver_->args_); - for (const auto& http_filter : resolver_->current_listener_.http_filters) { - // Stop at the router filter. It's a no-op for us, and we ignore - // anything that may come after it, for compatibility with Envoy. - if (http_filter.config.config_proto_type_name == - kXdsHttpRouterFilterConfigName) { - break; - } - // Find filter. This is guaranteed to succeed, because it's checked - // at config validation time in the XdsApi code. - const XdsHttpFilterImpl* filter_impl = - XdsHttpFilterRegistry::GetFilterForType( - http_filter.config.config_proto_type_name); - GPR_ASSERT(filter_impl != nullptr); - // Allow filter to add channel args that may affect service config - // parsing. - args = filter_impl->ModifyChannelArgs(args); - // Find config override, if any. - const XdsHttpFilterImpl::FilterConfig* config_override = - FindFilterConfigOverride(http_filter.name, - resolver_->current_virtual_host_, route, - cluster_weight); - // Generate service config for filter. - auto method_config_field = - filter_impl->GenerateServiceConfig(http_filter.config, config_override); - if (!method_config_field.ok()) { - return GRPC_ERROR_CREATE_FROM_COPIED_STRING( - absl::StrCat("failed to generate method config for HTTP filter ", - http_filter.name, ": ", - method_config_field.status().ToString()) - .c_str()); - } - per_filter_configs[method_config_field->service_config_field_name] - .push_back(method_config_field->element); - } - for (const auto& p : per_filter_configs) { - fields.emplace_back(absl::StrCat(" \"", p.first, "\": [\n", - absl::StrJoin(p.second, ",\n"), - "\n ]")); - } - // Construct service config. - grpc_error* error = GRPC_ERROR_NONE; if (!fields.empty()) { std::string json = absl::StrCat( "{\n" @@ -489,20 +333,19 @@ grpc_error* XdsResolver::XdsConfigSelector::CreateMethodConfig( absl::StrJoin(fields, ",\n"), "\n } ]\n" "}"); - *method_config = ServiceConfig::Create(args, json.c_str(), &error); + *method_config = + ServiceConfig::Create(resolver_->args_, json.c_str(), &error); } - grpc_channel_args_destroy(args); return error; } -grpc_channel_args* XdsResolver::XdsConfigSelector::ModifyChannelArgs( - grpc_channel_args* args) { - if (filter_error_ == GRPC_ERROR_NONE) return args; - grpc_arg error_arg = MakeLameClientErrorArg(filter_error_); - grpc_channel_args* new_args = - grpc_channel_args_copy_and_add(args, &error_arg, 1); - grpc_channel_args_destroy(args); - return new_args; +XdsResolver::XdsConfigSelector::~XdsConfigSelector() { + if (GRPC_TRACE_FLAG_ENABLED(grpc_xds_resolver_trace)) { + gpr_log(GPR_INFO, "[xds_resolver %p] destroying XdsConfigSelector %p", + resolver_.get(), this); + } + clusters_.clear(); + resolver_->MaybeRemoveUnusedClusters(); } void XdsResolver::XdsConfigSelector::MaybeAddCluster(const std::string& name) { @@ -594,15 +437,13 @@ ConfigSelector::CallConfig XdsResolver::XdsConfigSelector::GetCallConfig( } // Found a route match absl::string_view cluster_name; - RefCountedPtr method_config; if (entry.route.weighted_clusters.empty()) { cluster_name = entry.route.cluster_name; - method_config = entry.method_config; } else { const uint32_t key = rand() % entry.weighted_cluster_state[entry.weighted_cluster_state.size() - 1] - .range_end; + .first; // Find the index in weighted clusters corresponding to key. size_t mid = 0; size_t start_index = 0; @@ -610,9 +451,9 @@ ConfigSelector::CallConfig XdsResolver::XdsConfigSelector::GetCallConfig( size_t index = 0; while (end_index > start_index) { mid = (start_index + end_index) / 2; - if (entry.weighted_cluster_state[mid].range_end > key) { + if (entry.weighted_cluster_state[mid].first > key) { end_index = mid; - } else if (entry.weighted_cluster_state[mid].range_end < key) { + } else if (entry.weighted_cluster_state[mid].first < key) { start_index = mid + 1; } else { index = mid + 1; @@ -620,9 +461,8 @@ ConfigSelector::CallConfig XdsResolver::XdsConfigSelector::GetCallConfig( } } if (index == 0) index = start_index; - GPR_ASSERT(entry.weighted_cluster_state[index].range_end > key); - cluster_name = entry.weighted_cluster_state[index].cluster; - method_config = entry.weighted_cluster_state[index].method_config; + GPR_ASSERT(entry.weighted_cluster_state[index].first > key); + cluster_name = entry.weighted_cluster_state[index].second; } auto it = clusters_.find(cluster_name); GPR_ASSERT(it != clusters_.end()); @@ -630,10 +470,10 @@ ConfigSelector::CallConfig XdsResolver::XdsConfigSelector::GetCallConfig( static_cast(resolver_->Ref().release()); ClusterState* cluster_state = it->second->Ref().release(); CallConfig call_config; - if (method_config != nullptr) { + if (entry.method_config != nullptr) { + call_config.service_config = entry.method_config; call_config.method_configs = - method_config->GetMethodParsedConfigVector(grpc_empty_slice()); - call_config.service_config = std::move(method_config); + entry.method_config->GetMethodParsedConfigVector(grpc_empty_slice()); } call_config.call_attributes[kXdsClusterAttribute] = it->first; call_config.on_call_committed = [resolver, cluster_state]() { @@ -737,10 +577,10 @@ void XdsResolver::OnListenerUpdate(XdsApi::LdsUpdate listener) { xds_client_->WatchRouteConfigData(route_config_name_, std::move(watcher)); } } - current_listener_ = std::move(listener); + http_max_stream_duration_ = listener.http_max_stream_duration; if (route_config_name_.empty()) { - GPR_ASSERT(current_listener_.rds_update.has_value()); - OnRouteConfigUpdate(std::move(*current_listener_.rds_update)); + GPR_ASSERT(listener.rds_update.has_value()); + OnRouteConfigUpdate(std::move(*listener.rds_update)); } } @@ -758,8 +598,8 @@ void XdsResolver::OnRouteConfigUpdate(XdsApi::RdsUpdate rds_update) { .c_str())); return; } - // Save the virtual host in the resolver. - current_virtual_host_ = std::move(*vhost); + // Save the list of routes in the resolver. + current_update_ = std::move(vhost->routes); // Send a new result to the channel. GenerateResult(); } @@ -778,7 +618,7 @@ void XdsResolver::OnResourceDoesNotExist() { "[xds_resolver %p] LDS/RDS resource does not exist -- clearing " "update and returning empty service config", this); - current_virtual_host_.routes.clear(); + current_update_.clear(); Result result; result.service_config = ServiceConfig::Create(args_, "{}", &result.service_config_error); @@ -820,11 +660,12 @@ grpc_error* XdsResolver::CreateServiceConfig( } void XdsResolver::GenerateResult() { - if (current_virtual_host_.routes.empty()) return; + if (current_update_.empty()) return; // First create XdsConfigSelector, which may add new entries to the cluster // state map, and then CreateServiceConfig for LB policies. grpc_error* error = GRPC_ERROR_NONE; - auto config_selector = MakeRefCounted(Ref(), &error); + auto config_selector = + MakeRefCounted(Ref(), current_update_, error); if (error != GRPC_ERROR_NONE) { OnError(error); return; diff --git a/src/core/ext/upb-generated/envoy/extensions/filters/http/router/v3/router.upb.c b/src/core/ext/upb-generated/envoy/extensions/filters/http/router/v3/router.upb.c deleted file mode 100644 index 8e6ff697fc589..0000000000000 --- a/src/core/ext/upb-generated/envoy/extensions/filters/http/router/v3/router.upb.c +++ /dev/null @@ -1,41 +0,0 @@ -/* This file was generated by upbc (the upb compiler) from the input - * file: - * - * envoy/extensions/filters/http/router/v3/router.proto - * - * Do not edit -- your changes will be discarded when the file is - * regenerated. */ - -#include -#include "upb/msg.h" -#include "envoy/extensions/filters/http/router/v3/router.upb.h" -#include "envoy/config/accesslog/v3/accesslog.upb.h" -#include "google/protobuf/wrappers.upb.h" -#include "udpa/annotations/status.upb.h" -#include "udpa/annotations/versioning.upb.h" -#include "validate/validate.upb.h" - -#include "upb/port_def.inc" - -static const upb_msglayout *const envoy_extensions_filters_http_router_v3_Router_submsgs[2] = { - &envoy_config_accesslog_v3_AccessLog_msginit, - &google_protobuf_BoolValue_msginit, -}; - -static const upb_msglayout_field envoy_extensions_filters_http_router_v3_Router__fields[6] = { - {1, UPB_SIZE(4, 8), 1, 1, 11, 1}, - {2, UPB_SIZE(1, 1), 0, 0, 8, 1}, - {3, UPB_SIZE(8, 16), 0, 0, 11, 3}, - {4, UPB_SIZE(2, 2), 0, 0, 8, 1}, - {5, UPB_SIZE(12, 24), 0, 0, 9, 3}, - {6, UPB_SIZE(3, 3), 0, 0, 8, 1}, -}; - -const upb_msglayout envoy_extensions_filters_http_router_v3_Router_msginit = { - &envoy_extensions_filters_http_router_v3_Router_submsgs[0], - &envoy_extensions_filters_http_router_v3_Router__fields[0], - UPB_SIZE(16, 32), 6, false, 255, -}; - -#include "upb/port_undef.inc" - diff --git a/src/core/ext/upb-generated/envoy/extensions/filters/http/router/v3/router.upb.h b/src/core/ext/upb-generated/envoy/extensions/filters/http/router/v3/router.upb.h deleted file mode 100644 index 2e7084ac97098..0000000000000 --- a/src/core/ext/upb-generated/envoy/extensions/filters/http/router/v3/router.upb.h +++ /dev/null @@ -1,113 +0,0 @@ -/* This file was generated by upbc (the upb compiler) from the input - * file: - * - * envoy/extensions/filters/http/router/v3/router.proto - * - * Do not edit -- your changes will be discarded when the file is - * regenerated. */ - -#ifndef ENVOY_EXTENSIONS_FILTERS_HTTP_ROUTER_V3_ROUTER_PROTO_UPB_H_ -#define ENVOY_EXTENSIONS_FILTERS_HTTP_ROUTER_V3_ROUTER_PROTO_UPB_H_ - -#include "upb/msg.h" -#include "upb/decode.h" -#include "upb/decode_fast.h" -#include "upb/encode.h" - -#include "upb/port_def.inc" - -#ifdef __cplusplus -extern "C" { -#endif - -struct envoy_extensions_filters_http_router_v3_Router; -typedef struct envoy_extensions_filters_http_router_v3_Router envoy_extensions_filters_http_router_v3_Router; -extern const upb_msglayout envoy_extensions_filters_http_router_v3_Router_msginit; -struct envoy_config_accesslog_v3_AccessLog; -struct google_protobuf_BoolValue; -extern const upb_msglayout envoy_config_accesslog_v3_AccessLog_msginit; -extern const upb_msglayout google_protobuf_BoolValue_msginit; - - -/* envoy.extensions.filters.http.router.v3.Router */ - -UPB_INLINE envoy_extensions_filters_http_router_v3_Router *envoy_extensions_filters_http_router_v3_Router_new(upb_arena *arena) { - return (envoy_extensions_filters_http_router_v3_Router *)_upb_msg_new(&envoy_extensions_filters_http_router_v3_Router_msginit, arena); -} -UPB_INLINE envoy_extensions_filters_http_router_v3_Router *envoy_extensions_filters_http_router_v3_Router_parse(const char *buf, size_t size, - upb_arena *arena) { - envoy_extensions_filters_http_router_v3_Router *ret = envoy_extensions_filters_http_router_v3_Router_new(arena); - return (ret && upb_decode(buf, size, ret, &envoy_extensions_filters_http_router_v3_Router_msginit, arena)) ? ret : NULL; -} -UPB_INLINE envoy_extensions_filters_http_router_v3_Router *envoy_extensions_filters_http_router_v3_Router_parse_ex(const char *buf, size_t size, - upb_arena *arena, int options) { - envoy_extensions_filters_http_router_v3_Router *ret = envoy_extensions_filters_http_router_v3_Router_new(arena); - return (ret && _upb_decode(buf, size, ret, &envoy_extensions_filters_http_router_v3_Router_msginit, arena, options)) - ? ret : NULL; -} -UPB_INLINE char *envoy_extensions_filters_http_router_v3_Router_serialize(const envoy_extensions_filters_http_router_v3_Router *msg, upb_arena *arena, size_t *len) { - return upb_encode(msg, &envoy_extensions_filters_http_router_v3_Router_msginit, arena, len); -} - -UPB_INLINE bool envoy_extensions_filters_http_router_v3_Router_has_dynamic_stats(const envoy_extensions_filters_http_router_v3_Router *msg) { return _upb_hasbit(msg, 1); } -UPB_INLINE const struct google_protobuf_BoolValue* envoy_extensions_filters_http_router_v3_Router_dynamic_stats(const envoy_extensions_filters_http_router_v3_Router *msg) { return *UPB_PTR_AT(msg, UPB_SIZE(4, 8), const struct google_protobuf_BoolValue*); } -UPB_INLINE bool envoy_extensions_filters_http_router_v3_Router_start_child_span(const envoy_extensions_filters_http_router_v3_Router *msg) { return *UPB_PTR_AT(msg, UPB_SIZE(1, 1), bool); } -UPB_INLINE bool envoy_extensions_filters_http_router_v3_Router_has_upstream_log(const envoy_extensions_filters_http_router_v3_Router *msg) { return _upb_has_submsg_nohasbit(msg, UPB_SIZE(8, 16)); } -UPB_INLINE const struct envoy_config_accesslog_v3_AccessLog* const* envoy_extensions_filters_http_router_v3_Router_upstream_log(const envoy_extensions_filters_http_router_v3_Router *msg, size_t *len) { return (const struct envoy_config_accesslog_v3_AccessLog* const*)_upb_array_accessor(msg, UPB_SIZE(8, 16), len); } -UPB_INLINE bool envoy_extensions_filters_http_router_v3_Router_suppress_envoy_headers(const envoy_extensions_filters_http_router_v3_Router *msg) { return *UPB_PTR_AT(msg, UPB_SIZE(2, 2), bool); } -UPB_INLINE upb_strview const* envoy_extensions_filters_http_router_v3_Router_strict_check_headers(const envoy_extensions_filters_http_router_v3_Router *msg, size_t *len) { return (upb_strview const*)_upb_array_accessor(msg, UPB_SIZE(12, 24), len); } -UPB_INLINE bool envoy_extensions_filters_http_router_v3_Router_respect_expected_rq_timeout(const envoy_extensions_filters_http_router_v3_Router *msg) { return *UPB_PTR_AT(msg, UPB_SIZE(3, 3), bool); } - -UPB_INLINE void envoy_extensions_filters_http_router_v3_Router_set_dynamic_stats(envoy_extensions_filters_http_router_v3_Router *msg, struct google_protobuf_BoolValue* value) { - _upb_sethas(msg, 1); - *UPB_PTR_AT(msg, UPB_SIZE(4, 8), struct google_protobuf_BoolValue*) = value; -} -UPB_INLINE struct google_protobuf_BoolValue* envoy_extensions_filters_http_router_v3_Router_mutable_dynamic_stats(envoy_extensions_filters_http_router_v3_Router *msg, upb_arena *arena) { - struct google_protobuf_BoolValue* sub = (struct google_protobuf_BoolValue*)envoy_extensions_filters_http_router_v3_Router_dynamic_stats(msg); - if (sub == NULL) { - sub = (struct google_protobuf_BoolValue*)_upb_msg_new(&google_protobuf_BoolValue_msginit, arena); - if (!sub) return NULL; - envoy_extensions_filters_http_router_v3_Router_set_dynamic_stats(msg, sub); - } - return sub; -} -UPB_INLINE void envoy_extensions_filters_http_router_v3_Router_set_start_child_span(envoy_extensions_filters_http_router_v3_Router *msg, bool value) { - *UPB_PTR_AT(msg, UPB_SIZE(1, 1), bool) = value; -} -UPB_INLINE struct envoy_config_accesslog_v3_AccessLog** envoy_extensions_filters_http_router_v3_Router_mutable_upstream_log(envoy_extensions_filters_http_router_v3_Router *msg, size_t *len) { - return (struct envoy_config_accesslog_v3_AccessLog**)_upb_array_mutable_accessor(msg, UPB_SIZE(8, 16), len); -} -UPB_INLINE struct envoy_config_accesslog_v3_AccessLog** envoy_extensions_filters_http_router_v3_Router_resize_upstream_log(envoy_extensions_filters_http_router_v3_Router *msg, size_t len, upb_arena *arena) { - return (struct envoy_config_accesslog_v3_AccessLog**)_upb_array_resize_accessor2(msg, UPB_SIZE(8, 16), len, UPB_SIZE(2, 3), arena); -} -UPB_INLINE struct envoy_config_accesslog_v3_AccessLog* envoy_extensions_filters_http_router_v3_Router_add_upstream_log(envoy_extensions_filters_http_router_v3_Router *msg, upb_arena *arena) { - struct envoy_config_accesslog_v3_AccessLog* sub = (struct envoy_config_accesslog_v3_AccessLog*)_upb_msg_new(&envoy_config_accesslog_v3_AccessLog_msginit, arena); - bool ok = _upb_array_append_accessor2( - msg, UPB_SIZE(8, 16), UPB_SIZE(2, 3), &sub, arena); - if (!ok) return NULL; - return sub; -} -UPB_INLINE void envoy_extensions_filters_http_router_v3_Router_set_suppress_envoy_headers(envoy_extensions_filters_http_router_v3_Router *msg, bool value) { - *UPB_PTR_AT(msg, UPB_SIZE(2, 2), bool) = value; -} -UPB_INLINE upb_strview* envoy_extensions_filters_http_router_v3_Router_mutable_strict_check_headers(envoy_extensions_filters_http_router_v3_Router *msg, size_t *len) { - return (upb_strview*)_upb_array_mutable_accessor(msg, UPB_SIZE(12, 24), len); -} -UPB_INLINE upb_strview* envoy_extensions_filters_http_router_v3_Router_resize_strict_check_headers(envoy_extensions_filters_http_router_v3_Router *msg, size_t len, upb_arena *arena) { - return (upb_strview*)_upb_array_resize_accessor2(msg, UPB_SIZE(12, 24), len, UPB_SIZE(3, 4), arena); -} -UPB_INLINE bool envoy_extensions_filters_http_router_v3_Router_add_strict_check_headers(envoy_extensions_filters_http_router_v3_Router *msg, upb_strview val, upb_arena *arena) { - return _upb_array_append_accessor2(msg, UPB_SIZE(12, 24), UPB_SIZE(3, 4), &val, - arena); -} -UPB_INLINE void envoy_extensions_filters_http_router_v3_Router_set_respect_expected_rq_timeout(envoy_extensions_filters_http_router_v3_Router *msg, bool value) { - *UPB_PTR_AT(msg, UPB_SIZE(3, 3), bool) = value; -} - -#ifdef __cplusplus -} /* extern "C" */ -#endif - -#include "upb/port_undef.inc" - -#endif /* ENVOY_EXTENSIONS_FILTERS_HTTP_ROUTER_V3_ROUTER_PROTO_UPB_H_ */ diff --git a/src/core/ext/upb-generated/udpa/type/v1/typed_struct.upb.c b/src/core/ext/upb-generated/udpa/type/v1/typed_struct.upb.c deleted file mode 100644 index 24407fa6eacce..0000000000000 --- a/src/core/ext/upb-generated/udpa/type/v1/typed_struct.upb.c +++ /dev/null @@ -1,33 +0,0 @@ -/* This file was generated by upbc (the upb compiler) from the input - * file: - * - * udpa/type/v1/typed_struct.proto - * - * Do not edit -- your changes will be discarded when the file is - * regenerated. */ - -#include -#include "upb/msg.h" -#include "udpa/type/v1/typed_struct.upb.h" -#include "validate/validate.upb.h" -#include "google/protobuf/struct.upb.h" - -#include "upb/port_def.inc" - -static const upb_msglayout *const udpa_type_v1_TypedStruct_submsgs[1] = { - &google_protobuf_Struct_msginit, -}; - -static const upb_msglayout_field udpa_type_v1_TypedStruct__fields[2] = { - {1, UPB_SIZE(4, 8), 0, 0, 9, 1}, - {2, UPB_SIZE(12, 24), 1, 0, 11, 1}, -}; - -const upb_msglayout udpa_type_v1_TypedStruct_msginit = { - &udpa_type_v1_TypedStruct_submsgs[0], - &udpa_type_v1_TypedStruct__fields[0], - UPB_SIZE(16, 32), 2, false, 255, -}; - -#include "upb/port_undef.inc" - diff --git a/src/core/ext/upb-generated/udpa/type/v1/typed_struct.upb.h b/src/core/ext/upb-generated/udpa/type/v1/typed_struct.upb.h deleted file mode 100644 index 2dd03ff12d781..0000000000000 --- a/src/core/ext/upb-generated/udpa/type/v1/typed_struct.upb.h +++ /dev/null @@ -1,77 +0,0 @@ -/* This file was generated by upbc (the upb compiler) from the input - * file: - * - * udpa/type/v1/typed_struct.proto - * - * Do not edit -- your changes will be discarded when the file is - * regenerated. */ - -#ifndef UDPA_TYPE_V1_TYPED_STRUCT_PROTO_UPB_H_ -#define UDPA_TYPE_V1_TYPED_STRUCT_PROTO_UPB_H_ - -#include "upb/msg.h" -#include "upb/decode.h" -#include "upb/decode_fast.h" -#include "upb/encode.h" - -#include "upb/port_def.inc" - -#ifdef __cplusplus -extern "C" { -#endif - -struct udpa_type_v1_TypedStruct; -typedef struct udpa_type_v1_TypedStruct udpa_type_v1_TypedStruct; -extern const upb_msglayout udpa_type_v1_TypedStruct_msginit; -struct google_protobuf_Struct; -extern const upb_msglayout google_protobuf_Struct_msginit; - - -/* udpa.type.v1.TypedStruct */ - -UPB_INLINE udpa_type_v1_TypedStruct *udpa_type_v1_TypedStruct_new(upb_arena *arena) { - return (udpa_type_v1_TypedStruct *)_upb_msg_new(&udpa_type_v1_TypedStruct_msginit, arena); -} -UPB_INLINE udpa_type_v1_TypedStruct *udpa_type_v1_TypedStruct_parse(const char *buf, size_t size, - upb_arena *arena) { - udpa_type_v1_TypedStruct *ret = udpa_type_v1_TypedStruct_new(arena); - return (ret && upb_decode(buf, size, ret, &udpa_type_v1_TypedStruct_msginit, arena)) ? ret : NULL; -} -UPB_INLINE udpa_type_v1_TypedStruct *udpa_type_v1_TypedStruct_parse_ex(const char *buf, size_t size, - upb_arena *arena, int options) { - udpa_type_v1_TypedStruct *ret = udpa_type_v1_TypedStruct_new(arena); - return (ret && _upb_decode(buf, size, ret, &udpa_type_v1_TypedStruct_msginit, arena, options)) - ? ret : NULL; -} -UPB_INLINE char *udpa_type_v1_TypedStruct_serialize(const udpa_type_v1_TypedStruct *msg, upb_arena *arena, size_t *len) { - return upb_encode(msg, &udpa_type_v1_TypedStruct_msginit, arena, len); -} - -UPB_INLINE upb_strview udpa_type_v1_TypedStruct_type_url(const udpa_type_v1_TypedStruct *msg) { return *UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_strview); } -UPB_INLINE bool udpa_type_v1_TypedStruct_has_value(const udpa_type_v1_TypedStruct *msg) { return _upb_hasbit(msg, 1); } -UPB_INLINE const struct google_protobuf_Struct* udpa_type_v1_TypedStruct_value(const udpa_type_v1_TypedStruct *msg) { return *UPB_PTR_AT(msg, UPB_SIZE(12, 24), const struct google_protobuf_Struct*); } - -UPB_INLINE void udpa_type_v1_TypedStruct_set_type_url(udpa_type_v1_TypedStruct *msg, upb_strview value) { - *UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_strview) = value; -} -UPB_INLINE void udpa_type_v1_TypedStruct_set_value(udpa_type_v1_TypedStruct *msg, struct google_protobuf_Struct* value) { - _upb_sethas(msg, 1); - *UPB_PTR_AT(msg, UPB_SIZE(12, 24), struct google_protobuf_Struct*) = value; -} -UPB_INLINE struct google_protobuf_Struct* udpa_type_v1_TypedStruct_mutable_value(udpa_type_v1_TypedStruct *msg, upb_arena *arena) { - struct google_protobuf_Struct* sub = (struct google_protobuf_Struct*)udpa_type_v1_TypedStruct_value(msg); - if (sub == NULL) { - sub = (struct google_protobuf_Struct*)_upb_msg_new(&google_protobuf_Struct_msginit, arena); - if (!sub) return NULL; - udpa_type_v1_TypedStruct_set_value(msg, sub); - } - return sub; -} - -#ifdef __cplusplus -} /* extern "C" */ -#endif - -#include "upb/port_undef.inc" - -#endif /* UDPA_TYPE_V1_TYPED_STRUCT_PROTO_UPB_H_ */ diff --git a/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/router/v3/router.upbdefs.c b/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/router/v3/router.upbdefs.c deleted file mode 100644 index f1d9a57807739..0000000000000 --- a/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/router/v3/router.upbdefs.c +++ /dev/null @@ -1,76 +0,0 @@ -/* This file was generated by upbc (the upb compiler) from the input - * file: - * - * envoy/extensions/filters/http/router/v3/router.proto - * - * Do not edit -- your changes will be discarded when the file is - * regenerated. */ - -#include "upb/def.h" -#include "envoy/extensions/filters/http/router/v3/router.upbdefs.h" - -extern upb_def_init envoy_config_accesslog_v3_accesslog_proto_upbdefinit; -extern upb_def_init google_protobuf_wrappers_proto_upbdefinit; -extern upb_def_init udpa_annotations_status_proto_upbdefinit; -extern upb_def_init udpa_annotations_versioning_proto_upbdefinit; -extern upb_def_init validate_validate_proto_upbdefinit; -extern const upb_msglayout envoy_extensions_filters_http_router_v3_Router_msginit; - -static const upb_msglayout *layouts[1] = { - &envoy_extensions_filters_http_router_v3_Router_msginit, -}; - -static const char descriptor[909] = {'\n', '4', 'e', 'n', 'v', 'o', 'y', '/', 'e', 'x', 't', 'e', 'n', 's', 'i', 'o', 'n', 's', '/', 'f', 'i', 'l', 't', 'e', 'r', -'s', '/', 'h', 't', 't', 'p', '/', 'r', 'o', 'u', 't', 'e', 'r', '/', 'v', '3', '/', 'r', 'o', 'u', 't', 'e', 'r', '.', 'p', -'r', 'o', 't', 'o', '\022', '\'', 'e', 'n', 'v', 'o', 'y', '.', 'e', 'x', 't', 'e', 'n', 's', 'i', 'o', 'n', 's', '.', 'f', 'i', -'l', 't', 'e', 'r', 's', '.', 'h', 't', 't', 'p', '.', 'r', 'o', 'u', 't', 'e', 'r', '.', 'v', '3', '\032', ')', 'e', 'n', 'v', -'o', 'y', '/', 'c', 'o', 'n', 'f', 'i', 'g', '/', 'a', 'c', 'c', 'e', 's', 's', 'l', 'o', 'g', '/', 'v', '3', '/', 'a', 'c', -'c', 'e', 's', 's', 'l', 'o', 'g', '.', 'p', 'r', 'o', 't', 'o', '\032', '\036', 'g', 'o', 'o', 'g', 'l', 'e', '/', 'p', 'r', 'o', -'t', 'o', 'b', 'u', 'f', '/', 'w', 'r', 'a', 'p', 'p', 'e', 'r', 's', '.', 'p', 'r', 'o', 't', 'o', '\032', '\035', 'u', 'd', 'p', -'a', '/', 'a', 'n', 'n', 'o', 't', 'a', 't', 'i', 'o', 'n', 's', '/', 's', 't', 'a', 't', 'u', 's', '.', 'p', 'r', 'o', 't', -'o', '\032', '!', 'u', 'd', 'p', 'a', '/', 'a', 'n', 'n', 'o', 't', 'a', 't', 'i', 'o', 'n', 's', '/', 'v', 'e', 'r', 's', 'i', -'o', 'n', 'i', 'n', 'g', '.', 'p', 'r', 'o', 't', 'o', '\032', '\027', 'v', 'a', 'l', 'i', 'd', 'a', 't', 'e', '/', 'v', 'a', 'l', -'i', 'd', 'a', 't', 'e', '.', 'p', 'r', 'o', 't', 'o', '\"', '\255', '\004', '\n', '\006', 'R', 'o', 'u', 't', 'e', 'r', '\022', '?', '\n', -'\r', 'd', 'y', 'n', 'a', 'm', 'i', 'c', '_', 's', 't', 'a', 't', 's', '\030', '\001', ' ', '\001', '(', '\013', '2', '\032', '.', 'g', 'o', -'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'B', 'o', 'o', 'l', 'V', 'a', 'l', 'u', 'e', 'R', '\014', -'d', 'y', 'n', 'a', 'm', 'i', 'c', 'S', 't', 'a', 't', 's', '\022', '(', '\n', '\020', 's', 't', 'a', 'r', 't', '_', 'c', 'h', 'i', -'l', 'd', '_', 's', 'p', 'a', 'n', '\030', '\002', ' ', '\001', '(', '\010', 'R', '\016', 's', 't', 'a', 'r', 't', 'C', 'h', 'i', 'l', 'd', -'S', 'p', 'a', 'n', '\022', 'G', '\n', '\014', 'u', 'p', 's', 't', 'r', 'e', 'a', 'm', '_', 'l', 'o', 'g', '\030', '\003', ' ', '\003', '(', -'\013', '2', '$', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'a', 'c', 'c', 'e', 's', 's', 'l', 'o', -'g', '.', 'v', '3', '.', 'A', 'c', 'c', 'e', 's', 's', 'L', 'o', 'g', 'R', '\013', 'u', 'p', 's', 't', 'r', 'e', 'a', 'm', 'L', -'o', 'g', '\022', '4', '\n', '\026', 's', 'u', 'p', 'p', 'r', 'e', 's', 's', '_', 'e', 'n', 'v', 'o', 'y', '_', 'h', 'e', 'a', 'd', -'e', 'r', 's', '\030', '\004', ' ', '\001', '(', '\010', 'R', '\024', 's', 'u', 'p', 'p', 'r', 'e', 's', 's', 'E', 'n', 'v', 'o', 'y', 'H', -'e', 'a', 'd', 'e', 'r', 's', '\022', '\307', '\001', '\n', '\024', 's', 't', 'r', 'i', 'c', 't', '_', 'c', 'h', 'e', 'c', 'k', '_', 'h', -'e', 'a', 'd', 'e', 'r', 's', '\030', '\005', ' ', '\003', '(', '\t', 'B', '\224', '\001', '\372', 'B', '\220', '\001', '\222', '\001', '\214', '\001', '\"', '\211', -'\001', 'r', '\206', '\001', 'R', '\036', 'x', '-', 'e', 'n', 'v', 'o', 'y', '-', 'u', 'p', 's', 't', 'r', 'e', 'a', 'm', '-', 'r', 'q', -'-', 't', 'i', 'm', 'e', 'o', 'u', 't', '-', 'm', 's', 'R', '&', 'x', '-', 'e', 'n', 'v', 'o', 'y', '-', 'u', 'p', 's', 't', -'r', 'e', 'a', 'm', '-', 'r', 'q', '-', 'p', 'e', 'r', '-', 't', 'r', 'y', '-', 't', 'i', 'm', 'e', 'o', 'u', 't', '-', 'm', -'s', 'R', '\023', 'x', '-', 'e', 'n', 'v', 'o', 'y', '-', 'm', 'a', 'x', '-', 'r', 'e', 't', 'r', 'i', 'e', 's', 'R', '\025', 'x', -'-', 'e', 'n', 'v', 'o', 'y', '-', 'r', 'e', 't', 'r', 'y', '-', 'g', 'r', 'p', 'c', '-', 'o', 'n', 'R', '\020', 'x', '-', 'e', -'n', 'v', 'o', 'y', '-', 'r', 'e', 't', 'r', 'y', '-', 'o', 'n', 'R', '\022', 's', 't', 'r', 'i', 'c', 't', 'C', 'h', 'e', 'c', -'k', 'H', 'e', 'a', 'd', 'e', 'r', 's', '\022', '=', '\n', '\033', 'r', 'e', 's', 'p', 'e', 'c', 't', '_', 'e', 'x', 'p', 'e', 'c', -'t', 'e', 'd', '_', 'r', 'q', '_', 't', 'i', 'm', 'e', 'o', 'u', 't', '\030', '\006', ' ', '\001', '(', '\010', 'R', '\030', 'r', 'e', 's', -'p', 'e', 'c', 't', 'E', 'x', 'p', 'e', 'c', 't', 'e', 'd', 'R', 'q', 'T', 'i', 'm', 'e', 'o', 'u', 't', ':', '0', '\232', '\305', -'\210', '\036', '+', '\n', ')', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'f', 'i', 'l', 't', 'e', 'r', '.', -'h', 't', 't', 'p', '.', 'r', 'o', 'u', 't', 'e', 'r', '.', 'v', '2', '.', 'R', 'o', 'u', 't', 'e', 'r', 'B', 'N', '\n', '5', -'i', 'o', '.', 'e', 'n', 'v', 'o', 'y', 'p', 'r', 'o', 'x', 'y', '.', 'e', 'n', 'v', 'o', 'y', '.', 'e', 'x', 't', 'e', 'n', -'s', 'i', 'o', 'n', 's', '.', 'f', 'i', 'l', 't', 'e', 'r', 's', '.', 'h', 't', 't', 'p', '.', 'r', 'o', 'u', 't', 'e', 'r', -'.', 'v', '3', 'B', '\013', 'R', 'o', 'u', 't', 'e', 'r', 'P', 'r', 'o', 't', 'o', 'P', '\001', '\272', '\200', '\310', '\321', '\006', '\002', '\020', -'\002', 'b', '\006', 'p', 'r', 'o', 't', 'o', '3', -}; - -static upb_def_init *deps[6] = { - &envoy_config_accesslog_v3_accesslog_proto_upbdefinit, - &google_protobuf_wrappers_proto_upbdefinit, - &udpa_annotations_status_proto_upbdefinit, - &udpa_annotations_versioning_proto_upbdefinit, - &validate_validate_proto_upbdefinit, - NULL -}; - -upb_def_init envoy_extensions_filters_http_router_v3_router_proto_upbdefinit = { - deps, - layouts, - "envoy/extensions/filters/http/router/v3/router.proto", - UPB_STRVIEW_INIT(descriptor, 909) -}; diff --git a/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/router/v3/router.upbdefs.h b/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/router/v3/router.upbdefs.h deleted file mode 100644 index dc91890ed65fe..0000000000000 --- a/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/router/v3/router.upbdefs.h +++ /dev/null @@ -1,35 +0,0 @@ -/* This file was generated by upbc (the upb compiler) from the input - * file: - * - * envoy/extensions/filters/http/router/v3/router.proto - * - * Do not edit -- your changes will be discarded when the file is - * regenerated. */ - -#ifndef ENVOY_EXTENSIONS_FILTERS_HTTP_ROUTER_V3_ROUTER_PROTO_UPBDEFS_H_ -#define ENVOY_EXTENSIONS_FILTERS_HTTP_ROUTER_V3_ROUTER_PROTO_UPBDEFS_H_ - -#include "upb/def.h" -#include "upb/port_def.inc" -#ifdef __cplusplus -extern "C" { -#endif - -#include "upb/def.h" - -#include "upb/port_def.inc" - -extern upb_def_init envoy_extensions_filters_http_router_v3_router_proto_upbdefinit; - -UPB_INLINE const upb_msgdef *envoy_extensions_filters_http_router_v3_Router_getmsgdef(upb_symtab *s) { - _upb_symtab_loaddefinit(s, &envoy_extensions_filters_http_router_v3_router_proto_upbdefinit); - return upb_symtab_lookupmsg(s, "envoy.extensions.filters.http.router.v3.Router"); -} - -#ifdef __cplusplus -} /* extern "C" */ -#endif - -#include "upb/port_undef.inc" - -#endif /* ENVOY_EXTENSIONS_FILTERS_HTTP_ROUTER_V3_ROUTER_PROTO_UPBDEFS_H_ */ diff --git a/src/core/ext/upbdefs-generated/udpa/type/v1/typed_struct.upbdefs.c b/src/core/ext/upbdefs-generated/udpa/type/v1/typed_struct.upbdefs.c deleted file mode 100644 index f786bff37abc5..0000000000000 --- a/src/core/ext/upbdefs-generated/udpa/type/v1/typed_struct.upbdefs.c +++ /dev/null @@ -1,44 +0,0 @@ -/* This file was generated by upbc (the upb compiler) from the input - * file: - * - * udpa/type/v1/typed_struct.proto - * - * Do not edit -- your changes will be discarded when the file is - * regenerated. */ - -#include "upb/def.h" -#include "udpa/type/v1/typed_struct.upbdefs.h" - -extern upb_def_init validate_validate_proto_upbdefinit; -extern upb_def_init google_protobuf_struct_proto_upbdefinit; -extern const upb_msglayout udpa_type_v1_TypedStruct_msginit; - -static const upb_msglayout *layouts[1] = { - &udpa_type_v1_TypedStruct_msginit, -}; - -static const char descriptor[251] = {'\n', '\037', 'u', 'd', 'p', 'a', '/', 't', 'y', 'p', 'e', '/', 'v', '1', '/', 't', 'y', 'p', 'e', 'd', '_', 's', 't', 'r', 'u', -'c', 't', '.', 'p', 'r', 'o', 't', 'o', '\022', '\014', 'u', 'd', 'p', 'a', '.', 't', 'y', 'p', 'e', '.', 'v', '1', '\032', '\027', 'v', -'a', 'l', 'i', 'd', 'a', 't', 'e', '/', 'v', 'a', 'l', 'i', 'd', 'a', 't', 'e', '.', 'p', 'r', 'o', 't', 'o', '\032', '\034', 'g', -'o', 'o', 'g', 'l', 'e', '/', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '/', 's', 't', 'r', 'u', 'c', 't', '.', 'p', 'r', 'o', -'t', 'o', '\"', 'W', '\n', '\013', 'T', 'y', 'p', 'e', 'd', 'S', 't', 'r', 'u', 'c', 't', '\022', '\031', '\n', '\010', 't', 'y', 'p', 'e', -'_', 'u', 'r', 'l', '\030', '\001', ' ', '\001', '(', '\t', 'R', '\007', 't', 'y', 'p', 'e', 'U', 'r', 'l', '\022', '-', '\n', '\005', 'v', 'a', -'l', 'u', 'e', '\030', '\002', ' ', '\001', '(', '\013', '2', '\027', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', -'u', 'f', '.', 'S', 't', 'r', 'u', 'c', 't', 'R', '\005', 'v', 'a', 'l', 'u', 'e', 'B', '2', '\n', '\034', 'c', 'o', 'm', '.', 'g', -'i', 't', 'h', 'u', 'b', '.', 'u', 'd', 'p', 'a', '.', 'u', 'd', 'p', 'a', '.', 't', 'y', 'p', 'e', '.', 'v', '1', 'B', '\020', -'T', 'y', 'p', 'e', 'd', 'S', 't', 'r', 'u', 'c', 't', 'P', 'r', 'o', 't', 'o', 'P', '\001', 'b', '\006', 'p', 'r', 'o', 't', 'o', -'3', -}; - -static upb_def_init *deps[3] = { - &validate_validate_proto_upbdefinit, - &google_protobuf_struct_proto_upbdefinit, - NULL -}; - -upb_def_init udpa_type_v1_typed_struct_proto_upbdefinit = { - deps, - layouts, - "udpa/type/v1/typed_struct.proto", - UPB_STRVIEW_INIT(descriptor, 251) -}; diff --git a/src/core/ext/upbdefs-generated/udpa/type/v1/typed_struct.upbdefs.h b/src/core/ext/upbdefs-generated/udpa/type/v1/typed_struct.upbdefs.h deleted file mode 100644 index d30baef2b2215..0000000000000 --- a/src/core/ext/upbdefs-generated/udpa/type/v1/typed_struct.upbdefs.h +++ /dev/null @@ -1,35 +0,0 @@ -/* This file was generated by upbc (the upb compiler) from the input - * file: - * - * udpa/type/v1/typed_struct.proto - * - * Do not edit -- your changes will be discarded when the file is - * regenerated. */ - -#ifndef UDPA_TYPE_V1_TYPED_STRUCT_PROTO_UPBDEFS_H_ -#define UDPA_TYPE_V1_TYPED_STRUCT_PROTO_UPBDEFS_H_ - -#include "upb/def.h" -#include "upb/port_def.inc" -#ifdef __cplusplus -extern "C" { -#endif - -#include "upb/def.h" - -#include "upb/port_def.inc" - -extern upb_def_init udpa_type_v1_typed_struct_proto_upbdefinit; - -UPB_INLINE const upb_msgdef *udpa_type_v1_TypedStruct_getmsgdef(upb_symtab *s) { - _upb_symtab_loaddefinit(s, &udpa_type_v1_typed_struct_proto_upbdefinit); - return upb_symtab_lookupmsg(s, "udpa.type.v1.TypedStruct"); -} - -#ifdef __cplusplus -} /* extern "C" */ -#endif - -#include "upb/port_undef.inc" - -#endif /* UDPA_TYPE_V1_TYPED_STRUCT_PROTO_UPBDEFS_H_ */ diff --git a/src/core/ext/xds/xds_api.cc b/src/core/ext/xds/xds_api.cc index e8d4d24942b94..3b5b2e48fd978 100644 --- a/src/core/ext/xds/xds_api.cc +++ b/src/core/ext/xds/xds_api.cc @@ -28,6 +28,22 @@ #include "absl/strings/str_format.h" #include "absl/strings/str_join.h" #include "absl/strings/str_split.h" + +#include "upb/upb.hpp" + +#include +#include +#include + +#include "src/core/ext/xds/xds_api.h" +#include "src/core/lib/gpr/env.h" +#include "src/core/lib/gpr/string.h" +#include "src/core/lib/gpr/useful.h" +#include "src/core/lib/gprpp/host_port.h" +#include "src/core/lib/iomgr/error.h" +#include "src/core/lib/iomgr/sockaddr_utils.h" +#include "src/core/lib/slice/slice_utils.h" + #include "envoy/config/cluster/v3/circuit_breaker.upb.h" #include "envoy/config/cluster/v3/cluster.upb.h" #include "envoy/config/cluster/v3/cluster.upbdefs.h" @@ -42,14 +58,12 @@ #include "envoy/config/endpoint/v3/load_report.upb.h" #include "envoy/config/listener/v3/api_listener.upb.h" #include "envoy/config/listener/v3/listener.upb.h" -#include "envoy/config/listener/v3/listener.upbdefs.h" #include "envoy/config/listener/v3/listener_components.upb.h" #include "envoy/config/route/v3/route.upb.h" #include "envoy/config/route/v3/route.upbdefs.h" #include "envoy/config/route/v3/route_components.upb.h" #include "envoy/extensions/clusters/aggregate/v3/cluster.upb.h" #include "envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.h" -#include "envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.h" #include "envoy/extensions/transport_sockets/tls/v3/common.upb.h" #include "envoy/extensions/transport_sockets/tls/v3/tls.upb.h" #include "envoy/service/cluster/v3/cds.upb.h" @@ -72,23 +86,8 @@ #include "google/protobuf/struct.upb.h" #include "google/protobuf/wrappers.upb.h" #include "google/rpc/status.upb.h" -#include "udpa/type/v1/typed_struct.upb.h" #include "upb/text_encode.h" #include "upb/upb.h" -#include "upb/upb.hpp" - -#include -#include -#include - -#include "src/core/ext/xds/xds_api.h" -#include "src/core/lib/gpr/env.h" -#include "src/core/lib/gpr/string.h" -#include "src/core/lib/gpr/useful.h" -#include "src/core/lib/gprpp/host_port.h" -#include "src/core/lib/iomgr/error.h" -#include "src/core/lib/iomgr/sockaddr_utils.h" -#include "src/core/lib/slice/slice_utils.h" namespace grpc_core { @@ -138,16 +137,6 @@ bool XdsSecurityEnabled() { return parse_succeeded && parsed_value; } -// TODO(lidiz): This will be removed once the fault injection feature is -// fully integration-tested and enabled by default. -bool XdsFaultInjectionEnabled() { - char* value = gpr_getenv("GRPC_XDS_EXPERIMENTAL_FAULT_INJECTION"); - bool parsed_value; - bool parse_succeeded = gpr_parse_bool_value(value, &parsed_value); - gpr_free(value); - return parse_succeeded && parsed_value; -} - // // XdsApi::Route // @@ -167,20 +156,7 @@ std::string XdsApi::Route::Matchers::ToString() const { } std::string XdsApi::Route::ClusterWeight::ToString() const { - std::vector contents; - contents.push_back(absl::StrCat("cluster=", name)); - contents.push_back(absl::StrCat("weight=", weight)); - if (!typed_per_filter_config.empty()) { - std::vector parts; - for (const auto& p : typed_per_filter_config) { - const std::string& key = p.first; - const auto& config = p.second; - parts.push_back(absl::StrCat(key, "=", config.ToString())); - } - contents.push_back(absl::StrCat("typed_per_filter_config={", - absl::StrJoin(parts, ", "), "}")); - } - return absl::StrCat("{", absl::StrJoin(contents, ", "), "}"); + return absl::StrFormat("{cluster=%s, weight=%d}", name, weight); } std::string XdsApi::Route::ToString() const { @@ -195,15 +171,6 @@ std::string XdsApi::Route::ToString() const { if (max_stream_duration.has_value()) { contents.push_back(max_stream_duration->ToString()); } - if (!typed_per_filter_config.empty()) { - contents.push_back("typed_per_filter_config={"); - for (const auto& p : typed_per_filter_config) { - const std::string& name = p.first; - const auto& config = p.second; - contents.push_back(absl::StrCat(" ", name, "=", config.ToString())); - } - contents.push_back("}"); - } return absl::StrJoin(contents, "\n"); } @@ -226,14 +193,6 @@ std::string XdsApi::RdsUpdate::ToString() const { vhosts.push_back("\n }\n"); } vhosts.push_back(" ]\n"); - vhosts.push_back(" typed_per_filter_config={\n"); - for (const auto& p : vhost.typed_per_filter_config) { - const std::string& name = p.first; - const auto& config = p.second; - vhosts.push_back( - absl::StrCat(" ", name, "=", config.ToString(), "\n")); - } - vhosts.push_back(" }\n"); vhosts.push_back("]\n"); } return absl::StrJoin(vhosts, ""); @@ -439,14 +398,6 @@ bool XdsApi::DownstreamTlsContext::Empty() const { return common_tls_context.Empty(); } -// -// XdsApi::LdsUpdate::HttpFilter -// - -std::string XdsApi::LdsUpdate::HttpFilter::ToString() const { - return absl::StrCat("{name=", name, ", config=", config.ToString(), "}"); -} - // // XdsApi::LdsUpdate // @@ -469,14 +420,6 @@ std::string XdsApi::LdsUpdate::ToString() const { absl::StrFormat("rds_update=%s", rds_update->ToString())); } } - if (!http_filters.empty()) { - std::vector filter_strings; - for (const auto& http_filter : http_filters) { - filter_strings.push_back(http_filter.ToString()); - } - contents.push_back(absl::StrCat("http_filters=[", - absl::StrJoin(filter_strings, ", "), "]")); - } return absl::StrCat("{", absl::StrJoin(contents, ", "), "}"); } @@ -620,63 +563,39 @@ XdsApi::XdsApi(XdsClient* client, TraceFlag* tracer, node_(node), build_version_(absl::StrCat("gRPC C-core ", GPR_PLATFORM_STRING, " ", grpc_version_string())), - user_agent_name_(absl::StrCat("gRPC C-core ", GPR_PLATFORM_STRING)) { - // Populate upb symtab with xDS proto messages that we want to print - // properly in logs. - // Note: This won't actually work properly until upb adds support for - // Any fields in textproto printing (internal b/178821188). - envoy_config_listener_v3_Listener_getmsgdef(symtab_.ptr()); - envoy_config_route_v3_RouteConfiguration_getmsgdef(symtab_.ptr()); - envoy_config_cluster_v3_Cluster_getmsgdef(symtab_.ptr()); - envoy_config_endpoint_v3_ClusterLoadAssignment_getmsgdef(symtab_.ptr()); - envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_getmsgdef( - symtab_.ptr()); - // Load HTTP filter proto messages into the upb symtab. - XdsHttpFilterRegistry::PopulateSymtab(symtab_.ptr()); -} + user_agent_name_(absl::StrCat("gRPC C-core ", GPR_PLATFORM_STRING)) {} namespace { -struct EncodingContext { - XdsClient* client; - TraceFlag* tracer; - upb_symtab* symtab; - upb_arena* arena; - bool use_v3; -}; - // Works for both std::string and absl::string_view. template inline upb_strview StdStringToUpbString(const T& str) { return upb_strview_make(str.data(), str.size()); } -void PopulateMetadataValue(const EncodingContext& context, - google_protobuf_Value* value_pb, const Json& value); +void PopulateMetadataValue(upb_arena* arena, google_protobuf_Value* value_pb, + const Json& value); -void PopulateListValue(const EncodingContext& context, - google_protobuf_ListValue* list_value, +void PopulateListValue(upb_arena* arena, google_protobuf_ListValue* list_value, const Json::Array& values) { for (const auto& value : values) { - auto* value_pb = - google_protobuf_ListValue_add_values(list_value, context.arena); - PopulateMetadataValue(context, value_pb, value); + auto* value_pb = google_protobuf_ListValue_add_values(list_value, arena); + PopulateMetadataValue(arena, value_pb, value); } } -void PopulateMetadata(const EncodingContext& context, - google_protobuf_Struct* metadata_pb, +void PopulateMetadata(upb_arena* arena, google_protobuf_Struct* metadata_pb, const Json::Object& metadata) { for (const auto& p : metadata) { - google_protobuf_Value* value = google_protobuf_Value_new(context.arena); - PopulateMetadataValue(context, value, p.second); + google_protobuf_Value* value = google_protobuf_Value_new(arena); + PopulateMetadataValue(arena, value, p.second); google_protobuf_Struct_fields_set( - metadata_pb, StdStringToUpbString(p.first), value, context.arena); + metadata_pb, StdStringToUpbString(p.first), value, arena); } } -void PopulateMetadataValue(const EncodingContext& context, - google_protobuf_Value* value_pb, const Json& value) { +void PopulateMetadataValue(upb_arena* arena, google_protobuf_Value* value_pb, + const Json& value) { switch (value.type()) { case Json::Type::JSON_NULL: google_protobuf_Value_set_null_value(value_pb, 0); @@ -697,14 +616,14 @@ void PopulateMetadataValue(const EncodingContext& context, break; case Json::Type::OBJECT: { google_protobuf_Struct* struct_value = - google_protobuf_Value_mutable_struct_value(value_pb, context.arena); - PopulateMetadata(context, struct_value, value.object_value()); + google_protobuf_Value_mutable_struct_value(value_pb, arena); + PopulateMetadata(arena, struct_value, value.object_value()); break; } case Json::Type::ARRAY: { google_protobuf_ListValue* list_value = - google_protobuf_Value_mutable_list_value(value_pb, context.arena); - PopulateListValue(context, list_value, value.array_value()); + google_protobuf_Value_mutable_list_value(value_pb, arena); + PopulateListValue(arena, list_value, value.array_value()); break; } } @@ -731,8 +650,7 @@ std::string EncodeStringField(uint32_t field_number, const std::string& str) { EncodeVarint(str.size()) + str; } -void PopulateBuildVersion(const EncodingContext& context, - envoy_config_core_v3_Node* node_msg, +void PopulateBuildVersion(upb_arena* arena, envoy_config_core_v3_Node* node_msg, const std::string& build_version) { std::string encoded_build_version = EncodeStringField(5, build_version); // TODO(roth): This should use upb_msg_addunknown(), but that API is @@ -740,11 +658,10 @@ void PopulateBuildVersion(const EncodingContext& context, // API for now. Change this once we upgrade to a version of upb that // fixes this bug. _upb_msg_addunknown(node_msg, encoded_build_version.data(), - encoded_build_version.size(), context.arena); + encoded_build_version.size(), arena); } -void PopulateNode(const EncodingContext& context, - const XdsBootstrap::Node* node, +void PopulateNode(upb_arena* arena, const XdsBootstrap::Node* node, bool use_v3, const std::string& build_version, const std::string& user_agent_name, envoy_config_core_v3_Node* node_msg) { @@ -759,13 +676,13 @@ void PopulateNode(const EncodingContext& context, } if (!node->metadata.object_value().empty()) { google_protobuf_Struct* metadata = - envoy_config_core_v3_Node_mutable_metadata(node_msg, context.arena); - PopulateMetadata(context, metadata, node->metadata.object_value()); + envoy_config_core_v3_Node_mutable_metadata(node_msg, arena); + PopulateMetadata(arena, metadata, node->metadata.object_value()); } if (!node->locality_region.empty() || !node->locality_zone.empty() || !node->locality_sub_zone.empty()) { envoy_config_core_v3_Locality* locality = - envoy_config_core_v3_Node_mutable_locality(node_msg, context.arena); + envoy_config_core_v3_Node_mutable_locality(node_msg, arena); if (!node->locality_region.empty()) { envoy_config_core_v3_Locality_set_region( locality, StdStringToUpbString(node->locality_region)); @@ -780,8 +697,8 @@ void PopulateNode(const EncodingContext& context, } } } - if (!context.use_v3) { - PopulateBuildVersion(context, node_msg, build_version); + if (!use_v3) { + PopulateBuildVersion(arena, node_msg, build_version); } envoy_config_core_v3_Node_set_user_agent_name( node_msg, StdStringToUpbString(user_agent_name)); @@ -789,7 +706,7 @@ void PopulateNode(const EncodingContext& context, node_msg, upb_strview_makez(grpc_version_string())); envoy_config_core_v3_Node_add_client_features( node_msg, upb_strview_makez("envoy.lb.does_not_support_overprovisioning"), - context.arena); + arena); } inline absl::string_view UpbStringToAbsl(const upb_strview& str) { @@ -801,25 +718,24 @@ inline std::string UpbStringToStdString(const upb_strview& str) { } void MaybeLogDiscoveryRequest( - const EncodingContext& context, + XdsClient* client, TraceFlag* tracer, upb_symtab* symtab, const envoy_service_discovery_v3_DiscoveryRequest* request) { - if (GRPC_TRACE_FLAG_ENABLED(*context.tracer) && + if (GRPC_TRACE_FLAG_ENABLED(*tracer) && gpr_should_log(GPR_LOG_SEVERITY_DEBUG)) { const upb_msgdef* msg_type = - envoy_service_discovery_v3_DiscoveryRequest_getmsgdef(context.symtab); + envoy_service_discovery_v3_DiscoveryRequest_getmsgdef(symtab); char buf[10240]; upb_text_encode(request, msg_type, nullptr, 0, buf, sizeof(buf)); - gpr_log(GPR_DEBUG, "[xds_client %p] constructed ADS request: %s", - context.client, buf); + gpr_log(GPR_DEBUG, "[xds_client %p] constructed ADS request: %s", client, + buf); } } grpc_slice SerializeDiscoveryRequest( - const EncodingContext& context, - envoy_service_discovery_v3_DiscoveryRequest* request) { + upb_arena* arena, envoy_service_discovery_v3_DiscoveryRequest* request) { size_t output_length; char* output = envoy_service_discovery_v3_DiscoveryRequest_serialize( - request, context.arena, &output_length); + request, arena, &output_length); return grpc_slice_from_copied_buffer(output, output_length); } @@ -850,8 +766,6 @@ grpc_slice XdsApi::CreateAdsRequest( const std::string& version, const std::string& nonce, grpc_error* error, bool populate_node) { upb::Arena arena; - const EncodingContext context = {client_, tracer_, symtab_.ptr(), arena.ptr(), - server.ShouldUseV3()}; // Create a request. envoy_service_discovery_v3_DiscoveryRequest* request = envoy_service_discovery_v3_DiscoveryRequest_new(arena.ptr()); @@ -891,88 +805,69 @@ grpc_slice XdsApi::CreateAdsRequest( envoy_config_core_v3_Node* node_msg = envoy_service_discovery_v3_DiscoveryRequest_mutable_node(request, arena.ptr()); - PopulateNode(context, node_, build_version_, user_agent_name_, node_msg); + PopulateNode(arena.ptr(), node_, server.ShouldUseV3(), build_version_, + user_agent_name_, node_msg); } // Add resource_names. for (const auto& resource_name : resource_names) { envoy_service_discovery_v3_DiscoveryRequest_add_resource_names( request, StdStringToUpbString(resource_name), arena.ptr()); } - MaybeLogDiscoveryRequest(context, request); - return SerializeDiscoveryRequest(context, request); + MaybeLogDiscoveryRequest(client_, tracer_, symtab_.ptr(), request); + return SerializeDiscoveryRequest(arena.ptr(), request); } namespace { void MaybeLogDiscoveryResponse( - const EncodingContext& context, + XdsClient* client, TraceFlag* tracer, upb_symtab* symtab, const envoy_service_discovery_v3_DiscoveryResponse* response) { - if (GRPC_TRACE_FLAG_ENABLED(*context.tracer) && + if (GRPC_TRACE_FLAG_ENABLED(*tracer) && gpr_should_log(GPR_LOG_SEVERITY_DEBUG)) { const upb_msgdef* msg_type = - envoy_service_discovery_v3_DiscoveryResponse_getmsgdef(context.symtab); + envoy_service_discovery_v3_DiscoveryResponse_getmsgdef(symtab); char buf[10240]; upb_text_encode(response, msg_type, nullptr, 0, buf, sizeof(buf)); - gpr_log(GPR_DEBUG, "[xds_client %p] received response: %s", context.client, - buf); - } -} - -void MaybeLogHttpConnectionManager( - const EncodingContext& context, - const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager* - http_connection_manager_config) { - if (GRPC_TRACE_FLAG_ENABLED(*context.tracer) && - gpr_should_log(GPR_LOG_SEVERITY_DEBUG)) { - const upb_msgdef* msg_type = - envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_getmsgdef( - context.symtab); - char buf[10240]; - upb_text_encode(http_connection_manager_config, msg_type, nullptr, 0, buf, - sizeof(buf)); - gpr_log(GPR_DEBUG, "[xds_client %p] HttpConnectionManager: %s", - context.client, buf); + gpr_log(GPR_DEBUG, "[xds_client %p] received response: %s", client, buf); } } void MaybeLogRouteConfiguration( - const EncodingContext& context, + XdsClient* client, TraceFlag* tracer, upb_symtab* symtab, const envoy_config_route_v3_RouteConfiguration* route_config) { - if (GRPC_TRACE_FLAG_ENABLED(*context.tracer) && + if (GRPC_TRACE_FLAG_ENABLED(*tracer) && gpr_should_log(GPR_LOG_SEVERITY_DEBUG)) { const upb_msgdef* msg_type = - envoy_config_route_v3_RouteConfiguration_getmsgdef(context.symtab); + envoy_config_route_v3_RouteConfiguration_getmsgdef(symtab); char buf[10240]; upb_text_encode(route_config, msg_type, nullptr, 0, buf, sizeof(buf)); - gpr_log(GPR_DEBUG, "[xds_client %p] RouteConfiguration: %s", context.client, - buf); + gpr_log(GPR_DEBUG, "[xds_client %p] RouteConfiguration: %s", client, buf); } } -void MaybeLogCluster(const EncodingContext& context, +void MaybeLogCluster(XdsClient* client, TraceFlag* tracer, upb_symtab* symtab, const envoy_config_cluster_v3_Cluster* cluster) { - if (GRPC_TRACE_FLAG_ENABLED(*context.tracer) && + if (GRPC_TRACE_FLAG_ENABLED(*tracer) && gpr_should_log(GPR_LOG_SEVERITY_DEBUG)) { const upb_msgdef* msg_type = - envoy_config_cluster_v3_Cluster_getmsgdef(context.symtab); + envoy_config_cluster_v3_Cluster_getmsgdef(symtab); char buf[10240]; upb_text_encode(cluster, msg_type, nullptr, 0, buf, sizeof(buf)); - gpr_log(GPR_DEBUG, "[xds_client %p] Cluster: %s", context.client, buf); + gpr_log(GPR_DEBUG, "[xds_client %p] Cluster: %s", client, buf); } } void MaybeLogClusterLoadAssignment( - const EncodingContext& context, + XdsClient* client, TraceFlag* tracer, upb_symtab* symtab, const envoy_config_endpoint_v3_ClusterLoadAssignment* cla) { - if (GRPC_TRACE_FLAG_ENABLED(*context.tracer) && + if (GRPC_TRACE_FLAG_ENABLED(*tracer) && gpr_should_log(GPR_LOG_SEVERITY_DEBUG)) { const upb_msgdef* msg_type = - envoy_config_endpoint_v3_ClusterLoadAssignment_getmsgdef( - context.symtab); + envoy_config_endpoint_v3_ClusterLoadAssignment_getmsgdef(symtab); char buf[10240]; upb_text_encode(cla, msg_type, nullptr, 0, buf, sizeof(buf)); - gpr_log(GPR_DEBUG, "[xds_client %p] ClusterLoadAssignment: %s", - context.client, buf); + gpr_log(GPR_DEBUG, "[xds_client %p] ClusterLoadAssignment: %s", client, + buf); } } @@ -1169,84 +1064,7 @@ grpc_error* RouteRuntimeFractionParse( return GRPC_ERROR_NONE; } -grpc_error* ExtractHttpFilterTypeName(const EncodingContext& context, - const google_protobuf_Any* any, - absl::string_view* filter_type) { - *filter_type = UpbStringToAbsl(google_protobuf_Any_type_url(any)); - if (*filter_type == "type.googleapis.com/udpa.type.v1.TypedStruct") { - upb_strview any_value = google_protobuf_Any_value(any); - const auto* typed_struct = udpa_type_v1_TypedStruct_parse( - any_value.data, any_value.size, context.arena); - if (typed_struct == nullptr) { - return GRPC_ERROR_CREATE_FROM_STATIC_STRING( - "could not parse TypedStruct from filter config"); - } - *filter_type = - UpbStringToAbsl(udpa_type_v1_TypedStruct_type_url(typed_struct)); - } - *filter_type = absl::StripPrefix(*filter_type, "type.googleapis.com/"); - return GRPC_ERROR_NONE; -} - -template -grpc_error* ParseTypedPerFilterConfig( - const EncodingContext& context, const ParentType* parent, - const EntryType* (*entry_func)(const ParentType*, size_t*), - upb_strview (*key_func)(const EntryType*), - const google_protobuf_Any* (*value_func)(const EntryType*), - XdsApi::TypedPerFilterConfig* typed_per_filter_config) { - size_t filter_it = UPB_MAP_BEGIN; - while (true) { - const auto* filter_entry = entry_func(parent, &filter_it); - if (filter_entry == nullptr) break; - absl::string_view key = UpbStringToAbsl(key_func(filter_entry)); - if (key.empty()) { - return GRPC_ERROR_CREATE_FROM_STATIC_STRING("empty filter name in map"); - } - const google_protobuf_Any* any = value_func(filter_entry); - bool is_optional = false; - absl::string_view filter_type = - UpbStringToAbsl(google_protobuf_Any_type_url(any)); - if (filter_type == - "type.googleapis.com/envoy.config.route.v3.FilterConfig") { - upb_strview any_value = google_protobuf_Any_value(any); - const auto* filter_config = envoy_config_route_v3_FilterConfig_parse( - any_value.data, any_value.size, context.arena); - if (filter_config == nullptr) { - return GRPC_ERROR_CREATE_FROM_COPIED_STRING( - absl::StrCat("could not parse FilterConfig wrapper for ", key) - .c_str()); - } - is_optional = - envoy_config_route_v3_FilterConfig_is_optional(filter_config); - any = envoy_config_route_v3_FilterConfig_config(filter_config); - } - grpc_error* error = ExtractHttpFilterTypeName(context, any, &filter_type); - if (error != GRPC_ERROR_NONE) return error; - const XdsHttpFilterImpl* filter_impl = - XdsHttpFilterRegistry::GetFilterForType(filter_type); - if (filter_impl == nullptr) { - if (is_optional) continue; - return GRPC_ERROR_CREATE_FROM_COPIED_STRING( - absl::StrCat("no filter registered for config type ", filter_type) - .c_str()); - } - absl::StatusOr filter_config = - filter_impl->GenerateFilterConfigOverride( - google_protobuf_Any_value(any), context.arena); - if (!filter_config.ok()) { - return GRPC_ERROR_CREATE_FROM_COPIED_STRING( - absl::StrCat("filter config for type ", filter_type, - " failed to parse: ", filter_config.status().ToString()) - .c_str()); - } - (*typed_per_filter_config)[std::string(key)] = std::move(*filter_config); - } - return GRPC_ERROR_NONE; -} - -grpc_error* RouteActionParse(const EncodingContext& context, - const envoy_config_route_v3_Route* route_msg, +grpc_error* RouteActionParse(const envoy_config_route_v3_Route* route_msg, XdsApi::Route* route, bool* ignore_route) { if (!envoy_config_route_v3_Route_has_route(route_msg)) { return GRPC_ERROR_CREATE_FROM_STATIC_STRING( @@ -1299,18 +1117,6 @@ grpc_error* RouteActionParse(const EncodingContext& context, cluster.weight = google_protobuf_UInt32Value_value(weight); if (cluster.weight == 0) continue; sum_of_weights += cluster.weight; - if ((XdsSecurityEnabled() || XdsFaultInjectionEnabled()) && - context.use_v3) { - grpc_error* error = ParseTypedPerFilterConfig< - envoy_config_route_v3_WeightedCluster_ClusterWeight, - envoy_config_route_v3_WeightedCluster_ClusterWeight_TypedPerFilterConfigEntry>( - context, cluster_weight, - envoy_config_route_v3_WeightedCluster_ClusterWeight_typed_per_filter_config_next, - envoy_config_route_v3_WeightedCluster_ClusterWeight_TypedPerFilterConfigEntry_key, - envoy_config_route_v3_WeightedCluster_ClusterWeight_TypedPerFilterConfigEntry_value, - &cluster.typed_per_filter_config); - if (error != GRPC_ERROR_NONE) return error; - } route->weighted_clusters.emplace_back(std::move(cluster)); } if (total_weight != sum_of_weights) { @@ -1350,16 +1156,16 @@ grpc_error* RouteActionParse(const EncodingContext& context, } grpc_error* RouteConfigParse( - const EncodingContext& context, + XdsClient* client, TraceFlag* tracer, upb_symtab* symtab, const envoy_config_route_v3_RouteConfiguration* route_config, XdsApi::RdsUpdate* rds_update) { - MaybeLogRouteConfiguration(context, route_config); + MaybeLogRouteConfiguration(client, tracer, symtab, route_config); // Get the virtual hosts. - size_t num_virtual_hosts; + size_t size; const envoy_config_route_v3_VirtualHost* const* virtual_hosts = - envoy_config_route_v3_RouteConfiguration_virtual_hosts( - route_config, &num_virtual_hosts); - for (size_t i = 0; i < num_virtual_hosts; ++i) { + envoy_config_route_v3_RouteConfiguration_virtual_hosts(route_config, + &size); + for (size_t i = 0; i < size; ++i) { rds_update->virtual_hosts.emplace_back(); XdsApi::RdsUpdate::VirtualHost& vhost = rds_update->virtual_hosts.back(); // Parse domains. @@ -1379,19 +1185,6 @@ grpc_error* RouteConfigParse( if (vhost.domains.empty()) { return GRPC_ERROR_CREATE_FROM_STATIC_STRING("VirtualHost has no domains"); } - // Parse typed_per_filter_config. - if ((XdsSecurityEnabled() || XdsFaultInjectionEnabled()) && - context.use_v3) { - grpc_error* error = ParseTypedPerFilterConfig< - envoy_config_route_v3_VirtualHost, - envoy_config_route_v3_VirtualHost_TypedPerFilterConfigEntry>( - context, virtual_hosts[i], - envoy_config_route_v3_VirtualHost_typed_per_filter_config_next, - envoy_config_route_v3_VirtualHost_TypedPerFilterConfigEntry_key, - envoy_config_route_v3_VirtualHost_TypedPerFilterConfigEntry_value, - &vhost.typed_per_filter_config); - if (error != GRPC_ERROR_NONE) return error; - } // Parse routes. size_t num_routes; const envoy_config_route_v3_Route* const* routes = @@ -1419,21 +1212,9 @@ grpc_error* RouteConfigParse( if (error != GRPC_ERROR_NONE) return error; error = RouteRuntimeFractionParse(match, &route); if (error != GRPC_ERROR_NONE) return error; - error = RouteActionParse(context, routes[j], &route, &ignore_route); + error = RouteActionParse(routes[j], &route, &ignore_route); if (error != GRPC_ERROR_NONE) return error; if (ignore_route) continue; - if ((XdsSecurityEnabled() || XdsFaultInjectionEnabled()) && - context.use_v3) { - grpc_error* error = ParseTypedPerFilterConfig< - envoy_config_route_v3_Route, - envoy_config_route_v3_Route_TypedPerFilterConfigEntry>( - context, routes[j], - envoy_config_route_v3_Route_typed_per_filter_config_next, - envoy_config_route_v3_Route_TypedPerFilterConfigEntry_key, - envoy_config_route_v3_Route_TypedPerFilterConfigEntry_value, - &route.typed_per_filter_config); - if (error != GRPC_ERROR_NONE) return error; - } vhost.routes.emplace_back(std::move(route)); } if (vhost.routes.empty()) { @@ -1556,20 +1337,20 @@ grpc_error* CommonTlsContextParse( } grpc_error* LdsResponseParseClient( - const EncodingContext& context, + XdsClient* client, TraceFlag* tracer, upb_symtab* symtab, upb_arena* arena, const envoy_config_listener_v3_ApiListener* api_listener, XdsApi::LdsUpdate* lds_update) { lds_update->type = XdsApi::LdsUpdate::ListenerType::kHttpApiListener; const upb_strview encoded_api_listener = google_protobuf_Any_value( envoy_config_listener_v3_ApiListener_api_listener(api_listener)); - const auto* http_connection_manager = - envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_parse( - encoded_api_listener.data, encoded_api_listener.size, context.arena); + const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager* + http_connection_manager = + envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_parse( + encoded_api_listener.data, encoded_api_listener.size, arena); if (http_connection_manager == nullptr) { return GRPC_ERROR_CREATE_FROM_STATIC_STRING( "Could not parse HttpConnectionManager config from ApiListener"); } - MaybeLogHttpConnectionManager(context, http_connection_manager); if (XdsTimeoutEnabled()) { // Obtain max_stream_duration from Http Protocol Options. const envoy_config_core_v3_HttpProtocolOptions* options = @@ -1586,58 +1367,6 @@ grpc_error* LdsResponseParseClient( } } } - // Parse filters. - if ((XdsSecurityEnabled() || XdsFaultInjectionEnabled()) && context.use_v3) { - size_t num_filters = 0; - const auto* http_filters = - envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_http_filters( - http_connection_manager, &num_filters); - std::set names_seen; - for (size_t i = 0; i < num_filters; ++i) { - const auto* http_filter = http_filters[i]; - absl::string_view name = UpbStringToAbsl( - envoy_extensions_filters_network_http_connection_manager_v3_HttpFilter_name( - http_filter)); - if (name.empty()) { - return GRPC_ERROR_CREATE_FROM_COPIED_STRING( - absl::StrCat("empty filter name at index ", i).c_str()); - } - if (names_seen.find(name) != names_seen.end()) { - return GRPC_ERROR_CREATE_FROM_COPIED_STRING( - absl::StrCat("duplicate HTTP filter name: ", name).c_str()); - } - names_seen.insert(name); - const google_protobuf_Any* any = - envoy_extensions_filters_network_http_connection_manager_v3_HttpFilter_typed_config( - http_filter); - absl::string_view filter_type; - grpc_error* error = ExtractHttpFilterTypeName(context, any, &filter_type); - if (error != GRPC_ERROR_NONE) return error; - const XdsHttpFilterImpl* filter_impl = - XdsHttpFilterRegistry::GetFilterForType(filter_type); - if (filter_impl == nullptr) { - if (envoy_extensions_filters_network_http_connection_manager_v3_HttpFilter_is_optional( - http_filter)) { - continue; - } - return GRPC_ERROR_CREATE_FROM_COPIED_STRING( - absl::StrCat("no filter registered for config type ", filter_type) - .c_str()); - } - absl::StatusOr filter_config = - filter_impl->GenerateFilterConfig(google_protobuf_Any_value(any), - context.arena); - if (!filter_config.ok()) { - return GRPC_ERROR_CREATE_FROM_COPIED_STRING( - absl::StrCat( - "filter config for type ", filter_type, - " failed to parse: ", filter_config.status().ToString()) - .c_str()); - } - lds_update->http_filters.emplace_back(XdsApi::LdsUpdate::HttpFilter{ - std::string(name), std::move(*filter_config)}); - } - } // Found inlined route_config. Parse it to find the cluster_name. if (envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_has_route_config( http_connection_manager)) { @@ -1645,19 +1374,21 @@ grpc_error* LdsResponseParseClient( envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_route_config( http_connection_manager); XdsApi::RdsUpdate rds_update; - grpc_error* error = RouteConfigParse(context, route_config, &rds_update); + grpc_error* error = + RouteConfigParse(client, tracer, symtab, route_config, &rds_update); if (error != GRPC_ERROR_NONE) return error; lds_update->rds_update = std::move(rds_update); return GRPC_ERROR_NONE; } // Validate that RDS must be used to get the route_config dynamically. - const envoy_extensions_filters_network_http_connection_manager_v3_Rds* rds = - envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_rds( - http_connection_manager); - if (rds == nullptr) { + if (!envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_has_rds( + http_connection_manager)) { return GRPC_ERROR_CREATE_FROM_STATIC_STRING( "HttpConnectionManager neither has inlined route_config nor RDS."); } + const envoy_extensions_filters_network_http_connection_manager_v3_Rds* rds = + envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_rds( + http_connection_manager); // Check that the ConfigSource specifies ADS. const envoy_config_core_v3_ConfigSource* config_source = envoy_extensions_filters_network_http_connection_manager_v3_Rds_config_source( @@ -1678,15 +1409,13 @@ grpc_error* LdsResponseParseClient( } grpc_error* LdsResponseParseServer( - const EncodingContext& context, - const envoy_config_listener_v3_Listener* listener, + upb_arena* arena, const envoy_config_listener_v3_Listener* listener, + const std::string& /*listener_name*/, + const envoy_config_core_v3_Address* /*address*/, XdsApi::LdsUpdate* lds_update) { lds_update->type = XdsApi::LdsUpdate::ListenerType::kTcpListener; // TODO(yashykt): Support filter chain match. // Right now, we are supporting and expecting only one entry in filter_chains. - // As part of this, we'll need to refactor the code to process the - // HttpConnectionManager config so that it is shared with the client-side - // parsing. size_t size = 0; auto* filter_chains = envoy_config_listener_v3_Listener_filter_chains(listener, &size); @@ -1710,7 +1439,7 @@ grpc_error* LdsResponseParseServer( auto* downstream_tls_context = envoy_extensions_transport_sockets_tls_v3_DownstreamTlsContext_parse( encoded_downstream_tls_context.data, - encoded_downstream_tls_context.size, context.arena); + encoded_downstream_tls_context.size, arena); if (downstream_tls_context == nullptr) { return GRPC_ERROR_CREATE_FROM_STATIC_STRING( "Can't decode downstream tls context."); @@ -1746,11 +1475,11 @@ grpc_error* LdsResponseParseServer( } grpc_error* LdsResponseParse( - const EncodingContext& context, + XdsClient* client, TraceFlag* tracer, upb_symtab* symtab, const envoy_service_discovery_v3_DiscoveryResponse* response, const std::set& expected_listener_names, XdsApi::LdsUpdateMap* lds_update_map, - std::set* resource_names_failed) { + std::set* resource_names_failed, upb_arena* arena) { std::vector errors; // Get the resources from the response. size_t size; @@ -1770,8 +1499,8 @@ grpc_error* LdsResponseParse( const upb_strview encoded_listener = google_protobuf_Any_value(resources[i]); const envoy_config_listener_v3_Listener* listener = - envoy_config_listener_v3_Listener_parse( - encoded_listener.data, encoded_listener.size, context.arena); + envoy_config_listener_v3_Listener_parse(encoded_listener.data, + encoded_listener.size, arena); if (listener == nullptr) { errors.push_back(GRPC_ERROR_CREATE_FROM_COPIED_STRING( absl::StrCat("resource index ", i, ": Can't decode listener.") @@ -1817,9 +1546,11 @@ grpc_error* LdsResponseParse( } grpc_error* error = GRPC_ERROR_NONE; if (api_listener != nullptr) { - error = LdsResponseParseClient(context, api_listener, &lds_update); + error = LdsResponseParseClient(client, tracer, symtab, arena, + api_listener, &lds_update); } else { - error = LdsResponseParseServer(context, listener, &lds_update); + error = LdsResponseParseServer(arena, listener, listener_name, address, + &lds_update); } if (error != GRPC_ERROR_NONE) { errors.push_back(grpc_error_add_child( @@ -1833,11 +1564,11 @@ grpc_error* LdsResponseParse( } grpc_error* RdsResponseParse( - const EncodingContext& context, + XdsClient* client, TraceFlag* tracer, upb_symtab* symtab, const envoy_service_discovery_v3_DiscoveryResponse* response, const std::set& expected_route_configuration_names, XdsApi::RdsUpdateMap* rds_update_map, - std::set* resource_names_failed) { + std::set* resource_names_failed, upb_arena* arena) { std::vector errors; // Get the resources from the response. size_t size; @@ -1858,8 +1589,7 @@ grpc_error* RdsResponseParse( google_protobuf_Any_value(resources[i]); const envoy_config_route_v3_RouteConfiguration* route_config = envoy_config_route_v3_RouteConfiguration_parse( - encoded_route_config.data, encoded_route_config.size, - context.arena); + encoded_route_config.data, encoded_route_config.size, arena); if (route_config == nullptr) { errors.push_back(GRPC_ERROR_CREATE_FROM_COPIED_STRING( absl::StrCat("resource index ", i, ": Can't decode route_config.") @@ -1884,7 +1614,8 @@ grpc_error* RdsResponseParse( } // Parse the route_config. XdsApi::RdsUpdate& rds_update = (*rds_update_map)[route_config_name]; - grpc_error* error = RouteConfigParse(context, route_config, &rds_update); + grpc_error* error = + RouteConfigParse(client, tracer, symtab, route_config, &rds_update); if (error != GRPC_ERROR_NONE) { errors.push_back(grpc_error_add_child( GRPC_ERROR_CREATE_FROM_COPIED_STRING( @@ -1897,11 +1628,11 @@ grpc_error* RdsResponseParse( } grpc_error* CdsResponseParse( - const EncodingContext& context, + XdsClient* client, TraceFlag* tracer, upb_symtab* symtab, const envoy_service_discovery_v3_DiscoveryResponse* response, const std::set& expected_cluster_names, XdsApi::CdsUpdateMap* cds_update_map, - std::set* resource_names_failed) { + std::set* resource_names_failed, upb_arena* arena) { std::vector errors; // Get the resources from the response. size_t size; @@ -1921,15 +1652,15 @@ grpc_error* CdsResponseParse( // Decode the cluster. const upb_strview encoded_cluster = google_protobuf_Any_value(resources[i]); const envoy_config_cluster_v3_Cluster* cluster = - envoy_config_cluster_v3_Cluster_parse( - encoded_cluster.data, encoded_cluster.size, context.arena); + envoy_config_cluster_v3_Cluster_parse(encoded_cluster.data, + encoded_cluster.size, arena); if (cluster == nullptr) { errors.push_back(GRPC_ERROR_CREATE_FROM_COPIED_STRING( absl::StrCat("resource index ", i, ": Can't decode cluster.") .c_str())); continue; } - MaybeLogCluster(context, cluster); + MaybeLogCluster(client, tracer, symtab, cluster); // Ignore unexpected cluster names. std::string cluster_name = UpbStringToStdString(envoy_config_cluster_v3_Cluster_name(cluster)); @@ -2006,7 +1737,7 @@ grpc_error* CdsResponseParse( aggregate_cluster_config = envoy_extensions_clusters_aggregate_v3_ClusterConfig_parse( aggregate_cluster_config_upb_strview.data, - aggregate_cluster_config_upb_strview.size, context.arena); + aggregate_cluster_config_upb_strview.size, arena); if (aggregate_cluster_config == nullptr) { errors.push_back(GRPC_ERROR_CREATE_FROM_COPIED_STRING( absl::StrCat(cluster_name, ": Can't parse aggregate cluster.") @@ -2141,7 +1872,7 @@ grpc_error* CdsResponseParse( auto* upstream_tls_context = envoy_extensions_transport_sockets_tls_v3_UpstreamTlsContext_parse( encoded_upstream_tls_context.data, - encoded_upstream_tls_context.size, context.arena); + encoded_upstream_tls_context.size, arena); if (upstream_tls_context == nullptr) { errors.push_back(GRPC_ERROR_CREATE_FROM_COPIED_STRING( absl::StrCat(cluster_name, @@ -2337,11 +2068,11 @@ grpc_error* DropParseAndAppend( } grpc_error* EdsResponseParse( - const EncodingContext& context, + XdsClient* client, TraceFlag* tracer, upb_symtab* symtab, const envoy_service_discovery_v3_DiscoveryResponse* response, const std::set& expected_eds_service_names, XdsApi::EdsUpdateMap* eds_update_map, - std::set* resource_names_failed) { + std::set* resource_names_failed, upb_arena* arena) { std::vector errors; // Get the resources from the response. size_t size; @@ -2363,7 +2094,7 @@ grpc_error* EdsResponseParse( envoy_config_endpoint_v3_ClusterLoadAssignment* cluster_load_assignment = envoy_config_endpoint_v3_ClusterLoadAssignment_parse( encoded_cluster_load_assignment.data, - encoded_cluster_load_assignment.size, context.arena); + encoded_cluster_load_assignment.size, arena); if (cluster_load_assignment == nullptr) { errors.push_back(GRPC_ERROR_CREATE_FROM_COPIED_STRING( absl::StrCat("resource index ", i, @@ -2371,7 +2102,8 @@ grpc_error* EdsResponseParse( .c_str())); continue; } - MaybeLogClusterLoadAssignment(context, cluster_load_assignment); + MaybeLogClusterLoadAssignment(client, tracer, symtab, + cluster_load_assignment); // Check the EDS service name. Ignore unexpected names. std::string eds_service_name = UpbStringToStdString( envoy_config_endpoint_v3_ClusterLoadAssignment_cluster_name( @@ -2482,15 +2214,13 @@ void MoveUpdatesToFailedSet(UpdateMap* update_map, } // namespace XdsApi::AdsParseResult XdsApi::ParseAdsResponse( - const XdsBootstrap::XdsServer& server, const grpc_slice& encoded_response, + const grpc_slice& encoded_response, const std::set& expected_listener_names, const std::set& expected_route_configuration_names, const std::set& expected_cluster_names, const std::set& expected_eds_service_names) { AdsParseResult result; upb::Arena arena; - const EncodingContext context = {client_, tracer_, symtab_.ptr(), arena.ptr(), - server.ShouldUseV3()}; // Decode the response. const envoy_service_discovery_v3_DiscoveryResponse* response = envoy_service_discovery_v3_DiscoveryResponse_parse( @@ -2502,7 +2232,7 @@ XdsApi::AdsParseResult XdsApi::ParseAdsResponse( GRPC_ERROR_CREATE_FROM_STATIC_STRING("Can't decode DiscoveryResponse."); return result; } - MaybeLogDiscoveryResponse(context, response); + MaybeLogDiscoveryResponse(client_, tracer_, symtab_.ptr(), response); // Record the type_url, the version_info, and the nonce of the response. result.type_url = TypeUrlInternalToExternal(UpbStringToAbsl( envoy_service_discovery_v3_DiscoveryResponse_type_url(response))); @@ -2512,33 +2242,34 @@ XdsApi::AdsParseResult XdsApi::ParseAdsResponse( envoy_service_discovery_v3_DiscoveryResponse_nonce(response)); // Parse the response according to the resource type. if (IsLds(result.type_url)) { - result.parse_error = - LdsResponseParse(context, response, expected_listener_names, - &result.lds_update_map, &result.resource_names_failed); + result.parse_error = LdsResponseParse( + client_, tracer_, symtab_.ptr(), response, expected_listener_names, + &result.lds_update_map, &result.resource_names_failed, arena.ptr()); if (result.parse_error != GRPC_ERROR_NONE) { MoveUpdatesToFailedSet(&result.lds_update_map, &result.resource_names_failed); } } else if (IsRds(result.type_url)) { - result.parse_error = - RdsResponseParse(context, response, expected_route_configuration_names, - &result.rds_update_map, &result.resource_names_failed); + result.parse_error = RdsResponseParse( + client_, tracer_, symtab_.ptr(), response, + expected_route_configuration_names, &result.rds_update_map, + &result.resource_names_failed, arena.ptr()); if (result.parse_error != GRPC_ERROR_NONE) { MoveUpdatesToFailedSet(&result.rds_update_map, &result.resource_names_failed); } } else if (IsCds(result.type_url)) { - result.parse_error = - CdsResponseParse(context, response, expected_cluster_names, - &result.cds_update_map, &result.resource_names_failed); + result.parse_error = CdsResponseParse( + client_, tracer_, symtab_.ptr(), response, expected_cluster_names, + &result.cds_update_map, &result.resource_names_failed, arena.ptr()); if (result.parse_error != GRPC_ERROR_NONE) { MoveUpdatesToFailedSet(&result.cds_update_map, &result.resource_names_failed); } } else if (IsEds(result.type_url)) { - result.parse_error = - EdsResponseParse(context, response, expected_eds_service_names, - &result.eds_update_map, &result.resource_names_failed); + result.parse_error = EdsResponseParse( + client_, tracer_, symtab_.ptr(), response, expected_eds_service_names, + &result.eds_update_map, &result.resource_names_failed, arena.ptr()); if (result.parse_error != GRPC_ERROR_NONE) { MoveUpdatesToFailedSet(&result.eds_update_map, &result.resource_names_failed); @@ -2550,25 +2281,25 @@ XdsApi::AdsParseResult XdsApi::ParseAdsResponse( namespace { void MaybeLogLrsRequest( - const EncodingContext& context, + XdsClient* client, TraceFlag* tracer, upb_symtab* symtab, const envoy_service_load_stats_v3_LoadStatsRequest* request) { - if (GRPC_TRACE_FLAG_ENABLED(*context.tracer) && + if (GRPC_TRACE_FLAG_ENABLED(*tracer) && gpr_should_log(GPR_LOG_SEVERITY_DEBUG)) { const upb_msgdef* msg_type = - envoy_service_load_stats_v3_LoadStatsRequest_getmsgdef(context.symtab); + envoy_service_load_stats_v3_LoadStatsRequest_getmsgdef(symtab); char buf[10240]; upb_text_encode(request, msg_type, nullptr, 0, buf, sizeof(buf)); - gpr_log(GPR_DEBUG, "[xds_client %p] constructed LRS request: %s", - context.client, buf); + gpr_log(GPR_DEBUG, "[xds_client %p] constructed LRS request: %s", client, + buf); } } grpc_slice SerializeLrsRequest( - const EncodingContext& context, - const envoy_service_load_stats_v3_LoadStatsRequest* request) { + const envoy_service_load_stats_v3_LoadStatsRequest* request, + upb_arena* arena) { size_t output_length; char* output = envoy_service_load_stats_v3_LoadStatsRequest_serialize( - request, context.arena, &output_length); + request, arena, &output_length); return grpc_slice_from_copied_buffer(output, output_length); } @@ -2577,8 +2308,6 @@ grpc_slice SerializeLrsRequest( grpc_slice XdsApi::CreateLrsInitialRequest( const XdsBootstrap::XdsServer& server) { upb::Arena arena; - const EncodingContext context = {client_, tracer_, symtab_.ptr(), arena.ptr(), - server.ShouldUseV3()}; // Create a request. envoy_service_load_stats_v3_LoadStatsRequest* request = envoy_service_load_stats_v3_LoadStatsRequest_new(arena.ptr()); @@ -2586,25 +2315,25 @@ grpc_slice XdsApi::CreateLrsInitialRequest( envoy_config_core_v3_Node* node_msg = envoy_service_load_stats_v3_LoadStatsRequest_mutable_node(request, arena.ptr()); - PopulateNode(context, node_, build_version_, user_agent_name_, node_msg); + PopulateNode(arena.ptr(), node_, server.ShouldUseV3(), build_version_, + user_agent_name_, node_msg); envoy_config_core_v3_Node_add_client_features( node_msg, upb_strview_makez("envoy.lrs.supports_send_all_clusters"), arena.ptr()); - MaybeLogLrsRequest(context, request); - return SerializeLrsRequest(context, request); + MaybeLogLrsRequest(client_, tracer_, symtab_.ptr(), request); + return SerializeLrsRequest(request, arena.ptr()); } namespace { void LocalityStatsPopulate( - const EncodingContext& context, envoy_config_endpoint_v3_UpstreamLocalityStats* output, const XdsLocalityName& locality_name, - const XdsClusterLocalityStats::Snapshot& snapshot) { + const XdsClusterLocalityStats::Snapshot& snapshot, upb_arena* arena) { // Set locality. envoy_config_core_v3_Locality* locality = - envoy_config_endpoint_v3_UpstreamLocalityStats_mutable_locality( - output, context.arena); + envoy_config_endpoint_v3_UpstreamLocalityStats_mutable_locality(output, + arena); if (!locality_name.region().empty()) { envoy_config_core_v3_Locality_set_region( locality, StdStringToUpbString(locality_name.region())); @@ -2632,7 +2361,7 @@ void LocalityStatsPopulate( const XdsClusterLocalityStats::BackendMetric& metric_value = p.second; envoy_config_endpoint_v3_EndpointLoadMetricStats* load_metric = envoy_config_endpoint_v3_UpstreamLocalityStats_add_load_metric_stats( - output, context.arena); + output, arena); envoy_config_endpoint_v3_EndpointLoadMetricStats_set_metric_name( load_metric, StdStringToUpbString(metric_name)); envoy_config_endpoint_v3_EndpointLoadMetricStats_set_num_requests_finished_with_metric( @@ -2647,8 +2376,6 @@ void LocalityStatsPopulate( grpc_slice XdsApi::CreateLrsRequest( ClusterLoadReportMap cluster_load_report_map) { upb::Arena arena; - const EncodingContext context = {client_, tracer_, symtab_.ptr(), arena.ptr(), - false}; // Create a request. envoy_service_load_stats_v3_LoadStatsRequest* request = envoy_service_load_stats_v3_LoadStatsRequest_new(arena.ptr()); @@ -2675,7 +2402,8 @@ grpc_slice XdsApi::CreateLrsRequest( envoy_config_endpoint_v3_UpstreamLocalityStats* locality_stats = envoy_config_endpoint_v3_ClusterStats_add_upstream_locality_stats( cluster_stats, arena.ptr()); - LocalityStatsPopulate(context, locality_stats, locality_name, snapshot); + LocalityStatsPopulate(locality_stats, locality_name, snapshot, + arena.ptr()); } // Add dropped requests. uint64_t total_dropped_requests = 0; @@ -2704,8 +2432,8 @@ grpc_slice XdsApi::CreateLrsRequest( google_protobuf_Duration_set_seconds(load_report_interval, timespec.tv_sec); google_protobuf_Duration_set_nanos(load_report_interval, timespec.tv_nsec); } - MaybeLogLrsRequest(context, request); - return SerializeLrsRequest(context, request); + MaybeLogLrsRequest(client_, tracer_, symtab_.ptr(), request); + return SerializeLrsRequest(request, arena.ptr()); } grpc_error* XdsApi::ParseLrsResponse(const grpc_slice& encoded_response, diff --git a/src/core/ext/xds/xds_api.h b/src/core/ext/xds/xds_api.h index d7f3d90b955f5..88aeeb43a3436 100644 --- a/src/core/ext/xds/xds_api.h +++ b/src/core/ext/xds/xds_api.h @@ -36,7 +36,6 @@ #include "src/core/ext/filters/client_channel/server_address.h" #include "src/core/ext/xds/xds_bootstrap.h" #include "src/core/ext/xds/xds_client_stats.h" -#include "src/core/ext/xds/xds_http_filters.h" #include "src/core/lib/security/authorization/matchers.h" namespace grpc_core { @@ -46,10 +45,6 @@ namespace grpc_core { // default. bool XdsSecurityEnabled(); -// TODO(lidiz): This will be removed once the fault injection feature is -// fully integration-tested and enabled by default. -bool XdsFaultInjectionEnabled(); - class XdsClient; class XdsApi { @@ -63,16 +58,13 @@ class XdsApi { int64_t seconds = 0; int32_t nanos = 0; bool operator==(const Duration& other) const { - return seconds == other.seconds && nanos == other.nanos; + return (seconds == other.seconds && nanos == other.nanos); } std::string ToString() const { return absl::StrFormat("Duration seconds: %ld, nanos %d", seconds, nanos); } }; - using TypedPerFilterConfig = - std::map; - // TODO(donnadionne): When we can use absl::variant<>, consider using that // for: PathMatcher, HeaderMatcher, cluster_name and weighted_clusters struct Route { @@ -83,9 +75,9 @@ class XdsApi { absl::optional fraction_per_million; bool operator==(const Matchers& other) const { - return path_matcher == other.path_matcher && - header_matchers == other.header_matchers && - fraction_per_million == other.fraction_per_million; + return (path_matcher == other.path_matcher && + header_matchers == other.header_matchers && + fraction_per_million == other.fraction_per_million); } std::string ToString() const; }; @@ -99,11 +91,8 @@ class XdsApi { struct ClusterWeight { std::string name; uint32_t weight; - TypedPerFilterConfig typed_per_filter_config; - bool operator==(const ClusterWeight& other) const { - return name == other.name && weight == other.weight && - typed_per_filter_config == other.typed_per_filter_config; + return (name == other.name && weight == other.weight); } std::string ToString() const; }; @@ -114,13 +103,11 @@ class XdsApi { // not set. absl::optional max_stream_duration; - TypedPerFilterConfig typed_per_filter_config; - bool operator==(const Route& other) const { - return matchers == other.matchers && cluster_name == other.cluster_name && - weighted_clusters == other.weighted_clusters && - max_stream_duration == other.max_stream_duration && - typed_per_filter_config == other.typed_per_filter_config; + return (matchers == other.matchers && + cluster_name == other.cluster_name && + weighted_clusters == other.weighted_clusters && + max_stream_duration == other.max_stream_duration); } std::string ToString() const; }; @@ -129,11 +116,9 @@ class XdsApi { struct VirtualHost { std::vector domains; std::vector routes; - TypedPerFilterConfig typed_per_filter_config; bool operator==(const VirtualHost& other) const { - return domains == other.domains && routes == other.routes && - typed_per_filter_config == other.typed_per_filter_config; + return domains == other.domains && routes == other.routes; } }; @@ -229,24 +214,11 @@ class XdsApi { // Present only if it is inlined in the LDS response. absl::optional rds_update; - struct HttpFilter { - std::string name; - XdsHttpFilterImpl::FilterConfig config; - - bool operator==(const HttpFilter& other) const { - return name == other.name && config == other.config; - } - - std::string ToString() const; - }; - std::vector http_filters; - bool operator==(const LdsUpdate& other) const { return downstream_tls_context == other.downstream_tls_context && route_config_name == other.route_config_name && rds_update == other.rds_update && - http_max_stream_duration == other.http_max_stream_duration && - http_filters == other.http_filters; + http_max_stream_duration == other.http_max_stream_duration; } std::string ToString() const; @@ -425,7 +397,7 @@ class XdsApi { std::set resource_names_failed; }; AdsParseResult ParseAdsResponse( - const XdsBootstrap::XdsServer& server, const grpc_slice& encoded_response, + const grpc_slice& encoded_response, const std::set& expected_listener_names, const std::set& expected_route_configuration_names, const std::set& expected_cluster_names, diff --git a/src/core/ext/xds/xds_client.cc b/src/core/ext/xds/xds_client.cc index fddf9f201b2d7..efc1661147bba 100644 --- a/src/core/ext/xds/xds_client.cc +++ b/src/core/ext/xds/xds_client.cc @@ -38,7 +38,6 @@ #include "src/core/ext/xds/xds_channel_args.h" #include "src/core/ext/xds/xds_client.h" #include "src/core/ext/xds/xds_client_stats.h" -#include "src/core/ext/xds/xds_http_filters.h" #include "src/core/lib/backoff/backoff.h" #include "src/core/lib/channel/channel_args.h" #include "src/core/lib/channel/channel_stack.h" @@ -1162,8 +1161,7 @@ bool XdsClient::ChannelState::AdsCallState::OnResponseReceivedLocked() { recv_message_payload_ = nullptr; // Parse and validate the response. XdsApi::AdsParseResult result = xds_client()->api_.ParseAdsResponse( - chand()->server_, response_slice, - ResourceNamesForRequest(XdsApi::kLdsTypeUrl), + response_slice, ResourceNamesForRequest(XdsApi::kLdsTypeUrl), ResourceNamesForRequest(XdsApi::kRdsTypeUrl), ResourceNamesForRequest(XdsApi::kCdsTypeUrl), ResourceNamesForRequest(XdsApi::kEdsTypeUrl)); @@ -2198,17 +2196,13 @@ XdsApi::ClusterLoadReportMap XdsClient::BuildLoadReportSnapshotLocked( // accessors for global state // -void XdsClientGlobalInit() { - g_mu = new Mutex; - XdsHttpFilterRegistry::Init(); -} +void XdsClientGlobalInit() { g_mu = new Mutex; } void XdsClientGlobalShutdown() { delete g_mu; g_mu = nullptr; gpr_free(g_fallback_bootstrap_config); g_fallback_bootstrap_config = nullptr; - XdsHttpFilterRegistry::Shutdown(); } RefCountedPtr XdsClient::GetOrCreate(grpc_error** error) { diff --git a/src/core/ext/xds/xds_http_filters.cc b/src/core/ext/xds/xds_http_filters.cc deleted file mode 100644 index 11b644339b62a..0000000000000 --- a/src/core/ext/xds/xds_http_filters.cc +++ /dev/null @@ -1,107 +0,0 @@ -// -// Copyright 2021 gRPC authors. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// - -#include - -#include "src/core/ext/xds/xds_http_filters.h" - -#include "envoy/extensions/filters/http/router/v3/router.upb.h" -#include "envoy/extensions/filters/http/router/v3/router.upbdefs.h" - -namespace grpc_core { - -const char* kXdsHttpRouterFilterConfigName = - "envoy.extensions.filters.http.router.v3.Router"; - -namespace { - -class XdsHttpRouterFilter : public XdsHttpFilterImpl { - public: - void PopulateSymtab(upb_symtab* symtab) const override { - envoy_extensions_filters_http_router_v3_Router_getmsgdef(symtab); - } - - absl::StatusOr GenerateFilterConfig( - upb_strview serialized_filter_config, upb_arena* arena) const override { - if (envoy_extensions_filters_http_router_v3_Router_parse( - serialized_filter_config.data, serialized_filter_config.size, - arena) == nullptr) { - return absl::InvalidArgumentError("could not parse router filter config"); - } - return FilterConfig{kXdsHttpRouterFilterConfigName, Json()}; - } - - absl::StatusOr GenerateFilterConfigOverride( - upb_strview /*serialized_filter_config*/, - upb_arena* /*arena*/) const override { - return absl::InvalidArgumentError( - "router filter does not support config override"); - } - - // No-op -- this filter is special-cased by the xds resolver. - const grpc_channel_filter* channel_filter() const override { return nullptr; } - - // No-op -- this filter is special-cased by the xds resolver. - absl::StatusOr GenerateServiceConfig( - const FilterConfig& /*hcm_filter_config*/, - const FilterConfig* /*filter_config_override*/) const override { - return absl::UnimplementedError("router filter should never be called"); - } -}; - -using FilterOwnerList = std::vector>; -using FilterRegistryMap = std::map; - -FilterOwnerList* g_filters = nullptr; -FilterRegistryMap* g_filter_registry = nullptr; - -} // namespace - -void XdsHttpFilterRegistry::RegisterFilter( - std::unique_ptr filter, - const std::set& config_proto_type_names) { - for (auto config_proto_type_name : config_proto_type_names) { - (*g_filter_registry)[config_proto_type_name] = filter.get(); - } - g_filters->push_back(std::move(filter)); -} - -const XdsHttpFilterImpl* XdsHttpFilterRegistry::GetFilterForType( - absl::string_view proto_type_name) { - auto it = g_filter_registry->find(proto_type_name); - if (it == g_filter_registry->end()) return nullptr; - return it->second; -} - -void XdsHttpFilterRegistry::PopulateSymtab(upb_symtab* symtab) { - for (const auto& filter : *g_filters) { - filter->PopulateSymtab(symtab); - } -} - -void XdsHttpFilterRegistry::Init() { - g_filters = new FilterOwnerList; - g_filter_registry = new FilterRegistryMap; - RegisterFilter(absl::make_unique(), - {kXdsHttpRouterFilterConfigName}); -} - -void XdsHttpFilterRegistry::Shutdown() { - delete g_filter_registry; - delete g_filters; -} - -} // namespace grpc_core diff --git a/src/core/ext/xds/xds_http_filters.h b/src/core/ext/xds/xds_http_filters.h deleted file mode 100644 index 61e96cde665dd..0000000000000 --- a/src/core/ext/xds/xds_http_filters.h +++ /dev/null @@ -1,124 +0,0 @@ -// -// Copyright 2021 gRPC authors. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// - -#ifndef GRPC_CORE_EXT_XDS_XDS_HTTP_FILTERS_H -#define GRPC_CORE_EXT_XDS_XDS_HTTP_FILTERS_H - -#include - -#include -#include -#include - -#include "absl/status/statusor.h" -#include "absl/strings/str_cat.h" -#include "absl/strings/string_view.h" -#include "google/protobuf/any.upb.h" -#include "upb/def.h" - -#include - -#include "src/core/lib/channel/channel_stack.h" -#include "src/core/lib/json/json.h" - -namespace grpc_core { - -extern const char* kXdsHttpRouterFilterConfigName; - -class XdsHttpFilterImpl { - public: - struct FilterConfig { - absl::string_view config_proto_type_name; - Json config; - - bool operator==(const FilterConfig& other) const { - return config_proto_type_name == other.config_proto_type_name && - config == other.config; - } - std::string ToString() const { - return absl::StrCat("{config_proto_type_name=", config_proto_type_name, - " config=", config.Dump(), "}"); - } - }; - - // Service config data for the filter, returned by GenerateServiceConfig(). - struct ServiceConfigJsonEntry { - // The top-level field name in the method config. - // Filter implementations should use their primary config proto type - // name for this. - // The value of this field in the method config will be a JSON array, - // which will be populated with the elements returned by each filter - // instance. - std::string service_config_field_name; - // The element to add to the JSON array. - std::string element; - }; - - virtual ~XdsHttpFilterImpl() = default; - - // Loads the proto message into the upb symtab. - virtual void PopulateSymtab(upb_symtab* symtab) const = 0; - - // Generates a Config from the xDS filter config proto. - // Used for the top-level config in the HCM HTTP filter list. - virtual absl::StatusOr GenerateFilterConfig( - upb_strview serialized_filter_config, upb_arena* arena) const = 0; - - // Generates a Config from the xDS filter config proto. - // Used for the typed_per_filter_config override in VirtualHost and Route. - virtual absl::StatusOr GenerateFilterConfigOverride( - upb_strview serialized_filter_config, upb_arena* arena) const = 0; - - // C-core channel filter implementation. - virtual const grpc_channel_filter* channel_filter() const = 0; - - // Modifies channel args that may affect service config parsing (not - // visible to the channel as a whole). - // Takes ownership of args. Caller takes ownership of return value. - virtual grpc_channel_args* ModifyChannelArgs(grpc_channel_args* args) const { - return args; - } - - // Function to convert the Configs into a JSON string to be added to the - // per-method part of the service config. - // The hcm_filter_config comes from the HttpConnectionManager config. - // The filter_config_override comes from the first of the ClusterWeight, - // Route, or VirtualHost entries that it is found in, or null if - // there is no override in any of those locations. - virtual absl::StatusOr GenerateServiceConfig( - const FilterConfig& hcm_filter_config, - const FilterConfig* filter_config_override) const = 0; -}; - -class XdsHttpFilterRegistry { - public: - static void RegisterFilter( - std::unique_ptr filter, - const std::set& config_proto_type_names); - - static const XdsHttpFilterImpl* GetFilterForType( - absl::string_view proto_type_name); - - static void PopulateSymtab(upb_symtab* symtab); - - // Global init and shutdown. - static void Init(); - static void Shutdown(); -}; - -} // namespace grpc_core - -#endif /* GRPC_CORE_EXT_XDS_XDS_HTTP_FILTERS_H */ diff --git a/src/core/lib/channel/channel_stack.cc b/src/core/lib/channel/channel_stack.cc index 60b83667c54f5..e9b348972f20c 100644 --- a/src/core/lib/channel/channel_stack.cc +++ b/src/core/lib/channel/channel_stack.cc @@ -81,18 +81,6 @@ grpc_channel_element* grpc_channel_stack_last_element( return grpc_channel_stack_element(channel_stack, channel_stack->count - 1); } -size_t grpc_channel_stack_filter_instance_number( - grpc_channel_stack* channel_stack, grpc_channel_element* elem) { - size_t num_found = 0; - for (size_t i = 0; i < channel_stack->count; ++i) { - grpc_channel_element* element = - grpc_channel_stack_element(channel_stack, i); - if (element == elem) break; - if (element->filter == elem->filter) ++num_found; - } - return num_found; -} - grpc_call_element* grpc_call_stack_element(grpc_call_stack* call_stack, size_t index) { return CALL_ELEMS_FROM_STACK(call_stack) + index; diff --git a/src/core/lib/channel/channel_stack.h b/src/core/lib/channel/channel_stack.h index 1573ae1e056b9..e297df9488dd4 100644 --- a/src/core/lib/channel/channel_stack.h +++ b/src/core/lib/channel/channel_stack.h @@ -204,13 +204,6 @@ grpc_channel_element* grpc_channel_stack_element(grpc_channel_stack* stack, /* Get the last channel element in a channel stack */ grpc_channel_element* grpc_channel_stack_last_element( grpc_channel_stack* stack); - -// A utility function for a filter to determine how many other instances -// of the same filter exist above it in the same stack. Intended to be -// used in the filter's init_channel_elem() method. -size_t grpc_channel_stack_filter_instance_number( - grpc_channel_stack* channel_stack, grpc_channel_element* elem); - /* Get a call stack element given a call stack and an index */ grpc_call_element* grpc_call_stack_element(grpc_call_stack* stack, size_t i); diff --git a/src/core/lib/surface/lame_client.cc b/src/core/lib/surface/lame_client.cc index f92c1920df3ba..d32cc28ea6549 100644 --- a/src/core/lib/surface/lame_client.cc +++ b/src/core/lib/surface/lame_client.cc @@ -35,20 +35,12 @@ #include "src/core/lib/transport/connectivity_state.h" #include "src/core/lib/transport/static_metadata.h" -#define GRPC_ARG_LAME_FILTER_ERROR "grpc.lame_filter_error" - namespace grpc_core { namespace { struct ChannelData { - explicit ChannelData(grpc_channel_element_args* args) - : state_tracker("lame_channel", GRPC_CHANNEL_SHUTDOWN) { - grpc_error* err = grpc_channel_args_find_pointer( - args->channel_args, GRPC_ARG_LAME_FILTER_ERROR); - if (err != nullptr) error = GRPC_ERROR_REF(err); - } - + ChannelData() : state_tracker("lame_channel", GRPC_CHANNEL_SHUTDOWN) {} ~ChannelData() { GRPC_ERROR_UNREF(error); } grpc_error* error = GRPC_ERROR_NONE; @@ -113,7 +105,9 @@ static void lame_destroy_call_elem(grpc_call_element* /*elem*/, static grpc_error* lame_init_channel_elem(grpc_channel_element* elem, grpc_channel_element_args* args) { - new (elem->channel_data) ChannelData(args); + GPR_ASSERT(args->is_first); + GPR_ASSERT(args->is_last); + new (elem->channel_data) ChannelData; return GRPC_ERROR_NONE; } @@ -122,25 +116,12 @@ static void lame_destroy_channel_elem(grpc_channel_element* elem) { chand->~ChannelData(); } -// Channel arg vtable for a grpc_error*. -void* ErrorCopy(void* p) { - grpc_error* error = static_cast(p); - return GRPC_ERROR_REF(error); -} -void ErrorDestroy(void* p) { - grpc_error* error = static_cast(p); - GRPC_ERROR_UNREF(error); -} -int ErrorCompare(void* p, void* q) { return GPR_ICMP(p, q); } -const grpc_arg_pointer_vtable kLameFilterErrorArgVtable = { - ErrorCopy, ErrorDestroy, ErrorCompare}; - } // namespace -grpc_arg MakeLameClientErrorArg(grpc_error* error) { - return grpc_channel_arg_pointer_create( - const_cast(GRPC_ARG_LAME_FILTER_ERROR), error, - &kLameFilterErrorArgVtable); +void SetLameFilterError(grpc_channel_element* elem, grpc_error* error) { + GPR_ASSERT(elem->filter == &grpc_lame_filter); + auto chand = static_cast(elem->channel_data); + chand->error = error; } } // namespace grpc_core @@ -165,20 +146,20 @@ grpc_channel* grpc_lame_client_channel_create(const char* target, grpc_status_code error_code, const char* error_message) { grpc_core::ExecCtx exec_ctx; + grpc_channel_element* elem; + grpc_channel* channel = + grpc_channel_create(target, nullptr, GRPC_CLIENT_LAME_CHANNEL, nullptr); + elem = grpc_channel_stack_element(grpc_channel_get_channel_stack(channel), 0); GRPC_API_TRACE( "grpc_lame_client_channel_create(target=%s, error_code=%d, " "error_message=%s)", 3, (target, (int)error_code, error_message)); - grpc_error* error = grpc_error_set_str( - grpc_error_set_int( - GRPC_ERROR_CREATE_FROM_STATIC_STRING("lame client channel"), - GRPC_ERROR_INT_GRPC_STATUS, error_code), - GRPC_ERROR_STR_GRPC_MESSAGE, - grpc_slice_from_static_string(error_message)); - grpc_arg error_arg = grpc_core::MakeLameClientErrorArg(error); - grpc_channel_args args = {1, &error_arg}; - grpc_channel* channel = - grpc_channel_create(target, &args, GRPC_CLIENT_LAME_CHANNEL, nullptr); - GRPC_ERROR_UNREF(error); + grpc_core::SetLameFilterError( + elem, grpc_error_set_str( + grpc_error_set_int( + GRPC_ERROR_CREATE_FROM_STATIC_STRING("lame client channel"), + GRPC_ERROR_INT_GRPC_STATUS, error_code), + GRPC_ERROR_STR_GRPC_MESSAGE, + grpc_slice_from_static_string(error_message))); return channel; } diff --git a/src/core/lib/surface/lame_client.h b/src/core/lib/surface/lame_client.h index 94c7e553ad8bd..8fd3f4eb6c3b5 100644 --- a/src/core/lib/surface/lame_client.h +++ b/src/core/lib/surface/lame_client.h @@ -23,11 +23,10 @@ #include "src/core/lib/channel/channel_stack.h" +extern const grpc_channel_filter grpc_lame_filter; + namespace grpc_core { -// Does NOT take ownership of error. -grpc_arg MakeLameClientErrorArg(grpc_error* error); +void SetLameFilterError(grpc_channel_element* elem, grpc_error* error); } // namespace grpc_core -extern const grpc_channel_filter grpc_lame_filter; - #endif /* GRPC_CORE_LIB_SURFACE_LAME_CLIENT_H */ diff --git a/src/proto/grpc/testing/xds/v3/BUILD b/src/proto/grpc/testing/xds/v3/BUILD index 024cd63d786dc..6d212fa72c130 100644 --- a/src/proto/grpc/testing/xds/v3/BUILD +++ b/src/proto/grpc/testing/xds/v3/BUILD @@ -186,7 +186,6 @@ grpc_proto_library( srcs = [ "http_connection_manager.proto", ], - well_known_protos = True, deps = [ "config_source_proto", "protocol_proto", @@ -194,13 +193,6 @@ grpc_proto_library( ], ) -grpc_proto_library( - name = "router_proto", - srcs = [ - "router.proto", - ], -) - grpc_proto_library( name = "string_proto", srcs = [ diff --git a/src/proto/grpc/testing/xds/v3/http_connection_manager.proto b/src/proto/grpc/testing/xds/v3/http_connection_manager.proto index 74477073c700a..786ac0f01dc09 100644 --- a/src/proto/grpc/testing/xds/v3/http_connection_manager.proto +++ b/src/proto/grpc/testing/xds/v3/http_connection_manager.proto @@ -18,8 +18,6 @@ syntax = "proto3"; package envoy.extensions.filters.network.http_connection_manager.v3; -import "google/protobuf/any.proto"; - import "src/proto/grpc/testing/xds/v3/config_source.proto"; import "src/proto/grpc/testing/xds/v3/protocol.proto"; import "src/proto/grpc/testing/xds/v3/route.proto"; @@ -42,11 +40,6 @@ message HttpConnectionManager { ScopedRoutes scoped_routes = 31; } - // A list of individual HTTP filters that make up the filter chain for - // requests made to the connection manager. :ref:`Order matters ` - // as the filters are processed sequentially as request events happen. - repeated HttpFilter http_filters = 5; - // Additional settings for HTTP requests handled by the connection manager. These will be // applicable to both HTTP1 and HTTP2 requests. config.core.v3.HttpProtocolOptions common_http_protocol_options = 35; @@ -65,18 +58,3 @@ message Rds { message ScopedRoutes { } - -message HttpFilter { - // The name of the filter configuration. The name is used as a fallback to - // select an extension if the type of the configuration proto is not - // sufficient. It also serves as a resource name in ExtensionConfigDS. - string name = 1; - - oneof config_type { - // Filter specific configuration which depends on the filter being instantiated. See the supported - // filters for further documentation. - google.protobuf.Any typed_config = 4; - } - - bool is_optional = 6; -} diff --git a/src/proto/grpc/testing/xds/v3/route.proto b/src/proto/grpc/testing/xds/v3/route.proto index baeaaf644d41f..b7fc40b279e67 100644 --- a/src/proto/grpc/testing/xds/v3/route.proto +++ b/src/proto/grpc/testing/xds/v3/route.proto @@ -23,7 +23,6 @@ import "src/proto/grpc/testing/xds/v3/regex.proto"; import "src/proto/grpc/testing/xds/v3/percent.proto"; import "src/proto/grpc/testing/xds/v3/range.proto"; -import "google/protobuf/any.proto"; import "google/protobuf/duration.proto"; import "google/protobuf/wrappers.proto"; @@ -65,13 +64,6 @@ message VirtualHost { // The list of routes that will be matched, in order, for incoming requests. // The first route that matches will be used. repeated Route routes = 3; - - // The per_filter_config field can be used to provide virtual host-specific - // configurations for filters. The key should match the filter name, such as - // *envoy.filters.http.buffer* for the HTTP buffer filter. Use of this field is filter - // specific; see the :ref:`HTTP filter documentation ` - // for if and how it is utilized. - map typed_per_filter_config = 15; } // A route is both a specification of how to match a request as well as an indication of what to do @@ -96,13 +88,6 @@ message Route { // Return a redirect. RedirectAction redirect = 3; } - - // The typed_per_filter_config field can be used to provide route-specific - // configurations for filters. The key should match the filter name, such as - // *envoy.filters.http.buffer* for the HTTP buffer filter. Use of this field is filter - // specific; see the :ref:`HTTP filter documentation ` for - // if and how it is utilized. - map typed_per_filter_config = 13; } // Compared to the :ref:`cluster ` field that specifies a @@ -123,13 +108,6 @@ message WeightedCluster { // the choice of an upstream cluster is determined by its weight. The sum of weights across all // entries in the clusters array must add up to the total_weight, which defaults to 100. google.protobuf.UInt32Value weight = 2; - - // The per_filter_config field can be used to provide weighted cluster-specific - // configurations for filters. The key should match the filter name, such as - // *envoy.filters.http.buffer* for the HTTP buffer filter. Use of this field is filter - // specific; see the :ref:`HTTP filter documentation ` - // for if and how it is utilized. - map typed_per_filter_config = 10; } // Specifies one or more upstream clusters associated with the route. @@ -356,13 +334,3 @@ message RouteConfiguration { message RedirectAction { } - -message FilterConfig { - // The filter config. - google.protobuf.Any config = 1; - - // If true, the filter is optional, meaning that if the client does - // not support the specified filter, it may ignore the map entry rather - // than rejecting the config. - bool is_optional = 2; -} diff --git a/src/proto/grpc/testing/xds/v3/router.proto b/src/proto/grpc/testing/xds/v3/router.proto deleted file mode 100644 index 00b11b3712857..0000000000000 --- a/src/proto/grpc/testing/xds/v3/router.proto +++ /dev/null @@ -1,28 +0,0 @@ -// Copyright 2021 The gRPC Authors -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -// Local copy of Envoy xDS proto file, used for testing only. - -syntax = "proto3"; - -package envoy.extensions.filters.http.router.v3; - -// [#protodoc-title: Router] -// Router :ref:`configuration overview `. -// [#extension: envoy.filters.http.router] - -// We don't actually use any of the fields in this message, but we need -// the message itself to signify which filter to use. -message Router { -} diff --git a/src/python/grpcio/grpc_core_dependencies.py b/src/python/grpcio/grpc_core_dependencies.py index 0cc1ff89eeb1e..68e641c89663d 100644 --- a/src/python/grpcio/grpc_core_dependencies.py +++ b/src/python/grpcio/grpc_core_dependencies.py @@ -153,7 +153,6 @@ 'src/core/ext/upb-generated/envoy/config/route/v3/scoped_route.upb.c', 'src/core/ext/upb-generated/envoy/config/trace/v3/http_tracer.upb.c', 'src/core/ext/upb-generated/envoy/extensions/clusters/aggregate/v3/cluster.upb.c', - 'src/core/ext/upb-generated/envoy/extensions/filters/http/router/v3/router.upb.c', 'src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.c', 'src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/cert.upb.c', 'src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.c', @@ -202,7 +201,6 @@ 'src/core/ext/upb-generated/udpa/annotations/status.upb.c', 'src/core/ext/upb-generated/udpa/annotations/versioning.upb.c', 'src/core/ext/upb-generated/udpa/data/orca/v1/orca_load_report.upb.c', - 'src/core/ext/upb-generated/udpa/type/v1/typed_struct.upb.c', 'src/core/ext/upb-generated/validate/validate.upb.c', 'src/core/ext/upb-generated/xds/core/v3/authority.upb.c', 'src/core/ext/upb-generated/xds/core/v3/collection_entry.upb.c', @@ -242,7 +240,6 @@ 'src/core/ext/upbdefs-generated/envoy/config/route/v3/scoped_route.upbdefs.c', 'src/core/ext/upbdefs-generated/envoy/config/trace/v3/http_tracer.upbdefs.c', 'src/core/ext/upbdefs-generated/envoy/extensions/clusters/aggregate/v3/cluster.upbdefs.c', - 'src/core/ext/upbdefs-generated/envoy/extensions/filters/http/router/v3/router.upbdefs.c', 'src/core/ext/upbdefs-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.c', 'src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/cert.upbdefs.c', 'src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/common.upbdefs.c', @@ -283,7 +280,6 @@ 'src/core/ext/upbdefs-generated/udpa/annotations/sensitive.upbdefs.c', 'src/core/ext/upbdefs-generated/udpa/annotations/status.upbdefs.c', 'src/core/ext/upbdefs-generated/udpa/annotations/versioning.upbdefs.c', - 'src/core/ext/upbdefs-generated/udpa/type/v1/typed_struct.upbdefs.c', 'src/core/ext/upbdefs-generated/validate/validate.upbdefs.c', 'src/core/ext/upbdefs-generated/xds/core/v3/authority.upbdefs.c', 'src/core/ext/upbdefs-generated/xds/core/v3/collection_entry.upbdefs.c', @@ -299,7 +295,6 @@ 'src/core/ext/xds/xds_certificate_provider.cc', 'src/core/ext/xds/xds_client.cc', 'src/core/ext/xds/xds_client_stats.cc', - 'src/core/ext/xds/xds_http_filters.cc', 'src/core/ext/xds/xds_server_config_fetcher.cc', 'src/core/lib/avl/avl.cc', 'src/core/lib/backoff/backoff.cc', diff --git a/test/cpp/end2end/BUILD b/test/cpp/end2end/BUILD index f637482c61067..d0bee59ff8b4b 100644 --- a/test/cpp/end2end/BUILD +++ b/test/cpp/end2end/BUILD @@ -544,7 +544,6 @@ grpc_cc_test( "//src/proto/grpc/testing/xds/v3:listener_proto", "//src/proto/grpc/testing/xds/v3:lrs_proto", "//src/proto/grpc/testing/xds/v3:route_proto", - "//src/proto/grpc/testing/xds/v3:router_proto", "//src/proto/grpc/testing/xds/v3:tls_proto", "//test/core/util:grpc_test_util", "//test/cpp/util:test_util", diff --git a/test/cpp/end2end/xds_end2end_test.cc b/test/cpp/end2end/xds_end2end_test.cc index f30b28064862c..5f5c0769ef503 100644 --- a/test/cpp/end2end/xds_end2end_test.cc +++ b/test/cpp/end2end/xds_end2end_test.cc @@ -91,7 +91,6 @@ #include "src/proto/grpc/testing/xds/v3/listener.grpc.pb.h" #include "src/proto/grpc/testing/xds/v3/lrs.grpc.pb.h" #include "src/proto/grpc/testing/xds/v3/route.grpc.pb.h" -#include "src/proto/grpc/testing/xds/v3/router.grpc.pb.h" #include "src/proto/grpc/testing/xds/v3/tls.grpc.pb.h" namespace grpc { @@ -1581,13 +1580,6 @@ class XdsEnd2endTest : public ::testing::TestWithParam { // Initialize default xDS resources. // Construct LDS resource. default_listener_.set_name(kServerName); - HttpConnectionManager http_connection_manager; - auto* filter = http_connection_manager.add_http_filters(); - filter->set_name("router"); - filter->mutable_typed_config()->PackFrom( - envoy::extensions::filters::http::router::v3::Router()); - default_listener_.mutable_api_listener()->mutable_api_listener()->PackFrom( - http_connection_manager); // Construct RDS resource. default_route_config_.set_name(kDefaultRouteConfigurationName); auto* virtual_host = default_route_config_.add_virtual_hosts(); @@ -1993,10 +1985,6 @@ class XdsEnd2endTest : public ::testing::TestWithParam { static Listener BuildListener(const RouteConfiguration& route_config) { HttpConnectionManager http_connection_manager; *(http_connection_manager.mutable_route_config()) = route_config; - auto* filter = http_connection_manager.add_http_filters(); - filter->set_name("router"); - filter->mutable_typed_config()->PackFrom( - envoy::extensions::filters::http::router::v3::Router()); Listener listener; listener.set_name(kServerName); listener.mutable_api_listener()->mutable_api_listener()->PackFrom( @@ -2615,8 +2603,6 @@ TEST_P(XdsResolverOnlyTest, RestartsRequestsUponReconnection) { // Manually configure use of RDS. auto listener = default_listener_; HttpConnectionManager http_connection_manager; - listener.mutable_api_listener()->mutable_api_listener()->UnpackTo( - &http_connection_manager); auto* rds = http_connection_manager.mutable_rds(); rds->set_route_config_name(kDefaultRouteConfigurationName); rds->mutable_config_source()->mutable_ads(); @@ -3018,7 +3004,7 @@ TEST_P(LdsTest, NoApiListener) { SetNextResolution({}); SetNextResolutionForLbChannelAllBalancers(); CheckRpcSendFailure(); - const auto response_state = + const auto& response_state = balancers_[0]->ads_service()->lds_response_state(); EXPECT_EQ(response_state.state, AdsServiceImpl::ResponseState::NACKED); EXPECT_THAT( @@ -3031,8 +3017,6 @@ TEST_P(LdsTest, NoApiListener) { TEST_P(LdsTest, WrongRouteSpecifier) { auto listener = default_listener_; HttpConnectionManager http_connection_manager; - listener.mutable_api_listener()->mutable_api_listener()->UnpackTo( - &http_connection_manager); http_connection_manager.mutable_scoped_routes(); listener.mutable_api_listener()->mutable_api_listener()->PackFrom( http_connection_manager); @@ -3040,7 +3024,7 @@ TEST_P(LdsTest, WrongRouteSpecifier) { SetNextResolution({}); SetNextResolutionForLbChannelAllBalancers(); CheckRpcSendFailure(); - const auto response_state = + const auto& response_state = balancers_[0]->ads_service()->lds_response_state(); EXPECT_EQ(response_state.state, AdsServiceImpl::ResponseState::NACKED); EXPECT_THAT( @@ -3054,8 +3038,6 @@ TEST_P(LdsTest, WrongRouteSpecifier) { TEST_P(LdsTest, RdsMissingConfigSource) { auto listener = default_listener_; HttpConnectionManager http_connection_manager; - listener.mutable_api_listener()->mutable_api_listener()->UnpackTo( - &http_connection_manager); http_connection_manager.mutable_rds()->set_route_config_name( kDefaultRouteConfigurationName); listener.mutable_api_listener()->mutable_api_listener()->PackFrom( @@ -3064,7 +3046,7 @@ TEST_P(LdsTest, RdsMissingConfigSource) { SetNextResolution({}); SetNextResolutionForLbChannelAllBalancers(); CheckRpcSendFailure(); - const auto response_state = + const auto& response_state = balancers_[0]->ads_service()->lds_response_state(); EXPECT_EQ(response_state.state, AdsServiceImpl::ResponseState::NACKED); EXPECT_THAT(response_state.error_message, @@ -3077,8 +3059,6 @@ TEST_P(LdsTest, RdsMissingConfigSource) { TEST_P(LdsTest, RdsConfigSourceDoesNotSpecifyAds) { auto listener = default_listener_; HttpConnectionManager http_connection_manager; - listener.mutable_api_listener()->mutable_api_listener()->UnpackTo( - &http_connection_manager); auto* rds = http_connection_manager.mutable_rds(); rds->set_route_config_name(kDefaultRouteConfigurationName); rds->mutable_config_source()->mutable_self(); @@ -3088,7 +3068,7 @@ TEST_P(LdsTest, RdsConfigSourceDoesNotSpecifyAds) { SetNextResolution({}); SetNextResolutionForLbChannelAllBalancers(); CheckRpcSendFailure(); - const auto response_state = + const auto& response_state = balancers_[0]->ads_service()->lds_response_state(); EXPECT_EQ(response_state.state, AdsServiceImpl::ResponseState::NACKED); EXPECT_THAT( @@ -3116,7 +3096,7 @@ TEST_P(LdsTest, MultipleBadResources) { EchoResponse response; grpc::Status status = stub2->Echo(&context, request, &response); EXPECT_FALSE(status.ok()); - const auto response_state = + const auto& response_state = balancers_[0]->ads_service()->lds_response_state(); EXPECT_EQ(response_state.state, AdsServiceImpl::ResponseState::NACKED); EXPECT_THAT( @@ -3129,196 +3109,6 @@ TEST_P(LdsTest, MultipleBadResources) { ": Listener has neither address nor ApiListener")))); } -// TODO(roth): Remove this test when we remove the -// GRPC_XDS_EXPERIMENTAL_FAULT_INJECTION environment variable guard. -TEST_P(LdsTest, HttpFiltersEnabled) { - gpr_setenv("GRPC_XDS_EXPERIMENTAL_FAULT_INJECTION", "true"); - SetNextResolutionForLbChannelAllBalancers(); - AdsServiceImpl::EdsResourceArgs args({ - {"locality0", GetBackendPorts()}, - }); - balancers_[0]->ads_service()->SetEdsResource( - BuildEdsResource(args, DefaultEdsServiceName())); - WaitForAllBackends(); - gpr_unsetenv("GRPC_XDS_EXPERIMENTAL_FAULT_INJECTION"); -} - -// Test that we fail RPCs if there is no router filter. -TEST_P(LdsTest, FailRpcsIfNoHttpRouterFilter) { - gpr_setenv("GRPC_XDS_EXPERIMENTAL_FAULT_INJECTION", "true"); - SetNextResolutionForLbChannelAllBalancers(); - auto listener = default_listener_; - HttpConnectionManager http_connection_manager; - listener.mutable_api_listener()->mutable_api_listener()->UnpackTo( - &http_connection_manager); - http_connection_manager.clear_http_filters(); - listener.mutable_api_listener()->mutable_api_listener()->PackFrom( - http_connection_manager); - SetListenerAndRouteConfiguration(0, listener, default_route_config_); - AdsServiceImpl::EdsResourceArgs args({ - {"locality0", GetBackendPorts()}, - }); - balancers_[0]->ads_service()->SetEdsResource( - BuildEdsResource(args, DefaultEdsServiceName())); - Status status = SendRpc(); - EXPECT_EQ(status.error_code(), StatusCode::UNAVAILABLE); - EXPECT_EQ(status.error_message(), "no xDS HTTP router filter configured"); - // Wait until xDS server sees ACK. - while (balancers_[0]->ads_service()->lds_response_state().state == - AdsServiceImpl::ResponseState::SENT) { - CheckRpcSendFailure(); - } - const auto response_state = - balancers_[0]->ads_service()->lds_response_state(); - EXPECT_EQ(response_state.state, AdsServiceImpl::ResponseState::ACKED); - gpr_unsetenv("GRPC_XDS_EXPERIMENTAL_FAULT_INJECTION"); -} - -// TODO(lidiz): As part of adding the fault injection filter, add a test -// that we ignore filters after the router filter. - -// Test that we NACK empty filter names. -TEST_P(LdsTest, RejectsEmptyHttpFilterName) { - gpr_setenv("GRPC_XDS_EXPERIMENTAL_FAULT_INJECTION", "true"); - auto listener = default_listener_; - HttpConnectionManager http_connection_manager; - listener.mutable_api_listener()->mutable_api_listener()->UnpackTo( - &http_connection_manager); - auto* filter = http_connection_manager.add_http_filters(); - filter->mutable_typed_config()->PackFrom(Listener()); - listener.mutable_api_listener()->mutable_api_listener()->PackFrom( - http_connection_manager); - SetListenerAndRouteConfiguration(0, listener, default_route_config_); - SetNextResolution({}); - SetNextResolutionForLbChannelAllBalancers(); - // Wait until xDS server sees NACK. - do { - CheckRpcSendFailure(); - } while (balancers_[0]->ads_service()->lds_response_state().state == - AdsServiceImpl::ResponseState::SENT); - const auto response_state = - balancers_[0]->ads_service()->lds_response_state(); - EXPECT_EQ(response_state.state, AdsServiceImpl::ResponseState::NACKED); - EXPECT_THAT(response_state.error_message, - ::testing::HasSubstr("empty filter name at index 1")); - gpr_unsetenv("GRPC_XDS_EXPERIMENTAL_FAULT_INJECTION"); -} - -// Test that we NACK duplicate HTTP filter names. -TEST_P(LdsTest, RejectsDuplicateHttpFilterName) { - gpr_setenv("GRPC_XDS_EXPERIMENTAL_FAULT_INJECTION", "true"); - auto listener = default_listener_; - HttpConnectionManager http_connection_manager; - listener.mutable_api_listener()->mutable_api_listener()->UnpackTo( - &http_connection_manager); - *http_connection_manager.add_http_filters() = - http_connection_manager.http_filters(0); - listener.mutable_api_listener()->mutable_api_listener()->PackFrom( - http_connection_manager); - SetListenerAndRouteConfiguration(0, listener, default_route_config_); - SetNextResolution({}); - SetNextResolutionForLbChannelAllBalancers(); - // Wait until xDS server sees NACK. - do { - CheckRpcSendFailure(); - } while (balancers_[0]->ads_service()->lds_response_state().state == - AdsServiceImpl::ResponseState::SENT); - const auto response_state = - balancers_[0]->ads_service()->lds_response_state(); - EXPECT_EQ(response_state.state, AdsServiceImpl::ResponseState::NACKED); - EXPECT_THAT(response_state.error_message, - ::testing::HasSubstr("duplicate HTTP filter name: router")); - gpr_unsetenv("GRPC_XDS_EXPERIMENTAL_FAULT_INJECTION"); -} - -// Test that we NACK unknown filter types. -TEST_P(LdsTest, RejectsUnknownHttpFilterType) { - gpr_setenv("GRPC_XDS_EXPERIMENTAL_FAULT_INJECTION", "true"); - auto listener = default_listener_; - HttpConnectionManager http_connection_manager; - listener.mutable_api_listener()->mutable_api_listener()->UnpackTo( - &http_connection_manager); - auto* filter = http_connection_manager.add_http_filters(); - filter->set_name("unknown"); - filter->mutable_typed_config()->PackFrom(Listener()); - listener.mutable_api_listener()->mutable_api_listener()->PackFrom( - http_connection_manager); - SetListenerAndRouteConfiguration(0, listener, default_route_config_); - SetNextResolution({}); - SetNextResolutionForLbChannelAllBalancers(); - // Wait until xDS server sees NACK. - do { - CheckRpcSendFailure(); - } while (balancers_[0]->ads_service()->lds_response_state().state == - AdsServiceImpl::ResponseState::SENT); - const auto response_state = - balancers_[0]->ads_service()->lds_response_state(); - EXPECT_EQ(response_state.state, AdsServiceImpl::ResponseState::NACKED); - EXPECT_THAT(response_state.error_message, - ::testing::HasSubstr("no filter registered for config type " - "envoy.config.listener.v3.Listener")); - gpr_unsetenv("GRPC_XDS_EXPERIMENTAL_FAULT_INJECTION"); -} - -// Test that we ignore optional unknown filter types. -TEST_P(LdsTest, IgnoresOptionalUnknownHttpFilterType) { - gpr_setenv("GRPC_XDS_EXPERIMENTAL_FAULT_INJECTION", "true"); - auto listener = default_listener_; - HttpConnectionManager http_connection_manager; - listener.mutable_api_listener()->mutable_api_listener()->UnpackTo( - &http_connection_manager); - auto* filter = http_connection_manager.add_http_filters(); - filter->set_name("unknown"); - filter->mutable_typed_config()->PackFrom(Listener()); - filter->set_is_optional(true); - listener.mutable_api_listener()->mutable_api_listener()->PackFrom( - http_connection_manager); - SetListenerAndRouteConfiguration(0, listener, default_route_config_); - AdsServiceImpl::EdsResourceArgs args({ - {"locality0", GetBackendPorts()}, - }); - balancers_[0]->ads_service()->SetEdsResource( - BuildEdsResource(args, DefaultEdsServiceName())); - SetNextResolutionForLbChannelAllBalancers(); - WaitForAllBackends(); - EXPECT_EQ(balancers_[0]->ads_service()->lds_response_state().state, - AdsServiceImpl::ResponseState::ACKED); - gpr_unsetenv("GRPC_XDS_EXPERIMENTAL_FAULT_INJECTION"); -} - -// Test that we NACK unparseable filter configs. -TEST_P(LdsTest, RejectsUnparseableHttpFilterType) { - gpr_setenv("GRPC_XDS_EXPERIMENTAL_FAULT_INJECTION", "true"); - auto listener = default_listener_; - HttpConnectionManager http_connection_manager; - listener.mutable_api_listener()->mutable_api_listener()->UnpackTo( - &http_connection_manager); - auto* filter = http_connection_manager.add_http_filters(); - filter->set_name("unknown"); - filter->mutable_typed_config()->PackFrom(listener); - filter->mutable_typed_config()->set_type_url( - "type.googleapis.com/envoy.extensions.filters.http.router.v3.Router"); - listener.mutable_api_listener()->mutable_api_listener()->PackFrom( - http_connection_manager); - SetListenerAndRouteConfiguration(0, listener, default_route_config_); - SetNextResolution({}); - SetNextResolutionForLbChannelAllBalancers(); - // Wait until xDS server sees NACK. - do { - CheckRpcSendFailure(); - } while (balancers_[0]->ads_service()->lds_response_state().state == - AdsServiceImpl::ResponseState::SENT); - const auto response_state = - balancers_[0]->ads_service()->lds_response_state(); - EXPECT_EQ(response_state.state, AdsServiceImpl::ResponseState::NACKED); - EXPECT_THAT( - response_state.error_message, - ::testing::HasSubstr( - "filter config for type " - "envoy.extensions.filters.http.router.v3.Router failed to parse")); - gpr_unsetenv("GRPC_XDS_EXPERIMENTAL_FAULT_INJECTION"); -} - using LdsRdsTest = BasicTest; // Tests that LDS client should send an ACK upon correct LDS response (with @@ -3370,7 +3160,7 @@ TEST_P(LdsRdsTest, NoMatchedDomain) { CheckRpcSendFailure(); // Do a bit of polling, to allow the ACK to get to the ADS server. channel_->WaitForConnected(grpc_timeout_milliseconds_to_deadline(100)); - const auto response_state = RouteConfigurationResponseState(0); + const auto& response_state = RouteConfigurationResponseState(0); EXPECT_EQ(response_state.state, AdsServiceImpl::ResponseState::ACKED); } @@ -3417,7 +3207,7 @@ TEST_P(LdsRdsTest, RouteMatchHasQueryParameters) { SetNextResolution({}); SetNextResolutionForLbChannelAllBalancers(); CheckRpcSendFailure(); - const auto response_state = RouteConfigurationResponseState(0); + const auto& response_state = RouteConfigurationResponseState(0); EXPECT_EQ(response_state.state, AdsServiceImpl::ResponseState::NACKED); EXPECT_THAT(response_state.error_message, ::testing::HasSubstr("No valid routes specified.")); @@ -3436,7 +3226,7 @@ TEST_P(LdsRdsTest, RouteMatchHasValidPrefixEmptyOrSingleSlash) { SetNextResolution({}); SetNextResolutionForLbChannelAllBalancers(); (void)SendRpc(); - const auto response_state = RouteConfigurationResponseState(0); + const auto& response_state = RouteConfigurationResponseState(0); EXPECT_EQ(response_state.state, AdsServiceImpl::ResponseState::ACKED); } @@ -3450,7 +3240,7 @@ TEST_P(LdsRdsTest, RouteMatchHasInvalidPrefixNoLeadingSlash) { SetNextResolution({}); SetNextResolutionForLbChannelAllBalancers(); CheckRpcSendFailure(); - const auto response_state = RouteConfigurationResponseState(0); + const auto& response_state = RouteConfigurationResponseState(0); EXPECT_EQ(response_state.state, AdsServiceImpl::ResponseState::NACKED); EXPECT_THAT(response_state.error_message, ::testing::HasSubstr("No valid routes specified.")); @@ -3466,7 +3256,7 @@ TEST_P(LdsRdsTest, RouteMatchHasInvalidPrefixExtraContent) { SetNextResolution({}); SetNextResolutionForLbChannelAllBalancers(); CheckRpcSendFailure(); - const auto response_state = RouteConfigurationResponseState(0); + const auto& response_state = RouteConfigurationResponseState(0); EXPECT_EQ(response_state.state, AdsServiceImpl::ResponseState::NACKED); EXPECT_THAT(response_state.error_message, ::testing::HasSubstr("No valid routes specified.")); @@ -3482,7 +3272,7 @@ TEST_P(LdsRdsTest, RouteMatchHasInvalidPrefixDoubleSlash) { SetNextResolution({}); SetNextResolutionForLbChannelAllBalancers(); CheckRpcSendFailure(); - const auto response_state = RouteConfigurationResponseState(0); + const auto& response_state = RouteConfigurationResponseState(0); EXPECT_EQ(response_state.state, AdsServiceImpl::ResponseState::NACKED); EXPECT_THAT(response_state.error_message, ::testing::HasSubstr("No valid routes specified.")); @@ -3498,7 +3288,7 @@ TEST_P(LdsRdsTest, RouteMatchHasInvalidPathEmptyPath) { SetNextResolution({}); SetNextResolutionForLbChannelAllBalancers(); CheckRpcSendFailure(); - const auto response_state = RouteConfigurationResponseState(0); + const auto& response_state = RouteConfigurationResponseState(0); EXPECT_EQ(response_state.state, AdsServiceImpl::ResponseState::NACKED); EXPECT_THAT(response_state.error_message, ::testing::HasSubstr("No valid routes specified.")); @@ -3514,7 +3304,7 @@ TEST_P(LdsRdsTest, RouteMatchHasInvalidPathNoLeadingSlash) { SetNextResolution({}); SetNextResolutionForLbChannelAllBalancers(); CheckRpcSendFailure(); - const auto response_state = RouteConfigurationResponseState(0); + const auto& response_state = RouteConfigurationResponseState(0); EXPECT_EQ(response_state.state, AdsServiceImpl::ResponseState::NACKED); EXPECT_THAT(response_state.error_message, ::testing::HasSubstr("No valid routes specified.")); @@ -3530,7 +3320,7 @@ TEST_P(LdsRdsTest, RouteMatchHasInvalidPathTooManySlashes) { SetNextResolution({}); SetNextResolutionForLbChannelAllBalancers(); CheckRpcSendFailure(); - const auto response_state = RouteConfigurationResponseState(0); + const auto& response_state = RouteConfigurationResponseState(0); EXPECT_EQ(response_state.state, AdsServiceImpl::ResponseState::NACKED); EXPECT_THAT(response_state.error_message, ::testing::HasSubstr("No valid routes specified.")); @@ -3546,7 +3336,7 @@ TEST_P(LdsRdsTest, RouteMatchHasInvalidPathOnlyOneSlash) { SetNextResolution({}); SetNextResolutionForLbChannelAllBalancers(); CheckRpcSendFailure(); - const auto response_state = RouteConfigurationResponseState(0); + const auto& response_state = RouteConfigurationResponseState(0); EXPECT_EQ(response_state.state, AdsServiceImpl::ResponseState::NACKED); EXPECT_THAT(response_state.error_message, ::testing::HasSubstr("No valid routes specified.")); @@ -3562,7 +3352,7 @@ TEST_P(LdsRdsTest, RouteMatchHasInvalidPathMissingService) { SetNextResolution({}); SetNextResolutionForLbChannelAllBalancers(); CheckRpcSendFailure(); - const auto response_state = RouteConfigurationResponseState(0); + const auto& response_state = RouteConfigurationResponseState(0); EXPECT_EQ(response_state.state, AdsServiceImpl::ResponseState::NACKED); EXPECT_THAT(response_state.error_message, ::testing::HasSubstr("No valid routes specified.")); @@ -3578,7 +3368,7 @@ TEST_P(LdsRdsTest, RouteMatchHasInvalidPathMissingMethod) { SetNextResolution({}); SetNextResolutionForLbChannelAllBalancers(); CheckRpcSendFailure(); - const auto response_state = RouteConfigurationResponseState(0); + const auto& response_state = RouteConfigurationResponseState(0); EXPECT_EQ(response_state.state, AdsServiceImpl::ResponseState::NACKED); EXPECT_THAT(response_state.error_message, ::testing::HasSubstr("No valid routes specified.")); @@ -3595,7 +3385,7 @@ TEST_P(LdsRdsTest, RouteMatchHasInvalidPathRegex) { SetNextResolution({}); SetNextResolutionForLbChannelAllBalancers(); CheckRpcSendFailure(); - const auto response_state = RouteConfigurationResponseState(0); + const auto& response_state = RouteConfigurationResponseState(0); EXPECT_EQ(response_state.state, AdsServiceImpl::ResponseState::NACKED); EXPECT_THAT(response_state.error_message, ::testing::HasSubstr( @@ -3611,7 +3401,7 @@ TEST_P(LdsRdsTest, RouteHasNoRouteAction) { SetNextResolution({}); SetNextResolutionForLbChannelAllBalancers(); CheckRpcSendFailure(); - const auto response_state = RouteConfigurationResponseState(0); + const auto& response_state = RouteConfigurationResponseState(0); EXPECT_EQ(response_state.state, AdsServiceImpl::ResponseState::NACKED); EXPECT_THAT(response_state.error_message, ::testing::HasSubstr("No RouteAction found in route.")); @@ -3629,7 +3419,7 @@ TEST_P(LdsRdsTest, RouteActionClusterHasEmptyClusterName) { SetNextResolution({}); SetNextResolutionForLbChannelAllBalancers(); CheckRpcSendFailure(); - const auto response_state = RouteConfigurationResponseState(0); + const auto& response_state = RouteConfigurationResponseState(0); EXPECT_EQ(response_state.state, AdsServiceImpl::ResponseState::NACKED); EXPECT_THAT( response_state.error_message, @@ -3657,7 +3447,7 @@ TEST_P(LdsRdsTest, RouteActionWeightedTargetHasIncorrectTotalWeightSet) { SetNextResolution({}); SetNextResolutionForLbChannelAllBalancers(); CheckRpcSendFailure(); - const auto response_state = RouteConfigurationResponseState(0); + const auto& response_state = RouteConfigurationResponseState(0); EXPECT_EQ(response_state.state, AdsServiceImpl::ResponseState::NACKED); EXPECT_THAT(response_state.error_message, ::testing::HasSubstr( @@ -3684,7 +3474,7 @@ TEST_P(LdsRdsTest, RouteActionWeightedClusterHasZeroTotalWeight) { SetNextResolution({}); SetNextResolutionForLbChannelAllBalancers(); CheckRpcSendFailure(); - const auto response_state = RouteConfigurationResponseState(0); + const auto& response_state = RouteConfigurationResponseState(0); EXPECT_EQ(response_state.state, AdsServiceImpl::ResponseState::NACKED); EXPECT_THAT( response_state.error_message, @@ -3712,7 +3502,7 @@ TEST_P(LdsRdsTest, RouteActionWeightedTargetClusterHasEmptyClusterName) { SetNextResolution({}); SetNextResolutionForLbChannelAllBalancers(); CheckRpcSendFailure(); - const auto response_state = RouteConfigurationResponseState(0); + const auto& response_state = RouteConfigurationResponseState(0); EXPECT_EQ(response_state.state, AdsServiceImpl::ResponseState::NACKED); EXPECT_THAT( response_state.error_message, @@ -3740,7 +3530,7 @@ TEST_P(LdsRdsTest, RouteActionWeightedTargetClusterHasNoWeight) { SetNextResolution({}); SetNextResolutionForLbChannelAllBalancers(); CheckRpcSendFailure(); - const auto response_state = RouteConfigurationResponseState(0); + const auto& response_state = RouteConfigurationResponseState(0); EXPECT_EQ(response_state.state, AdsServiceImpl::ResponseState::NACKED); EXPECT_THAT(response_state.error_message, ::testing::HasSubstr( @@ -3760,7 +3550,7 @@ TEST_P(LdsRdsTest, RouteHeaderMatchInvalidRegex) { SetNextResolution({}); SetNextResolutionForLbChannelAllBalancers(); CheckRpcSendFailure(); - const auto response_state = RouteConfigurationResponseState(0); + const auto& response_state = RouteConfigurationResponseState(0); EXPECT_EQ(response_state.state, AdsServiceImpl::ResponseState::NACKED); EXPECT_THAT( response_state.error_message, @@ -3782,7 +3572,7 @@ TEST_P(LdsRdsTest, RouteHeaderMatchInvalidRange) { SetNextResolution({}); SetNextResolutionForLbChannelAllBalancers(); CheckRpcSendFailure(); - const auto response_state = RouteConfigurationResponseState(0); + const auto& response_state = RouteConfigurationResponseState(0); EXPECT_EQ(response_state.state, AdsServiceImpl::ResponseState::NACKED); EXPECT_THAT( response_state.error_message, @@ -4844,8 +4634,6 @@ TEST_P(LdsRdsTest, XdsRoutingApplyXdsTimeout) { // Construct listener. auto listener = default_listener_; HttpConnectionManager http_connection_manager; - listener.mutable_api_listener()->mutable_api_listener()->UnpackTo( - &http_connection_manager); // Set up HTTP max_stream_duration of 3.5 seconds auto* duration = http_connection_manager.mutable_common_http_protocol_options() @@ -4984,8 +4772,6 @@ TEST_P(LdsRdsTest, XdsRoutingHttpTimeoutDisabled) { // Construct listener. auto listener = default_listener_; HttpConnectionManager http_connection_manager; - listener.mutable_api_listener()->mutable_api_listener()->UnpackTo( - &http_connection_manager); // Set up HTTP max_stream_duration of 3.5 seconds auto* duration = http_connection_manager.mutable_common_http_protocol_options() @@ -5051,8 +4837,6 @@ TEST_P(LdsRdsTest, XdsRoutingApplyApplicationTimeoutWhenXdsTimeoutExplicit0) { // Construct listener. auto listener = default_listener_; HttpConnectionManager http_connection_manager; - listener.mutable_api_listener()->mutable_api_listener()->UnpackTo( - &http_connection_manager); // Set up HTTP max_stream_duration of 3.5 seconds auto* duration = http_connection_manager.mutable_common_http_protocol_options() @@ -5126,16 +4910,14 @@ TEST_P(LdsRdsTest, XdsRoutingApplyApplicationTimeoutWhenHttpTimeoutExplicit0) { {"locality0", {g_port_saver->GetPort()}}, }); balancers_[0]->ads_service()->SetEdsResource(BuildEdsResource(args)); - auto listener = default_listener_; HttpConnectionManager http_connection_manager; - listener.mutable_api_listener()->mutable_api_listener()->UnpackTo( - &http_connection_manager); // Set up HTTP max_stream_duration to be explicit 0 auto* duration = http_connection_manager.mutable_common_http_protocol_options() ->mutable_max_stream_duration(); duration->set_seconds(0); duration->set_nanos(0); + auto listener = default_listener_; listener.mutable_api_listener()->mutable_api_listener()->PackFrom( http_connection_manager); // Set listener and route config. @@ -5261,7 +5043,7 @@ TEST_P(LdsRdsTest, XdsRoutingHeadersMatching) { EXPECT_EQ(0, backends_[1]->backend_service()->request_count()); EXPECT_EQ(kNumEcho1Rpcs, backends_[1]->backend_service1()->request_count()); EXPECT_EQ(0, backends_[1]->backend_service2()->request_count()); - const auto response_state = RouteConfigurationResponseState(0); + const auto& response_state = RouteConfigurationResponseState(0); EXPECT_EQ(response_state.state, AdsServiceImpl::ResponseState::ACKED); } @@ -5308,7 +5090,7 @@ TEST_P(LdsRdsTest, XdsRoutingHeadersMatchingSpecialHeaderContentType) { CheckRpcSendOk(kNumEchoRpcs); EXPECT_EQ(kNumEchoRpcs, backends_[0]->backend_service()->request_count()); EXPECT_EQ(0, backends_[1]->backend_service()->request_count()); - const auto response_state = RouteConfigurationResponseState(0); + const auto& response_state = RouteConfigurationResponseState(0); EXPECT_EQ(response_state.state, AdsServiceImpl::ResponseState::ACKED); } @@ -5376,7 +5158,7 @@ TEST_P(LdsRdsTest, XdsRoutingHeadersMatchingSpecialCasesToIgnore) { EXPECT_EQ(kNumEchoRpcs, backends_[0]->backend_service()->request_count()); EXPECT_EQ(0, backends_[1]->backend_service()->request_count()); EXPECT_EQ(0, backends_[2]->backend_service()->request_count()); - const auto response_state = RouteConfigurationResponseState(0); + const auto& response_state = RouteConfigurationResponseState(0); EXPECT_EQ(response_state.state, AdsServiceImpl::ResponseState::ACKED); } @@ -5433,7 +5215,7 @@ TEST_P(LdsRdsTest, XdsRoutingRuntimeFractionMatching) { (1 - kErrorTolerance)), ::testing::Le(static_cast(kNumRpcs) * 25 / 100 * (1 + kErrorTolerance)))); - const auto response_state = RouteConfigurationResponseState(0); + const auto& response_state = RouteConfigurationResponseState(0); EXPECT_EQ(response_state.state, AdsServiceImpl::ResponseState::ACKED); } @@ -5532,7 +5314,7 @@ TEST_P(LdsRdsTest, XdsRoutingHeadersMatchingUnmatchCases) { EXPECT_EQ(kNumEchoRpcs, backends_[0]->backend_service()->request_count()); EXPECT_EQ(kNumEcho1Rpcs, backends_[0]->backend_service1()->request_count()); EXPECT_EQ(0, backends_[0]->backend_service2()->request_count()); - const auto response_state = RouteConfigurationResponseState(0); + const auto& response_state = RouteConfigurationResponseState(0); EXPECT_EQ(response_state.state, AdsServiceImpl::ResponseState::ACKED); } @@ -5599,253 +5381,6 @@ TEST_P(LdsRdsTest, XdsRoutingChangeRoutesWithoutChangingClusters) { EXPECT_EQ(1, backends_[1]->backend_service2()->request_count()); } -// Test that we NACK unknown filter types in VirtualHost. -TEST_P(LdsRdsTest, RejectsUnknownHttpFilterTypeInVirtualHost) { - if (GetParam().use_v2()) return; // Filters supported in v3 only. - gpr_setenv("GRPC_XDS_EXPERIMENTAL_FAULT_INJECTION", "true"); - RouteConfiguration route_config = default_route_config_; - auto* per_filter_config = - route_config.mutable_virtual_hosts(0)->mutable_typed_per_filter_config(); - (*per_filter_config)["unknown"].PackFrom(Listener()); - SetListenerAndRouteConfiguration(0, default_listener_, route_config); - SetNextResolution({}); - SetNextResolutionForLbChannelAllBalancers(); - // Wait until xDS server sees NACK. - do { - CheckRpcSendFailure(); - } while (RouteConfigurationResponseState(0).state == - AdsServiceImpl::ResponseState::SENT); - const auto response_state = RouteConfigurationResponseState(0); - EXPECT_EQ(response_state.state, AdsServiceImpl::ResponseState::NACKED); - EXPECT_THAT(response_state.error_message, - ::testing::HasSubstr("no filter registered for config type " - "envoy.config.listener.v3.Listener")); - gpr_unsetenv("GRPC_XDS_EXPERIMENTAL_FAULT_INJECTION"); -} - -// Test that we ignore optional unknown filter types in VirtualHost. -TEST_P(LdsRdsTest, IgnoresOptionalUnknownHttpFilterTypeInVirtualHost) { - if (GetParam().use_v2()) return; // Filters supported in v3 only. - gpr_setenv("GRPC_XDS_EXPERIMENTAL_FAULT_INJECTION", "true"); - RouteConfiguration route_config = default_route_config_; - auto* per_filter_config = - route_config.mutable_virtual_hosts(0)->mutable_typed_per_filter_config(); - ::envoy::config::route::v3::FilterConfig filter_config; - filter_config.mutable_config()->PackFrom(Listener()); - filter_config.set_is_optional(true); - (*per_filter_config)["unknown"].PackFrom(filter_config); - SetListenerAndRouteConfiguration(0, default_listener_, route_config); - AdsServiceImpl::EdsResourceArgs args({ - {"locality0", GetBackendPorts()}, - }); - balancers_[0]->ads_service()->SetEdsResource( - BuildEdsResource(args, DefaultEdsServiceName())); - SetNextResolution({}); - SetNextResolutionForLbChannelAllBalancers(); - WaitForAllBackends(); - EXPECT_EQ(RouteConfigurationResponseState(0).state, - AdsServiceImpl::ResponseState::ACKED); - gpr_unsetenv("GRPC_XDS_EXPERIMENTAL_FAULT_INJECTION"); -} - -// Test that we NACK unparseable filter types in VirtualHost. -TEST_P(LdsRdsTest, RejectsUnparseableHttpFilterTypeInVirtualHost) { - if (GetParam().use_v2()) return; // Filters supported in v3 only. - gpr_setenv("GRPC_XDS_EXPERIMENTAL_FAULT_INJECTION", "true"); - RouteConfiguration route_config = default_route_config_; - auto* per_filter_config = - route_config.mutable_virtual_hosts(0)->mutable_typed_per_filter_config(); - (*per_filter_config)["unknown"].PackFrom( - envoy::extensions::filters::http::router::v3::Router()); - SetListenerAndRouteConfiguration(0, default_listener_, route_config); - SetNextResolution({}); - SetNextResolutionForLbChannelAllBalancers(); - // Wait until xDS server sees NACK. - do { - CheckRpcSendFailure(); - } while (RouteConfigurationResponseState(0).state == - AdsServiceImpl::ResponseState::SENT); - const auto response_state = RouteConfigurationResponseState(0); - EXPECT_EQ(response_state.state, AdsServiceImpl::ResponseState::NACKED); - EXPECT_THAT( - response_state.error_message, - ::testing::HasSubstr("router filter does not support config override")); - gpr_unsetenv("GRPC_XDS_EXPERIMENTAL_FAULT_INJECTION"); -} - -// Test that we NACK unknown filter types in Route. -TEST_P(LdsRdsTest, RejectsUnknownHttpFilterTypeInRoute) { - if (GetParam().use_v2()) return; // Filters supported in v3 only. - gpr_setenv("GRPC_XDS_EXPERIMENTAL_FAULT_INJECTION", "true"); - RouteConfiguration route_config = default_route_config_; - auto* per_filter_config = route_config.mutable_virtual_hosts(0) - ->mutable_routes(0) - ->mutable_typed_per_filter_config(); - (*per_filter_config)["unknown"].PackFrom(Listener()); - SetListenerAndRouteConfiguration(0, default_listener_, route_config); - SetNextResolution({}); - SetNextResolutionForLbChannelAllBalancers(); - // Wait until xDS server sees NACK. - do { - CheckRpcSendFailure(); - } while (RouteConfigurationResponseState(0).state == - AdsServiceImpl::ResponseState::SENT); - const auto response_state = RouteConfigurationResponseState(0); - EXPECT_EQ(response_state.state, AdsServiceImpl::ResponseState::NACKED); - EXPECT_THAT(response_state.error_message, - ::testing::HasSubstr("no filter registered for config type " - "envoy.config.listener.v3.Listener")); - gpr_unsetenv("GRPC_XDS_EXPERIMENTAL_FAULT_INJECTION"); -} - -// Test that we ignore optional unknown filter types in Route. -TEST_P(LdsRdsTest, IgnoresOptionalUnknownHttpFilterTypeInRoute) { - if (GetParam().use_v2()) return; // Filters supported in v3 only. - gpr_setenv("GRPC_XDS_EXPERIMENTAL_FAULT_INJECTION", "true"); - RouteConfiguration route_config = default_route_config_; - auto* per_filter_config = route_config.mutable_virtual_hosts(0) - ->mutable_routes(0) - ->mutable_typed_per_filter_config(); - ::envoy::config::route::v3::FilterConfig filter_config; - filter_config.mutable_config()->PackFrom(Listener()); - filter_config.set_is_optional(true); - (*per_filter_config)["unknown"].PackFrom(filter_config); - SetListenerAndRouteConfiguration(0, default_listener_, route_config); - AdsServiceImpl::EdsResourceArgs args({ - {"locality0", GetBackendPorts()}, - }); - balancers_[0]->ads_service()->SetEdsResource( - BuildEdsResource(args, DefaultEdsServiceName())); - SetNextResolution({}); - SetNextResolutionForLbChannelAllBalancers(); - WaitForAllBackends(); - EXPECT_EQ(RouteConfigurationResponseState(0).state, - AdsServiceImpl::ResponseState::ACKED); - gpr_unsetenv("GRPC_XDS_EXPERIMENTAL_FAULT_INJECTION"); -} - -// Test that we NACK unparseable filter types in Route. -TEST_P(LdsRdsTest, RejectsUnparseableHttpFilterTypeInRoute) { - if (GetParam().use_v2()) return; // Filters supported in v3 only. - gpr_setenv("GRPC_XDS_EXPERIMENTAL_FAULT_INJECTION", "true"); - RouteConfiguration route_config = default_route_config_; - auto* per_filter_config = route_config.mutable_virtual_hosts(0) - ->mutable_routes(0) - ->mutable_typed_per_filter_config(); - (*per_filter_config)["unknown"].PackFrom( - envoy::extensions::filters::http::router::v3::Router()); - SetListenerAndRouteConfiguration(0, default_listener_, route_config); - SetNextResolution({}); - SetNextResolutionForLbChannelAllBalancers(); - // Wait until xDS server sees NACK. - do { - CheckRpcSendFailure(); - } while (RouteConfigurationResponseState(0).state == - AdsServiceImpl::ResponseState::SENT); - const auto response_state = RouteConfigurationResponseState(0); - EXPECT_EQ(response_state.state, AdsServiceImpl::ResponseState::NACKED); - EXPECT_THAT( - response_state.error_message, - ::testing::HasSubstr("router filter does not support config override")); - gpr_unsetenv("GRPC_XDS_EXPERIMENTAL_FAULT_INJECTION"); -} - -// Test that we NACK unknown filter types in ClusterWeight. -TEST_P(LdsRdsTest, RejectsUnknownHttpFilterTypeInClusterWeight) { - if (GetParam().use_v2()) return; // Filters supported in v3 only. - gpr_setenv("GRPC_XDS_EXPERIMENTAL_FAULT_INJECTION", "true"); - RouteConfiguration route_config = default_route_config_; - auto* cluster_weight = route_config.mutable_virtual_hosts(0) - ->mutable_routes(0) - ->mutable_route() - ->mutable_weighted_clusters() - ->add_clusters(); - cluster_weight->set_name(kDefaultClusterName); - cluster_weight->mutable_weight()->set_value(100); - auto* per_filter_config = cluster_weight->mutable_typed_per_filter_config(); - (*per_filter_config)["unknown"].PackFrom(Listener()); - SetListenerAndRouteConfiguration(0, default_listener_, route_config); - SetNextResolution({}); - SetNextResolutionForLbChannelAllBalancers(); - // Wait until xDS server sees NACK. - do { - CheckRpcSendFailure(); - } while (RouteConfigurationResponseState(0).state == - AdsServiceImpl::ResponseState::SENT); - const auto response_state = RouteConfigurationResponseState(0); - EXPECT_EQ(response_state.state, AdsServiceImpl::ResponseState::NACKED); - EXPECT_THAT(response_state.error_message, - ::testing::HasSubstr("no filter registered for config type " - "envoy.config.listener.v3.Listener")); - gpr_unsetenv("GRPC_XDS_EXPERIMENTAL_FAULT_INJECTION"); -} - -// Test that we ignore optional unknown filter types in ClusterWeight. -TEST_P(LdsRdsTest, IgnoresOptionalUnknownHttpFilterTypeInClusterWeight) { - if (GetParam().use_v2()) return; // Filters supported in v3 only. - gpr_setenv("GRPC_XDS_EXPERIMENTAL_FAULT_INJECTION", "true"); - RouteConfiguration route_config = default_route_config_; - auto* cluster_weight = route_config.mutable_virtual_hosts(0) - ->mutable_routes(0) - ->mutable_route() - ->mutable_weighted_clusters() - ->add_clusters(); - cluster_weight->set_name(kDefaultClusterName); - cluster_weight->mutable_weight()->set_value(100); - auto* per_filter_config = cluster_weight->mutable_typed_per_filter_config(); - ::envoy::config::route::v3::FilterConfig filter_config; - filter_config.mutable_config()->PackFrom(Listener()); - filter_config.set_is_optional(true); - (*per_filter_config)["unknown"].PackFrom(filter_config); - SetListenerAndRouteConfiguration(0, default_listener_, route_config); - AdsServiceImpl::EdsResourceArgs args({ - {"locality0", GetBackendPorts()}, - }); - balancers_[0]->ads_service()->SetEdsResource( - BuildEdsResource(args, DefaultEdsServiceName())); - SetNextResolution({}); - SetNextResolutionForLbChannelAllBalancers(); - WaitForAllBackends(); - EXPECT_EQ(RouteConfigurationResponseState(0).state, - AdsServiceImpl::ResponseState::ACKED); - gpr_unsetenv("GRPC_XDS_EXPERIMENTAL_FAULT_INJECTION"); -} - -// Test that we NACK unparseable filter types in ClusterWeight. -TEST_P(LdsRdsTest, RejectsUnparseableHttpFilterTypeInClusterWeight) { - if (GetParam().use_v2()) return; // Filters supported in v3 only. - gpr_setenv("GRPC_XDS_EXPERIMENTAL_FAULT_INJECTION", "true"); - RouteConfiguration route_config = default_route_config_; - auto* cluster_weight = route_config.mutable_virtual_hosts(0) - ->mutable_routes(0) - ->mutable_route() - ->mutable_weighted_clusters() - ->add_clusters(); - cluster_weight->set_name(kDefaultClusterName); - cluster_weight->mutable_weight()->set_value(100); - auto* per_filter_config = cluster_weight->mutable_typed_per_filter_config(); - (*per_filter_config)["unknown"].PackFrom( - envoy::extensions::filters::http::router::v3::Router()); - SetListenerAndRouteConfiguration(0, default_listener_, route_config); - SetNextResolution({}); - SetNextResolutionForLbChannelAllBalancers(); - // Wait until xDS server sees NACK. - do { - CheckRpcSendFailure(); - } while (RouteConfigurationResponseState(0).state == - AdsServiceImpl::ResponseState::SENT); - const auto response_state = RouteConfigurationResponseState(0); - EXPECT_EQ(response_state.state, AdsServiceImpl::ResponseState::NACKED); - EXPECT_THAT( - response_state.error_message, - ::testing::HasSubstr("router filter does not support config override")); - gpr_unsetenv("GRPC_XDS_EXPERIMENTAL_FAULT_INJECTION"); -} - -// TODO(lidiz): As part of adding the fault injection filter, add tests -// for overriding filter configs in the typed_per_filter_config fields in -// each of VirtualHost, Route, and ClusterWeight. - using CdsTest = BasicTest; // Tests that CDS client should send an ACK upon correct CDS response. @@ -6055,7 +5590,7 @@ TEST_P(CdsTest, LogicalDNSClusterTypeDisabled) { SetNextResolution({}); SetNextResolutionForLbChannelAllBalancers(); CheckRpcSendFailure(); - const auto response_state = + const auto& response_state = balancers_[0]->ads_service()->cds_response_state(); EXPECT_EQ(response_state.state, AdsServiceImpl::ResponseState::NACKED); EXPECT_THAT(response_state.error_message, @@ -6077,7 +5612,7 @@ TEST_P(CdsTest, AggregateClusterTypeDisabled) { SetNextResolution({}); SetNextResolutionForLbChannelAllBalancers(); CheckRpcSendFailure(); - const auto response_state = + const auto& response_state = balancers_[0]->ads_service()->cds_response_state(); EXPECT_EQ(response_state.state, AdsServiceImpl::ResponseState::NACKED); EXPECT_THAT(response_state.error_message, @@ -6093,7 +5628,7 @@ TEST_P(CdsTest, UnsupportedClusterType) { SetNextResolution({}); SetNextResolutionForLbChannelAllBalancers(); CheckRpcSendFailure(); - const auto response_state = + const auto& response_state = balancers_[0]->ads_service()->cds_response_state(); EXPECT_EQ(response_state.state, AdsServiceImpl::ResponseState::NACKED); EXPECT_THAT(response_state.error_message, @@ -6120,7 +5655,7 @@ TEST_P(CdsTest, MultipleBadResources) { SetNextResolution({}); SetNextResolutionForLbChannelAllBalancers(); CheckRpcSendFailure(); - const auto response_state = + const auto& response_state = balancers_[0]->ads_service()->cds_response_state(); EXPECT_EQ(response_state.state, AdsServiceImpl::ResponseState::NACKED); EXPECT_THAT(response_state.error_message, @@ -6140,7 +5675,7 @@ TEST_P(CdsTest, WrongEdsConfig) { SetNextResolution({}); SetNextResolutionForLbChannelAllBalancers(); CheckRpcSendFailure(); - const auto response_state = + const auto& response_state = balancers_[0]->ads_service()->cds_response_state(); EXPECT_EQ(response_state.state, AdsServiceImpl::ResponseState::NACKED); EXPECT_THAT(response_state.error_message, @@ -6156,7 +5691,7 @@ TEST_P(CdsTest, WrongLbPolicy) { SetNextResolution({}); SetNextResolutionForLbChannelAllBalancers(); CheckRpcSendFailure(); - const auto response_state = + const auto& response_state = balancers_[0]->ads_service()->cds_response_state(); EXPECT_EQ(response_state.state, AdsServiceImpl::ResponseState::NACKED); EXPECT_THAT(response_state.error_message, @@ -6172,7 +5707,7 @@ TEST_P(CdsTest, WrongLrsServer) { SetNextResolution({}); SetNextResolutionForLbChannelAllBalancers(); CheckRpcSendFailure(); - const auto response_state = + const auto& response_state = balancers_[0]->ads_service()->cds_response_state(); EXPECT_EQ(response_state.state, AdsServiceImpl::ResponseState::NACKED); EXPECT_THAT(response_state.error_message, @@ -6340,7 +5875,7 @@ TEST_P(XdsSecurityTest, transport_socket->set_name("envoy.transport_sockets.tls"); balancers_[0]->ads_service()->SetCdsResource(cluster); CheckRpcSendFailure(); - const auto response_state = + const auto& response_state = balancers_[0]->ads_service()->cds_response_state(); EXPECT_EQ(response_state.state, AdsServiceImpl::ResponseState::NACKED); EXPECT_THAT(response_state.error_message, @@ -6363,7 +5898,7 @@ TEST_P( transport_socket->mutable_typed_config()->PackFrom(upstream_tls_context); balancers_[0]->ads_service()->SetCdsResource(cluster); CheckRpcSendFailure(); - const auto response_state = + const auto& response_state = balancers_[0]->ads_service()->cds_response_state(); EXPECT_EQ(response_state.state, AdsServiceImpl::ResponseState::NACKED); EXPECT_THAT(response_state.error_message, @@ -6385,7 +5920,7 @@ TEST_P( transport_socket->mutable_typed_config()->PackFrom(upstream_tls_context); balancers_[0]->ads_service()->SetCdsResource(cluster); CheckRpcSendFailure(); - const auto response_state = + const auto& response_state = balancers_[0]->ads_service()->cds_response_state(); EXPECT_EQ(response_state.state, AdsServiceImpl::ResponseState::NACKED); EXPECT_THAT(response_state.error_message, @@ -6415,7 +5950,7 @@ TEST_P(XdsSecurityTest, RegexSanMatcherDoesNotAllowIgnoreCase) { transport_socket->mutable_typed_config()->PackFrom(upstream_tls_context); balancers_[0]->ads_service()->SetCdsResource(cluster); CheckRpcSendFailure(); - const auto response_state = + const auto& response_state = balancers_[0]->ads_service()->cds_response_state(); EXPECT_EQ(response_state.state, AdsServiceImpl::ResponseState::NACKED); EXPECT_THAT(response_state.error_message, @@ -6844,7 +6379,7 @@ TEST_P(XdsEnabledServerTest, BadLdsUpdateNoApiListenerNorAddress) { listener.add_filter_chains(); balancers_[0]->ads_service()->SetLdsResource(listener); CheckRpcSendFailure(1, RpcOptions().set_wait_for_ready(true)); - const auto response_state = + const auto& response_state = balancers_[0]->ads_service()->lds_response_state(); EXPECT_EQ(response_state.state, AdsServiceImpl::ResponseState::NACKED); EXPECT_THAT( @@ -6868,7 +6403,7 @@ TEST_P(XdsEnabledServerTest, BadLdsUpdateBothApiListenerAndAddress) { listener.mutable_api_listener(); balancers_[0]->ads_service()->SetLdsResource(listener); CheckRpcSendFailure(1, RpcOptions().set_wait_for_ready(true)); - const auto response_state = + const auto& response_state = balancers_[0]->ads_service()->lds_response_state(); EXPECT_EQ(response_state.state, AdsServiceImpl::ResponseState::NACKED); EXPECT_THAT( @@ -7128,7 +6663,7 @@ TEST_P(XdsServerSecurityTest, TlsConfigurationWithoutRootProviderInstance) { transport_socket->mutable_typed_config()->PackFrom(downstream_tls_context); balancers_[0]->ads_service()->SetLdsResource(listener); CheckRpcSendFailure(1, RpcOptions().set_wait_for_ready(true)); - const auto response_state = + const auto& response_state = balancers_[0]->ads_service()->lds_response_state(); EXPECT_EQ(response_state.state, AdsServiceImpl::ResponseState::NACKED); EXPECT_THAT(response_state.error_message, @@ -7391,7 +6926,7 @@ TEST_P(EdsTest, NacksSparsePriorityList) { }); balancers_[0]->ads_service()->SetEdsResource(BuildEdsResource(args)); CheckRpcSendFailure(); - const auto response_state = + const auto& response_state = balancers_[0]->ads_service()->eds_response_state(); EXPECT_EQ(response_state.state, AdsServiceImpl::ResponseState::NACKED); EXPECT_THAT(response_state.error_message, diff --git a/tools/codegen/core/gen_upb_api.sh b/tools/codegen/core/gen_upb_api.sh index 40b4c4c6126e3..f7d62490af8ab 100755 --- a/tools/codegen/core/gen_upb_api.sh +++ b/tools/codegen/core/gen_upb_api.sh @@ -76,7 +76,6 @@ proto_files=( \ "envoy/config/route/v3/scoped_route.proto" \ "envoy/config/trace/v3/http_tracer.proto" \ "envoy/extensions/clusters/aggregate/v3/cluster.proto" \ - "envoy/extensions/filters/http/router/v3/router.proto" \ "envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.proto" \ "envoy/extensions/transport_sockets/tls/v3/cert.proto" \ "envoy/extensions/transport_sockets/tls/v3/common.proto" \ @@ -127,7 +126,6 @@ proto_files=( \ "udpa/annotations/sensitive.proto" \ "udpa/annotations/status.proto" \ "udpa/annotations/versioning.proto" \ - "udpa/type/v1/typed_struct.proto" \ "xds/core/v3/authority.proto" \ "xds/core/v3/collection_entry.proto" \ "xds/core/v3/context_params.proto" \ diff --git a/tools/doxygen/Doxyfile.c++.internal b/tools/doxygen/Doxyfile.c++.internal index 7f56903de8a7f..83db1fdac7a16 100644 --- a/tools/doxygen/Doxyfile.c++.internal +++ b/tools/doxygen/Doxyfile.c++.internal @@ -1292,8 +1292,6 @@ src/core/ext/upb-generated/envoy/config/trace/v3/http_tracer.upb.c \ src/core/ext/upb-generated/envoy/config/trace/v3/http_tracer.upb.h \ src/core/ext/upb-generated/envoy/extensions/clusters/aggregate/v3/cluster.upb.c \ src/core/ext/upb-generated/envoy/extensions/clusters/aggregate/v3/cluster.upb.h \ -src/core/ext/upb-generated/envoy/extensions/filters/http/router/v3/router.upb.c \ -src/core/ext/upb-generated/envoy/extensions/filters/http/router/v3/router.upb.h \ src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.c \ src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.h \ src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/cert.upb.c \ @@ -1388,8 +1386,6 @@ src/core/ext/upb-generated/udpa/annotations/versioning.upb.c \ src/core/ext/upb-generated/udpa/annotations/versioning.upb.h \ src/core/ext/upb-generated/udpa/data/orca/v1/orca_load_report.upb.c \ src/core/ext/upb-generated/udpa/data/orca/v1/orca_load_report.upb.h \ -src/core/ext/upb-generated/udpa/type/v1/typed_struct.upb.c \ -src/core/ext/upb-generated/udpa/type/v1/typed_struct.upb.h \ src/core/ext/upb-generated/validate/validate.upb.c \ src/core/ext/upb-generated/validate/validate.upb.h \ src/core/ext/upb-generated/xds/core/v3/authority.upb.c \ @@ -1468,8 +1464,6 @@ src/core/ext/upbdefs-generated/envoy/config/trace/v3/http_tracer.upbdefs.c \ src/core/ext/upbdefs-generated/envoy/config/trace/v3/http_tracer.upbdefs.h \ src/core/ext/upbdefs-generated/envoy/extensions/clusters/aggregate/v3/cluster.upbdefs.c \ src/core/ext/upbdefs-generated/envoy/extensions/clusters/aggregate/v3/cluster.upbdefs.h \ -src/core/ext/upbdefs-generated/envoy/extensions/filters/http/router/v3/router.upbdefs.c \ -src/core/ext/upbdefs-generated/envoy/extensions/filters/http/router/v3/router.upbdefs.h \ src/core/ext/upbdefs-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.c \ src/core/ext/upbdefs-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.h \ src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/cert.upbdefs.c \ @@ -1548,8 +1542,6 @@ src/core/ext/upbdefs-generated/udpa/annotations/status.upbdefs.c \ src/core/ext/upbdefs-generated/udpa/annotations/status.upbdefs.h \ src/core/ext/upbdefs-generated/udpa/annotations/versioning.upbdefs.c \ src/core/ext/upbdefs-generated/udpa/annotations/versioning.upbdefs.h \ -src/core/ext/upbdefs-generated/udpa/type/v1/typed_struct.upbdefs.c \ -src/core/ext/upbdefs-generated/udpa/type/v1/typed_struct.upbdefs.h \ src/core/ext/upbdefs-generated/validate/validate.upbdefs.c \ src/core/ext/upbdefs-generated/validate/validate.upbdefs.h \ src/core/ext/upbdefs-generated/xds/core/v3/authority.upbdefs.c \ @@ -1582,8 +1574,6 @@ src/core/ext/xds/xds_client.cc \ src/core/ext/xds/xds_client.h \ src/core/ext/xds/xds_client_stats.cc \ src/core/ext/xds/xds_client_stats.h \ -src/core/ext/xds/xds_http_filters.cc \ -src/core/ext/xds/xds_http_filters.h \ src/core/ext/xds/xds_server_config_fetcher.cc \ src/core/lib/avl/avl.cc \ src/core/lib/avl/avl.h \ diff --git a/tools/doxygen/Doxyfile.core.internal b/tools/doxygen/Doxyfile.core.internal index 479c14784a8ac..852a6472ada09 100644 --- a/tools/doxygen/Doxyfile.core.internal +++ b/tools/doxygen/Doxyfile.core.internal @@ -1128,8 +1128,6 @@ src/core/ext/upb-generated/envoy/config/trace/v3/http_tracer.upb.c \ src/core/ext/upb-generated/envoy/config/trace/v3/http_tracer.upb.h \ src/core/ext/upb-generated/envoy/extensions/clusters/aggregate/v3/cluster.upb.c \ src/core/ext/upb-generated/envoy/extensions/clusters/aggregate/v3/cluster.upb.h \ -src/core/ext/upb-generated/envoy/extensions/filters/http/router/v3/router.upb.c \ -src/core/ext/upb-generated/envoy/extensions/filters/http/router/v3/router.upb.h \ src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.c \ src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.h \ src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/cert.upb.c \ @@ -1224,8 +1222,6 @@ src/core/ext/upb-generated/udpa/annotations/versioning.upb.c \ src/core/ext/upb-generated/udpa/annotations/versioning.upb.h \ src/core/ext/upb-generated/udpa/data/orca/v1/orca_load_report.upb.c \ src/core/ext/upb-generated/udpa/data/orca/v1/orca_load_report.upb.h \ -src/core/ext/upb-generated/udpa/type/v1/typed_struct.upb.c \ -src/core/ext/upb-generated/udpa/type/v1/typed_struct.upb.h \ src/core/ext/upb-generated/validate/validate.upb.c \ src/core/ext/upb-generated/validate/validate.upb.h \ src/core/ext/upb-generated/xds/core/v3/authority.upb.c \ @@ -1304,8 +1300,6 @@ src/core/ext/upbdefs-generated/envoy/config/trace/v3/http_tracer.upbdefs.c \ src/core/ext/upbdefs-generated/envoy/config/trace/v3/http_tracer.upbdefs.h \ src/core/ext/upbdefs-generated/envoy/extensions/clusters/aggregate/v3/cluster.upbdefs.c \ src/core/ext/upbdefs-generated/envoy/extensions/clusters/aggregate/v3/cluster.upbdefs.h \ -src/core/ext/upbdefs-generated/envoy/extensions/filters/http/router/v3/router.upbdefs.c \ -src/core/ext/upbdefs-generated/envoy/extensions/filters/http/router/v3/router.upbdefs.h \ src/core/ext/upbdefs-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.c \ src/core/ext/upbdefs-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.h \ src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/cert.upbdefs.c \ @@ -1384,8 +1378,6 @@ src/core/ext/upbdefs-generated/udpa/annotations/status.upbdefs.c \ src/core/ext/upbdefs-generated/udpa/annotations/status.upbdefs.h \ src/core/ext/upbdefs-generated/udpa/annotations/versioning.upbdefs.c \ src/core/ext/upbdefs-generated/udpa/annotations/versioning.upbdefs.h \ -src/core/ext/upbdefs-generated/udpa/type/v1/typed_struct.upbdefs.c \ -src/core/ext/upbdefs-generated/udpa/type/v1/typed_struct.upbdefs.h \ src/core/ext/upbdefs-generated/validate/validate.upbdefs.c \ src/core/ext/upbdefs-generated/validate/validate.upbdefs.h \ src/core/ext/upbdefs-generated/xds/core/v3/authority.upbdefs.c \ @@ -1418,8 +1410,6 @@ src/core/ext/xds/xds_client.cc \ src/core/ext/xds/xds_client.h \ src/core/ext/xds/xds_client_stats.cc \ src/core/ext/xds/xds_client_stats.h \ -src/core/ext/xds/xds_http_filters.cc \ -src/core/ext/xds/xds_http_filters.h \ src/core/ext/xds/xds_server_config_fetcher.cc \ src/core/lib/README.md \ src/core/lib/avl/avl.cc \