Copy disabled (too large)
Download .txt
Showing preview only (38,434K chars total). Download the full file to get everything.
Repository: envoyproxy/envoy-wasm
Branch: master
Commit: ab5d9381fdf9
Files: 7386
Total size: 35.1 MB
Directory structure:
gitextract_0bqlinc2/
├── .azure-pipelines/
│ ├── bazel.yml
│ ├── cleanup.sh
│ └── pipelines.yml
├── .bazelci/
│ └── presubmit.yml
├── .bazelignore
├── .bazelrc
├── .bazelversion
├── .circleci/
│ └── config.yml
├── .clang-format
├── .clang-tidy
├── .devcontainer/
│ ├── .gitignore
│ ├── Dockerfile
│ ├── README.md
│ ├── devcontainer.json
│ └── setup.sh
├── .gitattributes
├── .github/
│ ├── ISSUE_TEMPLATE/
│ │ ├── config.yml
│ │ ├── feature_request.md
│ │ ├── non--crash-security--bug.md
│ │ └── other.md
│ ├── stale.yml
│ └── workflows/
│ ├── codeql-daily.yml
│ ├── codeql-push.yml
│ └── get_build_targets.sh
├── .gitignore
├── .zuul/
│ └── playbooks/
│ └── envoy-build/
│ └── run.yaml
├── .zuul.yaml
├── BUILD
├── CODEOWNERS
├── CODE_OF_CONDUCT.md
├── CONTRIBUTING.md
├── DCO
├── DEPENDENCY_POLICY.md
├── DEPRECATED.md
├── DEVELOPER.md
├── EXTENSION_POLICY.md
├── GOVERNANCE.md
├── LICENSE
├── NOTICE
├── OWNERS.md
├── PULL_REQUESTS.md
├── PULL_REQUEST_TEMPLATE.md
├── README.md
├── RELEASES.md
├── REPO_LAYOUT.md
├── SECURITY.md
├── STYLE.md
├── VERSION
├── WORKSPACE
├── api/
│ ├── API_OVERVIEW.md
│ ├── API_VERSIONING.md
│ ├── BUILD
│ ├── CONTRIBUTING.md
│ ├── README.md
│ ├── STYLE.md
│ ├── bazel/
│ │ ├── BUILD
│ │ ├── api_build_system.bzl
│ │ ├── envoy_http_archive.bzl
│ │ ├── external_proto_deps.bzl
│ │ ├── repositories.bzl
│ │ └── repository_locations.bzl
│ ├── envoy/
│ │ ├── admin/
│ │ │ ├── v2alpha/
│ │ │ │ ├── BUILD
│ │ │ │ ├── certs.proto
│ │ │ │ ├── clusters.proto
│ │ │ │ ├── config_dump.proto
│ │ │ │ ├── listeners.proto
│ │ │ │ ├── memory.proto
│ │ │ │ ├── metrics.proto
│ │ │ │ ├── mutex_stats.proto
│ │ │ │ ├── server_info.proto
│ │ │ │ └── tap.proto
│ │ │ ├── v3/
│ │ │ │ ├── BUILD
│ │ │ │ ├── certs.proto
│ │ │ │ ├── clusters.proto
│ │ │ │ ├── config_dump.proto
│ │ │ │ ├── init_dump.proto
│ │ │ │ ├── listeners.proto
│ │ │ │ ├── memory.proto
│ │ │ │ ├── metrics.proto
│ │ │ │ ├── mutex_stats.proto
│ │ │ │ ├── server_info.proto
│ │ │ │ └── tap.proto
│ │ │ └── v4alpha/
│ │ │ ├── BUILD
│ │ │ ├── certs.proto
│ │ │ ├── clusters.proto
│ │ │ ├── config_dump.proto
│ │ │ ├── init_dump.proto
│ │ │ ├── listeners.proto
│ │ │ ├── memory.proto
│ │ │ ├── metrics.proto
│ │ │ ├── mutex_stats.proto
│ │ │ ├── server_info.proto
│ │ │ └── tap.proto
│ │ ├── annotations/
│ │ │ ├── BUILD
│ │ │ ├── deprecation.proto
│ │ │ └── resource.proto
│ │ ├── api/
│ │ │ └── v2/
│ │ │ ├── BUILD
│ │ │ ├── README.md
│ │ │ ├── auth/
│ │ │ │ ├── BUILD
│ │ │ │ ├── cert.proto
│ │ │ │ ├── common.proto
│ │ │ │ ├── secret.proto
│ │ │ │ └── tls.proto
│ │ │ ├── cds.proto
│ │ │ ├── cluster/
│ │ │ │ ├── BUILD
│ │ │ │ ├── circuit_breaker.proto
│ │ │ │ ├── filter.proto
│ │ │ │ └── outlier_detection.proto
│ │ │ ├── cluster.proto
│ │ │ ├── core/
│ │ │ │ ├── BUILD
│ │ │ │ ├── address.proto
│ │ │ │ ├── backoff.proto
│ │ │ │ ├── base.proto
│ │ │ │ ├── config_source.proto
│ │ │ │ ├── event_service_config.proto
│ │ │ │ ├── grpc_method_list.proto
│ │ │ │ ├── grpc_service.proto
│ │ │ │ ├── health_check.proto
│ │ │ │ ├── http_uri.proto
│ │ │ │ ├── protocol.proto
│ │ │ │ └── socket_option.proto
│ │ │ ├── discovery.proto
│ │ │ ├── eds.proto
│ │ │ ├── endpoint/
│ │ │ │ ├── BUILD
│ │ │ │ ├── endpoint.proto
│ │ │ │ ├── endpoint_components.proto
│ │ │ │ └── load_report.proto
│ │ │ ├── endpoint.proto
│ │ │ ├── lds.proto
│ │ │ ├── listener/
│ │ │ │ ├── BUILD
│ │ │ │ ├── listener.proto
│ │ │ │ ├── listener_components.proto
│ │ │ │ ├── quic_config.proto
│ │ │ │ └── udp_listener_config.proto
│ │ │ ├── listener.proto
│ │ │ ├── ratelimit/
│ │ │ │ ├── BUILD
│ │ │ │ └── ratelimit.proto
│ │ │ ├── rds.proto
│ │ │ ├── route/
│ │ │ │ ├── BUILD
│ │ │ │ ├── route.proto
│ │ │ │ └── route_components.proto
│ │ │ ├── route.proto
│ │ │ ├── scoped_route.proto
│ │ │ └── srds.proto
│ │ ├── config/
│ │ │ ├── README.md
│ │ │ ├── accesslog/
│ │ │ │ ├── v2/
│ │ │ │ │ ├── BUILD
│ │ │ │ │ ├── als.proto
│ │ │ │ │ └── file.proto
│ │ │ │ ├── v3/
│ │ │ │ │ ├── BUILD
│ │ │ │ │ └── accesslog.proto
│ │ │ │ └── v4alpha/
│ │ │ │ ├── BUILD
│ │ │ │ └── accesslog.proto
│ │ │ ├── bootstrap/
│ │ │ │ ├── v2/
│ │ │ │ │ ├── BUILD
│ │ │ │ │ └── bootstrap.proto
│ │ │ │ ├── v3/
│ │ │ │ │ ├── BUILD
│ │ │ │ │ └── bootstrap.proto
│ │ │ │ └── v4alpha/
│ │ │ │ ├── BUILD
│ │ │ │ └── bootstrap.proto
│ │ │ ├── cluster/
│ │ │ │ ├── aggregate/
│ │ │ │ │ └── v2alpha/
│ │ │ │ │ ├── BUILD
│ │ │ │ │ └── cluster.proto
│ │ │ │ ├── dynamic_forward_proxy/
│ │ │ │ │ └── v2alpha/
│ │ │ │ │ ├── BUILD
│ │ │ │ │ └── cluster.proto
│ │ │ │ ├── redis/
│ │ │ │ │ ├── BUILD
│ │ │ │ │ └── redis_cluster.proto
│ │ │ │ ├── v3/
│ │ │ │ │ ├── BUILD
│ │ │ │ │ ├── circuit_breaker.proto
│ │ │ │ │ ├── cluster.proto
│ │ │ │ │ ├── filter.proto
│ │ │ │ │ └── outlier_detection.proto
│ │ │ │ └── v4alpha/
│ │ │ │ ├── BUILD
│ │ │ │ ├── circuit_breaker.proto
│ │ │ │ ├── cluster.proto
│ │ │ │ ├── filter.proto
│ │ │ │ └── outlier_detection.proto
│ │ │ ├── common/
│ │ │ │ ├── dynamic_forward_proxy/
│ │ │ │ │ └── v2alpha/
│ │ │ │ │ ├── BUILD
│ │ │ │ │ └── dns_cache.proto
│ │ │ │ ├── matcher/
│ │ │ │ │ ├── v3/
│ │ │ │ │ │ ├── BUILD
│ │ │ │ │ │ └── matcher.proto
│ │ │ │ │ └── v4alpha/
│ │ │ │ │ ├── BUILD
│ │ │ │ │ └── matcher.proto
│ │ │ │ └── tap/
│ │ │ │ └── v2alpha/
│ │ │ │ ├── BUILD
│ │ │ │ └── common.proto
│ │ │ ├── core/
│ │ │ │ ├── v3/
│ │ │ │ │ ├── BUILD
│ │ │ │ │ ├── address.proto
│ │ │ │ │ ├── backoff.proto
│ │ │ │ │ ├── base.proto
│ │ │ │ │ ├── config_source.proto
│ │ │ │ │ ├── event_service_config.proto
│ │ │ │ │ ├── extension.proto
│ │ │ │ │ ├── grpc_method_list.proto
│ │ │ │ │ ├── grpc_service.proto
│ │ │ │ │ ├── health_check.proto
│ │ │ │ │ ├── http_uri.proto
│ │ │ │ │ ├── protocol.proto
│ │ │ │ │ ├── proxy_protocol.proto
│ │ │ │ │ ├── socket_option.proto
│ │ │ │ │ └── substitution_format_string.proto
│ │ │ │ └── v4alpha/
│ │ │ │ ├── BUILD
│ │ │ │ ├── address.proto
│ │ │ │ ├── backoff.proto
│ │ │ │ ├── base.proto
│ │ │ │ ├── config_source.proto
│ │ │ │ ├── event_service_config.proto
│ │ │ │ ├── extension.proto
│ │ │ │ ├── grpc_method_list.proto
│ │ │ │ ├── grpc_service.proto
│ │ │ │ ├── health_check.proto
│ │ │ │ ├── http_uri.proto
│ │ │ │ ├── protocol.proto
│ │ │ │ ├── proxy_protocol.proto
│ │ │ │ ├── socket_option.proto
│ │ │ │ └── substitution_format_string.proto
│ │ │ ├── endpoint/
│ │ │ │ └── v3/
│ │ │ │ ├── BUILD
│ │ │ │ ├── endpoint.proto
│ │ │ │ ├── endpoint_components.proto
│ │ │ │ └── load_report.proto
│ │ │ ├── filter/
│ │ │ │ ├── README.md
│ │ │ │ ├── accesslog/
│ │ │ │ │ └── v2/
│ │ │ │ │ ├── BUILD
│ │ │ │ │ └── accesslog.proto
│ │ │ │ ├── dubbo/
│ │ │ │ │ └── router/
│ │ │ │ │ └── v2alpha1/
│ │ │ │ │ ├── BUILD
│ │ │ │ │ └── router.proto
│ │ │ │ ├── fault/
│ │ │ │ │ └── v2/
│ │ │ │ │ ├── BUILD
│ │ │ │ │ └── fault.proto
│ │ │ │ ├── http/
│ │ │ │ │ ├── adaptive_concurrency/
│ │ │ │ │ │ └── v2alpha/
│ │ │ │ │ │ ├── BUILD
│ │ │ │ │ │ └── adaptive_concurrency.proto
│ │ │ │ │ ├── aws_lambda/
│ │ │ │ │ │ └── v2alpha/
│ │ │ │ │ │ ├── BUILD
│ │ │ │ │ │ └── aws_lambda.proto
│ │ │ │ │ ├── aws_request_signing/
│ │ │ │ │ │ └── v2alpha/
│ │ │ │ │ │ ├── BUILD
│ │ │ │ │ │ └── aws_request_signing.proto
│ │ │ │ │ ├── buffer/
│ │ │ │ │ │ └── v2/
│ │ │ │ │ │ ├── BUILD
│ │ │ │ │ │ └── buffer.proto
│ │ │ │ │ ├── cache/
│ │ │ │ │ │ └── v2alpha/
│ │ │ │ │ │ ├── BUILD
│ │ │ │ │ │ └── cache.proto
│ │ │ │ │ ├── compressor/
│ │ │ │ │ │ └── v2/
│ │ │ │ │ │ ├── BUILD
│ │ │ │ │ │ └── compressor.proto
│ │ │ │ │ ├── cors/
│ │ │ │ │ │ └── v2/
│ │ │ │ │ │ ├── BUILD
│ │ │ │ │ │ └── cors.proto
│ │ │ │ │ ├── csrf/
│ │ │ │ │ │ └── v2/
│ │ │ │ │ │ ├── BUILD
│ │ │ │ │ │ └── csrf.proto
│ │ │ │ │ ├── dynamic_forward_proxy/
│ │ │ │ │ │ └── v2alpha/
│ │ │ │ │ │ ├── BUILD
│ │ │ │ │ │ └── dynamic_forward_proxy.proto
│ │ │ │ │ ├── dynamo/
│ │ │ │ │ │ └── v2/
│ │ │ │ │ │ ├── BUILD
│ │ │ │ │ │ └── dynamo.proto
│ │ │ │ │ ├── ext_authz/
│ │ │ │ │ │ └── v2/
│ │ │ │ │ │ ├── BUILD
│ │ │ │ │ │ └── ext_authz.proto
│ │ │ │ │ ├── fault/
│ │ │ │ │ │ └── v2/
│ │ │ │ │ │ ├── BUILD
│ │ │ │ │ │ └── fault.proto
│ │ │ │ │ ├── grpc_http1_bridge/
│ │ │ │ │ │ └── v2/
│ │ │ │ │ │ ├── BUILD
│ │ │ │ │ │ └── config.proto
│ │ │ │ │ ├── grpc_http1_reverse_bridge/
│ │ │ │ │ │ └── v2alpha1/
│ │ │ │ │ │ ├── BUILD
│ │ │ │ │ │ └── config.proto
│ │ │ │ │ ├── grpc_stats/
│ │ │ │ │ │ └── v2alpha/
│ │ │ │ │ │ ├── BUILD
│ │ │ │ │ │ └── config.proto
│ │ │ │ │ ├── grpc_web/
│ │ │ │ │ │ └── v2/
│ │ │ │ │ │ ├── BUILD
│ │ │ │ │ │ └── grpc_web.proto
│ │ │ │ │ ├── gzip/
│ │ │ │ │ │ └── v2/
│ │ │ │ │ │ ├── BUILD
│ │ │ │ │ │ └── gzip.proto
│ │ │ │ │ ├── header_to_metadata/
│ │ │ │ │ │ └── v2/
│ │ │ │ │ │ ├── BUILD
│ │ │ │ │ │ └── header_to_metadata.proto
│ │ │ │ │ ├── health_check/
│ │ │ │ │ │ └── v2/
│ │ │ │ │ │ ├── BUILD
│ │ │ │ │ │ └── health_check.proto
│ │ │ │ │ ├── ip_tagging/
│ │ │ │ │ │ └── v2/
│ │ │ │ │ │ ├── BUILD
│ │ │ │ │ │ └── ip_tagging.proto
│ │ │ │ │ ├── jwt_authn/
│ │ │ │ │ │ └── v2alpha/
│ │ │ │ │ │ ├── BUILD
│ │ │ │ │ │ ├── README.md
│ │ │ │ │ │ └── config.proto
│ │ │ │ │ ├── lua/
│ │ │ │ │ │ └── v2/
│ │ │ │ │ │ ├── BUILD
│ │ │ │ │ │ └── lua.proto
│ │ │ │ │ ├── on_demand/
│ │ │ │ │ │ └── v2/
│ │ │ │ │ │ ├── BUILD
│ │ │ │ │ │ └── on_demand.proto
│ │ │ │ │ ├── original_src/
│ │ │ │ │ │ └── v2alpha1/
│ │ │ │ │ │ ├── BUILD
│ │ │ │ │ │ └── original_src.proto
│ │ │ │ │ ├── rate_limit/
│ │ │ │ │ │ └── v2/
│ │ │ │ │ │ ├── BUILD
│ │ │ │ │ │ └── rate_limit.proto
│ │ │ │ │ ├── rbac/
│ │ │ │ │ │ └── v2/
│ │ │ │ │ │ ├── BUILD
│ │ │ │ │ │ └── rbac.proto
│ │ │ │ │ ├── router/
│ │ │ │ │ │ └── v2/
│ │ │ │ │ │ ├── BUILD
│ │ │ │ │ │ └── router.proto
│ │ │ │ │ ├── squash/
│ │ │ │ │ │ └── v2/
│ │ │ │ │ │ ├── BUILD
│ │ │ │ │ │ └── squash.proto
│ │ │ │ │ ├── tap/
│ │ │ │ │ │ └── v2alpha/
│ │ │ │ │ │ ├── BUILD
│ │ │ │ │ │ └── tap.proto
│ │ │ │ │ └── transcoder/
│ │ │ │ │ └── v2/
│ │ │ │ │ ├── BUILD
│ │ │ │ │ └── transcoder.proto
│ │ │ │ ├── listener/
│ │ │ │ │ ├── http_inspector/
│ │ │ │ │ │ └── v2/
│ │ │ │ │ │ ├── BUILD
│ │ │ │ │ │ └── http_inspector.proto
│ │ │ │ │ ├── original_dst/
│ │ │ │ │ │ └── v2/
│ │ │ │ │ │ ├── BUILD
│ │ │ │ │ │ └── original_dst.proto
│ │ │ │ │ ├── original_src/
│ │ │ │ │ │ └── v2alpha1/
│ │ │ │ │ │ ├── BUILD
│ │ │ │ │ │ └── original_src.proto
│ │ │ │ │ ├── proxy_protocol/
│ │ │ │ │ │ └── v2/
│ │ │ │ │ │ ├── BUILD
│ │ │ │ │ │ └── proxy_protocol.proto
│ │ │ │ │ └── tls_inspector/
│ │ │ │ │ └── v2/
│ │ │ │ │ ├── BUILD
│ │ │ │ │ └── tls_inspector.proto
│ │ │ │ ├── network/
│ │ │ │ │ ├── client_ssl_auth/
│ │ │ │ │ │ └── v2/
│ │ │ │ │ │ ├── BUILD
│ │ │ │ │ │ └── client_ssl_auth.proto
│ │ │ │ │ ├── direct_response/
│ │ │ │ │ │ └── v2/
│ │ │ │ │ │ ├── BUILD
│ │ │ │ │ │ └── config.proto
│ │ │ │ │ ├── dubbo_proxy/
│ │ │ │ │ │ └── v2alpha1/
│ │ │ │ │ │ ├── BUILD
│ │ │ │ │ │ ├── README.md
│ │ │ │ │ │ ├── dubbo_proxy.proto
│ │ │ │ │ │ └── route.proto
│ │ │ │ │ ├── echo/
│ │ │ │ │ │ └── v2/
│ │ │ │ │ │ ├── BUILD
│ │ │ │ │ │ └── echo.proto
│ │ │ │ │ ├── ext_authz/
│ │ │ │ │ │ └── v2/
│ │ │ │ │ │ ├── BUILD
│ │ │ │ │ │ └── ext_authz.proto
│ │ │ │ │ ├── http_connection_manager/
│ │ │ │ │ │ └── v2/
│ │ │ │ │ │ ├── BUILD
│ │ │ │ │ │ └── http_connection_manager.proto
│ │ │ │ │ ├── kafka_broker/
│ │ │ │ │ │ └── v2alpha1/
│ │ │ │ │ │ ├── BUILD
│ │ │ │ │ │ └── kafka_broker.proto
│ │ │ │ │ ├── local_rate_limit/
│ │ │ │ │ │ └── v2alpha/
│ │ │ │ │ │ ├── BUILD
│ │ │ │ │ │ └── local_rate_limit.proto
│ │ │ │ │ ├── mongo_proxy/
│ │ │ │ │ │ └── v2/
│ │ │ │ │ │ ├── BUILD
│ │ │ │ │ │ └── mongo_proxy.proto
│ │ │ │ │ ├── mysql_proxy/
│ │ │ │ │ │ └── v1alpha1/
│ │ │ │ │ │ ├── BUILD
│ │ │ │ │ │ └── mysql_proxy.proto
│ │ │ │ │ ├── rate_limit/
│ │ │ │ │ │ └── v2/
│ │ │ │ │ │ ├── BUILD
│ │ │ │ │ │ └── rate_limit.proto
│ │ │ │ │ ├── rbac/
│ │ │ │ │ │ └── v2/
│ │ │ │ │ │ ├── BUILD
│ │ │ │ │ │ └── rbac.proto
│ │ │ │ │ ├── redis_proxy/
│ │ │ │ │ │ └── v2/
│ │ │ │ │ │ ├── BUILD
│ │ │ │ │ │ └── redis_proxy.proto
│ │ │ │ │ ├── sni_cluster/
│ │ │ │ │ │ └── v2/
│ │ │ │ │ │ ├── BUILD
│ │ │ │ │ │ └── sni_cluster.proto
│ │ │ │ │ ├── tcp_proxy/
│ │ │ │ │ │ └── v2/
│ │ │ │ │ │ ├── BUILD
│ │ │ │ │ │ └── tcp_proxy.proto
│ │ │ │ │ ├── thrift_proxy/
│ │ │ │ │ │ └── v2alpha1/
│ │ │ │ │ │ ├── BUILD
│ │ │ │ │ │ ├── README.md
│ │ │ │ │ │ ├── route.proto
│ │ │ │ │ │ └── thrift_proxy.proto
│ │ │ │ │ └── zookeeper_proxy/
│ │ │ │ │ └── v1alpha1/
│ │ │ │ │ ├── BUILD
│ │ │ │ │ └── zookeeper_proxy.proto
│ │ │ │ ├── thrift/
│ │ │ │ │ ├── rate_limit/
│ │ │ │ │ │ └── v2alpha1/
│ │ │ │ │ │ ├── BUILD
│ │ │ │ │ │ └── rate_limit.proto
│ │ │ │ │ └── router/
│ │ │ │ │ └── v2alpha1/
│ │ │ │ │ ├── BUILD
│ │ │ │ │ └── router.proto
│ │ │ │ └── udp/
│ │ │ │ └── udp_proxy/
│ │ │ │ └── v2alpha/
│ │ │ │ ├── BUILD
│ │ │ │ └── udp_proxy.proto
│ │ │ ├── grpc_credential/
│ │ │ │ ├── v2alpha/
│ │ │ │ │ ├── BUILD
│ │ │ │ │ ├── aws_iam.proto
│ │ │ │ │ └── file_based_metadata.proto
│ │ │ │ └── v3/
│ │ │ │ ├── BUILD
│ │ │ │ ├── aws_iam.proto
│ │ │ │ └── file_based_metadata.proto
│ │ │ ├── health_checker/
│ │ │ │ └── redis/
│ │ │ │ └── v2/
│ │ │ │ ├── BUILD
│ │ │ │ └── redis.proto
│ │ │ ├── listener/
│ │ │ │ ├── v2/
│ │ │ │ │ ├── BUILD
│ │ │ │ │ └── api_listener.proto
│ │ │ │ ├── v3/
│ │ │ │ │ ├── BUILD
│ │ │ │ │ ├── api_listener.proto
│ │ │ │ │ ├── listener.proto
│ │ │ │ │ ├── listener_components.proto
│ │ │ │ │ ├── quic_config.proto
│ │ │ │ │ ├── udp_default_writer_config.proto
│ │ │ │ │ ├── udp_gso_batch_writer_config.proto
│ │ │ │ │ └── udp_listener_config.proto
│ │ │ │ └── v4alpha/
│ │ │ │ ├── BUILD
│ │ │ │ ├── api_listener.proto
│ │ │ │ ├── listener.proto
│ │ │ │ ├── listener_components.proto
│ │ │ │ ├── quic_config.proto
│ │ │ │ ├── udp_default_writer_config.proto
│ │ │ │ ├── udp_gso_batch_writer_config.proto
│ │ │ │ └── udp_listener_config.proto
│ │ │ ├── metrics/
│ │ │ │ ├── v2/
│ │ │ │ │ ├── BUILD
│ │ │ │ │ ├── metrics_service.proto
│ │ │ │ │ └── stats.proto
│ │ │ │ ├── v3/
│ │ │ │ │ ├── BUILD
│ │ │ │ │ ├── metrics_service.proto
│ │ │ │ │ └── stats.proto
│ │ │ │ └── v4alpha/
│ │ │ │ ├── BUILD
│ │ │ │ ├── metrics_service.proto
│ │ │ │ └── stats.proto
│ │ │ ├── overload/
│ │ │ │ ├── v2alpha/
│ │ │ │ │ ├── BUILD
│ │ │ │ │ └── overload.proto
│ │ │ │ └── v3/
│ │ │ │ ├── BUILD
│ │ │ │ └── overload.proto
│ │ │ ├── ratelimit/
│ │ │ │ ├── v2/
│ │ │ │ │ ├── BUILD
│ │ │ │ │ └── rls.proto
│ │ │ │ └── v3/
│ │ │ │ ├── BUILD
│ │ │ │ └── rls.proto
│ │ │ ├── rbac/
│ │ │ │ ├── v2/
│ │ │ │ │ ├── BUILD
│ │ │ │ │ └── rbac.proto
│ │ │ │ ├── v3/
│ │ │ │ │ ├── BUILD
│ │ │ │ │ └── rbac.proto
│ │ │ │ └── v4alpha/
│ │ │ │ ├── BUILD
│ │ │ │ └── rbac.proto
│ │ │ ├── resource_monitor/
│ │ │ │ ├── fixed_heap/
│ │ │ │ │ └── v2alpha/
│ │ │ │ │ ├── BUILD
│ │ │ │ │ └── fixed_heap.proto
│ │ │ │ └── injected_resource/
│ │ │ │ └── v2alpha/
│ │ │ │ ├── BUILD
│ │ │ │ └── injected_resource.proto
│ │ │ ├── retry/
│ │ │ │ ├── omit_canary_hosts/
│ │ │ │ │ └── v2/
│ │ │ │ │ ├── BUILD
│ │ │ │ │ └── omit_canary_hosts.proto
│ │ │ │ ├── omit_host_metadata/
│ │ │ │ │ └── v2/
│ │ │ │ │ ├── BUILD
│ │ │ │ │ └── omit_host_metadata_config.proto
│ │ │ │ ├── previous_hosts/
│ │ │ │ │ └── v2/
│ │ │ │ │ ├── BUILD
│ │ │ │ │ └── previous_hosts.proto
│ │ │ │ └── previous_priorities/
│ │ │ │ ├── BUILD
│ │ │ │ └── previous_priorities_config.proto
│ │ │ ├── route/
│ │ │ │ ├── v3/
│ │ │ │ │ ├── BUILD
│ │ │ │ │ ├── route.proto
│ │ │ │ │ ├── route_components.proto
│ │ │ │ │ └── scoped_route.proto
│ │ │ │ └── v4alpha/
│ │ │ │ ├── BUILD
│ │ │ │ ├── route.proto
│ │ │ │ ├── route_components.proto
│ │ │ │ └── scoped_route.proto
│ │ │ ├── tap/
│ │ │ │ ├── v3/
│ │ │ │ │ ├── BUILD
│ │ │ │ │ └── common.proto
│ │ │ │ └── v4alpha/
│ │ │ │ ├── BUILD
│ │ │ │ └── common.proto
│ │ │ ├── trace/
│ │ │ │ ├── v2/
│ │ │ │ │ ├── BUILD
│ │ │ │ │ ├── datadog.proto
│ │ │ │ │ ├── dynamic_ot.proto
│ │ │ │ │ ├── http_tracer.proto
│ │ │ │ │ ├── lightstep.proto
│ │ │ │ │ ├── opencensus.proto
│ │ │ │ │ ├── service.proto
│ │ │ │ │ ├── trace.proto
│ │ │ │ │ └── zipkin.proto
│ │ │ │ ├── v2alpha/
│ │ │ │ │ ├── BUILD
│ │ │ │ │ └── xray.proto
│ │ │ │ ├── v3/
│ │ │ │ │ ├── BUILD
│ │ │ │ │ ├── datadog.proto
│ │ │ │ │ ├── dynamic_ot.proto
│ │ │ │ │ ├── http_tracer.proto
│ │ │ │ │ ├── lightstep.proto
│ │ │ │ │ ├── opencensus.proto
│ │ │ │ │ ├── service.proto
│ │ │ │ │ ├── trace.proto
│ │ │ │ │ ├── xray.proto
│ │ │ │ │ └── zipkin.proto
│ │ │ │ └── v4alpha/
│ │ │ │ ├── BUILD
│ │ │ │ ├── http_tracer.proto
│ │ │ │ └── service.proto
│ │ │ └── transport_socket/
│ │ │ ├── alts/
│ │ │ │ └── v2alpha/
│ │ │ │ ├── BUILD
│ │ │ │ └── alts.proto
│ │ │ ├── raw_buffer/
│ │ │ │ └── v2/
│ │ │ │ ├── BUILD
│ │ │ │ └── raw_buffer.proto
│ │ │ └── tap/
│ │ │ └── v2alpha/
│ │ │ ├── BUILD
│ │ │ └── tap.proto
│ │ ├── data/
│ │ │ ├── accesslog/
│ │ │ │ ├── v2/
│ │ │ │ │ ├── BUILD
│ │ │ │ │ └── accesslog.proto
│ │ │ │ └── v3/
│ │ │ │ ├── BUILD
│ │ │ │ └── accesslog.proto
│ │ │ ├── cluster/
│ │ │ │ ├── v2alpha/
│ │ │ │ │ ├── BUILD
│ │ │ │ │ └── outlier_detection_event.proto
│ │ │ │ └── v3/
│ │ │ │ ├── BUILD
│ │ │ │ └── outlier_detection_event.proto
│ │ │ ├── core/
│ │ │ │ ├── v2alpha/
│ │ │ │ │ ├── BUILD
│ │ │ │ │ └── health_check_event.proto
│ │ │ │ └── v3/
│ │ │ │ ├── BUILD
│ │ │ │ └── health_check_event.proto
│ │ │ ├── dns/
│ │ │ │ ├── v2alpha/
│ │ │ │ │ ├── BUILD
│ │ │ │ │ └── dns_table.proto
│ │ │ │ ├── v3/
│ │ │ │ │ ├── BUILD
│ │ │ │ │ └── dns_table.proto
│ │ │ │ └── v4alpha/
│ │ │ │ ├── BUILD
│ │ │ │ └── dns_table.proto
│ │ │ └── tap/
│ │ │ ├── v2alpha/
│ │ │ │ ├── BUILD
│ │ │ │ ├── common.proto
│ │ │ │ ├── http.proto
│ │ │ │ ├── transport.proto
│ │ │ │ └── wrapper.proto
│ │ │ └── v3/
│ │ │ ├── BUILD
│ │ │ ├── common.proto
│ │ │ ├── http.proto
│ │ │ ├── transport.proto
│ │ │ └── wrapper.proto
│ │ ├── extensions/
│ │ │ ├── access_loggers/
│ │ │ │ ├── file/
│ │ │ │ │ ├── v3/
│ │ │ │ │ │ ├── BUILD
│ │ │ │ │ │ └── file.proto
│ │ │ │ │ └── v4alpha/
│ │ │ │ │ ├── BUILD
│ │ │ │ │ └── file.proto
│ │ │ │ ├── grpc/
│ │ │ │ │ └── v3/
│ │ │ │ │ ├── BUILD
│ │ │ │ │ └── als.proto
│ │ │ │ └── wasm/
│ │ │ │ └── v3/
│ │ │ │ ├── BUILD
│ │ │ │ └── wasm.proto
│ │ │ ├── clusters/
│ │ │ │ ├── aggregate/
│ │ │ │ │ └── v3/
│ │ │ │ │ ├── BUILD
│ │ │ │ │ └── cluster.proto
│ │ │ │ ├── dynamic_forward_proxy/
│ │ │ │ │ └── v3/
│ │ │ │ │ ├── BUILD
│ │ │ │ │ └── cluster.proto
│ │ │ │ └── redis/
│ │ │ │ └── v3/
│ │ │ │ ├── BUILD
│ │ │ │ └── redis_cluster.proto
│ │ │ ├── common/
│ │ │ │ ├── dynamic_forward_proxy/
│ │ │ │ │ └── v3/
│ │ │ │ │ ├── BUILD
│ │ │ │ │ └── dns_cache.proto
│ │ │ │ ├── ratelimit/
│ │ │ │ │ └── v3/
│ │ │ │ │ ├── BUILD
│ │ │ │ │ └── ratelimit.proto
│ │ │ │ └── tap/
│ │ │ │ ├── v3/
│ │ │ │ │ ├── BUILD
│ │ │ │ │ └── common.proto
│ │ │ │ └── v4alpha/
│ │ │ │ ├── BUILD
│ │ │ │ └── common.proto
│ │ │ ├── compression/
│ │ │ │ └── gzip/
│ │ │ │ ├── compressor/
│ │ │ │ │ └── v3/
│ │ │ │ │ ├── BUILD
│ │ │ │ │ └── gzip.proto
│ │ │ │ └── decompressor/
│ │ │ │ └── v3/
│ │ │ │ ├── BUILD
│ │ │ │ └── gzip.proto
│ │ │ ├── filters/
│ │ │ │ ├── common/
│ │ │ │ │ └── fault/
│ │ │ │ │ └── v3/
│ │ │ │ │ ├── BUILD
│ │ │ │ │ └── fault.proto
│ │ │ │ ├── http/
│ │ │ │ │ ├── adaptive_concurrency/
│ │ │ │ │ │ └── v3/
│ │ │ │ │ │ ├── BUILD
│ │ │ │ │ │ └── adaptive_concurrency.proto
│ │ │ │ │ ├── admission_control/
│ │ │ │ │ │ └── v3alpha/
│ │ │ │ │ │ ├── BUILD
│ │ │ │ │ │ └── admission_control.proto
│ │ │ │ │ ├── aws_lambda/
│ │ │ │ │ │ └── v3/
│ │ │ │ │ │ ├── BUILD
│ │ │ │ │ │ └── aws_lambda.proto
│ │ │ │ │ ├── aws_request_signing/
│ │ │ │ │ │ └── v3/
│ │ │ │ │ │ ├── BUILD
│ │ │ │ │ │ └── aws_request_signing.proto
│ │ │ │ │ ├── buffer/
│ │ │ │ │ │ └── v3/
│ │ │ │ │ │ ├── BUILD
│ │ │ │ │ │ └── buffer.proto
│ │ │ │ │ ├── cache/
│ │ │ │ │ │ ├── v3alpha/
│ │ │ │ │ │ │ ├── BUILD
│ │ │ │ │ │ │ └── cache.proto
│ │ │ │ │ │ └── v4alpha/
│ │ │ │ │ │ ├── BUILD
│ │ │ │ │ │ └── cache.proto
│ │ │ │ │ ├── cdn_loop/
│ │ │ │ │ │ └── v3alpha/
│ │ │ │ │ │ ├── BUILD
│ │ │ │ │ │ └── cdn_loop.proto
│ │ │ │ │ ├── compressor/
│ │ │ │ │ │ └── v3/
│ │ │ │ │ │ ├── BUILD
│ │ │ │ │ │ └── compressor.proto
│ │ │ │ │ ├── cors/
│ │ │ │ │ │ └── v3/
│ │ │ │ │ │ ├── BUILD
│ │ │ │ │ │ └── cors.proto
│ │ │ │ │ ├── csrf/
│ │ │ │ │ │ ├── v3/
│ │ │ │ │ │ │ ├── BUILD
│ │ │ │ │ │ │ └── csrf.proto
│ │ │ │ │ │ └── v4alpha/
│ │ │ │ │ │ ├── BUILD
│ │ │ │ │ │ └── csrf.proto
│ │ │ │ │ ├── decompressor/
│ │ │ │ │ │ └── v3/
│ │ │ │ │ │ ├── BUILD
│ │ │ │ │ │ └── decompressor.proto
│ │ │ │ │ ├── dynamic_forward_proxy/
│ │ │ │ │ │ └── v3/
│ │ │ │ │ │ ├── BUILD
│ │ │ │ │ │ └── dynamic_forward_proxy.proto
│ │ │ │ │ ├── dynamo/
│ │ │ │ │ │ └── v3/
│ │ │ │ │ │ ├── BUILD
│ │ │ │ │ │ └── dynamo.proto
│ │ │ │ │ ├── ext_authz/
│ │ │ │ │ │ ├── v3/
│ │ │ │ │ │ │ ├── BUILD
│ │ │ │ │ │ │ └── ext_authz.proto
│ │ │ │ │ │ └── v4alpha/
│ │ │ │ │ │ ├── BUILD
│ │ │ │ │ │ └── ext_authz.proto
│ │ │ │ │ ├── fault/
│ │ │ │ │ │ ├── v3/
│ │ │ │ │ │ │ ├── BUILD
│ │ │ │ │ │ │ └── fault.proto
│ │ │ │ │ │ └── v4alpha/
│ │ │ │ │ │ ├── BUILD
│ │ │ │ │ │ └── fault.proto
│ │ │ │ │ ├── grpc_http1_bridge/
│ │ │ │ │ │ └── v3/
│ │ │ │ │ │ ├── BUILD
│ │ │ │ │ │ └── config.proto
│ │ │ │ │ ├── grpc_http1_reverse_bridge/
│ │ │ │ │ │ └── v3/
│ │ │ │ │ │ ├── BUILD
│ │ │ │ │ │ └── config.proto
│ │ │ │ │ ├── grpc_json_transcoder/
│ │ │ │ │ │ └── v3/
│ │ │ │ │ │ ├── BUILD
│ │ │ │ │ │ └── transcoder.proto
│ │ │ │ │ ├── grpc_stats/
│ │ │ │ │ │ └── v3/
│ │ │ │ │ │ ├── BUILD
│ │ │ │ │ │ └── config.proto
│ │ │ │ │ ├── grpc_web/
│ │ │ │ │ │ └── v3/
│ │ │ │ │ │ ├── BUILD
│ │ │ │ │ │ └── grpc_web.proto
│ │ │ │ │ ├── gzip/
│ │ │ │ │ │ └── v3/
│ │ │ │ │ │ ├── BUILD
│ │ │ │ │ │ └── gzip.proto
│ │ │ │ │ ├── header_to_metadata/
│ │ │ │ │ │ ├── v3/
│ │ │ │ │ │ │ ├── BUILD
│ │ │ │ │ │ │ └── header_to_metadata.proto
│ │ │ │ │ │ └── v4alpha/
│ │ │ │ │ │ ├── BUILD
│ │ │ │ │ │ └── header_to_metadata.proto
│ │ │ │ │ ├── health_check/
│ │ │ │ │ │ ├── v3/
│ │ │ │ │ │ │ ├── BUILD
│ │ │ │ │ │ │ └── health_check.proto
│ │ │ │ │ │ └── v4alpha/
│ │ │ │ │ │ ├── BUILD
│ │ │ │ │ │ └── health_check.proto
│ │ │ │ │ ├── ip_tagging/
│ │ │ │ │ │ └── v3/
│ │ │ │ │ │ ├── BUILD
│ │ │ │ │ │ └── ip_tagging.proto
│ │ │ │ │ ├── jwt_authn/
│ │ │ │ │ │ ├── v3/
│ │ │ │ │ │ │ ├── BUILD
│ │ │ │ │ │ │ ├── README.md
│ │ │ │ │ │ │ └── config.proto
│ │ │ │ │ │ └── v4alpha/
│ │ │ │ │ │ ├── BUILD
│ │ │ │ │ │ └── config.proto
│ │ │ │ │ ├── local_ratelimit/
│ │ │ │ │ │ └── v3/
│ │ │ │ │ │ ├── BUILD
│ │ │ │ │ │ └── local_rate_limit.proto
│ │ │ │ │ ├── lua/
│ │ │ │ │ │ └── v3/
│ │ │ │ │ │ ├── BUILD
│ │ │ │ │ │ └── lua.proto
│ │ │ │ │ ├── oauth2/
│ │ │ │ │ │ ├── v3alpha/
│ │ │ │ │ │ │ ├── BUILD
│ │ │ │ │ │ │ └── oauth.proto
│ │ │ │ │ │ └── v4alpha/
│ │ │ │ │ │ ├── BUILD
│ │ │ │ │ │ └── oauth.proto
│ │ │ │ │ ├── on_demand/
│ │ │ │ │ │ └── v3/
│ │ │ │ │ │ ├── BUILD
│ │ │ │ │ │ └── on_demand.proto
│ │ │ │ │ ├── original_src/
│ │ │ │ │ │ └── v3/
│ │ │ │ │ │ ├── BUILD
│ │ │ │ │ │ └── original_src.proto
│ │ │ │ │ ├── ratelimit/
│ │ │ │ │ │ └── v3/
│ │ │ │ │ │ ├── BUILD
│ │ │ │ │ │ └── rate_limit.proto
│ │ │ │ │ ├── rbac/
│ │ │ │ │ │ ├── v3/
│ │ │ │ │ │ │ ├── BUILD
│ │ │ │ │ │ │ └── rbac.proto
│ │ │ │ │ │ └── v4alpha/
│ │ │ │ │ │ ├── BUILD
│ │ │ │ │ │ └── rbac.proto
│ │ │ │ │ ├── router/
│ │ │ │ │ │ ├── v3/
│ │ │ │ │ │ │ ├── BUILD
│ │ │ │ │ │ │ └── router.proto
│ │ │ │ │ │ └── v4alpha/
│ │ │ │ │ │ ├── BUILD
│ │ │ │ │ │ └── router.proto
│ │ │ │ │ ├── squash/
│ │ │ │ │ │ └── v3/
│ │ │ │ │ │ ├── BUILD
│ │ │ │ │ │ └── squash.proto
│ │ │ │ │ ├── tap/
│ │ │ │ │ │ ├── v3/
│ │ │ │ │ │ │ ├── BUILD
│ │ │ │ │ │ │ └── tap.proto
│ │ │ │ │ │ └── v4alpha/
│ │ │ │ │ │ ├── BUILD
│ │ │ │ │ │ └── tap.proto
│ │ │ │ │ └── wasm/
│ │ │ │ │ └── v3/
│ │ │ │ │ ├── BUILD
│ │ │ │ │ └── wasm.proto
│ │ │ │ ├── listener/
│ │ │ │ │ ├── http_inspector/
│ │ │ │ │ │ └── v3/
│ │ │ │ │ │ ├── BUILD
│ │ │ │ │ │ └── http_inspector.proto
│ │ │ │ │ ├── original_dst/
│ │ │ │ │ │ └── v3/
│ │ │ │ │ │ ├── BUILD
│ │ │ │ │ │ └── original_dst.proto
│ │ │ │ │ ├── original_src/
│ │ │ │ │ │ └── v3/
│ │ │ │ │ │ ├── BUILD
│ │ │ │ │ │ └── original_src.proto
│ │ │ │ │ ├── proxy_protocol/
│ │ │ │ │ │ └── v3/
│ │ │ │ │ │ ├── BUILD
│ │ │ │ │ │ └── proxy_protocol.proto
│ │ │ │ │ └── tls_inspector/
│ │ │ │ │ └── v3/
│ │ │ │ │ ├── BUILD
│ │ │ │ │ └── tls_inspector.proto
│ │ │ │ ├── network/
│ │ │ │ │ ├── client_ssl_auth/
│ │ │ │ │ │ └── v3/
│ │ │ │ │ │ ├── BUILD
│ │ │ │ │ │ └── client_ssl_auth.proto
│ │ │ │ │ ├── direct_response/
│ │ │ │ │ │ └── v3/
│ │ │ │ │ │ ├── BUILD
│ │ │ │ │ │ └── config.proto
│ │ │ │ │ ├── dubbo_proxy/
│ │ │ │ │ │ ├── router/
│ │ │ │ │ │ │ └── v3/
│ │ │ │ │ │ │ ├── BUILD
│ │ │ │ │ │ │ └── router.proto
│ │ │ │ │ │ ├── v3/
│ │ │ │ │ │ │ ├── BUILD
│ │ │ │ │ │ │ ├── README.md
│ │ │ │ │ │ │ ├── dubbo_proxy.proto
│ │ │ │ │ │ │ └── route.proto
│ │ │ │ │ │ └── v4alpha/
│ │ │ │ │ │ ├── BUILD
│ │ │ │ │ │ ├── dubbo_proxy.proto
│ │ │ │ │ │ └── route.proto
│ │ │ │ │ ├── echo/
│ │ │ │ │ │ └── v3/
│ │ │ │ │ │ ├── BUILD
│ │ │ │ │ │ └── echo.proto
│ │ │ │ │ ├── ext_authz/
│ │ │ │ │ │ ├── v3/
│ │ │ │ │ │ │ ├── BUILD
│ │ │ │ │ │ │ └── ext_authz.proto
│ │ │ │ │ │ └── v4alpha/
│ │ │ │ │ │ ├── BUILD
│ │ │ │ │ │ └── ext_authz.proto
│ │ │ │ │ ├── http_connection_manager/
│ │ │ │ │ │ ├── v3/
│ │ │ │ │ │ │ ├── BUILD
│ │ │ │ │ │ │ └── http_connection_manager.proto
│ │ │ │ │ │ └── v4alpha/
│ │ │ │ │ │ ├── BUILD
│ │ │ │ │ │ └── http_connection_manager.proto
│ │ │ │ │ ├── kafka_broker/
│ │ │ │ │ │ └── v3/
│ │ │ │ │ │ ├── BUILD
│ │ │ │ │ │ └── kafka_broker.proto
│ │ │ │ │ ├── local_ratelimit/
│ │ │ │ │ │ └── v3/
│ │ │ │ │ │ ├── BUILD
│ │ │ │ │ │ └── local_rate_limit.proto
│ │ │ │ │ ├── mongo_proxy/
│ │ │ │ │ │ └── v3/
│ │ │ │ │ │ ├── BUILD
│ │ │ │ │ │ └── mongo_proxy.proto
│ │ │ │ │ ├── mysql_proxy/
│ │ │ │ │ │ └── v3/
│ │ │ │ │ │ ├── BUILD
│ │ │ │ │ │ └── mysql_proxy.proto
│ │ │ │ │ ├── postgres_proxy/
│ │ │ │ │ │ └── v3alpha/
│ │ │ │ │ │ ├── BUILD
│ │ │ │ │ │ └── postgres_proxy.proto
│ │ │ │ │ ├── ratelimit/
│ │ │ │ │ │ └── v3/
│ │ │ │ │ │ ├── BUILD
│ │ │ │ │ │ └── rate_limit.proto
│ │ │ │ │ ├── rbac/
│ │ │ │ │ │ ├── v3/
│ │ │ │ │ │ │ ├── BUILD
│ │ │ │ │ │ │ └── rbac.proto
│ │ │ │ │ │ └── v4alpha/
│ │ │ │ │ │ ├── BUILD
│ │ │ │ │ │ └── rbac.proto
│ │ │ │ │ ├── redis_proxy/
│ │ │ │ │ │ └── v3/
│ │ │ │ │ │ ├── BUILD
│ │ │ │ │ │ └── redis_proxy.proto
│ │ │ │ │ ├── rocketmq_proxy/
│ │ │ │ │ │ ├── v3/
│ │ │ │ │ │ │ ├── BUILD
│ │ │ │ │ │ │ ├── README.md
│ │ │ │ │ │ │ ├── rocketmq_proxy.proto
│ │ │ │ │ │ │ └── route.proto
│ │ │ │ │ │ └── v4alpha/
│ │ │ │ │ │ ├── BUILD
│ │ │ │ │ │ ├── rocketmq_proxy.proto
│ │ │ │ │ │ └── route.proto
│ │ │ │ │ ├── sni_cluster/
│ │ │ │ │ │ └── v3/
│ │ │ │ │ │ ├── BUILD
│ │ │ │ │ │ └── sni_cluster.proto
│ │ │ │ │ ├── sni_dynamic_forward_proxy/
│ │ │ │ │ │ └── v3alpha/
│ │ │ │ │ │ ├── BUILD
│ │ │ │ │ │ └── sni_dynamic_forward_proxy.proto
│ │ │ │ │ ├── tcp_proxy/
│ │ │ │ │ │ ├── v3/
│ │ │ │ │ │ │ ├── BUILD
│ │ │ │ │ │ │ └── tcp_proxy.proto
│ │ │ │ │ │ └── v4alpha/
│ │ │ │ │ │ ├── BUILD
│ │ │ │ │ │ └── tcp_proxy.proto
│ │ │ │ │ ├── thrift_proxy/
│ │ │ │ │ │ ├── filters/
│ │ │ │ │ │ │ └── ratelimit/
│ │ │ │ │ │ │ └── v3/
│ │ │ │ │ │ │ ├── BUILD
│ │ │ │ │ │ │ └── rate_limit.proto
│ │ │ │ │ │ ├── v3/
│ │ │ │ │ │ │ ├── BUILD
│ │ │ │ │ │ │ ├── README.md
│ │ │ │ │ │ │ ├── route.proto
│ │ │ │ │ │ │ └── thrift_proxy.proto
│ │ │ │ │ │ └── v4alpha/
│ │ │ │ │ │ ├── BUILD
│ │ │ │ │ │ ├── route.proto
│ │ │ │ │ │ └── thrift_proxy.proto
│ │ │ │ │ ├── wasm/
│ │ │ │ │ │ └── v3/
│ │ │ │ │ │ ├── BUILD
│ │ │ │ │ │ └── wasm.proto
│ │ │ │ │ └── zookeeper_proxy/
│ │ │ │ │ └── v3/
│ │ │ │ │ ├── BUILD
│ │ │ │ │ └── zookeeper_proxy.proto
│ │ │ │ └── udp/
│ │ │ │ ├── dns_filter/
│ │ │ │ │ ├── v3alpha/
│ │ │ │ │ │ ├── BUILD
│ │ │ │ │ │ └── dns_filter.proto
│ │ │ │ │ └── v4alpha/
│ │ │ │ │ ├── BUILD
│ │ │ │ │ └── dns_filter.proto
│ │ │ │ └── udp_proxy/
│ │ │ │ └── v3/
│ │ │ │ ├── BUILD
│ │ │ │ └── udp_proxy.proto
│ │ │ ├── internal_redirect/
│ │ │ │ ├── allow_listed_routes/
│ │ │ │ │ └── v3/
│ │ │ │ │ ├── BUILD
│ │ │ │ │ └── allow_listed_routes_config.proto
│ │ │ │ ├── previous_routes/
│ │ │ │ │ └── v3/
│ │ │ │ │ ├── BUILD
│ │ │ │ │ └── previous_routes_config.proto
│ │ │ │ └── safe_cross_scheme/
│ │ │ │ └── v3/
│ │ │ │ ├── BUILD
│ │ │ │ └── safe_cross_scheme_config.proto
│ │ │ ├── network/
│ │ │ │ └── socket_interface/
│ │ │ │ └── v3/
│ │ │ │ ├── BUILD
│ │ │ │ └── default_socket_interface.proto
│ │ │ ├── retry/
│ │ │ │ ├── host/
│ │ │ │ │ └── omit_host_metadata/
│ │ │ │ │ └── v3/
│ │ │ │ │ ├── BUILD
│ │ │ │ │ └── omit_host_metadata_config.proto
│ │ │ │ └── priority/
│ │ │ │ └── previous_priorities/
│ │ │ │ └── v3/
│ │ │ │ ├── BUILD
│ │ │ │ └── previous_priorities_config.proto
│ │ │ ├── stat_sinks/
│ │ │ │ └── wasm/
│ │ │ │ └── v3/
│ │ │ │ ├── BUILD
│ │ │ │ └── wasm.proto
│ │ │ ├── tracers/
│ │ │ │ ├── datadog/
│ │ │ │ │ └── v4alpha/
│ │ │ │ │ ├── BUILD
│ │ │ │ │ └── datadog.proto
│ │ │ │ ├── dynamic_ot/
│ │ │ │ │ └── v4alpha/
│ │ │ │ │ ├── BUILD
│ │ │ │ │ └── dynamic_ot.proto
│ │ │ │ ├── lightstep/
│ │ │ │ │ └── v4alpha/
│ │ │ │ │ ├── BUILD
│ │ │ │ │ └── lightstep.proto
│ │ │ │ ├── opencensus/
│ │ │ │ │ └── v4alpha/
│ │ │ │ │ ├── BUILD
│ │ │ │ │ └── opencensus.proto
│ │ │ │ ├── xray/
│ │ │ │ │ └── v4alpha/
│ │ │ │ │ ├── BUILD
│ │ │ │ │ └── xray.proto
│ │ │ │ └── zipkin/
│ │ │ │ └── v4alpha/
│ │ │ │ ├── BUILD
│ │ │ │ └── zipkin.proto
│ │ │ ├── transport_sockets/
│ │ │ │ ├── alts/
│ │ │ │ │ └── v3/
│ │ │ │ │ ├── BUILD
│ │ │ │ │ └── alts.proto
│ │ │ │ ├── proxy_protocol/
│ │ │ │ │ └── v3/
│ │ │ │ │ ├── BUILD
│ │ │ │ │ └── upstream_proxy_protocol.proto
│ │ │ │ ├── quic/
│ │ │ │ │ ├── v3/
│ │ │ │ │ │ ├── BUILD
│ │ │ │ │ │ └── quic_transport.proto
│ │ │ │ │ └── v4alpha/
│ │ │ │ │ ├── BUILD
│ │ │ │ │ └── quic_transport.proto
│ │ │ │ ├── raw_buffer/
│ │ │ │ │ └── v3/
│ │ │ │ │ ├── BUILD
│ │ │ │ │ └── raw_buffer.proto
│ │ │ │ ├── tap/
│ │ │ │ │ ├── v3/
│ │ │ │ │ │ ├── BUILD
│ │ │ │ │ │ └── tap.proto
│ │ │ │ │ └── v4alpha/
│ │ │ │ │ ├── BUILD
│ │ │ │ │ └── tap.proto
│ │ │ │ └── tls/
│ │ │ │ ├── v3/
│ │ │ │ │ ├── BUILD
│ │ │ │ │ ├── cert.proto
│ │ │ │ │ ├── common.proto
│ │ │ │ │ ├── secret.proto
│ │ │ │ │ └── tls.proto
│ │ │ │ └── v4alpha/
│ │ │ │ ├── BUILD
│ │ │ │ ├── common.proto
│ │ │ │ ├── secret.proto
│ │ │ │ └── tls.proto
│ │ │ ├── upstreams/
│ │ │ │ └── http/
│ │ │ │ ├── generic/
│ │ │ │ │ └── v3/
│ │ │ │ │ ├── BUILD
│ │ │ │ │ └── generic_connection_pool.proto
│ │ │ │ ├── http/
│ │ │ │ │ └── v3/
│ │ │ │ │ ├── BUILD
│ │ │ │ │ └── http_connection_pool.proto
│ │ │ │ └── tcp/
│ │ │ │ └── v3/
│ │ │ │ ├── BUILD
│ │ │ │ └── tcp_connection_pool.proto
│ │ │ ├── wasm/
│ │ │ │ └── v3/
│ │ │ │ ├── BUILD
│ │ │ │ └── wasm.proto
│ │ │ └── watchdog/
│ │ │ ├── abort_action/
│ │ │ │ └── v3alpha/
│ │ │ │ ├── BUILD
│ │ │ │ └── abort_action.proto
│ │ │ └── profile_action/
│ │ │ └── v3alpha/
│ │ │ ├── BUILD
│ │ │ └── profile_action.proto
│ │ ├── service/
│ │ │ ├── README.md
│ │ │ ├── accesslog/
│ │ │ │ ├── v2/
│ │ │ │ │ ├── BUILD
│ │ │ │ │ └── als.proto
│ │ │ │ ├── v3/
│ │ │ │ │ ├── BUILD
│ │ │ │ │ └── als.proto
│ │ │ │ └── v4alpha/
│ │ │ │ ├── BUILD
│ │ │ │ └── als.proto
│ │ │ ├── auth/
│ │ │ │ ├── v2/
│ │ │ │ │ ├── BUILD
│ │ │ │ │ ├── attribute_context.proto
│ │ │ │ │ └── external_auth.proto
│ │ │ │ ├── v2alpha/
│ │ │ │ │ ├── BUILD
│ │ │ │ │ └── external_auth.proto
│ │ │ │ ├── v3/
│ │ │ │ │ ├── BUILD
│ │ │ │ │ ├── attribute_context.proto
│ │ │ │ │ └── external_auth.proto
│ │ │ │ └── v4alpha/
│ │ │ │ ├── BUILD
│ │ │ │ ├── attribute_context.proto
│ │ │ │ └── external_auth.proto
│ │ │ ├── cluster/
│ │ │ │ └── v3/
│ │ │ │ ├── BUILD
│ │ │ │ └── cds.proto
│ │ │ ├── discovery/
│ │ │ │ ├── v2/
│ │ │ │ │ ├── BUILD
│ │ │ │ │ ├── ads.proto
│ │ │ │ │ ├── hds.proto
│ │ │ │ │ ├── rtds.proto
│ │ │ │ │ └── sds.proto
│ │ │ │ ├── v3/
│ │ │ │ │ ├── BUILD
│ │ │ │ │ ├── ads.proto
│ │ │ │ │ └── discovery.proto
│ │ │ │ └── v4alpha/
│ │ │ │ ├── BUILD
│ │ │ │ ├── ads.proto
│ │ │ │ └── discovery.proto
│ │ │ ├── endpoint/
│ │ │ │ └── v3/
│ │ │ │ ├── BUILD
│ │ │ │ └── eds.proto
│ │ │ ├── event_reporting/
│ │ │ │ ├── v2alpha/
│ │ │ │ │ ├── BUILD
│ │ │ │ │ └── event_reporting_service.proto
│ │ │ │ ├── v3/
│ │ │ │ │ ├── BUILD
│ │ │ │ │ └── event_reporting_service.proto
│ │ │ │ └── v4alpha/
│ │ │ │ ├── BUILD
│ │ │ │ └── event_reporting_service.proto
│ │ │ ├── extension/
│ │ │ │ └── v3/
│ │ │ │ ├── BUILD
│ │ │ │ └── config_discovery.proto
│ │ │ ├── health/
│ │ │ │ ├── v3/
│ │ │ │ │ ├── BUILD
│ │ │ │ │ └── hds.proto
│ │ │ │ └── v4alpha/
│ │ │ │ ├── BUILD
│ │ │ │ └── hds.proto
│ │ │ ├── listener/
│ │ │ │ └── v3/
│ │ │ │ ├── BUILD
│ │ │ │ └── lds.proto
│ │ │ ├── load_stats/
│ │ │ │ ├── v2/
│ │ │ │ │ ├── BUILD
│ │ │ │ │ └── lrs.proto
│ │ │ │ ├── v3/
│ │ │ │ │ ├── BUILD
│ │ │ │ │ └── lrs.proto
│ │ │ │ └── v4alpha/
│ │ │ │ ├── BUILD
│ │ │ │ └── lrs.proto
│ │ │ ├── metrics/
│ │ │ │ ├── v2/
│ │ │ │ │ ├── BUILD
│ │ │ │ │ └── metrics_service.proto
│ │ │ │ ├── v3/
│ │ │ │ │ ├── BUILD
│ │ │ │ │ └── metrics_service.proto
│ │ │ │ └── v4alpha/
│ │ │ │ ├── BUILD
│ │ │ │ └── metrics_service.proto
│ │ │ ├── ratelimit/
│ │ │ │ ├── v2/
│ │ │ │ │ ├── BUILD
│ │ │ │ │ └── rls.proto
│ │ │ │ └── v3/
│ │ │ │ ├── BUILD
│ │ │ │ └── rls.proto
│ │ │ ├── route/
│ │ │ │ └── v3/
│ │ │ │ ├── BUILD
│ │ │ │ ├── rds.proto
│ │ │ │ └── srds.proto
│ │ │ ├── runtime/
│ │ │ │ └── v3/
│ │ │ │ ├── BUILD
│ │ │ │ └── rtds.proto
│ │ │ ├── secret/
│ │ │ │ └── v3/
│ │ │ │ ├── BUILD
│ │ │ │ └── sds.proto
│ │ │ ├── status/
│ │ │ │ ├── v2/
│ │ │ │ │ ├── BUILD
│ │ │ │ │ └── csds.proto
│ │ │ │ ├── v3/
│ │ │ │ │ ├── BUILD
│ │ │ │ │ └── csds.proto
│ │ │ │ └── v4alpha/
│ │ │ │ ├── BUILD
│ │ │ │ └── csds.proto
│ │ │ ├── tap/
│ │ │ │ ├── v2alpha/
│ │ │ │ │ ├── BUILD
│ │ │ │ │ ├── common.proto
│ │ │ │ │ └── tap.proto
│ │ │ │ ├── v3/
│ │ │ │ │ ├── BUILD
│ │ │ │ │ └── tap.proto
│ │ │ │ └── v4alpha/
│ │ │ │ ├── BUILD
│ │ │ │ └── tap.proto
│ │ │ └── trace/
│ │ │ ├── v2/
│ │ │ │ ├── BUILD
│ │ │ │ └── trace_service.proto
│ │ │ ├── v3/
│ │ │ │ ├── BUILD
│ │ │ │ └── trace_service.proto
│ │ │ └── v4alpha/
│ │ │ ├── BUILD
│ │ │ └── trace_service.proto
│ │ └── type/
│ │ ├── BUILD
│ │ ├── hash_policy.proto
│ │ ├── http.proto
│ │ ├── http_status.proto
│ │ ├── matcher/
│ │ │ ├── BUILD
│ │ │ ├── metadata.proto
│ │ │ ├── node.proto
│ │ │ ├── number.proto
│ │ │ ├── path.proto
│ │ │ ├── regex.proto
│ │ │ ├── string.proto
│ │ │ ├── struct.proto
│ │ │ ├── v3/
│ │ │ │ ├── BUILD
│ │ │ │ ├── metadata.proto
│ │ │ │ ├── node.proto
│ │ │ │ ├── number.proto
│ │ │ │ ├── path.proto
│ │ │ │ ├── regex.proto
│ │ │ │ ├── string.proto
│ │ │ │ ├── struct.proto
│ │ │ │ └── value.proto
│ │ │ ├── v4alpha/
│ │ │ │ ├── BUILD
│ │ │ │ ├── metadata.proto
│ │ │ │ ├── node.proto
│ │ │ │ ├── number.proto
│ │ │ │ ├── path.proto
│ │ │ │ ├── regex.proto
│ │ │ │ ├── string.proto
│ │ │ │ ├── struct.proto
│ │ │ │ └── value.proto
│ │ │ └── value.proto
│ │ ├── metadata/
│ │ │ ├── v2/
│ │ │ │ ├── BUILD
│ │ │ │ └── metadata.proto
│ │ │ └── v3/
│ │ │ ├── BUILD
│ │ │ └── metadata.proto
│ │ ├── percent.proto
│ │ ├── range.proto
│ │ ├── semantic_version.proto
│ │ ├── token_bucket.proto
│ │ ├── tracing/
│ │ │ ├── v2/
│ │ │ │ ├── BUILD
│ │ │ │ └── custom_tag.proto
│ │ │ └── v3/
│ │ │ ├── BUILD
│ │ │ └── custom_tag.proto
│ │ └── v3/
│ │ ├── BUILD
│ │ ├── hash_policy.proto
│ │ ├── http.proto
│ │ ├── http_status.proto
│ │ ├── percent.proto
│ │ ├── range.proto
│ │ ├── ratelimit_unit.proto
│ │ ├── semantic_version.proto
│ │ └── token_bucket.proto
│ ├── examples/
│ │ └── service_envoy/
│ │ ├── BUILD
│ │ ├── http_connection_manager.pb
│ │ └── listeners.pb
│ ├── test/
│ │ ├── build/
│ │ │ ├── BUILD
│ │ │ ├── build_test.cc
│ │ │ └── go_build_test.go
│ │ └── validate/
│ │ ├── BUILD
│ │ └── pgv_test.cc
│ ├── tools/
│ │ ├── BUILD
│ │ ├── data/
│ │ │ ├── tap2pcap_h2_ipv4.pb_text
│ │ │ └── tap2pcap_h2_ipv4.txt
│ │ ├── generate_listeners.py
│ │ ├── generate_listeners_test.py
│ │ ├── tap2pcap.py
│ │ └── tap2pcap_test.py
│ ├── versioning/
│ │ └── BUILD
│ └── xds_protocol.rst
├── bazel/
│ ├── BUILD
│ ├── DEVELOPER.md
│ ├── EXTERNAL_DEPS.md
│ ├── PPROF.md
│ ├── README.md
│ ├── antlr.patch
│ ├── api_binding.bzl
│ ├── api_repositories.bzl
│ ├── boringssl_static.patch
│ ├── coverage/
│ │ ├── BUILD
│ │ ├── collect_cc_coverage.sh
│ │ └── fuzz_coverage_wrapper.sh
│ ├── crates.bzl
│ ├── dependency_imports.bzl
│ ├── dev_binding.bzl
│ ├── envoy_binary.bzl
│ ├── envoy_build_system.bzl
│ ├── envoy_internal.bzl
│ ├── envoy_library.bzl
│ ├── envoy_select.bzl
│ ├── envoy_test.bzl
│ ├── external/
│ │ ├── BUILD
│ │ ├── boringssl_fips.BUILD
│ │ ├── boringssl_fips.genrule_cmd
│ │ ├── boringssl_fips.patch
│ │ ├── cargo/
│ │ │ ├── BUILD
│ │ │ └── remote/
│ │ │ ├── BUILD
│ │ │ ├── ahash-0.3.8.BUILD
│ │ │ ├── autocfg-1.0.0.BUILD
│ │ │ ├── cfg-if-0.1.10.BUILD
│ │ │ ├── hashbrown-0.7.2.BUILD
│ │ │ ├── libc-0.2.74.BUILD
│ │ │ ├── log-0.4.11.BUILD
│ │ │ ├── memory_units-0.4.0.BUILD
│ │ │ ├── proxy-wasm-0.1.2.BUILD
│ │ │ ├── wee_alloc-0.4.5.BUILD
│ │ │ ├── winapi-0.3.9.BUILD
│ │ │ ├── winapi-i686-pc-windows-gnu-0.4.0.BUILD
│ │ │ └── winapi-x86_64-pc-windows-gnu-0.4.0.BUILD
│ │ ├── compiler_rt.BUILD
│ │ ├── fmtlib.BUILD
│ │ ├── http-parser.BUILD
│ │ ├── kafka_int32.patch
│ │ ├── libcircllhist.BUILD
│ │ ├── libprotobuf_mutator.BUILD
│ │ ├── proxy_wasm_cpp_host.BUILD
│ │ ├── quiche.BUILD
│ │ ├── quiche.genrule_cmd
│ │ ├── rapidjson.BUILD
│ │ ├── spdlog.BUILD
│ │ ├── sqlparser.BUILD
│ │ ├── tclap.BUILD
│ │ ├── twitter_common_finagle_thrift.BUILD
│ │ ├── twitter_common_lang.BUILD
│ │ ├── twitter_common_rpc.BUILD
│ │ ├── wee8.BUILD
│ │ ├── wee8.genrule_cmd
│ │ ├── wee8.patch
│ │ └── xxhash.BUILD
│ ├── foreign_cc/
│ │ ├── BUILD
│ │ ├── llvm.patch
│ │ ├── luajit.patch
│ │ ├── moonjit.patch
│ │ ├── nghttp2.patch
│ │ └── zlib.patch
│ ├── gen_sh_test_runner.sh
│ ├── genrule_repository.bzl
│ ├── get_workspace_status
│ ├── io_opentracing_cpp.patch
│ ├── protobuf.patch
│ ├── repositories.bzl
│ ├── repositories_extra.bzl
│ ├── repository_locations.bzl
│ ├── rules_go.patch
│ ├── setup_clang.sh
│ ├── setup_local_tsan.sh
│ ├── sh_test_wrapper.sh
│ ├── tclap-win64-ull-sizet.patch
│ ├── test/
│ │ ├── BUILD
│ │ └── verify_tap_test.sh
│ ├── test_for_benchmark_wrapper.sh
│ ├── toolchains/
│ │ └── BUILD
│ ├── upb.patch
│ └── wasm/
│ ├── BUILD
│ └── wasm.bzl
├── ci/
│ ├── Dockerfile-envoy
│ ├── Dockerfile-envoy-alpine
│ ├── Dockerfile-envoy-google-vrp
│ ├── README.md
│ ├── WORKSPACE.filter.example
│ ├── api_mirror.sh
│ ├── build_setup.sh
│ ├── check_and_fix_format.sh
│ ├── do_ci.sh
│ ├── do_circle_ci.sh
│ ├── do_coverity_local.sh
│ ├── docker-entrypoint.sh
│ ├── docker_ci.sh
│ ├── docker_rebuild_google-vrp.sh
│ ├── envoy_build_sha.sh
│ ├── filter_example_mirror.sh
│ ├── filter_example_setup.sh
│ ├── flaky_test/
│ │ ├── process_xml.py
│ │ ├── requirements.txt
│ │ ├── run_process_xml.sh
│ │ └── run_process_xml_mac.sh
│ ├── go_mirror.sh
│ ├── mac_ci_setup.sh
│ ├── mac_ci_steps.sh
│ ├── repokitteh/
│ │ └── modules/
│ │ ├── azure_pipelines.star
│ │ └── ownerscheck.star
│ ├── run_clang_tidy.sh
│ ├── run_envoy_docker.sh
│ ├── setup_cache.sh
│ ├── upload_gcs_artifact.sh
│ ├── verify_examples.sh
│ └── windows_ci_steps.sh
├── configs/
│ ├── BUILD
│ ├── Dockerfile
│ ├── access_log_format_helper_v2.template.yaml
│ ├── configgen.py
│ ├── configgen.sh
│ ├── encapsulate_in_connect.v3.yaml
│ ├── envoy_double_proxy_v2.template.yaml
│ ├── envoy_front_proxy_v2.template.yaml
│ ├── envoy_router_v2.template.yaml
│ ├── envoy_service_to_service_v2.template.yaml
│ ├── freebind/
│ │ ├── README.md
│ │ └── freebind.yaml
│ ├── google-vrp/
│ │ ├── envoy-edge.yaml
│ │ ├── envoy-origin.yaml
│ │ ├── launch_envoy.sh
│ │ └── supervisor.conf
│ ├── google_com_proxy.v2.yaml
│ ├── original-dst-cluster/
│ │ ├── README.md
│ │ ├── netns_cleanup.sh
│ │ ├── netns_setup.sh
│ │ └── proxy_config.yaml
│ ├── requirements.txt
│ ├── routing_helper_v2.template.yaml
│ ├── terminate_connect.v3.yaml
│ └── using_deprecated_config.v2.yaml
├── docs/
│ ├── BUILD
│ ├── README.md
│ ├── _ext/
│ │ └── validating_code_block.py
│ ├── build.sh
│ ├── conf.py
│ ├── empty_extensions.json
│ ├── generate_extension_db.py
│ ├── generate_extension_rst.py
│ ├── generate_external_dep_rst.py
│ ├── protodoc_manifest.yaml
│ ├── publish.sh
│ ├── requirements.txt
│ └── root/
│ ├── _static/
│ │ ├── css/
│ │ │ └── envoy.css
│ │ ├── placeholder
│ │ └── searchtools.js
│ ├── about_docs.rst
│ ├── api/
│ │ ├── api.rst
│ │ ├── api_supported_versions.rst
│ │ └── client_features.rst
│ ├── api-v2/
│ │ ├── admin/
│ │ │ └── admin.rst
│ │ ├── api.rst
│ │ ├── bootstrap/
│ │ │ └── bootstrap.rst
│ │ ├── clusters/
│ │ │ └── clusters.rst
│ │ ├── common_messages/
│ │ │ └── common_messages.rst
│ │ ├── config/
│ │ │ ├── accesslog/
│ │ │ │ └── accesslog.rst
│ │ │ ├── cluster/
│ │ │ │ └── cluster.rst
│ │ │ ├── common/
│ │ │ │ └── common.rst
│ │ │ ├── config.rst
│ │ │ ├── filter/
│ │ │ │ ├── dubbo/
│ │ │ │ │ └── dubbo.rst
│ │ │ │ ├── filter.rst
│ │ │ │ ├── http/
│ │ │ │ │ └── http.rst
│ │ │ │ ├── listener/
│ │ │ │ │ └── listener.rst
│ │ │ │ ├── network/
│ │ │ │ │ └── network.rst
│ │ │ │ ├── thrift/
│ │ │ │ │ └── thrift.rst
│ │ │ │ └── udp/
│ │ │ │ └── udp.rst
│ │ │ ├── grpc_credential/
│ │ │ │ └── grpc_credential.rst
│ │ │ ├── health_checker/
│ │ │ │ └── health_checker.rst
│ │ │ ├── listener/
│ │ │ │ └── listener.rst
│ │ │ ├── rbac/
│ │ │ │ └── rbac.rst
│ │ │ ├── resource_monitor/
│ │ │ │ └── resource_monitor.rst
│ │ │ ├── retry/
│ │ │ │ └── retry.rst
│ │ │ ├── trace/
│ │ │ │ └── trace.rst
│ │ │ └── transport_socket/
│ │ │ └── transport_socket.rst
│ │ ├── data/
│ │ │ ├── accesslog/
│ │ │ │ └── accesslog.rst
│ │ │ ├── cluster/
│ │ │ │ └── cluster.rst
│ │ │ ├── core/
│ │ │ │ └── core.rst
│ │ │ ├── data.rst
│ │ │ ├── dns/
│ │ │ │ └── dns.rst
│ │ │ └── tap/
│ │ │ └── tap.rst
│ │ ├── http_routes/
│ │ │ └── http_routes.rst
│ │ ├── listeners/
│ │ │ └── listeners.rst
│ │ ├── service/
│ │ │ └── service.rst
│ │ └── types/
│ │ └── types.rst
│ ├── api-v3/
│ │ ├── admin/
│ │ │ └── admin.rst
│ │ ├── api.rst
│ │ ├── bootstrap/
│ │ │ └── bootstrap.rst
│ │ ├── clusters/
│ │ │ └── clusters.rst
│ │ ├── common_messages/
│ │ │ └── common_messages.rst
│ │ ├── config/
│ │ │ ├── accesslog/
│ │ │ │ └── accesslog.rst
│ │ │ ├── cluster/
│ │ │ │ └── cluster.rst
│ │ │ ├── common/
│ │ │ │ └── common.rst
│ │ │ ├── compression/
│ │ │ │ └── compression.rst
│ │ │ ├── config.rst
│ │ │ ├── endpoint/
│ │ │ │ └── endpoint.rst
│ │ │ ├── filter/
│ │ │ │ ├── dubbo/
│ │ │ │ │ └── dubbo.rst
│ │ │ │ ├── filter.rst
│ │ │ │ ├── http/
│ │ │ │ │ └── http.rst
│ │ │ │ ├── listener/
│ │ │ │ │ └── listener.rst
│ │ │ │ ├── network/
│ │ │ │ │ └── network.rst
│ │ │ │ ├── thrift/
│ │ │ │ │ └── thrift.rst
│ │ │ │ └── udp/
│ │ │ │ └── udp.rst
│ │ │ ├── grpc_credential/
│ │ │ │ └── grpc_credential.rst
│ │ │ ├── health_checker/
│ │ │ │ └── health_checker.rst
│ │ │ ├── internal_redirect/
│ │ │ │ └── internal_redirect.rst
│ │ │ ├── rbac/
│ │ │ │ └── rbac.rst
│ │ │ ├── resource_monitor/
│ │ │ │ └── resource_monitor.rst
│ │ │ ├── retry/
│ │ │ │ └── retry.rst
│ │ │ ├── trace/
│ │ │ │ └── trace.rst
│ │ │ ├── transport_socket/
│ │ │ │ └── transport_socket.rst
│ │ │ ├── upstream/
│ │ │ │ └── upstream.rst
│ │ │ ├── wasm/
│ │ │ │ └── wasm.rst
│ │ │ └── watchdog/
│ │ │ └── watchdog.rst
│ │ ├── data/
│ │ │ ├── accesslog/
│ │ │ │ └── accesslog.rst
│ │ │ ├── cluster/
│ │ │ │ └── cluster.rst
│ │ │ ├── core/
│ │ │ │ └── core.rst
│ │ │ ├── data.rst
│ │ │ ├── dns/
│ │ │ │ └── dns.rst
│ │ │ └── tap/
│ │ │ └── tap.rst
│ │ ├── http_routes/
│ │ │ └── http_routes.rst
│ │ ├── listeners/
│ │ │ └── listeners.rst
│ │ ├── service/
│ │ │ └── service.rst
│ │ └── types/
│ │ └── types.rst
│ ├── configuration/
│ │ ├── advanced/
│ │ │ ├── advanced.rst
│ │ │ └── well_known_dynamic_metadata.rst
│ │ ├── best_practices/
│ │ │ ├── _include/
│ │ │ │ └── edge.yaml
│ │ │ ├── best_practices.rst
│ │ │ ├── edge.rst
│ │ │ └── level_two.rst
│ │ ├── configuration.rst
│ │ ├── http/
│ │ │ ├── http.rst
│ │ │ ├── http_conn_man/
│ │ │ │ ├── header_casing.rst
│ │ │ │ ├── header_sanitizing.rst
│ │ │ │ ├── headers.rst
│ │ │ │ ├── http_conn_man.rst
│ │ │ │ ├── local_reply.rst
│ │ │ │ ├── overview.rst
│ │ │ │ ├── rds.rst
│ │ │ │ ├── response_code_details.rst
│ │ │ │ ├── route_matching.rst
│ │ │ │ ├── runtime.rst
│ │ │ │ ├── stats.rst
│ │ │ │ ├── traffic_splitting.rst
│ │ │ │ └── vhds.rst
│ │ │ └── http_filters/
│ │ │ ├── _include/
│ │ │ │ ├── dns-cache-circuit-breaker.yaml
│ │ │ │ ├── grpc-reverse-bridge-filter.yaml
│ │ │ │ └── grpc-transcoder-filter.yaml
│ │ │ ├── adaptive_concurrency_filter.rst
│ │ │ ├── admission_control_filter.rst
│ │ │ ├── aws_lambda_filter.rst
│ │ │ ├── aws_request_signing_filter.rst
│ │ │ ├── buffer_filter.rst
│ │ │ ├── cdn_loop_filter.rst
│ │ │ ├── compressor_filter.rst
│ │ │ ├── cors_filter.rst
│ │ │ ├── csrf_filter.rst
│ │ │ ├── decompressor_filter.rst
│ │ │ ├── dynamic_forward_proxy_filter.rst
│ │ │ ├── dynamodb_filter.rst
│ │ │ ├── ext_authz_filter.rst
│ │ │ ├── fault_filter.rst
│ │ │ ├── grpc_http1_bridge_filter.rst
│ │ │ ├── grpc_http1_reverse_bridge_filter.rst
│ │ │ ├── grpc_json_transcoder_filter.rst
│ │ │ ├── grpc_stats_filter.rst
│ │ │ ├── grpc_web_filter.rst
│ │ │ ├── gzip_filter.rst
│ │ │ ├── header_to_metadata_filter.rst
│ │ │ ├── health_check_filter.rst
│ │ │ ├── http_filters.rst
│ │ │ ├── ip_tagging_filter.rst
│ │ │ ├── jwt_authn_filter.rst
│ │ │ ├── local_rate_limit_filter.rst
│ │ │ ├── lua_filter.rst
│ │ │ ├── oauth2_filter.rst
│ │ │ ├── on_demand_updates_filter.rst
│ │ │ ├── original_src_filter.rst
│ │ │ ├── rate_limit_filter.rst
│ │ │ ├── rbac_filter.rst
│ │ │ ├── router_filter.rst
│ │ │ ├── squash_filter.rst
│ │ │ ├── tap_filter.rst
│ │ │ └── wasm_filter.rst
│ │ ├── listeners/
│ │ │ ├── lds.rst
│ │ │ ├── listener_filters/
│ │ │ │ ├── http_inspector.rst
│ │ │ │ ├── listener_filters.rst
│ │ │ │ ├── original_dst_filter.rst
│ │ │ │ ├── original_src_filter.rst
│ │ │ │ ├── proxy_protocol.rst
│ │ │ │ └── tls_inspector.rst
│ │ │ ├── listeners.rst
│ │ │ ├── network_filters/
│ │ │ │ ├── _include/
│ │ │ │ │ └── sni-dynamic-forward-proxy-filter.yaml
│ │ │ │ ├── client_ssl_auth_filter.rst
│ │ │ │ ├── direct_response_filter.rst
│ │ │ │ ├── dubbo_proxy_filter.rst
│ │ │ │ ├── echo_filter.rst
│ │ │ │ ├── ext_authz_filter.rst
│ │ │ │ ├── kafka_broker_filter.rst
│ │ │ │ ├── local_rate_limit_filter.rst
│ │ │ │ ├── mongo_proxy_filter.rst
│ │ │ │ ├── mysql_proxy_filter.rst
│ │ │ │ ├── network_filters.rst
│ │ │ │ ├── postgres_proxy_filter.rst
│ │ │ │ ├── rate_limit_filter.rst
│ │ │ │ ├── rbac_filter.rst
│ │ │ │ ├── redis_proxy_filter.rst
│ │ │ │ ├── rocketmq_proxy_filter.rst
│ │ │ │ ├── sni_cluster_filter.rst
│ │ │ │ ├── sni_dynamic_forward_proxy_filter.rst
│ │ │ │ ├── tcp_proxy_filter.rst
│ │ │ │ ├── thrift_proxy_filter.rst
│ │ │ │ ├── wasm_filter.rst
│ │ │ │ └── zookeeper_proxy_filter.rst
│ │ │ ├── overview.rst
│ │ │ ├── runtime.rst
│ │ │ ├── stats.rst
│ │ │ └── udp_filters/
│ │ │ ├── _include/
│ │ │ │ └── udp-proxy.yaml
│ │ │ ├── dns_filter.rst
│ │ │ ├── udp_filters.rst
│ │ │ └── udp_proxy.rst
│ │ ├── observability/
│ │ │ ├── access_log/
│ │ │ │ ├── access_log.rst
│ │ │ │ ├── overview.rst
│ │ │ │ ├── stats.rst
│ │ │ │ └── usage.rst
│ │ │ ├── application_logging.rst
│ │ │ ├── observability.rst
│ │ │ └── statistics.rst
│ │ ├── operations/
│ │ │ ├── operations.rst
│ │ │ ├── overload_manager/
│ │ │ │ └── overload_manager.rst
│ │ │ ├── runtime.rst
│ │ │ └── tools/
│ │ │ └── router_check.rst
│ │ ├── other_features/
│ │ │ ├── other_features.rst
│ │ │ ├── rate_limit.rst
│ │ │ ├── wasm.rst
│ │ │ └── wasm_stat_sink.rst
│ │ ├── other_protocols/
│ │ │ ├── dubbo_filters/
│ │ │ │ ├── dubbo_filters.rst
│ │ │ │ └── router_filter.rst
│ │ │ ├── other_protocols.rst
│ │ │ └── thrift_filters/
│ │ │ ├── rate_limit_filter.rst
│ │ │ ├── router_filter.rst
│ │ │ └── thrift_filters.rst
│ │ ├── overview/
│ │ │ ├── bootstrap.rst
│ │ │ ├── examples.rst
│ │ │ ├── extension.rst
│ │ │ ├── introduction.rst
│ │ │ ├── mgmt_server.rst
│ │ │ ├── overview.rst
│ │ │ ├── versioning.rst
│ │ │ └── xds_api.rst
│ │ ├── security/
│ │ │ ├── secret.rst
│ │ │ └── security.rst
│ │ └── upstream/
│ │ ├── cluster_manager/
│ │ │ ├── cds.rst
│ │ │ ├── cluster_circuit_breakers.rst
│ │ │ ├── cluster_hc.rst
│ │ │ ├── cluster_manager.rst
│ │ │ ├── cluster_runtime.rst
│ │ │ ├── cluster_stats.rst
│ │ │ └── overview.rst
│ │ ├── health_checkers/
│ │ │ ├── health_checkers.rst
│ │ │ └── redis.rst
│ │ └── upstream.rst
│ ├── extending/
│ │ └── extending.rst
│ ├── faq/
│ │ ├── api/
│ │ │ ├── control_plane.rst
│ │ │ ├── control_plane_version_support.rst
│ │ │ ├── envoy_upgrade_v3.rst
│ │ │ ├── envoy_v2_support.rst
│ │ │ ├── envoy_v3.rst
│ │ │ ├── extensions.rst
│ │ │ ├── incremental.rst
│ │ │ ├── package_naming.rst
│ │ │ └── why_versioning.rst
│ │ ├── build/
│ │ │ ├── binaries.rst
│ │ │ └── boringssl.rst
│ │ ├── configuration/
│ │ │ ├── deprecation.rst
│ │ │ ├── edge.rst
│ │ │ ├── flow_control.rst
│ │ │ ├── level_two.rst
│ │ │ ├── resource_limits.rst
│ │ │ ├── sni.rst
│ │ │ ├── timeouts.rst
│ │ │ ├── zipkin_tracing.rst
│ │ │ └── zone_aware_routing.rst
│ │ ├── debugging/
│ │ │ ├── why_is_envoy_404ing_connect_requests.rst
│ │ │ ├── why_is_envoy_sending_413s.rst
│ │ │ ├── why_is_envoy_sending_http2_resets.rst
│ │ │ ├── why_is_envoy_sending_internal_responses.rst
│ │ │ └── why_is_my_route_not_found.rst
│ │ ├── extensions/
│ │ │ └── contract.rst
│ │ ├── load_balancing/
│ │ │ ├── concurrency_lb.rst
│ │ │ ├── disable_circuit_breaking.rst
│ │ │ ├── lb_panic_threshold.rst
│ │ │ ├── region_failover.rst
│ │ │ └── transient_failures.rst
│ │ ├── overview.rst
│ │ └── performance/
│ │ ├── how_fast_is_envoy.rst
│ │ └── how_to_benchmark_envoy.rst
│ ├── index.rst
│ ├── install/
│ │ ├── building.rst
│ │ ├── install.rst
│ │ ├── ref_configs.rst
│ │ ├── sandboxes/
│ │ │ └── local_docker_build.rst
│ │ └── tools/
│ │ ├── config_load_check_tool.rst
│ │ ├── route_table_check_tool.rst
│ │ ├── schema_validator_check_tool.rst
│ │ └── tools.rst
│ ├── intro/
│ │ ├── _include/
│ │ │ └── life-of-a-request.yaml
│ │ ├── arch_overview/
│ │ │ ├── advanced/
│ │ │ │ ├── advanced.rst
│ │ │ │ └── data_sharing_between_filters.rst
│ │ │ ├── arch_overview.rst
│ │ │ ├── http/
│ │ │ │ ├── http.rst
│ │ │ │ ├── http_connection_management.rst
│ │ │ │ ├── http_filters.rst
│ │ │ │ ├── http_proxy.rst
│ │ │ │ ├── http_routing.rst
│ │ │ │ └── upgrades.rst
│ │ │ ├── intro/
│ │ │ │ ├── intro.rst
│ │ │ │ ├── terminology.rst
│ │ │ │ └── threading_model.rst
│ │ │ ├── listeners/
│ │ │ │ ├── dns_filter.rst
│ │ │ │ ├── listener_filters.rst
│ │ │ │ ├── listeners.rst
│ │ │ │ ├── listeners_toc.rst
│ │ │ │ ├── network_filters.rst
│ │ │ │ ├── tcp_proxy.rst
│ │ │ │ └── udp_proxy.rst
│ │ │ ├── observability/
│ │ │ │ ├── access_logging.rst
│ │ │ │ ├── observability.rst
│ │ │ │ ├── statistics.rst
│ │ │ │ └── tracing.rst
│ │ │ ├── operations/
│ │ │ │ ├── draining.rst
│ │ │ │ ├── dynamic_configuration.rst
│ │ │ │ ├── hot_restart.rst
│ │ │ │ ├── init.rst
│ │ │ │ ├── operations.rst
│ │ │ │ ├── overload_manager.rst
│ │ │ │ └── runtime.rst
│ │ │ ├── other_features/
│ │ │ │ ├── compression/
│ │ │ │ │ └── libraries.rst
│ │ │ │ ├── global_rate_limiting.rst
│ │ │ │ ├── ip_transparency.rst
│ │ │ │ ├── local_rate_limiting.rst
│ │ │ │ ├── other_features.rst
│ │ │ │ └── scripting.rst
│ │ │ ├── other_protocols/
│ │ │ │ ├── dynamo.rst
│ │ │ │ ├── grpc.rst
│ │ │ │ ├── mongo.rst
│ │ │ │ ├── other_protocols.rst
│ │ │ │ ├── postgres.rst
│ │ │ │ └── redis.rst
│ │ │ ├── security/
│ │ │ │ ├── _include/
│ │ │ │ │ └── ssl.yaml
│ │ │ │ ├── ext_authz_filter.rst
│ │ │ │ ├── external_deps.rst
│ │ │ │ ├── google_vrp.rst
│ │ │ │ ├── jwt_authn_filter.rst
│ │ │ │ ├── rbac_filter.rst
│ │ │ │ ├── security.rst
│ │ │ │ ├── ssl.rst
│ │ │ │ └── threat_model.rst
│ │ │ └── upstream/
│ │ │ ├── aggregate_cluster.rst
│ │ │ ├── circuit_breaking.rst
│ │ │ ├── cluster_manager.rst
│ │ │ ├── connection_pooling.rst
│ │ │ ├── health_checking.rst
│ │ │ ├── load_balancing/
│ │ │ │ ├── degraded.rst
│ │ │ │ ├── load_balancers.rst
│ │ │ │ ├── load_balancing.rst
│ │ │ │ ├── locality_weight.rst
│ │ │ │ ├── original_dst.rst
│ │ │ │ ├── overprovisioning.rst
│ │ │ │ ├── overview.rst
│ │ │ │ ├── panic_threshold.rst
│ │ │ │ ├── priority.rst
│ │ │ │ ├── subsets.rst
│ │ │ │ └── zone_aware.rst
│ │ │ ├── load_reporting_service.rst
│ │ │ ├── outlier.rst
│ │ │ ├── service_discovery.rst
│ │ │ ├── upstream.rst
│ │ │ └── upstream_filters.rst
│ │ ├── deployment_types/
│ │ │ ├── deployment_types.rst
│ │ │ ├── double_proxy.rst
│ │ │ ├── front_proxy.rst
│ │ │ └── service_to_service.rst
│ │ ├── deprecated.rst
│ │ ├── getting_help.rst
│ │ ├── intro.rst
│ │ ├── life_of_a_request.rst
│ │ ├── version_history.rst
│ │ └── what_is_envoy.rst
│ ├── operations/
│ │ ├── admin.rst
│ │ ├── certificates.rst
│ │ ├── cli.rst
│ │ ├── fs_flags.rst
│ │ ├── hot_restarter.rst
│ │ ├── operations.rst
│ │ ├── performance.rst
│ │ ├── runtime.rst
│ │ ├── stats_overview.rst
│ │ └── traffic_tapping.rst
│ ├── start/
│ │ ├── sandboxes/
│ │ │ ├── _include/
│ │ │ │ └── docker-env-setup.rst
│ │ │ ├── cache.rst
│ │ │ ├── cors.rst
│ │ │ ├── csrf.rst
│ │ │ ├── ext_authz.rst
│ │ │ ├── fault_injection.rst
│ │ │ ├── front_proxy.rst
│ │ │ ├── grpc_bridge.rst
│ │ │ ├── jaeger_native_tracing.rst
│ │ │ ├── jaeger_tracing.rst
│ │ │ ├── load_reporting_service.rst
│ │ │ ├── lua.rst
│ │ │ ├── mysql.rst
│ │ │ ├── redis.rst
│ │ │ └── zipkin_tracing.rst
│ │ └── start.rst
│ └── version_history/
│ ├── current.rst
│ ├── v1.0.0.rst
│ ├── v1.1.0.rst
│ ├── v1.10.0.rst
│ ├── v1.11.0.rst
│ ├── v1.11.1.rst
│ ├── v1.11.2.rst
│ ├── v1.12.0.rst
│ ├── v1.12.1.rst
│ ├── v1.12.2.rst
│ ├── v1.12.3.rst
│ ├── v1.12.4.rst
│ ├── v1.12.5.rst
│ ├── v1.12.6.rst
│ ├── v1.12.7.rst
│ ├── v1.13.0.rst
│ ├── v1.13.1.rst
│ ├── v1.13.2.rst
│ ├── v1.13.3.rst
│ ├── v1.13.4.rst
│ ├── v1.13.5.rst
│ ├── v1.13.6.rst
│ ├── v1.14.0.rst
│ ├── v1.14.1.rst
│ ├── v1.14.2.rst
│ ├── v1.14.3.rst
│ ├── v1.14.4.rst
│ ├── v1.14.5.rst
│ ├── v1.15.0.rst
│ ├── v1.15.1.rst
│ ├── v1.15.2.rst
│ ├── v1.2.0.rst
│ ├── v1.3.0.rst
│ ├── v1.4.0.rst
│ ├── v1.5.0.rst
│ ├── v1.6.0.rst
│ ├── v1.7.0.rst
│ ├── v1.8.0.rst
│ ├── v1.9.0.rst
│ ├── v1.9.1.rst
│ └── version_history.rst
├── examples/
│ ├── BUILD
│ ├── DEVELOPER.md
│ ├── cache/
│ │ ├── Dockerfile-frontenvoy
│ │ ├── Dockerfile-service
│ │ ├── README.md
│ │ ├── docker-compose.yaml
│ │ ├── front-envoy.yaml
│ │ ├── responses.yaml
│ │ ├── service-envoy.yaml
│ │ ├── service.py
│ │ ├── start_service.sh
│ │ └── verify.sh
│ ├── cors/
│ │ ├── README.md
│ │ ├── backend/
│ │ │ ├── Dockerfile-frontenvoy
│ │ │ ├── Dockerfile-service
│ │ │ ├── docker-compose.yaml
│ │ │ ├── front-envoy.yaml
│ │ │ ├── service-envoy.yaml
│ │ │ ├── service.py
│ │ │ └── start_service.sh
│ │ ├── frontend/
│ │ │ ├── Dockerfile-frontenvoy
│ │ │ ├── Dockerfile-service
│ │ │ ├── docker-compose.yaml
│ │ │ ├── front-envoy.yaml
│ │ │ ├── index.html
│ │ │ ├── service-envoy.yaml
│ │ │ ├── service.py
│ │ │ └── start_service.sh
│ │ └── verify.sh
│ ├── csrf/
│ │ ├── README.md
│ │ ├── crosssite/
│ │ │ ├── Dockerfile-frontenvoy
│ │ │ ├── Dockerfile-service
│ │ │ ├── docker-compose.yml
│ │ │ ├── front-envoy.yaml
│ │ │ └── service.py
│ │ ├── index.html
│ │ ├── samesite/
│ │ │ ├── Dockerfile-frontenvoy
│ │ │ ├── Dockerfile-service
│ │ │ ├── docker-compose.yml
│ │ │ ├── front-envoy.yaml
│ │ │ └── service.py
│ │ ├── service-envoy.yaml
│ │ ├── start_service.sh
│ │ └── verify.sh
│ ├── ext_authz/
│ │ ├── Dockerfile-frontenvoy
│ │ ├── README.md
│ │ ├── auth/
│ │ │ ├── grpc-service/
│ │ │ │ ├── Dockerfile
│ │ │ │ ├── Makefile
│ │ │ │ ├── go.mod
│ │ │ │ ├── go.sum
│ │ │ │ ├── main.go
│ │ │ │ └── pkg/
│ │ │ │ └── auth/
│ │ │ │ ├── users.go
│ │ │ │ ├── v2/
│ │ │ │ │ └── auth.go
│ │ │ │ └── v3/
│ │ │ │ └── auth.go
│ │ │ ├── http-service/
│ │ │ │ ├── Dockerfile
│ │ │ │ └── server.js
│ │ │ └── users.json
│ │ ├── config/
│ │ │ ├── grpc-service/
│ │ │ │ ├── v2.yaml
│ │ │ │ └── v3.yaml
│ │ │ ├── http-service.yaml
│ │ │ └── opa-service/
│ │ │ ├── policy.rego
│ │ │ └── v2.yaml
│ │ ├── docker-compose.yaml
│ │ ├── run_envoy.sh
│ │ ├── upstream/
│ │ │ └── service/
│ │ │ ├── Dockerfile
│ │ │ └── server.py
│ │ ├── users.json
│ │ └── verify.sh
│ ├── fault-injection/
│ │ ├── .gitignore
│ │ ├── Dockerfile-envoy
│ │ ├── README.md
│ │ ├── disable_abort_fault_injection.sh
│ │ ├── disable_delay_fault_injection.sh
│ │ ├── docker-compose.yaml
│ │ ├── enable_abort_fault_injection.sh
│ │ ├── enable_delay_fault_injection.sh
│ │ ├── envoy.yaml
│ │ ├── send_request.sh
│ │ └── verify.sh
│ ├── front-proxy/
│ │ ├── Dockerfile-frontenvoy
│ │ ├── Dockerfile-jaeger-service
│ │ ├── Dockerfile-service
│ │ ├── README.md
│ │ ├── docker-compose.yaml
│ │ ├── front-envoy.yaml
│ │ ├── service-envoy.yaml
│ │ ├── service.py
│ │ ├── start_service.sh
│ │ └── verify.sh
│ ├── grpc-bridge/
│ │ ├── .gitignore
│ │ ├── Dockerfile-client
│ │ ├── Dockerfile-server
│ │ ├── README.md
│ │ ├── client/
│ │ │ ├── Dockerfile
│ │ │ ├── client.py
│ │ │ ├── envoy-proxy.yaml
│ │ │ ├── kv/
│ │ │ │ └── __init__.py
│ │ │ └── requirements.txt
│ │ ├── docker-compose-protos.yaml
│ │ ├── docker-compose.yaml
│ │ ├── protos/
│ │ │ └── kv.proto
│ │ ├── server/
│ │ │ ├── Dockerfile
│ │ │ ├── envoy-proxy.yaml
│ │ │ ├── go.mod
│ │ │ ├── go.sum
│ │ │ ├── kv/
│ │ │ │ └── go.mod
│ │ │ └── service.go
│ │ └── verify.sh
│ ├── jaeger-native-tracing/
│ │ ├── Dockerfile-frontenvoy
│ │ ├── README.md
│ │ ├── docker-compose.yaml
│ │ ├── front-envoy-jaeger.yaml
│ │ ├── install-jaeger-plugin.sh
│ │ ├── service1-envoy-jaeger.yaml
│ │ ├── service2-envoy-jaeger.yaml
│ │ └── verify.sh
│ ├── jaeger-tracing/
│ │ ├── Dockerfile-frontenvoy
│ │ ├── README.md
│ │ ├── docker-compose.yaml
│ │ ├── front-envoy-jaeger.yaml
│ │ ├── service1-envoy-jaeger.yaml
│ │ ├── service2-envoy-jaeger.yaml
│ │ └── verify.sh
│ ├── load-reporting-service/
│ │ ├── Dockerfile-http-server
│ │ ├── Dockerfile-lrs
│ │ ├── README.md
│ │ ├── docker-compose.yaml
│ │ ├── go.mod
│ │ ├── go.sum
│ │ ├── http_server.py
│ │ ├── main.go
│ │ ├── send_requests.sh
│ │ ├── server/
│ │ │ └── lrs_server.go
│ │ ├── service-envoy-w-lrs.yaml
│ │ ├── start_service.sh
│ │ └── verify.sh
│ ├── lua/
│ │ ├── Dockerfile-proxy
│ │ ├── Dockerfile-web-service
│ │ ├── README.md
│ │ ├── docker-compose.yaml
│ │ ├── envoy.yaml
│ │ ├── lib/
│ │ │ └── mylibrary.lua
│ │ └── verify.sh
│ ├── mysql/
│ │ ├── Dockerfile-mysql
│ │ ├── Dockerfile-proxy
│ │ ├── README.md
│ │ ├── docker-compose.yaml
│ │ ├── envoy.yaml
│ │ └── verify.sh
│ ├── redis/
│ │ ├── Dockerfile-proxy
│ │ ├── Dockerfile-redis
│ │ ├── README.md
│ │ ├── docker-compose.yaml
│ │ ├── envoy.yaml
│ │ └── verify.sh
│ ├── verify-common.sh
│ ├── wasm/
│ │ ├── BUILD
│ │ ├── Dockerfile-proxy
│ │ ├── Dockerfile-web-service
│ │ ├── README.md
│ │ ├── docker-compose.yaml
│ │ ├── envoy.yaml
│ │ ├── envoy_filter_http_wasm_example.cc
│ │ └── verify.sh
│ └── zipkin-tracing/
│ ├── Dockerfile-frontenvoy
│ ├── README.md
│ ├── docker-compose.yaml
│ ├── front-envoy-zipkin.yaml
│ ├── service1-envoy-zipkin.yaml
│ ├── service2-envoy-zipkin.yaml
│ └── verify.sh
├── generated_api_shadow/
│ ├── BUILD
│ ├── README.md
│ ├── bazel/
│ │ ├── BUILD
│ │ ├── api_build_system.bzl
│ │ ├── envoy_http_archive.bzl
│ │ ├── external_proto_deps.bzl
│ │ ├── repositories.bzl
│ │ └── repository_locations.bzl
│ └── envoy/
│ ├── admin/
│ │ ├── v2alpha/
│ │ │ ├── BUILD
│ │ │ ├── certs.proto
│ │ │ ├── clusters.proto
│ │ │ ├── config_dump.proto
│ │ │ ├── listeners.proto
│ │ │ ├── memory.proto
│ │ │ ├── metrics.proto
│ │ │ ├── mutex_stats.proto
│ │ │ ├── server_info.proto
│ │ │ └── tap.proto
│ │ ├── v3/
│ │ │ ├── BUILD
│ │ │ ├── certs.proto
│ │ │ ├── clusters.proto
│ │ │ ├── config_dump.proto
│ │ │ ├── init_dump.proto
│ │ │ ├── listeners.proto
│ │ │ ├── memory.proto
│ │ │ ├── metrics.proto
│ │ │ ├── mutex_stats.proto
│ │ │ ├── server_info.proto
│ │ │ └── tap.proto
│ │ └── v4alpha/
│ │ ├── BUILD
│ │ ├── certs.proto
│ │ ├── clusters.proto
│ │ ├── config_dump.proto
│ │ ├── init_dump.proto
│ │ ├── listeners.proto
│ │ ├── memory.proto
│ │ ├── metrics.proto
│ │ ├── mutex_stats.proto
│ │ ├── server_info.proto
│ │ └── tap.proto
│ ├── annotations/
│ │ ├── BUILD
│ │ ├── deprecation.proto
│ │ └── resource.proto
│ ├── api/
│ │ └── v2/
│ │ ├── BUILD
│ │ ├── README.md
│ │ ├── auth/
│ │ │ ├── BUILD
│ │ │ ├── cert.proto
│ │ │ ├── common.proto
│ │ │ ├── secret.proto
│ │ │ └── tls.proto
│ │ ├── cds.proto
│ │ ├── cluster/
│ │ │ ├── BUILD
│ │ │ ├── circuit_breaker.proto
│ │ │ ├── filter.proto
│ │ │ └── outlier_detection.proto
│ │ ├── cluster.proto
│ │ ├── core/
│ │ │ ├── BUILD
│ │ │ ├── address.proto
│ │ │ ├── backoff.proto
│ │ │ ├── base.proto
│ │ │ ├── config_source.proto
│ │ │ ├── event_service_config.proto
│ │ │ ├── grpc_method_list.proto
│ │ │ ├── grpc_service.proto
│ │ │ ├── health_check.proto
│ │ │ ├── http_uri.proto
│ │ │ ├── protocol.proto
│ │ │ └── socket_option.proto
│ │ ├── discovery.proto
│ │ ├── eds.proto
│ │ ├── endpoint/
│ │ │ ├── BUILD
│ │ │ ├── endpoint.proto
│ │ │ ├── endpoint_components.proto
│ │ │ └── load_report.proto
│ │ ├── endpoint.proto
│ │ ├── lds.proto
│ │ ├── listener/
│ │ │ ├── BUILD
│ │ │ ├── listener.proto
│ │ │ ├── listener_components.proto
│ │ │ ├── quic_config.proto
│ │ │ └── udp_listener_config.proto
│ │ ├── listener.proto
│ │ ├── ratelimit/
│ │ │ ├── BUILD
│ │ │ └── ratelimit.proto
│ │ ├── rds.proto
│ │ ├── route/
│ │ │ ├── BUILD
│ │ │ ├── route.proto
│ │ │ └── route_components.proto
│ │ ├── route.proto
│ │ ├── scoped_route.proto
│ │ └── srds.proto
│ ├── config/
│ │ ├── README.md
│ │ ├── accesslog/
│ │ │ ├── v2/
│ │ │ │ ├── BUILD
│ │ │ │ ├── als.proto
│ │ │ │ └── file.proto
│ │ │ ├── v3/
│ │ │ │ ├── BUILD
│ │ │ │ └── accesslog.proto
│ │ │ └── v4alpha/
│ │ │ ├── BUILD
│ │ │ └── accesslog.proto
│ │ ├── bootstrap/
│ │ │ ├── v2/
│ │ │ │ ├── BUILD
│ │ │ │ └── bootstrap.proto
│ │ │ ├── v3/
│ │ │ │ ├── BUILD
│ │ │ │ └── bootstrap.proto
│ │ │ └── v4alpha/
│ │ │ ├── BUILD
│ │ │ └── bootstrap.proto
│ │ ├── cluster/
│ │ │ ├── aggregate/
│ │ │ │ └── v2alpha/
│ │ │ │ ├── BUILD
│ │ │ │ └── cluster.proto
│ │ │ ├── dynamic_forward_proxy/
│ │ │ │ └── v2alpha/
│ │ │ │ ├── BUILD
│ │ │ │ └── cluster.proto
│ │ │ ├── redis/
│ │ │ │ ├── BUILD
│ │ │ │ └── redis_cluster.proto
│ │ │ ├── v3/
│ │ │ │ ├── BUILD
│ │ │ │ ├── circuit_breaker.proto
│ │ │ │ ├── cluster.proto
│ │ │ │ ├── filter.proto
│ │ │ │ └── outlier_detection.proto
│ │ │ └── v4alpha/
│ │ │ ├── BUILD
│ │ │ ├── circuit_breaker.proto
│ │ │ ├── cluster.proto
│ │ │ ├── filter.proto
│ │ │ └── outlier_detection.proto
│ │ ├── common/
│ │ │ ├── dynamic_forward_proxy/
│ │ │ │ └── v2alpha/
│ │ │ │ ├── BUILD
│ │ │ │ └── dns_cache.proto
│ │ │ ├── matcher/
│ │ │ │ ├── v3/
│ │ │ │ │ ├── BUILD
│ │ │ │ │ └── matcher.proto
│ │ │ │ └── v4alpha/
│ │ │ │ ├── BUILD
│ │ │ │ └── matcher.proto
│ │ │ └── tap/
│ │ │ └── v2alpha/
│ │ │ ├── BUILD
│ │ │ └── common.proto
│ │ ├── core/
│ │ │ ├── v3/
│ │ │ │ ├── BUILD
│ │ │ │ ├── address.proto
│ │ │ │ ├── backoff.proto
│ │ │ │ ├── base.proto
│ │ │ │ ├── config_source.proto
│ │ │ │ ├── event_service_config.proto
│ │ │ │ ├── extension.proto
│ │ │ │ ├── grpc_method_list.proto
│ │ │ │ ├── grpc_service.proto
│ │ │ │ ├── health_check.proto
│ │ │ │ ├── http_uri.proto
│ │ │ │ ├── protocol.proto
│ │ │ │ ├── proxy_protocol.proto
│ │ │ │ ├── socket_option.proto
│ │ │ │ └── substitution_format_string.proto
│ │ │ └── v4alpha/
│ │ │ ├── BUILD
│ │ │ ├── address.proto
│ │ │ ├── backoff.proto
│ │ │ ├── base.proto
│ │ │ ├── config_source.proto
│ │ │ ├── event_service_config.proto
│ │ │ ├── extension.proto
│ │ │ ├── grpc_method_list.proto
│ │ │ ├── grpc_service.proto
│ │ │ ├── health_check.proto
│ │ │ ├── http_uri.proto
│ │ │ ├── protocol.proto
│ │ │ ├── proxy_protocol.proto
│ │ │ ├── socket_option.proto
│ │ │ └── substitution_format_string.proto
│ │ ├── endpoint/
│ │ │ └── v3/
│ │ │ ├── BUILD
│ │ │ ├── endpoint.proto
│ │ │ ├── endpoint_components.proto
│ │ │ └── load_report.proto
│ │ ├── filter/
│ │ │ ├── README.md
│ │ │ ├── accesslog/
│ │ │ │ └── v2/
│ │ │ │ ├── BUILD
│ │ │ │ └── accesslog.proto
│ │ │ ├── dubbo/
│ │ │ │ └── router/
│ │ │ │ └── v2alpha1/
│ │ │ │ ├── BUILD
│ │ │ │ └── router.proto
│ │ │ ├── fault/
│ │ │ │ └── v2/
│ │ │ │ ├── BUILD
│ │ │ │ └── fault.proto
│ │ │ ├── http/
│ │ │ │ ├── adaptive_concurrency/
│ │ │ │ │ └── v2alpha/
│ │ │ │ │ ├── BUILD
│ │ │ │ │ └── adaptive_concurrency.proto
│ │ │ │ ├── aws_lambda/
│ │ │ │ │ └── v2alpha/
│ │ │ │ │ ├── BUILD
│ │ │ │ │ └── aws_lambda.proto
│ │ │ │ ├── aws_request_signing/
│ │ │ │ │ └── v2alpha/
│ │ │ │ │ ├── BUILD
│ │ │ │ │ └── aws_request_signing.proto
│ │ │ │ ├── buffer/
│ │ │ │ │ └── v2/
│ │ │ │ │ ├── BUILD
│ │ │ │ │ └── buffer.proto
│ │ │ │ ├── cache/
│ │ │ │ │ └── v2alpha/
│ │ │ │ │ ├── BUILD
│ │ │ │ │ └── cache.proto
│ │ │ │ ├── compressor/
│ │ │ │ │ └── v2/
│ │ │ │ │ ├── BUILD
│ │ │ │ │ └── compressor.proto
│ │ │ │ ├── cors/
│ │ │ │ │ └── v2/
│ │ │ │ │ ├── BUILD
│ │ │ │ │ └── cors.proto
│ │ │ │ ├── csrf/
│ │ │ │ │ └── v2/
│ │ │ │ │ ├── BUILD
│ │ │ │ │ └── csrf.proto
│ │ │ │ ├── dynamic_forward_proxy/
│ │ │ │ │ └── v2alpha/
│ │ │ │ │ ├── BUILD
│ │ │ │ │ └── dynamic_forward_proxy.proto
│ │ │ │ ├── dynamo/
│ │ │ │ │ └── v2/
│ │ │ │ │ ├── BUILD
│ │ │ │ │ └── dynamo.proto
│ │ │ │ ├── ext_authz/
│ │ │ │ │ └── v2/
│ │ │ │ │ ├── BUILD
│ │ │ │ │ └── ext_authz.proto
│ │ │ │ ├── fault/
│ │ │ │ │ └── v2/
│ │ │ │ │ ├── BUILD
│ │ │ │ │ └── fault.proto
│ │ │ │ ├── grpc_http1_bridge/
│ │ │ │ │ └── v2/
│ │ │ │ │ ├── BUILD
│ │ │ │ │ └── config.proto
│ │ │ │ ├── grpc_http1_reverse_bridge/
│ │ │ │ │ └── v2alpha1/
│ │ │ │ │ ├── BUILD
│ │ │ │ │ └── config.proto
│ │ │ │ ├── grpc_stats/
│ │ │ │ │ └── v2alpha/
│ │ │ │ │ ├── BUILD
│ │ │ │ │ └── config.proto
│ │ │ │ ├── grpc_web/
│ │ │ │ │ └── v2/
│ │ │ │ │ ├── BUILD
│ │ │ │ │ └── grpc_web.proto
│ │ │ │ ├── gzip/
│ │ │ │ │ └── v2/
│ │ │ │ │ ├── BUILD
│ │ │ │ │ └── gzip.proto
│ │ │ │ ├── header_to_metadata/
│ │ │ │ │ └── v2/
│ │ │ │ │ ├── BUILD
│ │ │ │ │ └── header_to_metadata.proto
│ │ │ │ ├── health_check/
│ │ │ │ │ └── v2/
│ │ │ │ │ ├── BUILD
│ │ │ │ │ └── health_check.proto
│ │ │ │ ├── ip_tagging/
│ │ │ │ │ └── v2/
│ │ │ │ │ ├── BUILD
│ │ │ │ │ └── ip_tagging.proto
│ │ │ │ ├── jwt_authn/
│ │ │ │ │ └── v2alpha/
│ │ │ │ │ ├── BUILD
│ │ │ │ │ ├── README.md
│ │ │ │ │ └── config.proto
│ │ │ │ ├── lua/
│ │ │ │ │ └── v2/
│ │ │ │ │ ├── BUILD
│ │ │ │ │ └── lua.proto
│ │ │ │ ├── on_demand/
│ │ │ │ │ └── v2/
│ │ │ │ │ ├── BUILD
│ │ │ │ │ └── on_demand.proto
│ │ │ │ ├── original_src/
│ │ │ │ │ └── v2alpha1/
│ │ │ │ │ ├── BUILD
│ │ │ │ │ └── original_src.proto
│ │ │ │ ├── rate_limit/
│ │ │ │ │ └── v2/
│ │ │ │ │ ├── BUILD
│ │ │ │ │ └── rate_limit.proto
│ │ │ │ ├── rbac/
│ │ │ │ │ └── v2/
│ │ │ │ │ ├── BUILD
│ │ │ │ │ └── rbac.proto
│ │ │ │ ├── router/
│ │ │ │ │ └── v2/
│ │ │ │ │ ├── BUILD
│ │ │ │ │ └── router.proto
│ │ │ │ ├── squash/
│ │ │ │ │ └── v2/
│ │ │ │ │ ├── BUILD
│ │ │ │ │ └── squash.proto
│ │ │ │ ├── tap/
│ │ │ │ │ └── v2alpha/
│ │ │ │ │ ├── BUILD
│ │ │ │ │ └── tap.proto
│ │ │ │ └── transcoder/
│ │ │ │ └── v2/
│ │ │ │ ├── BUILD
│ │ │ │ └── transcoder.proto
│ │ │ ├── listener/
│ │ │ │ ├── http_inspector/
│ │ │ │ │ └── v2/
│ │ │ │ │ ├── BUILD
│ │ │ │ │ └── http_inspector.proto
│ │ │ │ ├── original_dst/
│ │ │ │ │ └── v2/
│ │ │ │ │ ├── BUILD
│ │ │ │ │ └── original_dst.proto
│ │ │ │ ├── original_src/
│ │ │ │ │ └── v2alpha1/
│ │ │ │ │ ├── BUILD
│ │ │ │ │ └── original_src.proto
│ │ │ │ ├── proxy_protocol/
│ │ │ │ │ └── v2/
│ │ │ │ │ ├── BUILD
│ │ │ │ │ └── proxy_protocol.proto
│ │ │ │ └── tls_inspector/
│ │ │ │ └── v2/
│ │ │ │ ├── BUILD
│ │ │ │ └── tls_inspector.proto
│ │ │ ├── network/
│ │ │ │ ├── client_ssl_auth/
│ │ │ │ │ └── v2/
│ │ │ │ │ ├── BUILD
│ │ │ │ │ └── client_ssl_auth.proto
│ │ │ │ ├── direct_response/
│ │ │ │ │ └── v2/
│ │ │ │ │ ├── BUILD
│ │ │ │ │ └── config.proto
│ │ │ │ ├── dubbo_proxy/
│ │ │ │ │ └── v2alpha1/
│ │ │ │ │ ├── BUILD
│ │ │ │ │ ├── README.md
│ │ │ │ │ ├── dubbo_proxy.proto
│ │ │ │ │ └── route.proto
│ │ │ │ ├── echo/
│ │ │ │ │ └── v2/
│ │ │ │ │ ├── BUILD
│ │ │ │ │ └── echo.proto
│ │ │ │ ├── ext_authz/
│ │ │ │ │ └── v2/
│ │ │ │ │ ├── BUILD
│ │ │ │ │ └── ext_authz.proto
│ │ │ │ ├── http_connection_manager/
│ │ │ │ │ └── v2/
│ │ │ │ │ ├── BUILD
│ │ │ │ │ └── http_connection_manager.proto
│ │ │ │ ├── kafka_broker/
│ │ │ │ │ └── v2alpha1/
│ │ │ │ │ ├── BUILD
│ │ │ │ │ └── kafka_broker.proto
│ │ │ │ ├── local_rate_limit/
│ │ │ │ │ └── v2alpha/
│ │ │ │ │ ├── BUILD
│ │ │ │ │ └── local_rate_limit.proto
│ │ │ │ ├── mongo_proxy/
│ │ │ │ │ └── v2/
│ │ │ │ │ ├── BUILD
│ │ │ │ │ └── mongo_proxy.proto
│ │ │ │ ├── mysql_proxy/
│ │ │ │ │ └── v1alpha1/
│ │ │ │ │ ├── BUILD
│ │ │ │ │ └── mysql_proxy.proto
│ │ │ │ ├── rate_limit/
│ │ │ │ │ └── v2/
│ │ │ │ │ ├── BUILD
│ │ │ │ │ └── rate_limit.proto
│ │ │ │ ├── rbac/
│ │ │ │ │ └── v2/
│ │ │ │ │ ├── BUILD
│ │ │ │ │ └── rbac.proto
│ │ │ │ ├── redis_proxy/
│ │ │ │ │ └── v2/
│ │ │ │ │ ├── BUILD
│ │ │ │ │ └── redis_proxy.proto
│ │ │ │ ├── sni_cluster/
│ │ │ │ │ └── v2/
│ │ │ │ │ ├── BUILD
│ │ │ │ │ └── sni_cluster.proto
│ │ │ │ ├── tcp_proxy/
│ │ │ │ │ └── v2/
│ │ │ │ │ ├── BUILD
│ │ │ │ │ └── tcp_proxy.proto
│ │ │ │ ├── thrift_proxy/
│ │ │ │ │ └── v2alpha1/
│ │ │ │ │ ├── BUILD
│ │ │ │ │ ├── README.md
│ │ │ │ │ ├── route.proto
│ │ │ │ │ └── thrift_proxy.proto
│ │ │ │ └── zookeeper_proxy/
│ │ │ │ └── v1alpha1/
│ │ │ │ ├── BUILD
│ │ │ │ └── zookeeper_proxy.proto
│ │ │ ├── thrift/
│ │ │ │ ├── rate_limit/
│ │ │ │ │ └── v2alpha1/
│ │ │ │ │ ├── BUILD
│ │ │ │ │ └── rate_limit.proto
│ │ │ │ └── router/
│ │ │ │ └── v2alpha1/
│ │ │ │ ├── BUILD
│ │ │ │ └── router.proto
│ │ │ └── udp/
│ │ │ └── udp_proxy/
│ │ │ └── v2alpha/
│ │ │ ├── BUILD
│ │ │ └── udp_proxy.proto
│ │ ├── grpc_credential/
│ │ │ ├── v2alpha/
│ │ │ │ ├── BUILD
│ │ │ │ ├── aws_iam.proto
│ │ │ │ └── file_based_metadata.proto
│ │ │ └── v3/
│ │ │ ├── BUILD
│ │ │ ├── aws_iam.proto
│ │ │ └── file_based_metadata.proto
│ │ ├── health_checker/
│ │ │ └── redis/
│ │ │ └── v2/
│ │ │ ├── BUILD
│ │ │ └── redis.proto
│ │ ├── listener/
│ │ │ ├── v2/
│ │ │ │ ├── BUILD
│ │ │ │ └── api_listener.proto
│ │ │ ├── v3/
│ │ │ │ ├── BUILD
│ │ │ │ ├── api_listener.proto
│ │ │ │ ├── listener.proto
│ │ │ │ ├── listener_components.proto
│ │ │ │ ├── quic_config.proto
│ │ │ │ ├── udp_default_writer_config.proto
│ │ │ │ ├── udp_gso_batch_writer_config.proto
│ │ │ │ └── udp_listener_config.proto
│ │ │ └── v4alpha/
│ │ │ ├── BUILD
│ │ │ ├── api_listener.proto
│ │ │ ├── listener.proto
│ │ │ ├── listener_components.proto
│ │ │ ├── quic_config.proto
│ │ │ ├── udp_default_writer_config.proto
│ │ │ ├── udp_gso_batch_writer_config.proto
│ │ │ └── udp_listener_config.proto
│ │ ├── metrics/
│ │ │ ├── v2/
│ │ │ │ ├── BUILD
│ │ │ │ ├── metrics_service.proto
│ │ │ │ └── stats.proto
│ │ │ ├── v3/
│ │ │ │ ├── BUILD
│ │ │ │ ├── metrics_service.proto
│ │ │ │ └── stats.proto
│ │ │ └── v4alpha/
│ │ │ ├── BUILD
│ │ │ ├── metrics_service.proto
│ │ │ └── stats.proto
│ │ ├── overload/
│ │ │ ├── v2alpha/
│ │ │ │ ├── BUILD
│ │ │ │ └── overload.proto
│ │ │ └── v3/
│ │ │ ├── BUILD
│ │ │ └── overload.proto
│ │ ├── ratelimit/
│ │ │ ├── v2/
│ │ │ │ ├── BUILD
│ │ │ │ └── rls.proto
│ │ │ └── v3/
│ │ │ ├── BUILD
│ │ │ └── rls.proto
│ │ ├── rbac/
│ │ │ ├── v2/
│ │ │ │ ├── BUILD
│ │ │ │ └── rbac.proto
│ │ │ ├── v3/
│ │ │ │ ├── BUILD
│ │ │ │ └── rbac.proto
│ │ │ └── v4alpha/
│ │ │ ├── BUILD
│ │ │ └── rbac.proto
│ │ ├── resource_monitor/
│ │ │ ├── fixed_heap/
│ │ │ │ └── v2alpha/
│ │ │ │ ├── BUILD
│ │ │ │ └── fixed_heap.proto
│ │ │ └── injected_resource/
│ │ │ └── v2alpha/
│ │ │ ├── BUILD
│ │ │ └── injected_resource.proto
│ │ ├── retry/
│ │ │ ├── omit_canary_hosts/
│ │ │ │ └── v2/
│ │ │ │ ├── BUILD
│ │ │ │ └── omit_canary_hosts.proto
│ │ │ ├── omit_host_metadata/
│ │ │ │ └── v2/
│ │ │ │ ├── BUILD
│ │ │ │ └── omit_host_metadata_config.proto
│ │ │ ├── previous_hosts/
│ │ │ │ └── v2/
│ │ │ │ ├── BUILD
│ │ │ │ └── previous_hosts.proto
│ │ │ └── previous_priorities/
│ │ │ ├── BUILD
│ │ │ └── previous_priorities_config.proto
│ │ ├── route/
│ │ │ ├── v3/
│ │ │ │ ├── BUILD
│ │ │ │ ├── route.proto
│ │ │ │ ├── route_components.proto
│ │ │ │ └── scoped_route.proto
│ │ │ └── v4alpha/
│ │ │ ├── BUILD
│ │ │ ├── route.proto
│ │ │ ├── route_components.proto
│ │ │ └── scoped_route.proto
│ │ ├── tap/
│ │ │ ├── v3/
│ │ │ │ ├── BUILD
│ │ │ │ └── common.proto
│ │ │ └── v4alpha/
│ │ │ ├── BUILD
│ │ │ └── common.proto
│ │ ├── trace/
│ │ │ ├── v2/
│ │ │ │ ├── BUILD
│ │ │ │ ├── datadog.proto
│ │ │ │ ├── dynamic_ot.proto
│ │ │ │ ├── http_tracer.proto
│ │ │ │ ├── lightstep.proto
│ │ │ │ ├── opencensus.proto
│ │ │ │ ├── service.proto
│ │ │ │ ├── trace.proto
│ │ │ │ └── zipkin.proto
│ │ │ ├── v2alpha/
│ │ │ │ ├── BUILD
│ │ │ │ └── xray.proto
│ │ │ ├── v3/
│ │ │ │ ├── BUILD
│ │ │ │ ├── datadog.proto
│ │ │ │ ├── dynamic_ot.proto
│ │ │ │ ├── http_tracer.proto
│ │ │ │ ├── lightstep.proto
│ │ │ │ ├── opencensus.proto
│ │ │ │ ├── service.proto
│ │ │ │ ├── trace.proto
│ │ │ │ ├── xray.proto
│ │ │ │ └── zipkin.proto
│ │ │ └── v4alpha/
│ │ │ ├── BUILD
│ │ │ ├── http_tracer.proto
│ │ │ └── service.proto
│ │ └── transport_socket/
│ │ ├── alts/
│ │ │ └── v2alpha/
│ │ │ ├── BUILD
│ │ │ └── alts.proto
│ │ ├── raw_buffer/
│ │ │ └── v2/
│ │ │ ├── BUILD
│ │ │ └── raw_buffer.proto
│ │ └── tap/
│ │ └── v2alpha/
│ │ ├── BUILD
│ │ └── tap.proto
│ ├── data/
│ │ ├── accesslog/
│ │ │ ├── v2/
│ │ │ │ ├── BUILD
│ │ │ │ └── accesslog.proto
│ │ │ └── v3/
│ │ │ ├── BUILD
│ │ │ └── accesslog.proto
│ │ ├── cluster/
│ │ │ ├── v2alpha/
│ │ │ │ ├── BUILD
│ │ │ │ └── outlier_detection_event.proto
│ │ │ └── v3/
│ │ │ ├── BUILD
│ │ │ └── outlier_detection_event.proto
│ │ ├── core/
│ │ │ ├── v2alpha/
│ │ │ │ ├── BUILD
│ │ │ │ └── health_check_event.proto
│ │ │ └── v3/
│ │ │ ├── BUILD
│ │ │ └── health_check_event.proto
│ │ ├── dns/
│ │ │ ├── v2alpha/
│ │ │ │ ├── BUILD
│ │ │ │ └── dns_table.proto
│ │ │ ├── v3/
│ │ │ │ ├── BUILD
│ │ │ │ └── dns_table.proto
│ │ │ └── v4alpha/
│ │ │ ├── BUILD
│ │ │ └── dns_table.proto
│ │ └── tap/
│ │ ├── v2alpha/
│ │ │ ├── BUILD
│ │ │ ├── common.proto
│ │ │ ├── http.proto
│ │ │ ├── transport.proto
│ │ │ └── wrapper.proto
│ │ └── v3/
│ │ ├── BUILD
│ │ ├── common.proto
│ │ ├── http.proto
│ │ ├── transport.proto
│ │ └── wrapper.proto
│ ├── extensions/
│ │ ├── access_loggers/
│ │ │ ├── file/
│ │ │ │ ├── v3/
│ │ │ │ │ ├── BUILD
│ │ │ │ │ └── file.proto
│ │ │ │ └── v4alpha/
│ │ │ │ ├── BUILD
│ │ │ │ └── file.proto
│ │ │ ├── grpc/
│ │ │ │ └── v3/
│ │ │ │ ├── BUILD
│ │ │ │ └── als.proto
│ │ │ └── wasm/
│ │ │ └── v3/
│ │ │ ├── BUILD
│ │ │ └── wasm.proto
│ │ ├── clusters/
│ │ │ ├── aggregate/
│ │ │ │ └── v3/
│ │ │ │ ├── BUILD
│ │ │ │ └── cluster.proto
│ │ │ ├── dynamic_forward_proxy/
│ │ │ │ └── v3/
│ │ │ │ ├── BUILD
│ │ │ │ └── cluster.proto
│ │ │ └── redis/
│ │ │ └── v3/
│ │ │ ├── BUILD
│ │ │ └── redis_cluster.proto
│ │ ├── common/
│ │ │ ├── dynamic_forward_proxy/
│ │ │ │ └── v3/
│ │ │ │ ├── BUILD
│ │ │ │ └── dns_cache.proto
│ │ │ ├── ratelimit/
│ │ │ │ └── v3/
│ │ │ │ ├── BUILD
│ │ │ │ └── ratelimit.proto
│ │ │ └── tap/
│ │ │ ├── v3/
│ │ │ │ ├── BUILD
│ │ │ │ └── common.proto
│ │ │ └── v4alpha/
│ │ │ ├── BUILD
│ │ │ └── common.proto
│ │ ├── compression/
│ │ │ └── gzip/
│ │ │ ├── compressor/
│ │ │ │ └── v3/
│ │ │ │ ├── BUILD
│ │ │ │ └── gzip.proto
│ │ │ └── decompressor/
│ │ │ └── v3/
│ │ │ ├── BUILD
│ │ │ └── gzip.proto
│ │ ├── filters/
│ │ │ ├── common/
│ │ │ │ └── fault/
│ │ │ │ └── v3/
│ │ │ │ ├── BUILD
│ │ │ │ └── fault.proto
│ │ │ ├── http/
│ │ │ │ ├── adaptive_concurrency/
│ │ │ │ │ └── v3/
│ │ │ │ │ ├── BUILD
│ │ │ │ │ └── adaptive_concurrency.proto
│ │ │ │ ├── admission_control/
│ │ │ │ │ └── v3alpha/
│ │ │ │ │ ├── BUILD
│ │ │ │ │ └── admission_control.proto
│ │ │ │ ├── aws_lambda/
│ │ │ │ │ └── v3/
│ │ │ │ │ ├── BUILD
│ │ │ │ │ └── aws_lambda.proto
│ │ │ │ ├── aws_request_signing/
│ │ │ │ │ └── v3/
│ │ │ │ │ ├── BUILD
│ │ │ │ │ └── aws_request_signing.proto
│ │ │ │ ├── buffer/
│ │ │ │ │ └── v3/
│ │ │ │ │ ├── BUILD
│ │ │ │ │ └── buffer.proto
│ │ │ │ ├── cache/
│ │ │ │ │ ├── v3alpha/
│ │ │ │ │ │ ├── BUILD
│ │ │ │ │ │ └── cache.proto
│ │ │ │ │ └── v4alpha/
│ │ │ │ │ ├── BUILD
│ │ │ │ │ └── cache.proto
│ │ │ │ ├── cdn_loop/
│ │ │ │ │ └── v3alpha/
│ │ │ │ │ ├── BUILD
│ │ │ │ │ └── cdn_loop.proto
│ │ │ │ ├── compressor/
│ │ │ │ │ └── v3/
│ │ │ │ │ ├── BUILD
│ │ │ │ │ └── compressor.proto
│ │ │ │ ├── cors/
│ │ │ │ │ └── v3/
│ │ │ │ │ ├── BUILD
│ │ │ │ │ └── cors.proto
│ │ │ │ ├── csrf/
│ │ │ │ │ ├── v3/
│ │ │ │ │ │ ├── BUILD
│ │ │ │ │ │ └── csrf.proto
│ │ │ │ │ └── v4alpha/
│ │ │ │ │ ├── BUILD
│ │ │ │ │ └── csrf.proto
│ │ │ │ ├── decompressor/
│ │ │ │ │ └── v3/
│ │ │ │ │ ├── BUILD
│ │ │ │ │ └── decompressor.proto
│ │ │ │ ├── dynamic_forward_proxy/
│ │ │ │ │ └── v3/
│ │ │ │ │ ├── BUILD
│ │ │ │ │ └── dynamic_forward_proxy.proto
│ │ │ │ ├── dynamo/
│ │ │ │ │ └── v3/
│ │ │ │ │ ├── BUILD
│ │ │ │ │ └── dynamo.proto
│ │ │ │ ├── ext_authz/
│ │ │ │ │ ├── v3/
│ │ │ │ │ │ ├── BUILD
│ │ │ │ │ │ └── ext_authz.proto
│ │ │ │ │ └── v4alpha/
│ │ │ │ │ ├── BUILD
│ │ │ │ │ └── ext_authz.proto
│ │ │ │ ├── fault/
│ │ │ │ │ ├── v3/
│ │ │ │ │ │ ├── BUILD
│ │ │ │ │ │ └── fault.proto
│ │ │ │ │ └── v4alpha/
│ │ │ │ │ ├── BUILD
│ │ │ │ │ └── fault.proto
│ │ │ │ ├── grpc_http1_bridge/
│ │ │ │ │ └── v3/
│ │ │ │ │ ├── BUILD
│ │ │ │ │ └── config.proto
│ │ │ │ ├── grpc_http1_reverse_bridge/
│ │ │ │ │ └── v3/
│ │ │ │ │ ├── BUILD
│ │ │ │ │ └── config.proto
│ │ │ │ ├── grpc_json_transcoder/
│ │ │ │ │ └── v3/
│ │ │ │ │ ├── BUILD
│ │ │ │ │ └── transcoder.proto
│ │ │ │ ├── grpc_stats/
│ │ │ │ │ └── v3/
│ │ │ │ │ ├── BUILD
│ │ │ │ │ └── config.proto
│ │ │ │ ├── grpc_web/
│ │ │ │ │ └── v3/
│ │ │ │ │ ├── BUILD
│ │ │ │ │ └── grpc_web.proto
│ │ │ │ ├── gzip/
│ │ │ │ │ └── v3/
│ │ │ │ │ ├── BUILD
│ │ │ │ │ └── gzip.proto
│ │ │ │ ├── header_to_metadata/
│ │ │ │ │ ├── v3/
│ │ │ │ │ │ ├── BUILD
│ │ │ │ │ │ └── header_to_metadata.proto
│ │ │ │ │ └── v4alpha/
│ │ │ │ │ ├── BUILD
│ │ │ │ │ └── header_to_metadata.proto
│ │ │ │ ├── health_check/
│ │ │ │ │ ├── v3/
│ │ │ │ │ │ ├── BUILD
│ │ │ │ │ │ └── health_check.proto
│ │ │ │ │ └── v4alpha/
│ │ │ │ │ ├── BUILD
│ │ │ │ │ └── health_check.proto
│ │ │ │ ├── ip_tagging/
│ │ │ │ │ └── v3/
│ │ │ │ │ ├── BUILD
│ │ │ │ │ └── ip_tagging.proto
│ │ │ │ ├── jwt_authn/
│ │ │ │ │ ├── v3/
│ │ │ │ │ │ ├── BUILD
│ │ │ │ │ │ └── config.proto
│ │ │ │ │ └── v4alpha/
│ │ │ │ │ ├── BUILD
│ │ │ │ │ └── config.proto
│ │ │ │ ├── local_ratelimit/
│ │ │ │ │ └── v3/
│ │ │ │ │ ├── BUILD
│ │ │ │ │ └── local_rate_limit.proto
│ │ │ │ ├── lua/
│ │ │ │ │ └── v3/
│ │ │ │ │ ├── BUILD
│ │ │ │ │ └── lua.proto
│ │ │ │ ├── oauth2/
│ │ │ │ │ ├── v3alpha/
│ │ │ │ │ │ ├── BUILD
│ │ │ │ │ │ └── oauth.proto
│ │ │ │ │ └── v4alpha/
│ │ │ │ │ ├── BUILD
│ │ │ │ │ └── oauth.proto
│ │ │ │ ├── on_demand/
│ │ │ │ │ └── v3/
│ │ │ │ │ ├── BUILD
│ │ │ │ │ └── on_demand.proto
│ │ │ │ ├── original_src/
│ │ │ │ │ └── v3/
│ │ │ │ │ ├── BUILD
│ │ │ │ │ └── original_src.proto
│ │ │ │ ├── ratelimit/
│ │ │ │ │ └── v3/
│ │ │ │ │ ├── BUILD
│ │ │ │ │ └── rate_limit.proto
│ │ │ │ ├── rbac/
│ │ │ │ │ ├── v3/
│ │ │ │ │ │ ├── BUILD
│ │ │ │ │ │ └── rbac.proto
│ │ │ │ │ └── v4alpha/
│ │ │ │ │ ├── BUILD
│ │ │ │ │ └── rbac.proto
│ │ │ │ ├── router/
│ │ │ │ │ ├── v3/
│ │ │ │ │ │ ├── BUILD
│ │ │ │ │ │ └── router.proto
│ │ │ │ │ └── v4alpha/
│ │ │ │ │ ├── BUILD
│ │ │ │ │ └── router.proto
│ │ │ │ ├── squash/
│ │ │ │ │ └── v3/
│ │ │ │ │ ├── BUILD
│ │ │ │ │ └── squash.proto
│ │ │ │ ├── tap/
│ │ │ │ │ ├── v3/
│ │ │ │ │ │ ├── BUILD
│ │ │ │ │ │ └── tap.proto
│ │ │ │ │ └── v4alpha/
│ │ │ │ │ ├── BUILD
│ │ │ │ │ └── tap.proto
│ │ │ │ └── wasm/
│ │ │ │ └── v3/
│ │ │ │ ├── BUILD
│ │ │ │ └── wasm.proto
│ │ │ ├── listener/
│ │ │ │ ├── http_inspector/
│ │ │ │ │ └── v3/
│ │ │ │ │ ├── BUILD
│ │ │ │ │ └── http_inspector.proto
│ │ │ │ ├── original_dst/
│ │ │ │ │ └── v3/
│ │ │ │ │ ├── BUILD
│ │ │ │ │ └── original_dst.proto
│ │ │ │ ├── original_src/
│ │ │ │ │ └── v3/
│ │ │ │ │ ├── BUILD
│ │ │ │ │ └── original_src.proto
│ │ │ │ ├── proxy_protocol/
│ │ │ │ │ └── v3/
│ │ │ │ │ ├── BUILD
│ │ │ │ │ └── proxy_protocol.proto
│ │ │ │ └── tls_inspector/
│ │ │ │ └── v3/
│ │ │ │ ├── BUILD
│ │ │ │ └── tls_inspector.proto
│ │ │ ├── network/
│ │ │ │ ├── client_ssl_auth/
│ │ │ │ │ └── v3/
│ │ │ │ │ ├── BUILD
│ │ │ │ │ └── client_ssl_auth.proto
│ │ │ │ ├── direct_response/
│ │ │ │ │ └── v3/
│ │ │ │ │ ├── BUILD
│ │ │ │ │ └── config.proto
│ │ │ │ ├── dubbo_proxy/
│ │ │ │ │ ├── router/
│ │ │ │ │ │ └── v3/
│ │ │ │ │ │ ├── BUILD
│ │ │ │ │ │ └── router.proto
│ │ │ │ │ ├── v3/
│ │ │ │ │ │ ├── BUILD
│ │ │ │ │ │ ├── dubbo_proxy.proto
│ │ │ │ │ │ └── route.proto
│ │ │ │ │ └── v4alpha/
│ │ │ │ │ ├── BUILD
│ │ │ │ │ ├── dubbo_proxy.proto
│ │ │ │ │ └── route.proto
│ │ │ │ ├── echo/
│ │ │ │ │ └── v3/
│ │ │ │ │ ├── BUILD
│ │ │ │ │ └── echo.proto
│ │ │ │ ├── ext_authz/
│ │ │ │ │ ├── v3/
│ │ │ │ │ │ ├── BUILD
│ │ │ │ │ │ └── ext_authz.proto
│ │ │ │ │ └── v4alpha/
│ │ │ │ │ ├── BUILD
│ │ │ │ │ └── ext_authz.proto
│ │ │ │ ├── http_connection_manager/
│ │ │ │ │ ├── v3/
│ │ │ │ │ │ ├── BUILD
│ │ │ │ │ │ └── http_connection_manager.proto
│ │ │ │ │ └── v4alpha/
│ │ │ │ │ ├── BUILD
│ │ │ │ │ └── http_connection_manager.proto
│ │ │ │ ├── kafka_broker/
│ │ │ │ │ └── v3/
│ │ │ │ │ ├── BUILD
│ │ │ │ │ └── kafka_broker.proto
│ │ │ │ ├── local_ratelimit/
│ │ │ │ │ └── v3/
│ │ │ │ │ ├── BUILD
│ │ │ │ │ └── local_rate_limit.proto
│ │ │ │ ├── mongo_proxy/
│ │ │ │ │ └── v3/
│ │ │ │ │ ├── BUILD
│ │ │ │ │ └── mongo_proxy.proto
│ │ │ │ ├── mysql_proxy/
│ │ │ │ │ └── v3/
│ │ │ │ │ ├── BUILD
│ │ │ │ │ └── mysql_proxy.proto
│ │ │ │ ├── postgres_proxy/
│ │ │ │ │ └── v3alpha/
│ │ │ │ │ ├── BUILD
│ │ │ │ │ └── postgres_proxy.proto
│ │ │ │ ├── ratelimit/
│ │ │ │ │ └── v3/
│ │ │ │ │ ├── BUILD
│ │ │ │ │ └── rate_limit.proto
│ │ │ │ ├── rbac/
│ │ │ │ │ ├── v3/
│ │ │ │ │ │ ├── BUILD
│ │ │ │ │ │ └── rbac.proto
│ │ │ │ │ └── v4alpha/
│ │ │ │ │ ├── BUILD
│ │ │ │ │ └── rbac.proto
│ │ │ │ ├── redis_proxy/
│ │ │ │ │ └── v3/
│ │ │ │ │ ├── BUILD
│ │ │ │ │ └── redis_proxy.proto
│ │ │ │ ├── rocketmq_proxy/
│ │ │ │ │ ├── v3/
│ │ │ │ │ │ ├── BUILD
│ │ │ │ │ │ ├── rocketmq_proxy.proto
│ │ │ │ │ │ └── route.proto
│ │ │ │ │ └── v4alpha/
│ │ │ │ │ ├── BUILD
│ │ │ │ │ ├── rocketmq_proxy.proto
│ │ │ │ │ └── route.proto
│ │ │ │ ├── sni_cluster/
│ │ │ │ │ └── v3/
│ │ │ │ │ ├── BUILD
│ │ │ │ │ └── sni_cluster.proto
│ │ │ │ ├── sni_dynamic_forward_proxy/
│ │ │ │ │ └── v3alpha/
│ │ │ │ │ ├── BUILD
│ │ │ │ │ └── sni_dynamic_forward_proxy.proto
│ │ │ │ ├── tcp_proxy/
│ │ │ │ │ ├── v3/
│ │ │ │ │ │ ├── BUILD
│ │ │ │ │ │ └── tcp_proxy.proto
│ │ │ │ │ └── v4alpha/
│ │ │ │ │ ├── BUILD
│ │ │ │ │ └── tcp_proxy.proto
│ │ │ │ ├── thrift_proxy/
│ │ │ │ │ ├── filters/
│ │ │ │ │ │ └── ratelimit/
│ │ │ │ │ │ └── v3/
│ │ │ │ │ │ ├── BUILD
│ │ │ │ │ │ └── rate_limit.proto
│ │ │ │ │ ├── v3/
│ │ │ │ │ │ ├── BUILD
│ │ │ │ │ │ ├── route.proto
│ │ │ │ │ │ └── thrift_proxy.proto
│ │ │ │ │ └── v4alpha/
│ │ │ │ │ ├── BUILD
│ │ │ │ │ ├── route.proto
│ │ │ │ │ └── thrift_proxy.proto
│ │ │ │ ├── wasm/
│ │ │ │ │ └── v3/
│ │ │ │ │ ├── BUILD
│ │ │ │ │ └── wasm.proto
│ │ │ │ └── zookeeper_proxy/
│ │ │ │ └── v3/
│ │ │ │ ├── BUILD
│ │ │ │ └── zookeeper_proxy.proto
│ │ │ └── udp/
│ │ │ ├── dns_filter/
│ │ │ │ ├── v3alpha/
│ │ │ │ │ ├── BUILD
│ │ │ │ │ └── dns_filter.proto
│ │ │ │ └── v4alpha/
│ │ │ │ ├── BUILD
│ │ │ │ └── dns_filter.proto
│ │ │ └── udp_proxy/
│ │ │ └── v3/
│ │ │ ├── BUILD
│ │ │ └── udp_proxy.proto
│ │ ├── internal_redirect/
│ │ │ ├── allow_listed_routes/
│ │ │ │ └── v3/
│ │ │ │ ├── BUILD
│ │ │ │ └── allow_listed_routes_config.proto
│ │ │ ├── previous_routes/
│ │ │ │ └── v3/
│ │ │ │ ├── BUILD
│ │ │ │ └── previous_routes_config.proto
│ │ │ └── safe_cross_scheme/
│ │ │ └── v3/
│ │ │ ├── BUILD
│ │ │ └── safe_cross_scheme_config.proto
│ │ ├── network/
│ │ │ └── socket_interface/
│ │ │ └── v3/
│ │ │ ├── BUILD
│ │ │ └── default_socket_interface.proto
│ │ ├── retry/
│ │ │ ├── host/
│ │ │ │ └── omit_host_metadata/
│ │ │ │ └── v3/
│ │ │ │ ├── BUILD
│ │ │ │ └── omit_host_metadata_config.proto
│ │ │ └── priority/
│ │ │ └── previous_priorities/
│ │ │ └── v3/
│ │ │ ├── BUILD
│ │ │ └── previous_priorities_config.proto
│ │ ├── stat_sinks/
│ │ │ └── wasm/
│ │ │ └── v3/
│ │ │ ├── BUILD
│ │ │ └── wasm.proto
│ │ ├── tracers/
│ │ │ ├── datadog/
│ │ │ │ └── v4alpha/
│ │ │ │ ├── BUILD
│ │ │ │ └── datadog.proto
│ │ │ ├── dynamic_ot/
│ │ │ │ └── v4alpha/
│ │ │ │ ├── BUILD
│ │ │ │ └── dynamic_ot.proto
│ │ │ ├── lightstep/
│ │ │ │ └── v4alpha/
│ │ │ │ ├── BUILD
│ │ │ │ └── lightstep.proto
│ │ │ ├── opencensus/
│ │ │ │ └── v4alpha/
│ │ │ │ ├── BUILD
│ │ │ │ └── opencensus.proto
│ │ │ ├── xray/
│ │ │ │ └── v4alpha/
│ │ │ │ ├── BUILD
│ │ │ │ └── xray.proto
│ │ │ └── zipkin/
│ │ │ └── v4alpha/
│ │ │ ├── BUILD
│ │ │ └── zipkin.proto
│ │ ├── transport_sockets/
│ │ │ ├── alts/
│ │ │ │ └── v3/
│ │ │ │ ├── BUILD
│ │ │ │ └── alts.proto
│ │ │ ├── proxy_protocol/
│ │ │ │ └── v3/
│ │ │ │ ├── BUILD
│ │ │ │ └── upstream_proxy_protocol.proto
│ │ │ ├── quic/
│ │ │ │ ├── v3/
│ │ │ │ │ ├── BUILD
│ │ │ │ │ └── quic_transport.proto
│ │ │ │ └── v4alpha/
│ │ │ │ ├── BUILD
│ │ │ │ └── quic_transport.proto
│ │ │ ├── raw_buffer/
│ │ │ │ └── v3/
│ │ │ │ ├── BUILD
│ │ │ │ └── raw_buffer.proto
│ │ │ ├── tap/
│ │ │ │ ├── v3/
│ │ │ │ │ ├── BUILD
│ │ │ │ │ └── tap.proto
│ │ │ │ └── v4alpha/
│ │ │ │ ├── BUILD
│ │ │ │ └── tap.proto
│ │ │ └── tls/
│ │ │ ├── v3/
│ │ │ │ ├── BUILD
│ │ │ │ ├── cert.proto
│ │ │ │ ├── common.proto
│ │ │ │ ├── secret.proto
│ │ │ │ └── tls.proto
│ │ │ └── v4alpha/
│ │ │ ├── BUILD
│ │ │ ├── common.proto
│ │ │ ├── secret.proto
│ │ │ └── tls.proto
│ │ ├── upstreams/
│ │ │ └── http/
│ │ │ ├── generic/
│ │ │ │ └── v3/
│ │ │ │ ├── BUILD
│ │ │ │ └── generic_connection_pool.proto
│ │ │ ├── http/
│ │ │ │ └── v3/
│ │ │ │ ├── BUILD
│ │ │ │ └── http_connection_pool.proto
│ │ │ └── tcp/
│ │ │ └── v3/
│ │ │ ├── BUILD
│ │ │ └── tcp_connection_pool.proto
│ │ ├── wasm/
│ │ │ └── v3/
│ │ │ ├── BUILD
│ │ │ └── wasm.proto
│ │ └── watchdog/
│ │ ├── abort_action/
│ │ │ └── v3alpha/
│ │ │ ├── BUILD
│ │ │ └── abort_action.proto
│ │ └── profile_action/
│ │ └── v3alpha/
│ │ ├── BUILD
│ │ └── profile_action.proto
│ ├── service/
│ │ ├── README.md
│ │ ├── accesslog/
│ │ │ ├── v2/
│ │ │ │ ├── BUILD
│ │ │ │ └── als.proto
│ │ │ ├── v3/
│ │ │ │ ├── BUILD
│ │ │ │ └── als.proto
│ │ │ └── v4alpha/
│ │ │ ├── BUILD
│ │ │ └── als.proto
│ │ ├── auth/
│ │ │ ├── v2/
│ │ │ │ ├── BUILD
│ │ │ │ ├── attribute_context.proto
│ │ │ │ └── external_auth.proto
│ │ │ ├── v2alpha/
│ │ │ │ ├── BUILD
│ │ │ │ └── external_auth.proto
│ │ │ ├── v3/
│ │ │ │ ├── BUILD
│ │ │ │ ├── attribute_context.proto
│ │ │ │ └── external_auth.proto
│ │ │ └── v4alpha/
│ │ │ ├── BUILD
│ │ │ ├── attribute_context.proto
│ │ │ └── external_auth.proto
│ │ ├── cluster/
│ │ │ └── v3/
│ │ │ ├── BUILD
│ │ │ └── cds.proto
│ │ ├── discovery/
│ │ │ ├── v2/
│ │ │ │ ├── BUILD
│ │ │ │ ├── ads.proto
│ │ │ │ ├── hds.proto
│ │ │ │ ├── rtds.proto
│ │ │ │ └── sds.proto
│ │ │ ├── v3/
│ │ │ │ ├── BUILD
│ │ │ │ ├── ads.proto
│ │ │ │ └── discovery.proto
│ │ │ └── v4alpha/
│ │ │ ├── BUILD
│ │ │ ├── ads.proto
│ │ │ └── discovery.proto
│ │ ├── endpoint/
│ │ │ └── v3/
│ │ │ ├── BUILD
│ │ │ └── eds.proto
│ │ ├── event_reporting/
│ │ │ ├── v2alpha/
│ │ │ │ ├── BUILD
│ │ │ │ └── event_reporting_service.proto
│ │ │ ├── v3/
│ │ │ │ ├── BUILD
│ │ │ │ └── event_reporting_service.proto
│ │ │ └── v4alpha/
│ │ │ ├── BUILD
│ │ │ └── event_reporting_service.proto
│ │ ├── extension/
│ │ │ └── v3/
│ │ │ ├── BUILD
│ │ │ └── config_discovery.proto
│ │ ├── health/
│ │ │ ├── v3/
│ │ │ │ ├── BUILD
│ │ │ │ └── hds.proto
│ │ │ └── v4alpha/
│ │ │ ├── BUILD
│ │ │ └── hds.proto
│ │ ├── listener/
│ │ │ └── v3/
│ │ │ ├── BUILD
│ │ │ └── lds.proto
│ │ ├── load_stats/
│ │ │ ├── v2/
│ │ │ │ ├── BUILD
│ │ │ │ └── lrs.proto
│ │ │ ├── v3/
│ │ │ │ ├── BUILD
│ │ │ │ └── lrs.proto
│ │ │ └── v4alpha/
│ │ │ ├── BUILD
│ │ │ └── lrs.proto
│ │ ├── metrics/
│ │ │ ├── v2/
│ │ │ │ ├── BUILD
│ │ │ │ └── metrics_service.proto
│ │ │ ├── v3/
│ │ │ │ ├── BUILD
│ │ │ │ └── metrics_service.proto
│ │ │ └── v4alpha/
│ │ │ ├── BUILD
│ │ │ └── metrics_service.proto
│ │ ├── ratelimit/
│ │ │ ├── v2/
│ │ │ │ ├── BUILD
│ │ │ │ └── rls.proto
│ │ │ └── v3/
│ │ │ ├── BUILD
│ │ │ └── rls.proto
│ │ ├── route/
│ │ │ └── v3/
│ │ │ ├── BUILD
│ │ │ ├── rds.proto
│ │ │ └── srds.proto
│ │ ├── runtime/
│ │ │ └── v3/
│ │ │ ├── BUILD
│ │ │ └── rtds.proto
│ │ ├── secret/
│ │ │ └── v3/
│ │ │ ├── BUILD
│ │ │ └── sds.proto
│ │ ├── status/
│ │ │ ├── v2/
│ │ │ │ ├── BUILD
│ │ │ │ └── csds.proto
│ │ │ ├── v3/
│ │ │ │ ├── BUILD
│ │ │ │ └── csds.proto
│ │ │ └── v4alpha/
│ │ │ ├── BUILD
│ │ │ └── csds.proto
│ │ ├── tap/
│ │ │ ├── v2alpha/
│ │ │ │ ├── BUILD
│ │ │ │ ├── common.proto
│ │ │ │ └── tap.proto
│ │ │ ├── v3/
│ │ │ │ ├── BUILD
│ │ │ │ └── tap.proto
│ │ │ └── v4alpha/
│ │ │ ├── BUILD
│ │ │ └── tap.proto
│ │ └── trace/
│ │ ├── v2/
│ │ │ ├── BUILD
│ │ │ └── trace_service.proto
│ │ ├── v3/
│ │ │ ├── BUILD
│ │ │ └── trace_service.proto
│ │ └── v4alpha/
│ │ ├── BUILD
│ │ └── trace_service.proto
│ └── type/
│ ├── BUILD
│ ├── hash_policy.proto
│ ├── http.proto
│ ├── http_status.proto
│ ├── matcher/
│ │ ├── BUILD
│ │ ├── metadata.proto
│ │ ├── node.proto
│ │ ├── number.proto
│ │ ├── path.proto
│ │ ├── regex.proto
│ │ ├── string.proto
│ │ ├── struct.proto
│ │ ├── v3/
│ │ │ ├── BUILD
│ │ │ ├── metadata.proto
│ │ │ ├── node.proto
│ │ │ ├── number.proto
│ │ │ ├── path.proto
│ │ │ ├── regex.proto
│ │ │ ├── string.proto
│ │ │ ├── struct.proto
│ │ │ └── value.proto
│ │ ├── v4alpha/
│ │ │ ├── BUILD
│ │ │ ├── metadata.proto
│ │ │ ├── node.proto
│ │ │ ├── number.proto
│ │ │ ├── path.proto
│ │ │ ├── regex.proto
│ │ │ ├── string.proto
│ │ │ ├── struct.proto
│ │ │ └── value.proto
│ │ └── value.proto
│ ├── metadata/
│ │ ├── v2/
│ │ │ ├── BUILD
│ │ │ └── metadata.proto
│ │ └── v3/
│ │ ├── BUILD
│ │ └── metadata.proto
│ ├── percent.proto
│ ├── range.proto
│ ├── semantic_version.proto
│ ├── token_bucket.proto
│ ├── tracing/
│ │ ├── v2/
│ │ │ ├── BUILD
│ │ │ └── custom_tag.proto
│ │ └── v3/
│ │ ├── BUILD
│ │ └── custom_tag.proto
│ └── v3/
│ ├── BUILD
│ ├── hash_policy.proto
│ ├── http.proto
│ ├── http_status.proto
│ ├── percent.proto
│ ├── range.proto
│ ├── ratelimit_unit.proto
│ ├── semantic_version.proto
│ └── token_bucket.proto
├── include/
│ └── envoy/
│ ├── access_log/
│ │ ├── BUILD
│ │ └── access_log.h
│ ├── api/
│ │ ├── BUILD
│ │ ├── api.h
│ │ ├── io_error.h
│ │ ├── os_sys_calls.h
│ │ ├── os_sys_calls_common.h
│ │ ├── os_sys_calls_hot_restart.h
│ │ └── os_sys_calls_linux.h
│ ├── buffer/
│ │ ├── BUILD
│ │ └── buffer.h
│ ├── common/
│ │ ├── BUILD
│ │ ├── backoff_strategy.h
│ │ ├── callback.h
│ │ ├── conn_pool.h
│ │ ├── crypto/
│ │ │ ├── BUILD
│ │ │ └── crypto.h
│ │ ├── exception.h
│ │ ├── interval_set.h
│ │ ├── matchers.h
│ │ ├── mutex_tracer.h
│ │ ├── platform.h
│ │ ├── pure.h
│ │ ├── random_generator.h
│ │ ├── regex.h
│ │ ├── resource.h
│ │ ├── scope_tracker.h
│ │ ├── time.h
│ │ └── token_bucket.h
│ ├── compression/
│ │ ├── compressor/
│ │ │ ├── BUILD
│ │ │ ├── compressor.h
│ │ │ ├── config.h
│ │ │ └── factory.h
│ │ └── decompressor/
│ │ ├── BUILD
│ │ ├── config.h
│ │ ├── decompressor.h
│ │ └── factory.h
│ ├── config/
│ │ ├── BUILD
│ │ ├── config_provider.h
│ │ ├── config_provider_manager.h
│ │ ├── extension_config_provider.h
│ │ ├── grpc_mux.h
│ │ ├── subscription.h
│ │ ├── subscription_factory.h
│ │ ├── typed_config.h
│ │ └── typed_metadata.h
│ ├── event/
│ │ ├── BUILD
│ │ ├── deferred_deletable.h
│ │ ├── dispatcher.h
│ │ ├── file_event.h
│ │ ├── range_timer.h
│ │ ├── schedulable_cb.h
│ │ ├── signal.h
│ │ └── timer.h
│ ├── filesystem/
│ │ ├── BUILD
│ │ ├── filesystem.h
│ │ └── watcher.h
│ ├── filter/
│ │ └── http/
│ │ ├── BUILD
│ │ └── filter_config_provider.h
│ ├── formatter/
│ │ ├── BUILD
│ │ └── substitution_formatter.h
│ ├── grpc/
│ │ ├── BUILD
│ │ ├── async_client.h
│ │ ├── async_client_manager.h
│ │ ├── context.h
│ │ ├── google_grpc_creds.h
│ │ └── status.h
│ ├── http/
│ │ ├── BUILD
│ │ ├── api_listener.h
│ │ ├── async_client.h
│ │ ├── codec.h
│ │ ├── codes.h
│ │ ├── conn_pool.h
│ │ ├── context.h
│ │ ├── filter.h
│ │ ├── hash_policy.h
│ │ ├── header_map.h
│ │ ├── message.h
│ │ ├── metadata_interface.h
│ │ ├── protocol.h
│ │ ├── query_params.h
│ │ └── request_id_extension.h
│ ├── init/
│ │ ├── BUILD
│ │ ├── manager.h
│ │ ├── target.h
│ │ └── watcher.h
│ ├── json/
│ │ ├── BUILD
│ │ └── json_object.h
│ ├── local_info/
│ │ ├── BUILD
│ │ └── local_info.h
│ ├── network/
│ │ ├── BUILD
│ │ ├── address.h
│ │ ├── connection.h
│ │ ├── connection_balancer.h
│ │ ├── connection_handler.h
│ │ ├── dns.h
│ │ ├── drain_decision.h
│ │ ├── exception.h
│ │ ├── filter.h
│ │ ├── hash_policy.h
│ │ ├── io_handle.h
│ │ ├── listen_socket.h
│ │ ├── listener.h
│ │ ├── post_io_action.h
│ │ ├── proxy_protocol.h
│ │ ├── resolver.h
│ │ ├── socket.h
│ │ ├── socket_interface.h
│ │ ├── transport_socket.h
│ │ ├── udp_packet_writer_config.h
│ │ └── udp_packet_writer_handler.h
│ ├── protobuf/
│ │ ├── BUILD
│ │ └── message_validator.h
│ ├── ratelimit/
│ │ ├── BUILD
│ │ └── ratelimit.h
│ ├── registry/
│ │ ├── BUILD
│ │ └── registry.h
│ ├── router/
│ │ ├── BUILD
│ │ ├── internal_redirect.h
│ │ ├── rds.h
│ │ ├── route_config_provider_manager.h
│ │ ├── route_config_update_receiver.h
│ │ ├── router.h
│ │ ├── router_ratelimit.h
│ │ ├── scopes.h
│ │ ├── shadow_writer.h
│ │ └── string_accessor.h
│ ├── runtime/
│ │ ├── BUILD
│ │ └── runtime.h
│ ├── secret/
│ │ ├── BUILD
│ │ ├── secret_callbacks.h
│ │ ├── secret_manager.h
│ │ └── secret_provider.h
│ ├── server/
│ │ ├── BUILD
│ │ ├── access_log_config.h
│ │ ├── active_udp_listener_config.h
│ │ ├── admin.h
│ │ ├── api_listener.h
│ │ ├── bootstrap_extension_config.h
│ │ ├── config_tracker.h
│ │ ├── configuration.h
│ │ ├── drain_manager.h
│ │ ├── factory_context.h
│ │ ├── filter_config.h
│ │ ├── guarddog.h
│ │ ├── guarddog_config.h
│ │ ├── health_checker_config.h
│ │ ├── hot_restart.h
│ │ ├── instance.h
│ │ ├── lifecycle_notifier.h
│ │ ├── listener_manager.h
│ │ ├── options.h
│ │ ├── overload_manager.h
│ │ ├── process_context.h
│ │ ├── request_id_extension_config.h
│ │ ├── resource_monitor.h
│ │ ├── resource_monitor_config.h
│ │ ├── tracer_config.h
│ │ ├── transport_socket_config.h
│ │ ├── watchdog.h
│ │ └── worker.h
│ ├── singleton/
│ │ ├── BUILD
│ │ ├── instance.h
│ │ └── manager.h
│ ├── ssl/
│ │ ├── BUILD
│ │ ├── certificate_validation_context_config.h
│ │ ├── connection.h
│ │ ├── context.h
│ │ ├── context_config.h
│ │ ├── context_manager.h
│ │ ├── handshaker.h
│ │ ├── private_key/
│ │ │ ├── BUILD
│ │ │ ├── private_key.h
│ │ │ ├── private_key_callbacks.h
│ │ │ └── private_key_config.h
│ │ ├── ssl_socket_extended_info.h
│ │ ├── ssl_socket_state.h
│ │ └── tls_certificate_config.h
│ ├── stats/
│ │ ├── BUILD
│ │ ├── allocator.h
│ │ ├── histogram.h
│ │ ├── primitive_stats.h
│ │ ├── primitive_stats_macros.h
│ │ ├── refcount_ptr.h
│ │ ├── scope.h
│ │ ├── sink.h
│ │ ├── stats.h
│ │ ├── stats_macros.h
│ │ ├── stats_matcher.h
│ │ ├── store.h
│ │ ├── symbol_table.h
│ │ ├── tag.h
│ │ ├── tag_extractor.h
│ │ ├── tag_producer.h
│ │ └── timespan.h
│ ├── stream_info/
│ │ ├── BUILD
│ │ ├── filter_state.h
│ │ ├── stream_info.h
│ │ └── uint32_accessor.h
│ ├── tcp/
│ │ ├── BUILD
│ │ └── conn_pool.h
│ ├── thread/
│ │ ├── BUILD
│ │ └── thread.h
│ ├── thread_local/
│ │ ├── BUILD
│ │ └── thread_local.h
│ ├── tracing/
│ │ ├── BUILD
│ │ ├── http_tracer.h
│ │ └── http_tracer_manager.h
│ ├── udp/
│ │ ├── BUILD
│ │ └── hash_policy.h
│ └── upstream/
│ ├── BUILD
│ ├── cluster_factory.h
│ ├── cluster_manager.h
│ ├── health_check_host_monitor.h
│ ├── health_checker.h
│ ├── host_description.h
│ ├── load_balancer.h
│ ├── load_balancer_type.h
│ ├── locality.h
│ ├── outlier_detection.h
│ ├── resource_manager.h
│ ├── retry.h
│ ├── thread_local_cluster.h
│ ├── types.h
│ └── upstream.h
├── repokitteh.star
├── restarter/
│ ├── BUILD
│ └── hot-restarter.py
├── security/
│ ├── email-templates.md
│ ├── gh-cve-template.md
│ ├── postmortem-template.md
│ └── postmortems/
│ ├── cve-2019-15225.md
│ ├── cve-2019-15226.md
│ ├── cve-2019-9900.md
│ └── cve-2019-9901.md
├── source/
│ ├── common/
│ │ ├── access_log/
│ │ │ ├── BUILD
│ │ │ ├── access_log_impl.cc
│ │ │ ├── access_log_impl.h
│ │ │ ├── access_log_manager_impl.cc
│ │ │ └── access_log_manager_impl.h
│ │ ├── api/
│ │ │ ├── BUILD
│ │ │ ├── api_impl.cc
│ │ │ ├── api_impl.h
│ │ │ ├── posix/
│ │ │ │ ├── os_sys_calls_impl.cc
│ │ │ │ ├── os_sys_calls_impl.h
│ │ │ │ ├── os_sys_calls_impl_hot_restart.cc
│ │ │ │ ├── os_sys_calls_impl_hot_restart.h
│ │ │ │ ├── os_sys_calls_impl_linux.cc
│ │ │ │ └── os_sys_calls_impl_linux.h
│ │ │ └── win32/
│ │ │ ├── os_sys_calls_impl.cc
│ │ │ └── os_sys_calls_impl.h
│ │ ├── buffer/
│ │ │ ├── BUILD
│ │ │ ├── buffer_impl.cc
│ │ │ ├── buffer_impl.h
│ │ │ ├── watermark_buffer.cc
│ │ │ ├── watermark_buffer.h
│ │ │ ├── zero_copy_input_stream_impl.cc
│ │ │ └── zero_copy_input_stream_impl.h
│ │ ├── chromium_url/
│ │ │ ├── BUILD
│ │ │ ├── LICENSE
│ │ │ ├── README.md
│ │ │ ├── envoy_shim.h
│ │ │ ├── url_canon.cc
│ │ │ ├── url_canon.h
│ │ │ ├── url_canon_internal.cc
│ │ │ ├── url_canon_internal.h
│ │ │ ├── url_canon_path.cc
│ │ │ ├── url_canon_stdstring.cc
│ │ │ ├── url_canon_stdstring.h
│ │ │ ├── url_parse.h
│ │ │ └── url_parse_internal.h
│ │ ├── common/
│ │ │ ├── BUILD
│ │ │ ├── android/
│ │ │ │ ├── logger_impl.cc
│ │ │ │ └── logger_impl.h
│ │ │ ├── assert.cc
│ │ │ ├── assert.h
│ │ │ ├── backoff_strategy.cc
│ │ │ ├── backoff_strategy.h
│ │ │ ├── base64.cc
│ │ │ ├── base64.h
│ │ │ ├── base_logger.cc
│ │ │ ├── base_logger.h
│ │ │ ├── basic_resource_impl.h
│ │ │ ├── byte_order.h
│ │ │ ├── c_smart_ptr.h
│ │ │ ├── callback_impl.h
│ │ │ ├── cleanup.h
│ │ │ ├── compiler_requirements.h
│ │ │ ├── debug_recursion_checker.h
│ │ │ ├── documentation_url.h
│ │ │ ├── dump_state_utils.h
│ │ │ ├── empty_string.h
│ │ │ ├── enum_to_int.h
│ │ │ ├── fancy_logger.cc
│ │ │ ├── fancy_logger.h
│ │ │ ├── fmt.h
│ │ │ ├── hash.cc
│ │ │ ├── hash.h
│ │ │ ├── hex.cc
│ │ │ ├── hex.h
│ │ │ ├── linked_object.h
│ │ │ ├── lock_guard.h
│ │ │ ├── logger.cc
│ │ │ ├── logger.h
│ │ │ ├── logger_delegates.cc
│ │ │ ├── logger_delegates.h
│ │ │ ├── macros.h
│ │ │ ├── matchers.cc
│ │ │ ├── matchers.h
│ │ │ ├── mem_block_builder.h
│ │ │ ├── mutex_tracer_impl.cc
│ │ │ ├── mutex_tracer_impl.h
│ │ │ ├── non_copyable.h
│ │ │ ├── perf_annotation.cc
│ │ │ ├── perf_annotation.h
│ │ │ ├── phantom.h
│ │ │ ├── posix/
│ │ │ │ ├── thread_impl.cc
│ │ │ │ └── thread_impl.h
│ │ │ ├── random_generator.cc
│ │ │ ├── random_generator.h
│ │ │ ├── regex.cc
│ │ │ ├── regex.h
│ │ │ ├── scalar_to_byte_vector.h
│ │ │ ├── scope_tracker.h
│ │ │ ├── standard/
│ │ │ │ └── logger_impl.h
│ │ │ ├── statusor.h
│ │ │ ├── stl_helpers.h
│ │ │ ├── thread.h
│ │ │ ├── thread_annotations.h
│ │ │ ├── thread_synchronizer.cc
│ │ │ ├── thread_synchronizer.h
│ │ │ ├── token_bucket_impl.cc
│ │ │ ├── token_bucket_impl.h
│ │ │ ├── utility.cc
│ │ │ ├── utility.h
│ │ │ └── win32/
│ │ │ ├── thread_impl.cc
│ │ │ └── thread_impl.h
│ │ ├── config/
│ │ │ ├── BUILD
│ │ │ ├── README.md
│ │ │ ├── api_type_oracle.cc
│ │ │ ├── api_type_oracle.h
│ │ │ ├── api_version.h
│ │ │ ├── config_provider_impl.cc
│ │ │ ├── config_provider_impl.h
│ │ │ ├── datasource.cc
│ │ │ ├── datasource.h
│ │ │ ├── decoded_resource_impl.h
│ │ │ ├── delta_subscription_state.cc
│ │ │ ├── delta_subscription_state.h
│ │ │ ├── filesystem_subscription_impl.cc
│ │ │ ├── filesystem_subscription_impl.h
│ │ │ ├── grpc_mux_impl.cc
│ │ │ ├── grpc_mux_impl.h
│ │ │ ├── grpc_stream.h
│ │ │ ├── grpc_subscription_impl.cc
│ │ │ ├── grpc_subscription_impl.h
│ │ │ ├── http_subscription_impl.cc
│ │ │ ├── http_subscription_impl.h
│ │ │ ├── metadata.cc
│ │ │ ├── metadata.h
│ │ │ ├── new_grpc_mux_impl.cc
│ │ │ ├── new_grpc_mux_impl.h
│ │ │ ├── opaque_resource_decoder_impl.h
│ │ │ ├── pausable_ack_queue.cc
│ │ │ ├── pausable_ack_queue.h
│ │ │ ├── protobuf_link_hacks.h
│ │ │ ├── remote_data_fetcher.cc
│ │ │ ├── remote_data_fetcher.h
│ │ │ ├── resource_name.h
│ │ │ ├── runtime_utility.cc
│ │ │ ├── runtime_utility.h
│ │ │ ├── subscription_base.h
│ │ │ ├── subscription_factory_impl.cc
│ │ │ ├── subscription_factory_impl.h
│ │ │ ├── type_to_endpoint.cc
│ │ │ ├── type_to_endpoint.h
│ │ │ ├── udpa_context_params.cc
│ │ │ ├── udpa_context_params.h
│ │ │ ├── udpa_resource.cc
│ │ │ ├── udpa_resource.h
│ │ │ ├── update_ack.h
│ │ │ ├── utility.cc
│ │ │ ├── utility.h
│ │ │ ├── version_converter.cc
│ │ │ ├── version_converter.h
│ │ │ ├── watch_map.cc
│ │ │ ├── watch_map.h
│ │ │ ├── well_known_names.cc
│ │ │ └── well_known_names.h
│ │ ├── conn_pool/
│ │ │ ├── BUILD
│ │ │ ├── conn_pool_base.cc
│ │ │ └── conn_pool_base.h
│ │ ├── crypto/
│ │ │ ├── BUILD
│ │ │ └── utility.h
│ │ ├── event/
│ │ │ ├── BUILD
│ │ │ ├── deferred_task.h
│ │ │ ├── dispatcher_impl.cc
│ │ │ ├── dispatcher_impl.h
│ │ │ ├── event_impl_base.cc
│ │ │ ├── event_impl_base.h
│ │ │ ├── file_event_impl.cc
│ │ │ ├── file_event_impl.h
│ │ │ ├── libevent.cc
│ │ │ ├── libevent.h
│ │ │ ├── libevent_scheduler.cc
│ │ │ ├── libevent_scheduler.h
│ │ │ ├── real_time_system.cc
│ │ │ ├── real_time_system.h
│ │ │ ├── scaled_range_timer_manager.cc
│ │ │ ├── scaled_range_timer_manager.h
│ │ │ ├── schedulable_cb_impl.cc
│ │ │ ├── schedulable_cb_impl.h
│ │ │ ├── signal_impl.cc
│ │ │ ├── signal_impl.h
│ │ │ ├── timer_impl.cc
│ │ │ └── timer_impl.h
│ │ ├── filesystem/
│ │ │ ├── BUILD
│ │ │ ├── directory.h
│ │ │ ├── file_shared_impl.cc
│ │ │ ├── file_shared_impl.h
│ │ │ ├── inotify/
│ │ │ │ ├── watcher_impl.cc
│ │ │ │ └── watcher_impl.h
│ │ │ ├── kqueue/
│ │ │ │ ├── watcher_impl.cc
│ │ │ │ └── watcher_impl.h
│ │ │ ├── posix/
│ │ │ │ ├── directory_iterator_impl.cc
│ │ │ │ ├── directory_iterator_impl.h
│ │ │ │ ├── filesystem_impl.cc
│ │ │ │ └── filesystem_impl.h
│ │ │ └── win32/
│ │ │ ├── directory_iterator_impl.cc
│ │ │ ├── directory_iterator_impl.h
│ │ │ ├── filesystem_impl.cc
│ │ │ ├── filesystem_impl.h
│ │ │ ├── watcher_impl.cc
│ │ │ └── watcher_impl.h
│ │ ├── filter/
│ │ │ └── http/
│ │ │ ├── BUILD
│ │ │ ├── filter_config_discovery_impl.cc
│ │ │ └── filter_config_discovery_impl.h
│ │ ├── formatter/
│ │ │ ├── BUILD
│ │ │ ├── substitution_format_string.cc
│ │ │ ├── substitution_format_string.h
│ │ │ ├── substitution_formatter.cc
│ │ │ └── substitution_formatter.h
│ │ ├── grpc/
│ │ │ ├── BUILD
│ │ │ ├── async_client_impl.cc
│ │ │ ├── async_client_impl.h
│ │ │ ├── async_client_manager_impl.cc
│ │ │ ├── async_client_manager_impl.h
│ │ │ ├── codec.cc
│ │ │ ├── codec.h
│ │ │ ├── common.cc
│ │ │ ├── common.h
│ │ │ ├── context_impl.cc
│ │ │ ├── context_impl.h
│ │ │ ├── google_async_client_impl.cc
│ │ │ ├── google_async_client_impl.h
│ │ │ ├── google_grpc_context.cc
│ │ │ ├── google_grpc_context.h
│ │ │ ├── google_grpc_creds_impl.cc
│ │ │ ├── google_grpc_creds_impl.h
│ │ │ ├── google_grpc_utils.cc
│ │ │ ├── google_grpc_utils.h
│ │ │ ├── stat_names.cc
│ │ │ ├── stat_names.h
│ │ │ ├── status.cc
│ │ │ ├── status.h
│ │ │ ├── typed_async_client.cc
│ │ │ └── typed_async_client.h
│ │ ├── html/
│ │ │ ├── BUILD
│ │ │ ├── utility.cc
│ │ │ └── utility.h
│ │ ├── http/
│ │ │ ├── BUILD
│ │ │ ├── async_client_impl.cc
│ │ │ ├── async_client_impl.h
│ │ │ ├── async_client_utility.cc
│ │ │ ├── async_client_utility.h
│ │ │ ├── codec_client.cc
│ │ │ ├── codec_client.h
│ │ │ ├── codec_helper.h
│ │ │ ├── codec_wrappers.h
│ │ │ ├── codes.cc
│ │ │ ├── codes.h
│ │ │ ├── conn_manager_config.h
│ │ │ ├── conn_manager_impl.cc
│ │ │ ├── conn_manager_impl.h
│ │ │ ├── conn_manager_utility.cc
│ │ │ ├── conn_manager_utility.h
│ │ │ ├── conn_pool_base.cc
│ │ │ ├── conn_pool_base.h
│ │ │ ├── context_impl.cc
│ │ │ ├── context_impl.h
│ │ │ ├── date_provider.h
│ │ │ ├── date_provider_impl.cc
│ │ │ ├── date_provider_impl.h
│ │ │ ├── default_server_string.h
│ │ │ ├── exception.h
│ │ │ ├── filter_manager.cc
│ │ │ ├── filter_manager.h
│ │ │ ├── hash_policy.cc
│ │ │ ├── hash_policy.h
│ │ │ ├── header_list_view.cc
│ │ │ ├── header_list_view.h
│ │ │ ├── header_map_impl.cc
│ │ │ ├── header_map_impl.h
│ │ │ ├── header_utility.cc
│ │ │ ├── header_utility.h
│ │ │ ├── headers.h
│ │ │ ├── http1/
│ │ │ │ ├── BUILD
│ │ │ │ ├── codec_impl.cc
│ │ │ │ ├── codec_impl.h
│ │ │ │ ├── codec_impl_legacy.cc
│ │ │ │ ├── codec_impl_legacy.h
│ │ │ │ ├── codec_stats.h
│ │ │ │ ├── conn_pool.cc
│ │ │ │ ├── conn_pool.h
│ │ │ │ ├── header_formatter.cc
│ │ │ │ └── header_formatter.h
│ │ │ ├── http2/
│ │ │ │ ├── BUILD
│ │ │ │ ├── codec_impl.cc
│ │ │ │ ├── codec_impl.h
│ │ │ │ ├── codec_impl_legacy.cc
│ │ │ │ ├── codec_impl_legacy.h
│ │ │ │ ├── codec_stats.h
│ │ │ │ ├── conn_pool.cc
│ │ │ │ ├── conn_pool.h
│ │ │ │ ├── metadata_decoder.cc
│ │ │ │ ├── metadata_decoder.h
│ │ │ │ ├── metadata_encoder.cc
│ │ │ │ ├── metadata_encoder.h
│ │ │ │ ├── nghttp2.cc
│ │ │ │ ├── nghttp2.h
│ │ │ │ ├── protocol_constraints.cc
│ │ │ │ └── protocol_constraints.h
│ │ │ ├── http3/
│ │ │ │ ├── BUILD
│ │ │ │ ├── quic_codec_factory.h
│ │ │ │ └── well_known_names.h
│ │ │ ├── message_impl.h
│ │ │ ├── path_utility.cc
│ │ │ ├── path_utility.h
│ │ │ ├── request_id_extension_impl.cc
│ │ │ ├── request_id_extension_impl.h
│ │ │ ├── request_id_extension_uuid_impl.cc
│ │ │ ├── request_id_extension_uuid_impl.h
│ │ │ ├── rest_api_fetcher.cc
│ │ │ ├── rest_api_fetcher.h
│ │ │ ├── status.cc
│ │ │ ├── status.h
│ │ │ ├── user_agent.cc
│ │ │ ├── user_agent.h
│ │ │ ├── utility.cc
│ │ │ └── utility.h
│ │ ├── init/
│ │ │ ├── BUILD
│ │ │ ├── manager_impl.cc
│ │ │ ├── manager_impl.h
│ │ │ ├── target_impl.cc
│ │ │ ├── target_impl.h
│ │ │ ├── watcher_impl.cc
│ │ │ └── watcher_impl.h
│ │ ├── json/
│ │ │ ├── BUILD
│ │ │ ├── json_loader.cc
│ │ │ └── json_loader.h
│ │ ├── local_info/
│ │ │ ├── BUILD
│ │ │ └── local_info_impl.h
│ │ ├── local_reply/
│ │ │ ├── BUILD
│ │ │ ├── local_reply.cc
│ │ │ └── local_reply.h
│ │ ├── memory/
│ │ │ ├── BUILD
│ │ │ ├── heap_shrinker.cc
│ │ │ ├── heap_shrinker.h
│ │ │ ├── stats.cc
│ │ │ ├── stats.h
│ │ │ ├── utils.cc
│ │ │ └── utils.h
│ │ ├── network/
│ │ │ ├── BUILD
│ │ │ ├── addr_family_aware_socket_option_impl.cc
│ │ │ ├── addr_family_aware_socket_option_impl.h
│ │ │ ├── address_impl.cc
│ │ │ ├── address_impl.h
│ │ │ ├── apple_dns_impl.cc
│ │ │ ├── apple_dns_impl.h
│ │ │ ├── application_protocol.cc
│ │ │ ├── application_protocol.h
│ │ │ ├── base_listener_impl.cc
│ │ │ ├── base_listener_impl.h
│ │ │ ├── cidr_range.cc
│ │ │ ├── cidr_range.h
│ │ │ ├── connection_balancer_impl.cc
│ │ │ ├── connection_balancer_impl.h
│ │ │ ├── connection_impl.cc
│ │ │ ├── connection_impl.h
│ │ │ ├── connection_impl_base.cc
│ │ │ ├── connection_impl_base.h
│ │ │ ├── dns_impl.cc
│ │ │ ├── dns_impl.h
│ │ │ ├── filter_impl.h
│ │ │ ├── filter_manager_impl.cc
│ │ │ ├── filter_manager_impl.h
│ │ │ ├── filter_matcher.cc
│ │ │ ├── filter_matcher.h
│ │ │ ├── hash_policy.cc
│ │ │ ├── hash_policy.h
│ │ │ ├── io_socket_error_impl.cc
│ │ │ ├── io_socket_error_impl.h
│ │ │ ├── io_socket_handle_impl.cc
│ │ │ ├── io_socket_handle_impl.h
│ │ │ ├── lc_trie.h
│ │ │ ├── listen_socket_impl.cc
│ │ │ ├── listen_socket_impl.h
│ │ │ ├── proxy_protocol_filter_state.cc
│ │ │ ├── proxy_protocol_filter_state.h
│ │ │ ├── raw_buffer_socket.cc
│ │ │ ├── raw_buffer_socket.h
│ │ │ ├── resolver_impl.cc
│ │ │ ├── resolver_impl.h
│ │ │ ├── socket_impl.cc
│ │ │ ├── socket_impl.h
│ │ │ ├── socket_interface.h
│ │ │ ├── socket_interface_impl.cc
│ │ │ ├── socket_interface_impl.h
│ │ │ ├── socket_option_factory.cc
│ │ │ ├── socket_option_factory.h
│ │ │ ├── socket_option_impl.cc
│ │ │ ├── socket_option_impl.h
│ │ │ ├── tcp_listener_impl.cc
│ │ │ ├── tcp_listener_impl.h
│ │ │ ├── transport_socket_options_impl.cc
│ │ │ ├── transport_socket_options_impl.h
│ │ │ ├── udp_default_writer_config.cc
│ │ │ ├── udp_default_writer_config.h
│ │ │ ├── udp_listener_impl.cc
│ │ │ ├── udp_listener_impl.h
│ │ │ ├── udp_packet_writer_handler_impl.cc
│ │ │ ├── udp_packet_writer_handler_impl.h
│ │ │ ├── upstream_server_name.cc
│ │ │ ├── upstream_server_name.h
│ │ │ ├── upstream_subject_alt_names.cc
│ │ │ ├── upstream_subject_alt_names.h
│ │ │ ├── utility.cc
│ │ │ └── utility.h
│ │ ├── profiler/
│ │ │ ├── BUILD
│ │ │ ├── profiler.cc
│ │ │ └── profiler.h
│ │ ├── protobuf/
│ │ │ ├── BUILD
│ │ │ ├── message_validator_impl.cc
│ │ │ ├── message_validator_impl.h
│ │ │ ├── protobuf.h
│ │ │ ├── type_util.cc
│ │ │ ├── type_util.h
│ │ │ ├── utility.cc
│ │ │ ├── utility.h
│ │ │ ├── visitor.cc
│ │ │ ├── visitor.h
│ │ │ └── well_known.h
│ │ ├── router/
│ │ │ ├── BUILD
│ │ │ ├── config_impl.cc
│ │ │ ├── config_impl.h
│ │ │ ├── config_utility.cc
│ │ │ ├── config_utility.h
│ │ │ ├── debug_config.cc
│ │ │ ├── debug_config.h
│ │ │ ├── header_formatter.cc
│ │ │ ├── header_formatter.h
│ │ │ ├── header_parser.cc
│ │ │ ├── header_parser.h
│ │ │ ├── metadatamatchcriteria_impl.cc
│ │ │ ├── metadatamatchcriteria_impl.h
│ │ │ ├── rds_impl.cc
│ │ │ ├── rds_impl.h
│ │ │ ├── reset_header_parser.cc
│ │ │ ├── reset_header_parser.h
│ │ │ ├── retry_state_impl.cc
│ │ │ ├── retry_state_impl.h
│ │ │ ├── route_config_update_receiver_impl.cc
│ │ │ ├── route_config_update_receiver_impl.h
│ │ │ ├── router.cc
│ │ │ ├── router.h
│ │ │ ├── router_ratelimit.cc
│ │ │ ├── router_ratelimit.h
│ │ │ ├── scoped_config_impl.cc
│ │ │ ├── scoped_config_impl.h
│ │ │ ├── scoped_rds.cc
│ │ │ ├── scoped_rds.h
│ │ │ ├── shadow_writer_impl.cc
│ │ │ ├── shadow_writer_impl.h
│ │ │ ├── string_accessor_impl.h
│ │ │ ├── tls_context_match_criteria_impl.cc
│ │ │ ├── tls_context_match_criteria_impl.h
│ │ │ ├── upstream_request.cc
│ │ │ ├── upstream_request.h
│ │ │ ├── vhds.cc
│ │ │ └── vhds.h
│ │ ├── runtime/
│ │ │ ├── BUILD
│ │ │ ├── runtime_features.cc
│ │ │ ├── runtime_features.h
│ │ │ ├── runtime_impl.cc
│ │ │ ├── runtime_impl.h
│ │ │ └── runtime_protos.h
│ │ ├── secret/
│ │ │ ├── BUILD
│ │ │ ├── sds_api.cc
│ │ │ ├── sds_api.h
│ │ │ ├── secret_manager_impl.cc
│ │ │ ├── secret_manager_impl.h
│ │ │ ├── secret_provider_impl.cc
│ │ │ └── secret_provider_impl.h
│ │ ├── shared_pool/
│ │ │ ├── BUILD
│ │ │ └── shared_pool.h
│ │ ├── signal/
│ │ │ ├── BUILD
│ │ │ ├── fatal_error_handler.cc
│ │ │ ├── fatal_error_handler.h
│ │ │ ├── signal_action.cc
│ │ │ └── signal_action.h
│ │ ├── singleton/
│ │ │ ├── BUILD
│ │ │ ├── const_singleton.h
│ │ │ ├── manager_impl.cc
│ │ │ ├── manager_impl.h
│ │ │ └── threadsafe_singleton.h
│ │ ├── ssl/
│ │ │ ├── BUILD
│ │ │ ├── certificate_validation_context_config_impl.cc
│ │ │ ├── certificate_validation_context_config_impl.h
│ │ │ ├── tls_certificate_config_impl.cc
│ │ │ └── tls_certificate_config_impl.h
│ │ ├── stats/
│ │ │ ├── BUILD
│ │ │ ├── allocator_impl.cc
│ │ │ ├── allocator_impl.h
│ │ │ ├── histogram_impl.cc
│ │ │ ├── histogram_impl.h
│ │ │ ├── isolated_store_impl.cc
│ │ │ ├── isolated_store_impl.h
│ │ │ ├── metric_impl.cc
│ │ │ ├── metric_impl.h
│ │ │ ├── null_counter.h
│ │ │ ├── null_gauge.h
│ │ │ ├── null_text_readout.h
│ │ │ ├── recent_lookups.cc
│ │ │ ├── recent_lookups.h
│ │ │ ├── scope_prefixer.cc
│ │ │ ├── scope_prefixer.h
│ │ │ ├── stat_merger.cc
│ │ │ ├── stat_merger.h
│ │ │ ├── stats_matcher_impl.cc
│ │ │ ├── stats_matcher_impl.h
│ │ │ ├── store_impl.h
│ │ │ ├── symbol_table_impl.cc
│ │ │ ├── symbol_table_impl.h
│ │ │ ├── tag_extractor_impl.cc
│ │ │ ├── tag_extractor_impl.h
│ │ │ ├── tag_producer_impl.cc
│ │ │ ├── tag_producer_impl.h
│ │ │ ├── tag_utility.cc
│ │ │ ├── tag_utility.h
│ │ │ ├── thread_local_store.cc
│ │ │ ├── thread_local_store.h
│ │ │ ├── timespan_impl.cc
│ │ │ ├── timespan_impl.h
│ │ │ ├── utility.cc
│ │ │ └── utility.h
│ │ ├── stream_info/
│ │ │ ├── BUILD
│ │ │ ├── filter_state_impl.cc
│ │ │ ├── filter_state_impl.h
│ │ │ ├── stream_info_impl.h
│ │ │ ├── uint32_accessor_impl.h
│ │ │ ├── utility.cc
│ │ │ └── utility.h
│ │ ├── tcp/
│ │ │ ├── BUILD
│ │ │ ├── conn_pool.cc
│ │ │ ├── conn_pool.h
│ │ │ ├── original_conn_pool.cc
│ │ │ └── original_conn_pool.h
│ │ ├── tcp_proxy/
│ │ │ ├── BUILD
│ │ │ ├── tcp_proxy.cc
│ │ │ ├── tcp_proxy.h
│ │ │ ├── upstream.cc
│ │ │ └── upstream.h
│ │ ├── thread_local/
│ │ │ ├── BUILD
│ │ │ ├── thread_local_impl.cc
│ │ │ └── thread_local_impl.h
│ │ ├── tracing/
│ │ │ ├── BUILD
│ │ │ ├── http_tracer_config_impl.h
│ │ │ ├── http_tracer_impl.cc
│ │ │ ├── http_tracer_impl.h
│ │ │ ├── http_tracer_manager_impl.cc
│ │ │ └── http_tracer_manager_impl.h
│ │ ├── upstream/
│ │ │ ├── BUILD
│ │ │ ├── cds_api_impl.cc
│ │ │ ├── cds_api_impl.h
│ │ │ ├── cluster_factory_impl.cc
│ │ │ ├── cluster_factory_impl.h
│ │ │ ├── cluster_manager_impl.cc
│ │ │ ├── cluster_manager_impl.h
│ │ │ ├── cluster_update_tracker.cc
│ │ │ ├── cluster_update_tracker.h
│ │ │ ├── conn_pool_map.h
│ │ │ ├── conn_pool_map_impl.h
│ │ │ ├── edf_scheduler.h
│ │ │ ├── eds.cc
│ │ │ ├── eds.h
│ │ │ ├── health_checker_base_impl.cc
│ │ │ ├── health_checker_base_impl.h
│ │ │ ├── health_checker_impl.cc
│ │ │ ├── health_checker_impl.h
│ │ │ ├── health_discovery_service.cc
│ │ │ ├── health_discovery_service.h
│ │ │ ├── host_utility.cc
│ │ │ ├── host_utility.h
│ │ │ ├── load_balancer_impl.cc
│ │ │ ├── load_balancer_impl.h
│ │ │ ├── load_stats_reporter.cc
│ │ │ ├── load_stats_reporter.h
│ │ │ ├── logical_dns_cluster.cc
│ │ │ ├── logical_dns_cluster.h
│ │ │ ├── logical_host.cc
│ │ │ ├── logical_host.h
│ │ │ ├── maglev_lb.cc
│ │ │ ├── maglev_lb.h
│ │ │ ├── original_dst_cluster.cc
│ │ │ ├── original_dst_cluster.h
│ │ │ ├── outlier_detection_impl.cc
│ │ │ ├── outlier_detection_impl.h
│ │ │ ├── priority_conn_pool_map.h
│ │ │ ├── priority_conn_pool_map_impl.h
│ │ │ ├── resource_manager_impl.h
│ │ │ ├── ring_hash_lb.cc
│ │ │ ├── ring_hash_lb.h
│ │ │ ├── static_cluster.cc
│ │ │ ├── static_cluster.h
│ │ │ ├── strict_dns_cluster.cc
│ │ │ ├── strict_dns_cluster.h
│ │ │ ├── subset_lb.cc
│ │ │ ├── subset_lb.h
│ │ │ ├── thread_aware_lb_impl.cc
│ │ │ ├── thread_aware_lb_impl.h
│ │ │ ├── transport_socket_match_impl.cc
│ │ │ ├── transport_socket_match_impl.h
│ │ │ ├── upstream_impl.cc
│ │ │ └── upstream_impl.h
│ │ └── version/
│ │ ├── BUILD
│ │ ├── generate_version_linkstamp.sh
│ │ ├── version.cc
│ │ ├── version.h
│ │ └── version_linkstamp.cc
│ ├── docs/
│ │ ├── fancy_logger.md
│ │ ├── filters/
│ │ │ └── http/
│ │ │ └── cache/
│ │ │ ├── cache_filter.md
│ │ │ └── cache_filter_plugins.md
│ │ ├── flow_control.md
│ │ ├── h2_metadata.md
│ │ ├── header_map.md
│ │ ├── network_filter_fuzzing.md
│ │ ├── quiche_integration.md
│ │ ├── repokitteh.md
│ │ ├── stats.md
│ │ └── subset_load_balancer.md
│ ├── exe/
│ │ ├── BUILD
│ │ ├── main.cc
│ │ ├── main_common.cc
│ │ ├── main_common.h
│ │ ├── platform_impl.h
│ │ ├── posix/
│ │ │ └── platform_impl.cc
│ │ ├── process_wide.cc
│ │ ├── process_wide.h
│ │ ├── terminate_handler.cc
│ │ ├── terminate_handler.h
│ │ └── win32/
│ │ └── platform_impl.cc
│ ├── extensions/
│ │ ├── BUILD
│ │ ├── access_loggers/
│ │ │ ├── BUILD
│ │ │ ├── common/
│ │ │ │ ├── BUILD
│ │ │ │ ├── access_log_base.cc
│ │ │ │ └── access_log_base.h
│ │ │ ├── file/
│ │ │ │ ├── BUILD
│ │ │ │ ├── config.cc
│ │ │ │ ├── config.h
│ │ │ │ ├── file_access_log_impl.cc
│ │ │ │ └── file_access_log_impl.h
│ │ │ ├── grpc/
│ │ │ │ ├── BUILD
│ │ │ │ ├── config_utils.cc
│ │ │ │ ├── config_utils.h
│ │ │ │ ├── grpc_access_log_impl.cc
│ │ │ │ ├── grpc_access_log_impl.h
│ │ │ │ ├── grpc_access_log_proto_descriptors.cc
│ │ │ │ ├── grpc_access_log_proto_descriptors.h
│ │ │ │ ├── grpc_access_log_utils.cc
│ │ │ │ ├── grpc_access_log_utils.h
│ │ │ │ ├── http_config.cc
│ │ │ │ ├── http_config.h
│ │ │ │ ├── http_grpc_access_log_impl.cc
│ │ │ │ ├── http_grpc_access_log_impl.h
│ │ │ │ ├── tcp_config.cc
│ │ │ │ ├── tcp_config.h
│ │ │ │ ├── tcp_grpc_access_log_impl.cc
│ │ │ │ └── tcp_grpc_access_log_impl.h
│ │ │ ├── wasm/
│ │ │ │ ├── BUILD
│ │ │ │ ├── config.cc
│ │ │ │ ├── config.h
│ │ │ │ └── wasm_access_log_impl.h
│ │ │ └── well_known_names.h
│ │ ├── all_extensions.bzl
│ │ ├── bootstrap/
│ │ │ └── wasm/
│ │ │ ├── BUILD
│ │ │ ├── config.cc
│ │ │ └── config.h
│ │ ├── clusters/
│ │ │ ├── BUILD
│ │ │ ├── aggregate/
│ │ │ │ ├── BUILD
│ │ │ │ ├── cluster.cc
│ │ │ │ ├── cluster.h
│ │ │ │ └── lb_context.h
│ │ │ ├── dynamic_forward_proxy/
│ │ │ │ ├── BUILD
│ │ │ │ ├── cluster.cc
│ │ │ │ └── cluster.h
│ │ │ ├── redis/
│ │ │ │ ├── BUILD
│ │ │ │ ├── crc16.cc
│ │ │ │ ├── crc16.h
│ │ │ │ ├── redis_cluster.cc
│ │ │ │ ├── redis_cluster.h
│ │ │ │ ├── redis_cluster_lb.cc
│ │ │ │ └── redis_cluster_lb.h
│ │ │ └── well_known_names.h
│ │ ├── common/
│ │ │ ├── BUILD
│ │ │ ├── aws/
│ │ │ │ ├── BUILD
│ │ │ │ ├── credentials_provider.h
│ │ │ │ ├── credentials_provider_impl.cc
│ │ │ │ ├── credentials_provider_impl.h
│ │ │ │ ├── region_provider.h
│ │ │ │ ├── region_provider_impl.cc
│ │ │ │ ├── region_provider_impl.h
│ │ │ │ ├── signer.h
│ │ │ │ ├── signer_impl.cc
│ │ │ │ ├── signer_impl.h
│ │ │ │ ├── utility.cc
│ │ │ │ └── utility.h
│ │ │ ├── crypto/
│ │ │ │ ├── BUILD
│ │ │ │ ├── crypto_impl.cc
│ │ │ │ ├── crypto_impl.h
│ │ │ │ ├── utility_impl.cc
│ │ │ │ └── utility_impl.h
│ │ │ ├── dynamic_forward_proxy/
│ │ │ │ ├── BUILD
│ │ │ │ ├── dns_cache.h
│ │ │ │ ├── dns_cache_impl.cc
│ │ │ │ ├── dns_cache_impl.h
│ │ │ │ ├── dns_cache_manager_impl.cc
│ │ │ │ ├── dns_cache_manager_impl.h
│ │ │ │ ├── dns_cache_resource_manager.cc
│ │ │ │ └── dns_cache_resource_manager.h
│ │ │ ├── matcher/
│ │ │ │ ├── BUILD
│ │ │ │ ├── matcher.cc
│ │ │ │ └── matcher.h
│ │ │ ├── proxy_protocol/
│ │ │ │ ├── BUILD
│ │ │ │ ├── proxy_protocol_header.cc
│ │ │ │ └── proxy_protocol_header.h
│ │ │ ├── redis/
│ │ │ │ ├── BUILD
│ │ │ │ ├── cluster_refresh_manager.h
│ │ │ │ ├── cluster_refresh_manager_impl.cc
│ │ │ │ └── cluster_refresh_manager_impl.h
│ │ │ ├── sqlutils/
│ │ │ │ ├── BUILD
│ │ │ │ ├── sqlutils.cc
│ │ │ │ └── sqlutils.h
│ │ │ ├── tap/
│ │ │ │ ├── BUILD
│ │ │ │ ├── admin.cc
│ │ │ │ ├── admin.h
│ │ │ │ ├── extension_config_base.cc
│ │ │ │ ├── extension_config_base.h
│ │ │ │ ├── tap.h
│ │ │ │ ├── tap_config_base.cc
│ │ │ │ └── tap_config_base.h
│ │ │ ├── utility.h
│ │ │ └── wasm/
│ │ │ ├── BUILD
│ │ │ ├── context.cc
│ │ │ ├── context.h
│ │ │ ├── ext/
│ │ │ │ ├── BUILD
│ │ │ │ ├── README.md
│ │ │ │ ├── declare_property.proto
│ │ │ │ ├── envoy_null_plugin.h
│ │ │ │ ├── envoy_null_vm_wasm_api.h
│ │ │ │ ├── envoy_proxy_wasm_api.cc
│ │ │ │ ├── envoy_proxy_wasm_api.h
│ │ │ │ ├── envoy_wasm_intrinsics.js
│ │ │ │ └── node_subset.proto
│ │ │ ├── foreign.cc
│ │ │ ├── wasm.cc
│ │ │ ├── wasm.h
│ │ │ ├── wasm_extension.cc
│ │ │ ├── wasm_extension.h
│ │ │ ├── wasm_state.cc
│ │ │ ├── wasm_state.h
│ │ │ ├── wasm_vm.cc
│ │ │ ├── wasm_vm.h
│ │ │ ├── wasm_vm_base.h
│ │ │ └── well_known_names.h
│ │ ├── compression/
│ │ │ ├── common/
│ │ │ │ ├── compressor/
│ │ │ │ │ ├── BUILD
│ │ │ │ │ └── factory_base.h
│ │ │ │ └── decompressor/
│ │ │ │ ├── BUILD
│ │ │ │ └── factory_base.h
│ │ │ └── gzip/
│ │ │ ├── common/
│ │ │ │ ├── BUILD
│ │ │ │ ├── base.cc
│ │ │ │ └── base.h
│ │ │ ├── compressor/
│ │ │ │ ├── BUILD
│ │ │ │ ├── config.cc
│ │ │ │ ├── config.h
│ │ │ │ ├── zlib_compressor_impl.cc
│ │ │ │ └── zlib_compressor_impl.h
│ │ │ └── decompressor/
│ │ │ ├── BUILD
│ │ │ ├── config.cc
│ │ │ ├── config.h
│ │ │ ├── zlib_decompressor_impl.cc
│ │ │ └── zlib_decompressor_impl.h
│ │ ├── extensions_build_config.bzl
│ │ ├── filters/
│ │ │ ├── common/
│ │ │ │ ├── expr/
│ │ │ │ │ ├── BUILD
│ │ │ │ │ ├── context.cc
│ │ │ │ │ ├── context.h
│ │ │ │ │ ├── evaluator.cc
│ │ │ │ │ └── evaluator.h
│ │ │ │ ├── ext_authz/
│ │ │ │ │ ├── BUILD
│ │ │ │ │ ├── check_request_utils.cc
│ │ │ │ │ ├── check_request_utils.h
│ │ │ │ │ ├── ext_authz.h
│ │ │ │ │ ├── ext_authz_grpc_impl.cc
│ │ │ │ │ ├── ext_authz_grpc_impl.h
│ │ │ │ │ ├── ext_authz_http_impl.cc
│ │ │ │ │ └── ext_authz_http_impl.h
│ │ │ │ ├── fault/
│ │ │ │ │ ├── BUILD
│ │ │ │ │ ├── fault_config.cc
│ │ │ │ │ └── fault_config.h
│ │ │ │ ├── local_ratelimit/
│ │ │ │ │ ├── BUILD
│ │ │ │ │ ├── local_ratelimit_impl.cc
│ │ │ │ │ └── local_ratelimit_impl.h
│ │ │ │ ├── lua/
│ │ │ │ │ ├── BUILD
│ │ │ │ │ ├── lua.cc
│ │ │ │ │ ├── lua.h
│ │ │ │ │ ├── wrappers.cc
│ │ │ │ │ └── wrappers.h
│ │ │ │ ├── original_src/
│ │ │ │ │ ├── BUILD
│ │ │ │ │ ├── original_src_socket_option.cc
│ │ │ │ │ ├── original_src_socket_option.h
│ │ │ │ │ ├── socket_option_factory.cc
│ │ │ │ │ └── socket_option_factory.h
│ │ │ │ ├── ratelimit/
│ │ │ │ │ ├── BUILD
│ │ │ │ │ ├── ratelimit.h
│ │ │ │ │ ├── ratelimit_impl.cc
│ │ │ │ │ ├── ratelimit_impl.h
│ │ │ │ │ └── stat_names.h
│ │ │ │ └── rbac/
│ │ │ │ ├── BUILD
│ │ │ │ ├── engine.h
│ │ │ │ ├── engine_impl.cc
│ │ │ │ ├── engine_impl.h
│ │ │ │ ├── matchers.cc
│ │ │ │ ├── matchers.h
│ │ │ │ ├── utility.cc
│ │ │ │ └── utility.h
│ │ │ ├── http/
│ │ │ │ ├── BUILD
│ │ │ │ ├── adaptive_concurrency/
│ │ │ │ │ ├── BUILD
│ │ │ │ │ ├── adaptive_concurrency_filter.cc
│ │ │ │ │ ├── adaptive_concurrency_filter.h
│ │ │ │ │ ├── config.cc
│ │ │ │ │ ├── config.h
│ │ │ │ │ └── controller/
│ │ │ │ │ ├── BUILD
│ │ │ │ │ ├── controller.h
│ │ │ │ │ ├── gradient_controller.cc
│ │ │ │ │ └── gradient_controller.h
│ │ │ │ ├── admission_control/
│ │ │ │ │ ├── BUILD
│ │ │ │ │ ├── admission_control.cc
│ │ │ │ │ ├── admission_control.h
│ │ │ │ │ ├── config.cc
│ │ │ │ │ ├── config.h
│ │ │ │ │ ├── evaluators/
│ │ │ │ │ │ ├── BUILD
│ │ │ │ │ │ ├── response_evaluator.h
│ │ │ │ │ │ ├── success_criteria_evaluator.cc
│ │ │ │ │ │ └── success_criteria_evaluator.h
│ │ │ │ │ ├── thread_local_controller.cc
│ │ │ │ │ └── thread_local_controller.h
│ │ │ │ ├── aws_lambda/
│ │ │ │ │ ├── BUILD
│ │ │ │ │ ├── aws_lambda_filter.cc
│ │ │ │ │ ├── aws_lambda_filter.h
│ │ │ │ │ ├── config.cc
│ │ │ │ │ ├── config.h
│ │ │ │ │ └── request_response.proto
│ │ │ │ ├── aws_request_signing/
│ │ │ │ │ ├── BUILD
│ │ │ │ │ ├── aws_request_signing_filter.cc
│ │ │ │ │ ├── aws_request_signing_filter.h
│ │ │ │ │ ├── config.cc
│ │ │ │ │ └── config.h
│ │ │ │ ├── buffer/
│ │ │ │ │ ├── BUILD
│ │ │ │ │ ├── buffer_filter.cc
│ │ │ │ │ ├── buffer_filter.h
│ │ │ │ │ ├── config.cc
│ │ │ │ │ └── config.h
│ │ │ │ ├── cache/
│ │ │ │ │ ├── BUILD
│ │ │ │ │ ├── cache_filter.cc
│ │ │ │ │ ├── cache_filter.h
│ │ │ │ │ ├── cache_headers_utils.cc
│ │ │ │ │ ├── cache_headers_utils.h
│ │ │ │ │ ├── cacheability_utils.cc
│ │ │ │ │ ├── cacheability_utils.h
│ │ │ │ │ ├── config.cc
│ │ │ │ │ ├── config.h
│ │ │ │ │ ├── http_cache.cc
│ │ │ │ │ ├── http_cache.h
│ │ │ │ │ ├── inline_headers_handles.h
│ │ │ │ │ ├── key.proto
│ │ │ │ │ └── simple_http_cache/
│ │ │ │ │ ├── BUILD
│ │ │ │ │ ├── config.proto
│ │ │ │ │ ├── simple_http_cache.cc
│ │ │ │ │ └── simple_http_cache.h
│ │ │ │ ├── cdn_loop/
│ │ │ │ │ ├── BUILD
│ │ │ │ │ ├── config.cc
│ │ │ │ │ ├── config.h
│ │ │ │ │ ├── filter.cc
│ │ │ │ │ ├── filter.h
│ │ │ │ │ ├── parser.cc
│ │ │ │ │ ├── parser.h
│ │ │ │ │ ├── utils.cc
│ │ │ │ │ └── utils.h
│ │ │ │ ├── common/
│ │ │ │ │ ├── BUILD
│ │ │ │ │ ├── compressor/
│ │ │ │ │ │ ├── BUILD
│ │ │ │ │ │ ├── compressor.cc
│ │ │ │ │ │ └── compressor.h
│ │ │ │ │ ├── factory_base.h
│ │ │ │ │ ├── jwks_fetcher.cc
│ │ │ │ │ ├── jwks_fetcher.h
│ │ │ │ │ ├── pass_through_filter.h
│ │ │ │ │ └── utility.h
│ │ │ │ ├── compressor/
│ │ │ │ │ ├── BUILD
│ │ │ │ │ ├── compressor_filter.cc
│ │ │ │ │ ├── compressor_filter.h
│ │ │ │ │ ├── config.cc
│ │ │ │ │ └── config.h
│ │ │ │ ├── cors/
│ │ │ │ │ ├── BUILD
│ │ │ │ │ ├── config.cc
│ │ │ │ │ ├── config.h
│ │ │ │ │ ├── cors_filter.cc
│ │ │ │ │ └── cors_filter.h
│ │ │ │ ├── csrf/
│ │ │ │ │ ├── BUILD
│ │ │ │ │ ├── config.cc
│ │ │ │ │ ├── config.h
│ │ │ │ │ ├── csrf_filter.cc
│ │ │ │ │ └── csrf_filter.h
│ │ │ │ ├── decompressor/
│ │ │ │ │ ├── BUILD
│ │ │ │ │ ├── config.cc
│ │ │ │ │ ├── config.h
│ │ │ │ │ ├── decompressor_filter.cc
│ │ │ │ │ └── decompressor_filter.h
│ │ │ │ ├── dynamic_forward_proxy/
│ │ │ │ │ ├── BUILD
│ │ │ │ │ ├── config.cc
│ │ │ │ │ ├── config.h
│ │ │ │ │ ├── proxy_filter.cc
│ │ │ │ │ └── proxy_filter.h
│ │ │ │ ├── dynamo/
│ │ │ │ │ ├── BUILD
│ │ │ │ │ ├── config.cc
│ │ │ │ │ ├── config.h
│ │ │ │ │ ├── dynamo_filter.cc
│ │ │ │ │ ├── dynamo_filter.h
│ │ │ │ │ ├── dynamo_request_parser.cc
│ │ │ │ │ ├── dynamo_request_parser.h
│ │ │ │ │ ├── dynamo_stats.cc
│ │ │ │ │ └── dynamo_stats.h
│ │ │ │ ├── ext_authz/
│ │ │ │ │ ├── BUILD
│ │ │ │ │ ├── config.cc
│ │ │ │ │ ├── config.h
│ │ │ │ │ ├── ext_authz.cc
│ │ │ │ │ └── ext_authz.h
│ │ │ │ ├── fault/
│ │ │ │ │ ├── BUILD
│ │ │ │ │ ├── config.cc
│ │ │ │ │ ├── config.h
│ │ │ │ │ ├── fault_filter.cc
│ │ │ │ │ └── fault_filter.h
│ │ │ │ ├── grpc_http1_bridge/
│ │ │ │ │ ├── BUILD
│ │ │ │ │ ├── config.cc
│ │ │ │ │ ├── config.h
│ │ │ │ │ ├── http1_bridge_filter.cc
│ │ │ │ │ └── http1_bridge_filter.h
│ │ │ │ ├── grpc_http1_reverse_bridge/
│ │ │ │ │ ├── BUILD
│ │ │ │ │ ├── config.cc
│ │ │ │ │ ├── config.h
│ │ │ │ │ ├── filter.cc
│ │ │ │ │ └── filter.h
│ │ │ │ ├── grpc_json_transcoder/
│ │ │ │ │ ├── BUILD
│ │ │ │ │ ├── config.cc
│ │ │ │ │ ├── config.h
│ │ │ │ │ ├── http_body_utils.cc
│ │ │ │ │ ├── http_body_utils.h
│ │ │ │ │ ├── json_transcoder_filter.cc
│ │ │ │ │ ├── json_transcoder_filter.h
│ │ │ │ │ ├── transcoder_input_stream_impl.cc
│ │ │ │ │ └── transcoder_input_stream_impl.h
│ │ │ │ ├── grpc_stats/
│ │ │ │ │ ├── BUILD
│ │ │ │ │ ├── grpc_stats_filter.cc
│ │ │ │ │ └── grpc_stats_filter.h
│ │ │ │ ├── grpc_web/
│ │ │ │ │ ├── BUILD
│ │ │ │ │ ├── config.cc
│ │ │ │ │ ├── config.h
│ │ │ │ │ ├── grpc_web_filter.cc
│ │ │ │ │ └── grpc_web_filter.h
│ │ │ │ ├── gzip/
│ │ │ │ │ ├── BUILD
│ │ │ │ │ ├── config.cc
│ │ │ │ │ ├── config.h
│ │ │ │ │ ├── gzip_filter.cc
│ │ │ │ │ └── gzip_filter.h
│ │ │ │ ├── header_to_metadata/
│ │ │ │ │ ├── BUILD
│ │ │ │ │ ├── config.cc
│ │ │ │ │ ├── config.h
│ │ │ │ │ ├── header_to_metadata_filter.cc
│ │ │ │ │ └── header_to_metadata_filter.h
│ │ │ │ ├── health_check/
│ │ │ │ │ ├── BUILD
│ │ │ │ │ ├── config.cc
│ │ │ │ │ ├── config.h
│ │ │ │ │ ├── health_check.cc
│ │ │ │ │ └── health_check.h
│ │ │ │ ├── ip_tagging/
│ │ │ │ │ ├── BUILD
│ │ │ │ │ ├── config.cc
│ │ │ │ │ ├── config.h
│ │ │ │ │ ├── ip_tagging_filter.cc
│ │ │ │ │ └── ip_tagging_filter.h
│ │ │ │ ├── jwt_authn/
│ │ │ │ │ ├── BUILD
│ │ │ │ │ ├── authenticator.cc
│ │ │ │ │ ├── authenticator.h
│ │ │ │ │ ├── extractor.cc
│ │ │ │ │ ├── extractor.h
│ │ │ │ │ ├── filter.cc
│ │ │ │ │ ├── filter.h
│ │ │ │ │ ├── filter_config.cc
│ │ │ │ │ ├── filter_config.h
│ │ │ │ │ ├── filter_factory.cc
│ │ │ │ │ ├── filter_factory.h
│ │ │ │ │ ├── jwks_cache.cc
│ │ │ │ │ ├── jwks_cache.h
│ │ │ │ │ ├── matcher.cc
│ │ │ │ │ ├── matcher.h
│ │ │ │ │ ├── verifier.cc
│ │ │ │ │ └── verifier.h
│ │ │ │ ├── local_ratelimit/
│ │ │ │ │ ├── BUILD
│ │ │ │ │ ├── config.cc
│ │ │ │ │ ├── config.h
│ │ │ │ │ ├── local_ratelimit.cc
│ │ │ │ │ └── local_ratelimit.h
│ │ │ │ ├── lua/
│ │ │ │ │ ├── BUILD
│ │ │ │ │ ├── config.cc
│ │ │ │ │ ├── config.h
│ │ │ │ │ ├── lua_filter.cc
│ │ │ │ │ ├── lua_filter.h
│ │ │ │ │ ├── wrappers.cc
│ │ │ │ │ └── wrappers.h
│ │ │ │ ├── oauth2/
│ │ │ │ │ ├── BUILD
│ │ │ │ │ ├── config.cc
│ │ │ │ │ ├── config.h
│ │ │ │ │ ├── filter.cc
│ │ │ │ │ ├── filter.h
│ │ │ │ │ ├── oauth.h
│ │ │ │ │ ├── oauth_client.cc
│ │ │ │ │ ├── oauth_client.h
│ │ │ │ │ └── oauth_response.proto
│ │ │ │ ├── on_demand/
│ │ │ │ │ ├── BUILD
│ │ │ │ │ ├── config.cc
│ │ │ │ │ ├── config.h
│ │ │ │ │ ├── on_demand_update.cc
│ │ │ │ │ └── on_demand_update.h
│ │ │ │ ├── original_src/
│ │ │ │ │ ├── BUILD
│ │ │ │ │ ├── config.cc
│ │ │ │ │ ├── config.h
│ │ │ │ │ ├── original_src.cc
│ │ │ │ │ ├── original_src.h
│ │ │ │ │ ├── original_src_config_factory.cc
│ │ │ │ │ └── original_src_config_factory.h
│ │ │ │ ├── ratelimit/
│ │ │ │ │ ├── BUILD
│ │ │ │ │ ├── config.cc
│ │ │ │ │ ├── config.h
│ │ │ │ │ ├── ratelimit.cc
│ │ │ │ │ ├── ratelimit.h
│ │ │ │ │ ├── ratelimit_headers.cc
│ │ │ │ │ └── ratelimit_headers.h
│ │ │ │ ├── rbac/
│ │ │ │ │ ├── BUILD
│ │ │ │ │ ├── config.cc
│ │ │ │ │ ├── config.h
│ │ │ │ │ ├── rbac_filter.cc
│ │ │ │ │ └── rbac_filter.h
│ │ │ │ ├── router/
│ │ │ │ │ ├── BUILD
│ │ │ │ │ ├── config.cc
│ │ │ │ │ └── config.h
│ │ │ │ ├── squash/
│ │ │ │ │ ├── BUILD
│ │ │ │ │ ├── config.cc
│ │ │ │ │ ├── config.h
│ │ │ │ │ ├── squash_filter.cc
│ │ │ │ │ └── squash_filter.h
│ │ │ │ ├── tap/
│ │ │ │ │ ├── BUILD
│ │ │ │ │ ├── config.cc
│ │ │ │ │ ├── config.h
│ │ │ │ │ ├── tap_config.h
│ │ │ │ │ ├── tap_config_impl.cc
│ │ │ │ │ ├── tap_config_impl.h
│ │ │ │ │ ├── tap_filter.cc
│ │ │ │ │ └── tap_filter.h
│ │ │ │ ├── wasm/
│ │ │ │ │ ├── BUILD
│ │ │ │ │ ├── config.cc
│ │ │ │ │ ├── config.h
│ │ │ │ │ ├── wasm_filter.cc
│ │ │ │ │ └── wasm_filter.h
│ │ │ │ └── well_known_names.h
│ │ │ ├── listener/
│ │ │ │ ├── BUILD
│ │ │ │ ├── http_inspector/
│ │ │ │ │ ├── BUILD
│ │ │ │ │ ├── config.cc
│ │ │ │ │ ├── http_inspector.cc
│ │ │ │ │ └── http_inspector.h
│ │ │ │ ├── original_dst/
│ │ │ │ │ ├── BUILD
│ │ │ │ │ ├── config.cc
│ │ │ │ │ ├── original_dst.cc
│ │ │ │ │ └── original_dst.h
│ │ │ │ ├── original_src/
│ │ │ │ │ ├── BUILD
│ │ │ │ │ ├── config.cc
│ │ │ │ │ ├── config.h
│ │ │ │ │ ├── original_src.cc
│ │ │ │ │ ├── original_src.h
│ │ │ │ │ ├── original_src_config_factory.cc
│ │ │ │ │ └── original_src_config_factory.h
│ │ │ │ ├── proxy_protocol/
│ │ │ │ │ ├── BUILD
│ │ │ │ │ ├── config.cc
│ │ │ │ │ ├── proxy_protocol.cc
│ │ │ │ │ ├── proxy_protocol.h
│ │ │ │ │ └── proxy_protocol_header.h
│ │ │ │ ├── tls_inspector/
│ │ │ │ │ ├── BUILD
│ │ │ │ │ ├── config.cc
│ │ │ │ │ ├── tls_inspector.cc
│ │ │ │ │ └── tls_inspector.h
│ │ │ │ └── well_known_names.h
│ │ │ ├── network/
│ │ │ │ ├── BUILD
│ │ │ │ ├── client_ssl_auth/
│ │ │ │ │ ├── BUILD
│ │ │ │ │ ├── client_ssl_auth.cc
│ │ │ │ │ ├── client_ssl_auth.h
│ │ │ │ │ ├── config.cc
│ │ │ │ │ └── config.h
│ │ │ │ ├── common/
│ │ │ │ │ ├── BUILD
│ │ │ │ │ ├── factory_base.h
│ │ │ │ │ ├── redis/
│ │ │ │ │ │ ├── BUILD
│ │ │ │ │ │ ├── client.h
│ │ │ │ │ │ ├── client_impl.cc
│ │ │ │ │ │ ├── client_impl.h
│ │ │ │ │ │ ├── codec.h
│ │ │ │ │ │ ├── codec_impl.cc
│ │ │ │ │ │ ├── codec_impl.h
│ │ │ │ │ │ ├── fault.h
│ │ │ │ │ │ ├── fault_impl.cc
│ │ │ │ │ │ ├── fault_impl.h
│ │ │ │ │ │ ├── redis_command_stats.cc
│ │ │ │ │ │ ├── redis_command_stats.h
│ │ │ │ │ │ ├── supported_commands.h
│ │ │ │ │ │ ├── utility.cc
│ │ │ │ │ │ └── utility.h
│ │ │ │ │ └── utility.h
│ │ │ │ ├── direct_response/
│ │ │ │ │ ├── BUILD
│ │ │ │ │ ├── config.cc
│ │ │ │ │ ├── filter.cc
│ │ │ │ │ └── filter.h
│ │ │ │ ├── dubbo_proxy/
│ │ │ │ │ ├── BUILD
│ │ │ │ │ ├── active_message.cc
│ │ │ │ │ ├── active_message.h
│ │ │ │ │ ├── app_exception.cc
│ │ │ │ │ ├── app_exception.h
│ │ │ │ │ ├── buffer_helper.cc
│ │ │ │ │ ├── buffer_helper.h
│ │ │ │ │ ├── config.cc
│ │ │ │ │ ├── config.h
│ │ │ │ │ ├── conn_manager.cc
│ │ │ │ │ ├── conn_manager.h
│ │ │ │ │ ├── decoder.cc
│ │ │ │ │ ├── decoder.h
│ │ │ │ │ ├── decoder_event_handler.h
│ │ │ │ │ ├── dubbo_hessian2_serializer_impl.cc
│ │ │ │ │ ├── dubbo_hessian2_serializer_impl.h
│ │ │ │ │ ├── dubbo_protocol_impl.cc
│ │ │ │ │ ├── dubbo_protocol_impl.h
│ │ │ │ │ ├── filters/
│ │ │ │ │ │ ├── BUILD
│ │ │ │ │ │ ├── factory_base.h
│ │ │ │ │ │ ├── filter.h
│ │ │ │ │ │ ├── filter_config.h
│ │ │ │ │ │ └── well_known_names.h
│ │ │ │ │ ├── heartbeat_response.cc
│ │ │ │ │ ├── heartbeat_response.h
│ │ │ │ │ ├── hessian_utils.cc
│ │ │ │ │ ├── hessian_utils.h
│ │ │ │ │ ├── message.h
│ │ │ │ │ ├── message_impl.h
│ │ │ │ │ ├── metadata.h
│ │ │ │ │ ├── protocol.h
│ │ │ │ │ ├── protocol_constants.h
│ │ │ │ │ ├── router/
│ │ │ │ │ │ ├── BUILD
│ │ │ │ │ │ ├── config.cc
│ │ │ │ │ │ ├── config.h
│ │ │ │ │ │ ├── route.h
│ │ │ │ │ │ ├── route_matcher.cc
│ │ │ │ │ │ ├── route_matcher.h
│ │ │ │ │ │ ├── router.h
│ │ │ │ │ │ ├── router_impl.cc
│ │ │ │ │ │ └── router_impl.h
│ │ │ │ │ ├── serializer.h
│ │ │ │ │ ├── serializer_impl.cc
│ │ │ │ │ ├── serializer_impl.h
│ │ │ │ │ └── stats.h
│ │ │ │ ├── echo/
│ │ │ │ │ ├── BUILD
│ │ │ │ │ ├── config.cc
│ │ │ │ │ ├── echo.cc
│ │ │ │ │ └── echo.h
│ │ │ │ ├── ext_authz/
│ │ │ │ │ ├── BUILD
│ │ │ │ │ ├── config.cc
│ │ │ │ │ ├── config.h
│ │ │ │ │ ├── ext_authz.cc
│ │ │ │ │ └── ext_authz.h
│ │ │ │ ├── http_connection_manager/
│ │ │ │ │ ├── BUILD
│ │ │ │ │ ├── config.cc
│ │ │ │ │ └── config.h
│ │ │ │ ├── kafka/
│ │ │ │ │ ├── BUILD
│ │ │ │ │ ├── broker/
│ │ │ │ │ │ ├── config.cc
│ │ │ │ │ │ ├── config.h
│ │ │ │ │ │ ├── filter.cc
│ │ │ │ │ │ └── filter.h
│ │ │ │ │ ├── codec.h
│ │ │ │ │ ├── kafka_request.h
│ │ │ │ │ ├── kafka_request_parser.cc
│ │ │ │ │ ├── kafka_request_parser.h
│ │ │ │ │ ├── kafka_response.h
│ │ │ │ │ ├── kafka_response_parser.cc
│ │ │ │ │ ├── kafka_response_parser.h
│ │ │ │ │ ├── kafka_types.h
│ │ │ │ │ ├── parser.h
│ │ │ │ │ ├── protocol/
│ │ │ │ │ │ ├── complex_type_template.j2
│ │ │ │ │ │ ├── generator.py
│ │ │ │ │ │ ├── kafka_request_resolver_cc.j2
│ │ │ │ │ │ ├── kafka_response_resolver_cc.j2
│ │ │ │ │ │ ├── launcher.py
│ │ │ │ │ │ ├── request_metrics_h.j2
│ │ │ │ │ │ ├── request_parser.j2
│ │ │ │ │ │ ├── requests_h.j2
│ │ │ │ │ │ ├── response_metrics_h.j2
│ │ │ │ │ │ ├── response_parser.j2
│ │ │ │ │ │ └── responses_h.j2
│ │ │ │ │ ├── request_codec.cc
│ │ │ │ │ ├── request_codec.h
│ │ │ │ │ ├── requirements.txt
│ │ │ │ │ ├── response_codec.cc
│ │ │ │ │ ├── response_codec.h
│ │ │ │ │ ├── serialization/
│ │ │ │ │ │ ├── generator.py
│ │ │ │ │ │ ├── launcher.py
│ │ │ │ │ │ └── serialization_composite_h.j2
│ │ │ │ │ ├── serialization.cc
│ │ │ │ │ ├── serialization.h
│ │ │ │ │ └── tagged_fields.h
│ │ │ │ ├── local_ratelimit/
│ │ │ │ │ ├── BUILD
│ │ │ │ │ ├── config.cc
│ │ │ │ │ ├── config.h
│ │ │ │ │ ├── local_ratelimit.cc
│ │ │ │ │ └── local_ratelimit.h
│ │ │ │ ├── mongo_proxy/
│ │ │ │ │ ├── BUILD
│ │ │ │ │ ├── bson.h
│ │ │ │ │ ├── bson_impl.cc
│ │ │ │ │ ├── bson_impl.h
│ │ │ │ │ ├── codec.h
│ │ │ │ │ ├── codec_impl.cc
│ │ │ │ │ ├── codec_impl.h
│ │ │ │ │ ├── config.cc
│ │ │ │ │ ├── config.h
│ │ │ │ │ ├── mongo_stats.cc
│ │ │ │ │ ├── mongo_stats.h
│ │ │ │ │ ├── proxy.cc
│ │ │ │ │ ├── proxy.h
│ │ │ │ │ ├── utility.cc
│ │ │ │ │ └── utility.h
│ │ │ │ ├── mysql_proxy/
│ │ │ │ │ ├── BUILD
│ │ │ │ │ ├── mysql_codec.h
│ │ │ │ │ ├── mysql_codec_clogin.cc
│ │ │ │ │ ├── mysql_codec_clogin.h
│ │ │ │ │ ├── mysql_codec_clogin_resp.cc
│ │ │ │ │ ├── mysql_codec_clogin_resp.h
│ │ │ │ │ ├── mysql_codec_command.cc
│ │ │ │ │ ├── mysql_codec_command.h
│ │ │ │ │ ├── mysql_codec_greeting.cc
│ │ │ │ │ ├── mysql_codec_greeting.h
│ │ │ │ │ ├── mysql_codec_switch_resp.cc
│ │ │ │ │ ├── mysql_codec_switch_resp.h
│ │ │ │ │ ├── mysql_config.cc
│ │ │ │ │ ├── mysql_config.h
│ │ │ │ │ ├── mysql_decoder.cc
│ │ │ │ │ ├── mysql_decoder.h
│ │ │ │ │ ├── mysql_filter.cc
│ │ │ │ │ ├── mysql_filter.h
│ │ │ │ │ ├── mysql_session.h
│ │ │ │ │ ├── mysql_utils.cc
│ │ │ │ │ └── mysql_utils.h
│ │ │ │ ├── postgres_proxy/
│ │ │ │ │ ├── BUILD
│ │ │ │ │ ├── config.cc
│ │ │ │ │ ├── config.h
│ │ │ │ │ ├── postgres_decoder.cc
│ │ │ │ │ ├── postgres_decoder.h
│ │ │ │ │ ├── postgres_filter.cc
│ │ │ │ │ ├── postgres_filter.h
│ │ │ │ │ ├── postgres_message.cc
│ │ │ │ │ ├── postgres_message.h
│ │ │ │ │ └── postgres_session.h
│ │ │ │ ├── ratelimit/
│ │ │ │ │ ├── BUILD
│ │ │ │ │ ├── config.cc
│ │ │ │ │ ├── config.h
│ │ │ │ │ ├── ratelimit.cc
│ │ │ │ │ └── ratelimit.h
│ │ │ │ ├── rbac/
│ │ │ │ │ ├── BUILD
│ │ │ │ │ ├── config.cc
│ │ │ │ │ ├── config.h
│ │ │ │ │ ├── rbac_filter.cc
│ │ │ │ │ └── rbac_filter.h
│ │ │ │ ├── redis_proxy/
│ │ │ │ │ ├── BUILD
│ │ │ │ │ ├── command_splitter.h
│ │ │ │ │ ├── command_splitter_impl.cc
│ │ │ │ │ ├── command_splitter_impl.h
│ │ │ │ │ ├── config.cc
│ │ │ │ │ ├── config.h
│ │ │ │ │ ├── conn_pool.h
│ │ │ │ │ ├── conn_pool_impl.cc
│ │ │ │ │ ├── conn_pool_impl.h
│ │ │ │ │ ├── proxy_filter.cc
│ │ │ │ │ ├── proxy_filter.h
│ │ │ │ │ ├── router.h
│ │ │ │ │ ├── router_impl.cc
│ │ │ │ │ └── router_impl.h
│ │ │ │ ├── rocketmq_proxy/
│ │ │ │ │ ├── BUILD
│ │ │ │ │ ├── active_message.cc
│ │ │ │ │ ├── active_message.h
│ │ │ │ │ ├── codec.cc
│ │ │ │ │ ├── codec.h
│ │ │ │ │ ├── config.cc
│ │ │ │ │ ├── config.h
│ │ │ │ │ ├── conn_manager.cc
│ │ │ │ │ ├── conn_manager.h
│ │ │ │ │ ├── metadata.h
│ │ │ │ │ ├── protocol.cc
│ │ │ │ │ ├── protocol.h
│ │ │ │ │ ├── router/
│ │ │ │ │ │ ├── BUILD
│ │ │ │ │ │ ├── route_matcher.cc
│ │ │ │ │ │ ├── route_matcher.h
│ │ │ │ │ │ ├── router.h
│ │ │ │ │ │ ├── router_impl.cc
│ │ │ │ │ │ └── router_impl.h
│ │ │ │ │ ├── stats.h
│ │ │ │ │ ├── topic_route.cc
│ │ │ │ │ ├── topic_route.h
│ │ │ │ │ └── well_known_names.h
│ │ │ │ ├── sni_cluster/
│ │ │ │ │ ├── BUILD
│ │ │ │ │ ├── config.cc
│ │ │ │ │ ├── config.h
│ │ │ │ │ ├── sni_cluster.cc
│ │ │ │ │ └── sni_cluster.h
│ │ │ │ ├── sni_dynamic_forward_proxy/
│ │ │ │ │ ├── BUILD
│ │ │ │ │ ├── config.cc
│ │ │ │ │ ├── config.h
│ │ │ │ │ ├── proxy_filter.cc
│ │ │ │ │ └── proxy_filter.h
│ │ │ │ ├── tcp_proxy/
│ │ │ │ │ ├── BUILD
│ │ │ │ │ ├── config.cc
│ │ │ │ │ └── config.h
│ │ │ │ ├── thrift_proxy/
│ │ │ │ │ ├── BUILD
│ │ │ │ │ ├── app_exception_impl.cc
│ │ │ │ │ ├── app_exception_impl.h
│ │ │ │ │ ├── auto_protocol_impl.cc
│ │ │ │ │ ├── auto_protocol_impl.h
│ │ │ │ │ ├── auto_transport_impl.cc
│ │ │ │ │ ├── auto_transport_impl.h
│ │ │ │ │ ├── binary_protocol_impl.cc
│ │ │ │ │ ├── binary_protocol_impl.h
│ │ │ │ │ ├── buffer_helper.cc
│ │ │ │ │ ├── buffer_helper.h
│ │ │ │ │ ├── compact_protocol_impl.cc
│ │ │ │ │ ├── compact_protocol_impl.h
│ │ │ │ │ ├── config.cc
│ │ │ │ │ ├── config.h
│ │ │ │ │ ├── conn_manager.cc
│ │ │ │ │ ├── conn_manager.h
│ │ │ │ │ ├── conn_state.h
│ │ │ │ │ ├── decoder.cc
│ │ │ │ │ ├── decoder.h
│ │ │ │ │ ├── decoder_events.h
│ │ │ │ │ ├── docs/
│ │ │ │ │ │ ├── thrift_state_machine.dot
│ │ │ │ │ │ └── thrift_state_machine.md
│ │ │ │ │ ├── filters/
│ │ │ │ │ │ ├── BUILD
│ │ │ │ │ │ ├── factory_base.h
│ │ │ │ │ │ ├── filter.h
│ │ │ │ │ │ ├── filter_config.h
│ │ │ │ │ │ ├── pass_through_filter.h
│ │ │ │ │ │ ├── ratelimit/
│ │ │ │ │ │ │ ├── BUILD
│ │ │ │ │ │ │ ├── config.cc
│ │ │ │ │ │ │ ├── config.h
│ │ │ │ │ │ │ ├── ratelimit.cc
│ │ │ │ │ │ │ └── ratelimit.h
│ │ │ │ │ │ └── well_known_names.h
│ │ │ │ │ ├── framed_transport_impl.cc
│ │ │ │ │ ├── framed_transport_impl.h
│ │ │ │ │ ├── header_transport_impl.cc
│ │ │ │ │ ├── header_transport_impl.h
│ │ │ │ │ ├── metadata.h
│ │ │ │ │ ├── protocol.h
│ │ │ │ │ ├── protocol_converter.h
│ │ │ │ │ ├── router/
│ │ │ │ │ │ ├── BUILD
│ │ │ │ │ │ ├── config.cc
│ │ │ │ │ │ ├── config.h
│ │ │ │ │ │ ├── router.h
│ │ │ │ │ │ ├── router_impl.cc
│ │ │ │ │ │ ├── router_impl.h
│ │ │ │ │ │ ├── router_ratelimit.h
│ │ │ │ │ │ ├── router_ratelimit_impl.cc
│ │ │ │ │ │ └── router_ratelimit_impl.h
│ │ │ │ │ ├── stats.h
│ │ │ │ │ ├── thrift.h
│ │ │ │ │ ├── thrift_object.h
│ │ │ │ │ ├── thrift_object_impl.cc
│ │ │ │ │ ├── thrift_object_impl.h
│ │ │ │ │ ├── tracing.h
│ │ │ │ │ ├── transport.h
│ │ │ │ │ ├── twitter_protocol_impl.cc
│ │ │ │ │ ├── twitter_protocol_impl.h
│ │ │ │ │ ├── unframed_transport_impl.cc
│ │ │ │ │ └── unframed_transport_impl.h
│ │ │ │ ├── wasm/
│ │ │ │ │ ├── BUILD
│ │ │ │ │ ├── config.cc
│ │ │ │ │ ├── config.h
│ │ │ │ │ ├── wasm_filter.cc
│ │ │ │ │ └── wasm_filter.h
│ │ │ │ ├── well_known_names.h
│ │ │ │ └── zookeeper_proxy/
│ │ │ │ ├── BUILD
│ │ │ │ ├── config.cc
│ │ │ │ ├── config.h
│ │ │ │ ├── decoder.cc
│ │ │ │ ├── decoder.h
│ │ │ │ ├── filter.cc
│ │ │ │ ├── filter.h
│ │ │ │ ├── utils.cc
│ │ │ │ └── utils.h
│ │ │ └── udp/
│ │ │ ├── dns_filter/
│ │ │ │ ├── BUILD
│ │ │ │ ├── config.cc
│ │ │ │ ├── config.h
│ │ │ │ ├── dns_filter.cc
│ │ │ │ ├── dns_filter.h
│ │ │ │ ├── dns_filter_constants.h
│ │ │ │ ├── dns_filter_resolver.cc
│ │ │ │ ├── dns_filter_resolver.h
│ │ │ │ ├── dns_filter_utils.cc
│ │ │ │ ├── dns_filter_utils.h
│ │ │ │ ├── dns_parser.cc
│ │ │ │ └── dns_parser.h
│ │ │ └── udp_proxy/
│ │ │ ├── BUILD
│ │ │ ├── config.cc
│ │ │ ├── config.h
│ │ │ ├── hash_policy_impl.cc
│ │ │ ├── hash_policy_impl.h
│ │ │ ├── udp_proxy_filter.cc
│ │ │ └── udp_proxy_filter.h
│ │ ├── grpc_credentials/
│ │ │ ├── BUILD
│ │ │ ├── aws_iam/
│ │ │ │ ├── BUILD
│ │ │ │ ├── config.cc
│ │ │ │ └── config.h
│ │ │ ├── example/
│ │ │ │ ├── BUILD
│ │ │ │ ├── config.cc
│ │ │ │ └── config.h
│ │ │ ├── file_based_metadata/
│ │ │ │ ├── BUILD
│ │ │ │ ├── config.cc
│ │ │ │ └── config.h
│ │ │ └── well_known_names.h
│ │ ├── health_checkers/
│ │ │ ├── BUILD
│ │ │ ├── redis/
│ │ │ │ ├── BUILD
│ │ │ │ ├── config.cc
│ │ │ │ ├── config.h
│ │ │ │ ├── redis.cc
│ │ │ │ ├── redis.h
│ │ │ │ └── utility.h
│ │ │ └── well_known_names.h
│ │ ├── internal_redirect/
│ │ │ ├── BUILD
│ │ │ ├── allow_listed_routes/
│ │ │ │ ├── BUILD
│ │ │ │ ├── allow_listed_routes.h
│ │ │ │ ├── config.cc
│ │ │ │ └── config.h
│ │ │ ├── previous_routes/
│ │ │ │ ├── BUILD
│ │ │ │ ├── config.cc
│ │ │ │ ├── config.h
│ │ │ │ ├── previous_routes.cc
│ │ │ │ └── previous_routes.h
│ │ │ ├── safe_cross_scheme/
│ │ │ │ ├── BUILD
│ │ │ │ ├── config.cc
│ │ │ │ ├── config.h
│ │ │ │ └── safe_cross_scheme.h
│ │ │ └── well_known_names.h
│ │ ├── quic_listeners/
│ │ │ └── quiche/
│ │ │ ├── BUILD
│ │ │ ├── active_quic_listener.cc
│ │ │ ├── active_quic_listener.h
│ │ │ ├── active_quic_listener_config.cc
│ │ │ ├── active_quic_listener_config.h
│ │ │ ├── codec_impl.cc
│ │ │ ├── codec_impl.h
│ │ │ ├── envoy_quic_alarm.cc
│ │ │ ├── envoy_quic_alarm.h
│ │ │ ├── envoy_quic_alarm_factory.cc
│ │ │ ├── envoy_quic_alarm_factory.h
│ │ │ ├── envoy_quic_client_connection.cc
│ │ │ ├── envoy_quic_client_connection.h
│ │ │ ├── envoy_quic_client_session.cc
│ │ │ ├── envoy_quic_client_session.h
│ │ │ ├── envoy_quic_client_stream.cc
│ │ │ ├── envoy_quic_client_stream.h
│ │ │ ├── envoy_quic_connection.cc
│ │ │ ├── envoy_quic_connection.h
│ │ │ ├── envoy_quic_connection_helper.h
│ │ │ ├── envoy_quic_dispatcher.cc
│ │ │ ├── envoy_quic_dispatcher.h
│ │ │ ├── envoy_quic_packet_writer.cc
│ │ │ ├── envoy_quic_packet_writer.h
│ │ │ ├── envoy_quic_proof_source.cc
│ │ │ ├── envoy_quic_proof_source.h
│ │ │ ├── envoy_quic_proof_source_base.cc
│ │ │ ├── envoy_quic_proof_source_base.h
│ │ │ ├── envoy_quic_proof_verifier.cc
│ │ │ ├── envoy_quic_proof_verifier.h
│ │ │ ├──
================================================
FILE CONTENTS
================================================
================================================
FILE: .azure-pipelines/bazel.yml
================================================
parameters:
- name: ciTarget
displayName: "CI target"
type: string
default: bazel.release
- name: artifactSuffix
displayName: "Suffix of artifact"
type: string
default: ""
- name: rbe
displayName: "Enable RBE"
type: boolean
default: true
- name: managedAgent
type: boolean
default: true
- name: bazelBuildExtraOptions
type: string
default: "--flaky_test_attempts=2"
steps:
- task: Cache@2
inputs:
key: '"${{ parameters.ciTarget }}" | ./WORKSPACE | **/*.bzl'
path: $(Build.StagingDirectory)/repository_cache
continueOnError: true
- bash: .azure-pipelines/cleanup.sh
displayName: "Removing tools from agent"
condition: ${{ parameters.managedAgent }}
- bash: |
echo "disk space at beginning of build:"
df -h
displayName: "Check disk space at beginning"
- bash: |
sudo mkdir -p /etc/docker
echo '{
"ipv6": true,
"fixed-cidr-v6": "2001:db8:1::/64"
}' | sudo tee /etc/docker/daemon.json
sudo service docker restart
displayName: "Enable IPv6"
condition: ${{ parameters.managedAgent }}
- script: ci/run_envoy_docker.sh 'ci/do_ci.sh ${{ parameters.ciTarget }}'
workingDirectory: $(Build.SourcesDirectory)
env:
ENVOY_DOCKER_BUILD_DIR: $(Build.StagingDirectory)
SLACK_TOKEN: $(SLACK_TOKEN)
REPO_URI: $(Build.Repository.Uri)
BUILD_URI: $(Build.BuildUri)
${{ if parameters.rbe }}:
ENVOY_RBE: "1"
BAZEL_BUILD_EXTRA_OPTIONS: "--config=remote-ci --jobs=$(RbeJobs) ${{ parameters.bazelBuildExtraOptions }}"
BAZEL_REMOTE_CACHE: grpcs://remotebuildexecution.googleapis.com
BAZEL_REMOTE_INSTANCE: projects/envoy-ci/instances/default_instance
GCP_SERVICE_ACCOUNT_KEY: $(GcpServiceAccountKey)
${{ if eq(parameters.rbe, false) }}:
BAZEL_BUILD_EXTRA_OPTIONS: "${{ parameters.bazelBuildExtraOptions }}"
BAZEL_REMOTE_CACHE: $(LocalBuildCache)
displayName: "Run CI script"
- bash: |
echo "disk space at end of build:"
df -h
displayName: "Check disk space at end"
condition: always()
- task: PublishTestResults@2
inputs:
testResultsFiles: "**/bazel-out/**/testlogs/**/test.xml"
testRunTitle: "${{ parameters.ciTarget }}"
searchFolder: $(Build.StagingDirectory)/tmp
condition: always()
- task: PublishBuildArtifacts@1
inputs:
pathtoPublish: "$(Build.StagingDirectory)/envoy"
artifactName: ${{ parameters.ciTarget }}${{ parameters.artifactSuffix }}
condition: always()
================================================
FILE: .azure-pipelines/cleanup.sh
================================================
#!/bin/bash
set -e
# Temporary script to remove tools from Azure pipelines agent to create more disk space room.
sudo apt-get update -y
sudo apt-get purge -y --no-upgrade 'ghc-*' 'zulu-*-azure-jdk' 'libllvm*' 'mysql-*' 'dotnet-*' 'libgl1' \
'adoptopenjdk-*' 'azure-cli' 'google-chrome-stable' 'firefox' 'hhvm'
dpkg-query -Wf '${Installed-Size}\t${Package}\n' | sort -rn
================================================
FILE: .azure-pipelines/pipelines.yml
================================================
trigger:
branches:
include:
- "master"
- "release/v*"
tags:
include:
- "v*"
# PR build config is manually overridden in Azure pipelines UI with different secrets
pr: none
jobs:
- job: format
dependsOn: [] # this removes the implicit dependency on previous stage and causes this to run in parallel.
pool:
vmImage: "ubuntu-18.04"
steps:
- task: Cache@2
inputs:
key: "format | ./WORKSPACE | **/*.bzl"
path: $(Build.StagingDirectory)/repository_cache
continueOnError: true
- script: ci/run_envoy_docker.sh 'ci/check_and_fix_format.sh'
workingDirectory: $(Build.SourcesDirectory)
env:
ENVOY_DOCKER_BUILD_DIR: $(Build.StagingDirectory)
BAZEL_REMOTE_CACHE: grpcs://remotebuildexecution.googleapis.com
BAZEL_REMOTE_INSTANCE: projects/envoy-ci/instances/default_instance
GCP_SERVICE_ACCOUNT_KEY: $(GcpServiceAccountKey)
displayName: "Run check format scripts"
- task: PublishBuildArtifacts@1
inputs:
pathtoPublish: "$(Build.StagingDirectory)/fix_format.diff"
artifactName: format
condition: failed()
- job: release
displayName: "Linux-x64 release"
dependsOn: ["format"]
# For master builds, continue even if format fails
condition: and(not(canceled()), or(succeeded(), ne(variables['Build.Reason'], 'PullRequest')))
timeoutInMinutes: 360
pool:
vmImage: "ubuntu-18.04"
steps:
- template: bazel.yml
parameters:
ciTarget: bazel.release
- job: release_arm64
displayName: "Linux-arm64 release"
dependsOn: ["format"]
# For master builds, continue even if format fails
condition: and(not(canceled()), or(succeeded(), ne(variables['Build.Reason'], 'PullRequest')))
timeoutInMinutes: 360
pool: "arm-large"
steps:
- template: bazel.yml
parameters:
managedAgent: false
ciTarget: bazel.release
rbe: false
artifactSuffix: ".arm64"
bazelBuildExtraOptions: "--sandbox_base=/tmp/sandbox_base"
- job: bazel
displayName: "Linux-x64"
dependsOn: ["release"]
# For master builds, continue even if format fails
condition: and(not(canceled()), or(succeeded(), ne(variables['Build.Reason'], 'PullRequest')))
strategy:
maxParallel: 3
matrix:
gcc:
CI_TARGET: "bazel.gcc"
clang_tidy:
CI_TARGET: "bazel.clang_tidy"
asan:
CI_TARGET: "bazel.asan"
tsan:
CI_TARGET: "bazel.tsan"
compile_time_options:
CI_TARGET: "bazel.compile_time_options"
timeoutInMinutes: 360
pool:
vmImage: "ubuntu-18.04"
steps:
- template: bazel.yml
parameters:
ciTarget: $(CI_TARGET)
- job: coverage
displayName: "Linux-x64"
dependsOn: ["release"]
timeoutInMinutes: 360
pool: "x64-large"
strategy:
maxParallel: 2
matrix:
coverage:
CI_TARGET: "coverage"
fuzz_coverage:
CI_TARGET: "fuzz_coverage"
steps:
- template: bazel.yml
parameters:
managedAgent: false
ciTarget: bazel.$(CI_TARGET)
rbe: false
# /tmp/sandbox_base is a tmpfs in CI environment to optimize large I/O for coverage traces
bazelBuildExtraOptions: "--define=no_debug_info=1 --linkopt=-Wl,-s --test_env=ENVOY_IP_TEST_VERSIONS=v4only --sandbox_base=/tmp/sandbox_base"
- script: ci/run_envoy_docker.sh 'ci/upload_gcs_artifact.sh /source/generated/$(CI_TARGET) $(CI_TARGET)'
displayName: "Upload $(CI_TARGET) Report to GCS"
env:
ENVOY_DOCKER_BUILD_DIR: $(Build.StagingDirectory)
GCP_SERVICE_ACCOUNT_KEY: $(GcpServiceAccountKey)
GCS_ARTIFACT_BUCKET: $(GcsArtifactBucket)
condition: always()
- job: docker
displayName: "Linux multi-arch docker"
dependsOn: ["release", "release_arm64"]
pool:
vmImage: "ubuntu-18.04"
steps:
- bash: .azure-pipelines/cleanup.sh
displayName: "Removing tools from agent"
- task: DownloadBuildArtifacts@0
inputs:
buildType: current
artifactName: "bazel.release"
itemPattern: "bazel.release/envoy_binary.tar.gz"
downloadType: single
targetPath: $(Build.StagingDirectory)
- task: DownloadBuildArtifacts@0
inputs:
buildType: current
artifactName: "bazel.release.arm64"
itemPattern: "bazel.release.arm64/envoy_binary.tar.gz"
downloadType: single
targetPath: $(Build.StagingDirectory)
- bash: |
set -e
mkdir -p linux/amd64 && tar zxf $(Build.StagingDirectory)/bazel.release/envoy_binary.tar.gz -C ./linux/amd64
mkdir -p linux/arm64 && tar zxf $(Build.StagingDirectory)/bazel.release.arm64/envoy_binary.tar.gz -C ./linux/arm64
ci/docker_ci.sh
workingDirectory: $(Build.SourcesDirectory)
env:
AZP_BRANCH: $(Build.SourceBranch)
AZP_SHA1: $(Build.SourceVersion)
DOCKERHUB_USERNAME: $(DockerUsername)
DOCKERHUB_PASSWORD: $(DockerPassword)
- task: PublishBuildArtifacts@1
inputs:
pathtoPublish: "$(Build.StagingDirectory)/build_images"
artifactName: docker
condition: always()
- job: examples
dependsOn: ["docker"]
displayName: "Verify examples run as documented"
pool:
vmImage: "ubuntu-18.04"
steps:
- task: DownloadBuildArtifacts@0
inputs:
buildType: current
artifactName: "docker"
itemPattern: "docker/envoy-docker-images.tar.xz"
downloadType: single
targetPath: $(Build.StagingDirectory)
- bash: ./ci/do_ci.sh verify_examples
env:
ENVOY_DOCKER_BUILD_DIR: $(Build.StagingDirectory)
NO_BUILD_SETUP: 1
- job: macOS
dependsOn: ["format"]
timeoutInMinutes: 360
pool:
vmImage: "macos-latest"
steps:
- script: ./ci/mac_ci_setup.sh
displayName: "Install dependencies"
- script: ./ci/mac_ci_steps.sh
displayName: "Run Mac CI"
env:
BAZEL_BUILD_EXTRA_OPTIONS: "--remote_download_toplevel --flaky_test_attempts=2"
BAZEL_REMOTE_CACHE: grpcs://remotebuildexecution.googleapis.com
BAZEL_REMOTE_INSTANCE: projects/envoy-ci/instances/default_instance
GCP_SERVICE_ACCOUNT_KEY: $(GcpServiceAccountKey)
- task: PublishTestResults@2
inputs:
testResultsFiles: "**/bazel-testlogs/**/test.xml"
testRunTitle: "macOS"
condition: always()
- script: ./ci/flaky_test/run_process_xml_mac.sh
displayName: "Process Test Results"
env:
TEST_TMPDIR: $(Build.SourcesDirectory)
SLACK_TOKEN: $(SLACK_TOKEN)
CI_TARGET: "MacOS"
REPO_URI: $(Build.Repository.Uri)
BUILD_URI: $(Build.BuildUri)
- job: Windows
dependsOn: ["format"]
timeoutInMinutes: 360
pool:
vmImage: "windows-latest"
steps:
- bash: ci/run_envoy_docker.sh ci/windows_ci_steps.sh
displayName: "Run Windows CI"
env:
ENVOY_DOCKER_BUILD_DIR: "$(Build.StagingDirectory)"
ENVOY_RBE: "true"
BAZEL_BUILD_EXTRA_OPTIONS: "--config=remote-ci --config=remote-msvc-cl --jobs=$(RbeJobs)"
BAZEL_REMOTE_CACHE: grpcs://remotebuildexecution.googleapis.com
BAZEL_REMOTE_INSTANCE: projects/envoy-ci/instances/default_instance
GCP_SERVICE_ACCOUNT_KEY: $(GcpServiceAccountKey)
- task: PublishBuildArtifacts@1
inputs:
pathtoPublish: "$(Build.StagingDirectory)/envoy"
artifactName: windows.release
condition: always()
================================================
FILE: .bazelci/presubmit.yml
================================================
---
tasks:
rbe:
name: "RBE"
platform: ubuntu1804
test_targets:
- "//test/common/common/..."
- "//test/integration/..."
- "//test/exe/..."
test_flags:
- "--config=remote-clang-libc++"
- "--config=remote-ci"
- "--jobs=75"
coverage:
name: "Coverage"
platform: ubuntu1804
shell_commands:
- "bazel/setup_clang.sh /usr/lib/llvm-10"
test_targets:
- "//test/common/common/..."
- "//test/integration/..."
- "//test/exe/..."
test_flags:
- "--config=coverage"
- "--config=clang"
================================================
FILE: .bazelignore
================================================
api
examples/grpc-bridge/script
tools/clang_tools
================================================
FILE: .bazelrc
================================================
# Envoy specific Bazel build/test options.
# Bazel doesn't need more than 200MB of memory for local build based on memory profiling:
# https://docs.bazel.build/versions/master/skylark/performance.html#memory-profiling
# The default JVM max heapsize is 1/4 of physical memory up to 32GB which could be large
# enough to consume all memory constrained by cgroup in large host, which is the case in CircleCI.
# Limiting JVM heapsize here to let it do GC more when approaching the limit to
# leave room for compiler/linker.
# The number 2G is choosed heuristically to both support in CircleCI and large enough for RBE.
# Startup options cannot be selected via config.
startup --host_jvm_args=-Xmx2g
build --workspace_status_command="bash bazel/get_workspace_status"
build --experimental_strict_action_env=true
build --host_force_python=PY3
build --action_env=BAZEL_LINKLIBS=-l%:libstdc++.a
build --action_env=BAZEL_LINKOPTS=-lm
build --host_javabase=@bazel_tools//tools/jdk:remote_jdk11
build --javabase=@bazel_tools//tools/jdk:remote_jdk11
build --enable_platform_specific_config
# Enable position independent code, this option is not supported on Windows and default on on macOS.
build:linux --copt=-fPIC
build:linux --cxxopt=-std=c++17
build:linux --conlyopt=-fexceptions
build:linux --fission=dbg,opt
build:linux --features=per_object_debug_info
# We already have absl in the build, define absl=1 to tell googletest to use absl for backtrace.
build --define absl=1
# Pass PATH, CC, CXX and LLVM_CONFIG variables from the environment.
build --action_env=CC
build --action_env=CXX
build --action_env=LLVM_CONFIG
build --action_env=PATH
# Common flags for sanitizers
build:sanitizer --define tcmalloc=disabled
build:sanitizer --linkopt -ldl
build:sanitizer --build_tag_filters=-no_san
build:sanitizer --test_tag_filters=-no_san
# Common flags for Clang
build:clang --action_env=BAZEL_COMPILER=clang
build:clang --linkopt=-fuse-ld=lld
# Basic ASAN/UBSAN that works for gcc
build:asan --action_env=ENVOY_ASAN=1
build:asan --config=sanitizer
# ASAN install its signal handler, disable ours so the stacktrace will be printed by ASAN
build:asan --define signal_trace=disabled
build:asan --define ENVOY_CONFIG_ASAN=1
build:asan --copt -fsanitize=address,undefined
build:asan --linkopt -fsanitize=address,undefined
# vptr and function sanitizer are enabled in clang-asan if it is set up via bazel/setup_clang.sh.
build:asan --copt -fno-sanitize=vptr,function
build:asan --linkopt -fno-sanitize=vptr,function
build:asan --copt -DADDRESS_SANITIZER=1
build:asan --copt -D__SANITIZE_ADDRESS__
build:asan --test_env=ASAN_OPTIONS=handle_abort=1:allow_addr2line=true:check_initialization_order=true:strict_init_order=true:detect_odr_violation=1
build:asan --test_env=UBSAN_OPTIONS=halt_on_error=true:print_stacktrace=1
build:asan --test_env=ASAN_SYMBOLIZER_PATH
# Clang ASAN/UBSAN
build:clang-asan --config=asan
build:clang-asan --linkopt -fuse-ld=lld
# macOS ASAN/UBSAN
build:macos --cxxopt=-std=c++17
build:macos-asan --config=asan
# Workaround, see https://github.com/bazelbuild/bazel/issues/6932
build:macos-asan --copt -Wno-macro-redefined
build:macos-asan --copt -D_FORTIFY_SOURCE=0
# Workaround, see https://github.com/bazelbuild/bazel/issues/4341
build:macos-asan --copt -DGRPC_BAZEL_BUILD
# Dynamic link cause issues like: `dyld: malformed mach-o: load commands size (59272) > 32768`
build:macos-asan --dynamic_mode=off
# Clang TSAN
build:clang-tsan --action_env=ENVOY_TSAN=1
build:clang-tsan --config=sanitizer
build:clang-tsan --define ENVOY_CONFIG_TSAN=1
build:clang-tsan --copt -fsanitize=thread
build:clang-tsan --linkopt -fsanitize=thread
build:clang-tsan --linkopt -fuse-ld=lld
build:clang-tsan --build_tag_filters=-no_san,-no_tsan
build:clang-tsan --test_tag_filters=-no_san,-no_tsan
# Needed due to https://github.com/libevent/libevent/issues/777
build:clang-tsan --copt -DEVENT__DISABLE_DEBUG_MODE
# https://github.com/abseil/abseil-cpp/issues/760
# https://github.com/google/sanitizers/issues/953
build:clang-tsan --test_env="TSAN_OPTIONS=report_atomic_races=0"
# Clang MSAN - this is the base config for remote-msan and docker-msan. To run this config without
# our build image, follow https://github.com/google/sanitizers/wiki/MemorySanitizerLibcxxHowTo
# with libc++ instruction and provide corresponding `--copt` and `--linkopt` as well.
build:clang-msan --action_env=ENVOY_MSAN=1
build:clang-msan --config=sanitizer
build:clang-msan --define ENVOY_CONFIG_MSAN=1
build:clang-msan --copt -fsanitize=memory
build:clang-msan --linkopt -fsanitize=memory
build:clang-msan --copt -fsanitize-memory-track-origins=2
# MSAN needs -O1 to get reasonable performance.
build:clang-msan --copt -O1
# Clang with libc++
build:libc++ --config=clang
build:libc++ --action_env=CXXFLAGS=-stdlib=libc++
build:libc++ --action_env=LDFLAGS=-stdlib=libc++
build:libc++ --action_env=BAZEL_CXXOPTS=-stdlib=libc++
build:libc++ --action_env=BAZEL_LINKLIBS=-l%:libc++.a:-l%:libc++abi.a
build:libc++ --action_env=BAZEL_LINKOPTS=-lm:-pthread
build:libc++ --define force_libcpp=enabled
# Optimize build for binary size reduction.
build:sizeopt -c opt --copt -Os
# Test options
build --test_env=HEAPCHECK=normal --test_env=PPROF_PATH
# Coverage options
coverage --config=coverage
coverage --build_tests_only
build:coverage --action_env=BAZEL_USE_LLVM_NATIVE_COVERAGE=1
build:coverage --action_env=GCOV=llvm-profdata
build:coverage --copt=-DNDEBUG
# 1.5x original timeout + 300s for trace merger in all categories
build:coverage --test_timeout=390,750,1500,5700
build:coverage --define=dynamic_link_tests=true
build:coverage --define=ENVOY_CONFIG_COVERAGE=1
build:coverage --cxxopt="-DENVOY_CONFIG_COVERAGE=1"
build:coverage --coverage_support=@envoy//bazel/coverage:coverage_support
build:coverage --test_env=CC_CODE_COVERAGE_SCRIPT=external/envoy/bazel/coverage/collect_cc_coverage.sh
build:coverage --test_env=HEAPCHECK=
build:coverage --combined_report=lcov
build:coverage --strategy=TestRunner=sandboxed,local
build:coverage --strategy=CoverageReport=sandboxed,local
build:coverage --experimental_use_llvm_covmap
build:coverage --collect_code_coverage
build:coverage --test_tag_filters=-nocoverage
build:coverage --instrumentation_filter="//source(?!/common/chromium_url|/extensions/quic_listeners/quiche/platform)[/:],//include[/:]"
coverage:test-coverage --test_arg="-l trace"
coverage:fuzz-coverage --config=plain-fuzzer
coverage:fuzz-coverage --run_under=@envoy//bazel/coverage:fuzz_coverage_wrapper.sh
# Remote execution: https://docs.bazel.build/versions/master/remote-execution.html
build:rbe-toolchain --action_env=BAZEL_DO_NOT_DETECT_CPP_TOOLCHAIN=1
build:rbe-toolchain-clang --config=rbe-toolchain
build:rbe-toolchain-clang --platforms=@rbe_ubuntu_clang//config:platform
build:rbe-toolchain-clang --host_platform=@rbe_ubuntu_clang//config:platform
build:rbe-toolchain-clang --crosstool_top=@rbe_ubuntu_clang//cc:toolchain
build:rbe-toolchain-clang --extra_toolchains=@rbe_ubuntu_clang//config:cc-toolchain
build:rbe-toolchain-clang --action_env=CC=clang --action_env=CXX=clang++ --action_env=PATH=/usr/sbin:/usr/bin:/sbin:/bin:/opt/llvm/bin
build:rbe-toolchain-clang-libc++ --config=rbe-toolchain
build:rbe-toolchain-clang-libc++ --platforms=@rbe_ubuntu_clang_libcxx//config:platform
build:rbe-toolchain-clang-libc++ --host_platform=@rbe_ubuntu_clang_libcxx//config:platform
build:rbe-toolchain-clang-libc++ --crosstool_top=@rbe_ubuntu_clang_libcxx//cc:toolchain
build:rbe-toolchain-clang-libc++ --extra_toolchains=@rbe_ubuntu_clang_libcxx//config:cc-toolchain
build:rbe-toolchain-clang-libc++ --action_env=CC=clang --action_env=CXX=clang++ --action_env=PATH=/usr/sbin:/usr/bin:/sbin:/bin:/opt/llvm/bin
build:rbe-toolchain-clang-libc++ --action_env=CXXFLAGS=-stdlib=libc++
build:rbe-toolchain-clang-libc++ --action_env=LDFLAGS=-stdlib=libc++
build:rbe-toolchain-clang-libc++ --define force_libcpp=enabled
build:rbe-toolchain-msan --linkopt=-L/opt/libcxx_msan/lib
build:rbe-toolchain-msan --linkopt=-Wl,-rpath,/opt/libcxx_msan/lib
build:rbe-toolchain-msan --config=clang-msan
build:rbe-toolchain-tsan --linkopt=-L/opt/libcxx_tsan/lib
build:rbe-toolchain-tsan --linkopt=-Wl,-rpath,/opt/libcxx_tsan/lib
build:rbe-toolchain-tsan --config=clang-tsan
build:rbe-toolchain-gcc --config=rbe-toolchain
build:rbe-toolchain-gcc --platforms=@rbe_ubuntu_gcc//config:platform
build:rbe-toolchain-gcc --host_platform=@rbe_ubuntu_gcc//config:platform
build:rbe-toolchain-gcc --crosstool_top=@rbe_ubuntu_gcc//cc:toolchain
build:rbe-toolchain-gcc --extra_toolchains=@rbe_ubuntu_gcc//config:cc-toolchain
build:rbe-toolchain-msvc-cl --host_platform=@rbe_windows_msvc_cl//config:platform
build:rbe-toolchain-msvc-cl --platforms=@rbe_windows_msvc_cl//config:platform
build:rbe-toolchain-msvc-cl --crosstool_top=@rbe_windows_msvc_cl//cc:toolchain
build:rbe-toolchain-msvc-cl --extra_toolchains=@rbe_windows_msvc_cl//config:cc-toolchain
build:rbe-toolchain-clang-cl --host_platform=@rbe_windows_clang_cl//config:platform
build:rbe-toolchain-clang-cl --platforms=@rbe_windows_clang_cl//config:platform
build:rbe-toolchain-clang-cl --crosstool_top=@rbe_windows_clang_cl//cc:toolchain
build:rbe-toolchain-clang-cl --extra_toolchains=@rbe_windows_clang_cl//config:cc-toolchain
build:remote --spawn_strategy=remote,sandboxed,local
build:remote --strategy=Javac=remote,sandboxed,local
build:remote --strategy=Closure=remote,sandboxed,local
build:remote --strategy=Genrule=remote,sandboxed,local
# rules_rust is not remote runnable (yet)
build:remote --strategy=Rustc=sandboxed,local
build:remote --remote_timeout=7200
build:remote --auth_enabled=true
build:remote --remote_download_toplevel
# Windows bazel does not allow sandboxed as a spawn strategy
build:remote-windows --spawn_strategy=remote,local
build:remote-windows --strategy=Javac=remote,local
build:remote-windows --strategy=Closure=remote,local
build:remote-windows --strategy=Genrule=remote,local
build:remote-windows --remote_timeout=7200
build:remote-windows --auth_enabled=true
build:remote-windows --remote_download_toplevel
build:remote-clang --config=remote
build:remote-clang --config=rbe-toolchain-clang
build:remote-clang-libc++ --config=remote
build:remote-clang-libc++ --config=rbe-toolchain-clang-libc++
build:remote-gcc --config=remote
build:remote-gcc --config=rbe-toolchain-gcc
build:remote-msan --config=remote
build:remote-msan --config=rbe-toolchain-clang-libc++
build:remote-msan --config=rbe-toolchain-msan
build:remote-msvc-cl --config=remote-windows
build:remote-msvc-cl --config=msvc-cl
build:remote-msvc-cl --config=rbe-toolchain-msvc-cl
build:remote-clang-cl --config=remote-windows
build:remote-clang-cl --config=clang-cl
build:remote-clang-cl --config=rbe-toolchain-clang-cl
# Docker sandbox
# NOTE: Update this from https://github.com/envoyproxy/envoy-build-tools/blob/master/toolchains/rbe_toolchains_config.bzl#L8
build:docker-sandbox --experimental_docker_image=envoyproxy/envoy-build-ubuntu:b480535e8423b5fd7c102fd30c92f4785519e33a
build:docker-sandbox --spawn_strategy=docker
build:docker-sandbox --strategy=Javac=docker
build:docker-sandbox --strategy=Closure=docker
build:docker-sandbox --strategy=Genrule=docker
build:docker-sandbox --define=EXECUTOR=remote
build:docker-sandbox --experimental_docker_verbose
build:docker-sandbox --experimental_enable_docker_sandbox
build:docker-clang --config=docker-sandbox
build:docker-clang --config=rbe-toolchain-clang
build:docker-clang-libc++ --config=docker-sandbox
build:docker-clang-libc++ --config=rbe-toolchain-clang-libc++
build:docker-gcc --config=docker-sandbox
build:docker-gcc --config=rbe-toolchain-gcc
build:docker-msan --config=docker-sandbox
build:docker-msan --config=rbe-toolchain-clang-libc++
build:docker-msan --config=rbe-toolchain-msan
build:docker-tsan --config=docker-sandbox
build:docker-tsan --config=rbe-toolchain-clang-libc++
build:docker-tsan --config=rbe-toolchain-tsan
# CI configurations
build:remote-ci --remote_cache=grpcs://remotebuildexecution.googleapis.com
build:remote-ci --remote_executor=grpcs://remotebuildexecution.googleapis.com
# Fuzz builds
# -DFUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION is passed in in the bazel build target
# rules for fuzz tests. Passing it in the CLI will cause dependencies to be build
# with the macro. Causing issues in RouteMatcherTest.TestRoutes that expect prod
# behavior from RE2 library.
build:asan-fuzzer --config=asan
build:asan-fuzzer --define=FUZZING_ENGINE=libfuzzer
build:asan-fuzzer --copt=-fsanitize=fuzzer-no-link
build:asan-fuzzer --copt=-fno-omit-frame-pointer
# Remove UBSAN halt_on_error to avoid crashing on protobuf errors.
build:asan-fuzzer --test_env=UBSAN_OPTIONS=print_stacktrace=1
# Fuzzing without ASAN. This is useful for profiling fuzzers without any ASAN artifacts.
build:plain-fuzzer --define=FUZZING_ENGINE=libfuzzer
build:plain-fuzzer --define ENVOY_CONFIG_ASAN=1
build:plain-fuzzer --copt=-fsanitize=fuzzer-no-link
build:plain-fuzzer --linkopt=-fsanitize=fuzzer-no-link
# Compile database generation config
build:compdb --build_tag_filters=-nocompdb
# Windows build quirks
build:windows --action_env=TMPDIR
build:windows --define signal_trace=disabled
build:windows --define hot_restart=disabled
build:windows --define tcmalloc=disabled
build:windows --define manual_stamp=manual_stamp
# Should not be required after upstream fix to bazel,
# and already a no-op to linux/macos builds
# see issue https://github.com/bazelbuild/rules_foreign_cc/issues/301
build:windows --copt="-DCARES_STATICLIB"
build:windows --copt="-DNGHTTP2_STATICLIB"
build:windows --copt="-DCURL_STATICLIB"
build:windows --cxxopt="/std:c++17"
# Required to work around build defects on Windows MSVC cl
# Unguarded gcc pragmas in quiche are not recognized by MSVC
build:msvc-cl --copt="/wd4068"
# Allows 'nodiscard' function return values to be discarded
build:msvc-cl --copt="/wd4834"
# Allows inline functions to be undefined
build:msvc-cl --copt="/wd4506"
build:msvc-cl --copt="-D_SILENCE_EXPERIMENTAL_FILESYSTEM_DEPRECATION_WARNING"
# Required to work around Windows clang-cl build defects
# Ignore conflicting definitions of _WIN32_WINNT
# Overriding __TIME__ etc is problematic (and is actually an invalid no-op)
build:clang-cl --copt="-Wno-macro-redefined"
build:clang-cl --copt="-Wno-builtin-macro-redefined"
build:clang-cl --action_env=USE_CLANG_CL=1
# Defaults to 'auto' - Off for windows, so override to linux behavior
build:windows --enable_runfiles=yes
# This should become adopted by bazel as the default
build:windows --features=compiler_param_file
# These options attempt to force a monolithic binary including the CRT
build:windows --features=fully_static_link
build:windows --features=static_link_msvcrt
build:windows --dynamic_mode=off
try-import %workspace%/clang.bazelrc
try-import %workspace%/user.bazelrc
try-import %workspace%/local_tsan.bazelrc
================================================
FILE: .bazelversion
================================================
3.4.1
================================================
FILE: .circleci/config.yml
================================================
version: 2.1
executors:
ubuntu-build:
description: "A regular build executor based on ubuntu image"
docker:
# NOTE: Update this from https://github.com/envoyproxy/envoy-build-tools/blob/master/toolchains/rbe_toolchains_config.bzl#L8
- image: envoyproxy/envoy-build-ubuntu:b480535e8423b5fd7c102fd30c92f4785519e33a
resource_class: xlarge
working_directory: /source
jobs:
api:
executor: ubuntu-build
steps:
- run: rm -rf /home/circleci/project/.git # CircleCI git caching is likely broken
- checkout
- run: ci/do_circle_ci.sh bazel.api
- add_ssh_keys:
fingerprints:
- "fb:f3:fe:be:1c:b2:ec:b6:25:f9:7b:a6:87:54:02:8c"
- run: ci/api_mirror.sh
- store_artifacts:
path: /build/envoy/generated
destination: /
go_control_plane_mirror:
executor: ubuntu-build
steps:
- run: rm -rf /home/circleci/project/.git # CircleCI git caching is likely broken
- checkout
- run: ci/do_circle_ci.sh bazel.api
- add_ssh_keys:
fingerprints:
- "9d:3b:fe:7c:09:3b:ce:a9:6a:de:de:41:fb:6b:52:62"
- run: ci/go_mirror.sh
filter_example_mirror:
executor: ubuntu-build
steps:
- run: rm -rf /home/circleci/project/.git # CircleCI git caching is likely broken
- checkout
- add_ssh_keys:
fingerprints:
- "f6:f9:df:90:9c:4b:5f:9c:f4:69:fd:42:94:ff:88:24"
- run: ci/filter_example_mirror.sh
docs:
executor: ubuntu-build
steps:
- run: rm -rf /home/circleci/project/.git # CircleCI git caching is likely broken
- checkout
- run: ci/do_circle_ci.sh docs
- add_ssh_keys:
fingerprints:
- "44:c7:a1:9e:f4:9e:a5:33:11:f1:0e:79:e1:55:c9:04"
- run: docs/publish.sh
- store_artifacts:
path: generated/docs
workflows:
version: 2
all:
jobs:
- api
- go_control_plane_mirror
- filter_example_mirror
- docs:
filters:
tags:
only: /^v.*/
================================================
FILE: .clang-format
================================================
---
Language: Cpp
AccessModifierOffset: -2
ColumnLimit: 100
DerivePointerAlignment: false
PointerAlignment: Left
SortIncludes: false
...
---
Language: Proto
ColumnLimit: 100
SpacesInContainerLiterals: false
AllowShortFunctionsOnASingleLine: false
ReflowComments: false
...
================================================
FILE: .clang-tidy
================================================
Checks: '-clang-analyzer-core.NonNullParamChecker,
-clang-analyzer-optin.cplusplus.UninitializedObject,
abseil-duration-*,
abseil-faster-strsplit-delimiter,
abseil-no-namespace,
abseil-redundant-strcat-calls,
abseil-str-cat-append,
abseil-string-find-startswith,
abseil-upgrade-duration-conversions,
bugprone-assert-side-effect,
bugprone-unused-raii,
bugprone-use-after-move,
clang-analyzer-core.DivideZero,
misc-unused-using-decls,
modernize-deprecated-headers,
modernize-loop-convert,
modernize-make-shared,
modernize-make-unique,
modernize-return-braced-init-list,
modernize-use-default-member-init,
modernize-use-equals-default,
modernize-use-nullptr,
modernize-use-override,
modernize-use-using,
performance-faster-string-find,
performance-for-range-copy,
performance-inefficient-algorithm,
performance-inefficient-vector-operation,
performance-noexcept-move-constructor,
performance-move-constructor-init,
performance-type-promotion-in-math-fn,
performance-unnecessary-copy-initialization,
readability-braces-around-statements,
readability-container-size-empty,
readability-identifier-naming,
readability-redundant-control-flow,
readability-redundant-member-init,
readability-redundant-smartptr-get,
readability-redundant-string-cstr'
WarningsAsErrors: '*'
CheckOptions:
- key: bugprone-assert-side-effect.AssertMacros
value: 'ASSERT'
- key: bugprone-dangling-handle.HandleClasses
value: 'std::basic_string_view;std::experimental::basic_string_view;absl::string_view'
- key: modernize-use-auto.MinTypeNameLength
value: '10'
- key: readability-identifier-naming.ClassCase
value: 'CamelCase'
- key: readability-identifier-naming.EnumCase
value: 'CamelCase'
- key: readability-identifier-naming.EnumConstantCase
value: 'CamelCase'
- key: readability-identifier-naming.ParameterCase
value: 'lower_case'
- key: readability-identifier-naming.PrivateMemberCase
value: 'lower_case'
- key: readability-identifier-naming.PrivateMemberSuffix
value: '_'
- key: readability-identifier-naming.StructCase
value: 'CamelCase'
- key: readability-identifier-naming.TypeAliasCase
value: 'CamelCase'
- key: readability-identifier-naming.UnionCase
value: 'CamelCase'
- key: readability-identifier-naming.FunctionCase
value: 'camelBack'
================================================
FILE: .devcontainer/.gitignore
================================================
devcontainer.env
================================================
FILE: .devcontainer/Dockerfile
================================================
FROM gcr.io/envoy-ci/envoy-build:b480535e8423b5fd7c102fd30c92f4785519e33a
ARG USERNAME=vscode
ARG USER_UID=501
ARG USER_GID=$USER_UID
ENV BUILD_DIR=/build
ENV ENVOY_STDLIB=libstdc++
ENV DEBIAN_FRONTEND=noninteractive
RUN apt-get -y update \
&& apt-get -y install --no-install-recommends libpython2.7 net-tools psmisc vim 2>&1 \
# Create a non-root user to use if preferred - see https://aka.ms/vscode-remote/containers/non-root-user.
&& groupadd --gid $USER_GID $USERNAME \
&& useradd -s /bin/bash --uid $USER_UID --gid $USER_GID -m $USERNAME -G pcap -d /build \
# [Optional] Add sudo support for non-root user
&& echo $USERNAME ALL=\(root\) NOPASSWD:ALL > /etc/sudoers.d/$USERNAME \
&& chmod 0440 /etc/sudoers.d/$USERNAME
ENV DEBIAN_FRONTEND=
ENV PATH=/opt/llvm/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
ENV CLANG_FORMAT=/opt/llvm/bin/clang-format
================================================
FILE: .devcontainer/README.md
================================================
# Envoy Dev Container (experimental)
This directory contains some experimental tools for Envoy Development in [VSCode Remote - Containers](https://code.visualstudio.com/docs/remote/containers).
## How to use
Open with VSCode with the Container extension installed. Follow the [official guide](https://code.visualstudio.com/docs/remote/containers) to open this
repository directly from GitHub or from checked-out source tree.
After opening, run the `Refresh Compilation Database` task to generate compilation database to navigate in source code.
This will run partial build of Envoy and may take a while depends on the machine performance.
This task is needed to run everytime after:
- Changing a BUILD file that add/remove files from a target, changes dependencies
- Changing API proto files
There are additional tools for VS Code located in [`tools/vscode`](../tools/vscode) directory.
## Advanced Usages
### Using Remote Build Execution
Write the following content to `devcontainer.env` and rebuild the container. The key will be persisted in the container's `~/.bazelrc`.
```
GCP_SERVICE_ACCOUNT_KEY=<base64 encoded service account key>
BAZEL_REMOTE_INSTANCE=<RBE Instance>
BAZEL_REMOTE_CACHE=grpcs://remotebuildexecution.googleapis.com
BAZEL_BUILD_EXTRA_OPTIONS=--config=remote-ci --config=remote --jobs=<Number of jobs>
```
By default the `--config=remote` implies [`--remote_download_toplevel`](https://docs.bazel.build/versions/master/command-line-reference.html#flag--remote_download_toplevel),
change this to `minimal` or `all` depending on where you're running the container by adding them to `BAZEL_BUILD_EXTRA_OPTIONS`.
### Disk performance
Docker for Mac/Windows is known to have disk performance issue, this makes formatting all files in the container very slow.
[Update the mount consistency to 'delegated'](https://code.visualstudio.com/docs/remote/containers-advanced#_update-the-mount-consistency-to-delegated-for-macos) is recommended.
================================================
FILE: .devcontainer/devcontainer.json
================================================
{
"name": "Envoy Dev",
"dockerFile": "Dockerfile",
"runArgs": [
"--user=vscode",
"--cap-add=SYS_PTRACE",
"--cap-add=NET_RAW",
"--cap-add=NET_ADMIN",
"--security-opt=seccomp=unconfined",
"--volume=${env:HOME}:${env:HOME}",
"--volume=envoy-build:/build",
// Uncomment next line if you have devcontainer.env
// "--env-file=.devcontainer/devcontainer.env"
],
"settings": {
"terminal.integrated.shell.linux": "/bin/bash",
"bazel.buildifierFixOnFormat": true,
"clangd.path": "/opt/llvm/bin/clangd",
"python.pythonPath": "/usr/bin/python3",
"python.formatting.provider": "yapf",
"python.formatting.yapfArgs": [
"--style=${workspaceFolder}/tools/code_format/.style.yapf"
],
"files.exclude": {
"**/.clangd/**": true,
"**/bazel-*/**": true
},
"files.watcherExclude": {
"**/.clangd/**": true,
"**/bazel-*/**": true
}
},
"remoteUser": "vscode",
"containerUser": "vscode",
"postCreateCommand": ".devcontainer/setup.sh",
"extensions": [
"github.vscode-pull-request-github",
"zxh404.vscode-proto3",
"bazelbuild.vscode-bazel",
"llvm-vs-code-extensions.vscode-clangd",
"vadimcn.vscode-lldb",
"webfreak.debug",
"ms-python.python"
]
}
================================================
FILE: .devcontainer/setup.sh
================================================
#!/usr/bin/env bash
. ci/setup_cache.sh
trap - EXIT # Don't remove the key file written into a temporary file
BAZELRC_FILE=~/.bazelrc bazel/setup_clang.sh /opt/llvm
# Use generated toolchain config because we know the base container is the one we're using in RBE.
# Not using libc++ here because clangd will raise some tidy issue in libc++ header as of version 9.
echo "build --config=rbe-toolchain-clang" >> ~/.bazelrc
echo "build ${BAZEL_BUILD_EXTRA_OPTIONS}" | tee -a ~/.bazelrc
# Ideally we want this line so bazel doesn't pollute things outside of the devcontainer, but some of
# API tooling (proto_sync) depends on symlink like bazel-bin.
# TODO(lizan): Fix API tooling and enable this again
#echo "build --symlink_prefix=/" >> ~/.bazelrc
[[ -n "${BUILD_DIR}" ]] && sudo chown -R "$(id -u):$(id -g)" "${BUILD_DIR}"
================================================
FILE: .gitattributes
================================================
/docs/root/version_history/current.rst merge=union
/api/envoy/**/v4alpha/* linguist-generated=true
/generated_api_shadow/envoy/** linguist-generated=true
/generated_api_shadow/bazel/** linguist-generated=true
*.svg binary
/test/**/*_corpus/* linguist-generated=true
================================================
FILE: .github/ISSUE_TEMPLATE/config.yml
================================================
blank_issues_enabled: false
contact_links:
- name: "Crash bug"
url: https://github.com/envoyproxy/envoy/security/policy
about: "Please file any crash bug with envoy-security@googlegroups.com."
================================================
FILE: .github/ISSUE_TEMPLATE/feature_request.md
================================================
---
name: Feature request
about: Suggest an idea for this project
title: ''
labels: enhancement,triage
assignees: ''
---
*Title*: *One line description*
*Description*:
>Describe the the desired behavior, what scenario it enables and how it
would be used.
[optional *Relevant Links*:]
>Any extra documentation required to understand the issue.
================================================
FILE: .github/ISSUE_TEMPLATE/non--crash-security--bug.md
================================================
---
name: Non-{crash,security} bug
about: Bugs which are not crashes, DoS or other security issue
title: ''
labels: bug,triage
assignees: ''
---
**If you are reporting *any* crash or *any* potential security issue, *do not*
open an issue in this repo. Please report the issue via emailing
envoy-security@googlegroups.com where the issue will be triaged appropriately.**
*Title*: *One line description*
*Description*:
>What issue is being seen? Describe what should be happening instead of
the bug, for example: Envoy should not crash, the expected value isn't
returned, etc.
*Repro steps*:
> Include sample requests, environment, etc. All data and inputs
required to reproduce the bug.
>**Note**: The [Envoy_collect tool](https://github.com/envoyproxy/envoy/blob/master/tools/envoy_collect/README.md)
gathers a tarball with debug logs, config and the following admin
endpoints: /stats, /clusters and /server_info. Please note if there are
privacy concerns, sanitize the data prior to sharing the tarball/pasting.
*Admin and Stats Output*:
>Include the admin output for the following endpoints: /stats,
/clusters, /routes, /server_info. For more information, refer to the
[admin endpoint documentation.](https://www.envoyproxy.io/docs/envoy/latest/operations/admin)
>**Note**: If there are privacy concerns, sanitize the data prior to
sharing.
*Config*:
>Include the config used to configure Envoy.
*Logs*:
>Include the access logs and the Envoy logs.
>**Note**: If there are privacy concerns, sanitize the data prior to
sharing.
*Call Stack*:
> If the Envoy binary is crashing, a call stack is **required**.
Please refer to the [Bazel Stack trace documentation](https://github.com/envoyproxy/envoy/tree/master/bazel#stack-trace-symbol-resolution).
================================================
FILE: .github/ISSUE_TEMPLATE/other.md
================================================
---
name: Other
about: Questions, design proposals, tech debt, etc.
title: ''
labels: triage
assignees: ''
---
**If you are reporting *any* crash or *any* potential security issue, *do not*
open an issue in this repo. Please report the issue via emailing
envoy-security@googlegroups.com where the issue will be triaged appropriately.**
*Title*: *One line description*
*Description*:
>Describe the issue.
[optional *Relevant Links*:]
>Any extra documentation required to understand the issue.
================================================
FILE: .github/stale.yml
================================================
# Configuration for probot-stale - https://github.com/probot/stale
# General configuration
# Label to use when marking as stale
staleLabel: stale
# Pull request specific configuration
pulls:
# Number of days of inactivity before an Issue or Pull Request becomes stale
daysUntilStale: 7
# Number of days of inactivity before a stale Issue or Pull Request is closed.
# Set to false to disable. If disabled, issues still need to be closed manually, but will remain marked as stale.
daysUntilClose: 7
# Comment to post when marking as stale. Set to `false` to disable
markComment: >
This pull request has been automatically marked as stale because it has not had
activity in the last 7 days. It will be closed in 7 days if no further activity occurs. Please
feel free to give a status update now, ping for review, or re-open when it's ready.
Thank you for your contributions!
# Comment to post when closing a stale Issue or Pull Request.
closeComment: >
This pull request has been automatically closed because it has not had
activity in the last 14 days. Please feel free to give a status update now, ping for review, or re-open when it's ready.
Thank you for your contributions!
# Limit the number of actions per hour, from 1-30. Default is 30
limitPerRun: 1
exemptLabels:
- no stalebot
# Issue specific configuration
issues:
# TODO: Consider increasing the limitPerRun once we are satisfied with the bot's performance
limitPerRun: 1
daysUntilStale: 30
daysUntilClose: 7
markComment: >
This issue has been automatically marked as stale because it has not had activity in the
last 30 days. It will be closed in the next 7 days unless it is tagged "help wanted" or other activity
occurs. Thank you for your contributions.
closeComment: >
This issue has been automatically closed because it has not had activity in the
last 37 days. If this issue is still valid, please ping a maintainer and ask them to label it as "help wanted".
Thank you for your contributions.
exemptLabels:
- help wanted
- no stalebot
================================================
FILE: .github/workflows/codeql-daily.yml
================================================
on:
schedule:
- cron: '0 12 * * 4'
jobs:
CodeQL-Build:
strategy:
fail-fast: false
# CodeQL runs on ubuntu-latest and windows-latest
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v2
with:
# We must fetch at least the immediate parents so that if this is
# a pull request then we can checkout the head.
fetch-depth: 2
# If this run was triggered by a pull request event, then checkout
# the head of the pull request instead of the merge commit.
- run: git checkout HEAD^2
if: ${{ github.event_name == 'pull_request' }}
# Initializes the CodeQL tools for scanning.
- name: Initialize CodeQL
uses: github/codeql-action/init@v1
# Override language selection by uncommenting this and choosing your languages
with:
languages: cpp
- name: Install deps
shell: bash
run: |
sudo apt-get update && sudo apt-get install libtool cmake automake autoconf make ninja-build curl unzip virtualenv openjdk-11-jdk build-essential libc++1
mkdir -p bin/clang10
cd bin/clang10
wget https://github.com/llvm/llvm-project/releases/download/llvmorg-10.0.0/clang+llvm-10.0.0-x86_64-linux-gnu-ubuntu-18.04.tar.xz
tar -xf clang+llvm-10.0.0-x86_64-linux-gnu-ubuntu-18.04.tar.xz --strip-components 1
export PATH=bin/clang10/bin:$PATH
- name: Build
run: |
bazel/setup_clang.sh bin/clang10
bazelisk shutdown
bazelisk build -c fastbuild --spawn_strategy=local --discard_analysis_cache --nouse_action_cache --config clang --config libc++ //source/common/http/...
- name: Clean Artifacts
run: |
git clean -xdf
- name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@v1
================================================
FILE: .github/workflows/codeql-push.yml
================================================
on:
push:
paths:
- 'source/common/**'
pull_request:
jobs:
CodeQL-Build:
strategy:
fail-fast: false
# CodeQL runs on ubuntu-latest and windows-latest
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v2
with:
# We must fetch at least the immediate parents so that if this is
# a pull request then we can checkout the head.
fetch-depth: 2
- name: Get build targets
run: |
. .github/workflows/get_build_targets.sh
echo ::set-env name=BUILD_TARGETS::$(echo $BUILD_TARGETS_LOCAL)
# If this run was triggered by a pull request event, then checkout
# the head of the pull request instead of the merge commit.
- run: git checkout HEAD^2
if: ${{ github.event_name == 'pull_request' }}
# Initializes the CodeQL tools for scanning.
- name: Initialize CodeQL
uses: github/codeql-action/init@v1
# Override language selection by uncommenting this and choosing your languages
with:
languages: cpp
- name: Install deps
shell: bash
run: |
sudo apt-get update && sudo apt-get install libtool cmake automake autoconf make ninja-build curl unzip virtualenv openjdk-11-jdk build-essential libc++1
mkdir -p bin/clang10
cd bin/clang10
wget https://github.com/llvm/llvm-project/releases/download/llvmorg-10.0.0/clang+llvm-10.0.0-x86_64-linux-gnu-ubuntu-18.04.tar.xz
tar -xf clang+llvm-10.0.0-x86_64-linux-gnu-ubuntu-18.04.tar.xz --strip-components 1
export PATH=bin/clang10/bin:$PATH
- name: Build
run: |
bazel/setup_clang.sh bin/clang10
bazelisk shutdown
bazelisk build -c fastbuild --spawn_strategy=local --discard_analysis_cache --nouse_action_cache --config clang --config libc++ $BUILD_TARGETS
echo -e "Built targets...\n$BUILD_TARGETS"
- name: Clean Artifacts
run: |
git clean -xdf
- name: Perform CodeQL Analysis
if: env.BUILD_TARGETS != ''
uses: github/codeql-action/analyze@v1
================================================
FILE: .github/workflows/get_build_targets.sh
================================================
#!/bin/bash
# This limits the directory that bazel query is going to search under.
readonly SEARCH_FOLDER="//source/common/..."
set -e -o pipefail
function get_targets() {
# Comparing the PR HEAD with the upstream master HEAD.
git diff --name-only HEAD FETCH_HEAD | while IFS= read -r line
do
# Only targets under those folders.
case "$line" in
source/*|include/*)
bazel query "rdeps($SEARCH_FOLDER, $line, 1)" 2>/dev/null
;;
esac
# This chain of commands from left to right are:
# 1. Excluding the redundant .cc/.h targets that bazel query emits.
# 2. Storing only the unique output.
# 3. Limiting to the first 10 targets.
done | grep -v '\.cc\|\.h' | sort -u | head -n 10
}
# Fetching the upstream HEAD to compare with and stored in FETCH_HEAD.
git fetch https://github.com/envoyproxy/envoy.git master 2>/dev/null
export BUILD_TARGETS_LOCAL=$(echo $(get_targets))
================================================
FILE: .gitignore
================================================
/bazel-*
BROWSE
/build
/build_*
*.bzlc
.cache
.clangd
.classpath
.clwb/
/ci/bazel-*
compile_commands.json
cscope.*
.deps
.devcontainer.json
/docs/landing_source/.bundle
/generated
.idea/
.project
*.pyc
**/pyformat
SOURCE_VERSION
.settings/
*.sw*
tags
TAGS
/test/coverage/BUILD
/tools/spelling/.aspell.en.pws
.vimrc
.vs
.vscode
clang-tidy-fixes.yaml
.gdb_history
clang.bazelrc
user.bazelrc
CMakeLists.txt
cmake-build-debug
/linux
bazel.output.txt
*~
================================================
FILE: .zuul/playbooks/envoy-build/run.yaml
================================================
- hosts: all
become: yes
roles:
- role: config-gcc
gcc_version: 7
- role: config-bazel
bazel_version: 0.28.1
tasks:
- name: Build envoy
shell:
cmd: |
apt update
apt-get update
apt-get install -y \
libtool \
cmake \
automake \
autoconf \
make \
ninja-build \
curl \
unzip \
virtualenv
bazel build //source/exe:envoy-static | tee $LOGS_PATH//bazel.txt
cp -r ./bazel-bin $RESULTS_PATH
chdir: '{{ zuul.project.src_dir }}'
executable: /bin/bash
environment: '{{ global_env }}'
================================================
FILE: .zuul.yaml
================================================
- project:
name: envoyproxy/envoy
check:
jobs:
- envoy-build-arm64
- job:
name: envoy-build-arm64
parent: init-test
description: |
Envoy build in openlab cluster.
run: .zuul/playbooks/envoy-build/run.yaml
nodeset: ubuntu-xenial-arm64
voting: false
================================================
FILE: BUILD
================================================
licenses(["notice"]) # Apache 2
exports_files([
"VERSION",
".clang-format",
])
# These two definitions exist to help reduce Envoy upstream core code depending on extensions.
# To avoid visibility problems, see notes in source/extensions/extensions_build_config.bzl
#
# TODO(#9953) //test/config_test:__pkg__ should probably be split up and removed.
# TODO(#9953) the config fuzz tests should be moved somewhere local and //test/config_test and //test/server removed.
package_group(
name = "extension_config",
packages = [
"//source/exe",
"//source/extensions/...",
"//test/config_test",
"//test/extensions/...",
"//test/server",
"//test/server/config_validation",
],
)
package_group(
name = "extension_library",
packages = [
"//source/extensions/...",
"//test/extensions/...",
],
)
================================================
FILE: CODEOWNERS
================================================
# TODO(zuercher): determine how we want to deal with auto-assignment
# By default, @envoyproxy/maintainers own everything.
#* @envoyproxy/maintainers
# api
/api/ @envoyproxy/api-shepherds
# access loggers
/*/extensions/access_loggers/common @auni53 @zuercher
# compression extensions
/*/extensions/compression/common/compressor @rojkov @junr03
/*/extensions/compression/gzip/compressor @rojkov @junr03
# csrf extension
/*/extensions/filters/http/csrf @dschaller @mattklein123
# original_src http filter extension
/*/extensions/filters/http/original_src @snowp @klarose
# original_src listener filter extension
/*/extensions/filters/listener/original_src @snowp @klarose
# original_src common extension
extensions/filters/common/original_src @snowp @klarose
# dubbo_proxy extension
/*/extensions/filters/network/dubbo_proxy @zyfjeff @lizan
# rocketmq_proxy extension
/*/extensions/filters/network/rocketmq_proxy @aaron-ai @lizhanhui @lizan
# thrift_proxy extension
/*/extensions/filters/network/thrift_proxy @zuercher @rgs1
# cdn_loop extension
/*/extensions/filters/http/cdn_loop @justin-mp @penguingao @alyssawilk
# compressor used by http compression filters
/*/extensions/filters/http/common/compressor @gsagula @rojkov @dio
/*/extensions/filters/http/compressor @rojkov @dio
# jwt_authn http filter extension
/*/extensions/filters/http/jwt_authn @qiwzhang @lizan
# grpc_http1_reverse_bridge http filter extension
/*/extensions/filters/http/grpc_http1_reverse_bridge @snowp @zuercher
# header_to_metadata extension
/*/extensions/filters/http/header_to_metadata @rgs1 @zuercher
# alts transport socket extension
/*/extensions/transport_sockets/alts @htuch @yangminzhu
# tls transport socket extension
/*/extensions/transport_sockets/tls @PiotrSikora @lizan
# proxy protocol socket extension
/*/extensions/transport_sockets/proxy_protocol @alyssawilk @wez470
# common transport socket
/*/extensions/transport_sockets/common @alyssawilk @wez470
# sni_cluster extension
/*/extensions/filters/network/sni_cluster @rshriram @lizan
# sni_dynamic_forward_proxy extension
/*/extensions/filters/network/sni_dynamic_forward_proxy @rshriram @lizan
# tracers.datadog extension
/*/extensions/tracers/datadog @cgilmour @palazzem @mattklein123
# tracers.xray extension
/*/extensions/tracers/xray @marcomagdy @lavignes @mattklein123
# mysql_proxy extension
/*/extensions/filters/network/mysql_proxy @rshriram @venilnoronha @mattklein123
# postgres_proxy extension
/*/extensions/filters/network/postgres_proxy @fabriziomello @cpakulski @dio
# quic extension
/*/extensions/quic_listeners/ @alyssawilk @danzh2010 @mattklein123 @mpwarres @wu-bin
# zookeeper_proxy extension
/*/extensions/filters/network/zookeeper_proxy @rgs1 @snowp
# redis cluster extension
/*/extensions/clusters/redis @msukalski @henryyyang @mattklein123
/*/extensions/common/redis @msukalski @henryyyang @mattklein123
# dynamic forward proxy
/*/extensions/clusters/dynamic_forward_proxy @mattklein123 @alyssawilk
/*/extensions/common/dynamic_forward_proxy @mattklein123 @alyssawilk
/*/extensions/filters/http/dynamic_forward_proxy @mattklein123 @alyssawilk
# omit_canary_hosts retry predicate
/*/extensions/retry/host/omit_canary_hosts @sriduth @snowp
# HTTP caching extension
/*/extensions/filters/http/cache @toddmgreer @jmarantz
# aws_iam grpc credentials
/*/extensions/grpc_credentials/aws_iam @lavignes @mattklein123
/*/extensions/common/aws @lavignes @mattklein123
# adaptive concurrency limit extension.
/*/extensions/filters/http/adaptive_concurrency @tonya11en @mattklein123
# admission control extension.
/*/extensions/filters/http/admission_control @tonya11en @mattklein123
# http inspector
/*/extensions/filters/listener/http_inspector @yxue @PiotrSikora @lizan
# attribute context
/*/extensions/filters/common/expr @kyessenov @yangminzhu @lizan
# webassembly access logger extensions
/*/extensions/access_loggers/wasm @jplevyak @PiotrSikora @lizan
# webassembly bootstrap extensions
/*/extensions/bootstrap/wasm @jplevyak @PiotrSikora @lizan
# webassembly http extensions
/*/extensions/filters/http/wasm @jplevyak @PiotrSikora @lizan
# webassembly network extensions
/*/extensions/filters/network/wasm @jplevyak @PiotrSikora @lizan
# webassembly common extension
/*/extensions/common/wasm @jplevyak @PiotrSikora @lizan
# common matcher
/*/extensions/common/matcher @mattklein123 @yangminzhu
# common crypto extension
/*/extensions/common/crypto @lizan @PiotrSikora @bdecoste
/*/extensions/common/proxy_protocol @alyssawilk @wez470
/*/extensions/common/sqlutils @cpakulski @dio
/*/extensions/filters/http/grpc_http1_bridge @snowp @jose
/*/extensions/filters/http/gzip @gsagula @dio
/*/extensions/filters/http/fault @rshriram @alyssawilk
/*/extensions/filters/common/fault @rshriram @alyssawilk
/*/extensions/filters/http/grpc_json_transcoder @qiwzhang @lizan
/*/extensions/filters/http/router @alyssawilk @mattklein123 @snowp
/*/extensions/filters/http/ext_authz @gsagula @dio
/*/extensions/filters/http/grpc_web @fengli79 @lizan
/*/extensions/filters/http/grpc_stats @kyessenov @lizan
/*/extensions/filters/http/squash @yuval-k @alyssawilk
/*/extensions/filters/common/ext_authz @gsagula @dio
/*/extensions/filters/common/original_src @klarose @snowp
/*/extensions/filters/listener/tls_inspector @piotrsikora @htuch
/*/extensions/grpc_credentials/example @wozz @htuch
/*/extensions/grpc_credentials/file_based_metadata @wozz @htuch
/*/extensions/internal_redirect @alyssawilk @penguingao
/*/extensions/stat_sinks/dog_statsd @taiki45 @jmarantz
/*/extensions/stat_sinks/hystrix @trabetti @jmarantz
/*/extensions/stat_sinks/metrics_service @ramaraochavali @jmarantz
# webassembly stat-sink extensions
/*/extensions/stat_sinks/wasm @Aakash2017 @jplevyak @lizan
/*/extensions/resource_monitors/injected_resource @eziskind @htuch
/*/extensions/resource_monitors/common @eziskind @htuch
/*/extensions/resource_monitors/fixed_heap @eziskind @htuch
/*/extensions/retry/priority @snowp @alyssawilk
/*/extensions/retry/priority/previous_priorities @snowp @alyssawilk
/*/extensions/retry/host @snowp @alyssawilk
/*/extensions/filters/network/http_connection_manager @alyssawilk @mattklein123
/*/extensions/filters/network/ext_authz @gsagula @dio
/*/extensions/filters/network/tcp_proxy @alyssawilk @zuercher
/*/extensions/filters/network/echo @htuch @alyssawilk
/*/extensions/filters/udp/dns_filter @abaptiste @mattklein123
/*/extensions/filters/network/direct_response @kyessenov @zuercher
/*/extensions/filters/udp/udp_proxy @mattklein123 @danzh2010
/*/extensions/clusters/aggregate @yxue @snowp
# support for on-demand VHDS requests
/*/extensions/filters/http/on_demand @dmitri-d @htuch @lambdai
/*/extensions/filters/network/local_ratelimit @mattklein123 @junr03
/*/extensions/filters/http/aws_request_signing @rgs1 @derekargueta @mattklein123 @marcomagdy
/*/extensions/filters/http/aws_lambda @mattklein123 @marcomagdy @lavignes
# Compression
/*/extensions/compression/common @junr03 @rojkov
/*/extensions/compression/gzip @junr03 @rojkov
/*/extensions/filters/http/decompressor @rojkov @dio
# Watchdog Extensions
/*/extensions/watchdog/profile_action @kbaichoo @antoniovicente
/*/extensions/watchdog/abort_action @kbaichoo @antoniovicente
# Core upstream code
extensions/upstreams/http @alyssawilk @snowp @mattklein123
extensions/upstreams/http/http @alyssawilk @snowp @mattklein123
extensions/upstreams/http/tcp @alyssawilk @mattklein123
extensions/upstreams/http/default @alyssawilk @snowp @mattklein123
# OAuth2
extensions/filters/http/oauth2 @rgs1 @derekargueta @snowp
# HTTP Local Rate Limit
/*/extensions/filters/http/local_ratelimit @rgs1 @mattklein123
/*/extensions/filters/common/local_ratelimit @mattklein123 @rgs1
================================================
FILE: CODE_OF_CONDUCT.md
================================================
## Community Code of Conduct
Envoy follows the [CNCF Code of Conduct](https://github.com/cncf/foundation/blob/master/code-of-conduct.md).
================================================
FILE: CONTRIBUTING.md
================================================
We welcome contributions from the community. Please read the following guidelines carefully to
maximize the chances of your PR being merged.
# Communication
* Before starting work on a major feature, please reach out to us via GitHub, Slack,
email, etc. We will make sure no one else is already working on it and ask you to open a
GitHub issue.
* A "major feature" is defined as any change that is > 100 LOC altered (not including tests), or
changes any user-facing behavior. We will use the GitHub issue to discuss the feature and come to
agreement. This is to prevent your time being wasted, as well as ours. The GitHub review process
for major features is also important so that [organizations with commit access](OWNERS.md) can
come to agreement on design. If it is appropriate to write a design document, the document must
be hosted either in the GitHub tracking issue, or linked to from the issue and hosted in a
world-readable location.
* Specifically, if the goal is to add a new [extension](REPO_LAYOUT.md#sourceextensions-layout),
please read the [extension policy](GOVERNANCE.md#extension-addition-policy).
* Small patches and bug fixes don't need prior communication.
# Coding style
* See [STYLE.md](STYLE.md)
# Inclusive language policy
The Envoy community has an explicit goal to be inclusive to all. As such, all PRs must adhere to the
following guidelines for all code, APIs, and documentation:
* The following words and phrases are not allowed:
* *Whitelist*: use allowlist instead.
* *Blacklist*: use denylist or blocklist instead.
* *Master*: use primary instead.
* *Slave*: use secondary or replica instead.
* Documentation should be written in an inclusive style. The [Google developer
documentation](https://developers.google.com/style/inclusive-documentation) contains an excellent
reference on this topic.
* The above policy is not considered definitive and may be amended in the future as industry best
practices evolve. Additional comments on this topic may be provided by maintainers during code
review.
# Breaking change policy
Both API and implementation stability are important to Envoy. Since the API is consumed by clients
beyond Envoy, it has a distinct set of [versioning guidelines](api/API_VERSIONING.md). Below, we
articulate the Envoy implementation stability rules, which operate within the context of the API
versioning guidelines:
* Features may be marked as deprecated in a given versioned API at any point in time, but this may
only be done when a replacement implementation and configuration path is available in Envoy on
master. Deprecators must implement a conversion from the deprecated configuration to the latest
`vNalpha` (with the deprecated field) that Envoy uses internally. A field may be deprecated if
this tool would be able to perform the conversion. For example, removing a field to describe
HTTP/2 window settings is valid if a more comprehensive HTTP/2 protocol options field is being
introduced to replace it. The PR author deprecating the old configuration is responsible for
updating all tests and canonical configuration, or guarding them with the
`DEPRECATED_FEATURE_TEST()` macro. This will be validated by the `bazel.compile_time_options`
target, which will hard-fail when deprecated configuration is used. The majority of tests and
configuration for a feature should be expressed in terms of the latest Envoy internal
configuration (i.e. `vNalpha`), only a minimal number of tests necessary to validate configuration
translation should be guarded via the `DEPRECATED_FEATURE_TEST()` macro.
* We will delete deprecated configuration across major API versions. E.g. a field marked deprecated
in v2 will be removed in v3.
* Unless the community and Envoy maintainer team agrees on an exception, during the
first release cycle after a feature has been deprecated, use of that feature
will cause a logged warning, and incrementing the
[runtime](https://www.envoyproxy.io/docs/envoy/latest/configuration/operations/runtime#statistics)
`runtime.deprecated_feature_use` stat.
During the second release cycle, use of the deprecated configuration will
cause a configuration load failure, unless the feature in question is
explicitly overridden in
[runtime](https://www.envoyproxy.io/docs/envoy/latest/configuration/operations/runtime#using-runtime-overrides-for-deprecated-features)
config ([example](configs/using_deprecated_config.v2.yaml)). Finally, following the deprecation
of the API major version where the field was first
marked deprecated, the entire implementation code will be removed from the Envoy implementation.
* This policy means that organizations deploying master should have some time to get ready for
breaking changes at the next major API version. This is typically a window of at least 12 months
or until the organization moves to the next major API version.
* The breaking change policy also applies to source level extensions (e.g., filters). Code that
conforms to the public interface documentation should continue to compile and work within the
deprecation window. Within this window, a warning of deprecation should be carefully logged (some
features might need rate limiting for logging this). We make no guarantees about code or deployments
that rely on undocumented behavior.
* All deprecations/breaking changes will be clearly listed in the [version history](docs/root/version_history/).
* High risk deprecations/breaking changes may be announced to the
[envoy-announce](https://groups.google.com/forum/#!forum/envoy-announce) email list but by default
it is expected the multi-phase warn-by-default/fail-by-default is sufficient to warn users to move
away from deprecated features.
# Submitting a PR
* Fork the repo.
* In your local repo, install the git hooks that implement various important pre-commit and
pre-push checks:
```
./support/bootstrap
```
Please see [support/README.md](support/README.md) for more information on these hooks.
* Create your PR.
* Tests will automatically run for you.
* We will **not** merge any PR that is not passing tests.
* PRs are expected to have 100% test coverage for added code. This can be verified with a coverage
build. If your PR cannot have 100% coverage for some reason please clearly explain why when you
open it.
* Any PR that changes user-facing behavior **must** have associated documentation in [docs](docs) as
well as [release notes](docs/root/version_history/current.rst). API changes should be documented
inline with protos as per the [API contribution guidelines](api/CONTRIBUTING.md). If a change applies
to multiple sections of the release notes, it should be noted in the first (most important) section
that applies. For instance, a bug fix that introduces incompatible behavior should be noted in
`Incompatible Behavior Changes` but not in `Bug Fixes`.
* All code comments and documentation are expected to have proper English grammar and punctuation.
If you are not a fluent English speaker (or a bad writer ;-)) please let us know and we will try
to find some help but there are no guarantees.
* Your PR title should be descriptive, and generally start with a subsystem name followed by a
colon. Examples:
* "docs: fix grammar error"
* "http conn man: add new feature"
* Your PR commit message will be used as the commit message when your PR is merged. You should
update this field if your PR diverges during review.
* Your PR description should have details on what the PR does. If it fixes an existing issue it
should end with "Fixes #XXX".
* If your PR is co-authored or based on an earlier PR from another contributor,
please attribute them with `Co-authored-by: name <name@example.com>`. See
GitHub's [multiple author
guidance](https://help.github.com/en/github/committing-changes-to-your-project/creating-a-commit-with-multiple-authors)
for further details.
* When all of the tests are passing and all other conditions described herein are satisfied, a
maintainer will be assigned to review and merge the PR.
* Once you submit a PR, *please do not rebase it*. It's much easier to review if subsequent commits
are new commits and/or merges. We squash rebase the final merged commit so the number of commits
you have in the PR don't matter.
* We expect that once a PR is opened, it will be actively worked on until it is merged or closed.
We reserve the right to close PRs that are not making progress. This is generally defined as no
changes for 7 days. Obviously PRs that are closed due to lack of activity can be reopened later.
Closing stale PRs helps us to keep on top of all of the work currently in flight.
* If a commit deprecates a feature, the commit message must mention what has been deprecated.
Additionally, the [version history](docs/root/version_history/current.rst) must be updated with
relevant RST links for fields and messages as part of the commit.
* Please consider joining the [envoy-dev](https://groups.google.com/forum/#!forum/envoy-dev)
mailing list.
* If your PR involves any changes to
[envoy-filter-example](https://github.com/envoyproxy/envoy-filter-example) (for example making a new
branch so that CI can pass) it is your responsibility to follow through with merging those
changes back to master once the CI dance is done.
* If your PR is a high risk change, the reviewer may ask that you runtime guard
it. See the section on runtime guarding below.
# Runtime guarding
Some changes in Envoy are deemed worthy of runtime guarding. Instead of just replacing
old code with new code, both code paths are supported for between one Envoy release (if it is
guarded due to performance concerns) and a full deprecation cycle (if it is a high risk behavioral
change). Generally as a community we try to guard both high risk changes (major
refactors such as replacing Envoy's buffer implementation) and most user-visible
non-config-guarded changes to protocol processing (for example additions or changes to HTTP headers or
how HTTP is serialized out) for non-alpha features. Feel free to tag @envoyproxy/maintainers
if you aren't sure if a given change merits runtime guarding.
The canonical way to runtime guard a feature is
```
if (Runtime::runtimeFeatureEnabled("envoy.reloadable_features.my_feature_name")) {
[new code path]
} else {
[old_code_path]
}
```
Runtime guarded features named with the "envoy.reloadable_features." prefix must be safe to flip
true or false on running Envoy instances. In some situations it may make more sense to
latch the value in a member variable on class creation, for example:
```
bool use_new_code_path_ =
Runtime::runtimeFeatureEnabled("envoy.reloadable_features.my_feature_name")
```
This should only be done if the lifetime of the object in question is relatively short compared to
the lifetime of most Envoy instances, i.e. latching state on creation of the
Http::ConnectionManagerImpl or all Network::ConnectionImpl classes, to ensure that the new behavior
will be exercised as the runtime value is flipped, and that the old behavior will trail off over
time.
Runtime guarded features may either set true (running the new code by default) in the initial PR,
after a testing interval, or during the next release cycle, at the PR author's and reviewing
maintainer's discretion. Generally all runtime guarded features will be set true when a
release is cut. Old code paths for refactors can be cleaned up after a release and there has been
some production run time. Old code for behavioral changes will be deprecated after six months.
Runtime features are set true by default by inclusion in
[source/common/runtime/runtime_features.cc](https://github.com/envoyproxy/envoy/blob/master/source/common/runtime/runtime_features.cc)
There are four suggested options for testing new runtime features:
1. Create a per-test Runtime::LoaderSingleton as done in [DeprecatedFieldsTest.IndividualFieldDisallowedWithRuntimeOverride](https://github.com/envoyproxy/envoy/blob/master/test/common/protobuf/utility_test.cc)
2. Create a [parameterized test](https://github.com/google/googletest/blob/master/googletest/docs/advanced.md#how-to-write-value-parameterized-tests)
where the set up of the test sets the new runtime value explicitly to
GetParam() as outlined in (1).
3. Set up integration tests with custom runtime defaults as documented in the
[integration test README](https://github.com/envoyproxy/envoy/blob/master/test/integration/README.md)
4. Run a given unit test with the new runtime value explicitly set true or false as done
for [runtime_flag_override_test](https://github.com/envoyproxy/envoy/blob/master/test/common/runtime/BUILD)
Runtime code is held to the same standard as regular Envoy code, so both the old
path and the new should have 100% coverage both with the feature defaulting true
and false.
# PR review policy for maintainers
* Typically we try to turn around reviews within one business day.
* See [OWNERS.md](OWNERS.md) for the current list of maintainers.
* It is generally expected that a senior maintainer should review every PR.
* It is also generally expected that a "domain expert" for the code the PR touches should review the
PR. This person does not necessarily need to have commit access.
* The previous two points generally mean that every PR should have two approvals. (Exceptions can
be made by the senior maintainers).
* The above rules may be waived for PRs which only update docs or comments, or trivial changes to
tests and tools (where trivial is decided by the maintainer in question).
* In general, we should also attempt to make sure that at least one of the approvals is *from an
organization different from the PR author.* E.g., if Lyft authors a PR, at least one approver
should be from an organization other than Lyft. This helps us make sure that we aren't putting
organization specific shortcuts into the code.
* If there is a question on who should review a PR please discuss in Slack.
* Anyone is welcome to review any PR that they want, whether they are a maintainer or not.
* Please make sure that the PR title, commit message, and description are updated if the PR changes
significantly during review.
* Please **clean up the title and body** before merging. By default, GitHub fills the squash merge
title with the original title, and the commit body with every individual commit from the PR.
The maintainer doing the merge should make sure the title follows the guidelines above and should
overwrite the body with the original commit message from the PR (cleaning it up if necessary)
while preserving the PR author's final DCO sign-off.
* If a PR includes a deprecation/breaking change, notification should be sent to the
[envoy-announce](https://groups.google.com/forum/#!forum/envoy-announce) email list.
# Adding new extensions
For developers adding a new extension, one can take an existing extension as the starting point.
Extension configuration should be located in a directory structure like
`api/envoy/extensions/area/plugin/`, for example `api/envoy/extensions/access_loggers/file/`
The code for the extension should be located under the equivalent
`source/extensions/area/plugin`, and include an *envoy_cc_extension* with the
configuration and tagged with the appropriate security posture, and an
*envoy_cc_library* with the code. More details on how to add a new extension
API can be found [here](api/STYLE.md#adding-an-extension-configuration-to-the-api):
Other changes will likely include
* Editing [source/extensions/extensions_build_config.bzl](source/extensions/extensions_build_config.bzl) to include the new extensions
* Editing [docs/root/api-v3/config/config.rst](docs/root/api-v3/config/config.rst) to add area/area
* Adding `docs/root/api-v3/config/area/area.rst` to add a table of contents for the API docs
* Adding `source/extensions/area/well_known_names.h` for registered plugins
# DCO: Sign your work
Envoy ships commit hooks that allow you to auto-generate the DCO signoff line if
it doesn't exist when you run `git commit`. Simply navigate to the Envoy project
root and run:
```bash
./support/bootstrap
```
From here, simply commit as normal, and you will see the signoff at the bottom
of each commit.
The sign-off is a simple line at the end of the explanation for the
patch, which certifies that you wrote it or otherwise have the right to
pass it on as an open-source patch. The rules are pretty simple: if you
can certify the below (from
[developercertificate.org](https://developercertificate.org/)):
```
Developer Certificate of Origin
Version 1.1
Copyright (C) 2004, 2006 The Linux Foundation and its contributors.
660 York Street, Suite 102,
San Francisco, CA 94110 USA
Everyone is permitted to copy and distribute verbatim copies of this
license document, but changing it is not allowed.
Developer's Certificate of Origin 1.1
By making a contribution to this project, I certify that:
(a) The contribution was created in whole or in part by me and I
have the right to submit it under the open source license
indicated in the file; or
(b) The contribution is based upon previous work that, to the best
of my knowledge, is covered under an appropriate open source
license and I have the right under that license to submit that
work with modifications, whether created in whole or in part
by me, under the same open source license (unless I am
permitted to submit under a different license), as indicated
in the file; or
(c) The contribution was provided directly to me by some other
person who certified (a), (b) or (c) and I have not modified
it.
(d) I understand and agree that this project and the contribution
are public and that a record of the contribution (including all
personal information I submit with it, including my sign-off) is
maintained indefinitely and may be redistributed consistent with
this project or the open source license(s) involved.
```
then you just add a line to every git commit message:
Signed-off-by: Joe Smith <joe@gmail.com>
using your real name (sorry, no pseudonyms or anonymous contributions.)
You can add the sign off when creating the git commit via `git commit -s`.
If you want this to be automatic you can set up some aliases:
```bash
git config --add alias.amend "commit -s --amend"
git config --add alias.c "commit -s"
```
## Fixing DCO
If your PR fails the DCO check, it's necessary to fix the entire commit history in the PR. Best
practice is to [squash](https://gitready.com/advanced/2009/02/10/squashing-commits-with-rebase.html)
the commit history to a single commit, append the DCO sign-off as described above, and [force
push](https://git-scm.com/docs/git-push#git-push---force). For example, if you have 2 commits in
your history:
```bash
git rebase -i HEAD^^
(interactive squash + DCO append)
git push origin -f
```
Note, that in general rewriting history in this way is a hindrance to the review process and this
should only be done to correct a DCO mistake.
## Triggering CI re-run without making changes
To rerun failed tasks in Circle-CI, add a comment with the line
```
/retest-circle
```
in it. This should rebuild only the failed tasks.
To rerun failed tasks in Azure pipelines, add a comment with the line
```
/retest
```
in it. This should rebuild only the failed tasks.
Sometimes tasks will be stuck in CI and won't be marked as failed, which means
the above command won't work. Should this happen, pushing an empty commit should
re-run all the CI tasks. Consider adding an alias into your `.gitconfig` file:
```
[alias]
kick-ci = !"git commit -s --allow-empty -m 'Kick CI' && git push"
```
Once you add this alias you can issue the command `git kick-ci` and the PR
will be sent back for a retest.
================================================
FILE: DCO
================================================
Developer Certificate of Origin
Version 1.1
Copyright (C) 2004, 2006 The Linux Foundation and its contributors.
1 Letterman Drive
Suite D4700
San Francisco, CA, 94129
Everyone is permitted to copy and distribute verbatim copies of this
license document, but changing it is not allowed.
Developer's Certificate of Origin 1.1
By making a contribution to this project, I certify that:
(a) The contribution was created in whole or in part by me and I
have the right to submit it under the open source license
indicated in the file; or
(b) The contribution is based upon previous work that, to the best
of my knowledge, is covered under an appropriate open source
license and I have the right under that license to submit that
work with modifications, whether created in whole or in part
by me, under the same open source license (unless I am
permitted to submit under a different license), as indicated
in the file; or
(c) The contribution was provided directly to me by some other
person who certified (a), (b) or (c) and I have not modified
it.
(d) I understand and agree that this project and the contribution
are public and that a record of the contribution (including all
personal information I submit with it, including my sign-off) is
maintained indefinitely and may be redistributed consistent with
this project or the open source license(s) involved.
================================================
FILE: DEPENDENCY_POLICY.md
================================================
# Envoy External Dependency Policy
Envoy has an evolving policy on external dependencies, tracked at
https://github.com/envoyproxy/envoy/issues/10471. This will become stricter over time, below we
detail the policy as it currently applies.
## External dependencies dashboard
The list of external dependencies in Envoy with their current version is available at
https://www.envoyproxy.io/docs/envoy/latest/intro/arch_overview/security/external_deps
## Declaring external dependencies
In general, all external dependencies for the Envoy proxy binary build and test should be declared
in either [bazel/repository_locations.bzl](bazel/repository_locations.bzl) or
[api/bazel/repository_locations.bzl](api/bazel/repository_locations.bzl), unless listed under
[policy exceptions](#policy-exceptions).
An example entry for the `nghttp2` dependency is:
```python
com_github_nghttp2_nghttp2 = dict(
project_name = "Nghttp2",
project_desc = "Implementation of HTTP/2 and its header compression ...",
project_url = "https://nghttp2.org",
version = "1.41.0",
sha256 = "eacc6f0f8543583ecd659faf0a3f906ed03826f1d4157b536b4b385fe47c5bb8",
strip_prefix = "nghttp2-{version}",
urls = ["https://github.com/nghttp2/nghttp2/releases/download/v{version}/nghttp2-{version}.tar.gz"],
use_category = ["dataplane"],
last_updated = "2020-06-02",
cpe = "cpe:2.3:a:nghttp2:nghttp2:*",
),
```
Dependency declarations must:
* Provide a meaningful project name and URL.
* State the version in the `version` field. String interpolation should be used in `strip_prefix`
and `urls` to reference the version. If you need to reference version `X.Y.Z` as `X_Y_Z`, this
may appear in a string as `{underscore_version}`, similarly for `X-Y-Z` you can use
`{dash_version}`.
* Versions should prefer release versions over master branch GitHub SHA tarballs. A comment is
necessary if the latter is used. This comment should contain the reason that a non-release
version is being used.
* Provide accurate entries for `use_category`. Please think carefully about whether there are data
or control plane implications of the dependency.
* Reflect the date (YYYY-MM-DD) at which they were last updated in the `last_updated` field. This
date is preferably the date at which the PR is created.
* CPEs are compulsory for all dependencies that are not purely build/test.
[CPEs](https://en.wikipedia.org/wiki/Common_Platform_Enumeration) provide metadata that allow us
to correlate with related CVEs in dashboards and other tooling, and also provide a machine
consumable join key. You can consult the latest [CPE
dictionary](https://nvd.nist.gov/products/cpe) to find a CPE for a dependency.`"N/A"` should only
be used if no CPE for the project is available in the CPE database. CPEs should be _versionless_
with a `:*` suffix, since the version can be computed from `version`.
When build or test code references Python modules, they should be imported via `pip3_import` in
[bazel/repositories_extra.bzl](bazel/repositories_extra.bzl). Python modules should not be listed in
`repository_locations.bzl` entries. `requirements.txt` files for Python dependencies must pin to
exact versions, e.g. `PyYAML==5.3.1` and ideally also include a [SHA256
checksum](https://davidwalsh.name/hashin).
Pure developer tooling and documentation builds may reference Python via standalone
`requirements.txt`, following the above policy.
## New external dependencies
* Any new dependency on the Envoy data or control plane that impacts Envoy core (i.e. is not
specific to a single non-core extension) must be cleared with the Envoy security team, please file
an issue and tag
[@envoyproxy/security-team](https://github.com/orgs/envoyproxy/teams/security-team). While policy
is still [evolving](robust_to_untrusted_downstream_and_upstream), criteria that will be used in
evaluation include:
* Does the project have release versions? How often do releases happen?
* Does the project have a security vulnerability disclosure process and contact details?
* Does the project have effective governance, e.g. multiple maintainers, a governance policy?
* Does the project have a code review culture? Are patches reviewed by independent maintainers
prior to merge?
* Does the project enable mandatory GitHub 2FA for contributors?
* Does the project have evidence of high test coverage, fuzzing, static analysis (e.g. CodeQL),
etc.?
* Dependencies for extensions that are tagged as `robust_to_untrusted_downstream` or
`robust_to_untrusted_downstream_and_upstream` should be sensitive to the same set of concerns
as the core data plane.
## Maintaining existing dependencies
We rely on community volunteers to help track the latest versions of dependencies. On a best effort
basis:
* Core Envoy dependencies will be updated by the Envoy maintainers/security team.
* Extension [CODEOWNERS](CODEOWNERS) should update extension specific dependencies.
Where possible, we prefer the latest release version for external dependencies, rather than master
branch GitHub SHA tarballs.
## Dependency patches
Occasionally it is necessary to introduce an Envoy-side patch to a dependency in a `.patch` file.
These are typically applied in [bazel/repositories.bzl](bazel/repositories.bzl). Our policy on this
is as follows:
* Patch files impede dependency updates. They are expedient at creation time but are a maintenance
penalty. They reduce the velocity and increase the effort of upgrades in response to security
vulnerabilities in external dependencies.
* No patch will be accepted without a sincere and sustained effort to upstream the patch to the
dependency's canonical repository.
* There should exist a plan-of-record, filed as an issue in Envoy or the upstream GitHub tracking
elimination of the patch.
* Every patch must have comments at its point-of-use in [bazel/repositories.bzl](bazel/repositories.bzl)
providing a rationale and detailing the tracking issue.
## Policy exceptions
The following dependencies are exempt from the policy:
* Any developer-only facing tooling or the documentation build.
* Transitive build time dependencies, e.g. Go projects vendored into
[protoc-gen-validate](https://github.com/envoyproxy/protoc-gen-validate).
================================================
FILE: DEPRECATED.md
================================================
# DEPRECATED
The [deprecated log](https://www.envoyproxy.io/docs/envoy/latest/version_history/version_history)
for each version can be found in the official Envoy developer documentation.
================================================
FILE: DEVELOPER.md
================================================
# Developer documentation
Envoy is built using the Bazel build system. CircleCI builds, tests, and runs coverage against all pull requests and the master branch.
To get started building Envoy locally, see the [Bazel quick start](https://github.com/envoyproxy/envoy/blob/master/bazel/README.md#quick-start-bazel-build-for-developers).
To run tests, there are Bazel [targets](https://github.com/envoyproxy/envoy/blob/master/bazel/README.md#testing-envoy-with-bazel) for Google Test.
To generate a coverage report, there is a [coverage build script](https://github.com/envoyproxy/envoy/blob/master/bazel/README.md#coverage-builds).
If you plan to contribute to Envoy, you may find it useful to install the Envoy [development support toolchain](https://github.com/envoyproxy/envoy/blob/master/support/README.md), which helps automate parts of the development process, particularly those involving code review.
Below is a list of additional documentation to aid the development process:
- [General build and installation documentation](https://www.envoyproxy.io/docs/envoy/latest/install/install)
- [Building and testing Envoy with Bazel](https://github.com/envoyproxy/envoy/blob/master/bazel/README.md)
- [Managing external dependencies with Bazel](https://github.com/envoyproxy/envoy/blob/master/bazel/EXTERNAL_DEPS.md)
- [Guide to Envoy Bazel rules (managing `BUILD` files)](https://github.com/envoyproxy/envoy/blob/master/bazel/DEVELOPER.md)
- [Using Docker for building and testing](https://github.com/envoyproxy/envoy/tree/master/ci)
- [Guide to contributing to Envoy](https://github.com/envoyproxy/envoy/blob/master/CONTRIBUTING.md)
- [Overview of Envoy's testing frameworks](https://github.com/envoyproxy/envoy/blob/master/test/README.md)
- [Overview of how to write integration tests for new code](https://github.com/envoyproxy/envoy/blob/master/test/integration/README.md)
- [Envoy filter example project (how to consume and extend Envoy as a submodule)](https://github.com/envoyproxy/envoy-filter-example)
- [Performance testing Envoy with `tcmalloc`/`pprof`](https://github.com/envoyproxy/envoy/blob/master/bazel/PPROF.md)
And some documents on components of Envoy architecture:
- [Envoy flow control](https://github.com/envoyproxy/envoy/blob/master/source/docs/flow_control.md)
- [Envoy's subset load balancer](https://github.com/envoyproxy/envoy/blob/master/source/docs/subset_load_balancer.md)
================================================
FILE: EXTENSION_POLICY.md
================================================
# Envoy Extension Policy
## Quality requirements
All extensions contained in the main Envoy repository will be held to the same quality bar as the
core Envoy code. This includes coding style, code reviews, test coverage, etc. In the future we
may consider creating a sandbox repository for extensions that are not compiled/tested by default
and held to a lower quality standard, but that is out of scope currently.
## Adding new extensions
The following procedure will be used when proposing new extensions for inclusion in the repository:
1. A GitHub issue should be opened describing the proposed extension as with any major feature
proposal.
2. All extensions must be sponsored by an existing maintainer. Sponsorship means that the
maintainer will shepherd the extension through design/code reviews. Maintainers can self-sponsor
extensions if they are going to write them, shepherd them, and maintain them.
Sponsorship serves two purposes:
* It ensures that the extension will ultimately meet the Envoy quality bar.
* It makes sure that incentives are aligned and that extensions are not added to the repo without
sufficient thought put into future maintenance.
*If sponsorship cannot be found from an existing maintainer, an organization can consider
[doing the work to become a maintainer](./GOVERNANCE.md#process-for-becoming-a-maintainer) in
order to be able to self-sponsor extensions.*
3. Each extension must have two reviewers proposed for reviewing PRs to the extension. Neither of
the reviewers must be a senior maintainer. Existing maintainers (including the sponsor) and other
contributors can count towards this number. The initial reviewers will be codified in the
[CODEOWNERS](./CODEOWNERS) file for long term maintenance. These reviewers can be swapped out as
needed.
4. Any extension added via this process becomes a full part of the repository. This means that any
API breaking changes in the core code will be automatically fixed as part of the normal PR process
by other contributors.
5. Any new dependencies added for this extension must comply with
[DEPENDENCY_POLICY.md](DEPENDENCY_POLICY.md), please follow the steps detailed there.
## Removing existing extensions
As stated in the previous section, once an extension becomes part of the repository it will be
maintained by the collective set of Envoy contributors as needed.
However, if an extension has known issues that are not being rectified by the original sponsor and
reviewers or new contributors that are willing to step into the role of extension owner, a
[vote of the maintainers](./GOVERNANCE.md#conflict-resolution-and-voting) can be called to remove the
extension from the repository.
## Extension pull request reviews
Extension PRs must not modify core Envoy code. In the event that an extension requires changes to core
Envoy code, those changes should be submitted as a separate PR and will undergo the normal code review
process, as documented in the [contributor's guide](./CONTRIBUTING.md).
Extension PRs must be approved by at least one sponsoring maintainer and an extension reviewer. These
may be a single individual, but it is always preferred to have multiple reviewers when feasible.
In the event that the Extension PR author is a sponsoring maintainer and no other sponsoring maintainer
is available, another maintainer may be enlisted to perform a minimal review for style and common C++
anti-patterns. The Extension PR must still be approved by a non-maintainer reviewer.
## Extension stability and security posture
Every extension is expected to be tagged with a `status` and `security_posture` in its
`envoy_cc_extension` rule.
The `status` is one of:
* `stable`: The extension is stable and is expected to be production usable. This is the default if
no `status` is specified.
* `alpha`: The extension is functional but has not had substantial production burn time, use only
with this caveat.
* `wip`: The extension is work-in-progress. Functionality is incomplete and it is not intended for
production use.
The extension status may be adjusted by the extension [CODEOWNERS](./CODEOWNERS) and/or Envoy
maintainers based on an assessment of the above criteria. Note that the status of the extension
reflects the implementation status. It is orthogonal to the API stability, for example, an extension
with configuration `envoy.foo.v3alpha.Bar` might have a `stable` implementation and
`envoy.foo.v3.Baz` can have a `wip` implementation.
The `security_posture` is one of:
* `robust_to_untrusted_downstream`: The extension is hardened against untrusted downstream traffic. It
assumes that the upstream is trusted.
* `robust_to_untrusted_downstream_and_upstream`: The extension is hardened against both untrusted
downstream and upstream traffic.
* `requires_trusted_downstream_and_upstream`: The extension is not hardened and should only be used in deployments
where both the downstream and upstream are trusted.
* `unknown`: This is functionally equivalent to `requires_trusted_downstream_and_upstream`, but acts
as a placeholder to allow us to identify extensions that need classifying.
* `data_plane_agnostic`: Not relevant to data plane threats, e.g. stats sinks.
An assessment of a robust security posture for an extension is subject to the following guidelines:
* Does the extension have fuzz coverage? If it's only receiving fuzzing
courtesy of the generic listener/network/HTTP filter fuzzers, does it have a
dedicated fuzzer for any parts of the code that would benefit?
* Does the extension have unbounded internal buffering? Does it participate in
flow control via watermarking as needed?
* Does the extension have at least one deployment with live untrusted traffic
for a period of time, N months?
* Does the extension rely on dependencies that meet our [extension maturity
model](https://github.com/envoyproxy/envoy/issues/10471)?
* Is the extension reasonable to audit by Envoy security team?
* Is the extension free of obvious scary things, e.g. `memcpy`, does it have gnarly parsing code, etc?
* Does the extension have active [CODEOWNERS](CODEOWNERS) who are willing to
vouch for the robustness of the extension?
* Is the extension absent a [low coverage
exception](https://github.com/envoyproxy/envoy/blob/master/test/per_file_coverage.sh#L5)?
The current stability and security posture of all extensions can be seen
[here](https://www.envoyproxy.io/docs/envoy/latest/intro/arch_overview/security/threat_model#core-and-extensions).
================================================
FILE: GOVERNANCE.md
================================================
# Process for becoming a maintainer
## Your organization is not yet a maintainer
* Express interest to the senior maintainers that your organization is interested in becoming a
maintainer. Becoming a maintainer generally means that you are going to be spending substantial
time (>25%) on Envoy for the foreseeable future. You should have domain expertise and be extremely
proficient in C++. Ultimately your goal is to become a senior maintainer that will represent your
organization.
* We will expect you to start contributing increasingly complicated PRs, under the guidance
of the existing senior maintainers.
* We may ask you to do some PRs from our backlog.
* As you gain experience with the code base and our standards, we will ask you to do code reviews
for incoming PRs (i.e., all maintainers are expected to shoulder a proportional share of
community reviews).
* After a period of approximately 2-3 months of working together and making sure we see eye to eye,
the existing senior maintainers will confer and decide whether to grant maintainer status or not.
We make no guarantees on the length of time this will take, but 2-3 months is the approximate
goal.
## Your organization is currently a maintainer
* First decide whether your organization really needs more people with maintainer access. Valid
reasons are "blast radius", a large organization that is working on multiple unrelated projects,
etc.
* Contact a senior maintainer for your organization and express interest.
* Start doing PRs and code reviews under the guidance of your senior maintainer.
* After a period of 1-2 months the existing senior maintainers will discuss granting "standard"
maintainer access.
* "Standard" maintainer access can be upgraded to "senior" maintainer access after another 1-2
months of work and another conference of the existing senior committers.
## Maintainer responsibilities
* Monitor email aliases.
* Monitor Slack (delayed response is perfectly acceptable).
* Triage GitHub issues and perform pull request reviews for other maintainers and the community.
The areas of specialization listed in [OWNERS.md](OWNERS.md) can be used to help with routing
an issue/question to the right person.
* Triage build issues - file issues for known flaky builds or bugs, and either fix or find someone
to fix any master build breakages.
* During GitHub issue triage, apply all applicable [labels](https://github.com/envoyproxy/envoy/labels)
to each new issue. Labels are extremely useful for future issue follow up. Which labels to apply
is somewhat subjective so just use your best judgment. A few of the most important labels that are
not self explanatory are:
* **beginner**: Mark any issue that can reasonably be accomplished by a new contributor with
this label.
* **help wanted**: Unless it is immediately obvious that someone is going to work on an issue (and
if so assign it), mark it help wanted.
* **question**: If it's unclear if an issue is immediately actionable, mark it with the
question label. Questions are easy to search for and close out at a later time. Questions
can be promoted to other issue types once it's clear they are actionable (at which point the
question label should be removed).
* Make sure that ongoing PRs are moving forward at the right pace or closing them.
* Participate when called upon in the [security release process](SECURITY.md). Note that although
this should be a rare occurrence, if a serious vulnerability is found, the process may take up to
several full days of work to implement. This reality should be taken into account when discussing
time commitment obligations with employers.
* In general continue to be willing to spend at least 25% of ones time working on Envoy (~1.25
business days per week).
* We currently maintain an "on-call" rotation within the maintainers. Each on-call is 1 week.
Although all maintainers are welcome to perform all of the above tasks, it is the on-call
maintainer's responsibility to triage incoming issues/questions and marshal ongoing work
forward. To reiterate, it is *not* the responsibility of the on-call maintainer to answer all
questions and do all reviews, but it is their responsibility to make sure that everything is
being actively covered by someone.
* The on-call rotation is tracked at Opsgenie. The calendar is visible
[here](https://calendar.google.com/calendar/embed?src=d6glc0l5rc3v235q9l2j29dgovh3dn48%40import.calendar.google.com&ctz=America%2FNew_York)
or you can subscribe to the iCal feed [here](webcal://kubernetes.app.opsgenie.com/webapi/webcal/getRecentSchedule?webcalToken=39dd1a892faa8d0d689f889b9d09ae787355ddff894396546726a5a02bac5b26&scheduleId=a3505963-c064-4c97-8865-947dfcb06060)
## Cutting a release
* We do releases every 3 months, at the end of each quarter, as described in the
[release schedule](RELEASES.md#release-schedule).
* Take a look at open issues tagged with the current release, by
[searching](https://github.com/envoyproxy/envoy/issues) for
"is:open is:issue milestone:[current milestone]" and either hold off until
they are fixed or bump them to the next milestone.
* Begin marshalling the ongoing PR flow in this repo. Ask maintainers to hold off merging any
particularly risky PRs until after the release is tagged. This is because we aim for master to be
at release candidate quality at all times.
* Do a final check of the [release notes](docs/root/version_history/current.rst):
* Make any needed corrections (grammar, punctuation, formatting, etc.).
* Check to see if any security/stable version release notes are duplicated in
the major version release notes. These should not be duplicated.
* If the "Deprecated" section is empty, delete it.
* Remove the "Pending" tags and add dates to the top of the [release notes for this version](docs/root/version_history/current.rst).
* Switch the [VERSION](VERSION) from a "dev" variant to a final variant. E.g., "1.6.0-dev" to
"1.6.0".
* Update the [RELEASES](RELEASES.md) doc with the relevant dates.
* Get a review and merge.
* Wait for tests to pass on [master](https://dev.azure.com/cncf/envoy/_build).
* Create a [tagged release](https://github.com/envoyproxy/envoy/releases). The release should
start with "v" and be followed by the version number. E.g., "v1.6.0". **This must match the
[VERSION](VERSION).**
* From the envoy [landing page](https://github.com/envoyproxy/envoy) use the branch drop-down to create a branch
from the tagged release, e.g. "release/v1.6". It will be used for the
[stable releases](RELEASES.md#stable-releases).
* Monitor the AZP tag build to make sure that the final docker images get pushed along with
the final docs. The final documentation will end up in the
[envoyproxy.github.io repository](https://github.com/envoyproxy/envoyproxy.github.io/tree/master/docs/envoy).
* Update the website ([example PR](https://github.com/envoyproxy/envoyproxy.github.io/pull/148)) for the new release.
* Craft a witty/uplifting email and send it to all the email aliases including envoy-announce@.
* Make sure we tweet the new release: either have Matt do it or email social@cncf.io and ask them to do an Envoy account
post.
* Do a new PR to setup the next version
* Update [VERSION](VERSION) to the next development release. E.g., "1.7.0-dev".
* `git mv docs/root/version_history/current.rst docs/root/version_history/v1.6.0.rst`, filling in the previous
release version number in the filename, and add an entry for the new file in the `toctree` in
[version_history.rst](docs/root/version_history/version_history.rst).
* Create a new "current" version history file at the [release
notes](docs/root/version_history/current.rst) for the following version. E.g., "1.7.0 (pending)". Use
this text as the template for the new file:
```
1.7.0 (Pending)
===============
Incompatible Behavior Changes
-----------------------------
*Changes that are expected to cause an incompatibility if applicable; deployment changes are likely required*
Minor Behavior Changes
----------------------
*Changes that may cause incompatibilities for some users, but should not for most*
Bug Fixes
---------
*Changes expected to improve the state of the world and are unlikely to have negative effects*
Removed Config or Runtime
-------------------------
*Normally occurs at the end of the* :ref:`deprecation period <deprecated>`
New Features
------------
Deprecated
----------
```
* Run the deprecate_versions.py script (e.g. `sh tools/deprecate_version/deprecate_version.sh`)
to file tracking issues for runtime guarded code which can be removed.
* Check source/common/runtime/runtime_features.cc and see if any runtime guards in
disabled_runtime_features should be reassessed, and ping on the relevant issues.
## When does a maintainer lose maintainer status
If a maintainer is no longer interested or cannot perform the maintainer duties listed above, they
should volunteer to be moved to emeritus status. In extreme cases this can also occur by a vote of
the maintainers per the voting process below.
# xDS API shepherds
The [xDS API shepherds](https://github.com/orgs/envoyproxy/teams/api-shepherds) are responsible for
approving any PR that modifies the [api/](api/) tree. They ensure that API [style](api/STYLE.md) and
[versioning](api/API_VERSIONING.md) policies are enforced and that a consistent approach is taken
towards API evolution.
The xDS API shepherds are also the xDS API maintainers; they work collaboratively with the community
to drive the xDS API roadmap and review major proposed design changes. The API shepherds are
intended to be representative of xDS client and control plane developers who are actively working on
xDS development and evolution.
As with maintainers, an API shepherd should be spending at least 25% of their time working on xDS
developments and expect to be active in this space in the near future. API shepherds are expected to
take on API shepherd review load and participate in meetings. They should be active on Slack `#xds`
and responsive to GitHub issues and PRs on which they are tagged.
The API shepherds are distinct to the [UDPA working
group](https://github.com/cncf/udpa/blob/master/README.md), which aims to evolve xDS directionally
towards a universal dataplane API. API shepherds are responsible for the execution of the xDS
day-to-day and guiding xDS implementation changes. Proposals from UDPA-WG will be aligned with the
xDS API shepherds to ensure that xDS is heading towards the UDPA goal. xDS API shepherds operate
under the [envoyproxy](https://github.com/envoyproxy) organization but are expected to keep in mind
the needs of all xDS clients (currently Envoy and gRPC, but we are aware of other in-house
implementations) and the goals of UDPA-WG.
If you wish to become an API shepherd and satisfy the above criteria, please contact an existing
API shepherd. We will factor in PR and review history to determine if the above API shepherd
requirements are met. We may ask you to shadow an existing API shepherd for a period of time to
build confidence in consistent application of the API guidelines to PRs.
# Extension addition policy
Adding new [extensions](REPO_LAYOUT.md#sourceextensions-layout) has a dedicated policy. Please
see [this](./EXTENSION_POLICY.md) document for more information.
# External dependency policy
Adding new external dependencies has a dedicated policy. Please see [this](DEPENDENCY_POLICY.md)
document for more information.
# Conflict resolution and voting
In general, we prefer that technical issues and maintainer membership are amicably worked out
between the persons involved. If a dispute cannot be decided independently, the maintainers can be
called in to decide an issue. If the maintainers themselves cannot decide an issue, the issue will
be resolved by voting. The voting process is a simple majority in which each senior maintainer
receives two votes and each normal maintainer receives one vote.
# Adding new projects to the envoyproxy GitHub organization
New projects will be added to the envoyproxy organization via GitHub issue discussion in one of the
existing projects in the organization. Once sufficient discussion has taken place (~3-5 business
days but depending on the volume of conversation), the maintainers of *the project where the issue
was opened* (since different projects in the organization may have different maintainers) will
decide whether the new project should be added. See the section above on voting if the maintainers
cannot easily decide.
================================================
FILE: LICENSE
================================================
Apache License
Version 2.0, January 2004
http://www.apache.org/licenses/
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
1. Definitions.
"License" shall mean the terms and conditions for use, reproduction,
and distribution as defined by Sections 1 through 9 of this document.
"Licensor" shall mean the copyright owner or entity authorized by
the copyright owner that is granting the License.
"Legal Entity" shall mean the union of the acting entity and all
other entities that control, are controlled by, or are under common
control with that entity. For the purposes of this definition,
"control" means (i) the power, direct or indirect, to cause the
direction or management of such entity, whether by contract or
otherwise, or (ii) ownership of fifty percent (50%) or more of the
outstanding shares, or (iii) beneficial ownership of such entity.
"You" (or "Your") shall mean an individual or Legal Entity
exercising permissions granted by this License.
"Source" form shall mean the preferred form for making modifications,
including but not limited to software source code, documentation
source, and configuration files.
"Object" form shall mean any form resulting from mechanical
transformation or translation of a Source form, including but
not limited to compiled object code, generated documentation,
and conversions to other media types.
"Work" shall mean the work of authorship, whether in Source or
Object form, made available under the License, as indicated by a
copyright notice that is included in or attached to the work
(an example is provided in the Appendix below).
"Derivative Works" shall mean any work, whether in Source or Object
form, that is based on (or derived from) the Work and for which the
editorial revisions, annotations, elaborations, or other modifications
represent, as a whole, an original work of authorship. For the purposes
of this License, Derivative Works shall not include works that remain
separable from, or merely link (or bind by name) to the interfaces of,
the Work and Derivative Works thereof.
"Contribution" shall mean any work of authorship, including
the original version of the Work and any modifications or additions
to that Work or Derivative Works thereof, that is intentionally
submitted to Licensor for inclusion in the Work by the copyright owner
or by an individual or Legal Entity authorized to submit on behalf of
the copyright owner. For the purposes of this definition, "submitted"
means any form of electronic, verbal, or written communication sent
to the Licensor or its representatives, including but not limited to
communication on electronic mailing lists, source code control systems,
and issue tracking systems that are managed by, or on behalf of, the
Licensor for the purpose of discussing and improving the Work, but
excluding communication that is conspicuously marked or otherwise
designated in writing by the copyright owner as "Not a Contribution."
"Contributor" shall mean Licensor and any individual or Legal Entity
on behalf of whom a Contribution has been received by Licensor and
subsequently incorporated within the Work.
2. Grant of Copyright License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
copyright license to reproduce, prepare Derivative Works of,
publicly display, publicly perform, sublicense, and distribute the
Work and such Derivative Works in Source or Object form.
3. Grant of Patent License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
(except as stated in this section) patent license to make, have made,
use, offer to sell, sell, import, and otherwise transfer the Work,
where such license applies only to those patent claims licensable
by such Contributor that are necessarily infringed by their
Contribution(s) alone or by combination of their Contribution(s)
with the Work to which such Contribution(s) was submitted. If You
institute patent litigation against any entity (including a
cross-claim or counterclaim in a lawsuit) alleging that the Work
or a Contribution incorporated within the Work constitutes direct
or contributory patent infringement, then any patent licenses
granted to You under this License for that Work shall terminate
as of the date such litigation is filed.
4. Redistribution. You may reproduce and distribute copies of the
Work or Derivative Works thereof in any medium, with or without
modifications, and in Source or Object form, provided that You
meet the following conditions:
(a) You must give any other recipients of the Work or
Derivative Works a copy of this License; and
(b) You must cause any modified files to carry prominent notices
stating that You changed the files; and
(c) You must retain, in the Source form of any Derivative Works
that You distribute, all copyright, patent, trademark, and
attribution notices from the Source form of the Work,
excluding those notices that do not pertain to any part of
the Derivative Works; and
(d) If the Work includes a "NOTICE" text file as part of its
distribution, then any Derivative Works that You distribute must
include a readable copy of the attribution notices contained
within such NOTICE file, excluding those notices that do not
pertain to any part of the Derivative Works, in at least one
of the following places: within a NOTICE text file distributed
as part of the Derivative Works; within the Source form or
documentation, if provided along with the Derivative Works; or,
within a display generated by the Derivative Works, if and
wherever such third-party notices normally appear. The contents
of the NOTICE file are for informational purposes only and
do not modify the License. You may add Your own attribution
notices within Derivative Works that You distribute, alongside
or as an addendum to the NOTICE text from the Work, provided
that such additional attribution notices cannot be construed
as modifying the License.
You may add Your own copyright statement to Your modifications and
may provide additional or different license terms and conditions
for use, reproduction, or distribution of Your modifications, or
for any such Derivative Works as a whole, provided Your use,
reproduction, and distribution of the Work otherwise complies with
the conditions stated in this License.
5. Submission of Contributions. Unless You explicitly state otherwise,
any Contribution intentionally submitted for inclusion in the Work
by You to the Licensor shall be under the terms and conditions of
this License, without any additional terms or conditions.
Notwithstanding the above, nothing herein shall supersede or modify
the terms of any separate license agreement you may have executed
with Licensor regarding such Contributions.
6. Trademarks. This License does not grant permission to use the trade
names, trademarks, service marks, or product names of the Licensor,
except as required for reasonable and customary use in describing the
origin of the Work and reproducing the content of the NOTICE file.
7. Disclaimer of Warranty. Unless required by applicable law or
agreed to in writing, Licensor provides the Work (and each
Contributor provides its Contributions) on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
implied, including, without limitation, any warranties or conditions
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
PARTICULAR PURPOSE. You are solely responsible for determining the
appropriateness of using or redistributing the Work and assume any
risks associated with Your exercise of permissions under this License.
8. Limitation of Liability. In no event and under no legal theory,
whether in tort (including negligence), contract, or otherwise,
unless required by applicable law (such as deliberate and grossly
negligent acts) or agreed to in writing, shall any Contributor be
liable to You for damages, including any direct, indirect, special,
incidental, or consequential damages of any character arising as a
result of this License or out of the use or inability to use the
Work (including but not limited to damages for loss of goodwill,
work stoppage, computer failure or malfunction, or any and all
other commercial damages or losses), even if such Contributor
has been advised of the possibility of such damages.
9. Accepting Warranty or Additional Liability. While redistributing
the Work or Derivative Works thereof, You may choose to offer,
and charge a fee for, acceptance of support, warranty, indemnity,
or other liability obligations and/or rights consistent with this
License. However, in accepting such obligations, You may act only
on Your own behalf and on Your sole responsibility, not on behalf
of any other Contributor, and only if You agree to indemnify,
defend, and hold each Contributor harmless for any liability
incurred by, or claims asserted against, such Contributor by reason
of your accepting any such warranty or additional liability.
END OF TERMS AND CONDITIONS
APPENDIX: How to apply the Apache License to your work.
To apply the Apache License to your work, attach the following
boilerplate notice, with the fields enclosed by brackets "[]"
replaced with your own identifying information. (Don't include
the brackets!) The text should be enclosed in the appropriate
comment syntax for the file format. We also recommend that a
file or class name and description of purpose be included on the
same "printed page" as the copyright notice for easier
identification within third-party archives.
Copyright [yyyy] [name of copyright owner].
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.
================================================
FILE: NOTICE
================================================
Envoy
Copyright 2016-2019 Envoy Project Authors
Licensed under Apache License 2.0. See LICENSE for terms.
================================================
FILE: OWNERS.md
================================================
* See [CONTRIBUTING.md](CONTRIBUTING.md) for general contribution guidelines.
* See [GOVERNANCE.md](GOVERNANCE.md) for governance guidelines and maintainer responsibilities.
This page lists all active maintainers and their areas of expertise. This can be used for
routing PRs, questions, etc. to the right place.
# Senior maintainers
* Matt Klein ([mattklein123](https://github.com/mattklein123)) (mklein@lyft.com)
* Catch-all, "all the things", and generally trying to make himself obsolete as fast as
possible.
* Harvey Tuch ([htuch](https://github.com/htuch)) (htuch@google.com)
* APIs, xDS, UDPA, gRPC, configuration, security, Python, and Bash.
* Alyssa Wilk ([alyssawilk](https://github.com/alyssawilk)) (alyssar@google.com)
* HTTP, flow control, cluster manager, load balancing, and core networking (listeners,
connections, etc.).
* Stephan Zuercher ([zuercher](https://github.com/zuercher)) (zuercher@gmail.com)
* Load balancing, upstream clusters and cluster manager, logging, complex HTTP routing
(metadata, etc.), and macOS build.
* Lizan Zhou ([lizan](https://github.com/lizan)) (lizan@tetrate.io)
* gRPC, gRPC/JSON transcoding, and core networking (transport socket abstractions), Bazel, build
issues, and CI in general.
* Snow Pettersen ([snowp](https://github.com/snowp)) (aickck@gmail.com)
* Upstream, host/priority sets, load balancing, and retry plugins.
* Greg Greenway ([ggreenway](https://github.com/ggreenway)) (ggreenway@apple.com)
* TLS, TCP proxy, listeners, and HTTP proxy/connection pooling.
# Maintainers
* Asra Ali ([asraa](https://github.com/asraa)) (asraa@google.com)
* Fuzzing, security, headers, HTTP/gRPC, router, access log, tests.
* Yan Avlasov ([yanavlasov](https://github.com/yanavlasov)) (yavlasov@google.com)
* Data plane, codecs, security, configuration.
* Jose Nino ([junr03](https://github.com/junr03)) (jnino@lyft.com)
* Outlier detection, HTTP routing, xDS, configuration/operational questions.
* Dhi Aurrahman ([dio](https://github.com/dio)) (dio@tetrate.io)
* Lua, access logging, and general miscellany.
* Joshua Marantz ([jmarantz](https://github.com/jmarantz)) (jmarantz@google.com)
* Stats, abseil, scalability, and performance.
* Antonio Vicente ([antoniovicente](https://github.com/antoniovicente)) (avd@google.com)
* Event management, security, performance, data plane.
# Envoy security team
* All maintainers
* Piotr Sikora ([PiotrSikora](https://github.com/PiotrSikora)) (piotrsikora@google.com)
* Tony Allen ([tonya11en](https://github.com/tonya11en)) (tallen@lyft.com)
# Emeritus maintainers
* Constance Caramanolis ([ccaraman](https://github.com/ccaraman)) (ccaramanolis@lyft.com)
* Roman Dzhabarov ([RomanDzhabarov](https://github.com/RomanDzhabarov)) (rdzhabarov@lyft.com)
* Bill Gallagher ([wgallagher](https://github.com/wgallagher)) (bgallagher@lyft.com)
* Dan Noé ([dnoe](https://github.com/dnoe)) (dpn@google.com)
# Friends of Envoy
This section lists a few people that are not maintainers but typically help out with subject
matter expert reviews. Feel free to loop them in as needed.
* Piotr Sikora ([PiotrSikora](https://github.com/PiotrSikora)) (piotrsikora@google.com)
* TLS, BoringSSL, and core networking (listeners, connections, etc.).
* Shriram Rajagopalan ([rshriram](https://github.com/rshriram)) (shriram@us.ibm.com)
* Istio, APIs, HTTP routing, and WebSocket.
* John Millikin ([jmillikin-stripe](https://github.com/jmillikin-stripe)) (jmillikin@stripe.com)
* Bazel/build.
* Daniel Hochman ([danielhochman](https://github.com/danielhochman)) (dhochman@lyft.com)
* Redis, Python, configuration/operational questions.
* Yuchen Dai ([lambdai](https://github.com/lambdai)) (lambdai@google.com)
* v2 xDS, listeners, filter chain discovery service.
================================================
FILE: PULL_REQUESTS.md
================================================
When creating an Envoy pull request (PR) the text box will automatically be filled
in with the basic fields from the [pull request template](PULL_REQUEST_TEMPLATE.md). The following
is a more detailed explanation of what should go in each field.
### <a name="title"></a>Title
The title of the PR should brief (one line) noting the subsystem or the aspect this PR applies to and
explaining the overall change. Both the component and the explanation must be lower case. For example:
* ci: update build image to 44d539cb
* docs: fix indent, buffer: add copyOut() method
* router:add x-envoy-overloaded header
* tls: add support for specifying TLS session ticket keys
### <a name="desc"></a>Commit Message
The commit message field should include an explanation of what this PR
does. This will be used as the final commit message that maintainers will use to
populate the commit message when merging. If this PR causes a change in behavior
it should document the behavior before and after. If fixing a bug, please
describe what the original issue is and how the change resolves it. If it is
configuration controlled, it should note how the feature is enabled etc...
### <a name="desc"></a>Additional Description
The additional description field should include information of what this PR does
that may be out of scope for a commit message. This could include additional
information or context useful to reviewers.
### <a name="risk"></a>Risk
Risk Level is one of: Low | Medium | High
Low: Small bug fix or small optional feature.
Medium: New features that are not enabled(for example: new filter). Small-medium
features added to existing components(for example: modification to an existing
filter).
High: Complicated changes such as flow control, rewrites of critical
components, etc.
Note: The above is only a rough guide for choosing a level,
please ask if you have any concerns about the risk of the PR.
### <a name="testing"></a>Testing
The testing section should include an explanation of what testing was done, for example: unit test,
integration, manual testing, etc.
Note: It isn’t expected to do all forms of testing, please use your best judgement or ask for
guidance if you are unsure. A good rule of thumb is the riskier the change, the
more comprehensive the testing should be.
### <a name="docs"></a>Documentation
If there are documentation changes, please include a brief description of what they are. Docs
changes may be in [docs/root](docs/root) and/or inline with the API protos. Please write in
N/A if there were no documentation changes.
Any PRs with structural changes to the dataplane should also update the [Life of a
Request](docs/root/intro/life_of_a_request.md) documentation as appropriate.
### <a name="relnotes"></a>Release notes
If this change is user impacting OR extension developer impacting (filter API, etc.) you **must**
add a release note to the [version history](docs/root/version_history/current.rst) for the
current version. Please include any relevant links. Each release note should be prefixed with the
relevant subsystem in **alphabetical order** (see existing examples as a guide) and include links
to relevant parts of the documentation. Thank you! Please write in N/A if there are no release notes.
### <a name="runtime_guard"></a>Runtime guard
If this PR has a user-visible behavioral change, or otherwise falls under the
guidelines for runtime guarding in the [contributing doc](CONTRIBUTING.md)
it should have a runtime guard, which should be documented both in the release
notes and here in the PR description.
For new feature additions guarded by configs, no-op refactors, docs changes etc.
this field can be disregarded and/or removed.
### <a name="issues"></a>Issues
If this PR fixes an outstanding issue, please add a line of the form:
Fixes #Issue
This will result in the linked issue being automatically closed when the PR is
merged. If you want to associate an issue with a PR without closing the issue,
you may instead just tag the PR with the issue:
\#Issue
### <a name="deprecated"></a>Deprecated
If this PR deprecates existing Envoy APIs or code, it should include an update to the deprecated
section of the [version history](docs/root/version_history/current.rst) and a one line note in the
PR description.
If you mark existing APIs or code as deprecated, when the next release is cut, the
deprecation script will create and assign an issue to you for
cleaning up the deprecated code path.
================================================
FILE: PULL_REQUEST_TEMPLATE.md
================================================
<!--
!!!ATTENTION!!!
If you are fixing *any* crash or *any* potential security issue, *do not*
open a pull request in this repo. Please report the issue via emailing
envoy-security@googlegroups.com where the issue will be triaged appropriately.
Thank you in advance for helping to keep Envoy secure.
!!!ATTENTION!!!
-->
For an explanation of how to fill out the fields, please see the relevant section
in [PULL_REQUESTS.md](https://github.com/envoyproxy/envoy/blob/master/PULL_REQUESTS.md)
Commit Message:
Additional Description:
Risk Level:
Testing:
Docs Changes:
Release Notes:
[Optional Runtime guard:]
[Optional Fixes #Issue]
[Optional Deprecated:]
================================================
FILE: README.md
================================================

[Cloud-native high-performance edge/middle/service proxy](https://www.envoyproxy.io/)
Envoy is hosted by the [Cloud Native Computing Foundation](https://cncf.io) (CNCF). If you are a
company that wants to help shape the evolution of technologies that are container-packaged,
dynamically-scheduled and microservices-oriented, consider joining the CNCF. For details about who's
involved and how Envoy plays a role, read the CNCF
[announcement](https://www.cncf.io/blog/2017/09/13/cncf-hosts-envoy/).
[](https://bestpractices.coreinfrastructure.org/projects/1266)
[](https://dev.azure.com/cncf/envoy/_build/latest?definitionId=11&branchName=master)
[](https://circleci.com/gh/envoyproxy/envoy/tree/master)
[](https://bugs.chromium.org/p/oss-fuzz/issues/list?sort=-opened&can=1&q=proj:envoy)
[](http://powerci.osuosl.org/job/build-envoy-master/)
## Documentation
* [Official documentation](https://www.envoyproxy.io/)
* [FAQ](https://www.envoyproxy.io/docs/envoy/latest/faq/overview)
* [Unofficial Chinese documentation](https://www.servicemesher.com/envoy/)
* Watch [a video overview of Envoy](https://www.youtube.com/watch?v=RVZX4CwKhGE)
([transcript](https://www.microservices.com/talks/lyfts-envoy-monolith-service-mesh-matt-klein/))
to find out more about the origin story and design philosophy of Envoy
* [Blog](https://medium.com/@mattklein123/envoy-threading-model-a8d44b922310) about the threading model
* [Blog](https://medium.com/@mattklein123/envoy-hot-restart-1d16b14555b5) about hot restart
* [Blog](https://medium.com/@mattklein123/envoy-stats-b65c7f363342) about stats architecture
* [Blog](https://medium.com/@mattklein123/the-universal-data-plane-api-d15cec7a) about universal data plane API
* [Blog](https://medium.com/@mattklein123/lyfts-envoy-dashboards-5c91738816b1) on Lyft's Envoy dashboards
## Related
* [data-plane-api](https://github.com/envoyproxy/data-plane-api): v2 API definitions as a standalone
repository. This is a read-only mirror of [api](api/).
* [envoy-perf](https://github.com/envoyproxy/envoy-perf): Performance testing framework.
* [envoy-filter-example](https://github.com/envoyproxy/envoy-filter-example): Example of how to add new filters
and link to the main repository.
## Contact
* [envoy-announce](https://groups.google.com/forum/#!forum/envoy-announce): Low frequency mailing
list where we will email announcements only.
* [envoy-security-announce](https://groups.google.com/forum/#!forum/envoy-security-announce): Low frequency mailing
list where we will email security related announcements only.
* [envoy-users](https://groups.google.com/forum/#!forum/envoy-users): General user discussion.
* [envoy-dev](https://groups.google.com/forum/#!forum/envoy-dev): Envoy developer discussion (APIs,
feature design, etc.).
* [envoy-maintainers](https://groups.google.com/forum/#!forum/envoy-maintainers): Use this list
to reach all core Envoy maintainers.
* [Twitter](https://twitter.com/EnvoyProxy/): Follow along on Twitter!
* [Slack](https://envoyproxy.slack.com/): Slack, to get invited go [here](https://envoyslack.cncf.io).
We have the IRC/XMPP gateways enabled if you prefer either of those. Once an account is created,
connection instructions for IRC/XMPP can be found [here](https://envoyproxy.slack.com/account/gateways).
* NOTE: Response to user questions is best effort on Slack. For a "guaranteed" response please email
envoy-users@ per the guidance in the following linked thread.
Please see [this](https://groups.google.com/forum/#!topic/envoy-announce/l9zjYsnS3TY) email thread
for information on email list usage.
## Contributing
Contributing to Envoy is fun and modern C++ is a lot less scary than you might think if you don't
have prior experience. To get started:
* [Contributing guide](CONTRIBUTING.md)
* [Beginner issues](https://github.com/envoyproxy/envoy/issues?q=is%3Aopen+is%3Aissue+label%3Abeginner)
* [Build/test quick start using docker](ci#building-and-running-tests-as-a-developer)
* [Developer guide](DEVELOPER.md)
* Consider installing the Envoy [development support toolchain](https://github.com/envoyproxy/envoy/blob/master/support/README.md), which helps automate parts of the development process, particularly those involving code review.
* Please make sure that you let us know if you are working on an issue so we don't duplicate work!
## Community Meeting
The Envoy team meets twice per month on Tuesday, alternating between 9am PT and 5PM PT. The public
Google calendar is here: https://goo.gl/PkDijT
* Meeting minutes are [here](https://goo.gl/5Cergb)
* Recorded videos are posted [here](https://www.youtube.com/channel/UCvqbFHwN-nwalWPjPUKpvTA/videos?view=0&sort=dd&shelf_id=1)
## Security
### Security Audit
A third party security audit was performed by Cure53, you can see the full report [here](docs/SECURITY_AUDIT.pdf).
### Reporting security vulnerabilities
If you've found a vulnerability or a potential vulnerability in Envoy please let us know at
[envoy-security](mailto:envoy-security@googlegroups.com). We'll send a confirmation
email to acknowledge your report, and we'll send an additional email when we've identified the issue
positively or negatively.
For further details please see our complete [security release process](SECURITY.md).
================================================
FILE: RELEASES.md
================================================
# Release Process
## Active development
Active development is happening on the `master` branch, and a new version is released from it
at the end of each quarter.
## Stable releases
Stable releases of Envoy include:
* Extended maintenance window (any version released in the last 12 months).
* Security fixes backported from the `master` branch (including those deemed not worthy
of creating a CVE).
* Stability fixes backported from the `master` branch (anything that can result in a crash,
including crashes triggered by a trusted control plane).
* Bugfixes, deemed worthwhile by the maintainers of stable releases.
### Hand-off
Hand-off to the maintainers of stable releases happens after Envoy maintainers release a new
version from the `master` branch by creating a `vX.Y.0` tag and a corresponding `release/vX.Y`
branch, with merge permissions given to the release manager of stable releases, and CI configured
to execute tests on it.
### Security releases
Critical security fixes are owned by the Envoy security team, which provides fixes for the
`master` branch, and the latest release branch. Once those fixes are ready, the maintainers
of stable releases backport them to the remaining supported stable releases.
### Backports
All other security and reliability fixes can be nominated for backporting to stable releases
by Envoy maintainers, Envoy security team, the change author, or members of the Envoy community
by adding the `backport/review` or `backport/approved` label (this can be done using [repokitteh]'s
`/backport` command). Changes nominated by the change author and/or members of the Envoy community
are evaluated for backporting on a case-by-case basis, and require approval from either the release
manager of stable release, Envoy maintainers, or Envoy security team. Once approved, those fixes
are backported from the `master` branch to all supported stable branches by the maintainers of
stable releases. New stable versions from non-critical security fixes are released on a regular
schedule, initially aiming for the bi-weekly releases.
### Release management
Release managers of stable releases are responsible for approving and merging backports, tagging
stable releases and sending announcements about them. This role is rotating on a quarterly basis.
| Quarter | Release manager |
|:-------:|:----------------------------:|
| 2020 Q1 | Piotr Sikora ([PiotrSikora]) |
| 2020 Q2 | Piotr Sikora ([PiotrSikora]) |
| 2020 Q3 | Yuchen Dai ([lambdai]) |
## Release schedule
In order to accommodate downstream projects, new Envoy releases are produced on a fixed release
schedule (at the end of each quarter), with an acceptable delay of up to 2 weeks, with a hard
deadline of 3 weeks.
| Version | Expected | Actual | Difference | End of Life |
|:-------:|:----------:|:----------:|:----------:|:-----------:|
| 1.12.0 | 2019/09/30 | 2019/10/31 | +31 days | 2020/10/31 |
| 1.13.0 | 2019/12/31 | 2020/01/20 | +20 days | 2021/01/20 |
| 1.14.0 | 2020/03/31 | 2020/04/08 | +8 days | 2021/04/08 |
| 1.15.0 | 2020/06/30 | 2020/07/07 | +7 days | 2021/07/07 |
| 1.16.0 | 2020/09/30 | 2020/10/08 | +8 days | 2021/10/08 |
| 1.17.0 | 2020/12/31 | | | |
[repokitteh]: https://github.com/repokitteh
[PiotrSikora]: https://github.com/PiotrSikora
================================================
FILE: REPO_LAYOUT.md
================================================
# Repository layout overview
This is a high level overview of how the repository is laid out to both aid in code investigation,
as well as to clearly specify how extensions are added to the repository. The top level directories
are:
* [.circleci/](.circleci/): Configuration for [CircleCI](https://circleci.com/gh/envoyproxy).
* [api/](api/): Envoy data plane API.
* [bazel/](bazel/): Configuration for Envoy's use of [Bazel](https://bazel.build/).
* [ci/](ci/): Scripts used both during CI as well as to build Docker containers.
* [configs/](configs/): Example Envoy configurations.
* [docs/](docs/): End user facing Envoy proxy and data plane API documentation as well as scripts
for publishing final docs during releases.
* [examples/](examples/): Larger Envoy examples using Docker and Docker Compose.
* [include/](include/): "Public" interface headers for "core" Envoy. In general,
these are almost entirely 100% abstract classes. There are a few cases of not-abstract classes in
the "public" headers, typically for performance reasons. Note that "core" includes some
"extensions" such as the HTTP connection manager filter and associated functionality which are
so fundamental to Envoy that they will likely never be optional from a compilation perspective.
* [restarter/](restarter/): Envoy's hot restart wrapper Python script.
* [source/](source/): Source code for core Envoy as well as extensions. The layout of this directory
is discussed in further detail below.
* [support/](support/): Development support scripts (pre-commit Git hooks, etc.)
* [test/](test/): Test code for core Envoy as well as extensions. The layout of this directory is
discussed in further detail below.
* [tools/](tools/): Miscellaneous tools that have not found a home somewhere else.
## [source/](source/)
* [common/](source/common/): Core Envoy code (not specific to extensions) that is also not
specific to a standalone server implementation. I.e., this is the code that could be used if Envoy
were eventually embedded as a library.
* [docs/](source/docs/): Miscellaneous developer/design documentation that is not relevant for
the public user documentation.
* [exe/](source/exe/): Code specific to building the final production Envoy server binary. This is
the only code that is not shared by integration and unit tests.
* [extensions/](source/extensions/): Extensions to the core Envoy code. The layout of this
directory is discussed in further detail below.
* [server/](source/server/): Code specific to running Envoy as a standalone server. E.g,
configuration, server startup, workers, etc. Over time, the line between `common/` and `server/`
has become somewhat blurred. Use best judgment as to where to place something.
## [test/](test/)
Not every directory within test is described below, but a few highlights:
* Unit tests are found in directories matching their [source/](source/) equivalents. E.g.,
[common/](test/common/), [exe/](test/exe/), and [server/](test/server/).
* Extension unit tests also match their source equivalents in [extensions/](test/extensions/).
* [integration/](test/integration/) holds end-to-end integration tests using roughly the real
Envoy server code, fake downstream clients, and fake upstream servers. Integration tests also
test some of the extensions found in the repository. Note that in the future, we would like to
allow integration tests that are specific to extensions and are not required for covering
"core" Envoy functionality. Those integration tests will likely end up in the
[extensions/](test/extensions/) directory but further work and thinking is required before
we get to that point.
* [mocks/](test/mocks/) contains mock implementations of all of the core Envoy interfaces found in
[include/](include/).
* Other directories include tooling used for configuration testing, coverage testing, fuzz testing,
common test code, etc.
## [source/extensions](source/extensions/) layout
We maintain a very specific code and namespace layout for extensions. This aids in discovering
code/extensions, and also will allow us in the future to more easily scale out our extension
maintainers by having OWNERS files specific to certain extensions. (As of this writing, this is not
currently implemented but that is the plan moving forward.)
* All extensions are either registered in [all_extensions.bzl](source/extensions/all_extensions.bzl)
or [extensions_build_config.bzl](source/extensions/extensions_build_config.bzl). The former is
for extensions that cannot be removed from the primary Envoy build. The latter is for extensions
that can be removed on a site specific basis. See [bazel/README.md](bazel/README.md) for how to
compile out extensions on a site specific basis. Note that by default extensions should be
removable from the build unless there is a very good reason.
* These are the top level extension directories and associated namespaces:
* [access_loggers/](/source/extensions/access_loggers): Access log implementations which use
the `Envoy::Extensions::AccessLoggers` namespace.
* [filters/http/](/source/extensions/filters/http): HTTP L7 filters which use the
`Envoy::Extensions::HttpFilters` namespace.
* [filters/listener/](/source/extensions/filters/listener): Listener filters which use the
`Envoy::Extensions::ListenerFilters` namespace.
* [filters/network/](/source/extensions/filters/network): L4 network filters which use the
`Envoy::Extensions::NetworkFilters` namespace.
* [grpc_credentials/](/source/extensions/grpc_credentials): Custom gRPC credentials which use the
`Envoy::Extensions::GrpcCredentials` namespace.
* [health_checker/](/source/extensions/health_checker): Custom health checkers which use the
`Envoy::Extensions::HealthCheckers` namespace.
* [resolvers/](/source/extensions/resolvers): Network address resolvers which use the
`Envoy::Extensions::Resolvers` namespace.
* [stat_sinks/](/source/extensions/stat_sinks): Stat sink implementations which use the
`Envoy::Extensions::StatSinks` namespace.
* [tracers/](/source/extensions/tracers): Tracers which use the
`Envoy::Extensions::Tracers` namespace.
* [transport_sockets/](/source/extensions/transport_sockets): Transport socket implementations
which use the `Envoy::Extensions::TransportSockets` namespace.
* Each extension is contained wholly in its own namespace. E.g.,
`Envoy::Extensions::NetworkFilters::Echo`.
* Common code that is used by multiple extensions should be in a `common/` directory as close to
the extensions as possible. E.g., [filters/common/](/source/extensions/filters/common) for common
code that is used by both HTTP and network filters. Common code used only by two HTTP filters
would be found in `filters/http/common/`. Common code should be placed in a common namespace.
E.g., `Envoy::Extensions::Filters::Common`.
================================================
FILE: SECURITY.md
================================================
# Security Reporting Process
Please report any security issue or Envoy crash report to
envoy-security@googlegroups.com where the issue will be triaged appropriately.
Thank you in advance for helping to keep Envoy secure.
# Security Release Process
Envoy is a large growing community of volunteers, users, and vendors. The Envoy community has
adopted this security disclosure and response policy to ensure we responsibly handle critical
issues.
## Product Security Team (PST)
Security vulnerabilities should be handled quickly and sometimes privately. The primary goal of this
process is to reduce the total time users are vulnerable to publicly known exploits.
The Product Security Team (PST) is responsible for organizing the entire response including internal
communication and external disclosure but will need help from relevant developers to successfully
run this process.
The initial Product Security Team will consist of all [maintainers](OWNERS.md) in the private
[envoy-security](https://groups.google.com/forum/#!forum/envoy-security) list. In the future we may
decide to have a subset of maintainers work on security response given that this process is time
consuming.
## Disclosures
### Private Disclosure Processes
The Envoy community asks that all suspected vulnerabilities be privately and responsibly disclosed
via the [reporting policy](README.md#reporting-security-vulnerabilities).
### Public Disclosure Processes
If you know of a publicly disclosed security vulnerability please IMMEDIATELY email
[envoy-security](https://groups.google.com/forum/#!forum/envoy-security) to inform the Product
Security Team (PST) about the vulnerability so they may start the patch, release, and communication
process.
If possible the PST will ask the person making the public report if the issue can be handled via a
private disclosure process (for example if the full exploit details have not yet been published). If
the reporter denies the request for private disclosure, the PST will move swiftly with the fix and
release process. In extreme cases GitHub can be asked to delete the issue but this generally isn't
necessary and is unlikely to make a public disclosure less damaging.
## Patch, Release, and Public Communication
For each vulnerability a member of the PST will volunteer to lead coordination with the "Fix Team"
and is responsible for sending disclosure emails to the rest of the community. This lead will be
referred to as the "Fix Lead."
The role of Fix Lead should rotate round-robin across the PST.
Note that given the current size of the Envoy community it is likely that the PST is the same as
the "Fix team." (I.e., all maintainers). The PST may decide to bring in additional contributors
for added expertise depending on the area of the code that contains the vulnerability.
All of the timelines below are suggestions and assume a private disclosure. The Fix Lead drives the
schedule using their best judgment based on severity and development time. If the Fix Lead is
dealing with a public disclosure all timelines become ASAP (assuming the vulnerability has a CVSS
score >= 4; see below). If the fix relies on another upstream project's disclosure timeline, that
will adjust the process as well. We will work with the upstream project to fit their timeline and
best protect our users.
### Released versions and master branch
If the vulnerability affects the last point release version, e.g. 1.10, then the full security
release process described in this document will be activated. A security point release will be
created for 1.10, e.g. 1.10.1, together with a fix to master if necessary. Older point releases,
e.g. 1.9, are not supported by the Envoy project and will not have any security release created.
If a security vulnerability affects only these older versions but not master or the last supported
point release, the Envoy security team will share this information with the private distributor
list, following the standard embargo process, but not create a security release. After the embargo
expires, the vulnerability will be described as a GitHub issue. A CVE will be filed if warranted by
severity.
If a vulnerability does not affect any point release but only master, additional caveats apply:
* If the issue is detected and a fix is available within 7 days of the introduction of the
vulnerability, or the issue is deemed a low severity vulnerability by the Envoy maintainer and
security teams, the fix will be publicly reviewed and landed on master. If the severity is at least
medium or at maintainer discretion a courtesy e-mail will be sent to envoy-users@googlegroups.com,
envoy-dev@googlegroups.com, envoy-security-announce@googlegroups.com and
cncf-envoy-distributors-announce@lists.cncf.io.
* If the vulnerability has been in existence for more than 7 days and is medium or higher, we will
activate the security release process.
We advise distributors and operators working from the master branch to allow at least 5 days soak
time after cutting a binary release before distribution or rollout, to allow time for our fuzzers to
detect issues during their execution on ClusterFuzz. A soak period of 7 days provides an even stronger
guarantee, since we will invoke the security release process for medium or higher severity issues
for these older bugs.
### Threat model
See https://www.envoyproxy.io/docs/envoy/latest/intro/arch_overview/security/threat_model.
Vulnerabilities are evaluated against this threat model when deciding whether to activate the Envoy
security release process.
### Fix Team Organization
These steps should be completed within the first 24 hours of disclosure.
- The Fix Lead will work quickly to identify relevant engineers from the affected projects and
packages and CC those engineers into the disclosure thread. These selected developers are the Fix
Team.
- The Fix Lead will get the Fix Team access to private security repos to develop the fix.
### Fix Development Process
These steps should be completed within the 1-7 days of Disclosure.
- The Fix Lead and the Fix Team will create a
[CVSS](https://www.first.org/cvss/specification-document) using the [CVSS
Calculator](https://www.first.org/cvss/calculator/3.0). The Fix Lead makes the final call on the
calculated CVSS; it is better to move quickly than making the CVSS perfect.
- The Fix Team will notify the Fix Lead that work on the fix branch is complete once there are LGTMs
on all commits in the private repo from one or more maintainers.
If the CVSS score is under 4.0 ([a low severity
score](https://www.first.org/cvss/specification-document#i5)) the Fix Team can decide to slow the
release process down in the face of holidays, developer bandwidth, etc. These decisions must be
discussed on the envoy-security mailing list.
A three week window will be provided to members of the private distributor list from candidate patch
availability until the security release date. It is expected that distributors will normally be able
to perform a release within this time window. If there are exceptional circumstances, the Envoy
security team will raise this window to four weeks. The release window will be reduced if the
security issue is public or embargo is broken.
We will endeavor not to overlap this three week window with or place it adjacent to major corporate
holiday periods or end-of-quarter (e.g. impacting downstream Istio releases), where possible.
### Fix and disclosure SLOs
* All reports to envoy-security@googlegroups.com will be triaged and have an
initial response within 1 business day.
* Privately disclosed issues will be fixed or publicly disclosed within 90 days
by the Envoy security team. In exceptional circumstances we reserve the right
to work with the discloser to coordinate on an extension, but this will be
rarely used.
* Any issue discovered by the Envoy security team and raised in our private bug
tracker will be converted to a public issue within 90 days. We will regularly
audit these issues to ensure that no major vulnerability (from the perspective
of the threat model) is accidentally leaked.
* Fuzz bugs are subject to a 90 day disclosure deadline.
* Three weeks notice will be provided to private distributors from patch
availability until the embargo deadline.
* Public zero days will be fixed ASAP, but there is no SLO for this, since this
will depend on the severity and impact to the organizations backing the Envoy
security team.
### Fix Disclosure Process
With the fix development underway, the Fix Lead needs to come up with an overall communication plan
for the wider community. This Disclosure process should begin after the Fix Team has developed a Fix
or mitigation so that a realistic timeline can be communicated to users.
**Disclosure of Forthcoming Fix to Users** (Completed within 1-7 days of Disclosure)
- The Fix Lead will email [envoy-security-announce@googlegroups.com](https://groups.google.com/forum/#!forum/envoy-security-announce)
(CC [envoy-announce@googlegroups.com](https://groups.google.com/forum/#!forum/envoy-announce))
informing users that a security vulnerability has been disclosed and that a fix will be made
available at YYYY-MM-DD HH:MM UTC in the future via this list. This time is the Release Date.
- The Fix Lead will include any mitigating steps users can take until a fix is available.
The communication to users should be actionable. They should know when to block time to apply
patches, understand exact mitigation steps, etc.
**Optional Fix Disclosure to Private Distributors List** (Completed within 1-14 days of Disclosure):
- The Fix Lead will make a determination with the help of the Fix Team if an issue is critical enough
to require early disclosure to distributors. Generally this Private Distributor Disclosure process
should be reserved for remotely exploitable or privilege escalation issues. Otherwise, this
process can be skipped.
- The Fix Lead will email the patches to cncf-envoy-distributors-announce@lists.cncf.io so
distributors can prepare builds to be available to users on the day of the issue's announcement. Any
patches against main will be updated and resent weekly.
Distributors should read about the [Private Distributors List](#private-distributors-list) to find
out the requirements for being added to this list.
- **What if a vendor breaks embargo?** The PST will assess the damage. The Fix Lead will make the
call to release earlier or continue with the plan. When in doubt push forward and go public ASAP.
**Fix Release Day** (Completed within 1-21 days of Disclosure)
- The maintainers will create a new patch release branch from the latest patch release tag + the fix
from the security branch. As a practical example if v1.5.3 is the latest patch release in Envoy.git
a new branch will be created called v1.5.4 which includes only patches required to fix the issue.
- The Fix Lead will cherry-pick the patches onto the master branch and all relevant release branches.
The Fix Team will LGTM and merge. Maintainers will merge these PRs as quickly as possible. Changes
shouldn't be made to the commits even for a typo in the CHANGELOG as this will change the git sha
of the commits leading to confusion and potentially conflicts as the fix is cherry-picked around
branches.
- The Fix Lead will request a CVE from [DWF](https://github.com/distributedweaknessfiling/DWF-Documentation)
and include the CVSS and release details.
- The Fix Lead will email envoy-{dev,users,announce}@googlegroups.com now that everything is public
announcing the new releases, the CVE number, and the relevant merged PRs to get wide distribution
and user action. As much as possible this email should be actionable and include links on how to apply
the fix to user's environments; this can include links to external distributor documentation.
- The Fix Lead will remove the Fix Team from the private security repo.
### Retrospective
These steps should be completed 1-3 days after the Release Date. The retrospective process
[should be blameless](https://landing.google.com/sre/book/chapters/postmortem-culture.html).
- The Fix Lead will send a retrospective of the process to envoy-dev@googlegroups.com including
details on everyone involved, the timeline of the process, links to relevant PRs that introduced
the issue, if relevant, and any critiques of the response and release process.
- Maintainers and Fix Team are also encouraged to send their own feedback on the process to
envoy-dev@googlegroups.com. Honest critique is the only way we are going to get good at this as a
community.
## Private Distributors List
This list is intended to be used primarily to provide actionable information to
multiple distribution vendors as well as a *limited* set of high impact end users at once. *This
list is not intended in the general case for end users to find out about security issues*.
### Embargo Policy
The information members receive on cncf-envoy-distributors-announce must not be made public, shared, nor
even hinted at anywhere beyond the need-to-know within your specific team except with the list's
explicit approval. This holds true until the public disclosure date/time that was agreed upon by the
list. Members of the list and others may not use the information for anything other than getting the
issue fixed for your respective users.
Before any information from the list is shared with respective members of your team required to fix
said issue, they must agree to the same terms and only find out information on a need-to-know basis.
We typically expect a single point-of-contact (PoC) at any given legal entity. Within the
organization, it is the responsibility of the PoC to share CVE and related patches internally. This
should be performed on a strictly need-to-know basis with affected groups to the extent that this is
technically plausible. All teams should be aware of the embargo conditions and accept them.
Ultimately, if an organization breaks embargo transitively through such sharing, they will lose
the early disclosure privilege, so it's in their best interest to carefully share information internally,
following best practices and use their judgement in balancing the tradeoff between protecting users
and maintaining confidentiality.
The embargo applies to information shared, source code and binary images. **It is a violation of the
embargo policy to share binary distributions of the security fixes before the public release date.**
This includes, but is not limited to, Envoy binaries and Docker images. It is expected that
distributors have a method to stage and validate new binaries without exposing them publicly.
If the information shared is under embargo from a third party, where Envoy is one of many projects
that a disclosure is shared with, it is critical to consider that the ramifications of any leak will
extend beyond the Envoy community and will leave us in a position in which we will be less likely to
receive embargoed reports in the future.
In the unfortunate event you share the information beyond what is allowed by this policy, you _must_
urgently inform the envoy-security@googlegroups.com mailing list of exactly what information leaked
and to whom. A retrospective will take place after the leak so we can assess how to prevent making the
same mistake in the future.
If you continue to leak information and break the policy outlined here, you will be removed from the
list.
### Contributing Back
This is a team effort. As a member of the list you must carry some water. This
could be in the form of the following:
**Technical**
- Review and/or test the proposed patches and point out potential issues with
them (such as incomplete fixes for the originally reported issues, additional
issues you might notice, and newly introduced bugs), and inform the list of the
work done even if no issues were encountered.
**Administrative**
- Help draft emails to the public disclosure mailing list.
- Help with release notes.
### Membership Criteria
To be eligible for the cncf-envoy-distributors-announce mailing list, your
use of Envoy should:
1. Be either:
1. An actively maintained distribution of Envoy components. An example is
"SuperAwesomeLinuxDistro" which offers Envoy pre-built packages. Another
example is "SuperAwesomeServiceMesh" which offers a service mesh product
that includes Envoy as a component.
OR
2. Offer Envoy as a publicly available infrastructure or platform service, in
which the product clearly states (e.g. public documentation, blog posts,
marketing copy, etc.) that it is built on top of Envoy. E.g.,
"SuperAwesomeCloudProvider's Envoy as a Service (EaaS)". An infrastructure
service that uses Envoy for a product but does not publicly say they are
using Envoy does not *generally* qualify (see option 3 that follows). This is essentially IaaS
or PaaS. If you use Envoy to support a SaaS, e.g. "SuperAwesomeCatVideoService", this does not
*generally* qualify.
OR
3. An end user of Envoy that satisfies the following requirements:
1. Is "well known" to the Envoy community. Being "well known" is fully subjective and
determined by the Envoy maintainers and security team. Becoming "well known" would
generally be achieved by activities such as: PR contributions, either code or
documentation; helping other end users on Slack, GitHub, and the mailing lists; speaking
about use of Envoy at conferences; writing about use of Envoy in blog posts; sponsoring
Envoy conferences, meetups, and other activities; etc. This is a more strict variant of
item 5 below.
2. Is of sufficient size, scale, and impact to make your inclusion on the list
worthwhile. The definition of size, scale, and impact is fully subjective and
determined by the Envoy maintainers and security team. The definition will not be
discussed further in this document.
3. You *must* smoke test and then widely deploy security patches promptly and report back
success or failure ASAP. Furthermore, the Envoy maintainers may occasionally ask you to
smoke test especially risky public PRs before they are merged. Not performing these tasks
in a reasonably prompt timeframe will result in removal from the list. This is a more
strict variant of item 7 below.
4. In order to balance inclusion in the list versus a greater chance of accidental
disclosure, end users added to the list via this option will be limited to a total of
**10** slots. Periodic review (see below) may allow new slots to open, so please continue
to apply if it seems your organization would otherwise qualify. The security team also
reserves the right to change this limit in the future.
2. Have a user or customer base not limited to your own organization (except for option 3 above).
We will use the size of the user or customer base as part of the criteria to determine
eligibility.
3. Have a publicly verifiable track record up to present day of fixing security
issues.
4. Not be a downstream or rebuild of another distribution.
5. Be a participant and active contributor in the community.
6. Accept the [Embargo Policy](#embargo-policy) that is outlined above. You must
have a way to privately stage and validate your updates that does not violate
the embargo.
7. Be willing to [contribute back](#contributing-back) as outlined above.
8. Be able to perform a security release of your product within a three week window from candidate fix
patch availability.
9. Have someone already on the list vouch for the person requesting membership
on behalf of your distribution.
10. Nominate an e-mail alias or list for your organization to receive updates. This should not be
an individual user address, but instead a list that can be maintained by your organization as
individuals come and go. A good example is envoy-security@seven.com, a bad example is
acidburn@seven.com. You must accept the invite sent to this address or you will not receive any
e-mail updates. This e-mail address will be [shared with the Envoy community](#Members).
Note that Envoy maintainers are members of the Envoy security team. [Members of the Envoy security
team](OWNERS.md#envoy-security-team) and the organizations that they represent are implicitly
included in the private distributor list. These organizations do not need to meet the above list of
criteria with the exception of the acceptance of the embargo policy.
### Requesting to Join
New membership requests are sent to envoy-security@googlegroups.com.
In the body of your request please specify how you qualify and fulfill each
criterion listed in [Membership Criteria](#membership-criteria).
Here is a pseudo example:
```
To: envoy-security@googlegroups.com
Subject: Seven-Corp Membership to cncf-envoy-distributors-announce
Below are each criterion and why I think we, Seven-Corp, qualify.
> 1. Be an actively maintained distribution of Envoy components OR offer Envoy as a publicly
available service in which the product clearly states that it is built on top of Envoy OR
be a well known end user of sufficient size, scale, and impact to make your
inclusion worthwhile.
We distribute the "Seven" distribution of Envoy [link]. We have been doing
this since 1999 before proxies were even cool.
OR
We use Envoy for our #1 rated cat video service and have 40 billion MAU, proxying 40 trillion^2 RPS
through Envoy at the edge. Secure cat videos are our top priority. We also contribute a lot to the Envoy
community by implementing features, not making Matt ask for documentation or tests, and writing blog
posts about efficient Envoy cat video serving.
> 2. Have a user or customer base not limited to your own organization. Please specify an
> approximate size of your user or customer base, including the number of
> production deployments.
Our user base spans of the extensive "Seven" community. We have a slack and
GitHub repos and mailing lists where the community hangs out. We have ~2000
customers, of which approximately 400 are using Seven in production. [links]
> 3. Have a publicly verifiable track record up to present day of fixing security
issues.
We announce on our blog all upstream patches we apply to "Seven." [link to blog
posts]
> 4. Not be a downstream or rebuild of another distribution. If you offer Envoy as a publicly
> available infrastructure or platform service, this condition does not need to apply.
This does not apply, "Seven" is a unique snowflake distribution.
> 5. Be a participant and active contributor in the community.
Our members, Acidburn, Cereal, and ZeroCool are outstanding members and are well
known throughout the Envoy community. Especially for their contributions
in hacking the Gibson.
> 6. Accept the Embargo Policy that is outlined above. You must
have a way to privately stage and validate your updates that does not violate
the embargo.
We accept.
> 7. Be willing to contribute back as outlined above.
We are definitely willing to help!
> 8. Be able to perform a security release of your product within a three week window from candidate fix
patch availability.
We affirm we can spin out new security releases within a 2 week window.
> 9. Have someone already on the list vouch for the person requesting membership
> on behalf of your distribution.
CrashOverride will vouch for the "Seven" distribution joining the distribution list.
> 10. Nominate an e-mail alias or list for your organization to receive updates. This should not be
an individual user address, but instead a list that can be maintained by your organization as
individuals come and go. A good example is envoy-security@seven.com, a bad example is
acidburn@seven.com. You must accept the invite sent to this address or you will not receive any
e-mail updates. This e-mail address will be shared with the Envoy community.
envoy-security@seven.com
```
### Review of membership criteria
In all cases, members of the distribution list will be reviewed on a yearly basis by the maintainers
and security team to ensure they still qualify for inclusion on the list.
### Members
| E-mail | Organization | End User | Last Review |
|-------------------------------------------------------|:-------------:|:--------:|:-----------:|
| envoy-security-team@aspenmesh.io | Aspen Mesh | No | 12/19 |
| aws-app-mesh-security@amazon.com | AWS | No | 12/19 |
| security@cilium.io | Cilium | No | 12/19 |
| vulnerabilityreports@cloudfoundry.org | Cloud Foundry | No | 12/19 |
| secalert@datawire.io | Datawire | No | 12/19 |
| google-internal-envoy-security@google.com | Google | No | 12/19 |
| argoprod@us.ibm.com | IBM | No | 12/19 |
| istio-security-vulnerability-reports@googlegroups.com | Istio | No | 12/19 |
| secalert@redhat.com | Red Hat | No | 12/19 |
| envoy-security@solo.io | solo.io | No | 12/19 |
| envoy-security@tetrate.io | Tetrate | No | 12/19 |
| security@vmware.com | VMware | No | 12/19 |
| envoy-security@pinterest.com | Pinterest | Yes | 12/19 |
| envoy-security@dropbox.com | Dropbox | Yes | 01/20 |
| envoy-security-predisclosure@stripe.com | Stripe | Yes | 01/20 |
================================================
FILE: STYLE.md
================================================
# C++ coding style
* The Envoy source code is formatted using clang-format. Thus all white spaces, etc.
issues are taken care of automatically. The CircleCI tests will automatically check
the code format and fail. There are make targets that can both check the format
(check_format) as well as fix the code format for you (fix_format). Errors in
.clang-tidy are enforced while other warnings are suggestions. Note that code and
comment blocks designated `clang-format off` must be closed with `clang-format on`.
To run these checks locally, see [Support Tools](support/README.md).
* Beyond code formatting, for the most part Envoy uses the
[Google C++ style guidelines](https://google.github.io/styleguide/cppguide.html).
The following section covers the major areas where we deviate from the Google
guidelines.
# Repository file layout
* Please see [REPO_LAYOUT.md](REPO_LAYOUT.md).
# Documentation
* If you are modifying the data plane structually, please keep the [Life of a
Request](docs/root/intro/life_of_a_request.md) documentation up-to-date.
# Deviations from Google C++ style guidelines
* Exceptions are allowed and encouraged where appropriate. When using exceptions, do not add
additional error handing that cannot possibly happen in the case an exception is thrown.
* Do use exceptions for:
- Configuration ingestion error handling. Invalid configurations (dynamic and
static) should throw meaningful `EnvoyException`s, the configuration
ingestion code will catch these.
- Constructor failure.
- Error handling in deep call stacks, where exceptions provide material
improvements to code complexity and readability.
* Apply caution when using exceptions on the data path for general purpose error
handling. Exceptions are not caught on the data path and they should not be
used for simple error handling, e.g. with shallow call stacks, where explicit
error handling provides a more readable and easier to reason about
implementation.
* References are always preferred over pointers when the reference cannot be null. This
includes both const and non-const references.
* Function names should all use camel case starting with a lower case letter (e.g., `doFoo()`).
* Struct/Class member variables have a `_` postfix (e.g., `int foo_;`).
* Enum values using PascalCase (e.g., `RoundRobin`).
* 100 columns is the line limit.
* Use your GitHub name in TODO comments, e.g. `TODO(foobar): blah`.
* Smart pointers are type aliased:
* `using FooPtr = std::unique_ptr<Foo>;`
* `using BarSharedPtr = std::shared_ptr<Bar>;`
* `using BlahConstSharedPtr = std::shared_ptr<const Blah>;`
* Regular pointers (e.g. `int* foo`) should not be type aliased.
* `absl::optional<std::reference_wrapper<T>> is type aliased:
* `using FooOptRef = absl::optional<std::reference_wrapper<T>>;`
* `using FooOptConstRef = absl::optional<std::reference_wrapper<const T>>;`
* If move semantics are intended, prefer specifying function arguments with `&&`.
E.g., `void onHeaders(Http::HeaderMapPtr&& headers, ...)`. The rationale for this is that it
forces the caller to specify `std::move(...)` or pass a temporary and makes the intention at
the callsite clear. Otherwise, it's difficult to tell if a const reference is actually being
passed to the called function. This is true even for `std::unique_ptr`.
* Prefer `unique_ptr` over `shared_ptr` wherever possible. `unique_ptr` makes ownership in
production code easier to reason about. Note that this creates some test oddities where
production code requires a `unique_ptr` but the test must still have access to the memory
the production code is using (mock or otherwise). In these cases it is acceptable to allocate
raw memory in a test and return it to the production code with the expectation that the
production code will hold it in a `unique_ptr` and free it. Envoy uses the factory pattern
quite a bit for these cases. (Search the code for "factory").
* The Google C++ style guide points out that [non-PoD static and global variables are forbidden](https://google.github.io/styleguide/cppguide.html#Static_and_Global_Variables).
This _includes_ types such as `std::string`. We encourage the use of the
advice in the [C++ FAQ on the static initialization
fiasco](https://isocpp.org/wiki/faq/ctors#static-init-order-on-first-use) for
how to best handle this.
* The Google C++ style guide points out that [constant vars should be named `kConstantVar`](https://google.github.io/styleguide/cppguide.html#Constant_Names).
In the Envoy codebase we use `ConstantVar` or `CONSTANT_VAR`. If you pick `CONSTANT_VAR`,
please be certain the name is globally significant to avoid potential conflicts with #defines,
which are not namespace-scoped, and may appear in externally controlled header files.
* API-level comments should follow normal Doxygen conventions. Use `@param` to describe
parameters and `@return <return-type>` for return values. Internal comments for
methods and member variables may be regular C++ `//` comments or Doxygen at
developer discretion. Where possible, methods should have meaningful
documentation on expected input and state preconditions.
* Header guards should use `#pragma once`.
* All code should be inside a top-level Envoy namespace. There are some
exceptions such as `main()` functions. When code cannot be placed inside the
Envoy namespace there should be a comment of the form `// NOLINT(namespace-envoy)` at
the top of the file.
* If a method that must be defined outside the `test` directory is intended to be called only
from test code then it should have a name that ends in `ForTest()` such as `aMethodForTest()`.
In most cases tests can and should be structured so this is not necessary.
* Tests default to StrictMock so will fail if hitting unexpected warnings. Feel free to use
NiceMock for mocks whose behavior is not the focus of a test.
* [Thread
annotations](https://github.com/abseil/abseil-cpp/blob/master/absl/base/thread_annotations.h),
such as `GUARDED_BY`, should be used for shared state guarded by
locks/mutexes.
* Functions intended to be local to a cc file should be declared in an anonymous namespace,
rather than using the 'static' keyword. Note that the
[Google C++ style guide](https://google.github.io/styleguide/cppguide.html#Unnamed_Namespaces_and_Static_Variables)
allows either, but in Envoy we prefer anonymous namespaces.
* Braces are required for all control statements include single line if, while, etc. statements.
* Don't use [mangled Protobuf enum
names](https://developers.google.com/protocol-buffers/docs/reference/cpp-generated#enum).
# Error handling
A few general notes on our error handling philosophy:
* All error code returns should be checked.
* At a very high level, our philosophy is that errors should be handled gracefully when caused by:
- Untrusted network traffic OR
- Raised by the Envoy process environment and are *likely* to happen
* Examples of likely environnmental errors include any type of network error, disk IO error, bad
data returned by an API call, bad data read from runtime files, etc. Errors in the Envoy
environment that are *unlikely* to happen after process initialization, should lead to process
death, under the assumption that the additional burden of defensive coding and testing is not an
effective use of time for an error that should not happen given proper system setup. Examples of
these types of errors include not being able to open the shared memory region, system calls that
should not fail assuming correct parameters (which should be validated via tests), etc. Examples
of system calls that should not fail when passed valid parameters include the kernel returning a
valid `sockaddr` after a successful call to `accept()`, `pthread_create()`, `pthread_join()`, etc.
* OOM events (both memory and FDs) are considered fatal crashing errors. An OOM error should never
silently be ignored and should crash the process either via the C++ allocation error exception, an
explicit `RELEASE_ASSERT` following a third party library call, or an obvious crash on a subsequent
line via null pointer dereference. This rule is again based on the philosophy that the engineering
costs of properly handling these cases are not worth it. Time is better spent designing proper system
controls that shed load if resource usage becomes too high, etc.
* The "less is more" error handling philosophy described in the previous two points is primarily
based on the fact that restarts are designed to be fast, reliable and cheap.
* Although we strongly recommend that any type of startup error leads to a fatal error, since this
is almost always a result of faulty configuration which should be caught during a canary process,
there may be cases in which we want some classes of startup errors to be non-fatal. For example,
if a misconfigured option is not necessary for server operation. Although this is discouraged, we
will discuss these on a case by case basis during code review (an example of this
is the `--admin-address-path` option). **If degraded mode error handling is implemented, we require
that there is complete test coverage for the degraded case.** Additionally, the user should be
aware of the degraded state minimally via an error log of level warn or greater and via the
increment of a stat.
* If you do need to log a non-fatal warning or error, you can unit-test it with EXPECT_LOG_CONTAINS
or EXPECT_NO_LOGS from [logging.h](test/test_common/logging.h). It's generally bad practice to
test by depending on log messages unless the actual behavior being validated is logging.
It's preferable to export statistics to enable consumption by external monitoring for any
behavior that should be externally consumed or to introduce appropriate internal interfaces
such as mocks for internal behavior.
* The error handling philosophy described herein is based on the assumption that Envoy is deployed
using industry best practices (primarily canary). Major and obvious errors should always be
caught in canary. If a low rate error leads to periodic crash cycling when deployed to
production, the error rate should allow for rollback without large customer impact.
* Tip: If the thought of adding the extra test coverage, logging, and stats to handle an error and
continue seems ridiculous because *"this should never happen"*, it's a very good indication that
the appropriate behavior is to terminate the process and not handle the error. When in doubt,
please discuss.
* Per above it's acceptable to turn failures into crash semantics
via `RELEASE_ASSERT(condition)` or `PANIC(message)` if there is no other sensible behavior, e.g.
in OOM (memory/FD) scenarios. Only `RELEASE_ASSERT(condition)` should be used to validate
conditions that might be imposed by the external environment. `ASSERT(condition)` should be used
to document (and check in debug-only builds) program invariants. Use `ASSERT` liberally, but do
not use it for things that will crash in an obvious way in a subsequent line. E.g., do not do
`ASSERT(foo != nullptr); foo->doSomething();`. Note that there is a gray line between external
environment failures and program invariant violations. For example, memory corruption due to a
security issue (a bug, deliberate buffer overflow etc.) might manifest as a violation of program
invariants or as a detectable condition in the external environment (e.g. some library returning a
highly unexpected error code or buffer contents). Unfortunately no rule can cleanly cover when to
use `RELEASE_ASSERT` vs. `ASSERT`. In general we view `ASSERT` as the common case and
`RELEASE_ASSERT` as the uncommon case, but experience and judgment may dictate a particular approach
depending on the situation.
# Hermetic and deterministic tests
Tests should be hermetic, i.e. have all dependencies explicitly captured and not depend on the local
environment. In general, there should be no non-local network access. In addition:
* Port numbers should not be hardcoded. Tests should bind to port zero and then discover the bound
port when needed. This avoids flakes due to conflicting ports and allows tests to be executed
concurrently by Bazel. See
[`test/integration/integration_test.h`](test/integration/integration_test.h) and
[`test/common/network/listener_impl_test.cc`](test/common/network/listener_impl_test.cc)
for examples of tests that do this.
* Paths should be constructed using:
* The methods in [`TestEnvironment`](test/test_common/environment.h) for C++ tests.
* With `${TEST_TMPDIR}` (for writable temporary space) or `${TEST_SRCDIR}` for read-only access to
test inputs in shell tests.
* With `{{ test_tmpdir }}`, `{{ test_rundir }}` and `{{ test_udsdir }}` respectively for JSON templates.
`{{ test_udsdir }}` is provided for pathname based Unix Domain Sockets, which must fit within a
108 character limit on Linux, a property that might not hold for `{{ test_tmpdir }}`.
Tests should be deterministic. They should not rely on randomness or details
such as the current time. Instead, mocks such as
[`MockRandomGenerator`](test/mocks/runtime/mocks.h) and
[`Mock*TimeSource`](test/mocks/common.h) should be used.
# Google style guides for other languages
* [Python](https://google.github.io/styleguide/pyguide.html)
* [Bash](https://google.github.io/styleguide/shell.xml)
* [Bazel](https://bazel.build/versions/master/docs/skylark/build-style.html)
================================================
FILE: VERSION
================================================
1.16.0
================================================
FILE: WORKSPACE
================================================
workspace(name = "envoy")
load("//bazel:api_binding.bzl", "envoy_api_binding")
envoy_api_binding()
load("//bazel:api_repositories.bzl", "envoy_api_dependencies")
envoy_api_dependencies()
load("//bazel:repositories.bzl", "envoy_dependencies")
envoy_dependencies()
load("//bazel:repositories_extra.bzl", "envoy_dependencies_extra")
envoy_dependencies_extra()
load("//bazel:dependency_imports.bzl", "envoy_dependency_imports")
envoy_dependency_imports()
================================================
FILE: api/API_OVERVIEW.md
================================================
# Envoy v2 APIs for developers
## Goals
This repository contains both the implemented and draft v2 JSON REST and gRPC
[Envoy](https://github.com/envoyproxy/envoy/) APIs.
Version 2 of the Envoy API evolves existing APIs and introduces new APIs to:
* Allow for more advanced load balancing through load and resource utilization reporting to management servers.
* Improve N^2 health check scalability issues by optionally offloading health checking to other Envoy instances.
* Support Envoy deployment in edge, sidecar and middle proxy deployment models via changes to the listener model,
CDS API, and EDS (formerly called SDS in v1) API.
* Allow streaming updates from the management server on change, instead of polling APIs from Envoy. gRPC APIs will be supported
alongside JSON REST APIs to provide for this.
* Ensure all Envoy runtime configuration is dynamically discoverable via API
calls, including listener configuration, certificates and runtime settings, which are today sourced from the filesystem. There
will still remain a static bootstrap configuration file that will specify items
unlikely to change during runtime, including the Envoy node identity, xDS
management server addresses, administration interface and tracing
configuration.
* Revisit and where appropriate cleanup any v1 technical debt.
## Status
See
[here](https://www.envoyproxy.io/docs/envoy/latest/configuration/overview/v2_overview.html#status)
for the current status of the v2 APIs.
See [here](CONTRIBUTING.md#api-changes) for the v2 API change process.
## Principles
* [Proto3](https://developers.google.com/protocol-buffers/docs/proto3) will be
used to specify the canonical API. This will provide directly the gRPC API and
via gRPC-JSON transcoding the JSON REST API. A textual YAML input will be
supported for filesystem configuration files (e.g. the bootstrap file), in
addition to JSON, as a syntactic convenience. YAML file contents will be
internally converted to JSON and then follow the standard JSON-proto3
conversion during Envoy config ingestion.
* xDS APIs should support eventual consistency. For example, if RDS references a
cluster that has not yet been supplied by CDS, it should be silently ignored
and traffic not forwarded until the CDS update occurs. Stronger consistency
guarantees are possible if the management server is able to sequence the xDS
APIs carefully (for example by using the ADS API below). By following the
`[CDS, EDS, LDS, RDS]` sequence for all pertinent resources, it will be
possible to avoid traffic outages during configuration update.
* The API is primarily intended for machine generation and consumption. It is
expected that the management server is responsible for mapping higher level
configuration concepts to API responses. Similarly, static configuration
fragments may be generated by templating tools, etc. The APIs and tools
used to generate xDS configuration are beyond the scope of the definitions in
this repository.
* REST-JSON API equivalents will be provided for the basic singleton xDS
subscription services CDS/EDS/LDS/RDS/SDS. Advanced APIs such as HDS, ADS and
EDS multi-dimensional LB will be gRPC only. This avoids having to map
complicated bidirectional stream semantics onto REST.
* Listeners will be immutable. Any updates to a listener via LDS will require
the draining of existing connections for the specific bound IP/port. As a
result, new requests will only be guaranteed to observe the new configuration
after existing connections have drained or the drain timeout.
* Versioning will be expressed via [proto3 package
namespaces](https://developers.google.com/protocol-buffers/docs/proto3#packages),
i.e. `package envoy.api.v2;`.
* Custom components (e.g. filters, resolvers, loggers) will use a reverse DNS naming scheme,
e.g. `com.google.widget`, `com.lyft.widget`.
## APIs
Unless otherwise stated, the APIs with the same names as v1 APIs have a similar role.
* [Cluster Discovery Service (CDS)](envoy/api/v2/cds.proto).
* [Endpoint Discovery Service (EDS)](envoy/api/v2/eds.proto). This has the same role as SDS in the [v1 API](https://www.envoyproxy.io/docs/envoy/latest/api-v1/cluster_manager/sds),
the new name better describes what the API does in practice. Advanced global load balancing capable of utilizing N-dimensional upstream metrics is now supported.
* [Health Discovery Service (HDS)](envoy/service/discovery/v2/hds.proto). This new API supports efficient endpoint health discovery by the management server via the Envoy instances it manages. Individual Envoy instances
will typically receive HDS instructions to health check a subset of all
endpoints. The health check subset may not be a subset of the Envoy instance's
EDS endpoints.
* [Listener Discovery Service (LDS)](envoy/api/v2/lds.proto). This new API supports dynamic discovery of the listener configuration (which ports to bind to, TLS details, filter chains, etc.).
* [Metric Service (MS)](envoy/service/metrics/v2/metrics_service.proto). This new API allows Envoy to push (stream) metrics forever for servers to consume.
* [Rate Limit Service (RLS)](envoy/service/ratelimit/v2/rls.proto)
* [Route Discovery Service (RDS)](envoy/api/v2/rds.proto).
* [Secret Discovery Service (SDS)](envoy/service/discovery/v2/sds.proto).
In addition to the above APIs, an aggregation API will be provided to allow for
fine grained control over the sequencing of API updates across discovery
services:
* [Aggregated Discovery Service (ADS)](envoy/api/v2/discovery.proto). See
the [ADS overview](https://www.envoyproxy.io/docs/envoy/latest/configuration/overview/v2_overview#aggregated-discovery-service).
A protocol description for the xDS APIs is provided [here](https://www.envoyproxy.io/docs/envoy/latest/api-docs/xds_protocol).
## Terminology
Some relevant [existing terminology](https://www.envoyproxy.io/docs/envoy/latest/intro/arch_overview/terminology.html) is
repeated below and some new v2 terms introduced.
* Cluster: A cluster is a group of logically similar endpoints that Envoy
connects to. In v2, RDS routes points to clusters, CDS provides cluster configuration and
Envoy discovers the cluster members via EDS.
* Downstream: A downstream host connects to Envoy, sends requests, and receives responses.
* Endpoint: An endpoint is an upstream host that is a member of one or more clusters. Endpoints are discovered via EDS.
* Listener: A listener is a named network location (e.g., port, unix domain socket, etc.) that can be connected to by downstream clients. Envoy exposes one or more listeners that downstream hosts connect to.
* Locality: A location where an Envoy instance or an endpoint runs. This includes
region, zone and sub-zone identification.
* Management server: A logical server implementing the v2 Envoy APIs. This is not necessarily a single physical machine since it may be replicated/sharded and API serving for different xDS APIs may be implemented on different physical machines.
* Region: Geographic region where a zone is located.
* Sub-zone: Location within a zone where an Envoy instance or an endpoint runs.
This allows for multiple load balancing targets within a zone.
* Upstream: An upstream host receives connections and requests from Envoy and returns responses.
* xDS: CDS/EDS/HDS/LDS/RLS/RDS/SDS APIs.
* Zone: Availability Zone (AZ) in AWS, Zone in GCP.
================================================
FILE: api/API_VERSIONING.md
================================================
# API versioning guidelines
The Envoy project (and in the future [UDPA](https://github.com/cncf/udpa)) takes API stability and
versioning seriously. Providing stable APIs is a necessary step in ensuring API adoption and success
of the ecosystem. Below we articulate the API versioning guidelines that aim to deliver this
stability.
# API semantic versioning
The Envoy APIs consist of a family of packages, e.g. `envoy.admin.v2alpha`,
`envoy.service.trace.v2`. Each package is independently versioned with a protobuf semantic
versioning scheme based on https://cloud.google.com/apis/design/versioning.
The major version for a package is captured in its name (and directory structure). E.g. version 2
of the tracing API package is named `envoy.service.trace.v2` and its constituent protos are located
in `api/envoy/service/trace/v2`. Every protobuf must live directly in a versioned package namespace,
we do not allow subpackages such as `envoy.service.trace.v2.somethingelse`.
Minor and patch versions will be implemented in the future, this effort is tracked in
https://github.com/envoyproxy/envoy/issues/8416.
In everyday discussion and GitHub labels, we refer to the `v2`, `v3`, `vN`, `...` APIs. This has a
specific technical meaning. Any given message in the Envoy API, e.g. the `Bootstrap` at
`envoy.config.bootstrap.v3.Boostrap`, will transitively reference a number of packages in the Envoy
API. These may be at `vN`, `v(N-1)`, etc. The Envoy API is technically a DAG of versioned package
namespaces. When we talk about the `vN xDS API`, we really refer to the `N` of the root
configuration resources (e.g. bootstrap, xDS resources such as `Cluster`). The
v3 API bootstrap configuration is `envoy.config.bootstrap.v3.Boostrap`, even
though it might might transitively reference `envoy.service.trace.v2`.
# Backwards compatibility
In general, within a package's major API version, we do not allow any breaking changes. The guiding
principle is that neither the wire format nor protobuf compiler generated language bindings should
experience a backward compatible break on a change. Specifically:
* Fields should not be renumbered or have their types changed. This is standard proto development
procedure.
* Renaming of fields or package namespaces for a proto must not occur. This is inherently dangerous,
since:
* Field renames break wire compatibility. This is stricter than standard proto development
procedure in the sense that it does not break binary wire format. However, it **does** break
loading of YAML/JSON into protos as well as text protos. Since we consider YAML/JSON to be first
class inputs,
Showing preview only (474K chars total). Download the full file or copy to clipboard to get everything.
gitextract_0bqlinc2/ ├── .azure-pipelines/ │ ├── bazel.yml │ ├── cleanup.sh │ └── pipelines.yml ├── .bazelci/ │ └── presubmit.yml ├── .bazelignore ├── .bazelrc ├── .bazelversion ├── .circleci/ │ └── config.yml ├── .clang-format ├── .clang-tidy ├── .devcontainer/ │ ├── .gitignore │ ├── Dockerfile │ ├── README.md │ ├── devcontainer.json │ └── setup.sh ├── .gitattributes ├── .github/ │ ├── ISSUE_TEMPLATE/ │ │ ├── config.yml │ │ ├── feature_request.md │ │ ├── non--crash-security--bug.md │ │ └── other.md │ ├── stale.yml │ └── workflows/ │ ├── codeql-daily.yml │ ├── codeql-push.yml │ └── get_build_targets.sh ├── .gitignore ├── .zuul/ │ └── playbooks/ │ └── envoy-build/ │ └── run.yaml ├── .zuul.yaml ├── BUILD ├── CODEOWNERS ├── CODE_OF_CONDUCT.md ├── CONTRIBUTING.md ├── DCO ├── DEPENDENCY_POLICY.md ├── DEPRECATED.md ├── DEVELOPER.md ├── EXTENSION_POLICY.md ├── GOVERNANCE.md ├── LICENSE ├── NOTICE ├── OWNERS.md ├── PULL_REQUESTS.md ├── PULL_REQUEST_TEMPLATE.md ├── README.md ├── RELEASES.md ├── REPO_LAYOUT.md ├── SECURITY.md ├── STYLE.md ├── VERSION ├── WORKSPACE ├── api/ │ ├── API_OVERVIEW.md │ ├── API_VERSIONING.md │ ├── BUILD │ ├── CONTRIBUTING.md │ ├── README.md │ ├── STYLE.md │ ├── bazel/ │ │ ├── BUILD │ │ ├── api_build_system.bzl │ │ ├── envoy_http_archive.bzl │ │ ├── external_proto_deps.bzl │ │ ├── repositories.bzl │ │ └── repository_locations.bzl │ ├── envoy/ │ │ ├── admin/ │ │ │ ├── v2alpha/ │ │ │ │ ├── BUILD │ │ │ │ ├── certs.proto │ │ │ │ ├── clusters.proto │ │ │ │ ├── config_dump.proto │ │ │ │ ├── listeners.proto │ │ │ │ ├── memory.proto │ │ │ │ ├── metrics.proto │ │ │ │ ├── mutex_stats.proto │ │ │ │ ├── server_info.proto │ │ │ │ └── tap.proto │ │ │ ├── v3/ │ │ │ │ ├── BUILD │ │ │ │ ├── certs.proto │ │ │ │ ├── clusters.proto │ │ │ │ ├── config_dump.proto │ │ │ │ ├── init_dump.proto │ │ │ │ ├── listeners.proto │ │ │ │ ├── memory.proto │ │ │ │ ├── metrics.proto │ │ │ │ ├── mutex_stats.proto │ │ │ │ ├── server_info.proto │ │ │ │ └── tap.proto │ │ │ └── v4alpha/ │ │ │ ├── BUILD │ │ │ ├── certs.proto │ │ │ ├── clusters.proto │ │ │ ├── config_dump.proto │ │ │ ├── init_dump.proto │ │ │ ├── listeners.proto │ │ │ ├── memory.proto │ │ │ ├── metrics.proto │ │ │ ├── mutex_stats.proto │ │ │ ├── server_info.proto │ │ │ └── tap.proto │ │ ├── annotations/ │ │ │ ├── BUILD │ │ │ ├── deprecation.proto │ │ │ └── resource.proto │ │ ├── api/ │ │ │ └── v2/ │ │ │ ├── BUILD │ │ │ ├── README.md │ │ │ ├── auth/ │ │ │ │ ├── BUILD │ │ │ │ ├── cert.proto │ │ │ │ ├── common.proto │ │ │ │ ├── secret.proto │ │ │ │ └── tls.proto │ │ │ ├── cds.proto │ │ │ ├── cluster/ │ │ │ │ ├── BUILD │ │ │ │ ├── circuit_breaker.proto │ │ │ │ ├── filter.proto │ │ │ │ └── outlier_detection.proto │ │ │ ├── cluster.proto │ │ │ ├── core/ │ │ │ │ ├── BUILD │ │ │ │ ├── address.proto │ │ │ │ ├── backoff.proto │ │ │ │ ├── base.proto │ │ │ │ ├── config_source.proto │ │ │ │ ├── event_service_config.proto │ │ │ │ ├── grpc_method_list.proto │ │ │ │ ├── grpc_service.proto │ │ │ │ ├── health_check.proto │ │ │ │ ├── http_uri.proto │ │ │ │ ├── protocol.proto │ │ │ │ └── socket_option.proto │ │ │ ├── discovery.proto │ │ │ ├── eds.proto │ │ │ ├── endpoint/ │ │ │ │ ├── BUILD │ │ │ │ ├── endpoint.proto │ │ │ │ ├── endpoint_components.proto │ │ │ │ └── load_report.proto │ │ │ ├── endpoint.proto │ │ │ ├── lds.proto │ │ │ ├── listener/ │ │ │ │ ├── BUILD │ │ │ │ ├── listener.proto │ │ │ │ ├── listener_components.proto │ │ │ │ ├── quic_config.proto │ │ │ │ └── udp_listener_config.proto │ │ │ ├── listener.proto │ │ │ ├── ratelimit/ │ │ │ │ ├── BUILD │ │ │ │ └── ratelimit.proto │ │ │ ├── rds.proto │ │ │ ├── route/ │ │ │ │ ├── BUILD │ │ │ │ ├── route.proto │ │ │ │ └── route_components.proto │ │ │ ├── route.proto │ │ │ ├── scoped_route.proto │ │ │ └── srds.proto │ │ ├── config/ │ │ │ ├── README.md │ │ │ ├── accesslog/ │ │ │ │ ├── v2/ │ │ │ │ │ ├── BUILD │ │ │ │ │ ├── als.proto │ │ │ │ │ └── file.proto │ │ │ │ ├── v3/ │ │ │ │ │ ├── BUILD │ │ │ │ │ └── accesslog.proto │ │ │ │ └── v4alpha/ │ │ │ │ ├── BUILD │ │ │ │ └── accesslog.proto │ │ │ ├── bootstrap/ │ │ │ │ ├── v2/ │ │ │ │ │ ├── BUILD │ │ │ │ │ └── bootstrap.proto │ │ │ │ ├── v3/ │ │ │ │ │ ├── BUILD │ │ │ │ │ └── bootstrap.proto │ │ │ │ └── v4alpha/ │ │ │ │ ├── BUILD │ │ │ │ └── bootstrap.proto │ │ │ ├── cluster/ │ │ │ │ ├── aggregate/ │ │ │ │ │ └── v2alpha/ │ │ │ │ │ ├── BUILD │ │ │ │ │ └── cluster.proto │ │ │ │ ├── dynamic_forward_proxy/ │ │ │ │ │ └── v2alpha/ │ │ │ │ │ ├── BUILD │ │ │ │ │ └── cluster.proto │ │ │ │ ├── redis/ │ │ │ │ │ ├── BUILD │ │ │ │ │ └── redis_cluster.proto │ │ │ │ ├── v3/ │ │ │ │ │ ├── BUILD │ │ │ │ │ ├── circuit_breaker.proto │ │ │ │ │ ├── cluster.proto │ │ │ │ │ ├── filter.proto │ │ │ │ │ └── outlier_detection.proto │ │ │ │ └── v4alpha/ │ │ │ │ ├── BUILD │ │ │ │ ├── circuit_breaker.proto │ │ │ │ ├── cluster.proto │ │ │ │ ├── filter.proto │ │ │ │ └── outlier_detection.proto │ │ │ ├── common/ │ │ │ │ ├── dynamic_forward_proxy/ │ │ │ │ │ └── v2alpha/ │ │ │ │ │ ├── BUILD │ │ │ │ │ └── dns_cache.proto │ │ │ │ ├── matcher/ │ │ │ │ │ ├── v3/ │ │ │ │ │ │ ├── BUILD │ │ │ │ │ │ └── matcher.proto │ │ │ │ │ └── v4alpha/ │ │ │ │ │ ├── BUILD │ │ │ │ │ └── matcher.proto │ │ │ │ └── tap/ │ │ │ │ └── v2alpha/ │ │ │ │ ├── BUILD │ │ │ │ └── common.proto │ │ │ ├── core/ │ │ │ │ ├── v3/ │ │ │ │ │ ├── BUILD │ │ │ │ │ ├── address.proto │ │ │ │ │ ├── backoff.proto │ │ │ │ │ ├── base.proto │ │ │ │ │ ├── config_source.proto │ │ │ │ │ ├── event_service_config.proto │ │ │ │ │ ├── extension.proto │ │ │ │ │ ├── grpc_method_list.proto │ │ │ │ │ ├── grpc_service.proto │ │ │ │ │ ├── health_check.proto │ │ │ │ │ ├── http_uri.proto │ │ │ │ │ ├── protocol.proto │ │ │ │ │ ├── proxy_protocol.proto │ │ │ │ │ ├── socket_option.proto │ │ │ │ │ └── substitution_format_string.proto │ │ │ │ └── v4alpha/ │ │ │ │ ├── BUILD │ │ │ │ ├── address.proto │ │ │ │ ├── backoff.proto │ │ │ │ ├── base.proto │ │ │ │ ├── config_source.proto │ │ │ │ ├── event_service_config.proto │ │ │ │ ├── extension.proto │ │ │ │ ├── grpc_method_list.proto │ │ │ │ ├── grpc_service.proto │ │ │ │ ├── health_check.proto │ │ │ │ ├── http_uri.proto │ │ │ │ ├── protocol.proto │ │ │ │ ├── proxy_protocol.proto │ │ │ │ ├── socket_option.proto │ │ │ │ └── substitution_format_string.proto │ │ │ ├── endpoint/ │ │ │ │ └── v3/ │ │ │ │ ├── BUILD │ │ │ │ ├── endpoint.proto │ │ │ │ ├── endpoint_components.proto │ │ │ │ └── load_report.proto │ │ │ ├── filter/ │ │ │ │ ├── README.md │ │ │ │ ├── accesslog/ │ │ │ │ │ └── v2/ │ │ │ │ │ ├── BUILD │ │ │ │ │ └── accesslog.proto │ │ │ │ ├── dubbo/ │ │ │ │ │ └── router/ │ │ │ │ │ └── v2alpha1/ │ │ │ │ │ ├── BUILD │ │ │ │ │ └── router.proto │ │ │ │ ├── fault/ │ │ │ │ │ └── v2/ │ │ │ │ │ ├── BUILD │ │ │ │ │ └── fault.proto │ │ │ │ ├── http/ │ │ │ │ │ ├── adaptive_concurrency/ │ │ │ │ │ │ └── v2alpha/ │ │ │ │ │ │ ├── BUILD │ │ │ │ │ │ └── adaptive_concurrency.proto │ │ │ │ │ ├── aws_lambda/ │ │ │ │ │ │ └── v2alpha/ │ │ │ │ │ │ ├── BUILD │ │ │ │ │ │ └── aws_lambda.proto │ │ │ │ │ ├── aws_request_signing/ │ │ │ │ │ │ └── v2alpha/ │ │ │ │ │ │ ├── BUILD │ │ │ │ │ │ └── aws_request_signing.proto │ │ │ │ │ ├── buffer/ │ │ │ │ │ │ └── v2/ │ │ │ │ │ │ ├── BUILD │ │ │ │ │ │ └── buffer.proto │ │ │ │ │ ├── cache/ │ │ │ │ │ │ └── v2alpha/ │ │ │ │ │ │ ├── BUILD │ │ │ │ │ │ └── cache.proto │ │ │ │ │ ├── compressor/ │ │ │ │ │ │ └── v2/ │ │ │ │ │ │ ├── BUILD │ │ │ │ │ │ └── compressor.proto │ │ │ │ │ ├── cors/ │ │ │ │ │ │ └── v2/ │ │ │ │ │ │ ├── BUILD │ │ │ │ │ │ └── cors.proto │ │ │ │ │ ├── csrf/ │ │ │ │ │ │ └── v2/ │ │ │ │ │ │ ├── BUILD │ │ │ │ │ │ └── csrf.proto │ │ │ │ │ ├── dynamic_forward_proxy/ │ │ │ │ │ │ └── v2alpha/ │ │ │ │ │ │ ├── BUILD │ │ │ │ │ │ └── dynamic_forward_proxy.proto │ │ │ │ │ ├── dynamo/ │ │ │ │ │ │ └── v2/ │ │ │ │ │ │ ├── BUILD │ │ │ │ │ │ └── dynamo.proto │ │ │ │ │ ├── ext_authz/ │ │ │ │ │ │ └── v2/ │ │ │ │ │ │ ├── BUILD │ │ │ │ │ │ └── ext_authz.proto │ │ │ │ │ ├── fault/ │ │ │ │ │ │ └── v2/ │ │ │ │ │ │ ├── BUILD │ │ │ │ │ │ └── fault.proto │ │ │ │ │ ├── grpc_http1_bridge/ │ │ │ │ │ │ └── v2/ │ │ │ │ │ │ ├── BUILD │ │ │ │ │ │ └── config.proto │ │ │ │ │ ├── grpc_http1_reverse_bridge/ │ │ │ │ │ │ └── v2alpha1/ │ │ │ │ │ │ ├── BUILD │ │ │ │ │ │ └── config.proto │ │ │ │ │ ├── grpc_stats/ │ │ │ │ │ │ └── v2alpha/ │ │ │ │ │ │ ├── BUILD │ │ │ │ │ │ └── config.proto │ │ │ │ │ ├── grpc_web/ │ │ │ │ │ │ └── v2/ │ │ │ │ │ │ ├── BUILD │ │ │ │ │ │ └── grpc_web.proto │ │ │ │ │ ├── gzip/ │ │ │ │ │ │ └── v2/ │ │ │ │ │ │ ├── BUILD │ │ │ │ │ │ └── gzip.proto │ │ │ │ │ ├── header_to_metadata/ │ │ │ │ │ │ └── v2/ │ │ │ │ │ │ ├── BUILD │ │ │ │ │ │ └── header_to_metadata.proto │ │ │ │ │ ├── health_check/ │ │ │ │ │ │ └── v2/ │ │ │ │ │ │ ├── BUILD │ │ │ │ │ │ └── health_check.proto │ │ │ │ │ ├── ip_tagging/ │ │ │ │ │ │ └── v2/ │ │ │ │ │ │ ├── BUILD │ │ │ │ │ │ └── ip_tagging.proto │ │ │ │ │ ├── jwt_authn/ │ │ │ │ │ │ └── v2alpha/ │ │ │ │ │ │ ├── BUILD │ │ │ │ │ │ ├── README.md │ │ │ │ │ │ └── config.proto │ │ │ │ │ ├── lua/ │ │ │ │ │ │ └── v2/ │ │ │ │ │ │ ├── BUILD │ │ │ │ │ │ └── lua.proto │ │ │ │ │ ├── on_demand/ │ │ │ │ │ │ └── v2/ │ │ │ │ │ │ ├── BUILD │ │ │ │ │ │ └── on_demand.proto │ │ │ │ │ ├── original_src/ │ │ │ │ │ │ └── v2alpha1/ │ │ │ │ │ │ ├── BUILD │ │ │ │ │ │ └── original_src.proto │ │ │ │ │ ├── rate_limit/ │ │ │ │ │ │ └── v2/ │ │ │ │ │ │ ├── BUILD │ │ │ │ │ │ └── rate_limit.proto │ │ │ │ │ ├── rbac/ │ │ │ │ │ │ └── v2/ │ │ │ │ │ │ ├── BUILD │ │ │ │ │ │ └── rbac.proto │ │ │ │ │ ├── router/ │ │ │ │ │ │ └── v2/ │ │ │ │ │ │ ├── BUILD │ │ │ │ │ │ └── router.proto │ │ │ │ │ ├── squash/ │ │ │ │ │ │ └── v2/ │ │ │ │ │ │ ├── BUILD │ │ │ │ │ │ └── squash.proto │ │ │ │ │ ├── tap/ │ │ │ │ │ │ └── v2alpha/ │ │ │ │ │ │ ├── BUILD │ │ │ │ │ │ └── tap.proto │ │ │ │ │ └── transcoder/ │ │ │ │ │ └── v2/ │ │ │ │ │ ├── BUILD │ │ │ │ │ └── transcoder.proto │ │ │ │ ├── listener/ │ │ │ │ │ ├── http_inspector/ │ │ │ │ │ │ └── v2/ │ │ │ │ │ │ ├── BUILD │ │ │ │ │ │ └── http_inspector.proto │ │ │ │ │ ├── original_dst/ │ │ │ │ │ │ └── v2/ │ │ │ │ │ │ ├── BUILD │ │ │ │ │ │ └── original_dst.proto │ │ │ │ │ ├── original_src/ │ │ │ │ │ │ └── v2alpha1/ │ │ │ │ │ │ ├── BUILD │ │ │ │ │ │ └── original_src.proto │ │ │ │ │ ├── proxy_protocol/ │ │ │ │ │ │ └── v2/ │ │ │ │ │ │ ├── BUILD │ │ │ │ │ │ └── proxy_protocol.proto │ │ │ │ │ └── tls_inspector/ │ │ │ │ │ └── v2/ │ │ │ │ │ ├── BUILD │ │ │ │ │ └── tls_inspector.proto │ │ │ │ ├── network/ │ │ │ │ │ ├── client_ssl_auth/ │ │ │ │ │ │ └── v2/ │ │ │ │ │ │ ├── BUILD │ │ │ │ │ │ └── client_ssl_auth.proto │ │ │ │ │ ├── direct_response/ │ │ │ │ │ │ └── v2/ │ │ │ │ │ │ ├── BUILD │ │ │ │ │ │ └── config.proto │ │ │ │ │ ├── dubbo_proxy/ │ │ │ │ │ │ └── v2alpha1/ │ │ │ │ │ │ ├── BUILD │ │ │ │ │ │ ├── README.md │ │ │ │ │ │ ├── dubbo_proxy.proto │ │ │ │ │ │ └── route.proto │ │ │ │ │ ├── echo/ │ │ │ │ │ │ └── v2/ │ │ │ │ │ │ ├── BUILD │ │ │ │ │ │ └── echo.proto │ │ │ │ │ ├── ext_authz/ │ │ │ │ │ │ └── v2/ │ │ │ │ │ │ ├── BUILD │ │ │ │ │ │ └── ext_authz.proto │ │ │ │ │ ├── http_connection_manager/ │ │ │ │ │ │ └── v2/ │ │ │ │ │ │ ├── BUILD │ │ │ │ │ │ └── http_connection_manager.proto │ │ │ │ │ ├── kafka_broker/ │ │ │ │ │ │ └── v2alpha1/ │ │ │ │ │ │ ├── BUILD │ │ │ │ │ │ └── kafka_broker.proto │ │ │ │ │ ├── local_rate_limit/ │ │ │ │ │ │ └── v2alpha/ │ │ │ │ │ │ ├── BUILD │ │ │ │ │ │ └── local_rate_limit.proto │ │ │ │ │ ├── mongo_proxy/ │ │ │ │ │ │ └── v2/ │ │ │ │ │ │ ├── BUILD │ │ │ │ │ │ └── mongo_proxy.proto │ │ │ │ │ ├── mysql_proxy/ │ │ │ │ │ │ └── v1alpha1/ │ │ │ │ │ │ ├── BUILD │ │ │ │ │ │ └── mysql_proxy.proto │ │ │ │ │ ├── rate_limit/ │ │ │ │ │ │ └── v2/ │ │ │ │ │ │ ├── BUILD │ │ │ │ │ │ └── rate_limit.proto │ │ │ │ │ ├── rbac/ │ │ │ │ │ │ └── v2/ │ │ │ │ │ │ ├── BUILD │ │ │ │ │ │ └── rbac.proto │ │ │ │ │ ├── redis_proxy/ │ │ │ │ │ │ └── v2/ │ │ │ │ │ │ ├── BUILD │ │ │ │ │ │ └── redis_proxy.proto │ │ │ │ │ ├── sni_cluster/ │ │ │ │ │ │ └── v2/ │ │ │ │ │ │ ├── BUILD │ │ │ │ │ │ └── sni_cluster.proto │ │ │ │ │ ├── tcp_proxy/ │ │ │ │ │ │ └── v2/ │ │ │ │ │ │ ├── BUILD │ │ │ │ │ │ └── tcp_proxy.proto │ │ │ │ │ ├── thrift_proxy/ │ │ │ │ │ │ └── v2alpha1/ │ │ │ │ │ │ ├── BUILD │ │ │ │ │ │ ├── README.md │ │ │ │ │ │ ├── route.proto │ │ │ │ │ │ └── thrift_proxy.proto │ │ │ │ │ └── zookeeper_proxy/ │ │ │ │ │ └── v1alpha1/ │ │ │ │ │ ├── BUILD │ │ │ │ │ └── zookeeper_proxy.proto │ │ │ │ ├── thrift/ │ │ │ │ │ ├── rate_limit/ │ │ │ │ │ │ └── v2alpha1/ │ │ │ │ │ │ ├── BUILD │ │ │ │ │ │ └── rate_limit.proto │ │ │ │ │ └── router/ │ │ │ │ │ └── v2alpha1/ │ │ │ │ │ ├── BUILD │ │ │ │ │ └── router.proto │ │ │ │ └── udp/ │ │ │ │ └── udp_proxy/ │ │ │ │ └── v2alpha/ │ │ │ │ ├── BUILD │ │ │ │ └── udp_proxy.proto │ │ │ ├── grpc_credential/ │ │ │ │ ├── v2alpha/ │ │ │ │ │ ├── BUILD │ │ │ │ │ ├── aws_iam.proto │ │ │ │ │ └── file_based_metadata.proto │ │ │ │ └── v3/ │ │ │ │ ├── BUILD │ │ │ │ ├── aws_iam.proto │ │ │ │ └── file_based_metadata.proto │ │ │ ├── health_checker/ │ │ │ │ └── redis/ │ │ │ │ └── v2/ │ │ │ │ ├── BUILD │ │ │ │ └── redis.proto │ │ │ ├── listener/ │ │ │ │ ├── v2/ │ │ │ │ │ ├── BUILD │ │ │ │ │ └── api_listener.proto │ │ │ │ ├── v3/ │ │ │ │ │ ├── BUILD │ │ │ │ │ ├── api_listener.proto │ │ │ │ │ ├── listener.proto │ │ │ │ │ ├── listener_components.proto │ │ │ │ │ ├── quic_config.proto │ │ │ │ │ ├── udp_default_writer_config.proto │ │ │ │ │ ├── udp_gso_batch_writer_config.proto │ │ │ │ │ └── udp_listener_config.proto │ │ │ │ └── v4alpha/ │ │ │ │ ├── BUILD │ │ │ │ ├── api_listener.proto │ │ │ │ ├── listener.proto │ │ │ │ ├── listener_components.proto │ │ │ │ ├── quic_config.proto │ │ │ │ ├── udp_default_writer_config.proto │ │ │ │ ├── udp_gso_batch_writer_config.proto │ │ │ │ └── udp_listener_config.proto │ │ │ ├── metrics/ │ │ │ │ ├── v2/ │ │ │ │ │ ├── BUILD │ │ │ │ │ ├── metrics_service.proto │ │ │ │ │ └── stats.proto │ │ │ │ ├── v3/ │ │ │ │ │ ├── BUILD │ │ │ │ │ ├── metrics_service.proto │ │ │ │ │ └── stats.proto │ │ │ │ └── v4alpha/ │ │ │ │ ├── BUILD │ │ │ │ ├── metrics_service.proto │ │ │ │ └── stats.proto │ │ │ ├── overload/ │ │ │ │ ├── v2alpha/ │ │ │ │ │ ├── BUILD │ │ │ │ │ └── overload.proto │ │ │ │ └── v3/ │ │ │ │ ├── BUILD │ │ │ │ └── overload.proto │ │ │ ├── ratelimit/ │ │ │ │ ├── v2/ │ │ │ │ │ ├── BUILD │ │ │ │ │ └── rls.proto │ │ │ │ └── v3/ │ │ │ │ ├── BUILD │ │ │ │ └── rls.proto │ │ │ ├── rbac/ │ │ │ │ ├── v2/ │ │ │ │ │ ├── BUILD │ │ │ │ │ └── rbac.proto │ │ │ │ ├── v3/ │ │ │ │ │ ├── BUILD │ │ │ │ │ └── rbac.proto │ │ │ │ └── v4alpha/ │ │ │ │ ├── BUILD │ │ │ │ └── rbac.proto │ │ │ ├── resource_monitor/ │ │ │ │ ├── fixed_heap/ │ │ │ │ │ └── v2alpha/ │ │ │ │ │ ├── BUILD │ │ │ │ │ └── fixed_heap.proto │ │ │ │ └── injected_resource/ │ │ │ │ └── v2alpha/ │ │ │ │ ├── BUILD │ │ │ │ └── injected_resource.proto │ │ │ ├── retry/ │ │ │ │ ├── omit_canary_hosts/ │ │ │ │ │ └── v2/ │ │ │ │ │ ├── BUILD │ │ │ │ │ └── omit_canary_hosts.proto │ │ │ │ ├── omit_host_metadata/ │ │ │ │ │ └── v2/ │ │ │ │ │ ├── BUILD │ │ │ │ │ └── omit_host_metadata_config.proto │ │ │ │ ├── previous_hosts/ │ │ │ │ │ └── v2/ │ │ │ │ │ ├── BUILD │ │ │ │ │ └── previous_hosts.proto │ │ │ │ └── previous_priorities/ │ │ │ │ ├── BUILD │ │ │ │ └── previous_priorities_config.proto │ │ │ ├── route/ │ │ │ │ ├── v3/ │ │ │ │ │ ├── BUILD │ │ │ │ │ ├── route.proto │ │ │ │ │ ├── route_components.proto │ │ │ │ │ └── scoped_route.proto │ │ │ │ └── v4alpha/ │ │ │ │ ├── BUILD │ │ │ │ ├── route.proto │ │ │ │ ├── route_components.proto │ │ │ │ └── scoped_route.proto │ │ │ ├── tap/ │ │ │ │ ├── v3/ │ │ │ │ │ ├── BUILD │ │ │ │ │ └── common.proto │ │ │ │ └── v4alpha/ │ │ │ │ ├── BUILD │ │ │ │ └── common.proto │ │ │ ├── trace/ │ │ │ │ ├── v2/ │ │ │ │ │ ├── BUILD │ │ │ │ │ ├── datadog.proto │ │ │ │ │ ├── dynamic_ot.proto │ │ │ │ │ ├── http_tracer.proto │ │ │ │ │ ├── lightstep.proto │ │ │ │ │ ├── opencensus.proto │ │ │ │ │ ├── service.proto │ │ │ │ │ ├── trace.proto │ │ │ │ │ └── zipkin.proto │ │ │ │ ├── v2alpha/ │ │ │ │ │ ├── BUILD │ │ │ │ │ └── xray.proto │ │ │ │ ├── v3/ │ │ │ │ │ ├── BUILD │ │ │ │ │ ├── datadog.proto │ │ │ │ │ ├── dynamic_ot.proto │ │ │ │ │ ├── http_tracer.proto │ │ │ │ │ ├── lightstep.proto │ │ │ │ │ ├── opencensus.proto │ │ │ │ │ ├── service.proto │ │ │ │ │ ├── trace.proto │ │ │ │ │ ├── xray.proto │ │ │ │ │ └── zipkin.proto │ │ │ │ └── v4alpha/ │ │ │ │ ├── BUILD │ │ │ │ ├── http_tracer.proto │ │ │ │ └── service.proto │ │ │ └── transport_socket/ │ │ │ ├── alts/ │ │ │ │ └── v2alpha/ │ │ │ │ ├── BUILD │ │ │ │ └── alts.proto │ │ │ ├── raw_buffer/ │ │ │ │ └── v2/ │ │ │ │ ├── BUILD │ │ │ │ └── raw_buffer.proto │ │ │ └── tap/ │ │ │ └── v2alpha/ │ │ │ ├── BUILD │ │ │ └── tap.proto │ │ ├── data/ │ │ │ ├── accesslog/ │ │ │ │ ├── v2/ │ │ │ │ │ ├── BUILD │ │ │ │ │ └── accesslog.proto │ │ │ │ └── v3/ │ │ │ │ ├── BUILD │ │ │ │ └── accesslog.proto │ │ │ ├── cluster/ │ │ │ │ ├── v2alpha/ │ │ │ │ │ ├── BUILD │ │ │ │ │ └── outlier_detection_event.proto │ │ │ │ └── v3/ │ │ │ │ ├── BUILD │ │ │ │ └── outlier_detection_event.proto │ │ │ ├── core/ │ │ │ │ ├── v2alpha/ │ │ │ │ │ ├── BUILD │ │ │ │ │ └── health_check_event.proto │ │ │ │ └── v3/ │ │ │ │ ├── BUILD │ │ │ │ └── health_check_event.proto │ │ │ ├── dns/ │ │ │ │ ├── v2alpha/ │ │ │ │ │ ├── BUILD │ │ │ │ │ └── dns_table.proto │ │ │ │ ├── v3/ │ │ │ │ │ ├── BUILD │ │ │ │ │ └── dns_table.proto │ │ │ │ └── v4alpha/ │ │ │ │ ├── BUILD │ │ │ │ └── dns_table.proto │ │ │ └── tap/ │ │ │ ├── v2alpha/ │ │ │ │ ├── BUILD │ │ │ │ ├── common.proto │ │ │ │ ├── http.proto │ │ │ │ ├── transport.proto │ │ │ │ └── wrapper.proto │ │ │ └── v3/ │ │ │ ├── BUILD │ │ │ ├── common.proto │ │ │ ├── http.proto │ │ │ ├── transport.proto │ │ │ └── wrapper.proto │ │ ├── extensions/ │ │ │ ├── access_loggers/ │ │ │ │ ├── file/ │ │ │ │ │ ├── v3/ │ │ │ │ │ │ ├── BUILD │ │ │ │ │ │ └── file.proto │ │ │ │ │ └── v4alpha/ │ │ │ │ │ ├── BUILD │ │ │ │ │ └── file.proto │ │ │ │ ├── grpc/ │ │ │ │ │ └── v3/ │ │ │ │ │ ├── BUILD │ │ │ │ │ └── als.proto │ │ │ │ └── wasm/ │ │ │ │ └── v3/ │ │ │ │ ├── BUILD │ │ │ │ └── wasm.proto │ │ │ ├── clusters/ │ │ │ │ ├── aggregate/ │ │ │ │ │ └── v3/ │ │ │ │ │ ├── BUILD │ │ │ │ │ └── cluster.proto │ │ │ │ ├── dynamic_forward_proxy/ │ │ │ │ │ └── v3/ │ │ │ │ │ ├── BUILD │ │ │ │ │ └── cluster.proto │ │ │ │ └── redis/ │ │ │ │ └── v3/ │ │ │ │ ├── BUILD │ │ │ │ └── redis_cluster.proto │ │ │ ├── common/ │ │ │ │ ├── dynamic_forward_proxy/ │ │ │ │ │ └── v3/ │ │ │ │ │ ├── BUILD │ │ │ │ │ └── dns_cache.proto │ │ │ │ ├── ratelimit/ │ │ │ │ │ └── v3/ │ │ │ │ │ ├── BUILD │ │ │ │ │ └── ratelimit.proto │ │ │ │ └── tap/ │ │ │ │ ├── v3/ │ │ │ │ │ ├── BUILD │ │ │ │ │ └── common.proto │ │ │ │ └── v4alpha/ │ │ │ │ ├── BUILD │ │ │ │ └── common.proto │ │ │ ├── compression/ │ │ │ │ └── gzip/ │ │ │ │ ├── compressor/ │ │ │ │ │ └── v3/ │ │ │ │ │ ├── BUILD │ │ │ │ │ └── gzip.proto │ │ │ │ └── decompressor/ │ │ │ │ └── v3/ │ │ │ │ ├── BUILD │ │ │ │ └── gzip.proto │ │ │ ├── filters/ │ │ │ │ ├── common/ │ │ │ │ │ └── fault/ │ │ │ │ │ └── v3/ │ │ │ │ │ ├── BUILD │ │ │ │ │ └── fault.proto │ │ │ │ ├── http/ │ │ │ │ │ ├── adaptive_concurrency/ │ │ │ │ │ │ └── v3/ │ │ │ │ │ │ ├── BUILD │ │ │ │ │ │ └── adaptive_concurrency.proto │ │ │ │ │ ├── admission_control/ │ │ │ │ │ │ └── v3alpha/ │ │ │ │ │ │ ├── BUILD │ │ │ │ │ │ └── admission_control.proto │ │ │ │ │ ├── aws_lambda/ │ │ │ │ │ │ └── v3/ │ │ │ │ │ │ ├── BUILD │ │ │ │ │ │ └── aws_lambda.proto │ │ │ │ │ ├── aws_request_signing/ │ │ │ │ │ │ └── v3/ │ │ │ │ │ │ ├── BUILD │ │ │ │ │ │ └── aws_request_signing.proto │ │ │ │ │ ├── buffer/ │ │ │ │ │ │ └── v3/ │ │ │ │ │ │ ├── BUILD │ │ │ │ │ │ └── buffer.proto │ │ │ │ │ ├── cache/ │ │ │ │ │ │ ├── v3alpha/ │ │ │ │ │ │ │ ├── BUILD │ │ │ │ │ │ │ └── cache.proto │ │ │ │ │ │ └── v4alpha/ │ │ │ │ │ │ ├── BUILD │ │ │ │ │ │ └── cache.proto │ │ │ │ │ ├── cdn_loop/ │ │ │ │ │ │ └── v3alpha/ │ │ │ │ │ │ ├── BUILD │ │ │ │ │ │ └── cdn_loop.proto │ │ │ │ │ ├── compressor/ │ │ │ │ │ │ └── v3/ │ │ │ │ │ │ ├── BUILD │ │ │ │ │ │ └── compressor.proto │ │ │ │ │ ├── cors/ │ │ │ │ │ │ └── v3/ │ │ │ │ │ │ ├── BUILD │ │ │ │ │ │ └── cors.proto │ │ │ │ │ ├── csrf/ │ │ │ │ │ │ ├── v3/ │ │ │ │ │ │ │ ├── BUILD │ │ │ │ │ │ │ └── csrf.proto │ │ │ │ │ │ └── v4alpha/ │ │ │ │ │ │ ├── BUILD │ │ │ │ │ │ └── csrf.proto │ │ │ │ │ ├── decompressor/ │ │ │ │ │ │ └── v3/ │ │ │ │ │ │ ├── BUILD │ │ │ │ │ │ └── decompressor.proto │ │ │ │ │ ├── dynamic_forward_proxy/ │ │ │ │ │ │ └── v3/ │ │ │ │ │ │ ├── BUILD │ │ │ │ │ │ └── dynamic_forward_proxy.proto │ │ │ │ │ ├── dynamo/ │ │ │ │ │ │ └── v3/ │ │ │ │ │ │ ├── BUILD │ │ │ │ │ │ └── dynamo.proto │ │ │ │ │ ├── ext_authz/ │ │ │ │ │ │ ├── v3/ │ │ │ │ │ │ │ ├── BUILD │ │ │ │ │ │ │ └── ext_authz.proto │ │ │ │ │ │ └── v4alpha/ │ │ │ │ │ │ ├── BUILD │ │ │ │ │ │ └── ext_authz.proto │ │ │ │ │ ├── fault/ │ │ │ │ │ │ ├── v3/ │ │ │ │ │ │ │ ├── BUILD │ │ │ │ │ │ │ └── fault.proto │ │ │ │ │ │ └── v4alpha/ │ │ │ │ │ │ ├── BUILD │ │ │ │ │ │ └── fault.proto │ │ │ │ │ ├── grpc_http1_bridge/ │ │ │ │ │ │ └── v3/ │ │ │ │ │ │ ├── BUILD │ │ │ │ │ │ └── config.proto │ │ │ │ │ ├── grpc_http1_reverse_bridge/ │ │ │ │ │ │ └── v3/ │ │ │ │ │ │ ├── BUILD │ │ │ │ │ │ └── config.proto │ │ │ │ │ ├── grpc_json_transcoder/ │ │ │ │ │ │ └── v3/ │ │ │ │ │ │ ├── BUILD │ │ │ │ │ │ └── transcoder.proto │ │ │ │ │ ├── grpc_stats/ │ │ │ │ │ │ └── v3/ │ │ │ │ │ │ ├── BUILD │ │ │ │ │ │ └── config.proto │ │ │ │ │ ├── grpc_web/ │ │ │ │ │ │ └── v3/ │ │ │ │ │ │ ├── BUILD │ │ │ │ │ │ └── grpc_web.proto │ │ │ │ │ ├── gzip/ │ │ │ │ │ │ └── v3/ │ │ │ │ │ │ ├── BUILD │ │ │ │ │ │ └── gzip.proto │ │ │ │ │ ├── header_to_metadata/ │ │ │ │ │ │ ├── v3/ │ │ │ │ │ │ │ ├── BUILD │ │ │ │ │ │ │ └── header_to_metadata.proto │ │ │ │ │ │ └── v4alpha/ │ │ │ │ │ │ ├── BUILD │ │ │ │ │ │ └── header_to_metadata.proto │ │ │ │ │ ├── health_check/ │ │ │ │ │ │ ├── v3/ │ │ │ │ │ │ │ ├── BUILD │ │ │ │ │ │ │ └── health_check.proto │ │ │ │ │ │ └── v4alpha/ │ │ │ │ │ │ ├── BUILD │ │ │ │ │ │ └── health_check.proto │ │ │ │ │ ├── ip_tagging/ │ │ │ │ │ │ └── v3/ │ │ │ │ │ │ ├── BUILD │ │ │ │ │ │ └── ip_tagging.proto │ │ │ │ │ ├── jwt_authn/ │ │ │ │ │ │ ├── v3/ │ │ │ │ │ │ │ ├── BUILD │ │ │ │ │ │ │ ├── README.md │ │ │ │ │ │ │ └── config.proto │ │ │ │ │ │ └── v4alpha/ │ │ │ │ │ │ ├── BUILD │ │ │ │ │ │ └── config.proto │ │ │ │ │ ├── local_ratelimit/ │ │ │ │ │ │ └── v3/ │ │ │ │ │ │ ├── BUILD │ │ │ │ │ │ └── local_rate_limit.proto │ │ │ │ │ ├── lua/ │ │ │ │ │ │ └── v3/ │ │ │ │ │ │ ├── BUILD │ │ │ │ │ │ └── lua.proto │ │ │ │ │ ├── oauth2/ │ │ │ │ │ │ ├── v3alpha/ │ │ │ │ │ │ │ ├── BUILD │ │ │ │ │ │ │ └── oauth.proto │ │ │ │ │ │ └── v4alpha/ │ │ │ │ │ │ ├── BUILD │ │ │ │ │ │ └── oauth.proto │ │ │ │ │ ├── on_demand/ │ │ │ │ │ │ └── v3/ │ │ │ │ │ │ ├── BUILD │ │ │ │ │ │ └── on_demand.proto │ │ │ │ │ ├── original_src/ │ │ │ │ │ │ └── v3/ │ │ │ │ │ │ ├── BUILD │ │ │ │ │ │ └── original_src.proto │ │ │ │ │ ├── ratelimit/ │ │ │ │ │ │ └── v3/ │ │ │ │ │ │ ├── BUILD │ │ │ │ │ │ └── rate_limit.proto │ │ │ │ │ ├── rbac/ │ │ │ │ │ │ ├── v3/ │ │ │ │ │ │ │ ├── BUILD │ │ │ │ │ │ │ └── rbac.proto │ │ │ │ │ │ └── v4alpha/ │ │ │ │ │ │ ├── BUILD │ │ │ │ │ │ └── rbac.proto │ │ │ │ │ ├── router/ │ │ │ │ │ │ ├── v3/ │ │ │ │ │ │ │ ├── BUILD │ │ │ │ │ │ │ └── router.proto │ │ │ │ │ │ └── v4alpha/ │ │ │ │ │ │ ├── BUILD │ │ │ │ │ │ └── router.proto │ │ │ │ │ ├── squash/ │ │ │ │ │ │ └── v3/ │ │ │ │ │ │ ├── BUILD │ │ │ │ │ │ └── squash.proto │ │ │ │ │ ├── tap/ │ │ │ │ │ │ ├── v3/ │ │ │ │ │ │ │ ├── BUILD │ │ │ │ │ │ │ └── tap.proto │ │ │ │ │ │ └── v4alpha/ │ │ │ │ │ │ ├── BUILD │ │ │ │ │ │ └── tap.proto │ │ │ │ │ └── wasm/ │ │ │ │ │ └── v3/ │ │ │ │ │ ├── BUILD │ │ │ │ │ └── wasm.proto │ │ │ │ ├── listener/ │ │ │ │ │ ├── http_inspector/ │ │ │ │ │ │ └── v3/ │ │ │ │ │ │ ├── BUILD │ │ │ │ │ │ └── http_inspector.proto │ │ │ │ │ ├── original_dst/ │ │ │ │ │ │ └── v3/ │ │ │ │ │ │ ├── BUILD │ │ │ │ │ │ └── original_dst.proto │ │ │ │ │ ├── original_src/ │ │ │ │ │ │ └── v3/ │ │ │ │ │ │ ├── BUILD │ │ │ │ │ │ └── original_src.proto │ │ │ │ │ ├── proxy_protocol/ │ │ │ │ │ │ └── v3/ │ │ │ │ │ │ ├── BUILD │ │ │ │ │ │ └── proxy_protocol.proto │ │ │ │ │ └── tls_inspector/ │ │ │ │ │ └── v3/ │ │ │ │ │ ├── BUILD │ │ │ │ │ └── tls_inspector.proto │ │ │ │ ├── network/ │ │ │ │ │ ├── client_ssl_auth/ │ │ │ │ │ │ └── v3/ │ │ │ │ │ │ ├── BUILD │ │ │ │ │ │ └── client_ssl_auth.proto │ │ │ │ │ ├── direct_response/ │ │ │ │ │ │ └── v3/ │ │ │ │ │ │ ├── BUILD │ │ │ │ │ │ └── config.proto │ │ │ │ │ ├── dubbo_proxy/ │ │ │ │ │ │ ├── router/ │ │ │ │ │ │ │ └── v3/ │ │ │ │ │ │ │ ├── BUILD │ │ │ │ │ │ │ └── router.proto │ │ │ │ │ │ ├── v3/ │ │ │ │ │ │ │ ├── BUILD │ │ │ │ │ │ │ ├── README.md │ │ │ │ │ │ │ ├── dubbo_proxy.proto │ │ │ │ │ │ │ └── route.proto │ │ │ │ │ │ └── v4alpha/ │ │ │ │ │ │ ├── BUILD │ │ │ │ │ │ ├── dubbo_proxy.proto │ │ │ │ │ │ └── route.proto │ │ │ │ │ ├── echo/ │ │ │ │ │ │ └── v3/ │ │ │ │ │ │ ├── BUILD │ │ │ │ │ │ └── echo.proto │ │ │ │ │ ├── ext_authz/ │ │ │ │ │ │ ├── v3/ │ │ │ │ │ │ │ ├── BUILD │ │ │ │ │ │ │ └── ext_authz.proto │ │ │ │ │ │ └── v4alpha/ │ │ │ │ │ │ ├── BUILD │ │ │ │ │ │ └── ext_authz.proto │ │ │ │ │ ├── http_connection_manager/ │ │ │ │ │ │ ├── v3/ │ │ │ │ │ │ │ ├── BUILD │ │ │ │ │ │ │ └── http_connection_manager.proto │ │ │ │ │ │ └── v4alpha/ │ │ │ │ │ │ ├── BUILD │ │ │ │ │ │ └── http_connection_manager.proto │ │ │ │ │ ├── kafka_broker/ │ │ │ │ │ │ └── v3/ │ │ │ │ │ │ ├── BUILD │ │ │ │ │ │ └── kafka_broker.proto │ │ │ │ │ ├── local_ratelimit/ │ │ │ │ │ │ └── v3/ │ │ │ │ │ │ ├── BUILD │ │ │ │ │ │ └── local_rate_limit.proto │ │ │ │ │ ├── mongo_proxy/ │ │ │ │ │ │ └── v3/ │ │ │ │ │ │ ├── BUILD │ │ │ │ │ │ └── mongo_proxy.proto │ │ │ │ │ ├── mysql_proxy/ │ │ │ │ │ │ └── v3/ │ │ │ │ │ │ ├── BUILD │ │ │ │ │ │ └── mysql_proxy.proto │ │ │ │ │ ├── postgres_proxy/ │ │ │ │ │ │ └── v3alpha/ │ │ │ │ │ │ ├── BUILD │ │ │ │ │ │ └── postgres_proxy.proto │ │ │ │ │ ├── ratelimit/ │ │ │ │ │ │ └── v3/ │ │ │ │ │ │ ├── BUILD │ │ │ │ │ │ └── rate_limit.proto │ │ │ │ │ ├── rbac/ │ │ │ │ │ │ ├── v3/ │ │ │ │ │ │ │ ├── BUILD │ │ │ │ │ │ │ └── rbac.proto │ │ │ │ │ │ └── v4alpha/ │ │ │ │ │ │ ├── BUILD │ │ │ │ │ │ └── rbac.proto │ │ │ │ │ ├── redis_proxy/ │ │ │ │ │ │ └── v3/ │ │ │ │ │ │ ├── BUILD │ │ │ │ │ │ └── redis_proxy.proto │ │ │ │ │ ├── rocketmq_proxy/ │ │ │ │ │ │ ├── v3/ │ │ │ │ │ │ │ ├── BUILD │ │ │ │ │ │ │ ├── README.md │ │ │ │ │ │ │ ├── rocketmq_proxy.proto │ │ │ │ │ │ │ └── route.proto │ │ │ │ │ │ └── v4alpha/ │ │ │ │ │ │ ├── BUILD │ │ │ │ │ │ ├── rocketmq_proxy.proto │ │ │ │ │ │ └── route.proto │ │ │ │ │ ├── sni_cluster/ │ │ │ │ │ │ └── v3/ │ │ │ │ │ │ ├── BUILD │ │ │ │ │ │ └── sni_cluster.proto │ │ │ │ │ ├── sni_dynamic_forward_proxy/ │ │ │ │ │ │ └── v3alpha/ │ │ │ │ │ │ ├── BUILD │ │ │ │ │ │ └── sni_dynamic_forward_proxy.proto │ │ │ │ │ ├── tcp_proxy/ │ │ │ │ │ │ ├── v3/ │ │ │ │ │ │ │ ├── BUILD │ │ │ │ │ │ │ └── tcp_proxy.proto │ │ │ │ │ │ └── v4alpha/ │ │ │ │ │ │ ├── BUILD │ │ │ │ │ │ └── tcp_proxy.proto │ │ │ │ │ ├── thrift_proxy/ │ │ │ │ │ │ ├── filters/ │ │ │ │ │ │ │ └── ratelimit/ │ │ │ │ │ │ │ └── v3/ │ │ │ │ │ │ │ ├── BUILD │ │ │ │ │ │ │ └── rate_limit.proto │ │ │ │ │ │ ├── v3/ │ │ │ │ │ │ │ ├── BUILD │ │ │ │ │ │ │ ├── README.md │ │ │ │ │ │ │ ├── route.proto │ │ │ │ │ │ │ └── thrift_proxy.proto │ │ │ │ │ │ └── v4alpha/ │ │ │ │ │ │ ├── BUILD │ │ │ │ │ │ ├── route.proto │ │ │ │ │ │ └── thrift_proxy.proto │ │ │ │ │ ├── wasm/ │ │ │ │ │ │ └── v3/ │ │ │ │ │ │ ├── BUILD │ │ │ │ │ │ └── wasm.proto │ │ │ │ │ └── zookeeper_proxy/ │ │ │ │ │ └── v3/ │ │ │ │ │ ├── BUILD │ │ │ │ │ └── zookeeper_proxy.proto │ │ │ │ └── udp/ │ │ │ │ ├── dns_filter/ │ │ │ │ │ ├── v3alpha/ │ │ │ │ │ │ ├── BUILD │ │ │ │ │ │ └── dns_filter.proto │ │ │ │ │ └── v4alpha/ │ │ │ │ │ ├── BUILD │ │ │ │ │ └── dns_filter.proto │ │ │ │ └── udp_proxy/ │ │ │ │ └── v3/ │ │ │ │ ├── BUILD │ │ │ │ └── udp_proxy.proto │ │ │ ├── internal_redirect/ │ │ │ │ ├── allow_listed_routes/ │ │ │ │ │ └── v3/ │ │ │ │ │ ├── BUILD │ │ │ │ │ └── allow_listed_routes_config.proto │ │ │ │ ├── previous_routes/ │ │ │ │ │ └── v3/ │ │ │ │ │ ├── BUILD │ │ │ │ │ └── previous_routes_config.proto │ │ │ │ └── safe_cross_scheme/ │ │ │ │ └── v3/ │ │ │ │ ├── BUILD │ │ │ │ └── safe_cross_scheme_config.proto │ │ │ ├── network/ │ │ │ │ └── socket_interface/ │ │ │ │ └── v3/ │ │ │ │ ├── BUILD │ │ │ │ └── default_socket_interface.proto │ │ │ ├── retry/ │ │ │ │ ├── host/ │ │ │ │ │ └── omit_host_metadata/ │ │ │ │ │ └── v3/ │ │ │ │ │ ├── BUILD │ │ │ │ │ └── omit_host_metadata_config.proto │ │ │ │ └── priority/ │ │ │ │ └── previous_priorities/ │ │ │ │ └── v3/ │ │ │ │ ├── BUILD │ │ │ │ └── previous_priorities_config.proto │ │ │ ├── stat_sinks/ │ │ │ │ └── wasm/ │ │ │ │ └── v3/ │ │ │ │ ├── BUILD │ │ │ │ └── wasm.proto │ │ │ ├── tracers/ │ │ │ │ ├── datadog/ │ │ │ │ │ └── v4alpha/ │ │ │ │ │ ├── BUILD │ │ │ │ │ └── datadog.proto │ │ │ │ ├── dynamic_ot/ │ │ │ │ │ └── v4alpha/ │ │ │ │ │ ├── BUILD │ │ │ │ │ └── dynamic_ot.proto │ │ │ │ ├── lightstep/ │ │ │ │ │ └── v4alpha/ │ │ │ │ │ ├── BUILD │ │ │ │ │ └── lightstep.proto │ │ │ │ ├── opencensus/ │ │ │ │ │ └── v4alpha/ │ │ │ │ │ ├── BUILD │ │ │ │ │ └── opencensus.proto │ │ │ │ ├── xray/ │ │ │ │ │ └── v4alpha/ │ │ │ │ │ ├── BUILD │ │ │ │ │ └── xray.proto │ │ │ │ └── zipkin/ │ │ │ │ └── v4alpha/ │ │ │ │ ├── BUILD │ │ │ │ └── zipkin.proto │ │ │ ├── transport_sockets/ │ │ │ │ ├── alts/ │ │ │ │ │ └── v3/ │ │ │ │ │ ├── BUILD │ │ │ │ │ └── alts.proto │ │ │ │ ├── proxy_protocol/ │ │ │ │ │ └── v3/ │ │ │ │ │ ├── BUILD │ │ │ │ │ └── upstream_proxy_protocol.proto │ │ │ │ ├── quic/ │ │ │ │ │ ├── v3/ │ │ │ │ │ │ ├── BUILD │ │ │ │ │ │ └── quic_transport.proto │ │ │ │ │ └── v4alpha/ │ │ │ │ │ ├── BUILD │ │ │ │ │ └── quic_transport.proto │ │ │ │ ├── raw_buffer/ │ │ │ │ │ └── v3/ │ │ │ │ │ ├── BUILD │ │ │ │ │ └── raw_buffer.proto │ │ │ │ ├── tap/ │ │ │ │ │ ├── v3/ │ │ │ │ │ │ ├── BUILD │ │ │ │ │ │ └── tap.proto │ │ │ │ │ └── v4alpha/ │ │ │ │ │ ├── BUILD │ │ │ │ │ └── tap.proto │ │ │ │ └── tls/ │ │ │ │ ├── v3/ │ │ │ │ │ ├── BUILD │ │ │ │ │ ├── cert.proto │ │ │ │ │ ├── common.proto │ │ │ │ │ ├── secret.proto │ │ │ │ │ └── tls.proto │ │ │ │ └── v4alpha/ │ │ │ │ ├── BUILD │ │ │ │ ├── common.proto │ │ │ │ ├── secret.proto │ │ │ │ └── tls.proto │ │ │ ├── upstreams/ │ │ │ │ └── http/ │ │ │ │ ├── generic/ │ │ │ │ │ └── v3/ │ │ │ │ │ ├── BUILD │ │ │ │ │ └── generic_connection_pool.proto │ │ │ │ ├── http/ │ │ │ │ │ └── v3/ │ │ │ │ │ ├── BUILD │ │ │ │ │ └── http_connection_pool.proto │ │ │ │ └── tcp/ │ │ │ │ └── v3/ │ │ │ │ ├── BUILD │ │ │ │ └── tcp_connection_pool.proto │ │ │ ├── wasm/ │ │ │ │ └── v3/ │ │ │ │ ├── BUILD │ │ │ │ └── wasm.proto │ │ │ └── watchdog/ │ │ │ ├── abort_action/ │ │ │ │ └── v3alpha/ │ │ │ │ ├── BUILD │ │ │ │ └── abort_action.proto │ │ │ └── profile_action/ │ │ │ └── v3alpha/ │ │ │ ├── BUILD │ │ │ └── profile_action.proto │ │ ├── service/ │ │ │ ├── README.md │ │ │ ├── accesslog/ │ │ │ │ ├── v2/ │ │ │ │ │ ├── BUILD │ │ │ │ │ └── als.proto │ │ │ │ ├── v3/ │ │ │ │ │ ├── BUILD │ │ │ │ │ └── als.proto │ │ │ │ └── v4alpha/ │ │ │ │ ├── BUILD │ │ │ │ └── als.proto │ │ │ ├── auth/ │ │ │ │ ├── v2/ │ │ │ │ │ ├── BUILD │ │ │ │ │ ├── attribute_context.proto │ │ │ │ │ └── external_auth.proto │ │ │ │ ├── v2alpha/ │ │ │ │ │ ├── BUILD │ │ │ │ │ └── external_auth.proto │ │ │ │ ├── v3/ │ │ │ │ │ ├── BUILD │ │ │ │ │ ├── attribute_context.proto │ │ │ │ │ └── external_auth.proto │ │ │ │ └── v4alpha/ │ │ │ │ ├── BUILD │ │ │ │ ├── attribute_context.proto │ │ │ │ └── external_auth.proto │ │ │ ├── cluster/ │ │ │ │ └── v3/ │ │ │ │ ├── BUILD │ │ │ │ └── cds.proto │ │ │ ├── discovery/ │ │ │ │ ├── v2/ │ │ │ │ │ ├── BUILD │ │ │ │ │ ├── ads.proto │ │ │ │ │ ├── hds.proto │ │ │ │ │ ├── rtds.proto │ │ │ │ │ └── sds.proto │ │ │ │ ├── v3/ │ │ │ │ │ ├── BUILD │ │ │ │ │ ├── ads.proto │ │ │ │ │ └── discovery.proto │ │ │ │ └── v4alpha/ │ │ │ │ ├── BUILD │ │ │ │ ├── ads.proto │ │ │ │ └── discovery.proto │ │ │ ├── endpoint/ │ │ │ │ └── v3/ │ │ │ │ ├── BUILD │ │ │ │ └── eds.proto │ │ │ ├── event_reporting/ │ │ │ │ ├── v2alpha/ │ │ │ │ │ ├── BUILD │ │ │ │ │ └── event_reporting_service.proto │ │ │ │ ├── v3/ │ │ │ │ │ ├── BUILD │ │ │ │ │ └── event_reporting_service.proto │ │ │ │ └── v4alpha/ │ │ │ │ ├── BUILD │ │ │ │ └── event_reporting_service.proto │ │ │ ├── extension/ │ │ │ │ └── v3/ │ │ │ │ ├── BUILD │ │ │ │ └── config_discovery.proto │ │ │ ├── health/ │ │ │ │ ├── v3/ │ │ │ │ │ ├── BUILD │ │ │ │ │ └── hds.proto │ │ │ │ └── v4alpha/ │ │ │ │ ├── BUILD │ │ │ │ └── hds.proto │ │ │ ├── listener/ │ │ │ │ └── v3/ │ │ │ │ ├── BUILD │ │ │ │ └── lds.proto │ │ │ ├── load_stats/ │ │ │ │ ├── v2/ │ │ │ │ │ ├── BUILD │ │ │ │ │ └── lrs.proto │ │ │ │ ├── v3/ │ │ │ │ │ ├── BUILD │ │ │ │ │ └── lrs.proto │ │ │ │ └── v4alpha/ │ │ │ │ ├── BUILD │ │ │ │ └── lrs.proto │ │ │ ├── metrics/ │ │ │ │ ├── v2/ │ │ │ │ │ ├── BUILD │ │ │ │ │ └── metrics_service.proto │ │ │ │ ├── v3/ │ │ │ │ │ ├── BUILD │ │ │ │ │ └── metrics_service.proto │ │ │ │ └── v4alpha/ │ │ │ │ ├── BUILD │ │ │ │ └── metrics_service.proto │ │ │ ├── ratelimit/ │ │ │ │ ├── v2/ │ │ │ │ │ ├── BUILD │ │ │ │ │ └── rls.proto │ │ │ │ └── v3/ │ │ │ │ ├── BUILD │ │ │ │ └── rls.proto │ │ │ ├── route/ │ │ │ │ └── v3/ │ │ │ │ ├── BUILD │ │ │ │ ├── rds.proto │ │ │ │ └── srds.proto │ │ │ ├── runtime/ │ │ │ │ └── v3/ │ │ │ │ ├── BUILD │ │ │ │ └── rtds.proto │ │ │ ├── secret/ │ │ │ │ └── v3/ │ │ │ │ ├── BUILD │ │ │ │ └── sds.proto │ │ │ ├── status/ │ │ │ │ ├── v2/ │ │ │ │ │ ├── BUILD │ │ │ │ │ └── csds.proto │ │ │ │ ├── v3/ │ │ │ │ │ ├── BUILD │ │ │ │ │ └── csds.proto │ │ │ │ └── v4alpha/ │ │ │ │ ├── BUILD │ │ │ │ └── csds.proto │ │ │ ├── tap/ │ │ │ │ ├── v2alpha/ │ │ │ │ │ ├── BUILD │ │ │ │ │ ├── common.proto │ │ │ │ │ └── tap.proto │ │ │ │ ├── v3/ │ │ │ │ │ ├── BUILD │ │ │ │ │ └── tap.proto │ │ │ │ └── v4alpha/ │ │ │ │ ├── BUILD │ │ │ │ └── tap.proto │ │ │ └── trace/ │ │ │ ├── v2/ │ │ │ │ ├── BUILD │ │ │ │ └── trace_service.proto │ │ │ ├── v3/ │ │ │ │ ├── BUILD │ │ │ │ └── trace_service.proto │ │ │ └── v4alpha/ │ │ │ ├── BUILD │ │ │ └── trace_service.proto │ │ └── type/ │ │ ├── BUILD │ │ ├── hash_policy.proto │ │ ├── http.proto │ │ ├── http_status.proto │ │ ├── matcher/ │ │ │ ├── BUILD │ │ │ ├── metadata.proto │ │ │ ├── node.proto │ │ │ ├── number.proto │ │ │ ├── path.proto │ │ │ ├── regex.proto │ │ │ ├── string.proto │ │ │ ├── struct.proto │ │ │ ├── v3/ │ │ │ │ ├── BUILD │ │ │ │ ├── metadata.proto │ │ │ │ ├── node.proto │ │ │ │ ├── number.proto │ │ │ │ ├── path.proto │ │ │ │ ├── regex.proto │ │ │ │ ├── string.proto │ │ │ │ ├── struct.proto │ │ │ │ └── value.proto │ │ │ ├── v4alpha/ │ │ │ │ ├── BUILD │ │ │ │ ├── metadata.proto │ │ │ │ ├── node.proto │ │ │ │ ├── number.proto │ │ │ │ ├── path.proto │ │ │ │ ├── regex.proto │ │ │ │ ├── string.proto │ │ │ │ ├── struct.proto │ │ │ │ └── value.proto │ │ │ └── value.proto │ │ ├── metadata/ │ │ │ ├── v2/ │ │ │ │ ├── BUILD │ │ │ │ └── metadata.proto │ │ │ └── v3/ │ │ │ ├── BUILD │ │ │ └── metadata.proto │ │ ├── percent.proto │ │ ├── range.proto │ │ ├── semantic_version.proto │ │ ├── token_bucket.proto │ │ ├── tracing/ │ │ │ ├── v2/ │ │ │ │ ├── BUILD │ │ │ │ └── custom_tag.proto │ │ │ └── v3/ │ │ │ ├── BUILD │ │ │ └── custom_tag.proto │ │ └── v3/ │ │ ├── BUILD │ │ ├── hash_policy.proto │ │ ├── http.proto │ │ ├── http_status.proto │ │ ├── percent.proto │ │ ├── range.proto │ │ ├── ratelimit_unit.proto │ │ ├── semantic_version.proto │ │ └── token_bucket.proto │ ├── examples/ │ │ └── service_envoy/ │ │ ├── BUILD │ │ ├── http_connection_manager.pb │ │ └── listeners.pb │ ├── test/ │ │ ├── build/ │ │ │ ├── BUILD │ │ │ ├── build_test.cc │ │ │ └── go_build_test.go │ │ └── validate/ │ │ ├── BUILD │ │ └── pgv_test.cc │ ├── tools/ │ │ ├── BUILD │ │ ├── data/ │ │ │ ├── tap2pcap_h2_ipv4.pb_text │ │ │ └── tap2pcap_h2_ipv4.txt │ │ ├── generate_listeners.py │ │ ├── generate_listeners_test.py │ │ ├── tap2pcap.py │ │ └── tap2pcap_test.py │ ├── versioning/ │ │ └── BUILD │ └── xds_protocol.rst ├── bazel/ │ ├── BUILD │ ├── DEVELOPER.md │ ├── EXTERNAL_DEPS.md │ ├── PPROF.md │ ├── README.md │ ├── antlr.patch │ ├── api_binding.bzl │ ├── api_repositories.bzl │ ├── boringssl_static.patch │ ├── coverage/ │ │ ├── BUILD │ │ ├── collect_cc_coverage.sh │ │ └── fuzz_coverage_wrapper.sh │ ├── crates.bzl │ ├── dependency_imports.bzl │ ├── dev_binding.bzl │ ├── envoy_binary.bzl │ ├── envoy_build_system.bzl │ ├── envoy_internal.bzl │ ├── envoy_library.bzl │ ├── envoy_select.bzl │ ├── envoy_test.bzl │ ├── external/ │ │ ├── BUILD │ │ ├── boringssl_fips.BUILD │ │ ├── boringssl_fips.genrule_cmd │ │ ├── boringssl_fips.patch │ │ ├── cargo/ │ │ │ ├── BUILD │ │ │ └── remote/ │ │ │ ├── BUILD │ │ │ ├── ahash-0.3.8.BUILD │ │ │ ├── autocfg-1.0.0.BUILD │ │ │ ├── cfg-if-0.1.10.BUILD │ │ │ ├── hashbrown-0.7.2.BUILD │ │ │ ├── libc-0.2.74.BUILD │ │ │ ├── log-0.4.11.BUILD │ │ │ ├── memory_units-0.4.0.BUILD │ │ │ ├── proxy-wasm-0.1.2.BUILD │ │ │ ├── wee_alloc-0.4.5.BUILD │ │ │ ├── winapi-0.3.9.BUILD │ │ │ ├── winapi-i686-pc-windows-gnu-0.4.0.BUILD │ │ │ └── winapi-x86_64-pc-windows-gnu-0.4.0.BUILD │ │ ├── compiler_rt.BUILD │ │ ├── fmtlib.BUILD │ │ ├── http-parser.BUILD │ │ ├── kafka_int32.patch │ │ ├── libcircllhist.BUILD │ │ ├── libprotobuf_mutator.BUILD │ │ ├── proxy_wasm_cpp_host.BUILD │ │ ├── quiche.BUILD │ │ ├── quiche.genrule_cmd │ │ ├── rapidjson.BUILD │ │ ├── spdlog.BUILD │ │ ├── sqlparser.BUILD │ │ ├── tclap.BUILD │ │ ├── twitter_common_finagle_thrift.BUILD │ │ ├── twitter_common_lang.BUILD │ │ ├── twitter_common_rpc.BUILD │ │ ├── wee8.BUILD │ │ ├── wee8.genrule_cmd │ │ ├── wee8.patch │ │ └── xxhash.BUILD │ ├── foreign_cc/ │ │ ├── BUILD │ │ ├── llvm.patch │ │ ├── luajit.patch │ │ ├── moonjit.patch │ │ ├── nghttp2.patch │ │ └── zlib.patch │ ├── gen_sh_test_runner.sh │ ├── genrule_repository.bzl │ ├── get_workspace_status │ ├── io_opentracing_cpp.patch │ ├── protobuf.patch │ ├── repositories.bzl │ ├── repositories_extra.bzl │ ├── repository_locations.bzl │ ├── rules_go.patch │ ├── setup_clang.sh │ ├── setup_local_tsan.sh │ ├── sh_test_wrapper.sh │ ├── tclap-win64-ull-sizet.patch │ ├── test/ │ │ ├── BUILD │ │ └── verify_tap_test.sh │ ├── test_for_benchmark_wrapper.sh │ ├── toolchains/ │ │ └── BUILD │ ├── upb.patch │ └── wasm/ │ ├── BUILD │ └── wasm.bzl ├── ci/ │ ├── Dockerfile-envoy │ ├── Dockerfile-envoy-alpine │ ├── Dockerfile-envoy-google-vrp │ ├── README.md │ ├── WORKSPACE.filter.example │ ├── api_mirror.sh │ ├── build_setup.sh │ ├── check_and_fix_format.sh │ ├── do_ci.sh │ ├── do_circle_ci.sh │ ├── do_coverity_local.sh │ ├── docker-entrypoint.sh │ ├── docker_ci.sh │ ├── docker_rebuild_google-vrp.sh │ ├── envoy_build_sha.sh │ ├── filter_example_mirror.sh │ ├── filter_example_setup.sh │ ├── flaky_test/ │ │ ├── process_xml.py │ │ ├── requirements.txt │ │ ├── run_process_xml.sh │ │ └── run_process_xml_mac.sh │ ├── go_mirror.sh │ ├── mac_ci_setup.sh │ ├── mac_ci_steps.sh │ ├── repokitteh/ │ │ └── modules/ │ │ ├── azure_pipelines.star │ │ └── ownerscheck.star │ ├── run_clang_tidy.sh │ ├── run_envoy_docker.sh │ ├── setup_cache.sh │ ├── upload_gcs_artifact.sh │ ├── verify_examples.sh │ └── windows_ci_steps.sh ├── configs/ │ ├── BUILD │ ├── Dockerfile │ ├── access_log_format_helper_v2.template.yaml │ ├── configgen.py │ ├── configgen.sh │ ├── encapsulate_in_connect.v3.yaml │ ├── envoy_double_proxy_v2.template.yaml │ ├── envoy_front_proxy_v2.template.yaml │ ├── envoy_router_v2.template.yaml │ ├── envoy_service_to_service_v2.template.yaml │ ├── freebind/ │ │ ├── README.md │ │ └── freebind.yaml │ ├── google-vrp/ │ │ ├── envoy-edge.yaml │ │ ├── envoy-origin.yaml │ │ ├── launch_envoy.sh │ │ └── supervisor.conf │ ├── google_com_proxy.v2.yaml │ ├── original-dst-cluster/ │ │ ├── README.md │ │ ├── netns_cleanup.sh │ │ ├── netns_setup.sh │ │ └── proxy_config.yaml │ ├── requirements.txt │ ├── routing_helper_v2.template.yaml │ ├── terminate_connect.v3.yaml │ └── using_deprecated_config.v2.yaml ├── docs/ │ ├── BUILD │ ├── README.md │ ├── _ext/ │ │ └── validating_code_block.py │ ├── build.sh │ ├── conf.py │ ├── empty_extensions.json │ ├── generate_extension_db.py │ ├── generate_extension_rst.py │ ├── generate_external_dep_rst.py │ ├── protodoc_manifest.yaml │ ├── publish.sh │ ├── requirements.txt │ └── root/ │ ├── _static/ │ │ ├── css/ │ │ │ └── envoy.css │ │ ├── placeholder │ │ └── searchtools.js │ ├── about_docs.rst │ ├── api/ │ │ ├── api.rst │ │ ├── api_supported_versions.rst │ │ └── client_features.rst │ ├── api-v2/ │ │ ├── admin/ │ │ │ └── admin.rst │ │ ├── api.rst │ │ ├── bootstrap/ │ │ │ └── bootstrap.rst │ │ ├── clusters/ │ │ │ └── clusters.rst │ │ ├── common_messages/ │ │ │ └── common_messages.rst │ │ ├── config/ │ │ │ ├── accesslog/ │ │ │ │ └── accesslog.rst │ │ │ ├── cluster/ │ │ │ │ └── cluster.rst │ │ │ ├── common/ │ │ │ │ └── common.rst │ │ │ ├── config.rst │ │ │ ├── filter/ │ │ │ │ ├── dubbo/ │ │ │ │ │ └── dubbo.rst │ │ │ │ ├── filter.rst │ │ │ │ ├── http/ │ │ │ │ │ └── http.rst │ │ │ │ ├── listener/ │ │ │ │ │ └── listener.rst │ │ │ │ ├── network/ │ │ │ │ │ └── network.rst │ │ │ │ ├── thrift/ │ │ │ │ │ └── thrift.rst │ │ │ │ └── udp/ │ │ │ │ └── udp.rst │ │ │ ├── grpc_credential/ │ │ │ │ └── grpc_credential.rst │ │ │ ├── health_checker/ │ │ │ │ └── health_checker.rst │ │ │ ├── listener/ │ │ │ │ └── listener.rst │ │ │ ├── rbac/ │ │ │ │ └── rbac.rst │ │ │ ├── resource_monitor/ │ │ │ │ └── resource_monitor.rst │ │ │ ├── retry/ │ │ │ │ └── retry.rst │ │ │ ├── trace/ │ │ │ │ └── trace.rst │ │ │ └── transport_socket/ │ │ │ └── transport_socket.rst │ │ ├── data/ │ │ │ ├── accesslog/ │ │ │ │ └── accesslog.rst │ │ │ ├── cluster/ │ │ │ │ └── cluster.rst │ │ │ ├── core/ │ │ │ │ └── core.rst │ │ │ ├── data.rst │ │ │ ├── dns/ │ │ │ │ └── dns.rst │ │ │ └── tap/ │ │ │ └── tap.rst │ │ ├── http_routes/ │ │ │ └── http_routes.rst │ │ ├── listeners/ │ │ │ └── listeners.rst │ │ ├── service/ │ │ │ └── service.rst │ │ └── types/ │ │ └── types.rst │ ├── api-v3/ │ │ ├── admin/ │ │ │ └── admin.rst │ │ ├── api.rst │ │ ├── bootstrap/ │ │ │ └── bootstrap.rst │ │ ├── clusters/ │ │ │ └── clusters.rst │ │ ├── common_messages/ │ │ │ └── common_messages.rst │ │ ├── config/ │ │ │ ├── accesslog/ │ │ │ │ └── accesslog.rst │ │ │ ├── cluster/ │ │ │ │ └── cluster.rst │ │ │ ├── common/ │ │ │ │ └── common.rst │ │ │ ├── compression/ │ │ │ │ └── compression.rst │ │ │ ├── config.rst │ │ │ ├── endpoint/ │ │ │ │ └── endpoint.rst │ │ │ ├── filter/ │ │ │ │ ├── dubbo/ │ │ │ │ │ └── dubbo.rst │ │ │ │ ├── filter.rst │ │ │ │ ├── http/ │ │ │ │ │ └── http.rst │ │ │ │ ├── listener/ │ │ │ │ │ └── listener.rst │ │ │ │ ├── network/ │ │ │ │ │ └── network.rst │ │ │ │ ├── thrift/ │ │ │ │ │ └── thrift.rst │ │ │ │ └── udp/ │ │ │ │ └── udp.rst │ │ │ ├── grpc_credential/ │ │ │ │ └── grpc_credential.rst │ │ │ ├── health_checker/ │ │ │ │ └── health_checker.rst │ │ │ ├── internal_redirect/ │ │ │ │ └── internal_redirect.rst │ │ │ ├── rbac/ │ │ │ │ └── rbac.rst │ │ │ ├── resource_monitor/ │ │ │ │ └── resource_monitor.rst │ │ │ ├── retry/ │ │ │ │ └── retry.rst │ │ │ ├── trace/ │ │ │ │ └── trace.rst │ │ │ ├── transport_socket/ │ │ │ │ └── transport_socket.rst │ │ │ ├── upstream/ │ │ │ │ └── upstream.rst │ │ │ ├── wasm/ │ │ │ │ └── wasm.rst │ │ │ └── watchdog/ │ │ │ └── watchdog.rst │ │ ├── data/ │ │ │ ├── accesslog/ │ │ │ │ └── accesslog.rst │ │ │ ├── cluster/ │ │ │ │ └── cluster.rst │ │ │ ├── core/ │ │ │ │ └── core.rst │ │ │ ├── data.rst │ │ │ ├── dns/ │ │ │ │ └── dns.rst │ │ │ └── tap/ │ │ │ └── tap.rst │ │ ├── http_routes/ │ │ │ └── http_routes.rst │ │ ├── listeners/ │ │ │ └── listeners.rst │ │ ├── service/ │ │ │ └── service.rst │ │ └── types/ │ │ └── types.rst │ ├── configuration/ │ │ ├── advanced/ │ │ │ ├── advanced.rst │ │ │ └── well_known_dynamic_metadata.rst │ │ ├── best_practices/ │ │ │ ├── _include/ │ │ │ │ └── edge.yaml │ │ │ ├── best_practices.rst │ │ │ ├── edge.rst │ │ │ └── level_two.rst │ │ ├── configuration.rst │ │ ├── http/ │ │ │ ├── http.rst │ │ │ ├── http_conn_man/ │ │ │ │ ├── header_casing.rst │ │ │ │ ├── header_sanitizing.rst │ │ │ │ ├── headers.rst │ │ │ │ ├── http_conn_man.rst │ │ │ │ ├── local_reply.rst │ │ │ │ ├── overview.rst │ │ │ │ ├── rds.rst │ │ │ │ ├── response_code_details.rst │ │ │ │ ├── route_matching.rst │ │ │ │ ├── runtime.rst │ │ │ │ ├── stats.rst │ │ │ │ ├── traffic_splitting.rst │ │ │ │ └── vhds.rst │ │ │ └── http_filters/ │ │ │ ├── _include/ │ │ │ │ ├── dns-cache-circuit-breaker.yaml │ │ │ │ ├── grpc-reverse-bridge-filter.yaml │ │ │ │ └── grpc-transcoder-filter.yaml │ │ │ ├── adaptive_concurrency_filter.rst │ │ │ ├── admission_control_filter.rst │ │ │ ├── aws_lambda_filter.rst │ │ │ ├── aws_request_signing_filter.rst │ │ │ ├── buffer_filter.rst │ │ │ ├── cdn_loop_filter.rst │ │ │ ├── compressor_filter.rst │ │ │ ├── cors_filter.rst │ │ │ ├── csrf_filter.rst │ │ │ ├── decompressor_filter.rst │ │ │ ├── dynamic_forward_proxy_filter.rst │ │ │ ├── dynamodb_filter.rst │ │ │ ├── ext_authz_filter.rst │ │ │ ├── fault_filter.rst │ │ │ ├── grpc_http1_bridge_filter.rst │ │ │ ├── grpc_http1_reverse_bridge_filter.rst │ │ │ ├── grpc_json_transcoder_filter.rst │ │ │ ├── grpc_stats_filter.rst │ │ │ ├── grpc_web_filter.rst │ │ │ ├── gzip_filter.rst │ │ │ ├── header_to_metadata_filter.rst │ │ │ ├── health_check_filter.rst │ │ │ ├── http_filters.rst │ │ │ ├── ip_tagging_filter.rst │ │ │ ├── jwt_authn_filter.rst │ │ │ ├── local_rate_limit_filter.rst │ │ │ ├── lua_filter.rst │ │ │ ├── oauth2_filter.rst │ │ │ ├── on_demand_updates_filter.rst │ │ │ ├── original_src_filter.rst │ │ │ ├── rate_limit_filter.rst │ │ │ ├── rbac_filter.rst │ │ │ ├── router_filter.rst │ │ │ ├── squash_filter.rst │ │ │ ├── tap_filter.rst │ │ │ └── wasm_filter.rst │ │ ├── listeners/ │ │ │ ├── lds.rst │ │ │ ├── listener_filters/ │ │ │ │ ├── http_inspector.rst │ │ │ │ ├── listener_filters.rst │ │ │ │ ├── original_dst_filter.rst │ │ │ │ ├── original_src_filter.rst │ │ │ │ ├── proxy_protocol.rst │ │ │ │ └── tls_inspector.rst │ │ │ ├── listeners.rst │ │ │ ├── network_filters/ │ │ │ │ ├── _include/ │ │ │ │ │ └── sni-dynamic-forward-proxy-filter.yaml │ │ │ │ ├── client_ssl_auth_filter.rst │ │ │ │ ├── direct_response_filter.rst │ │ │ │ ├── dubbo_proxy_filter.rst │ │ │ │ ├── echo_filter.rst │ │ │ │ ├── ext_authz_filter.rst │ │ │ │ ├── kafka_broker_filter.rst │ │ │ │ ├── local_rate_limit_filter.rst │ │ │ │ ├── mongo_proxy_filter.rst │ │ │ │ ├── mysql_proxy_filter.rst │ │ │ │ ├── network_filters.rst │ │ │ │ ├── postgres_proxy_filter.rst │ │ │ │ ├── rate_limit_filter.rst │ │ │ │ ├── rbac_filter.rst │ │ │ │ ├── redis_proxy_filter.rst │ │ │ │ ├── rocketmq_proxy_filter.rst │ │ │ │ ├── sni_cluster_filter.rst │ │ │ │ ├── sni_dynamic_forward_proxy_filter.rst │ │ │ │ ├── tcp_proxy_filter.rst │ │ │ │ ├── thrift_proxy_filter.rst │ │ │ │ ├── wasm_filter.rst │ │ │ │ └── zookeeper_proxy_filter.rst │ │ │ ├── overview.rst │ │ │ ├── runtime.rst │ │ │ ├── stats.rst │ │ │ └── udp_filters/ │ │ │ ├── _include/ │ │ │ │ └── udp-proxy.yaml │ │ │ ├── dns_filter.rst │ │ │ ├── udp_filters.rst │ │ │ └── udp_proxy.rst │ │ ├── observability/ │ │ │ ├── access_log/ │ │ │ │ ├── access_log.rst │ │ │ │ ├── overview.rst │ │ │ │ ├── stats.rst │ │ │ │ └── usage.rst │ │ │ ├── application_logging.rst │ │ │ ├── observability.rst │ │ │ └── statistics.rst │ │ ├── operations/ │ │ │ ├── operations.rst │ │ │ ├── overload_manager/ │ │ │ │ └── overload_manager.rst │ │ │ ├── runtime.rst │ │ │ └── tools/ │ │ │ └── router_check.rst │ │ ├── other_features/ │ │ │ ├── other_features.rst │ │ │ ├── rate_limit.rst │ │ │ ├── wasm.rst │ │ │ └── wasm_stat_sink.rst │ │ ├── other_protocols/ │ │ │ ├── dubbo_filters/ │ │ │ │ ├── dubbo_filters.rst │ │ │ │ └── router_filter.rst │ │ │ ├── other_protocols.rst │ │ │ └── thrift_filters/ │ │ │ ├── rate_limit_filter.rst │ │ │ ├── router_filter.rst │ │ │ └── thrift_filters.rst │ │ ├── overview/ │ │ │ ├── bootstrap.rst │ │ │ ├── examples.rst │ │ │ ├── extension.rst │ │ │ ├── introduction.rst │ │ │ ├── mgmt_server.rst │ │ │ ├── overview.rst │ │ │ ├── versioning.rst │ │ │ └── xds_api.rst │ │ ├── security/ │ │ │ ├── secret.rst │ │ │ └── security.rst │ │ └── upstream/ │ │ ├── cluster_manager/ │ │ │ ├── cds.rst │ │ │ ├── cluster_circuit_breakers.rst │ │ │ ├── cluster_hc.rst │ │ │ ├── cluster_manager.rst │ │ │ ├── cluster_runtime.rst │ │ │ ├── cluster_stats.rst │ │ │ └── overview.rst │ │ ├── health_checkers/ │ │ │ ├── health_checkers.rst │ │ │ └── redis.rst │ │ └── upstream.rst │ ├── extending/ │ │ └── extending.rst │ ├── faq/ │ │ ├── api/ │ │ │ ├── control_plane.rst │ │ │ ├── control_plane_version_support.rst │ │ │ ├── envoy_upgrade_v3.rst │ │ │ ├── envoy_v2_support.rst │ │ │ ├── envoy_v3.rst │ │ │ ├── extensions.rst │ │ │ ├── incremental.rst │ │ │ ├── package_naming.rst │ │ │ └── why_versioning.rst │ │ ├── build/ │ │ │ ├── binaries.rst │ │ │ └── boringssl.rst │ │ ├── configuration/ │ │ │ ├── deprecation.rst │ │ │ ├── edge.rst │ │ │ ├── flow_control.rst │ │ │ ├── level_two.rst │ │ │ ├── resource_limits.rst │ │ │ ├── sni.rst │ │ │ ├── timeouts.rst │ │ │ ├── zipkin_tracing.rst │ │ │ └── zone_aware_routing.rst │ │ ├── debugging/ │ │ │ ├── why_is_envoy_404ing_connect_requests.rst │ │ │ ├── why_is_envoy_sending_413s.rst │ │ │ ├── why_is_envoy_sending_http2_resets.rst │ │ │ ├── why_is_envoy_sending_internal_responses.rst │ │ │ └── why_is_my_route_not_found.rst │ │ ├── extensions/ │ │ │ └── contract.rst │ │ ├── load_balancing/ │ │ │ ├── concurrency_lb.rst │ │ │ ├── disable_circuit_breaking.rst │ │ │ ├── lb_panic_threshold.rst │ │ │ ├── region_failover.rst │ │ │ └── transient_failures.rst │ │ ├── overview.rst │ │ └── performance/ │ │ ├── how_fast_is_envoy.rst │ │ └── how_to_benchmark_envoy.rst │ ├── index.rst │ ├── install/ │ │ ├── building.rst │ │ ├── install.rst │ │ ├── ref_configs.rst │ │ ├── sandboxes/ │ │ │ └── local_docker_build.rst │ │ └── tools/ │ │ ├── config_load_check_tool.rst │ │ ├── route_table_check_tool.rst │ │ ├── schema_validator_check_tool.rst │ │ └── tools.rst │ ├── intro/ │ │ ├── _include/ │ │ │ └── life-of-a-request.yaml │ │ ├── arch_overview/ │ │ │ ├── advanced/ │ │ │ │ ├── advanced.rst │ │ │ │ └── data_sharing_between_filters.rst │ │ │ ├── arch_overview.rst │ │ │ ├── http/ │ │ │ │ ├── http.rst │ │ │ │ ├── http_connection_management.rst │ │ │ │ ├── http_filters.rst │ │ │ │ ├── http_proxy.rst │ │ │ │ ├── http_routing.rst │ │ │ │ └── upgrades.rst │ │ │ ├── intro/ │ │ │ │ ├── intro.rst │ │ │ │ ├── terminology.rst │ │ │ │ └── threading_model.rst │ │ │ ├── listeners/ │ │ │ │ ├── dns_filter.rst │ │ │ │ ├── listener_filters.rst │ │ │ │ ├── listeners.rst │ │ │ │ ├── listeners_toc.rst │ │ │ │ ├── network_filters.rst │ │ │ │ ├── tcp_proxy.rst │ │ │ │ └── udp_proxy.rst │ │ │ ├── observability/ │ │ │ │ ├── access_logging.rst │ │ │ │ ├── observability.rst │ │ │ │ ├── statistics.rst │ │ │ │ └── tracing.rst │ │ │ ├── operations/ │ │ │ │ ├── draining.rst │ │ │ │ ├── dynamic_configuration.rst │ │ │ │ ├── hot_restart.rst │ │ │ │ ├── init.rst │ │ │ │ ├── operations.rst │ │ │ │ ├── overload_manager.rst │ │ │ │ └── runtime.rst │ │ │ ├── other_features/ │ │ │ │ ├── compression/ │ │ │ │ │ └── libraries.rst │ │ │ │ ├── global_rate_limiting.rst │ │ │ │ ├── ip_transparency.rst │ │ │ │ ├── local_rate_limiting.rst │ │ │ │ ├── other_features.rst │ │ │ │ └── scripting.rst │ │ │ ├── other_protocols/ │ │ │ │ ├── dynamo.rst │ │ │ │ ├── grpc.rst │ │ │ │ ├── mongo.rst │ │ │ │ ├── other_protocols.rst │ │ │ │ ├── postgres.rst │ │ │ │ └── redis.rst │ │ │ ├── security/ │ │ │ │ ├── _include/ │ │ │ │ │ └── ssl.yaml │ │ │ │ ├── ext_authz_filter.rst │ │ │ │ ├── external_deps.rst │ │ │ │ ├── google_vrp.rst │ │ │ │ ├── jwt_authn_filter.rst │ │ │ │ ├── rbac_filter.rst │ │ │ │ ├── security.rst │ │ │ │ ├── ssl.rst │ │ │ │ └── threat_model.rst │ │ │ └── upstream/ │ │ │ ├── aggregate_cluster.rst │ │ │ ├── circuit_breaking.rst │ │ │ ├── cluster_manager.rst │ │ │ ├── connection_pooling.rst │ │ │ ├── health_checking.rst │ │ │ ├── load_balancing/ │ │ │ │ ├── degraded.rst │ │ │ │ ├── load_balancers.rst │ │ │ │ ├── load_balancing.rst │ │ │ │ ├── locality_weight.rst │ │ │ │ ├── original_dst.rst │ │ │ │ ├── overprovisioning.rst │ │ │ │ ├── overview.rst │ │ │ │ ├── panic_threshold.rst │ │ │ │ ├── priority.rst │ │ │ │ ├── subsets.rst │ │ │ │ └── zone_aware.rst │ │ │ ├── load_reporting_service.rst │ │ │ ├── outlier.rst │ │ │ ├── service_discovery.rst │ │ │ ├── upstream.rst │ │ │ └── upstream_filters.rst │ │ ├── deployment_types/ │ │ │ ├── deployment_types.rst │ │ │ ├── double_proxy.rst │ │ │ ├── front_proxy.rst │ │ │ └── service_to_service.rst │ │ ├── deprecated.rst │ │ ├── getting_help.rst │ │ ├── intro.rst │ │ ├── life_of_a_request.rst │ │ ├── version_history.rst │ │ └── what_is_envoy.rst │ ├── operations/ │ │ ├── admin.rst │ │ ├── certificates.rst │ │ ├── cli.rst │ │ ├── fs_flags.rst │ │ ├── hot_restarter.rst │ │ ├── operations.rst │ │ ├── performance.rst │ │ ├── runtime.rst │ │ ├── stats_overview.rst │ │ └── traffic_tapping.rst │ ├── start/ │ │ ├── sandboxes/ │ │ │ ├── _include/ │ │ │ │ └── docker-env-setup.rst │ │ │ ├── cache.rst │ │ │ ├── cors.rst │ │ │ ├── csrf.rst │ │ │ ├── ext_authz.rst │ │ │ ├── fault_injection.rst │ │ │ ├── front_proxy.rst │ │ │ ├── grpc_bridge.rst │ │ │ ├── jaeger_native_tracing.rst │ │ │ ├── jaeger_tracing.rst │ │ │ ├── load_reporting_service.rst │ │ │ ├── lua.rst │ │ │ ├── mysql.rst │ │ │ ├── redis.rst │ │ │ └── zipkin_tracing.rst │ │ └── start.rst │ └── version_history/ │ ├── current.rst │ ├── v1.0.0.rst │ ├── v1.1.0.rst │ ├── v1.10.0.rst │ ├── v1.11.0.rst │ ├── v1.11.1.rst │ ├── v1.11.2.rst │ ├── v1.12.0.rst │ ├── v1.12.1.rst │ ├── v1.12.2.rst │ ├── v1.12.3.rst │ ├── v1.12.4.rst │ ├── v1.12.5.rst │ ├── v1.12.6.rst │ ├── v1.12.7.rst │ ├── v1.13.0.rst │ ├── v1.13.1.rst │ ├── v1.13.2.rst │ ├── v1.13.3.rst │ ├── v1.13.4.rst │ ├── v1.13.5.rst │ ├── v1.13.6.rst │ ├── v1.14.0.rst │ ├── v1.14.1.rst │ ├── v1.14.2.rst │ ├── v1.14.3.rst │ ├── v1.14.4.rst │ ├── v1.14.5.rst │ ├── v1.15.0.rst │ ├── v1.15.1.rst │ ├── v1.15.2.rst │ ├── v1.2.0.rst │ ├── v1.3.0.rst │ ├── v1.4.0.rst │ ├── v1.5.0.rst │ ├── v1.6.0.rst │ ├── v1.7.0.rst │ ├── v1.8.0.rst │ ├── v1.9.0.rst │ ├── v1.9.1.rst │ └── version_history.rst ├── examples/ │ ├── BUILD │ ├── DEVELOPER.md │ ├── cache/ │ │ ├── Dockerfile-frontenvoy │ │ ├── Dockerfile-service │ │ ├── README.md │ │ ├── docker-compose.yaml │ │ ├── front-envoy.yaml │ │ ├── responses.yaml │ │ ├── service-envoy.yaml │ │ ├── service.py │ │ ├── start_service.sh │ │ └── verify.sh │ ├── cors/ │ │ ├── README.md │ │ ├── backend/ │ │ │ ├── Dockerfile-frontenvoy │ │ │ ├── Dockerfile-service │ │ │ ├── docker-compose.yaml │ │ │ ├── front-envoy.yaml │ │ │ ├── service-envoy.yaml │ │ │ ├── service.py │ │ │ └── start_service.sh │ │ ├── frontend/ │ │ │ ├── Dockerfile-frontenvoy │ │ │ ├── Dockerfile-service │ │ │ ├── docker-compose.yaml │ │ │ ├── front-envoy.yaml │ │ │ ├── index.html │ │ │ ├── service-envoy.yaml │ │ │ ├── service.py │ │ │ └── start_service.sh │ │ └── verify.sh │ ├── csrf/ │ │ ├── README.md │ │ ├── crosssite/ │ │ │ ├── Dockerfile-frontenvoy │ │ │ ├── Dockerfile-service │ │ │ ├── docker-compose.yml │ │ │ ├── front-envoy.yaml │ │ │ └── service.py │ │ ├── index.html │ │ ├── samesite/ │ │ │ ├── Dockerfile-frontenvoy │ │ │ ├── Dockerfile-service │ │ │ ├── docker-compose.yml │ │ │ ├── front-envoy.yaml │ │ │ └── service.py │ │ ├── service-envoy.yaml │ │ ├── start_service.sh │ │ └── verify.sh │ ├── ext_authz/ │ │ ├── Dockerfile-frontenvoy │ │ ├── README.md │ │ ├── auth/ │ │ │ ├── grpc-service/ │ │ │ │ ├── Dockerfile │ │ │ │ ├── Makefile │ │ │ │ ├── go.mod │ │ │ │ ├── go.sum │ │ │ │ ├── main.go │ │ │ │ └── pkg/ │ │ │ │ └── auth/ │ │ │ │ ├── users.go │ │ │ │ ├── v2/ │ │ │ │ │ └── auth.go │ │ │ │ └── v3/ │ │ │ │ └── auth.go │ │ │ ├── http-service/ │ │ │ │ ├── Dockerfile │ │ │ │ └── server.js │ │ │ └── users.json │ │ ├── config/ │ │ │ ├── grpc-service/ │ │ │ │ ├── v2.yaml │ │ │ │ └── v3.yaml │ │ │ ├── http-service.yaml │ │ │ └── opa-service/ │ │ │ ├── policy.rego │ │ │ └── v2.yaml │ │ ├── docker-compose.yaml │ │ ├── run_envoy.sh │ │ ├── upstream/ │ │ │ └── service/ │ │ │ ├── Dockerfile │ │ │ └── server.py │ │ ├── users.json │ │ └── verify.sh │ ├── fault-injection/ │ │ ├── .gitignore │ │ ├── Dockerfile-envoy │ │ ├── README.md │ │ ├── disable_abort_fault_injection.sh │ │ ├── disable_delay_fault_injection.sh │ │ ├── docker-compose.yaml │ │ ├── enable_abort_fault_injection.sh │ │ ├── enable_delay_fault_injection.sh │ │ ├── envoy.yaml │ │ ├── send_request.sh │ │ └── verify.sh │ ├── front-proxy/ │ │ ├── Dockerfile-frontenvoy │ │ ├── Dockerfile-jaeger-service │ │ ├── Dockerfile-service │ │ ├── README.md │ │ ├── docker-compose.yaml │ │ ├── front-envoy.yaml │ │ ├── service-envoy.yaml │ │ ├── service.py │ │ ├── start_service.sh │ │ └── verify.sh │ ├── grpc-bridge/ │ │ ├── .gitignore │ │ ├── Dockerfile-client │ │ ├── Dockerfile-server │ │ ├── README.md │ │ ├── client/ │ │ │ ├── Dockerfile │ │ │ ├── client.py │ │ │ ├── envoy-proxy.yaml │ │ │ ├── kv/ │ │ │ │ └── __init__.py │ │ │ └── requirements.txt │ │ ├── docker-compose-protos.yaml │ │ ├── docker-compose.yaml │ │ ├── protos/ │ │ │ └── kv.proto │ │ ├── server/ │ │ │ ├── Dockerfile │ │ │ ├── envoy-proxy.yaml │ │ │ ├── go.mod │ │ │ ├── go.sum │ │ │ ├── kv/ │ │ │ │ └── go.mod │ │ │ └── service.go │ │ └── verify.sh │ ├── jaeger-native-tracing/ │ │ ├── Dockerfile-frontenvoy │ │ ├── README.md │ │ ├── docker-compose.yaml │ │ ├── front-envoy-jaeger.yaml │ │ ├── install-jaeger-plugin.sh │ │ ├── service1-envoy-jaeger.yaml │ │ ├── service2-envoy-jaeger.yaml │ │ └── verify.sh │ ├── jaeger-tracing/ │ │ ├── Dockerfile-frontenvoy │ │ ├── README.md │ │ ├── docker-compose.yaml │ │ ├── front-envoy-jaeger.yaml │ │ ├── service1-envoy-jaeger.yaml │ │ ├── service2-envoy-jaeger.yaml │ │ └── verify.sh │ ├── load-reporting-service/ │ │ ├── Dockerfile-http-server │ │ ├── Dockerfile-lrs │ │ ├── README.md │ │ ├── docker-compose.yaml │ │ ├── go.mod │ │ ├── go.sum │ │ ├── http_server.py │ │ ├── main.go │ │ ├── send_requests.sh │ │ ├── server/ │ │ │ └── lrs_server.go │ │ ├── service-envoy-w-lrs.yaml │ │ ├── start_service.sh │ │ └── verify.sh │ ├── lua/ │ │ ├── Dockerfile-proxy │ │ ├── Dockerfile-web-service │ │ ├── README.md │ │ ├── docker-compose.yaml │ │ ├── envoy.yaml │ │ ├── lib/ │ │ │ └── mylibrary.lua │ │ └── verify.sh │ ├── mysql/ │ │ ├── Dockerfile-mysql │ │ ├── Dockerfile-proxy │ │ ├── README.md │ │ ├── docker-compose.yaml │ │ ├── envoy.yaml │ │ └── verify.sh │ ├── redis/ │ │ ├── Dockerfile-proxy │ │ ├── Dockerfile-redis │ │ ├── README.md │ │ ├── docker-compose.yaml │ │ ├── envoy.yaml │ │ └── verify.sh │ ├── verify-common.sh │ ├── wasm/ │ │ ├── BUILD │ │ ├── Dockerfile-proxy │ │ ├── Dockerfile-web-service │ │ ├── README.md │ │ ├── docker-compose.yaml │ │ ├── envoy.yaml │ │ ├── envoy_filter_http_wasm_example.cc │ │ └── verify.sh │ └── zipkin-tracing/ │ ├── Dockerfile-frontenvoy │ ├── README.md │ ├── docker-compose.yaml │ ├── front-envoy-zipkin.yaml │ ├── service1-envoy-zipkin.yaml │ ├── service2-envoy-zipkin.yaml │ └── verify.sh ├── generated_api_shadow/ │ ├── BUILD │ ├── README.md │ ├── bazel/ │ │ ├── BUILD │ │ ├── api_build_system.bzl │ │ ├── envoy_http_archive.bzl │ │ ├── external_proto_deps.bzl │ │ ├── repositories.bzl │ │ └── repository_locations.bzl │ └── envoy/ │ ├── admin/ │ │ ├── v2alpha/ │ │ │ ├── BUILD │ │ │ ├── certs.proto │ │ │ ├── clusters.proto │ │ │ ├── config_dump.proto │ │ │ ├── listeners.proto │ │ │ ├── memory.proto │ │ │ ├── metrics.proto │ │ │ ├── mutex_stats.proto │ │ │ ├── server_info.proto │ │ │ └── tap.proto │ │ ├── v3/ │ │ │ ├── BUILD │ │ │ ├── certs.proto │ │ │ ├── clusters.proto │ │ │ ├── config_dump.proto │ │ │ ├── init_dump.proto │ │ │ ├── listeners.proto │ │ │ ├── memory.proto │ │ │ ├── metrics.proto │ │ │ ├── mutex_stats.proto │ │ │ ├── server_info.proto │ │ │ └── tap.proto │ │ └── v4alpha/ │ │ ├── BUILD │ │ ├── certs.proto │ │ ├── clusters.proto │ │ ├── config_dump.proto │ │ ├── init_dump.proto │ │ ├── listeners.proto │ │ ├── memory.proto │ │ ├── metrics.proto │ │ ├── mutex_stats.proto │ │ ├── server_info.proto │ │ └── tap.proto │ ├── annotations/ │ │ ├── BUILD │ │ ├── deprecation.proto │ │ └── resource.proto │ ├── api/ │ │ └── v2/ │ │ ├── BUILD │ │ ├── README.md │ │ ├── auth/ │ │ │ ├── BUILD │ │ │ ├── cert.proto │ │ │ ├── common.proto │ │ │ ├── secret.proto │ │ │ └── tls.proto │ │ ├── cds.proto │ │ ├── cluster/ │ │ │ ├── BUILD │ │ │ ├── circuit_breaker.proto │ │ │ ├── filter.proto │ │ │ └── outlier_detection.proto │ │ ├── cluster.proto │ │ ├── core/ │ │ │ ├── BUILD │ │ │ ├── address.proto │ │ │ ├── backoff.proto │ │ │ ├── base.proto │ │ │ ├── config_source.proto │ │ │ ├── event_service_config.proto │ │ │ ├── grpc_method_list.proto │ │ │ ├── grpc_service.proto │ │ │ ├── health_check.proto │ │ │ ├── http_uri.proto │ │ │ ├── protocol.proto │ │ │ └── socket_option.proto │ │ ├── discovery.proto │ │ ├── eds.proto │ │ ├── endpoint/ │ │ │ ├── BUILD │ │ │ ├── endpoint.proto │ │ │ ├── endpoint_components.proto │ │ │ └── load_report.proto │ │ ├── endpoint.proto │ │ ├── lds.proto │ │ ├── listener/ │ │ │ ├── BUILD │ │ │ ├── listener.proto │ │ │ ├── listener_components.proto │ │ │ ├── quic_config.proto │ │ │ └── udp_listener_config.proto │ │ ├── listener.proto │ │ ├── ratelimit/ │ │ │ ├── BUILD │ │ │ └── ratelimit.proto │ │ ├── rds.proto │ │ ├── route/ │ │ │ ├── BUILD │ │ │ ├── route.proto │ │ │ └── route_components.proto │ │ ├── route.proto │ │ ├── scoped_route.proto │ │ └── srds.proto │ ├── config/ │ │ ├── README.md │ │ ├── accesslog/ │ │ │ ├── v2/ │ │ │ │ ├── BUILD │ │ │ │ ├── als.proto │ │ │ │ └── file.proto │ │ │ ├── v3/ │ │ │ │ ├── BUILD │ │ │ │ └── accesslog.proto │ │ │ └── v4alpha/ │ │ │ ├── BUILD │ │ │ └── accesslog.proto │ │ ├── bootstrap/ │ │ │ ├── v2/ │ │ │ │ ├── BUILD │ │ │ │ └── bootstrap.proto │ │ │ ├── v3/ │ │ │ │ ├── BUILD │ │ │ │ └── bootstrap.proto │ │ │ └── v4alpha/ │ │ │ ├── BUILD │ │ │ └── bootstrap.proto │ │ ├── cluster/ │ │ │ ├── aggregate/ │ │ │ │ └── v2alpha/ │ │ │ │ ├── BUILD │ │ │ │ └── cluster.proto │ │ │ ├── dynamic_forward_proxy/ │ │ │ │ └── v2alpha/ │ │ │ │ ├── BUILD │ │ │ │ └── cluster.proto │ │ │ ├── redis/ │ │ │ │ ├── BUILD │ │ │ │ └── redis_cluster.proto │ │ │ ├── v3/ │ │ │ │ ├── BUILD │ │ │ │ ├── circuit_breaker.proto │ │ │ │ ├── cluster.proto │ │ │ │ ├── filter.proto │ │ │ │ └── outlier_detection.proto │ │ │ └── v4alpha/ │ │ │ ├── BUILD │ │ │ ├── circuit_breaker.proto │ │ │ ├── cluster.proto │ │ │ ├── filter.proto │ │ │ └── outlier_detection.proto │ │ ├── common/ │ │ │ ├── dynamic_forward_proxy/ │ │ │ │ └── v2alpha/ │ │ │ │ ├── BUILD │ │ │ │ └── dns_cache.proto │ │ │ ├── matcher/ │ │ │ │ ├── v3/ │ │ │ │ │ ├── BUILD │ │ │ │ │ └── matcher.proto │ │ │ │ └── v4alpha/ │ │ │ │ ├── BUILD │ │ │ │ └── matcher.proto │ │ │ └── tap/ │ │ │ └── v2alpha/ │ │ │ ├── BUILD │ │ │ └── common.proto │ │ ├── core/ │ │ │ ├── v3/ │ │ │ │ ├── BUILD │ │ │ │ ├── address.proto │ │ │ │ ├── backoff.proto │ │ │ │ ├── base.proto │ │ │ │ ├── config_source.proto │ │ │ │ ├── event_service_config.proto │ │ │ │ ├── extension.proto │ │ │ │ ├── grpc_method_list.proto │ │ │ │ ├── grpc_service.proto │ │ │ │ ├── health_check.proto │ │ │ │ ├── http_uri.proto │ │ │ │ ├── protocol.proto │ │ │ │ ├── proxy_protocol.proto │ │ │ │ ├── socket_option.proto │ │ │ │ └── substitution_format_string.proto │ │ │ └── v4alpha/ │ │ │ ├── BUILD │ │ │ ├── address.proto │ │ │ ├── backoff.proto │ │ │ ├── base.proto │ │ │ ├── config_source.proto │ │ │ ├── event_service_config.proto │ │ │ ├── extension.proto │ │ │ ├── grpc_method_list.proto │ │ │ ├── grpc_service.proto │ │ │ ├── health_check.proto │ │ │ ├── http_uri.proto │ │ │ ├── protocol.proto │ │ │ ├── proxy_protocol.proto │ │ │ ├── socket_option.proto │ │ │ └── substitution_format_string.proto │ │ ├── endpoint/ │ │ │ └── v3/ │ │ │ ├── BUILD │ │ │ ├── endpoint.proto │ │ │ ├── endpoint_components.proto │ │ │ └── load_report.proto │ │ ├── filter/ │ │ │ ├── README.md │ │ │ ├── accesslog/ │ │ │ │ └── v2/ │ │ │ │ ├── BUILD │ │ │ │ └── accesslog.proto │ │ │ ├── dubbo/ │ │ │ │ └── router/ │ │ │ │ └── v2alpha1/ │ │ │ │ ├── BUILD │ │ │ │ └── router.proto │ │ │ ├── fault/ │ │ │ │ └── v2/ │ │ │ │ ├── BUILD │ │ │ │ └── fault.proto │ │ │ ├── http/ │ │ │ │ ├── adaptive_concurrency/ │ │ │ │ │ └── v2alpha/ │ │ │ │ │ ├── BUILD │ │ │ │ │ └── adaptive_concurrency.proto │ │ │ │ ├── aws_lambda/ │ │ │ │ │ └── v2alpha/ │ │ │ │ │ ├── BUILD │ │ │ │ │ └── aws_lambda.proto │ │ │ │ ├── aws_request_signing/ │ │ │ │ │ └── v2alpha/ │ │ │ │ │ ├── BUILD │ │ │ │ │ └── aws_request_signing.proto │ │ │ │ ├── buffer/ │ │ │ │ │ └── v2/ │ │ │ │ │ ├── BUILD │ │ │ │ │ └── buffer.proto │ │ │ │ ├── cache/ │ │ │ │ │ └── v2alpha/ │ │ │ │ │ ├── BUILD │ │ │ │ │ └── cache.proto │ │ │ │ ├── compressor/ │ │ │ │ │ └── v2/ │ │ │ │ │ ├── BUILD │ │ │ │ │ └── compressor.proto │ │ │ │ ├── cors/ │ │ │ │ │ └── v2/ │ │ │ │ │ ├── BUILD │ │ │ │ │ └── cors.proto │ │ │ │ ├── csrf/ │ │ │ │ │ └── v2/ │ │ │ │ │ ├── BUILD │ │ │ │ │ └── csrf.proto │ │ │ │ ├── dynamic_forward_proxy/ │ │ │ │ │ └── v2alpha/ │ │ │ │ │ ├── BUILD │ │ │ │ │ └── dynamic_forward_proxy.proto │ │ │ │ ├── dynamo/ │ │ │ │ │ └── v2/ │ │ │ │ │ ├── BUILD │ │ │ │ │ └── dynamo.proto │ │ │ │ ├── ext_authz/ │ │ │ │ │ └── v2/ │ │ │ │ │ ├── BUILD │ │ │ │ │ └── ext_authz.proto │ │ │ │ ├── fault/ │ │ │ │ │ └── v2/ │ │ │ │ │ ├── BUILD │ │ │ │ │ └── fault.proto │ │ │ │ ├── grpc_http1_bridge/ │ │ │ │ │ └── v2/ │ │ │ │ │ ├── BUILD │ │ │ │ │ └── config.proto │ │ │ │ ├── grpc_http1_reverse_bridge/ │ │ │ │ │ └── v2alpha1/ │ │ │ │ │ ├── BUILD │ │ │ │ │ └── config.proto │ │ │ │ ├── grpc_stats/ │ │ │ │ │ └── v2alpha/ │ │ │ │ │ ├── BUILD │ │ │ │ │ └── config.proto │ │ │ │ ├── grpc_web/ │ │ │ │ │ └── v2/ │ │ │ │ │ ├── BUILD │ │ │ │ │ └── grpc_web.proto │ │ │ │ ├── gzip/ │ │ │ │ │ └── v2/ │ │ │ │ │ ├── BUILD │ │ │ │ │ └── gzip.proto │ │ │ │ ├── header_to_metadata/ │ │ │ │ │ └── v2/ │ │ │ │ │ ├── BUILD │ │ │ │ │ └── header_to_metadata.proto │ │ │ │ ├── health_check/ │ │ │ │ │ └── v2/ │ │ │ │ │ ├── BUILD │ │ │ │ │ └── health_check.proto │ │ │ │ ├── ip_tagging/ │ │ │ │ │ └── v2/ │ │ │ │ │ ├── BUILD │ │ │ │ │ └── ip_tagging.proto │ │ │ │ ├── jwt_authn/ │ │ │ │ │ └── v2alpha/ │ │ │ │ │ ├── BUILD │ │ │ │ │ ├── README.md │ │ │ │ │ └── config.proto │ │ │ │ ├── lua/ │ │ │ │ │ └── v2/ │ │ │ │ │ ├── BUILD │ │ │ │ │ └── lua.proto │ │ │ │ ├── on_demand/ │ │ │ │ │ └── v2/ │ │ │ │ │ ├── BUILD │ │ │ │ │ └── on_demand.proto │ │ │ │ ├── original_src/ │ │ │ │ │ └── v2alpha1/ │ │ │ │ │ ├── BUILD │ │ │ │ │ └── original_src.proto │ │ │ │ ├── rate_limit/ │ │ │ │ │ └── v2/ │ │ │ │ │ ├── BUILD │ │ │ │ │ └── rate_limit.proto │ │ │ │ ├── rbac/ │ │ │ │ │ └── v2/ │ │ │ │ │ ├── BUILD │ │ │ │ │ └── rbac.proto │ │ │ │ ├── router/ │ │ │ │ │ └── v2/ │ │ │ │ │ ├── BUILD │ │ │ │ │ └── router.proto │ │ │ │ ├── squash/ │ │ │ │ │ └── v2/ │ │ │ │ │ ├── BUILD │ │ │ │ │ └── squash.proto │ │ │ │ ├── tap/ │ │ │ │ │ └── v2alpha/ │ │ │ │ │ ├── BUILD │ │ │ │ │ └── tap.proto │ │ │ │ └── transcoder/ │ │ │ │ └── v2/ │ │ │ │ ├── BUILD │ │ │ │ └── transcoder.proto │ │ │ ├── listener/ │ │ │ │ ├── http_inspector/ │ │ │ │ │ └── v2/ │ │ │ │ │ ├── BUILD │ │ │ │ │ └── http_inspector.proto │ │ │ │ ├── original_dst/ │ │ │ │ │ └── v2/ │ │ │ │ │ ├── BUILD │ │ │ │ │ └── original_dst.proto │ │ │ │ ├── original_src/ │ │ │ │ │ └── v2alpha1/ │ │ │ │ │ ├── BUILD │ │ │ │ │ └── original_src.proto │ │ │ │ ├── proxy_protocol/ │ │ │ │ │ └── v2/ │ │ │ │ │ ├── BUILD │ │ │ │ │ └── proxy_protocol.proto │ │ │ │ └── tls_inspector/ │ │ │ │ └── v2/ │ │ │ │ ├── BUILD │ │ │ │ └── tls_inspector.proto │ │ │ ├── network/ │ │ │ │ ├── client_ssl_auth/ │ │ │ │ │ └── v2/ │ │ │ │ │ ├── BUILD │ │ │ │ │ └── client_ssl_auth.proto │ │ │ │ ├── direct_response/ │ │ │ │ │ └── v2/ │ │ │ │ │ ├── BUILD │ │ │ │ │ └── config.proto │ │ │ │ ├── dubbo_proxy/ │ │ │ │ │ └── v2alpha1/ │ │ │ │ │ ├── BUILD │ │ │ │ │ ├── README.md │ │ │ │ │ ├── dubbo_proxy.proto │ │ │ │ │ └── route.proto │ │ │ │ ├── echo/ │ │ │ │ │ └── v2/ │ │ │ │ │ ├── BUILD │ │ │ │ │ └── echo.proto │ │ │ │ ├── ext_authz/ │ │ │ │ │ └── v2/ │ │ │ │ │ ├── BUILD │ │ │ │ │ └── ext_authz.proto │ │ │ │ ├── http_connection_manager/ │ │ │ │ │ └── v2/ │ │ │ │ │ ├── BUILD │ │ │ │ │ └── http_connection_manager.proto │ │ │ │ ├── kafka_broker/ │ │ │ │ │ └── v2alpha1/ │ │ │ │ │ ├── BUILD │ │ │ │ │ └── kafka_broker.proto │ │ │ │ ├── local_rate_limit/ │ │ │ │ │ └── v2alpha/ │ │ │ │ │ ├── BUILD │ │ │ │ │ └── local_rate_limit.proto │ │ │ │ ├── mongo_proxy/ │ │ │ │ │ └── v2/ │ │ │ │ │ ├── BUILD │ │ │ │ │ └── mongo_proxy.proto │ │ │ │ ├── mysql_proxy/ │ │ │ │ │ └── v1alpha1/ │ │ │ │ │ ├── BUILD │ │ │ │ │ └── mysql_proxy.proto │ │ │ │ ├── rate_limit/ │ │ │ │ │ └── v2/ │ │ │ │ │ ├── BUILD │ │ │ │ │ └── rate_limit.proto │ │ │ │ ├── rbac/ │ │ │ │ │ └── v2/ │ │ │ │ │ ├── BUILD │ │ │ │ │ └── rbac.proto │ │ │ │ ├── redis_proxy/ │ │ │ │ │ └── v2/ │ │ │ │ │ ├── BUILD │ │ │ │ │ └── redis_proxy.proto │ │ │ │ ├── sni_cluster/ │ │ │ │ │ └── v2/ │ │ │ │ │ ├── BUILD │ │ │ │ │ └── sni_cluster.proto │ │ │ │ ├── tcp_proxy/ │ │ │ │ │ └── v2/ │ │ │ │ │ ├── BUILD │ │ │ │ │ └── tcp_proxy.proto │ │ │ │ ├── thrift_proxy/ │ │ │ │ │ └── v2alpha1/ │ │ │ │ │ ├── BUILD │ │ │ │ │ ├── README.md │ │ │ │ │ ├── route.proto │ │ │ │ │ └── thrift_proxy.proto │ │ │ │ └── zookeeper_proxy/ │ │ │ │ └── v1alpha1/ │ │ │ │ ├── BUILD │ │ │ │ └── zookeeper_proxy.proto │ │ │ ├── thrift/ │ │ │ │ ├── rate_limit/ │ │ │ │ │ └── v2alpha1/ │ │ │ │ │ ├── BUILD │ │ │ │ │ └── rate_limit.proto │ │ │ │ └── router/ │ │ │ │ └── v2alpha1/ │ │ │ │ ├── BUILD │ │ │ │ └── router.proto │ │ │ └── udp/ │ │ │ └── udp_proxy/ │ │ │ └── v2alpha/ │ │ │ ├── BUILD │ │ │ └── udp_proxy.proto │ │ ├── grpc_credential/ │ │ │ ├── v2alpha/ │ │ │ │ ├── BUILD │ │ │ │ ├── aws_iam.proto │ │ │ │ └── file_based_metadata.proto │ │ │ └── v3/ │ │ │ ├── BUILD │ │ │ ├── aws_iam.proto │ │ │ └── file_based_metadata.proto │ │ ├── health_checker/ │ │ │ └── redis/ │ │ │ └── v2/ │ │ │ ├── BUILD │ │ │ └── redis.proto │ │ ├── listener/ │ │ │ ├── v2/ │ │ │ │ ├── BUILD │ │ │ │ └── api_listener.proto │ │ │ ├── v3/ │ │ │ │ ├── BUILD │ │ │ │ ├── api_listener.proto │ │ │ │ ├── listener.proto │ │ │ │ ├── listener_components.proto │ │ │ │ ├── quic_config.proto │ │ │ │ ├── udp_default_writer_config.proto │ │ │ │ ├── udp_gso_batch_writer_config.proto │ │ │ │ └── udp_listener_config.proto │ │ │ └── v4alpha/ │ │ │ ├── BUILD │ │ │ ├── api_listener.proto │ │ │ ├── listener.proto │ │ │ ├── listener_components.proto │ │ │ ├── quic_config.proto │ │ │ ├── udp_default_writer_config.proto │ │ │ ├── udp_gso_batch_writer_config.proto │ │ │ └── udp_listener_config.proto │ │ ├── metrics/ │ │ │ ├── v2/ │ │ │ │ ├── BUILD │ │ │ │ ├── metrics_service.proto │ │ │ │ └── stats.proto │ │ │ ├── v3/ │ │ │ │ ├── BUILD │ │ │ │ ├── metrics_service.proto │ │ │ │ └── stats.proto │ │ │ └── v4alpha/ │ │ │ ├── BUILD │ │ │ ├── metrics_service.proto │ │ │ └── stats.proto │ │ ├── overload/ │ │ │ ├── v2alpha/ │ │ │ │ ├── BUILD │ │ │ │ └── overload.proto │ │ │ └── v3/ │ │ │ ├── BUILD │ │ │ └── overload.proto │ │ ├── ratelimit/ │ │ │ ├── v2/ │ │ │ │ ├── BUILD │ │ │ │ └── rls.proto │ │ │ └── v3/ │ │ │ ├── BUILD │ │ │ └── rls.proto │ │ ├── rbac/ │ │ │ ├── v2/ │ │ │ │ ├── BUILD │ │ │ │ └── rbac.proto │ │ │ ├── v3/ │ │ │ │ ├── BUILD │ │ │ │ └── rbac.proto │ │ │ └── v4alpha/ │ │ │ ├── BUILD │ │ │ └── rbac.proto │ │ ├── resource_monitor/ │ │ │ ├── fixed_heap/ │ │ │ │ └── v2alpha/ │ │ │ │ ├── BUILD │ │ │ │ └── fixed_heap.proto │ │ │ └── injected_resource/ │ │ │ └── v2alpha/ │ │ │ ├── BUILD │ │ │ └── injected_resource.proto │ │ ├── retry/ │ │ │ ├── omit_canary_hosts/ │ │ │ │ └── v2/ │ │ │ │ ├── BUILD │ │ │ │ └── omit_canary_hosts.proto │ │ │ ├── omit_host_metadata/ │ │ │ │ └── v2/ │ │ │ │ ├── BUILD │ │ │ │ └── omit_host_metadata_config.proto │ │ │ ├── previous_hosts/ │ │ │ │ └── v2/ │ │ │ │ ├── BUILD │ │ │ │ └── previous_hosts.proto │ │ │ └── previous_priorities/ │ │ │ ├── BUILD │ │ │ └── previous_priorities_config.proto │ │ ├── route/ │ │ │ ├── v3/ │ │ │ │ ├── BUILD │ │ │ │ ├── route.proto │ │ │ │ ├── route_components.proto │ │ │ │ └── scoped_route.proto │ │ │ └── v4alpha/ │ │ │ ├── BUILD │ │ │ ├── route.proto │ │ │ ├── route_components.proto │ │ │ └── scoped_route.proto │ │ ├── tap/ │ │ │ ├── v3/ │ │ │ │ ├── BUILD │ │ │ │ └── common.proto │ │ │ └── v4alpha/ │ │ │ ├── BUILD │ │ │ └── common.proto │ │ ├── trace/ │ │ │ ├── v2/ │ │ │ │ ├── BUILD │ │ │ │ ├── datadog.proto │ │ │ │ ├── dynamic_ot.proto │ │ │ │ ├── http_tracer.proto │ │ │ │ ├── lightstep.proto │ │ │ │ ├── opencensus.proto │ │ │ │ ├── service.proto │ │ │ │ ├── trace.proto │ │ │ │ └── zipkin.proto │ │ │ ├── v2alpha/ │ │ │ │ ├── BUILD │ │ │ │ └── xray.proto │ │ │ ├── v3/ │ │ │ │ ├── BUILD │ │ │ │ ├── datadog.proto │ │ │ │ ├── dynamic_ot.proto │ │ │ │ ├── http_tracer.proto │ │ │ │ ├── lightstep.proto │ │ │ │ ├── opencensus.proto │ │ │ │ ├── service.proto │ │ │ │ ├── trace.proto │ │ │ │ ├── xray.proto │ │ │ │ └── zipkin.proto │ │ │ └── v4alpha/ │ │ │ ├── BUILD │ │ │ ├── http_tracer.proto │ │ │ └── service.proto │ │ └── transport_socket/ │ │ ├── alts/ │ │ │ └── v2alpha/ │ │ │ ├── BUILD │ │ │ └── alts.proto │ │ ├── raw_buffer/ │ │ │ └── v2/ │ │ │ ├── BUILD │ │ │ └── raw_buffer.proto │ │ └── tap/ │ │ └── v2alpha/ │ │ ├── BUILD │ │ └── tap.proto │ ├── data/ │ │ ├── accesslog/ │ │ │ ├── v2/ │ │ │ │ ├── BUILD │ │ │ │ └── accesslog.proto │ │ │ └── v3/ │ │ │ ├── BUILD │ │ │ └── accesslog.proto │ │ ├── cluster/ │ │ │ ├── v2alpha/ │ │ │ │ ├── BUILD │ │ │ │ └── outlier_detection_event.proto │ │ │ └── v3/ │ │ │ ├── BUILD │ │ │ └── outlier_detection_event.proto │ │ ├── core/ │ │ │ ├── v2alpha/ │ │ │ │ ├── BUILD │ │ │ │ └── health_check_event.proto │ │ │ └── v3/ │ │ │ ├── BUILD │ │ │ └── health_check_event.proto │ │ ├── dns/ │ │ │ ├── v2alpha/ │ │ │ │ ├── BUILD │ │ │ │ └── dns_table.proto │ │ │ ├── v3/ │ │ │ │ ├── BUILD │ │ │ │ └── dns_table.proto │ │ │ └── v4alpha/ │ │ │ ├── BUILD │ │ │ └── dns_table.proto │ │ └── tap/ │ │ ├── v2alpha/ │ │ │ ├── BUILD │ │ │ ├── common.proto │ │ │ ├── http.proto │ │ │ ├── transport.proto │ │ │ └── wrapper.proto │ │ └── v3/ │ │ ├── BUILD │ │ ├── common.proto │ │ ├── http.proto │ │ ├── transport.proto │ │ └── wrapper.proto │ ├── extensions/ │ │ ├── access_loggers/ │ │ │ ├── file/ │ │ │ │ ├── v3/ │ │ │ │ │ ├── BUILD │ │ │ │ │ └── file.proto │ │ │ │ └── v4alpha/ │ │ │ │ ├── BUILD │ │ │ │ └── file.proto │ │ │ ├── grpc/ │ │ │ │ └── v3/ │ │ │ │ ├── BUILD │ │ │ │ └── als.proto │ │ │ └── wasm/ │ │ │ └── v3/ │ │ │ ├── BUILD │ │ │ └── wasm.proto │ │ ├── clusters/ │ │ │ ├── aggregate/ │ │ │ │ └── v3/ │ │ │ │ ├── BUILD │ │ │ │ └── cluster.proto │ │ │ ├── dynamic_forward_proxy/ │ │ │ │ └── v3/ │ │ │ │ ├── BUILD │ │ │ │ └── cluster.proto │ │ │ └── redis/ │ │ │ └── v3/ │ │ │ ├── BUILD │ │ │ └── redis_cluster.proto │ │ ├── common/ │ │ │ ├── dynamic_forward_proxy/ │ │ │ │ └── v3/ │ │ │ │ ├── BUILD │ │ │ │ └── dns_cache.proto │ │ │ ├── ratelimit/ │ │ │ │ └── v3/ │ │ │ │ ├── BUILD │ │ │ │ └── ratelimit.proto │ │ │ └── tap/ │ │ │ ├── v3/ │ │ │ │ ├── BUILD │ │ │ │ └── common.proto │ │ │ └── v4alpha/ │ │ │ ├── BUILD │ │ │ └── common.proto │ │ ├── compression/ │ │ │ └── gzip/ │ │ │ ├── compressor/ │ │ │ │ └── v3/ │ │ │ │ ├── BUILD │ │ │ │ └── gzip.proto │ │ │ └── decompressor/ │ │ │ └── v3/ │ │ │ ├── BUILD │ │ │ └── gzip.proto │ │ ├── filters/ │ │ │ ├── common/ │ │ │ │ └── fault/ │ │ │ │ └── v3/ │ │ │ │ ├── BUILD │ │ │ │ └── fault.proto │ │ │ ├── http/ │ │ │ │ ├── adaptive_concurrency/ │ │ │ │ │ └── v3/ │ │ │ │ │ ├── BUILD │ │ │ │ │ └── adaptive_concurrency.proto │ │ │ │ ├── admission_control/ │ │ │ │ │ └── v3alpha/ │ │ │ │ │ ├── BUILD │ │ │ │ │ └── admission_control.proto │ │ │ │ ├── aws_lambda/ │ │ │ │ │ └── v3/ │ │ │ │ │ ├── BUILD │ │ │ │ │ └── aws_lambda.proto │ │ │ │ ├── aws_request_signing/ │ │ │ │ │ └── v3/ │ │ │ │ │ ├── BUILD │ │ │ │ │ └── aws_request_signing.proto │ │ │ │ ├── buffer/ │ │ │ │ │ └── v3/ │ │ │ │ │ ├── BUILD │ │ │ │ │ └── buffer.proto │ │ │ │ ├── cache/ │ │ │ │ │ ├── v3alpha/ │ │ │ │ │ │ ├── BUILD │ │ │ │ │ │ └── cache.proto │ │ │ │ │ └── v4alpha/ │ │ │ │ │ ├── BUILD │ │ │ │ │ └── cache.proto │ │ │ │ ├── cdn_loop/ │ │ │ │ │ └── v3alpha/ │ │ │ │ │ ├── BUILD │ │ │ │ │ └── cdn_loop.proto │ │ │ │ ├── compressor/ │ │ │ │ │ └── v3/ │ │ │ │ │ ├── BUILD │ │ │ │ │ └── compressor.proto │ │ │ │ ├── cors/ │ │ │ │ │ └── v3/ │ │ │ │ │ ├── BUILD │ │ │ │ │ └── cors.proto │ │ │ │ ├── csrf/ │ │ │ │ │ ├── v3/ │ │ │ │ │ │ ├── BUILD │ │ │ │ │ │ └── csrf.proto │ │ │ │ │ └── v4alpha/ │ │ │ │ │ ├── BUILD │ │ │ │ │ └── csrf.proto │ │ │ │ ├── decompressor/ │ │ │ │ │ └── v3/ │ │ │ │ │ ├── BUILD │ │ │ │ │ └── decompressor.proto │ │ │ │ ├── dynamic_forward_proxy/ │ │ │ │ │ └── v3/ │ │ │ │ │ ├── BUILD │ │ │ │ │ └── dynamic_forward_proxy.proto │ │ │ │ ├── dynamo/ │ │ │ │ │ └── v3/ │ │ │ │ │ ├── BUILD │ │ │ │ │ └── dynamo.proto │ │ │ │ ├── ext_authz/ │ │ │ │ │ ├── v3/ │ │ │ │ │ │ ├── BUILD │ │ │ │ │ │ └── ext_authz.proto │ │ │ │ │ └── v4alpha/ │ │ │ │ │ ├── BUILD │ │ │ │ │ └── ext_authz.proto │ │ │ │ ├── fault/ │ │ │ │ │ ├── v3/ │ │ │ │ │ │ ├── BUILD │ │ │ │ │ │ └── fault.proto │ │ │ │ │ └── v4alpha/ │ │ │ │ │ ├── BUILD │ │ │ │ │ └── fault.proto │ │ │ │ ├── grpc_http1_bridge/ │ │ │ │ │ └── v3/ │ │ │ │ │ ├── BUILD │ │ │ │ │ └── config.proto │ │ │ │ ├── grpc_http1_reverse_bridge/ │ │ │ │ │ └── v3/ │ │ │ │ │ ├── BUILD │ │ │ │ │ └── config.proto │ │ │ │ ├── grpc_json_transcoder/ │ │ │ │ │ └── v3/ │ │ │ │ │ ├── BUILD │ │ │ │ │ └── transcoder.proto │ │ │ │ ├── grpc_stats/ │ │ │ │ │ └── v3/ │ │ │ │ │ ├── BUILD │ │ │ │ │ └── config.proto │ │ │ │ ├── grpc_web/ │ │ │ │ │ └── v3/ │ │ │ │ │ ├── BUILD │ │ │ │ │ └── grpc_web.proto │ │ │ │ ├── gzip/ │ │ │ │ │ └── v3/ │ │ │ │ │ ├── BUILD │ │ │ │ │ └── gzip.proto │ │ │ │ ├── header_to_metadata/ │ │ │ │ │ ├── v3/ │ │ │ │ │ │ ├── BUILD │ │ │ │ │ │ └── header_to_metadata.proto │ │ │ │ │ └── v4alpha/ │ │ │ │ │ ├── BUILD │ │ │ │ │ └── header_to_metadata.proto │ │ │ │ ├── health_check/ │ │ │ │ │ ├── v3/ │ │ │ │ │ │ ├── BUILD │ │ │ │ │ │ └── health_check.proto │ │ │ │ │ └── v4alpha/ │ │ │ │ │ ├── BUILD │ │ │ │ │ └── health_check.proto │ │ │ │ ├── ip_tagging/ │ │ │ │ │ └── v3/ │ │ │ │ │ ├── BUILD │ │ │ │ │ └── ip_tagging.proto │ │ │ │ ├── jwt_authn/ │ │ │ │ │ ├── v3/ │ │ │ │ │ │ ├── BUILD │ │ │ │ │ │ └── config.proto │ │ │ │ │ └── v4alpha/ │ │ │ │ │ ├── BUILD │ │ │ │ │ └── config.proto │ │ │ │ ├── local_ratelimit/ │ │ │ │ │ └── v3/ │ │ │ │ │ ├── BUILD │ │ │ │ │ └── local_rate_limit.proto │ │ │ │ ├── lua/ │ │ │ │ │ └── v3/ │ │ │ │ │ ├── BUILD │ │ │ │ │ └── lua.proto │ │ │ │ ├── oauth2/ │ │ │ │ │ ├── v3alpha/ │ │ │ │ │ │ ├── BUILD │ │ │ │ │ │ └── oauth.proto │ │ │ │ │ └── v4alpha/ │ │ │ │ │ ├── BUILD │ │ │ │ │ └── oauth.proto │ │ │ │ ├── on_demand/ │ │ │ │ │ └── v3/ │ │ │ │ │ ├── BUILD │ │ │ │ │ └── on_demand.proto │ │ │ │ ├── original_src/ │ │ │ │ │ └── v3/ │ │ │ │ │ ├── BUILD │ │ │ │ │ └── original_src.proto │ │ │ │ ├── ratelimit/ │ │ │ │ │ └── v3/ │ │ │ │ │ ├── BUILD │ │ │ │ │ └── rate_limit.proto │ │ │ │ ├── rbac/ │ │ │ │ │ ├── v3/ │ │ │ │ │ │ ├── BUILD │ │ │ │ │ │ └── rbac.proto │ │ │ │ │ └── v4alpha/ │ │ │ │ │ ├── BUILD │ │ │ │ │ └── rbac.proto │ │ │ │ ├── router/ │ │ │ │ │ ├── v3/ │ │ │ │ │ │ ├── BUILD │ │ │ │ │ │ └── router.proto │ │ │ │ │ └── v4alpha/ │ │ │ │ │ ├── BUILD │ │ │ │ │ └── router.proto │ │ │ │ ├── squash/ │ │ │ │ │ └── v3/ │ │ │ │ │ ├── BUILD │ │ │ │ │ └── squash.proto │ │ │ │ ├── tap/ │ │ │ │ │ ├── v3/ │ │ │ │ │ │ ├── BUILD │ │ │ │ │ │ └── tap.proto │ │ │ │ │ └── v4alpha/ │ │ │ │ │ ├── BUILD │ │ │ │ │ └── tap.proto │ │ │ │ └── wasm/ │ │ │ │ └── v3/ │ │ │ │ ├── BUILD │ │ │ │ └── wasm.proto │ │ │ ├── listener/ │ │ │ │ ├── http_inspector/ │ │ │ │ │ └── v3/ │ │ │ │ │ ├── BUILD │ │ │ │ │ └── http_inspector.proto │ │ │ │ ├── original_dst/ │ │ │ │ │ └── v3/ │ │ │ │ │ ├── BUILD │ │ │ │ │ └── original_dst.proto │ │ │ │ ├── original_src/ │ │ │ │ │ └── v3/ │ │ │ │ │ ├── BUILD │ │ │ │ │ └── original_src.proto │ │ │ │ ├── proxy_protocol/ │ │ │ │ │ └── v3/ │ │ │ │ │ ├── BUILD │ │ │ │ │ └── proxy_protocol.proto │ │ │ │ └── tls_inspector/ │ │ │ │ └── v3/ │ │ │ │ ├── BUILD │ │ │ │ └── tls_inspector.proto │ │ │ ├── network/ │ │ │ │ ├── client_ssl_auth/ │ │ │ │ │ └── v3/ │ │ │ │ │ ├── BUILD │ │ │ │ │ └── client_ssl_auth.proto │ │ │ │ ├── direct_response/ │ │ │ │ │ └── v3/ │ │ │ │ │ ├── BUILD │ │ │ │ │ └── config.proto │ │ │ │ ├── dubbo_proxy/ │ │ │ │ │ ├── router/ │ │ │ │ │ │ └── v3/ │ │ │ │ │ │ ├── BUILD │ │ │ │ │ │ └── router.proto │ │ │ │ │ ├── v3/ │ │ │ │ │ │ ├── BUILD │ │ │ │ │ │ ├── dubbo_proxy.proto │ │ │ │ │ │ └── route.proto │ │ │ │ │ └── v4alpha/ │ │ │ │ │ ├── BUILD │ │ │ │ │ ├── dubbo_proxy.proto │ │ │ │ │ └── route.proto │ │ │ │ ├── echo/ │ │ │ │ │ └── v3/ │ │ │ │ │ ├── BUILD │ │ │ │ │ └── echo.proto │ │ │ │ ├── ext_authz/ │ │ │ │ │ ├── v3/ │ │ │ │ │ │ ├── BUILD │ │ │ │ │ │ └── ext_authz.proto │ │ │ │ │ └── v4alpha/ │ │ │ │ │ ├── BUILD │ │ │ │ │ └── ext_authz.proto │ │ │ │ ├── http_connection_manager/ │ │ │ │ │ ├── v3/ │ │ │ │ │ │ ├── BUILD │ │ │ │ │ │ └── http_connection_manager.proto │ │ │ │ │ └── v4alpha/ │ │ │ │ │ ├── BUILD │ │ │ │ │ └── http_connection_manager.proto │ │ │ │ ├── kafka_broker/ │ │ │ │ │ └── v3/ │ │ │ │ │ ├── BUILD │ │ │ │ │ └── kafka_broker.proto │ │ │ │ ├── local_ratelimit/ │ │ │ │ │ └── v3/ │ │ │ │ │ ├── BUILD │ │ │ │ │ └── local_rate_limit.proto │ │ │ │ ├── mongo_proxy/ │ │ │ │ │ └── v3/ │ │ │ │ │ ├── BUILD │ │ │ │ │ └── mongo_proxy.proto │ │ │ │ ├── mysql_proxy/ │ │ │ │ │ └── v3/ │ │ │ │ │ ├── BUILD │ │ │ │ │ └── mysql_proxy.proto │ │ │ │ ├── postgres_proxy/ │ │ │ │ │ └── v3alpha/ │ │ │ │ │ ├── BUILD │ │ │ │ │ └── postgres_proxy.proto │ │ │ │ ├── ratelimit/ │ │ │ │ │ └── v3/ │ │ │ │ │ ├── BUILD │ │ │ │ │ └── rate_limit.proto │ │ │ │ ├── rbac/ │ │ │ │ │ ├── v3/ │ │ │ │ │ │ ├── BUILD │ │ │ │ │ │ └── rbac.proto │ │ │ │ │ └── v4alpha/ │ │ │ │ │ ├── BUILD │ │ │ │ │ └── rbac.proto │ │ │ │ ├── redis_proxy/ │ │ │ │ │ └── v3/ │ │ │ │ │ ├── BUILD │ │ │ │ │ └── redis_proxy.proto │ │ │ │ ├── rocketmq_proxy/ │ │ │ │ │ ├── v3/ │ │ │ │ │ │ ├── BUILD │ │ │ │ │ │ ├── rocketmq_proxy.proto │ │ │ │ │ │ └── route.proto │ │ │ │ │ └── v4alpha/ │ │ │ │ │ ├── BUILD │ │ │ │ │ ├── rocketmq_proxy.proto │ │ │ │ │ └── route.proto │ │ │ │ ├── sni_cluster/ │ │ │ │ │ └── v3/ │ │ │ │ │ ├── BUILD │ │ │ │ │ └── sni_cluster.proto │ │ │ │ ├── sni_dynamic_forward_proxy/ │ │ │ │ │ └── v3alpha/ │ │ │ │ │ ├── BUILD │ │ │ │ │ └── sni_dynamic_forward_proxy.proto │ │ │ │ ├── tcp_proxy/ │ │ │ │ │ ├── v3/ │ │ │ │ │ │ ├── BUILD │ │ │ │ │ │ └── tcp_proxy.proto │ │ │ │ │ └── v4alpha/ │ │ │ │ │ ├── BUILD │ │ │ │ │ └── tcp_proxy.proto │ │ │ │ ├── thrift_proxy/ │ │ │ │ │ ├── filters/ │ │ │ │ │ │ └── ratelimit/ │ │ │ │ │ │ └── v3/ │ │ │ │ │ │ ├── BUILD │ │ │ │ │ │ └── rate_limit.proto │ │ │ │ │ ├── v3/ │ │ │ │ │ │ ├── BUILD │ │ │ │ │ │ ├── route.proto │ │ │ │ │ │ └── thrift_proxy.proto │ │ │ │ │ └── v4alpha/ │ │ │ │ │ ├── BUILD │ │ │ │ │ ├── route.proto │ │ │ │ │ └── thrift_proxy.proto │ │ │ │ ├── wasm/ │ │ │ │ │ └── v3/ │ │ │ │ │ ├── BUILD │ │ │ │ │ └── wasm.proto │ │ │ │ └── zookeeper_proxy/ │ │ │ │ └── v3/ │ │ │ │ ├── BUILD │ │ │ │ └── zookeeper_proxy.proto │ │ │ └── udp/ │ │ │ ├── dns_filter/ │ │ │ │ ├── v3alpha/ │ │ │ │ │ ├── BUILD │ │ │ │ │ └── dns_filter.proto │ │ │ │ └── v4alpha/ │ │ │ │ ├── BUILD │ │ │ │ └── dns_filter.proto │ │ │ └── udp_proxy/ │ │ │ └── v3/ │ │ │ ├── BUILD │ │ │ └── udp_proxy.proto │ │ ├── internal_redirect/ │ │ │ ├── allow_listed_routes/ │ │ │ │ └── v3/ │ │ │ │ ├── BUILD │ │ │ │ └── allow_listed_routes_config.proto │ │ │ ├── previous_routes/ │ │ │ │ └── v3/ │ │ │ │ ├── BUILD │ │ │ │ └── previous_routes_config.proto │ │ │ └── safe_cross_scheme/ │ │ │ └── v3/ │ │ │ ├── BUILD │ │ │ └── safe_cross_scheme_config.proto │ │ ├── network/ │ │ │ └── socket_interface/ │ │ │ └── v3/ │ │ │ ├── BUILD │ │ │ └── default_socket_interface.proto │ │ ├── retry/ │ │ │ ├── host/ │ │ │ │ └── omit_host_metadata/ │ │ │ │ └── v3/ │ │ │ │ ├── BUILD │ │ │ │ └── omit_host_metadata_config.proto │ │ │ └── priority/ │ │ │ └── previous_priorities/ │ │ │ └── v3/ │ │ │ ├── BUILD │ │ │ └── previous_priorities_config.proto │ │ ├── stat_sinks/ │ │ │ └── wasm/ │ │ │ └── v3/ │ │ │ ├── BUILD │ │ │ └── wasm.proto │ │ ├── tracers/ │ │ │ ├── datadog/ │ │ │ │ └── v4alpha/ │ │ │ │ ├── BUILD │ │ │ │ └── datadog.proto │ │ │ ├── dynamic_ot/ │ │ │ │ └── v4alpha/ │ │ │ │ ├── BUILD │ │ │ │ └── dynamic_ot.proto │ │ │ ├── lightstep/ │ │ │ │ └── v4alpha/ │ │ │ │ ├── BUILD │ │ │ │ └── lightstep.proto │ │ │ ├── opencensus/ │ │ │ │ └── v4alpha/ │ │ │ │ ├── BUILD │ │ │ │ └── opencensus.proto │ │ │ ├── xray/ │ │ │ │ └── v4alpha/ │ │ │ │ ├── BUILD │ │ │ │ └── xray.proto │ │ │ └── zipkin/ │ │ │ └── v4alpha/ │ │ │ ├── BUILD │ │ │ └── zipkin.proto │ │ ├── transport_sockets/ │ │ │ ├── alts/ │ │ │ │ └── v3/ │ │ │ │ ├── BUILD │ │ │ │ └── alts.proto │ │ │ ├── proxy_protocol/ │ │ │ │ └── v3/ │ │ │ │ ├── BUILD │ │ │ │ └── upstream_proxy_protocol.proto │ │ │ ├── quic/ │ │ │ │ ├── v3/ │ │ │ │ │ ├── BUILD │ │ │ │ │ └── quic_transport.proto │ │ │ │ └── v4alpha/ │ │ │ │ ├── BUILD │ │ │ │ └── quic_transport.proto │ │ │ ├── raw_buffer/ │ │ │ │ └── v3/ │ │ │ │ ├── BUILD │ │ │ │ └── raw_buffer.proto │ │ │ ├── tap/ │ │ │ │ ├── v3/ │ │ │ │ │ ├── BUILD │ │ │ │ │ └── tap.proto │ │ │ │ └── v4alpha/ │ │ │ │ ├── BUILD │ │ │ │ └── tap.proto │ │ │ └── tls/ │ │ │ ├── v3/ │ │ │ │ ├── BUILD │ │ │ │ ├── cert.proto │ │ │ │ ├── common.proto │ │ │ │ ├── secret.proto │ │ │ │ └── tls.proto │ │ │ └── v4alpha/ │ │ │ ├── BUILD │ │ │ ├── common.proto │ │ │ ├── secret.proto │ │ │ └── tls.proto │ │ ├── upstreams/ │ │ │ └── http/ │ │ │ ├── generic/ │ │ │ │ └── v3/ │ │ │ │ ├── BUILD │ │ │ │ └── generic_connection_pool.proto │ │ │ ├── http/ │ │ │ │ └── v3/ │ │ │ │ ├── BUILD │ │ │ │ └── http_connection_pool.proto │ │ │ └── tcp/ │ │ │ └── v3/ │ │ │ ├── BUILD │ │ │ └── tcp_connection_pool.proto │ │ ├── wasm/ │ │ │ └── v3/ │ │ │ ├── BUILD │ │ │ └── wasm.proto │ │ └── watchdog/ │ │ ├── abort_action/ │ │ │ └── v3alpha/ │ │ │ ├── BUILD │ │ │ └── abort_action.proto │ │ └── profile_action/ │ │ └── v3alpha/ │ │ ├── BUILD │ │ └── profile_action.proto │ ├── service/ │ │ ├── README.md │ │ ├── accesslog/ │ │ │ ├── v2/ │ │ │ │ ├── BUILD │ │ │ │ └── als.proto │ │ │ ├── v3/ │ │ │ │ ├── BUILD │ │ │ │ └── als.proto │ │ │ └── v4alpha/ │ │ │ ├── BUILD │ │ │ └── als.proto │ │ ├── auth/ │ │ │ ├── v2/ │ │ │ │ ├── BUILD │ │ │ │ ├── attribute_context.proto │ │ │ │ └── external_auth.proto │ │ │ ├── v2alpha/ │ │ │ │ ├── BUILD │ │ │ │ └── external_auth.proto │ │ │ ├── v3/ │ │ │ │ ├── BUILD │ │ │ │ ├── attribute_context.proto │ │ │ │ └── external_auth.proto │ │ │ └── v4alpha/ │ │ │ ├── BUILD │ │ │ ├── attribute_context.proto │ │ │ └── external_auth.proto │ │ ├── cluster/ │ │ │ └── v3/ │ │ │ ├── BUILD │ │ │ └── cds.proto │ │ ├── discovery/ │ │ │ ├── v2/ │ │ │ │ ├── BUILD │ │ │ │ ├── ads.proto │ │ │ │ ├── hds.proto │ │ │ │ ├── rtds.proto │ │ │ │ └── sds.proto │ │ │ ├── v3/ │ │ │ │ ├── BUILD │ │ │ │ ├── ads.proto │ │ │ │ └── discovery.proto │ │ │ └── v4alpha/ │ │ │ ├── BUILD │ │ │ ├── ads.proto │ │ │ └── discovery.proto │ │ ├── endpoint/ │ │ │ └── v3/ │ │ │ ├── BUILD │ │ │ └── eds.proto │ │ ├── event_reporting/ │ │ │ ├── v2alpha/ │ │ │ │ ├── BUILD │ │ │ │ └── event_reporting_service.proto │ │ │ ├── v3/ │ │ │ │ ├── BUILD │ │ │ │ └── event_reporting_service.proto │ │ │ └── v4alpha/ │ │ │ ├── BUILD │ │ │ └── event_reporting_service.proto │ │ ├── extension/ │ │ │ └── v3/ │ │ │ ├── BUILD │ │ │ └── config_discovery.proto │ │ ├── health/ │ │ │ ├── v3/ │ │ │ │ ├── BUILD │ │ │ │ └── hds.proto │ │ │ └── v4alpha/ │ │ │ ├── BUILD │ │ │ └── hds.proto │ │ ├── listener/ │ │ │ └── v3/ │ │ │ ├── BUILD │ │ │ └── lds.proto │ │ ├── load_stats/ │ │ │ ├── v2/ │ │ │ │ ├── BUILD │ │ │ │ └── lrs.proto │ │ │ ├── v3/ │ │ │ │ ├── BUILD │ │ │ │ └── lrs.proto │ │ │ └── v4alpha/ │ │ │ ├── BUILD │ │ │ └── lrs.proto │ │ ├── metrics/ │ │ │ ├── v2/ │ │ │ │ ├── BUILD │ │ │ │ └── metrics_service.proto │ │ │ ├── v3/ │ │ │ │ ├── BUILD │ │ │ │ └── metrics_service.proto │ │ │ └── v4alpha/ │ │ │ ├── BUILD │ │ │ └── metrics_service.proto │ │ ├── ratelimit/ │ │ │ ├── v2/ │ │ │ │ ├── BUILD │ │ │ │ └── rls.proto │ │ │ └── v3/ │ │ │ ├── BUILD │ │ │ └── rls.proto │ │ ├── route/ │ │ │ └── v3/ │ │ │ ├── BUILD │ │ │ ├── rds.proto │ │ │ └── srds.proto │ │ ├── runtime/ │ │ │ └── v3/ │ │ │ ├── BUILD │ │ │ └── rtds.proto │ │ ├── secret/ │ │ │ └── v3/ │ │ │ ├── BUILD │ │ │ └── sds.proto │ │ ├── status/ │ │ │ ├── v2/ │ │ │ │ ├── BUILD │ │ │ │ └── csds.proto │ │ │ ├── v3/ │ │ │ │ ├── BUILD │ │ │ │ └── csds.proto │ │ │ └── v4alpha/ │ │ │ ├── BUILD │ │ │ └── csds.proto │ │ ├── tap/ │ │ │ ├── v2alpha/ │ │ │ │ ├── BUILD │ │ │ │ ├── common.proto │ │ │ │ └── tap.proto │ │ │ ├── v3/ │ │ │ │ ├── BUILD │ │ │ │ └── tap.proto │ │ │ └── v4alpha/ │ │ │ ├── BUILD │ │ │ └── tap.proto │ │ └── trace/ │ │ ├── v2/ │ │ │ ├── BUILD │ │ │ └── trace_service.proto │ │ ├── v3/ │ │ │ ├── BUILD │ │ │ └── trace_service.proto │ │ └── v4alpha/ │ │ ├── BUILD │ │ └── trace_service.proto │ └── type/ │ ├── BUILD │ ├── hash_policy.proto │ ├── http.proto │ ├── http_status.proto │ ├── matcher/ │ │ ├── BUILD │ │ ├── metadata.proto │ │ ├── node.proto │ │ ├── number.proto │ │ ├── path.proto │ │ ├── regex.proto │ │ ├── string.proto │ │ ├── struct.proto │ │ ├── v3/ │ │ │ ├── BUILD │ │ │ ├── metadata.proto │ │ │ ├── node.proto │ │ │ ├── number.proto │ │ │ ├── path.proto │ │ │ ├── regex.proto │ │ │ ├── string.proto │ │ │ ├── struct.proto │ │ │ └── value.proto │ │ ├── v4alpha/ │ │ │ ├── BUILD │ │ │ ├── metadata.proto │ │ │ ├── node.proto │ │ │ ├── number.proto │ │ │ ├── path.proto │ │ │ ├── regex.proto │ │ │ ├── string.proto │ │ │ ├── struct.proto │ │ │ └── value.proto │ │ └── value.proto │ ├── metadata/ │ │ ├── v2/ │ │ │ ├── BUILD │ │ │ └── metadata.proto │ │ └── v3/ │ │ ├── BUILD │ │ └── metadata.proto │ ├── percent.proto │ ├── range.proto │ ├── semantic_version.proto │ ├── token_bucket.proto │ ├── tracing/ │ │ ├── v2/ │ │ │ ├── BUILD │ │ │ └── custom_tag.proto │ │ └── v3/ │ │ ├── BUILD │ │ └── custom_tag.proto │ └── v3/ │ ├── BUILD │ ├── hash_policy.proto │ ├── http.proto │ ├── http_status.proto │ ├── percent.proto │ ├── range.proto │ ├── ratelimit_unit.proto │ ├── semantic_version.proto │ └── token_bucket.proto ├── include/ │ └── envoy/ │ ├── access_log/ │ │ ├── BUILD │ │ └── access_log.h │ ├── api/ │ │ ├── BUILD │ │ ├── api.h │ │ ├── io_error.h │ │ ├── os_sys_calls.h │ │ ├── os_sys_calls_common.h │ │ ├── os_sys_calls_hot_restart.h │ │ └── os_sys_calls_linux.h │ ├── buffer/ │ │ ├── BUILD │ │ └── buffer.h │ ├── common/ │ │ ├── BUILD │ │ ├── backoff_strategy.h │ │ ├── callback.h │ │ ├── conn_pool.h │ │ ├── crypto/ │ │ │ ├── BUILD │ │ │ └── crypto.h │ │ ├── exception.h │ │ ├── interval_set.h │ │ ├── matchers.h │ │ ├── mutex_tracer.h │ │ ├── platform.h │ │ ├── pure.h │ │ ├── random_generator.h │ │ ├── regex.h │ │ ├── resource.h │ │ ├── scope_tracker.h │ │ ├── time.h │ │ └── token_bucket.h │ ├── compression/ │ │ ├── compressor/ │ │ │ ├── BUILD │ │ │ ├── compressor.h │ │ │ ├── config.h │ │ │ └── factory.h │ │ └── decompressor/ │ │ ├── BUILD │ │ ├── config.h │ │ ├── decompressor.h │ │ └── factory.h │ ├── config/ │ │ ├── BUILD │ │ ├── config_provider.h │ │ ├── config_provider_manager.h │ │ ├── extension_config_provider.h │ │ ├── grpc_mux.h │ │ ├── subscription.h │ │ ├── subscription_factory.h │ │ ├── typed_config.h │ │ └── typed_metadata.h │ ├── event/ │ │ ├── BUILD │ │ ├── deferred_deletable.h │ │ ├── dispatcher.h │ │ ├── file_event.h │ │ ├── range_timer.h │ │ ├── schedulable_cb.h │ │ ├── signal.h │ │ └── timer.h │ ├── filesystem/ │ │ ├── BUILD │ │ ├── filesystem.h │ │ └── watcher.h │ ├── filter/ │ │ └── http/ │ │ ├── BUILD │ │ └── filter_config_provider.h │ ├── formatter/ │ │ ├── BUILD │ │ └── substitution_formatter.h │ ├── grpc/ │ │ ├── BUILD │ │ ├── async_client.h │ │ ├── async_client_manager.h │ │ ├── context.h │ │ ├── google_grpc_creds.h │ │ └── status.h │ ├── http/ │ │ ├── BUILD │ │ ├── api_listener.h │ │ ├── async_client.h │ │ ├── codec.h │ │ ├── codes.h │ │ ├── conn_pool.h │ │ ├── context.h │ │ ├── filter.h │ │ ├── hash_policy.h │ │ ├── header_map.h │ │ ├── message.h │ │ ├── metadata_interface.h │ │ ├── protocol.h │ │ ├── query_params.h │ │ └── request_id_extension.h │ ├── init/ │ │ ├── BUILD │ │ ├── manager.h │ │ ├── target.h │ │ └── watcher.h │ ├── json/ │ │ ├── BUILD │ │ └── json_object.h │ ├── local_info/ │ │ ├── BUILD │ │ └── local_info.h │ ├── network/ │ │ ├── BUILD │ │ ├── address.h │ │ ├── connection.h │ │ ├── connection_balancer.h │ │ ├── connection_handler.h │ │ ├── dns.h │ │ ├── drain_decision.h │ │ ├── exception.h │ │ ├── filter.h │ │ ├── hash_policy.h │ │ ├── io_handle.h │ │ ├── listen_socket.h │ │ ├── listener.h │ │ ├── post_io_action.h │ │ ├── proxy_protocol.h │ │ ├── resolver.h │ │ ├── socket.h │ │ ├── socket_interface.h │ │ ├── transport_socket.h │ │ ├── udp_packet_writer_config.h │ │ └── udp_packet_writer_handler.h │ ├── protobuf/ │ │ ├── BUILD │ │ └── message_validator.h │ ├── ratelimit/ │ │ ├── BUILD │ │ └── ratelimit.h │ ├── registry/ │ │ ├── BUILD │ │ └── registry.h │ ├── router/ │ │ ├── BUILD │ │ ├── internal_redirect.h │ │ ├── rds.h │ │ ├── route_config_provider_manager.h │ │ ├── route_config_update_receiver.h │ │ ├── router.h │ │ ├── router_ratelimit.h │ │ ├── scopes.h │ │ ├── shadow_writer.h │ │ └── string_accessor.h │ ├── runtime/ │ │ ├── BUILD │ │ └── runtime.h │ ├── secret/ │ │ ├── BUILD │ │ ├── secret_callbacks.h │ │ ├── secret_manager.h │ │ └── secret_provider.h │ ├── server/ │ │ ├── BUILD │ │ ├── access_log_config.h │ │ ├── active_udp_listener_config.h │ │ ├── admin.h │ │ ├── api_listener.h │ │ ├── bootstrap_extension_config.h │ │ ├── config_tracker.h │ │ ├── configuration.h │ │ ├── drain_manager.h │ │ ├── factory_context.h │ │ ├── filter_config.h │ │ ├── guarddog.h │ │ ├── guarddog_config.h │ │ ├── health_checker_config.h │ │ ├── hot_restart.h │ │ ├── instance.h │ │ ├── lifecycle_notifier.h │ │ ├── listener_manager.h │ │ ├── options.h │ │ ├── overload_manager.h │ │ ├── process_context.h │ │ ├── request_id_extension_config.h │ │ ├── resource_monitor.h │ │ ├── resource_monitor_config.h │ │ ├── tracer_config.h │ │ ├── transport_socket_config.h │ │ ├── watchdog.h │ │ └── worker.h │ ├── singleton/ │ │ ├── BUILD │ │ ├── instance.h │ │ └── manager.h │ ├── ssl/ │ │ ├── BUILD │ │ ├── certificate_validation_context_config.h │ │ ├── connection.h │ │ ├── context.h │ │ ├── context_config.h │ │ ├── context_manager.h │ │ ├── handshaker.h │ │ ├── private_key/ │ │ │ ├── BUILD │ │ │ ├── private_key.h │ │ │ ├── private_key_callbacks.h │ │ │ └── private_key_config.h │ │ ├── ssl_socket_extended_info.h │ │ ├── ssl_socket_state.h │ │ └── tls_certificate_config.h │ ├── stats/ │ │ ├── BUILD │ │ ├── allocator.h │ │ ├── histogram.h │ │ ├── primitive_stats.h │ │ ├── primitive_stats_macros.h │ │ ├── refcount_ptr.h │ │ ├── scope.h │ │ ├── sink.h │ │ ├── stats.h │ │ ├── stats_macros.h │ │ ├── stats_matcher.h │ │ ├── store.h │ │ ├── symbol_table.h │ │ ├── tag.h │ │ ├── tag_extractor.h │ │ ├── tag_producer.h │ │ └── timespan.h │ ├── stream_info/ │ │ ├── BUILD │ │ ├── filter_state.h │ │ ├── stream_info.h │ │ └── uint32_accessor.h │ ├── tcp/ │ │ ├── BUILD │ │ └── conn_pool.h │ ├── thread/ │ │ ├── BUILD │ │ └── thread.h │ ├── thread_local/ │ │ ├── BUILD │ │ └── thread_local.h │ ├── tracing/ │ │ ├── BUILD │ │ ├── http_tracer.h │ │ └── http_tracer_manager.h │ ├── udp/ │ │ ├── BUILD │ │ └── hash_policy.h │ └── upstream/ │ ├── BUILD │ ├── cluster_factory.h │ ├── cluster_manager.h │ ├── health_check_host_monitor.h │ ├── health_checker.h │ ├── host_description.h │ ├── load_balancer.h │ ├── load_balancer_type.h │ ├── locality.h │ ├── outlier_detection.h │ ├── resource_manager.h │ ├── retry.h │ ├── thread_local_cluster.h │ ├── types.h │ └── upstream.h ├── repokitteh.star ├── restarter/ │ ├── BUILD │ └── hot-restarter.py ├── security/ │ ├── email-templates.md │ ├── gh-cve-template.md │ ├── postmortem-template.md │ └── postmortems/ │ ├── cve-2019-15225.md │ ├── cve-2019-15226.md │ ├── cve-2019-9900.md │ └── cve-2019-9901.md ├── source/ │ ├── common/ │ │ ├── access_log/ │ │ │ ├── BUILD │ │ │ ├── access_log_impl.cc │ │ │ ├── access_log_impl.h │ │ │ ├── access_log_manager_impl.cc │ │ │ └── access_log_manager_impl.h │ │ ├── api/ │ │ │ ├── BUILD │ │ │ ├── api_impl.cc │ │ │ ├── api_impl.h │ │ │ ├── posix/ │ │ │ │ ├── os_sys_calls_impl.cc │ │ │ │ ├── os_sys_calls_impl.h │ │ │ │ ├── os_sys_calls_impl_hot_restart.cc │ │ │ │ ├── os_sys_calls_impl_hot_restart.h │ │ │ │ ├── os_sys_calls_impl_linux.cc │ │ │ │ └── os_sys_calls_impl_linux.h │ │ │ └── win32/ │ │ │ ├── os_sys_calls_impl.cc │ │ │ └── os_sys_calls_impl.h │ │ ├── buffer/ │ │ │ ├── BUILD │ │ │ ├── buffer_impl.cc │ │ │ ├── buffer_impl.h │ │ │ ├── watermark_buffer.cc │ │ │ ├── watermark_buffer.h │ │ │ ├── zero_copy_input_stream_impl.cc │ │ │ └── zero_copy_input_stream_impl.h │ │ ├── chromium_url/ │ │ │ ├── BUILD │ │ │ ├── LICENSE │ │ │ ├── README.md │ │ │ ├── envoy_shim.h │ │ │ ├── url_canon.cc │ │ │ ├── url_canon.h │ │ │ ├── url_canon_internal.cc │ │ │ ├── url_canon_internal.h │ │ │ ├── url_canon_path.cc │ │ │ ├── url_canon_stdstring.cc │ │ │ ├── url_canon_stdstring.h │ │ │ ├── url_parse.h │ │ │ └── url_parse_internal.h │ │ ├── common/ │ │ │ ├── BUILD │ │ │ ├── android/ │ │ │ │ ├── logger_impl.cc │ │ │ │ └── logger_impl.h │ │ │ ├── assert.cc │ │ │ ├── assert.h │ │ │ ├── backoff_strategy.cc │ │ │ ├── backoff_strategy.h │ │ │ ├── base64.cc │ │ │ ├── base64.h │ │ │ ├── base_logger.cc │ │ │ ├── base_logger.h │ │ │ ├── basic_resource_impl.h │ │ │ ├── byte_order.h │ │ │ ├── c_smart_ptr.h │ │ │ ├── callback_impl.h │ │ │ ├── cleanup.h │ │ │ ├── compiler_requirements.h │ │ │ ├── debug_recursion_checker.h │ │ │ ├── documentation_url.h │ │ │ ├── dump_state_utils.h │ │ │ ├── empty_string.h │ │ │ ├── enum_to_int.h │ │ │ ├── fancy_logger.cc │ │ │ ├── fancy_logger.h │ │ │ ├── fmt.h │ │ │ ├── hash.cc │ │ │ ├── hash.h │ │ │ ├── hex.cc │ │ │ ├── hex.h │ │ │ ├── linked_object.h │ │ │ ├── lock_guard.h │ │ │ ├── logger.cc │ │ │ ├── logger.h │ │ │ ├── logger_delegates.cc │ │ │ ├── logger_delegates.h │ │ │ ├── macros.h │ │ │ ├── matchers.cc │ │ │ ├── matchers.h │ │ │ ├── mem_block_builder.h │ │ │ ├── mutex_tracer_impl.cc │ │ │ ├── mutex_tracer_impl.h │ │ │ ├── non_copyable.h │ │ │ ├── perf_annotation.cc │ │ │ ├── perf_annotation.h │ │ │ ├── phantom.h │ │ │ ├── posix/ │ │ │ │ ├── thread_impl.cc │ │ │ │ └── thread_impl.h │ │ │ ├── random_generator.cc │ │ │ ├── random_generator.h │ │ │ ├── regex.cc │ │ │ ├── regex.h │ │ │ ├── scalar_to_byte_vector.h │ │ │ ├── scope_tracker.h │ │ │ ├── standard/ │ │ │ │ └── logger_impl.h │ │ │ ├── statusor.h │ │ │ ├── stl_helpers.h │ │ │ ├── thread.h │ │ │ ├── thread_annotations.h │ │ │ ├── thread_synchronizer.cc │ │ │ ├── thread_synchronizer.h │ │ │ ├── token_bucket_impl.cc │ │ │ ├── token_bucket_impl.h │ │ │ ├── utility.cc │ │ │ ├── utility.h │ │ │ └── win32/ │ │ │ ├── thread_impl.cc │ │ │ └── thread_impl.h │ │ ├── config/ │ │ │ ├── BUILD │ │ │ ├── README.md │ │ │ ├── api_type_oracle.cc │ │ │ ├── api_type_oracle.h │ │ │ ├── api_version.h │ │ │ ├── config_provider_impl.cc │ │ │ ├── config_provider_impl.h │ │ │ ├── datasource.cc │ │ │ ├── datasource.h │ │ │ ├── decoded_resource_impl.h │ │ │ ├── delta_subscription_state.cc │ │ │ ├── delta_subscription_state.h │ │ │ ├── filesystem_subscription_impl.cc │ │ │ ├── filesystem_subscription_impl.h │ │ │ ├── grpc_mux_impl.cc │ │ │ ├── grpc_mux_impl.h │ │ │ ├── grpc_stream.h │ │ │ ├── grpc_subscription_impl.cc │ │ │ ├── grpc_subscription_impl.h │ │ │ ├── http_subscription_impl.cc │ │ │ ├── http_subscription_impl.h │ │ │ ├── metadata.cc │ │ │ ├── metadata.h │ │ │ ├── new_grpc_mux_impl.cc │ │ │ ├── new_grpc_mux_impl.h │ │ │ ├── opaque_resource_decoder_impl.h │ │ │ ├── pausable_ack_queue.cc │ │ │ ├── pausable_ack_queue.h │ │ │ ├── protobuf_link_hacks.h │ │ │ ├── remote_data_fetcher.cc │ │ │ ├── remote_data_fetcher.h │ │ │ ├── resource_name.h │ │ │ ├── runtime_utility.cc │ │ │ ├── runtime_utility.h │ │ │ ├── subscription_base.h │ │ │ ├── subscription_factory_impl.cc │ │ │ ├── subscription_factory_impl.h │ │ │ ├── type_to_endpoint.cc │ │ │ ├── type_to_endpoint.h │ │ │ ├── udpa_context_params.cc │ │ │ ├── udpa_context_params.h │ │ │ ├── udpa_resource.cc │ │ │ ├── udpa_resource.h │ │ │ ├── update_ack.h │ │ │ ├── utility.cc │ │ │ ├── utility.h │ │ │ ├── version_converter.cc │ │ │ ├── version_converter.h │ │ │ ├── watch_map.cc │ │ │ ├── watch_map.h │ │ │ ├── well_known_names.cc │ │ │ └── well_known_names.h │ │ ├── conn_pool/ │ │ │ ├── BUILD │ │ │ ├── conn_pool_base.cc │ │ │ └── conn_pool_base.h │ │ ├── crypto/ │ │ │ ├── BUILD │ │ │ └── utility.h │ │ ├── event/ │ │ │ ├── BUILD │ │ │ ├── deferred_task.h │ │ │ ├── dispatcher_impl.cc │ │ │ ├── dispatcher_impl.h │ │ │ ├── event_impl_base.cc │ │ │ ├── event_impl_base.h │ │ │ ├── file_event_impl.cc │ │ │ ├── file_event_impl.h │ │ │ ├── libevent.cc │ │ │ ├── libevent.h │ │ │ ├── libevent_scheduler.cc │ │ │ ├── libevent_scheduler.h │ │ │ ├── real_time_system.cc │ │ │ ├── real_time_system.h │ │ │ ├── scaled_range_timer_manager.cc │ │ │ ├── scaled_range_timer_manager.h │ │ │ ├── schedulable_cb_impl.cc │ │ │ ├── schedulable_cb_impl.h │ │ │ ├── signal_impl.cc │ │ │ ├── signal_impl.h │ │ │ ├── timer_impl.cc │ │ │ └── timer_impl.h │ │ ├── filesystem/ │ │ │ ├── BUILD │ │ │ ├── directory.h │ │ │ ├── file_shared_impl.cc │ │ │ ├── file_shared_impl.h │ │ │ ├── inotify/ │ │ │ │ ├── watcher_impl.cc │ │ │ │ └── watcher_impl.h │ │ │ ├── kqueue/ │ │ │ │ ├── watcher_impl.cc │ │ │ │ └── watcher_impl.h │ │ │ ├── posix/ │ │ │ │ ├── directory_iterator_impl.cc │ │ │ │ ├── directory_iterator_impl.h │ │ │ │ ├── filesystem_impl.cc │ │ │ │ └── filesystem_impl.h │ │ │ └── win32/ │ │ │ ├── directory_iterator_impl.cc │ │ │ ├── directory_iterator_impl.h │ │ │ ├── filesystem_impl.cc │ │ │ ├── filesystem_impl.h │ │ │ ├── watcher_impl.cc │ │ │ └── watcher_impl.h │ │ ├── filter/ │ │ │ └── http/ │ │ │ ├── BUILD │ │ │ ├── filter_config_discovery_impl.cc │ │ │ └── filter_config_discovery_impl.h │ │ ├── formatter/ │ │ │ ├── BUILD │ │ │ ├── substitution_format_string.cc │ │ │ ├── substitution_format_string.h │ │ │ ├── substitution_formatter.cc │ │ │ └── substitution_formatter.h │ │ ├── grpc/ │ │ │ ├── BUILD │ │ │ ├── async_client_impl.cc │ │ │ ├── async_client_impl.h │ │ │ ├── async_client_manager_impl.cc │ │ │ ├── async_client_manager_impl.h │ │ │ ├── codec.cc │ │ │ ├── codec.h │ │ │ ├── common.cc │ │ │ ├── common.h │ │ │ ├── context_impl.cc │ │ │ ├── context_impl.h │ │ │ ├── google_async_client_impl.cc │ │ │ ├── google_async_client_impl.h │ │ │ ├── google_grpc_context.cc │ │ │ ├── google_grpc_context.h │ │ │ ├── google_grpc_creds_impl.cc │ │ │ ├── google_grpc_creds_impl.h │ │ │ ├── google_grpc_utils.cc │ │ │ ├── google_grpc_utils.h │ │ │ ├── stat_names.cc │ │ │ ├── stat_names.h │ │ │ ├── status.cc │ │ │ ├── status.h │ │ │ ├── typed_async_client.cc │ │ │ └── typed_async_client.h │ │ ├── html/ │ │ │ ├── BUILD │ │ │ ├── utility.cc │ │ │ └── utility.h │ │ ├── http/ │ │ │ ├── BUILD │ │ │ ├── async_client_impl.cc │ │ │ ├── async_client_impl.h │ │ │ ├── async_client_utility.cc │ │ │ ├── async_client_utility.h │ │ │ ├── codec_client.cc │ │ │ ├── codec_client.h │ │ │ ├── codec_helper.h │ │ │ ├── codec_wrappers.h │ │ │ ├── codes.cc │ │ │ ├── codes.h │ │ │ ├── conn_manager_config.h │ │ │ ├── conn_manager_impl.cc │ │ │ ├── conn_manager_impl.h │ │ │ ├── conn_manager_utility.cc │ │ │ ├── conn_manager_utility.h │ │ │ ├── conn_pool_base.cc │ │ │ ├── conn_pool_base.h │ │ │ ├── context_impl.cc │ │ │ ├── context_impl.h │ │ │ ├── date_provider.h │ │ │ ├── date_provider_impl.cc │ │ │ ├── date_provider_impl.h │ │ │ ├── default_server_string.h │ │ │ ├── exception.h │ │ │ ├── filter_manager.cc │ │ │ ├── filter_manager.h │ │ │ ├── hash_policy.cc │ │ │ ├── hash_policy.h │ │ │ ├── header_list_view.cc │ │ │ ├── header_list_view.h │ │ │ ├── header_map_impl.cc │ │ │ ├── header_map_impl.h │ │ │ ├── header_utility.cc │ │ │ ├── header_utility.h │ │ │ ├── headers.h │ │ │ ├── http1/ │ │ │ │ ├── BUILD │ │ │ │ ├── codec_impl.cc │ │ │ │ ├── codec_impl.h │ │ │ │ ├── codec_impl_legacy.cc │ │ │ │ ├── codec_impl_legacy.h │ │ │ │ ├── codec_stats.h │ │ │ │ ├── conn_pool.cc │ │ │ │ ├── conn_pool.h │ │ │ │ ├── header_formatter.cc │ │ │ │ └── header_formatter.h │ │ │ ├── http2/ │ │ │ │ ├── BUILD │ │ │ │ ├── codec_impl.cc │ │ │ │ ├── codec_impl.h │ │ │ │ ├── codec_impl_legacy.cc │ │ │ │ ├── codec_impl_legacy.h │ │ │ │ ├── codec_stats.h │ │ │ │ ├── conn_pool.cc │ │ │ │ ├── conn_pool.h │ │ │ │ ├── metadata_decoder.cc │ │ │ │ ├── metadata_decoder.h │ │ │ │ ├── metadata_encoder.cc │ │ │ │ ├── metadata_encoder.h │ │ │ │ ├── nghttp2.cc │ │ │ │ ├── nghttp2.h │ │ │ │ ├── protocol_constraints.cc │ │ │ │ └── protocol_constraints.h │ │ │ ├── http3/ │ │ │ │ ├── BUILD │ │ │ │ ├── quic_codec_factory.h │ │ │ │ └── well_known_names.h │ │ │ ├── message_impl.h │ │ │ ├── path_utility.cc │ │ │ ├── path_utility.h │ │ │ ├── request_id_extension_impl.cc │ │ │ ├── request_id_extension_impl.h │ │ │ ├── request_id_extension_uuid_impl.cc │ │ │ ├── request_id_extension_uuid_impl.h │ │ │ ├── rest_api_fetcher.cc │ │ │ ├── rest_api_fetcher.h │ │ │ ├── status.cc │ │ │ ├── status.h │ │ │ ├── user_agent.cc │ │ │ ├── user_agent.h │ │ │ ├── utility.cc │ │ │ └── utility.h │ │ ├── init/ │ │ │ ├── BUILD │ │ │ ├── manager_impl.cc │ │ │ ├── manager_impl.h │ │ │ ├── target_impl.cc │ │ │ ├── target_impl.h │ │ │ ├── watcher_impl.cc │ │ │ └── watcher_impl.h │ │ ├── json/ │ │ │ ├── BUILD │ │ │ ├── json_loader.cc │ │ │ └── json_loader.h │ │ ├── local_info/ │ │ │ ├── BUILD │ │ │ └── local_info_impl.h │ │ ├── local_reply/ │ │ │ ├── BUILD │ │ │ ├── local_reply.cc │ │ │ └── local_reply.h │ │ ├── memory/ │ │ │ ├── BUILD │ │ │ ├── heap_shrinker.cc │ │ │ ├── heap_shrinker.h │ │ │ ├── stats.cc │ │ │ ├── stats.h │ │ │ ├── utils.cc │ │ │ └── utils.h │ │ ├── network/ │ │ │ ├── BUILD │ │ │ ├── addr_family_aware_socket_option_impl.cc │ │ │ ├── addr_family_aware_socket_option_impl.h │ │ │ ├── address_impl.cc │ │ │ ├── address_impl.h │ │ │ ├── apple_dns_impl.cc │ │ │ ├── apple_dns_impl.h │ │ │ ├── application_protocol.cc │ │ │ ├── application_protocol.h │ │ │ ├── base_listener_impl.cc │ │ │ ├── base_listener_impl.h │ │ │ ├── cidr_range.cc │ │ │ ├── cidr_range.h │ │ │ ├── connection_balancer_impl.cc │ │ │ ├── connection_balancer_impl.h │ │ │ ├── connection_impl.cc │ │ │ ├── connection_impl.h │ │ │ ├── connection_impl_base.cc │ │ │ ├── connection_impl_base.h │ │ │ ├── dns_impl.cc │ │ │ ├── dns_impl.h │ │ │ ├── filter_impl.h │ │ │ ├── filter_manager_impl.cc │ │ │ ├── filter_manager_impl.h │ │ │ ├── filter_matcher.cc │ │ │ ├── filter_matcher.h │ │ │ ├── hash_policy.cc │ │ │ ├── hash_policy.h │ │ │ ├── io_socket_error_impl.cc │ │ │ ├── io_socket_error_impl.h │ │ │ ├── io_socket_handle_impl.cc │ │ │ ├── io_socket_handle_impl.h │ │ │ ├── lc_trie.h │ │ │ ├── listen_socket_impl.cc │ │ │ ├── listen_socket_impl.h │ │ │ ├── proxy_protocol_filter_state.cc │ │ │ ├── proxy_protocol_filter_state.h │ │ │ ├── raw_buffer_socket.cc │ │ │ ├── raw_buffer_socket.h │ │ │ ├── resolver_impl.cc │ │ │ ├── resolver_impl.h │ │ │ ├── socket_impl.cc │ │ │ ├── socket_impl.h │ │ │ ├── socket_interface.h │ │ │ ├── socket_interface_impl.cc │ │ │ ├── socket_interface_impl.h │ │ │ ├── socket_option_factory.cc │ │ │ ├── socket_option_factory.h │ │ │ ├── socket_option_impl.cc │ │ │ ├── socket_option_impl.h │ │ │ ├── tcp_listener_impl.cc │ │ │ ├── tcp_listener_impl.h │ │ │ ├── transport_socket_options_impl.cc │ │ │ ├── transport_socket_options_impl.h │ │ │ ├── udp_default_writer_config.cc │ │ │ ├── udp_default_writer_config.h │ │ │ ├── udp_listener_impl.cc │ │ │ ├── udp_listener_impl.h │ │ │ ├── udp_packet_writer_handler_impl.cc │ │ │ ├── udp_packet_writer_handler_impl.h │ │ │ ├── upstream_server_name.cc │ │ │ ├── upstream_server_name.h │ │ │ ├── upstream_subject_alt_names.cc │ │ │ ├── upstream_subject_alt_names.h │ │ │ ├── utility.cc │ │ │ └── utility.h │ │ ├── profiler/ │ │ │ ├── BUILD │ │ │ ├── profiler.cc │ │ │ └── profiler.h │ │ ├── protobuf/ │ │ │ ├── BUILD │ │ │ ├── message_validator_impl.cc │ │ │ ├── message_validator_impl.h │ │ │ ├── protobuf.h │ │ │ ├── type_util.cc │ │ │ ├── type_util.h │ │ │ ├── utility.cc │ │ │ ├── utility.h │ │ │ ├── visitor.cc │ │ │ ├── visitor.h │ │ │ └── well_known.h │ │ ├── router/ │ │ │ ├── BUILD │ │ │ ├── config_impl.cc │ │ │ ├── config_impl.h │ │ │ ├── config_utility.cc │ │ │ ├── config_utility.h │ │ │ ├── debug_config.cc │ │ │ ├── debug_config.h │ │ │ ├── header_formatter.cc │ │ │ ├── header_formatter.h │ │ │ ├── header_parser.cc │ │ │ ├── header_parser.h │ │ │ ├── metadatamatchcriteria_impl.cc │ │ │ ├── metadatamatchcriteria_impl.h │ │ │ ├── rds_impl.cc │ │ │ ├── rds_impl.h │ │ │ ├── reset_header_parser.cc │ │ │ ├── reset_header_parser.h │ │ │ ├── retry_state_impl.cc │ │ │ ├── retry_state_impl.h │ │ │ ├── route_config_update_receiver_impl.cc │ │ │ ├── route_config_update_receiver_impl.h │ │ │ ├── router.cc │ │ │ ├── router.h │ │ │ ├── router_ratelimit.cc │ │ │ ├── router_ratelimit.h │ │ │ ├── scoped_config_impl.cc │ │ │ ├── scoped_config_impl.h │ │ │ ├── scoped_rds.cc │ │ │ ├── scoped_rds.h │ │ │ ├── shadow_writer_impl.cc │ │ │ ├── shadow_writer_impl.h │ │ │ ├── string_accessor_impl.h │ │ │ ├── tls_context_match_criteria_impl.cc │ │ │ ├── tls_context_match_criteria_impl.h │ │ │ ├── upstream_request.cc │ │ │ ├── upstream_request.h │ │ │ ├── vhds.cc │ │ │ └── vhds.h │ │ ├── runtime/ │ │ │ ├── BUILD │ │ │ ├── runtime_features.cc │ │ │ ├── runtime_features.h │ │ │ ├── runtime_impl.cc │ │ │ ├── runtime_impl.h │ │ │ └── runtime_protos.h │ │ ├── secret/ │ │ │ ├── BUILD │ │ │ ├── sds_api.cc │ │ │ ├── sds_api.h │ │ │ ├── secret_manager_impl.cc │ │ │ ├── secret_manager_impl.h │ │ │ ├── secret_provider_impl.cc │ │ │ └── secret_provider_impl.h │ │ ├── shared_pool/ │ │ │ ├── BUILD │ │ │ └── shared_pool.h │ │ ├── signal/ │ │ │ ├── BUILD │ │ │ ├── fatal_error_handler.cc │ │ │ ├── fatal_error_handler.h │ │ │ ├── signal_action.cc │ │ │ └── signal_action.h │ │ ├── singleton/ │ │ │ ├── BUILD │ │ │ ├── const_singleton.h │ │ │ ├── manager_impl.cc │ │ │ ├── manager_impl.h │ │ │ └── threadsafe_singleton.h │ │ ├── ssl/ │ │ │ ├── BUILD │ │ │ ├── certificate_validation_context_config_impl.cc │ │ │ ├── certificate_validation_context_config_impl.h │ │ │ ├── tls_certificate_config_impl.cc │ │ │ └── tls_certificate_config_impl.h │ │ ├── stats/ │ │ │ ├── BUILD │ │ │ ├── allocator_impl.cc │ │ │ ├── allocator_impl.h │ │ │ ├── histogram_impl.cc │ │ │ ├── histogram_impl.h │ │ │ ├── isolated_store_impl.cc │ │ │ ├── isolated_store_impl.h │ │ │ ├── metric_impl.cc │ │ │ ├── metric_impl.h │ │ │ ├── null_counter.h │ │ │ ├── null_gauge.h │ │ │ ├── null_text_readout.h │ │ │ ├── recent_lookups.cc │ │ │ ├── recent_lookups.h │ │ │ ├── scope_prefixer.cc │ │ │ ├── scope_prefixer.h │ │ │ ├── stat_merger.cc │ │ │ ├── stat_merger.h │ │ │ ├── stats_matcher_impl.cc │ │ │ ├── stats_matcher_impl.h │ │ │ ├── store_impl.h │ │ │ ├── symbol_table_impl.cc │ │ │ ├── symbol_table_impl.h │ │ │ ├── tag_extractor_impl.cc │ │ │ ├── tag_extractor_impl.h │ │ │ ├── tag_producer_impl.cc │ │ │ ├── tag_producer_impl.h │ │ │ ├── tag_utility.cc │ │ │ ├── tag_utility.h │ │ │ ├── thread_local_store.cc │ │ │ ├── thread_local_store.h │ │ │ ├── timespan_impl.cc │ │ │ ├── timespan_impl.h │ │ │ ├── utility.cc │ │ │ └── utility.h │ │ ├── stream_info/ │ │ │ ├── BUILD │ │ │ ├── filter_state_impl.cc │ │ │ ├── filter_state_impl.h │ │ │ ├── stream_info_impl.h │ │ │ ├── uint32_accessor_impl.h │ │ │ ├── utility.cc │ │ │ └── utility.h │ │ ├── tcp/ │ │ │ ├── BUILD │ │ │ ├── conn_pool.cc │ │ │ ├── conn_pool.h │ │ │ ├── original_conn_pool.cc │ │ │ └── original_conn_pool.h │ │ ├── tcp_proxy/ │ │ │ ├── BUILD │ │ │ ├── tcp_proxy.cc │ │ │ ├── tcp_proxy.h │ │ │ ├── upstream.cc │ │ │ └── upstream.h │ │ ├── thread_local/ │ │ │ ├── BUILD │ │ │ ├── thread_local_impl.cc │ │ │ └── thread_local_impl.h │ │ ├── tracing/ │ │ │ ├── BUILD │ │ │ ├── http_tracer_config_impl.h │ │ │ ├── http_tracer_impl.cc │ │ │ ├── http_tracer_impl.h │ │ │ ├── http_tracer_manager_impl.cc │ │ │ └── http_tracer_manager_impl.h │ │ ├── upstream/ │ │ │ ├── BUILD │ │ │ ├── cds_api_impl.cc │ │ │ ├── cds_api_impl.h │ │ │ ├── cluster_factory_impl.cc │ │ │ ├── cluster_factory_impl.h │ │ │ ├── cluster_manager_impl.cc │ │ │ ├── cluster_manager_impl.h │ │ │ ├── cluster_update_tracker.cc │ │ │ ├── cluster_update_tracker.h │ │ │ ├── conn_pool_map.h │ │ │ ├── conn_pool_map_impl.h │ │ │ ├── edf_scheduler.h │ │ │ ├── eds.cc │ │ │ ├── eds.h │ │ │ ├── health_checker_base_impl.cc │ │ │ ├── health_checker_base_impl.h │ │ │ ├── health_checker_impl.cc │ │ │ ├── health_checker_impl.h │ │ │ ├── health_discovery_service.cc │ │ │ ├── health_discovery_service.h │ │ │ ├── host_utility.cc │ │ │ ├── host_utility.h │ │ │ ├── load_balancer_impl.cc │ │ │ ├── load_balancer_impl.h │ │ │ ├── load_stats_reporter.cc │ │ │ ├── load_stats_reporter.h │ │ │ ├── logical_dns_cluster.cc │ │ │ ├── logical_dns_cluster.h │ │ │ ├── logical_host.cc │ │ │ ├── logical_host.h │ │ │ ├── maglev_lb.cc │ │ │ ├── maglev_lb.h │ │ │ ├── original_dst_cluster.cc │ │ │ ├── original_dst_cluster.h │ │ │ ├── outlier_detection_impl.cc │ │ │ ├── outlier_detection_impl.h │ │ │ ├── priority_conn_pool_map.h │ │ │ ├── priority_conn_pool_map_impl.h │ │ │ ├── resource_manager_impl.h │ │ │ ├── ring_hash_lb.cc │ │ │ ├── ring_hash_lb.h │ │ │ ├── static_cluster.cc │ │ │ ├── static_cluster.h │ │ │ ├── strict_dns_cluster.cc │ │ │ ├── strict_dns_cluster.h │ │ │ ├── subset_lb.cc │ │ │ ├── subset_lb.h │ │ │ ├── thread_aware_lb_impl.cc │ │ │ ├── thread_aware_lb_impl.h │ │ │ ├── transport_socket_match_impl.cc │ │ │ ├── transport_socket_match_impl.h │ │ │ ├── upstream_impl.cc │ │ │ └── upstream_impl.h │ │ └── version/ │ │ ├── BUILD │ │ ├── generate_version_linkstamp.sh │ │ ├── version.cc │ │ ├── version.h │ │ └── version_linkstamp.cc │ ├── docs/ │ │ ├── fancy_logger.md │ │ ├── filters/ │ │ │ └── http/ │ │ │ └── cache/ │ │ │ ├── cache_filter.md │ │ │ └── cache_filter_plugins.md │ │ ├── flow_control.md │ │ ├── h2_metadata.md │ │ ├── header_map.md │ │ ├── network_filter_fuzzing.md │ │ ├── quiche_integration.md │ │ ├── repokitteh.md │ │ ├── stats.md │ │ └── subset_load_balancer.md │ ├── exe/ │ │ ├── BUILD │ │ ├── main.cc │ │ ├── main_common.cc │ │ ├── main_common.h │ │ ├── platform_impl.h │ │ ├── posix/ │ │ │ └── platform_impl.cc │ │ ├── process_wide.cc │ │ ├── process_wide.h │ │ ├── terminate_handler.cc │ │ ├── terminate_handler.h │ │ └── win32/ │ │ └── platform_impl.cc │ ├── extensions/ │ │ ├── BUILD │ │ ├── access_loggers/ │ │ │ ├── BUILD │ │ │ ├── common/ │ │ │ │ ├── BUILD │ │ │ │ ├── access_log_base.cc │ │ │ │ └── access_log_base.h │ │ │ ├── file/ │ │ │ │ ├── BUILD │ │ │ │ ├── config.cc │ │ │ │ ├── config.h │ │ │ │ ├── file_access_log_impl.cc │ │ │ │ └── file_access_log_impl.h │ │ │ ├── grpc/ │ │ │ │ ├── BUILD │ │ │ │ ├── config_utils.cc │ │ │ │ ├── config_utils.h │ │ │ │ ├── grpc_access_log_impl.cc │ │ │ │ ├── grpc_access_log_impl.h │ │ │ │ ├── grpc_access_log_proto_descriptors.cc │ │ │ │ ├── grpc_access_log_proto_descriptors.h │ │ │ │ ├── grpc_access_log_utils.cc │ │ │ │ ├── grpc_access_log_utils.h │ │ │ │ ├── http_config.cc │ │ │ │ ├── http_config.h │ │ │ │ ├── http_grpc_access_log_impl.cc │ │ │ │ ├── http_grpc_access_log_impl.h │ │ │ │ ├── tcp_config.cc │ │ │ │ ├── tcp_config.h │ │ │ │ ├── tcp_grpc_access_log_impl.cc │ │ │ │ └── tcp_grpc_access_log_impl.h │ │ │ ├── wasm/ │ │ │ │ ├── BUILD │ │ │ │ ├── config.cc │ │ │ │ ├── config.h │ │ │ │ └── wasm_access_log_impl.h │ │ │ └── well_known_names.h │ │ ├── all_extensions.bzl │ │ ├── bootstrap/ │ │ │ └── wasm/ │ │ │ ├── BUILD │ │ │ ├── config.cc │ │ │ └── config.h │ │ ├── clusters/ │ │ │ ├── BUILD │ │ │ ├── aggregate/ │ │ │ │ ├── BUILD │ │ │ │ ├── cluster.cc │ │ │ │ ├── cluster.h │ │ │ │ └── lb_context.h │ │ │ ├── dynamic_forward_proxy/ │ │ │ │ ├── BUILD │ │ │ │ ├── cluster.cc │ │ │ │ └── cluster.h │ │ │ ├── redis/ │ │ │ │ ├── BUILD │ │ │ │ ├── crc16.cc │ │ │ │ ├── crc16.h │ │ │ │ ├── redis_cluster.cc │ │ │ │ ├── redis_cluster.h │ │ │ │ ├── redis_cluster_lb.cc │ │ │ │ └── redis_cluster_lb.h │ │ │ └── well_known_names.h │ │ ├── common/ │ │ │ ├── BUILD │ │ │ ├── aws/ │ │ │ │ ├── BUILD │ │ │ │ ├── credentials_provider.h │ │ │ │ ├── credentials_provider_impl.cc │ │ │ │ ├── credentials_provider_impl.h │ │ │ │ ├── region_provider.h │ │ │ │ ├── region_provider_impl.cc │ │ │ │ ├── region_provider_impl.h │ │ │ │ ├── signer.h │ │ │ │ ├── signer_impl.cc │ │ │ │ ├── signer_impl.h │ │ │ │ ├── utility.cc │ │ │ │ └── utility.h │ │ │ ├── crypto/ │ │ │ │ ├── BUILD │ │ │ │ ├── crypto_impl.cc │ │ │ │ ├── crypto_impl.h │ │ │ │ ├── utility_impl.cc │ │ │ │ └── utility_impl.h │ │ │ ├── dynamic_forward_proxy/ │ │ │ │ ├── BUILD │ │ │ │ ├── dns_cache.h │ │ │ │ ├── dns_cache_impl.cc │ │ │ │ ├── dns_cache_impl.h │ │ │ │ ├── dns_cache_manager_impl.cc │ │ │ │ ├── dns_cache_manager_impl.h │ │ │ │ ├── dns_cache_resource_manager.cc │ │ │ │ └── dns_cache_resource_manager.h │ │ │ ├── matcher/ │ │ │ │ ├── BUILD │ │ │ │ ├── matcher.cc │ │ │ │ └── matcher.h │ │ │ ├── proxy_protocol/ │ │ │ │ ├── BUILD │ │ │ │ ├── proxy_protocol_header.cc │ │ │ │ └── proxy_protocol_header.h │ │ │ ├── redis/ │ │ │ │ ├── BUILD │ │ │ │ ├── cluster_refresh_manager.h │ │ │ │ ├── cluster_refresh_manager_impl.cc │ │ │ │ └── cluster_refresh_manager_impl.h │ │ │ ├── sqlutils/ │ │ │ │ ├── BUILD │ │ │ │ ├── sqlutils.cc │ │ │ │ └── sqlutils.h │ │ │ ├── tap/ │ │ │ │ ├── BUILD │ │ │ │ ├── admin.cc │ │ │ │ ├── admin.h │ │ │ │ ├── extension_config_base.cc │ │ │ │ ├── extension_config_base.h │ │ │ │ ├── tap.h │ │ │ │ ├── tap_config_base.cc │ │ │ │ └── tap_config_base.h │ │ │ ├── utility.h │ │ │ └── wasm/ │ │ │ ├── BUILD │ │ │ ├── context.cc │ │ │ ├── context.h │ │ │ ├── ext/ │ │ │ │ ├── BUILD │ │ │ │ ├── README.md │ │ │ │ ├── declare_property.proto │ │ │ │ ├── envoy_null_plugin.h │ │ │ │ ├── envoy_null_vm_wasm_api.h │ │ │ │ ├── envoy_proxy_wasm_api.cc │ │ │ │ ├── envoy_proxy_wasm_api.h │ │ │ │ ├── envoy_wasm_intrinsics.js │ │ │ │ └── node_subset.proto │ │ │ ├── foreign.cc │ │ │ ├── wasm.cc │ │ │ ├── wasm.h │ │ │ ├── wasm_extension.cc │ │ │ ├── wasm_extension.h │ │ │ ├── wasm_state.cc │ │ │ ├── wasm_state.h │ │ │ ├── wasm_vm.cc │ │ │ ├── wasm_vm.h │ │ │ ├── wasm_vm_base.h │ │ │ └── well_known_names.h │ │ ├── compression/ │ │ │ ├── common/ │ │ │ │ ├── compressor/ │ │ │ │ │ ├── BUILD │ │ │ │ │ └── factory_base.h │ │ │ │ └── decompressor/ │ │ │ │ ├── BUILD │ │ │ │ └── factory_base.h │ │ │ └── gzip/ │ │ │ ├── common/ │ │ │ │ ├── BUILD │ │ │ │ ├── base.cc │ │ │ │ └── base.h │ │ │ ├── compressor/ │ │ │ │ ├── BUILD │ │ │ │ ├── config.cc │ │ │ │ ├── config.h │ │ │ │ ├── zlib_compressor_impl.cc │ │ │ │ └── zlib_compressor_impl.h │ │ │ └── decompressor/ │ │ │ ├── BUILD │ │ │ ├── config.cc │ │ │ ├── config.h │ │ │ ├── zlib_decompressor_impl.cc │ │ │ └── zlib_decompressor_impl.h │ │ ├── extensions_build_config.bzl │ │ ├── filters/ │ │ │ ├── common/ │ │ │ │ ├── expr/ │ │ │ │ │ ├── BUILD │ │ │ │ │ ├── context.cc │ │ │ │ │ ├── context.h │ │ │ │ │ ├── evaluator.cc │ │ │ │ │ └── evaluator.h │ │ │ │ ├── ext_authz/ │ │ │ │ │ ├── BUILD │ │ │ │ │ ├── check_request_utils.cc │ │ │ │ │ ├── check_request_utils.h │ │ │ │ │ ├── ext_authz.h │ │ │ │ │ ├── ext_authz_grpc_impl.cc │ │ │ │ │ ├── ext_authz_grpc_impl.h │ │ │ │ │ ├── ext_authz_http_impl.cc │ │ │ │ │ └── ext_authz_http_impl.h │ │ │ │ ├── fault/ │ │ │ │ │ ├── BUILD │ │ │ │ │ ├── fault_config.cc │ │ │ │ │ └── fault_config.h │ │ │ │ ├── local_ratelimit/ │ │ │ │ │ ├── BUILD │ │ │ │ │ ├── local_ratelimit_impl.cc │ │ │ │ │ └── local_ratelimit_impl.h │ │ │ │ ├── lua/ │ │ │ │ │ ├── BUILD │ │ │ │ │ ├── lua.cc │ │ │ │ │ ├── lua.h │ │ │ │ │ ├── wrappers.cc │ │ │ │ │ └── wrappers.h │ │ │ │ ├── original_src/ │ │ │ │ │ ├── BUILD │ │ │ │ │ ├── original_src_socket_option.cc │ │ │ │ │ ├── original_src_socket_option.h │ │ │ │ │ ├── socket_option_factory.cc │ │ │ │ │ └── socket_option_factory.h │ │ │ │ ├── ratelimit/ │ │ │ │ │ ├── BUILD │ │ │ │ │ ├── ratelimit.h │ │ │ │ │ ├── ratelimit_impl.cc │ │ │ │ │ ├── ratelimit_impl.h │ │ │ │ │ └── stat_names.h │ │ │ │ └── rbac/ │ │ │ │ ├── BUILD │ │ │ │ ├── engine.h │ │ │ │ ├── engine_impl.cc │ │ │ │ ├── engine_impl.h │ │ │ │ ├── matchers.cc │ │ │ │ ├── matchers.h │ │ │ │ ├── utility.cc │ │ │ │ └── utility.h │ │ │ ├── http/ │ │ │ │ ├── BUILD │ │ │ │ ├── adaptive_concurrency/ │ │ │ │ │ ├── BUILD │ │ │ │ │ ├── adaptive_concurrency_filter.cc │ │ │ │ │ ├── adaptive_concurrency_filter.h │ │ │ │ │ ├── config.cc │ │ │ │ │ ├── config.h │ │ │ │ │ └── controller/ │ │ │ │ │ ├── BUILD │ │ │ │ │ ├── controller.h │ │ │ │ │ ├── gradient_controller.cc │ │ │ │ │ └── gradient_controller.h │ │ │ │ ├── admission_control/ │ │ │ │ │ ├── BUILD │ │ │ │ │ ├── admission_control.cc │ │ │ │ │ ├── admission_control.h │ │ │ │ │ ├── config.cc │ │ │ │ │ ├── config.h │ │ │ │ │ ├── evaluators/ │ │ │ │ │ │ ├── BUILD │ │ │ │ │ │ ├── response_evaluator.h │ │ │ │ │ │ ├── success_criteria_evaluator.cc │ │ │ │ │ │ └── success_criteria_evaluator.h │ │ │ │ │ ├── thread_local_controller.cc │ │ │ │ │ └── thread_local_controller.h │ │ │ │ ├── aws_lambda/ │ │ │ │ │ ├── BUILD │ │ │ │ │ ├── aws_lambda_filter.cc │ │ │ │ │ ├── aws_lambda_filter.h │ │ │ │ │ ├── config.cc │ │ │ │ │ ├── config.h │ │ │ │ │ └── request_response.proto │ │ │ │ ├── aws_request_signing/ │ │ │ │ │ ├── BUILD │ │ │ │ │ ├── aws_request_signing_filter.cc │ │ │ │ │ ├── aws_request_signing_filter.h │ │ │ │ │ ├── config.cc │ │ │ │ │ └── config.h │ │ │ │ ├── buffer/ │ │ │ │ │ ├── BUILD │ │ │ │ │ ├── buffer_filter.cc │ │ │ │ │ ├── buffer_filter.h │ │ │ │ │ ├── config.cc │ │ │ │ │ └── config.h │ │ │ │ ├── cache/ │ │ │ │ │ ├── BUILD │ │ │ │ │ ├── cache_filter.cc │ │ │ │ │ ├── cache_filter.h │ │ │ │ │ ├── cache_headers_utils.cc │ │ │ │ │ ├── cache_headers_utils.h │ │ │ │ │ ├── cacheability_utils.cc │ │ │ │ │ ├── cacheability_utils.h │ │ │ │ │ ├── config.cc │ │ │ │ │ ├── config.h │ │ │ │ │ ├── http_cache.cc │ │ │ │ │ ├── http_cache.h │ │ │ │ │ ├── inline_headers_handles.h │ │ │ │ │ ├── key.proto │ │ │ │ │ └── simple_http_cache/ │ │ │ │ │ ├── BUILD │ │ │ │ │ ├── config.proto │ │ │ │ │ ├── simple_http_cache.cc │ │ │ │ │ └── simple_http_cache.h │ │ │ │ ├── cdn_loop/ │ │ │ │ │ ├── BUILD │ │ │ │ │ ├── config.cc │ │ │ │ │ ├── config.h │ │ │ │ │ ├── filter.cc │ │ │ │ │ ├── filter.h │ │ │ │ │ ├── parser.cc │ │ │ │ │ ├── parser.h │ │ │ │ │ ├── utils.cc │ │ │ │ │ └── utils.h │ │ │ │ ├── common/ │ │ │ │ │ ├── BUILD │ │ │ │ │ ├── compressor/ │ │ │ │ │ │ ├── BUILD │ │ │ │ │ │ ├── compressor.cc │ │ │ │ │ │ └── compressor.h │ │ │ │ │ ├── factory_base.h │ │ │ │ │ ├── jwks_fetcher.cc │ │ │ │ │ ├── jwks_fetcher.h │ │ │ │ │ ├── pass_through_filter.h │ │ │ │ │ └── utility.h │ │ │ │ ├── compressor/ │ │ │ │ │ ├── BUILD │ │ │ │ │ ├── compressor_filter.cc │ │ │ │ │ ├── compressor_filter.h │ │ │ │ │ ├── config.cc │ │ │ │ │ └── config.h │ │ │ │ ├── cors/ │ │ │ │ │ ├── BUILD │ │ │ │ │ ├── config.cc │ │ │ │ │ ├── config.h │ │ │ │ │ ├── cors_filter.cc │ │ │ │ │ └── cors_filter.h │ │ │ │ ├── csrf/ │ │ │ │ │ ├── BUILD │ │ │ │ │ ├── config.cc │ │ │ │ │ ├── config.h │ │ │ │ │ ├── csrf_filter.cc │ │ │ │ │ └── csrf_filter.h │ │ │ │ ├── decompressor/ │ │ │ │ │ ├── BUILD │ │ │ │ │ ├── config.cc │ │ │ │ │ ├── config.h │ │ │ │ │ ├── decompressor_filter.cc │ │ │ │ │ └── decompressor_filter.h │ │ │ │ ├── dynamic_forward_proxy/ │ │ │ │ │ ├── BUILD │ │ │ │ │ ├── config.cc │ │ │ │ │ ├── config.h │ │ │ │ │ ├── proxy_filter.cc │ │ │ │ │ └── proxy_filter.h │ │ │ │ ├── dynamo/ │ │ │ │ │ ├── BUILD │ │ │ │ │ ├── config.cc │ │ │ │ │ ├── config.h │ │ │ │ │ ├── dynamo_filter.cc │ │ │ │ │ ├── dynamo_filter.h │ │ │ │ │ ├── dynamo_request_parser.cc │ │ │ │ │ ├── dynamo_request_parser.h │ │ │ │ │ ├── dynamo_stats.cc │ │ │ │ │ └── dynamo_stats.h │ │ │ │ ├── ext_authz/ │ │ │ │ │ ├── BUILD │ │ │ │ │ ├── config.cc │ │ │ │ │ ├── config.h │ │ │ │ │ ├── ext_authz.cc │ │ │ │ │ └── ext_authz.h │ │ │ │ ├── fault/ │ │ │ │ │ ├── BUILD │ │ │ │ │ ├── config.cc │ │ │ │ │ ├── config.h │ │ │ │ │ ├── fault_filter.cc │ │ │ │ │ └── fault_filter.h │ │ │ │ ├── grpc_http1_bridge/ │ │ │ │ │ ├── BUILD │ │ │ │ │ ├── config.cc │ │ │ │ │ ├── config.h │ │ │ │ │ ├── http1_bridge_filter.cc │ │ │ │ │ └── http1_bridge_filter.h │ │ │ │ ├── grpc_http1_reverse_bridge/ │ │ │ │ │ ├── BUILD │ │ │ │ │ ├── config.cc │ │ │ │ │ ├── config.h │ │ │ │ │ ├── filter.cc │ │ │ │ │ └── filter.h │ │ │ │ ├── grpc_json_transcoder/ │ │ │ │ │ ├── BUILD │ │ │ │ │ ├── config.cc │ │ │ │ │ ├── config.h │ │ │ │ │ ├── http_body_utils.cc │ │ │ │ │ ├── http_body_utils.h │ │ │ │ │ ├── json_transcoder_filter.cc │ │ │ │ │ ├── json_transcoder_filter.h │ │ │ │ │ ├── transcoder_input_stream_impl.cc │ │ │ │ │ └── transcoder_input_stream_impl.h │ │ │ │ ├── grpc_stats/ │ │ │ │ │ ├── BUILD │ │ │ │ │ ├── grpc_stats_filter.cc │ │ │ │ │ └── grpc_stats_filter.h │ │ │ │ ├── grpc_web/ │ │ │ │ │ ├── BUILD │ │ │ │ │ ├── config.cc │ │ │ │ │ ├── config.h │ │ │ │ │ ├── grpc_web_filter.cc │ │ │ │ │ └── grpc_web_filter.h │ │ │ │ ├── gzip/ │ │ │ │ │ ├── BUILD │ │ │ │ │ ├── config.cc │ │ │ │ │ ├── config.h │ │ │ │ │ ├── gzip_filter.cc │ │ │ │ │ └── gzip_filter.h │ │ │ │ ├── header_to_metadata/ │ │ │ │ │ ├── BUILD │ │ │ │ │ ├── config.cc │ │ │ │ │ ├── config.h │ │ │ │ │ ├── header_to_metadata_filter.cc │ │ │ │ │ └── header_to_metadata_filter.h │ │ │ │ ├── health_check/ │ │ │ │ │ ├── BUILD │ │ │ │ │ ├── config.cc │ │ │ │ │ ├── config.h │ │ │ │ │ ├── health_check.cc │ │ │ │ │ └── health_check.h │ │ │ │ ├── ip_tagging/ │ │ │ │ │ ├── BUILD │ │ │ │ │ ├── config.cc │ │ │ │ │ ├── config.h │ │ │ │ │ ├── ip_tagging_filter.cc │ │ │ │ │ └── ip_tagging_filter.h │ │ │ │ ├── jwt_authn/ │ │ │ │ │ ├── BUILD │ │ │ │ │ ├── authenticator.cc │ │ │ │ │ ├── authenticator.h │ │ │ │ │ ├── extractor.cc │ │ │ │ │ ├── extractor.h │ │ │ │ │ ├── filter.cc │ │ │ │ │ ├── filter.h │ │ │ │ │ ├── filter_config.cc │ │ │ │ │ ├── filter_config.h │ │ │ │ │ ├── filter_factory.cc │ │ │ │ │ ├── filter_factory.h │ │ │ │ │ ├── jwks_cache.cc │ │ │ │ │ ├── jwks_cache.h │ │ │ │ │ ├── matcher.cc │ │ │ │ │ ├── matcher.h │ │ │ │ │ ├── verifier.cc │ │ │ │ │ └── verifier.h │ │ │ │ ├── local_ratelimit/ │ │ │ │ │ ├── BUILD │ │ │ │ │ ├── config.cc │ │ │ │ │ ├── config.h │ │ │ │ │ ├── local_ratelimit.cc │ │ │ │ │ └── local_ratelimit.h │ │ │ │ ├── lua/ │ │ │ │ │ ├── BUILD │ │ │ │ │ ├── config.cc │ │ │ │ │ ├── config.h │ │ │ │ │ ├── lua_filter.cc │ │ │ │ │ ├── lua_filter.h │ │ │ │ │ ├── wrappers.cc │ │ │ │ │ └── wrappers.h │ │ │ │ ├── oauth2/ │ │ │ │ │ ├── BUILD │ │ │ │ │ ├── config.cc │ │ │ │ │ ├── config.h │ │ │ │ │ ├── filter.cc │ │ │ │ │ ├── filter.h │ │ │ │ │ ├── oauth.h │ │ │ │ │ ├── oauth_client.cc │ │ │ │ │ ├── oauth_client.h │ │ │ │ │ └── oauth_response.proto │ │ │ │ ├── on_demand/ │ │ │ │ │ ├── BUILD │ │ │ │ │ ├── config.cc │ │ │ │ │ ├── config.h │ │ │ │ │ ├── on_demand_update.cc │ │ │ │ │ └── on_demand_update.h │ │ │ │ ├── original_src/ │ │ │ │ │ ├── BUILD │ │ │ │ │ ├── config.cc │ │ │ │ │ ├── config.h │ │ │ │ │ ├── original_src.cc │ │ │ │ │ ├── original_src.h │ │ │ │ │ ├── original_src_config_factory.cc │ │ │ │ │ └── original_src_config_factory.h │ │ │ │ ├── ratelimit/ │ │ │ │ │ ├── BUILD │ │ │ │ │ ├── config.cc │ │ │ │ │ ├── config.h │ │ │ │ │ ├── ratelimit.cc │ │ │ │ │ ├── ratelimit.h │ │ │ │ │ ├── ratelimit_headers.cc │ │ │ │ │ └── ratelimit_headers.h │ │ │ │ ├── rbac/ │ │ │ │ │ ├── BUILD │ │ │ │ │ ├── config.cc │ │ │ │ │ ├── config.h │ │ │ │ │ ├── rbac_filter.cc │ │ │ │ │ └── rbac_filter.h │ │ │ │ ├── router/ │ │ │ │ │ ├── BUILD │ │ │ │ │ ├── config.cc │ │ │ │ │ └── config.h │ │ │ │ ├── squash/ │ │ │ │ │ ├── BUILD │ │ │ │ │ ├── config.cc │ │ │ │ │ ├── config.h │ │ │ │ │ ├── squash_filter.cc │ │ │ │ │ └── squash_filter.h │ │ │ │ ├── tap/ │ │ │ │ │ ├── BUILD │ │ │ │ │ ├── config.cc │ │ │ │ │ ├── config.h │ │ │ │ │ ├── tap_config.h │ │ │ │ │ ├── tap_config_impl.cc │ │ │ │ │ ├── tap_config_impl.h │ │ │ │ │ ├── tap_filter.cc │ │ │ │ │ └── tap_filter.h │ │ │ │ ├── wasm/ │ │ │ │ │ ├── BUILD │ │ │ │ │ ├── config.cc │ │ │ │ │ ├── config.h │ │ │ │ │ ├── wasm_filter.cc │ │ │ │ │ └── wasm_filter.h │ │ │ │ └── well_known_names.h │ │ │ ├── listener/ │ │ │ │ ├── BUILD │ │ │ │ ├── http_inspector/ │ │ │ │ │ ├── BUILD │ │ │ │ │ ├── config.cc │ │ │ │ │ ├── http_inspector.cc │ │ │ │ │ └── http_inspector.h │ │ │ │ ├── original_dst/ │ │ │ │ │ ├── BUILD │ │ │ │ │ ├── config.cc │ │ │ │ │ ├── original_dst.cc │ │ │ │ │ └── original_dst.h │ │ │ │ ├── original_src/ │ │ │ │ │ ├── BUILD │ │ │ │ │ ├── config.cc │ │ │ │ │ ├── config.h │ │ │ │ │ ├── original_src.cc │ │ │ │ │ ├── original_src.h │ │ │ │ │ ├── original_src_config_factory.cc │ │ │ │ │ └── original_src_config_factory.h │ │ │ │ ├── proxy_protocol/ │ │ │ │ │ ├── BUILD │ │ │ │ │ ├── config.cc │ │ │ │ │ ├── proxy_protocol.cc │ │ │ │ │ ├── proxy_protocol.h │ │ │ │ │ └── proxy_protocol_header.h │ │ │ │ ├── tls_inspector/ │ │ │ │ │ ├── BUILD │ │ │ │ │ ├── config.cc │ │ │ │ │ ├── tls_inspector.cc │ │ │ │ │ └── tls_inspector.h │ │ │ │ └── well_known_names.h │ │ │ ├── network/ │ │ │ │ ├── BUILD │ │ │ │ ├── client_ssl_auth/ │ │ │ │ │ ├── BUILD │ │ │ │ │ ├── client_ssl_auth.cc │ │ │ │ │ ├── client_ssl_auth.h │ │ │ │ │ ├── config.cc │ │ │ │ │ └── config.h │ │ │ │ ├── common/ │ │ │ │ │ ├── BUILD │ │ │ │ │ ├── factory_base.h │ │ │ │ │ ├── redis/ │ │ │ │ │ │ ├── BUILD │ │ │ │ │ │ ├── client.h │ │ │ │ │ │ ├── client_impl.cc │ │ │ │ │ │ ├── client_impl.h │ │ │ │ │ │ ├── codec.h │ │ │ │ │ │ ├── codec_impl.cc │ │ │ │ │ │ ├── codec_impl.h │ │ │ │ │ │ ├── fault.h │ │ │ │ │ │ ├── fault_impl.cc │ │ │ │ │ │ ├── fault_impl.h │ │ │ │ │ │ ├── redis_command_stats.cc │ │ │ │ │ │ ├── redis_command_stats.h │ │ │ │ │ │ ├── supported_commands.h │ │ │ │ │ │ ├── utility.cc │ │ │ │ │ │ └── utility.h │ │ │ │ │ └── utility.h │ │ │ │ ├── direct_response/ │ │ │ │ │ ├── BUILD │ │ │ │ │ ├── config.cc │ │ │ │ │ ├── filter.cc │ │ │ │ │ └── filter.h │ │ │ │ ├── dubbo_proxy/ │ │ │ │ │ ├── BUILD │ │ │ │ │ ├── active_message.cc │ │ │ │ │ ├── active_message.h │ │ │ │ │ ├── app_exception.cc │ │ │ │ │ ├── app_exception.h │ │ │ │ │ ├── buffer_helper.cc │ │ │ │ │ ├── buffer_helper.h │ │ │ │ │ ├── config.cc │ │ │ │ │ ├── config.h │ │ │ │ │ ├── conn_manager.cc │ │ │ │ │ ├── conn_manager.h │ │ │ │ │ ├── decoder.cc │ │ │ │ │ ├── decoder.h │ │ │ │ │ ├── decoder_event_handler.h │ │ │ │ │ ├── dubbo_hessian2_serializer_impl.cc │ │ │ │ │ ├── dubbo_hessian2_serializer_impl.h │ │ │ │ │ ├── dubbo_protocol_impl.cc │ │ │ │ │ ├── dubbo_protocol_impl.h │ │ │ │ │ ├── filters/ │ │ │ │ │ │ ├── BUILD │ │ │ │ │ │ ├── factory_base.h │ │ │ │ │ │ ├── filter.h │ │ │ │ │ │ ├── filter_config.h │ │ │ │ │ │ └── well_known_names.h │ │ │ │ │ ├── heartbeat_response.cc │ │ │ │ │ ├── heartbeat_response.h │ │ │ │ │ ├── hessian_utils.cc │ │ │ │ │ ├── hessian_utils.h │ │ │ │ │ ├── message.h │ │ │ │ │ ├── message_impl.h │ │ │ │ │ ├── metadata.h │ │ │ │ │ ├── protocol.h │ │ │ │ │ ├── protocol_constants.h │ │ │ │ │ ├── router/ │ │ │ │ │ │ ├── BUILD │ │ │ │ │ │ ├── config.cc │ │ │ │ │ │ ├── config.h │ │ │ │ │ │ ├── route.h │ │ │ │ │ │ ├── route_matcher.cc │ │ │ │ │ │ ├── route_matcher.h │ │ │ │ │ │ ├── router.h │ │ │ │ │ │ ├── router_impl.cc │ │ │ │ │ │ └── router_impl.h │ │ │ │ │ ├── serializer.h │ │ │ │ │ ├── serializer_impl.cc │ │ │ │ │ ├── serializer_impl.h │ │ │ │ │ └── stats.h │ │ │ │ ├── echo/ │ │ │ │ │ ├── BUILD │ │ │ │ │ ├── config.cc │ │ │ │ │ ├── echo.cc │ │ │ │ │ └── echo.h │ │ │ │ ├── ext_authz/ │ │ │ │ │ ├── BUILD │ │ │ │ │ ├── config.cc │ │ │ │ │ ├── config.h │ │ │ │ │ ├── ext_authz.cc │ │ │ │ │ └── ext_authz.h │ │ │ │ ├── http_connection_manager/ │ │ │ │ │ ├── BUILD │ │ │ │ │ ├── config.cc │ │ │ │ │ └── config.h │ │ │ │ ├── kafka/ │ │ │ │ │ ├── BUILD │ │ │ │ │ ├── broker/ │ │ │ │ │ │ ├── config.cc │ │ │ │ │ │ ├── config.h │ │ │ │ │ │ ├── filter.cc │ │ │ │ │ │ └── filter.h │ │ │ │ │ ├── codec.h │ │ │ │ │ ├── kafka_request.h │ │ │ │ │ ├── kafka_request_parser.cc │ │ │ │ │ ├── kafka_request_parser.h │ │ │ │ │ ├── kafka_response.h │ │ │ │ │ ├── kafka_response_parser.cc │ │ │ │ │ ├── kafka_response_parser.h │ │ │ │ │ ├── kafka_types.h │ │ │ │ │ ├── parser.h │ │ │ │ │ ├── protocol/ │ │ │ │ │ │ ├── complex_type_template.j2 │ │ │ │ │ │ ├── generator.py │ │ │ │ │ │ ├── kafka_request_resolver_cc.j2 │ │ │ │ │ │ ├── kafka_response_resolver_cc.j2 │ │ │ │ │ │ ├── launcher.py │ │ │ │ │ │ ├── request_metrics_h.j2 │ │ │ │ │ │ ├── request_parser.j2 │ │ │ │ │ │ ├── requests_h.j2 │ │ │ │ │ │ ├── response_metrics_h.j2 │ │ │ │ │ │ ├── response_parser.j2 │ │ │ │ │ │ └── responses_h.j2 │ │ │ │ │ ├── request_codec.cc │ │ │ │ │ ├── request_codec.h │ │ │ │ │ ├── requirements.txt │ │ │ │ │ ├── response_codec.cc │ │ │ │ │ ├── response_codec.h │ │ │ │ │ ├── serialization/ │ │ │ │ │ │ ├── generator.py │ │ │ │ │ │ ├── launcher.py │ │ │ │ │ │ └── serialization_composite_h.j2 │ │ │ │ │ ├── serialization.cc │ │ │ │ │ ├── serialization.h │ │ │ │ │ └── tagged_fields.h │ │ │ │ ├── local_ratelimit/ │ │ │ │ │ ├── BUILD │ │ │ │ │ ├── config.cc │ │ │ │ │ ├── config.h │ │ │ │ │ ├── local_ratelimit.cc │ │ │ │ │ └── local_ratelimit.h │ │ │ │ ├── mongo_proxy/ │ │ │ │ │ ├── BUILD │ │ │ │ │ ├── bson.h │ │ │ │ │ ├── bson_impl.cc │ │ │ │ │ ├── bson_impl.h │ │ │ │ │ ├── codec.h │ │ │ │ │ ├── codec_impl.cc │ │ │ │ │ ├── codec_impl.h │ │ │ │ │ ├── config.cc │ │ │ │ │ ├── config.h │ │ │ │ │ ├── mongo_stats.cc │ │ │ │ │ ├── mongo_stats.h │ │ │ │ │ ├── proxy.cc │ │ │ │ │ ├── proxy.h │ │ │ │ │ ├── utility.cc │ │ │ │ │ └── utility.h │ │ │ │ ├── mysql_proxy/ │ │ │ │ │ ├── BUILD │ │ │ │ │ ├── mysql_codec.h │ │ │ │ │ ├── mysql_codec_clogin.cc │ │ │ │ │ ├── mysql_codec_clogin.h │ │ │ │ │ ├── mysql_codec_clogin_resp.cc │ │ │ │ │ ├── mysql_codec_clogin_resp.h │ │ │ │ │ ├── mysql_codec_command.cc │ │ │ │ │ ├── mysql_codec_command.h │ │ │ │ │ ├── mysql_codec_greeting.cc │ │ │ │ │ ├── mysql_codec_greeting.h │ │ │ │ │ ├── mysql_codec_switch_resp.cc │ │ │ │ │ ├── mysql_codec_switch_resp.h │ │ │ │ │ ├── mysql_config.cc │ │ │ │ │ ├── mysql_config.h │ │ │ │ │ ├── mysql_decoder.cc │ │ │ │ │ ├── mysql_decoder.h │ │ │ │ │ ├── mysql_filter.cc │ │ │ │ │ ├── mysql_filter.h │ │ │ │ │ ├── mysql_session.h │ │ │ │ │ ├── mysql_utils.cc │ │ │ │ │ └── mysql_utils.h │ │ │ │ ├── postgres_proxy/ │ │ │ │ │ ├── BUILD │ │ │ │ │ ├── config.cc │ │ │ │ │ ├── config.h │ │ │ │ │ ├── postgres_decoder.cc │ │ │ │ │ ├── postgres_decoder.h │ │ │ │ │ ├── postgres_filter.cc │ │ │ │ │ ├── postgres_filter.h │ │ │ │ │ ├── postgres_message.cc │ │ │ │ │ ├── postgres_message.h │ │ │ │ │ └── postgres_session.h │ │ │ │ ├── ratelimit/ │ │ │ │ │ ├── BUILD │ │ │ │ │ ├── config.cc │ │ │ │ │ ├── config.h │ │ │ │ │ ├── ratelimit.cc │ │ │ │ │ └── ratelimit.h │ │ │ │ ├── rbac/ │ │ │ │ │ ├── BUILD │ │ │ │ │ ├── config.cc │ │ │ │ │ ├── config.h │ │ │ │ │ ├── rbac_filter.cc │ │ │ │ │ └── rbac_filter.h │ │ │ │ ├── redis_proxy/ │ │ │ │ │ ├── BUILD │ │ │ │ │ ├── command_splitter.h │ │ │ │ │ ├── command_splitter_impl.cc │ │ │ │ │ ├── command_splitter_impl.h │ │ │ │ │ ├── config.cc │ │ │ │ │ ├── config.h │ │ │ │ │ ├── conn_pool.h │ │ │ │ │ ├── conn_pool_impl.cc │ │ │ │ │ ├── conn_pool_impl.h │ │ │ │ │ ├── proxy_filter.cc │ │ │ │ │ ├── proxy_filter.h │ │ │ │ │ ├── router.h │ │ │ │ │ ├── router_impl.cc │ │ │ │ │ └── router_impl.h │ │ │ │ ├── rocketmq_proxy/ │ │ │ │ │ ├── BUILD │ │ │ │ │ ├── active_message.cc │ │ │ │ │ ├── active_message.h │ │ │ │ │ ├── codec.cc │ │ │ │ │ ├── codec.h │ │ │ │ │ ├── config.cc │ │ │ │ │ ├── config.h │ │ │ │ │ ├── conn_manager.cc │ │ │ │ │ ├── conn_manager.h │ │ │ │ │ ├── metadata.h │ │ │ │ │ ├── protocol.cc │ │ │ │ │ ├── protocol.h │ │ │ │ │ ├── router/ │ │ │ │ │ │ ├── BUILD │ │ │ │ │ │ ├── route_matcher.cc │ │ │ │ │ │ ├── route_matcher.h │ │ │ │ │ │ ├── router.h │ │ │ │ │ │ ├── router_impl.cc │ │ │ │ │ │ └── router_impl.h │ │ │ │ │ ├── stats.h │ │ │ │ │ ├── topic_route.cc │ │ │ │ │ ├── topic_route.h │ │ │ │ │ └── well_known_names.h │ │ │ │ ├── sni_cluster/ │ │ │ │ │ ├── BUILD │ │ │ │ │ ├── config.cc │ │ │ │ │ ├── config.h │ │ │ │ │ ├── sni_cluster.cc │ │ │ │ │ └── sni_cluster.h │ │ │ │ ├── sni_dynamic_forward_proxy/ │ │ │ │ │ ├── BUILD │ │ │ │ │ ├── config.cc │ │ │ │ │ ├── config.h │ │ │ │ │ ├── proxy_filter.cc │ │ │ │ │ └── proxy_filter.h │ │ │ │ ├── tcp_proxy/ │ │ │ │ │ ├── BUILD │ │ │ │ │ ├── config.cc │ │ │ │ │ └── config.h │ │ │ │ ├── thrift_proxy/ │ │ │ │ │ ├── BUILD │ │ │ │ │ ├── app_exception_impl.cc │ │ │ │ │ ├── app_exception_impl.h │ │ │ │ │ ├── auto_protocol_impl.cc │ │ │ │ │ ├── auto_protocol_impl.h │ │ │ │ │ ├── auto_transport_impl.cc │ │ │ │ │ ├── auto_transport_impl.h │ │ │ │ │ ├── binary_protocol_impl.cc │ │ │ │ │ ├── binary_protocol_impl.h │ │ │ │ │ ├── buffer_helper.cc │ │ │ │ │ ├── buffer_helper.h │ │ │ │ │ ├── compact_protocol_impl.cc │ │ │ │ │ ├── compact_protocol_impl.h │ │ │ │ │ ├── config.cc │ │ │ │ │ ├── config.h │ │ │ │ │ ├── conn_manager.cc │ │ │ │ │ ├── conn_manager.h │ │ │ │ │ ├── conn_state.h │ │ │ │ │ ├── decoder.cc │ │ │ │ │ ├── decoder.h │ │ │ │ │ ├── decoder_events.h │ │ │ │ │ ├── docs/ │ │ │ │ │ │ ├── thrift_state_machine.dot │ │ │ │ │ │ └── thrift_state_machine.md │ │ │ │ │ ├── filters/ │ │ │ │ │ │ ├── BUILD │ │ │ │ │ │ ├── factory_base.h │ │ │ │ │ │ ├── filter.h │ │ │ │ │ │ ├── filter_config.h │ │ │ │ │ │ ├── pass_through_filter.h │ │ │ │ │ │ ├── ratelimit/ │ │ │ │ │ │ │ ├── BUILD │ │ │ │ │ │ │ ├── config.cc │ │ │ │ │ │ │ ├── config.h │ │ │ │ │ │ │ ├── ratelimit.cc │ │ │ │ │ │ │ └── ratelimit.h │ │ │ │ │ │ └── well_known_names.h │ │ │ │ │ ├── framed_transport_impl.cc │ │ │ │ │ ├── framed_transport_impl.h │ │ │ │ │ ├── header_transport_impl.cc │ │ │ │ │ ├── header_transport_impl.h │ │ │ │ │ ├── metadata.h │ │ │ │ │ ├── protocol.h │ │ │ │ │ ├── protocol_converter.h │ │ │ │ │ ├── router/ │ │ │ │ │ │ ├── BUILD │ │ │ │ │ │ ├── config.cc │ │ │ │ │ │ ├── config.h │ │ │ │ │ │ ├── router.h │ │ │ │ │ │ ├── router_impl.cc │ │ │ │ │ │ ├── router_impl.h │ │ │ │ │ │ ├── router_ratelimit.h │ │ │ │ │ │ ├── router_ratelimit_impl.cc │ │ │ │ │ │ └── router_ratelimit_impl.h │ │ │ │ │ ├── stats.h │ │ │ │ │ ├── thrift.h │ │ │ │ │ ├── thrift_object.h │ │ │ │ │ ├── thrift_object_impl.cc │ │ │ │ │ ├── thrift_object_impl.h │ │ │ │ │ ├── tracing.h │ │ │ │ │ ├── transport.h │ │ │ │ │ ├── twitter_protocol_impl.cc │ │ │ │ │ ├── twitter_protocol_impl.h │ │ │ │ │ ├── unframed_transport_impl.cc │ │ │ │ │ └── unframed_transport_impl.h │ │ │ │ ├── wasm/ │ │ │ │ │ ├── BUILD │ │ │ │ │ ├── config.cc │ │ │ │ │ ├── config.h │ │ │ │ │ ├── wasm_filter.cc │ │ │ │ │ └── wasm_filter.h │ │ │ │ ├── well_known_names.h │ │ │ │ └── zookeeper_proxy/ │ │ │ │ ├── BUILD │ │ │ │ ├── config.cc │ │ │ │ ├── config.h │ │ │ │ ├── decoder.cc │ │ │ │ ├── decoder.h │ │ │ │ ├── filter.cc │ │ │ │ ├── filter.h │ │ │ │ ├── utils.cc │ │ │ │ └── utils.h │ │ │ └── udp/ │ │ │ ├── dns_filter/ │ │ │ │ ├── BUILD │ │ │ │ ├── config.cc │ │ │ │ ├── config.h │ │ │ │ ├── dns_filter.cc │ │ │ │ ├── dns_filter.h │ │ │ │ ├── dns_filter_constants.h │ │ │ │ ├── dns_filter_resolver.cc │ │ │ │ ├── dns_filter_resolver.h │ │ │ │ ├── dns_filter_utils.cc │ │ │ │ ├── dns_filter_utils.h │ │ │ │ ├── dns_parser.cc │ │ │ │ └── dns_parser.h │ │ │ └── udp_proxy/ │ │ │ ├── BUILD │ │ │ ├── config.cc │ │ │ ├── config.h │ │ │ ├── hash_policy_impl.cc │ │ │ ├── hash_policy_impl.h │ │ │ ├── udp_proxy_filter.cc │ │ │ └── udp_proxy_filter.h │ │ ├── grpc_credentials/ │ │ │ ├── BUILD │ │ │ ├── aws_iam/ │ │ │ │ ├── BUILD │ │ │ │ ├── config.cc │ │ │ │ └── config.h │ │ │ ├── example/ │ │ │ │ ├── BUILD │ │ │ │ ├── config.cc │ │ │ │ └── config.h │ │ │ ├── file_based_metadata/ │ │ │ │ ├── BUILD │ │ │ │ ├── config.cc │ │ │ │ └── config.h │ │ │ └── well_known_names.h │ │ ├── health_checkers/ │ │ │ ├── BUILD │ │ │ ├── redis/ │ │ │ │ ├── BUILD │ │ │ │ ├── config.cc │ │ │ │ ├── config.h │ │ │ │ ├── redis.cc │ │ │ │ ├── redis.h │ │ │ │ └── utility.h │ │ │ └── well_known_names.h │ │ ├── internal_redirect/ │ │ │ ├── BUILD │ │ │ ├── allow_listed_routes/ │ │ │ │ ├── BUILD │ │ │ │ ├── allow_listed_routes.h │ │ │ │ ├── config.cc │ │ │ │ └── config.h │ │ │ ├── previous_routes/ │ │ │ │ ├── BUILD │ │ │ │ ├── config.cc │ │ │ │ ├── config.h │ │ │ │ ├── previous_routes.cc │ │ │ │ └── previous_routes.h │ │ │ ├── safe_cross_scheme/ │ │ │ │ ├── BUILD │ │ │ │ ├── config.cc │ │ │ │ ├── config.h │ │ │ │ └── safe_cross_scheme.h │ │ │ └── well_known_names.h │ │ ├── quic_listeners/ │ │ │ └── quiche/ │ │ │ ├── BUILD │ │ │ ├── active_quic_listener.cc │ │ │ ├── active_quic_listener.h │ │ │ ├── active_quic_listener_config.cc │ │ │ ├── active_quic_listener_config.h │ │ │ ├── codec_impl.cc │ │ │ ├── codec_impl.h │ │ │ ├── envoy_quic_alarm.cc │ │ │ ├── envoy_quic_alarm.h │ │ │ ├── envoy_quic_alarm_factory.cc │ │ │ ├── envoy_quic_alarm_factory.h │ │ │ ├── envoy_quic_client_connection.cc │ │ │ ├── envoy_quic_client_connection.h │ │ │ ├── envoy_quic_client_session.cc │ │ │ ├── envoy_quic_client_session.h │ │ │ ├── envoy_quic_client_stream.cc │ │ │ ├── envoy_quic_client_stream.h │ │ │ ├── envoy_quic_connection.cc │ │ │ ├── envoy_quic_connection.h │ │ │ ├── envoy_quic_connection_helper.h │ │ │ ├── envoy_quic_dispatcher.cc │ │ │ ├── envoy_quic_dispatcher.h │ │ │ ├── envoy_quic_packet_writer.cc │ │ │ ├── envoy_quic_packet_writer.h │ │ │ ├── envoy_quic_proof_source.cc │ │ │ ├── envoy_quic_proof_source.h │ │ │ ├── envoy_quic_proof_source_base.cc │ │ │ ├── envoy_quic_proof_source_base.h │ │ │ ├── envoy_quic_proof_verifier.cc │ │ │ ├── envoy_quic_proof_verifier.h │ │ │ ├── envoy_quic_proof_verifier_base.cc │ │ │ ├── envoy_quic_proof_verifier_base.h │ │ │ ├── envoy_quic_serve
Showing preview only (2,162K chars total). Download the full file or copy to clipboard to get everything.
SYMBOL INDEX (23800 symbols across 3199 files)
FILE: api/test/build/build_test.cc
function main (line 8) | int main(int argc, char* argv[]) {
FILE: api/test/build/go_build_test.go
function TestNoop (line 16) | func TestNoop(t *testing.T) {
FILE: api/test/validate/pgv_test.cc
type TestCase (line 34) | struct TestCase {
method run (line 35) | void run() {
function main (line 55) | int main(int argc, char* argv[]) {
FILE: api/tools/generate_listeners.py
function ProtoToStruct (line 24) | def ProtoToStruct(proto):
function ParseProto (line 32) | def ParseProto(path, filter_name):
function GenerateListeners (line 43) | def GenerateListeners(listeners_pb_path, output_pb_path, output_json_pat...
FILE: api/tools/tap2pcap.py
function DumpEvent (line 34) | def DumpEvent(direction, timestamp, data):
function Tap2Pcap (line 46) | def Tap2Pcap(tap_path, pcap_path):
FILE: ci/flaky_test/process_xml.py
function checkTestStatus (line 11) | def checkTestStatus(file):
function parseXML (line 22) | def parseXML(file, visited):
function processFindOutput (line 53) | def processFindOutput(f, problematic_tests):
function getGitInfo (line 68) | def getGitInfo(CI_TARGET):
FILE: configs/configgen.py
function generate_config (line 99) | def generate_config(template_path, template, output_file, **context):
FILE: docs/_ext/validating_code_block.py
class ValidatingCodeBlock (line 14) | class ValidatingCodeBlock(CodeBlock):
method run (line 31) | def run(self):
function setup (line 55) | def setup(app):
FILE: docs/conf.py
class SubstitutionCodeBlock (line 23) | class SubstitutionCodeBlock(CodeBlock):
method run (line 28) | def run(self):
function setup (line 45) | def setup(app):
FILE: docs/generate_extension_db.py
class ExtensionDbError (line 28) | class ExtensionDbError(Exception):
function IsMissing (line 32) | def IsMissing(value):
function GetExtensionMetadata (line 36) | def GetExtensionMetadata(target):
FILE: docs/generate_extension_rst.py
function FormatItem (line 11) | def FormatItem(extension, metadata):
FILE: docs/generate_external_dep_rst.py
function CsvTable (line 24) | def CsvTable(headers, widths, rows):
function RstLink (line 36) | def RstLink(text, url):
function NistCpeUrl (line 41) | def NistCpeUrl(cpe):
function RenderVersion (line 47) | def RenderVersion(version):
function RenderTitle (line 55) | def RenderTitle(title):
function CsvRow (line 82) | def CsvRow(dep):
FILE: docs/root/_static/searchtools.js
function splitQuery (line 52) | function splitQuery(query) {
function pulse (line 127) | function pulse() {
function renderApiVersionLabel (line 256) | function renderApiVersionLabel(linkUrl) {
function displayNextItem (line 267) | function displayNextItem() {
FILE: examples/cache/service.py
function get (line 15) | def get(service_number, response_id):
FILE: examples/cors/backend/service.py
function cors_enabled (line 8) | def cors_enabled(status):
FILE: examples/cors/frontend/service.py
function index (line 8) | def index():
FILE: examples/csrf/crosssite/service.py
function index (line 10) | def index():
FILE: examples/csrf/samesite/service.py
function csrf_ignored (line 10) | def csrf_ignored():
function csrf_with_status (line 15) | def csrf_with_status(status):
function index (line 20) | def index():
FILE: examples/ext_authz/auth/grpc-service/main.go
function main (line 18) | func main() {
FILE: examples/ext_authz/auth/grpc-service/pkg/auth/users.go
type Users (line 9) | type Users
method Check (line 12) | func (u Users) Check(key string) (bool, string) {
function LoadUsers (line 21) | func LoadUsers(jsonFile string) (Users, error) {
FILE: examples/ext_authz/auth/grpc-service/pkg/auth/v2/auth.go
type server (line 17) | type server struct
method Check (line 30) | func (s *server) Check(
function New (line 24) | func New(users auth.Users) envoy_service_auth_v2.AuthorizationServer {
FILE: examples/ext_authz/auth/grpc-service/pkg/auth/v3/auth.go
type server (line 17) | type server struct
method Check (line 30) | func (s *server) Check(
function New (line 24) | func New(users auth.Users) envoy_service_auth_v3.AuthorizationServer {
FILE: examples/ext_authz/auth/http-service/server.js
function checkToken (line 27) | function checkToken(token) {
FILE: examples/ext_authz/upstream/service/server.py
function hello (line 7) | def hello():
FILE: examples/front-proxy/service.py
function hello (line 27) | def hello(service_number):
function trace (line 34) | def trace(service_number):
FILE: examples/grpc-bridge/client/client.py
class KVClient (line 22) | class KVClient():
method get (line 24) | def get(self, key):
method set (line 35) | def set(self, key, value):
function run (line 43) | def run():
FILE: examples/grpc-bridge/server/service.go
type KV (line 16) | type KV struct
method Get (line 21) | func (k *KV) Get(ctx context.Context, in *kv.GetRequest) (*kv.GetRespo...
method Set (line 31) | func (k *KV) Set(ctx context.Context, in *kv.SetRequest) (*kv.SetRespo...
function NewKVStore (line 41) | func NewKVStore() (kv *KV) {
function main (line 49) | func main() {
FILE: examples/load-reporting-service/http_server.py
function hello (line 7) | def hello():
FILE: examples/load-reporting-service/main.go
function main (line 12) | func main() {
FILE: examples/load-reporting-service/server/lrs_server.go
constant StatsFrequencyInSeconds (line 12) | StatsFrequencyInSeconds = 2
type Server (line 15) | type Server interface
function NewServer (line 20) | func NewServer() Server {
type server (line 24) | type server struct
method StreamLoadStats (line 33) | func (s *server) StreamLoadStats(stream gcpLoadStats.LoadReportingServ...
method HandleRequest (line 45) | func (s *server) HandleRequest(stream gcpLoadStats.LoadReportingServic...
FILE: examples/wasm/envoy_filter_http_wasm_example.cc
class ExampleRootContext (line 8) | class ExampleRootContext : public RootContext {
method ExampleRootContext (line 10) | explicit ExampleRootContext(uint32_t id, std::string_view root_id) : R...
class ExampleContext (line 17) | class ExampleContext : public Context {
method ExampleContext (line 19) | explicit ExampleContext(uint32_t id, RootContext* root) : Context(id, ...
function FilterHeadersStatus (line 49) | FilterHeadersStatus ExampleContext::onRequestHeaders(uint32_t, bool) {
function FilterHeadersStatus (line 60) | FilterHeadersStatus ExampleContext::onResponseHeaders(uint32_t, bool) {
function FilterDataStatus (line 73) | FilterDataStatus ExampleContext::onRequestBody(size_t body_buffer_length,
function FilterDataStatus (line 80) | FilterDataStatus ExampleContext::onResponseBody(size_t /* body_buffer_le...
FILE: include/envoy/access_log/access_log.h
function class (line 15) | class AccessLogFile {
FILE: include/envoy/api/api.h
function namespace (line 14) | namespace Envoy {
FILE: include/envoy/api/io_error.h
function namespace (line 9) | namespace Envoy {
FILE: include/envoy/api/os_sys_calls.h
function namespace (line 12) | namespace Envoy {
FILE: include/envoy/api/os_sys_calls_common.h
function namespace (line 8) | namespace Envoy {
FILE: include/envoy/api/os_sys_calls_hot_restart.h
function namespace (line 11) | namespace Envoy {
FILE: include/envoy/api/os_sys_calls_linux.h
function namespace (line 12) | namespace Envoy {
FILE: include/envoy/buffer/buffer.h
function namespace (line 21) | namespace Envoy {
function class (line 395) | class WatermarkFactory {
FILE: include/envoy/common/backoff_strategy.h
function namespace (line 8) | namespace Envoy {
FILE: include/envoy/common/callback.h
function namespace (line 5) | namespace Envoy {
FILE: include/envoy/common/conn_pool.h
type class (line 13) | enum class
function class (line 28) | class Cancellable {
function class (line 42) | class Instance {
FILE: include/envoy/common/crypto/crypto.h
function namespace (line 5) | namespace Envoy {
FILE: include/envoy/common/exception.h
function namespace (line 6) | namespace Envoy {
FILE: include/envoy/common/interval_set.h
function namespace (line 8) | namespace Envoy {
FILE: include/envoy/common/matchers.h
function namespace (line 9) | namespace Envoy {
FILE: include/envoy/common/mutex_tracer.h
function namespace (line 8) | namespace Envoy {
FILE: include/envoy/common/platform.h
type mode_t (line 62) | typedef uint32_t mode_t;
type SOCKET (line 64) | typedef SOCKET os_fd_t;
type HANDLE (line 65) | typedef HANDLE filesystem_os_id_t;
type sa_family_t (line 67) | typedef unsigned int sa_family_t;
type iovec (line 70) | struct iovec {
type msghdr (line 77) | struct msghdr {
function absl (line 153) | constexpr absl::string_view null_device_path{"NUL"};
type os_fd_t (line 214) | typedef int os_fd_t;
type filesystem_os_id_t (line 215) | typedef int filesystem_os_id_t;
function absl (line 247) | constexpr absl::string_view null_device_path{"/dev/null"};
type mmsghdr (line 265) | struct mmsghdr {
FILE: include/envoy/common/random_generator.h
function namespace (line 9) | namespace Envoy {
FILE: include/envoy/common/regex.h
function namespace (line 7) | namespace Envoy {
FILE: include/envoy/common/scope_tracker.h
function namespace (line 7) | namespace Envoy {
FILE: include/envoy/common/time.h
function namespace (line 7) | namespace Envoy {
FILE: include/envoy/compression/compressor/compressor.h
function namespace (line 5) | namespace Envoy {
FILE: include/envoy/compression/compressor/config.h
function namespace (line 7) | namespace Envoy {
FILE: include/envoy/compression/compressor/factory.h
function namespace (line 5) | namespace Envoy {
FILE: include/envoy/compression/decompressor/config.h
function namespace (line 7) | namespace Envoy {
FILE: include/envoy/compression/decompressor/decompressor.h
function namespace (line 5) | namespace Envoy {
FILE: include/envoy/compression/decompressor/factory.h
function namespace (line 5) | namespace Envoy {
FILE: include/envoy/config/config_provider.h
function namespace (line 12) | namespace Envoy {
FILE: include/envoy/config/config_provider_manager.h
function namespace (line 10) | namespace Envoy {
FILE: include/envoy/config/extension_config_provider.h
function namespace (line 9) | namespace Envoy {
FILE: include/envoy/config/grpc_mux.h
function namespace (line 13) | namespace Envoy {
FILE: include/envoy/config/subscription.h
function ConfigUpdateFailureReason (line 19) | enum class ConfigUpdateFailureReason {
FILE: include/envoy/config/subscription_factory.h
function namespace (line 7) | namespace Envoy {
FILE: include/envoy/config/typed_config.h
function namespace (line 8) | namespace Envoy {
FILE: include/envoy/config/typed_metadata.h
function namespace (line 11) | namespace Envoy {
FILE: include/envoy/event/deferred_deletable.h
function namespace (line 5) | namespace Envoy {
FILE: include/envoy/event/dispatcher.h
function namespace (line 27) | namespace Envoy {
FILE: include/envoy/event/file_event.h
type FileReadyType (line 12) | struct FileReadyType {
type class (line 21) | enum class
function class (line 39) | class FileEvent {
FILE: include/envoy/event/range_timer.h
function namespace (line 11) | namespace Envoy {
FILE: include/envoy/event/schedulable_cb.h
function namespace (line 8) | namespace Envoy {
FILE: include/envoy/event/signal.h
function namespace (line 6) | namespace Envoy {
FILE: include/envoy/event/timer.h
function namespace (line 11) | namespace Envoy {
FILE: include/envoy/filesystem/filesystem.h
function class (line 22) | class File {
FILE: include/envoy/filesystem/watcher.h
function namespace (line 13) | namespace Envoy {
FILE: include/envoy/filter/http/filter_config_provider.h
function namespace (line 11) | namespace Envoy {
FILE: include/envoy/formatter/substitution_formatter.h
function class (line 17) | class Formatter {
FILE: include/envoy/grpc/async_client.h
function namespace (line 17) | namespace Envoy {
FILE: include/envoy/grpc/async_client_manager.h
function namespace (line 7) | namespace Envoy {
FILE: include/envoy/grpc/context.h
function namespace (line 8) | namespace Envoy {
FILE: include/envoy/grpc/google_grpc_creds.h
function namespace (line 12) | namespace Envoy {
FILE: include/envoy/grpc/status.h
function namespace (line 5) | namespace Envoy {
FILE: include/envoy/http/api_listener.h
function namespace (line 5) | namespace Envoy {
FILE: include/envoy/http/async_client.h
type class (line 39) | enum class
function class (line 50) | class Callbacks {
function virtual (line 160) | virtual void reset() PURE;
function send_xff (line 214) | bool send_xff{true};
function StreamOptions (line 223) | struct RequestOptions : public StreamOptions {
FILE: include/envoy/http/codec.h
function namespace (line 20) | namespace Http1 {
function namespace (line 24) | namespace Http2 {
type class (line 43) | enum class
function class (line 51) | class Http1StreamEncoderOptions {
function class (line 71) | class StreamEncoder {
function class (line 104) | class RequestEncoder : public virtual StreamEncoder {
function class (line 124) | class ResponseEncoder : public virtual StreamEncoder {
function class (line 159) | class StreamDecoder {
function class (line 181) | class RequestDecoder : public virtual StreamDecoder {
function class (line 215) | class ResponseDecoder : public virtual StreamDecoder {
type class (line 240) | enum class
function virtual (line 328) | virtual uint32_t bufferLimit() PURE;
function virtual (line 343) | virtual const Network::Address::InstanceConstSharedPtr& connectionLocalA...
type Http1Settings (line 369) | struct Http1Settings {
type class (line 388) | enum class
function stream_error_on_invalid_http_message_ (line 403) | bool stream_error_on_invalid_http_message_{false};
function class (line 409) | class Connection {
FILE: include/envoy/http/codes.h
function namespace (line 8) | namespace Envoy {
FILE: include/envoy/http/conn_pool.h
function namespace (line 12) | namespace Envoy {
FILE: include/envoy/http/context.h
function namespace (line 8) | namespace Envoy {
FILE: include/envoy/http/filter.h
type class (line 28) | enum class
type class (line 105) | enum class
type class (line 143) | enum class
function FilterMetadataStatus (line 155) | enum class FilterMetadataStatus {
function class (line 164) | class StreamFilterCallbacks {
FILE: include/envoy/http/hash_policy.h
function namespace (line 9) | namespace Envoy {
FILE: include/envoy/http/header_map.h
function namespace (line 20) | namespace Envoy {
FILE: include/envoy/http/message.h
function namespace (line 9) | namespace Envoy {
FILE: include/envoy/http/metadata_interface.h
function class (line 26) | class MetadataMap : public UnorderedStringMap {
FILE: include/envoy/http/protocol.h
function namespace (line 5) | namespace Envoy {
FILE: include/envoy/http/query_params.h
function namespace (line 6) | namespace Envoy {
FILE: include/envoy/http/request_id_extension.h
function namespace (line 9) | namespace Envoy {
FILE: include/envoy/init/manager.h
function namespace (line 10) | namespace Envoy {
FILE: include/envoy/init/target.h
function namespace (line 10) | namespace Envoy {
FILE: include/envoy/init/watcher.h
function namespace (line 9) | namespace Envoy {
FILE: include/envoy/json/json_object.h
function namespace (line 12) | namespace Envoy {
FILE: include/envoy/local_info/local_info.h
function namespace (line 9) | namespace Envoy {
FILE: include/envoy/network/address.h
function class (line 28) | class Ipv4 {
function virtual (line 113) | virtual bool abstractNamespace() const PURE;
type class (line 135) | enum class
FILE: include/envoy/network/connection.h
function namespace (line 18) | namespace Event {
type class (line 27) | enum class
type class (line 36) | enum class
function class (line 41) | class ConnectionCallbacks {
FILE: include/envoy/network/connection_balancer.h
function namespace (line 5) | namespace Envoy {
FILE: include/envoy/network/connection_handler.h
function class (line 18) | class ConnectionHandler {
FILE: include/envoy/network/dns.h
function class (line 18) | class ActiveDnsQuery {
type DnsResponse (line 31) | struct DnsResponse {
function DnsLookupFamily (line 39) | enum class DnsLookupFamily { V4Only, V6Only, Auto };
FILE: include/envoy/network/drain_decision.h
function namespace (line 5) | namespace Envoy {
FILE: include/envoy/network/exception.h
function namespace (line 5) | namespace Envoy {
FILE: include/envoy/network/filter.h
function namespace (line 14) | namespace Event {
type UdpRecvData (line 23) | struct UdpRecvData
type class (line 28) | enum class
function class (line 38) | class NetworkFilterCallbacks {
function class (line 51) | class WriteFilterCallbacks : public virtual NetworkFilterCallbacks {
function class (line 78) | class WriteFilter {
function virtual (line 180) | virtual FilterStatus onNewConnection() PURE;
function class (line 252) | class ListenerFilterCallbacks {
FILE: include/envoy/network/hash_policy.h
function namespace (line 7) | namespace Envoy {
FILE: include/envoy/network/io_handle.h
function namespace (line 15) | namespace Envoy {
FILE: include/envoy/network/listen_socket.h
function namespace (line 18) | namespace Envoy {
FILE: include/envoy/network/listener.h
type UdpRecvData (line 209) | struct UdpRecvData {
type UdpSendData (line 235) | struct UdpSendData {
function virtual (line 267) | virtual void onReadReady() PURE;
FILE: include/envoy/network/post_io_action.h
function namespace (line 3) | namespace Envoy {
FILE: include/envoy/network/proxy_protocol.h
function namespace (line 5) | namespace Envoy {
FILE: include/envoy/network/resolver.h
function namespace (line 13) | namespace Envoy {
FILE: include/envoy/network/socket.h
function namespace (line 16) | namespace Envoy {
FILE: include/envoy/network/socket_interface.h
function namespace (line 7) | namespace Envoy {
FILE: include/envoy/network/transport_socket.h
type class (line 18) | enum class
type IoResult (line 23) | struct IoResult {
function virtual (line 48) | virtual IoHandle& ioHandle() PURE;
FILE: include/envoy/network/udp_packet_writer_config.h
function namespace (line 8) | namespace Envoy {
FILE: include/envoy/network/udp_packet_writer_handler.h
function namespace (line 13) | namespace Envoy {
FILE: include/envoy/protobuf/message_validator.h
function namespace (line 10) | namespace Envoy {
FILE: include/envoy/ratelimit/ratelimit.h
function namespace (line 10) | namespace Envoy {
FILE: include/envoy/registry/registry.h
function namespace (line 26) | namespace Envoy {
function disableFactory (line 253) | static bool disableFactory(absl::string_view name) {
function rebuildFactoriesByTypeForTest (line 385) | static void rebuildFactoriesByTypeForTest() {
function explicit (line 531) | explicit RegisterFactory(std::initializer_list<absl::string_view> deprec...
function T (line 595) | T instance_{}
FILE: include/envoy/router/internal_redirect.h
function namespace (line 10) | namespace Envoy {
FILE: include/envoy/router/rds.h
function namespace (line 9) | namespace Envoy {
FILE: include/envoy/router/route_config_provider_manager.h
function namespace (line 17) | namespace Envoy {
FILE: include/envoy/router/route_config_update_receiver.h
function namespace (line 15) | namespace Envoy {
FILE: include/envoy/router/router.h
function namespace (line 36) | namespace Upstream {
function class (line 46) | class ResponseEntry {
function virtual (line 72) | virtual Http::Code responseCode() const PURE;
function virtual (line 428) | virtual const std::string& cluster() const PURE;
function virtual (line 522) | virtual Stats::StatName statName() const PURE;
type class (line 673) | enum class
function virtual (line 690) | virtual PathMatchType matchType() const PURE;
function Derived (line 905) | Derived* mostSpecificPerFilterConfigTyped(const std::string& name) const {
function virtual (line 982) | virtual const envoy::type::v3::FractionalPercent& getClientSampling() co...
type class (line 1055) | enum class
type class (line 1065) | enum class
function class (line 1091) | class Config {
FILE: include/envoy/router/router_ratelimit.h
function namespace (line 13) | namespace Envoy {
FILE: include/envoy/router/scopes.h
function namespace (line 8) | namespace Envoy {
FILE: include/envoy/router/shadow_writer.h
function namespace (line 10) | namespace Envoy {
FILE: include/envoy/router/string_accessor.h
function namespace (line 8) | namespace Envoy {
FILE: include/envoy/runtime/runtime.h
function namespace (line 24) | namespace Upstream {
type Entry (line 35) | struct Entry {
function class (line 49) | class OverrideLayer {
FILE: include/envoy/secret/secret_callbacks.h
function namespace (line 5) | namespace Envoy {
FILE: include/envoy/secret/secret_manager.h
function namespace (line 9) | namespace Envoy {
FILE: include/envoy/secret/secret_provider.h
function namespace (line 11) | namespace Envoy {
FILE: include/envoy/server/access_log_config.h
function namespace (line 11) | namespace Envoy {
FILE: include/envoy/server/active_udp_listener_config.h
function namespace (line 8) | namespace Envoy {
FILE: include/envoy/server/admin.h
function namespace (line 17) | namespace Envoy {
FILE: include/envoy/server/api_listener.h
type class (line 13) | enum class
FILE: include/envoy/server/bootstrap_extension_config.h
function namespace (line 9) | namespace Envoy {
FILE: include/envoy/server/config_tracker.h
function namespace (line 12) | namespace Envoy {
FILE: include/envoy/server/configuration.h
function namespace (line 16) | namespace Envoy {
FILE: include/envoy/server/drain_manager.h
function namespace (line 8) | namespace Envoy {
FILE: include/envoy/server/factory_context.h
function namespace (line 34) | namespace Envoy {
FILE: include/envoy/server/filter_config.h
function namespace (line 16) | namespace Envoy {
FILE: include/envoy/server/guarddog.h
function namespace (line 6) | namespace Envoy {
FILE: include/envoy/server/guarddog_config.h
function namespace (line 16) | namespace Envoy {
FILE: include/envoy/server/health_checker_config.h
function namespace (line 9) | namespace Envoy {
FILE: include/envoy/server/hot_restart.h
function namespace (line 14) | namespace Envoy {
FILE: include/envoy/server/instance.h
function namespace (line 32) | namespace Envoy {
FILE: include/envoy/server/lifecycle_notifier.h
function namespace (line 8) | namespace Envoy {
FILE: include/envoy/server/listener_manager.h
function namespace (line 19) | namespace Envoy {
FILE: include/envoy/server/options.h
type class (line 22) | enum class
type class (line 50) | enum class
FILE: include/envoy/server/overload_manager.h
function namespace (line 11) | namespace Envoy {
FILE: include/envoy/server/process_context.h
function namespace (line 7) | namespace Envoy {
FILE: include/envoy/server/request_id_extension_config.h
function namespace (line 10) | namespace Envoy {
FILE: include/envoy/server/resource_monitor.h
function namespace (line 8) | namespace Envoy {
FILE: include/envoy/server/resource_monitor_config.h
function namespace (line 12) | namespace Envoy {
FILE: include/envoy/server/tracer_config.h
function namespace (line 10) | namespace Envoy {
FILE: include/envoy/server/transport_socket_config.h
function namespace (line 21) | namespace Envoy {
FILE: include/envoy/server/watchdog.h
function namespace (line 9) | namespace Envoy {
FILE: include/envoy/server/worker.h
function namespace (line 8) | namespace Envoy {
FILE: include/envoy/singleton/instance.h
function namespace (line 5) | namespace Envoy {
FILE: include/envoy/singleton/manager.h
function namespace (line 12) | namespace Envoy {
FILE: include/envoy/ssl/certificate_validation_context_config.h
function namespace (line 11) | namespace Envoy {
FILE: include/envoy/ssl/connection.h
function namespace (line 13) | namespace Envoy {
FILE: include/envoy/ssl/context.h
function namespace (line 11) | namespace Envoy {
FILE: include/envoy/ssl/context_config.h
function virtual (line 31) | virtual const std::string& alpnProtocols() const PURE;
FILE: include/envoy/ssl/context_manager.h
function namespace (line 12) | namespace Envoy {
FILE: include/envoy/ssl/handshaker.h
function class (line 14) | class HandshakeCallbacks {
FILE: include/envoy/ssl/private_key/private_key.h
function namespace (line 13) | namespace Envoy {
FILE: include/envoy/ssl/private_key/private_key_callbacks.h
function namespace (line 8) | namespace Envoy {
FILE: include/envoy/ssl/private_key/private_key_config.h
function namespace (line 8) | namespace Envoy {
FILE: include/envoy/ssl/ssl_socket_extended_info.h
function namespace (line 9) | namespace Envoy {
FILE: include/envoy/ssl/ssl_socket_state.h
function namespace (line 3) | namespace Envoy {
FILE: include/envoy/ssl/tls_certificate_config.h
function namespace (line 9) | namespace Envoy {
FILE: include/envoy/stats/allocator.h
function namespace (line 18) | namespace Envoy {
FILE: include/envoy/stats/histogram.h
function class (line 16) | class HistogramSettings {
function class (line 34) | class HistogramStatistics {
FILE: include/envoy/stats/primitive_stats.h
function namespace (line 10) | namespace Envoy {
FILE: include/envoy/stats/primitive_stats_macros.h
function namespace (line 7) | namespace Envoy {
FILE: include/envoy/stats/refcount_ptr.h
function namespace (line 9) | namespace Envoy {
FILE: include/envoy/stats/scope.h
function namespace (line 14) | namespace Envoy {
FILE: include/envoy/stats/sink.h
function namespace (line 10) | namespace Envoy {
FILE: include/envoy/stats/stats.h
function namespace (line 15) | namespace Envoy {
FILE: include/envoy/stats/stats_macros.h
function namespace (line 11) | namespace Envoy {
FILE: include/envoy/stats/stats_matcher.h
function namespace (line 9) | namespace Envoy {
FILE: include/envoy/stats/store.h
function namespace (line 14) | namespace Event {
function namespace (line 19) | namespace ThreadLocal {
function class (line 30) | class Store : public Scope {
FILE: include/envoy/stats/symbol_table.h
function namespace (line 13) | namespace Envoy {
FILE: include/envoy/stats/tag.h
function namespace (line 9) | namespace Envoy {
FILE: include/envoy/stats/tag_extractor.h
function namespace (line 13) | namespace Envoy {
FILE: include/envoy/stats/tag_producer.h
function namespace (line 12) | namespace Envoy {
FILE: include/envoy/stats/timespan.h
function namespace (line 8) | namespace Envoy {
FILE: include/envoy/stream_info/filter_state.h
function namespace (line 16) | namespace Envoy {
FILE: include/envoy/stream_info/stream_info.h
function namespace (line 23) | namespace Envoy {
FILE: include/envoy/stream_info/uint32_accessor.h
function namespace (line 6) | namespace Envoy {
FILE: include/envoy/tcp/conn_pool.h
function class (line 21) | class UpstreamCallbacks : public Network::ConnectionCallbacks {
function class (line 43) | class ConnectionState {
FILE: include/envoy/thread/thread.h
function namespace (line 15) | namespace Envoy {
FILE: include/envoy/thread_local/thread_local.h
function namespace (line 10) | namespace Envoy {
FILE: include/envoy/tracing/http_tracer.h
type class (line 19) | enum class
type class (line 24) | enum class
type Decision (line 40) | struct Decision {
type CustomTagContext (line 48) | struct CustomTagContext {
function virtual (line 63) | virtual absl::string_view tag() const PURE;
FILE: include/envoy/tracing/http_tracer_manager.h
function namespace (line 6) | namespace Envoy {
FILE: include/envoy/udp/hash_policy.h
function namespace (line 7) | namespace Envoy {
FILE: include/envoy/upstream/cluster_factory.h
function namespace (line 30) | namespace Envoy {
FILE: include/envoy/upstream/cluster_manager.h
function class (line 44) | class ClusterUpdateCallbacks {
function class (line 67) | class ClusterUpdateCallbacksHandle {
function class (line 90) | class ClusterManager {
FILE: include/envoy/upstream/health_check_host_monitor.h
function namespace (line 7) | namespace Envoy {
FILE: include/envoy/upstream/health_checker.h
function HealthState (line 12) | enum class HealthState { Unhealthy, Healthy };
FILE: include/envoy/upstream/host_description.h
function namespace (line 17) | namespace Envoy {
function class (line 61) | class HostDescription {
FILE: include/envoy/upstream/load_balancer.h
function class (line 19) | class LoadBalancerContext {
FILE: include/envoy/upstream/load_balancer_type.h
function LoadBalancerType (line 18) | enum class LoadBalancerType {
FILE: include/envoy/upstream/locality.h
function namespace (line 7) | namespace Envoy {
function namespace (line 53) | namespace envoy {
FILE: include/envoy/upstream/outlier_detection.h
function namespace (line 23) | namespace Outlier {
FILE: include/envoy/upstream/resource_manager.h
function namespace (line 10) | namespace Envoy {
FILE: include/envoy/upstream/retry.h
function namespace (line 7) | namespace Envoy {
FILE: include/envoy/upstream/thread_local_cluster.h
function namespace (line 7) | namespace Envoy {
FILE: include/envoy/upstream/types.h
function namespace (line 8) | namespace Envoy {
FILE: include/envoy/upstream/upstream.h
type CreateConnectionData (line 40) | struct CreateConnectionData {
type class (line 67) | enum class
type class (line 71) | enum class
function virtual (line 438) | virtual const std::vector<HostSetPtr>& hostSetsPerPriority() const PURE;
type Features (line 707) | struct Features {
function virtual (line 723) | virtual bool addedViaApi() const PURE;
FILE: restarter/hot-restarter.py
function term_all_children (line 20) | def term_all_children():
function force_kill_all_children (line 65) | def force_kill_all_children():
function shutdown (line 81) | def shutdown():
function sigterm_handler (line 88) | def sigterm_handler(signum, frame):
function sigint_handler (line 94) | def sigint_handler(signum, frame):
function sighup_handler (line 100) | def sighup_handler(signum, frame):
function sigusr1_handler (line 108) | def sigusr1_handler(signum, frame):
function sigchld_handler (line 120) | def sigchld_handler(signum, frame):
function fork_and_exec (line 170) | def fork_and_exec():
function main (line 189) | def main():
FILE: source/common/access_log/access_log_impl.cc
type Envoy (line 28) | namespace Envoy {
type AccessLog (line 29) | namespace AccessLog {
function FilterPtr (line 54) | FilterPtr FilterFactory::fromProto(const envoy::config::accesslog::v...
function InstanceSharedPtr (line 299) | InstanceSharedPtr AccessLogFactory::fromProto(const envoy::config::a...
FILE: source/common/access_log/access_log_impl.h
function namespace (line 23) | namespace Envoy {
FILE: source/common/access_log/access_log_manager_impl.cc
type Envoy (line 11) | namespace Envoy {
type AccessLog (line 12) | namespace AccessLog {
function AccessLogFileSharedPtr (line 28) | AccessLogFileSharedPtr AccessLogManagerImpl::createAccessLog(const s...
FILE: source/common/access_log/access_log_manager_impl.h
function namespace (line 18) | namespace Envoy {
FILE: source/common/api/api_impl.cc
type Envoy (line 9) | namespace Envoy {
type Api (line 10) | namespace Api {
FILE: source/common/api/api_impl.h
function namespace (line 12) | namespace Envoy {
FILE: source/common/api/posix/os_sys_calls_impl.cc
type Envoy (line 10) | namespace Envoy {
type Api (line 11) | namespace Api {
function SysCallIntResult (line 13) | SysCallIntResult OsSysCallsImpl::bind(os_fd_t sockfd, const sockaddr...
function SysCallIntResult (line 18) | SysCallIntResult OsSysCallsImpl::chmod(const std::string& path, mode...
function SysCallIntResult (line 23) | SysCallIntResult OsSysCallsImpl::ioctl(os_fd_t sockfd, unsigned long...
function SysCallIntResult (line 28) | SysCallIntResult OsSysCallsImpl::close(os_fd_t fd) {
function SysCallSizeResult (line 33) | SysCallSizeResult OsSysCallsImpl::writev(os_fd_t fd, const iovec* io...
function SysCallSizeResult (line 38) | SysCallSizeResult OsSysCallsImpl::readv(os_fd_t fd, const iovec* iov...
function SysCallSizeResult (line 43) | SysCallSizeResult OsSysCallsImpl::recv(os_fd_t socket, void* buffer,...
function SysCallSizeResult (line 48) | SysCallSizeResult OsSysCallsImpl::recvmsg(os_fd_t sockfd, msghdr* ms...
function SysCallIntResult (line 53) | SysCallIntResult OsSysCallsImpl::recvmmsg(os_fd_t sockfd, struct mms...
function SysCallIntResult (line 153) | SysCallIntResult OsSysCallsImpl::ftruncate(int fd, off_t length) {
function SysCallPtrResult (line 158) | SysCallPtrResult OsSysCallsImpl::mmap(void* addr, size_t length, int...
function SysCallIntResult (line 164) | SysCallIntResult OsSysCallsImpl::stat(const char* pathname, struct s...
function SysCallIntResult (line 169) | SysCallIntResult OsSysCallsImpl::setsockopt(os_fd_t sockfd, int leve...
function SysCallIntResult (line 175) | SysCallIntResult OsSysCallsImpl::getsockopt(os_fd_t sockfd, int leve...
function SysCallSocketResult (line 181) | SysCallSocketResult OsSysCallsImpl::socket(int domain, int type, int...
function SysCallSizeResult (line 186) | SysCallSizeResult OsSysCallsImpl::sendmsg(os_fd_t fd, const msghdr* ...
function SysCallIntResult (line 191) | SysCallIntResult OsSysCallsImpl::getsockname(os_fd_t sockfd, sockadd...
function SysCallIntResult (line 196) | SysCallIntResult OsSysCallsImpl::gethostname(char* name, size_t leng...
function SysCallIntResult (line 201) | SysCallIntResult OsSysCallsImpl::getpeername(os_fd_t sockfd, sockadd...
function SysCallIntResult (line 206) | SysCallIntResult OsSysCallsImpl::setsocketblocking(os_fd_t sockfd, b...
function SysCallIntResult (line 220) | SysCallIntResult OsSysCallsImpl::connect(os_fd_t sockfd, const socka...
function SysCallIntResult (line 225) | SysCallIntResult OsSysCallsImpl::shutdown(os_fd_t sockfd, int how) {
function SysCallIntResult (line 230) | SysCallIntResult OsSysCallsImpl::socketpair(int domain, int type, in...
function SysCallIntResult (line 235) | SysCallIntResult OsSysCallsImpl::listen(os_fd_t sockfd, int backlog) {
function SysCallSizeResult (line 240) | SysCallSizeResult OsSysCallsImpl::write(os_fd_t sockfd, const void* ...
function SysCallSocketResult (line 245) | SysCallSocketResult OsSysCallsImpl::accept(os_fd_t sockfd, sockaddr*...
FILE: source/common/api/posix/os_sys_calls_impl.h
function namespace (line 9) | namespace Envoy {
FILE: source/common/api/posix/os_sys_calls_impl_hot_restart.cc
type Envoy (line 5) | namespace Envoy {
type Api (line 6) | namespace Api {
function SysCallIntResult (line 8) | SysCallIntResult HotRestartOsSysCallsImpl::shmOpen(const char* name,...
function SysCallIntResult (line 13) | SysCallIntResult HotRestartOsSysCallsImpl::shmUnlink(const char* nam...
FILE: source/common/api/posix/os_sys_calls_impl_hot_restart.h
function namespace (line 7) | namespace Envoy {
FILE: source/common/api/posix/os_sys_calls_impl_linux.cc
type Envoy (line 11) | namespace Envoy {
type Api (line 12) | namespace Api {
function SysCallIntResult (line 14) | SysCallIntResult LinuxOsSysCallsImpl::sched_getaffinity(pid_t pid, s...
FILE: source/common/api/posix/os_sys_calls_impl_linux.h
function namespace (line 11) | namespace Envoy {
FILE: source/common/api/win32/os_sys_calls_impl.cc
type Envoy (line 13) | namespace Envoy {
type Api (line 14) | namespace Api {
type wsamsgResult (line 19) | struct wsamsgResult {
function iovecToWSABUF (line 24) | std::vector<WSABUF> iovecToWSABUF(const iovec* vec, int in_vec) {
function LPFN_WSARECVMSG (line 58) | LPFN_WSARECVMSG getFnPtrWSARecvMsg() {
function wsamsgResult (line 77) | wsamsgResult msghdrToWSAMSG(const msghdr* msg) {
function SysCallIntResult (line 97) | SysCallIntResult OsSysCallsImpl::bind(os_fd_t sockfd, const sockaddr...
function SysCallIntResult (line 102) | SysCallIntResult OsSysCallsImpl::chmod(const std::string& path, mode...
function SysCallIntResult (line 107) | SysCallIntResult OsSysCallsImpl::ioctl(os_fd_t sockfd, unsigned long...
function SysCallIntResult (line 112) | SysCallIntResult OsSysCallsImpl::close(os_fd_t fd) {
function SysCallSizeResult (line 117) | SysCallSizeResult OsSysCallsImpl::writev(os_fd_t fd, const iovec* io...
function SysCallSizeResult (line 128) | SysCallSizeResult OsSysCallsImpl::readv(os_fd_t fd, const iovec* iov...
function SysCallSizeResult (line 141) | SysCallSizeResult OsSysCallsImpl::recv(os_fd_t socket, void* buffer,...
function SysCallSizeResult (line 146) | SysCallSizeResult OsSysCallsImpl::recvmsg(os_fd_t sockfd, msghdr* ms...
function SysCallIntResult (line 162) | SysCallIntResult OsSysCallsImpl::recvmmsg(os_fd_t sockfd, struct mms...
function SysCallIntResult (line 187) | SysCallIntResult OsSysCallsImpl::ftruncate(int fd, off_t length) {
function SysCallPtrResult (line 192) | SysCallPtrResult OsSysCallsImpl::mmap(void* addr, size_t length, int...
function SysCallIntResult (line 197) | SysCallIntResult OsSysCallsImpl::stat(const char* pathname, struct s...
function SysCallIntResult (line 202) | SysCallIntResult OsSysCallsImpl::setsockopt(os_fd_t sockfd, int leve...
function SysCallIntResult (line 208) | SysCallIntResult OsSysCallsImpl::getsockopt(os_fd_t sockfd, int leve...
function SysCallSocketResult (line 214) | SysCallSocketResult OsSysCallsImpl::socket(int domain, int type, int...
function SysCallSizeResult (line 219) | SysCallSizeResult OsSysCallsImpl::sendmsg(os_fd_t sockfd, const msgh...
function SysCallIntResult (line 231) | SysCallIntResult OsSysCallsImpl::getsockname(os_fd_t sockfd, sockadd...
function SysCallIntResult (line 236) | SysCallIntResult OsSysCallsImpl::gethostname(char* name, size_t leng...
function SysCallIntResult (line 241) | SysCallIntResult OsSysCallsImpl::getpeername(os_fd_t sockfd, sockadd...
function SysCallIntResult (line 246) | SysCallIntResult OsSysCallsImpl::setsocketblocking(os_fd_t sockfd, b...
function SysCallIntResult (line 252) | SysCallIntResult OsSysCallsImpl::connect(os_fd_t sockfd, const socka...
function SysCallIntResult (line 257) | SysCallIntResult OsSysCallsImpl::shutdown(os_fd_t sockfd, int how) {
function SysCallIntResult (line 262) | SysCallIntResult OsSysCallsImpl::socketpair(int domain, int type, in...
function SysCallIntResult (line 347) | SysCallIntResult OsSysCallsImpl::listen(os_fd_t sockfd, int backlog) {
function SysCallSizeResult (line 352) | SysCallSizeResult OsSysCallsImpl::write(os_fd_t sockfd, const void* ...
function SysCallSocketResult (line 357) | SysCallSocketResult OsSysCallsImpl::accept(os_fd_t sockfd, sockaddr*...
FILE: source/common/api/win32/os_sys_calls_impl.h
function namespace (line 9) | namespace Envoy {
FILE: source/common/buffer/buffer_impl.cc
type Envoy (line 11) | namespace Envoy {
type Buffer (line 12) | namespace Buffer {
function RawSliceVector (line 176) | RawSliceVector OwnedImpl::getRawSlices(absl::optional<uint64_t> max_...
function SliceDataPtr (line 204) | SliceDataPtr OwnedImpl::extractMutableFrontSlice() {
FILE: source/common/buffer/buffer_impl.h
function namespace (line 15) | namespace Envoy {
function class (line 548) | class OwnedImpl : public LibEventInstance {
FILE: source/common/buffer/watermark_buffer.cc
type Envoy (line 6) | namespace Envoy {
type Buffer (line 7) | namespace Buffer {
function SliceDataPtr (line 54) | SliceDataPtr WatermarkBuffer::extractMutableFrontSlice() {
FILE: source/common/buffer/watermark_buffer.h
function namespace (line 8) | namespace Envoy {
FILE: source/common/buffer/zero_copy_input_stream_impl.cc
type Envoy (line 6) | namespace Envoy {
type Buffer (line 7) | namespace Buffer {
FILE: source/common/buffer/zero_copy_input_stream_impl.h
function namespace (line 10) | namespace Envoy {
FILE: source/common/chromium_url/url_canon.cc
type chromium_url (line 12) | namespace chromium_url {
class EXPORT_TEMPLATE_DEFINE (line 14) | class EXPORT_TEMPLATE_DEFINE
FILE: source/common/chromium_url/url_canon.h
function namespace (line 17) | namespace chromium_url {
FILE: source/common/chromium_url/url_canon_internal.cc
type chromium_url (line 10) | namespace chromium_url {
FILE: source/common/chromium_url/url_canon_internal.h
function namespace (line 22) | namespace chromium_url {
FILE: source/common/chromium_url/url_canon_path.cc
type chromium_url (line 14) | namespace chromium_url {
type CharacterFlags (line 18) | enum CharacterFlags {
type DotDisposition (line 99) | enum DotDisposition {
function DotDisposition (line 122) | DotDisposition ClassifyAfterDot(const CHAR* spec, int after_dot, int e...
function BackUpToPreviousSlash (line 167) | void BackUpToPreviousSlash(int path_begin_in_output, CanonOutput* outp...
function CheckForNestedEscapes (line 212) | void CheckForNestedEscapes(const CHAR* spec, int next_input_index, int...
function DoPartialPath (line 265) | bool DoPartialPath(const CHAR* spec, const Component& path, int path_b...
function DoPath (line 386) | bool DoPath(const CHAR* spec, const Component& path, CanonOutput* outp...
function CanonicalizePath (line 408) | bool CanonicalizePath(const char* spec, const Component& path, CanonOu...
FILE: source/common/chromium_url/url_canon_stdstring.cc
type chromium_url (line 10) | namespace chromium_url {
FILE: source/common/chromium_url/url_canon_stdstring.h
function namespace (line 24) | namespace chromium_url {
FILE: source/common/chromium_url/url_parse.h
function namespace (line 11) | namespace chromium_url {
FILE: source/common/chromium_url/url_parse_internal.h
function namespace (line 11) | namespace chromium_url {
FILE: source/common/common/android/logger_impl.cc
type Envoy (line 5) | namespace Envoy {
type Logger (line 6) | namespace Logger {
FILE: source/common/common/android/logger_impl.h
function namespace (line 5) | namespace Envoy {
FILE: source/common/common/assert.cc
type Envoy (line 7) | namespace Envoy {
type Assert (line 8) | namespace Assert {
class ActionRegistrationImpl (line 10) | class ActionRegistrationImpl : public ActionRegistration {
method ActionRegistrationImpl (line 12) | ActionRegistrationImpl(std::function<void()> action) {
method invokeAction (line 22) | static void invokeAction() {
class EnvoyBugRegistrationImpl (line 37) | class EnvoyBugRegistrationImpl : public ActionRegistration {
method EnvoyBugRegistrationImpl (line 39) | EnvoyBugRegistrationImpl(std::function<void()> action) {
method shouldLogAndInvoke (line 60) | static bool shouldLogAndInvoke(absl::string_view bug_name) {
method invokeAction (line 72) | static void invokeAction() {
function ActionRegistrationPtr (line 94) | ActionRegistrationPtr setDebugAssertionFailureRecordAction(const std...
function ActionRegistrationPtr (line 98) | ActionRegistrationPtr setEnvoyBugFailureRecordAction(const std::func...
function invokeDebugAssertionFailureRecordActionForAssertMacroUseOnly (line 102) | void invokeDebugAssertionFailureRecordActionForAssertMacroUseOnly() {
function invokeEnvoyBugFailureRecordActionForEnvoyBugMacroUseOnly (line 106) | void invokeEnvoyBugFailureRecordActionForEnvoyBugMacroUseOnly() {
function shouldLogAndInvokeEnvoyBugForEnvoyBugMacroUseOnly (line 110) | bool shouldLogAndInvokeEnvoyBugForEnvoyBugMacroUseOnly(absl::string_...
FILE: source/common/common/assert.h
function namespace (line 7) | namespace Envoy {
FILE: source/common/common/backoff_strategy.cc
type Envoy (line 3) | namespace Envoy {
FILE: source/common/common/backoff_strategy.h
function namespace (line 11) | namespace Envoy {
FILE: source/common/common/base64.cc
type Envoy (line 11) | namespace Envoy {
function decodeBase (line 52) | inline bool decodeBase(const uint8_t cur_char, uint64_t pos, std::stri...
function decodeLast (line 79) | inline bool decodeLast(const uint8_t cur_char, uint64_t pos, std::stri...
function encodeBase (line 103) | inline void encodeBase(const uint8_t cur_char, uint64_t pos, uint8_t& ...
function encodeLast (line 122) | inline void encodeLast(uint64_t pos, uint8_t last_char, std::string& ret,
FILE: source/common/common/base64.h
function namespace (line 10) | namespace Envoy {
FILE: source/common/common/base_logger.cc
type Envoy (line 3) | namespace Envoy {
type Logger (line 4) | namespace Logger {
FILE: source/common/common/base_logger.h
function namespace (line 8) | namespace Envoy {
FILE: source/common/common/basic_resource_impl.h
function namespace (line 12) | namespace Envoy {
FILE: source/common/common/byte_order.h
function ByteOrder (line 10) | enum class ByteOrder { Host, LittleEndian, BigEndian };
function T (line 39) | static T to(T value) { return value; }
function T (line 41) | static T from(T value) { return value; }
function T (line 48) | static T to(T value) { return value; }
function T (line 50) | static T from(T value) { return value; }
function T (line 57) | static T to(T value) { return value; }
function T (line 59) | static T from(T value) { return value; }
function T (line 66) | static T to(T value) { return value; }
function T (line 68) | static T from(T value) { return value; }
function T (line 75) | static T to(T value) { return static_cast<T>(htole16(static_cast<uint16_...
function T (line 77) | static T from(T value) { return static_cast<T>(le16toh(static_cast<uint1...
function T (line 84) | static T to(T value) { return static_cast<T>(htole32(static_cast<uint32_...
function T (line 86) | static T from(T value) { return static_cast<T>(le32toh(static_cast<uint3...
function T (line 93) | static T to(T value) { return static_cast<T>(htole64(static_cast<uint64_...
function T (line 95) | static T from(T value) { return static_cast<T>(le64toh(static_cast<uint6...
function T (line 102) | static T to(T value) { return value; }
function T (line 104) | static T from(T value) { return value; }
function T (line 111) | static T to(T value) { return static_cast<T>(htobe16(static_cast<uint16_...
function T (line 113) | static T from(T value) { return static_cast<T>(be16toh(static_cast<uint1...
function T (line 120) | static T to(T value) { return static_cast<T>(htobe32(static_cast<uint32_...
function T (line 122) | static T from(T value) { return static_cast<T>(be32toh(static_cast<uint3...
function T (line 129) | static T to(T value) { return static_cast<T>(htobe64(static_cast<uint64_...
function T (line 131) | static T from(T value) { return static_cast<T>(be64toh(static_cast<uint6...
FILE: source/common/common/c_smart_ptr.h
function namespace (line 5) | namespace Envoy {
FILE: source/common/common/callback_impl.h
function namespace (line 10) | namespace Envoy {
FILE: source/common/common/cleanup.h
function namespace (line 8) | namespace Envoy {
FILE: source/common/common/compiler_requirements.h
function namespace (line 3) | namespace Envoy {
FILE: source/common/common/debug_recursion_checker.h
function namespace (line 5) | namespace Envoy {
FILE: source/common/common/documentation_url.h
function namespace (line 1) | namespace Envoy {
FILE: source/common/common/dump_state_utils.h
function namespace (line 5) | namespace Envoy {
FILE: source/common/common/empty_string.h
function namespace (line 5) | namespace Envoy {
FILE: source/common/common/enum_to_int.h
function namespace (line 5) | namespace Envoy {
FILE: source/common/common/fancy_logger.cc
type Envoy (line 10) | namespace Envoy {
class FancyBasicLockable (line 15) | class FancyBasicLockable : public Thread::BasicLockable {
method ABSL_EXCLUSIVE_LOCK_FUNCTION (line 18) | void lock() ABSL_EXCLUSIVE_LOCK_FUNCTION() override { mutex_.Lock(); }
method ABSL_EXCLUSIVE_TRYLOCK_FUNCTION (line 19) | bool tryLock() ABSL_EXCLUSIVE_TRYLOCK_FUNCTION(true) override { retu...
method ABSL_UNLOCK_FUNCTION (line 20) | void unlock() ABSL_UNLOCK_FUNCTION() override { mutex_.Unlock(); }
function ABSL_LOCKS_EXCLUDED (line 27) | ABSL_LOCKS_EXCLUDED(fancy_log_lock_) {
function ABSL_LOCKS_EXCLUDED (line 37) | ABSL_LOCKS_EXCLUDED(fancy_log_lock_) {
function ABSL_LOCKS_EXCLUDED (line 50) | ABSL_LOCKS_EXCLUDED(fancy_log_lock_) {
function ABSL_LOCKS_EXCLUDED (line 61) | ABSL_LOCKS_EXCLUDED(fancy_log_lock_) {
function ABSL_LOCKS_EXCLUDED (line 76) | ABSL_LOCKS_EXCLUDED(fancy_log_lock_) {
function ABSL_LOCKS_EXCLUDED (line 86) | ABSL_LOCKS_EXCLUDED(fancy_log_lock_) {
function ABSL_LOCKS_EXCLUDED (line 93) | ABSL_LOCKS_EXCLUDED(fancy_log_lock_) {
function ABSL_EXCLUSIVE_LOCKS_REQUIRED (line 113) | ABSL_EXCLUSIVE_LOCKS_REQUIRED(fancy_log_lock_) {
function FancyContext (line 130) | FancyContext& getFancyContext() { MUTABLE_CONSTRUCT_ON_FIRST_USE(Fancy...
FILE: source/common/common/fancy_logger.h
function namespace (line 11) | namespace Envoy {
FILE: source/common/common/fmt.h
function namespace (line 11) | namespace fmt {
FILE: source/common/common/hash.cc
type Envoy (line 5) | namespace Envoy {
FILE: source/common/common/hash.h
function namespace (line 11) | namespace Envoy {
function class (line 47) | class MurmurHash {
function loadBytes (line 66) | static inline uint64_t loadBytes(const char* p, int n) {
function shiftMix (line 75) | static inline uint64_t shiftMix(uint64_t v) { return v ^ (v >> 47); }
function const (line 80) | struct HeterogeneousStringHash {
function const (line 94) | struct HeterogeneousStringEqual {
function const (line 100) | size_t operator()(absl::string_view a, const SharedString& b) const { re...
function const (line 101) | size_t operator()(const SharedString& a, absl::string_view b) const { re...
FILE: source/common/common/hex.cc
type Envoy (line 13) | namespace Envoy {
FILE: source/common/common/hex.h
function namespace (line 6) | namespace Envoy {
FILE: source/common/common/linked_object.h
function namespace (line 8) | namespace Envoy {
function typename (line 54) | typename ListType::iterator entry() {
function inserted (line 62) | bool inserted() { return inserted_; }
function moveBetweenLists (line 69) | void moveBetweenLists(ListType& src, ListType& dst) {
function inserted_ (line 100) | bool inserted_{false}; // iterators do not have any "invalid" value so w...
FILE: source/common/common/lock_guard.h
function namespace (line 8) | namespace Envoy {
FILE: source/common/common/logger.cc
type Envoy (line 17) | namespace Envoy {
type Logger (line 18) | namespace Logger {
function DelegatingLogSinkSharedPtr (line 105) | DelegatingLogSinkSharedPtr DelegatingLogSink::init() {
function Logger (line 209) | Logger* Registry::logger(const std::string& log_name) {
FILE: source/common/common/logger.h
function namespace (line 25) | namespace Envoy {
FILE: source/common/common/logger_delegates.cc
type Envoy (line 10) | namespace Envoy {
type Logger (line 11) | namespace Logger {
FILE: source/common/common/logger_delegates.h
function namespace (line 14) | namespace Envoy {
FILE: source/common/common/macros.h
function namespace (line 3) | namespace Envoy {
FILE: source/common/common/matchers.cc
type Envoy (line 16) | namespace Envoy {
type Matchers (line 17) | namespace Matchers {
function ValueMatcherConstSharedPtr (line 19) | ValueMatcherConstSharedPtr ValueMatcher::create(const envoy::type::m...
function PathMatcherConstSharedPtr (line 153) | PathMatcherConstSharedPtr PathMatcher::createExact(const std::string...
function PathMatcherConstSharedPtr (line 160) | PathMatcherConstSharedPtr PathMatcher::createPrefix(const std::strin...
FILE: source/common/common/matchers.h
function namespace (line 17) | namespace Envoy {
FILE: source/common/common/mem_block_builder.h
function namespace (line 9) | namespace Envoy {
FILE: source/common/common/mutex_tracer_impl.cc
type Envoy (line 10) | namespace Envoy {
function MutexTracerImpl (line 14) | MutexTracerImpl& MutexTracerImpl::getOrCreateTracer() {
FILE: source/common/common/mutex_tracer_impl.h
function namespace (line 11) | namespace Envoy {
FILE: source/common/common/non_copyable.h
function namespace (line 3) | namespace Envoy {
FILE: source/common/common/perf_annotation.cc
type Envoy (line 18) | namespace Envoy {
function PerfAnnotationContext (line 148) | PerfAnnotationContext* PerfAnnotationContext::getOrCreate() {
FILE: source/common/common/perf_annotation.h
function namespace (line 69) | namespace Envoy {
FILE: source/common/common/phantom.h
function namespace (line 5) | namespace Envoy {
FILE: source/common/common/posix/thread_impl.cc
type Envoy (line 10) | namespace Envoy {
type Thread (line 11) | namespace Thread {
function getCurrentThreadId (line 15) | int64_t getCurrentThreadId() {
class ThreadImplPosix (line 38) | class ThreadImplPosix : public Thread {
method ThreadImplPosix (line 40) | ThreadImplPosix(std::function<void()> thread_routine, OptionsOptCo...
method name (line 85) | std::string name() const override { return name_; }
method join (line 88) | void join() override {
method getNameFromOS (line 100) | bool getNameFromOS(std::string& name) {
function ThreadPtr (line 119) | ThreadPtr ThreadFactoryImplPosix::createThread(std::function<void()>...
function ThreadId (line 124) | ThreadId ThreadFactoryImplPosix::currentThreadId() { return ThreadId...
FILE: source/common/common/posix/thread_impl.h
function namespace (line 9) | namespace Envoy {
FILE: source/common/common/random_generator.cc
type Envoy (line 7) | namespace Envoy {
type Random (line 8) | namespace Random {
FILE: source/common/common/random_generator.h
function namespace (line 5) | namespace Envoy {
FILE: source/common/common/regex.cc
type Envoy (line 14) | namespace Envoy {
type Regex (line 15) | namespace Regex {
class CompiledStdMatcher (line 18) | class CompiledStdMatcher : public CompiledMatcher {
method CompiledStdMatcher (line 20) | CompiledStdMatcher(std::regex&& regex) : regex_(std::move(regex)) {}
method match (line 23) | bool match(absl::string_view value) const override {
method replaceAll (line 32) | std::string replaceAll(absl::string_view value, absl::string_view ...
class CompiledGoogleReMatcher (line 44) | class CompiledGoogleReMatcher : public CompiledMatcher {
method CompiledGoogleReMatcher (line 46) | CompiledGoogleReMatcher(const envoy::type::matcher::v3::RegexMatch...
method match (line 106) | bool match(absl::string_view value) const override {
method replaceAll (line 111) | std::string replaceAll(absl::string_view value, absl::string_view ...
function CompiledMatcherPtr (line 124) | CompiledMatcherPtr Utility::parseRegex(const envoy::type::matcher::v...
function CompiledMatcherPtr (line 130) | CompiledMatcherPtr Utility::parseStdRegexAsCompiledMatcher(const std...
FILE: source/common/common/regex.h
function namespace (line 9) | namespace Envoy {
FILE: source/common/common/scalar_to_byte_vector.h
function namespace (line 6) | namespace Envoy {
FILE: source/common/common/scope_tracker.h
function namespace (line 6) | namespace Envoy {
FILE: source/common/common/standard/logger_impl.h
function namespace (line 5) | namespace Envoy {
FILE: source/common/common/statusor.h
function namespace (line 38) | namespace Envoy {
FILE: source/common/common/stl_helpers.h
function namespace (line 10) | namespace Envoy {
function namespace (line 23) | namespace std {
FILE: source/common/common/thread.h
function namespace (line 14) | namespace Envoy {
FILE: source/common/common/thread_synchronizer.cc
type Envoy (line 3) | namespace Envoy {
type Thread (line 4) | namespace Thread {
FILE: source/common/common/thread_synchronizer.h
function namespace (line 10) | namespace Envoy {
FILE: source/common/common/token_bucket_impl.cc
type Envoy (line 5) | namespace Envoy {
FILE: source/common/common/token_bucket_impl.h
function namespace (line 8) | namespace Envoy {
FILE: source/common/common/utility.cc
type Envoy (line 26) | namespace Envoy {
class SpecifierConstantValues (line 30) | class SpecifierConstantValues {
function errorDetails (line 42) | const std::string errorDetails(int error_code) {
type CachedTime (line 68) | struct CachedTime {
type Formatted (line 75) | struct Formatted {
type CachedTime (line 450) | struct CachedTime {
type Formatted (line 75) | struct Formatted {
FILE: source/common/common/utility.h
function namespace (line 19) | namespace Envoy {
function class (line 98) | class AccessLogDateTimeFormatter {
function class (line 106) | class RealTimeSource : public TimeSource {
function MonotonicTime (line 110) | MonotonicTime monotonicTime() override { return std::chrono::steady_cloc...
function class (line 116) | class ConstMemoryStreamBuffer : public std::streambuf {
function class (line 136) | class DateUtil {
function class (line 158) | class StringUtil {
function class (line 387) | class Primes {
function class (line 403) | class WeightedClusterUtil {
function override (line 486) | const override {
function clear (line 490) | void clear() override { intervals_.clear(); }
type Compare (line 493) | struct Compare {
type EnumClassHash (line 504) | struct EnumClassHash {
function class (line 514) | class WelfordStandardDeviation {
function Value (line 546) | Value value_{}
function Value (line 583) | Value find(absl::string_view key) const {
function Value (line 600) | Value findLongestPrefix(const char* key) const {
function class (line 626) | class ExceptionUtil {
function class (line 670) | class InlineStorage : public NonCopyable {
function class (line 699) | class InlineString : public InlineStorage {
FILE: source/common/common/win32/thread_impl.cc
type Envoy (line 6) | namespace Envoy {
type Thread (line 7) | namespace Thread {
function ThreadPtr (line 35) | ThreadPtr ThreadFactoryImplWin32::createThread(std::function<void()>...
function ThreadId (line 40) | ThreadId ThreadFactoryImplWin32::currentThreadId() {
FILE: source/common/common/win32/thread_impl.h
function namespace (line 8) | namespace Envoy {
FILE: source/common/config/api_type_oracle.cc
type Envoy (line 5) | namespace Envoy {
type Config (line 6) | namespace Config {
FILE: source/common/config/api_type_oracle.h
function namespace (line 9) | namespace Envoy {
FILE: source/common/config/api_version.h
function namespace (line 7) | namespace Envoy {}
FILE: source/common/config/config_provider_impl.cc
type Envoy (line 3) | namespace Envoy {
type Config (line 4) | namespace Config {
FILE: source/common/config/config_provider_impl.h
function namespace (line 19) | namespace Envoy {
FILE: source/common/config/datasource.cc
type Envoy (line 7) | namespace Envoy {
type Config (line 8) | namespace Config {
type DataSource (line 9) | namespace DataSource {
function read (line 16) | std::string read(const envoy::config::core::v3::DataSource& source...
function getPath (line 34) | absl::optional<std::string> getPath(const envoy::config::core::v3:...
FILE: source/common/config/datasource.h
function namespace (line 18) | namespace Envoy {
FILE: source/common/config/decoded_resource_impl.h
function namespace (line 9) | namespace Envoy {
FILE: source/common/config/delta_subscription_state.cc
type Envoy (line 9) | namespace Envoy {
type Config (line 10) | namespace Config {
function UpdateAck (line 46) | UpdateAck DeltaSubscriptionState::handleResponse(
FILE: source/common/config/delta_subscription_state.h
function namespace (line 18) | namespace Envoy {
FILE: source/common/config/filesystem_subscription_impl.cc
type Envoy (line 12) | namespace Envoy {
type Config (line 13) | namespace Config {
FILE: source/common/config/filesystem_subscription_impl.h
function namespace (line 11) | namespace Envoy {
FILE: source/common/config/grpc_mux_impl.cc
type Envoy (line 14) | namespace Envoy {
type Config (line 15) | namespace Config {
function GrpcMuxWatchPtr (line 64) | GrpcMuxWatchPtr GrpcMuxImpl::addWatch(const std::string& type_url,
function ScopedResume (line 95) | ScopedResume GrpcMuxImpl::pause(const std::string& type_url) {
function ScopedResume (line 99) | ScopedResume GrpcMuxImpl::pause(const std::vector<std::string> type_...
FILE: source/common/config/grpc_mux_impl.h
function namespace (line 27) | namespace Envoy {
function ScopedResume (line 165) | ScopedResume pause(const std::vector<std::string>) override {
function GrpcMuxWatchPtr (line 169) | GrpcMuxWatchPtr addWatch(const std::string&, const std::set<std::string>...
function requestOnDemandUpdate (line 174) | void requestOnDemandUpdate(const std::string&, const std::set<std::strin...
function onWriteable (line 178) | void onWriteable() override {}
function onStreamEstablished (line 179) | void onStreamEstablished() override {}
function onEstablishmentFailure (line 180) | void onEstablishmentFailure() override {}
function onDiscoveryResponse (line 181) | void onDiscoveryResponse(std::unique_ptr<envoy::service::discovery::v3::...
FILE: source/common/config/grpc_stream.h
function namespace (line 15) | namespace Envoy {
FILE: source/common/config/grpc_subscription_impl.cc
type Envoy (line 10) | namespace Envoy {
type Config (line 11) | namespace Config {
function ScopedResume (line 115) | ScopedResume GrpcSubscriptionImpl::pause() { return grpc_mux_->pause...
FILE: source/common/config/grpc_subscription_impl.h
function namespace (line 11) | namespace Envoy {
FILE: source/common/config/http_subscription_impl.cc
type Envoy (line 20) | namespace Envoy {
type Config (line 21) | namespace Config {
FILE: source/common/config/http_subscription_impl.h
function namespace (line 12) | namespace Envoy {
FILE: source/common/config/metadata.cc
type Envoy (line 8) | namespace Envoy {
type Config (line 9) | namespace Config {
function ConstMetadataSharedPoolSharedPtr (line 108) | ConstMetadataSharedPoolSharedPtr
FILE: source/common/config/metadata.h
function namespace (line 18) | namespace Envoy {
FILE: source/common/config/new_grpc_mux_impl.cc
type Envoy (line 14) | namespace Envoy {
type Config (line 15) | namespace Config {
function ScopedResume (line 30) | ScopedResume NewGrpcMuxImpl::pause(const std::string& type_url) {
function ScopedResume (line 34) | ScopedResume NewGrpcMuxImpl::pause(const std::vector<std::string> ty...
function GrpcMuxWatchPtr (line 128) | GrpcMuxWatchPtr NewGrpcMuxImpl::addWatch(const std::string& type_url,
FILE: source/common/config/new_grpc_mux_impl.h
function namespace (line 21) | namespace Envoy {
FILE: source/common/config/opaque_resource_decoder_impl.h
function namespace (line 7) | namespace Envoy {
FILE: source/common/config/pausable_ack_queue.cc
type Envoy (line 7) | namespace Envoy {
type Config (line 8) | namespace Config {
function UpdateAck (line 23) | const UpdateAck& PausableAckQueue::front() {
function UpdateAck (line 33) | UpdateAck PausableAckQueue::popFront() {
FILE: source/common/config/pausable_ack_queue.h
function namespace (line 9) | namespace Envoy {
FILE: source/common/config/protobuf_link_hacks.h
function namespace (line 27) | namespace Envoy {
FILE: source/common/config/remote_data_fetcher.cc
type Envoy (line 11) | namespace Envoy {
type Config (line 12) | namespace Config {
type DataFetcher (line 13) | namespace DataFetcher {
FILE: source/common/config/remote_data_fetcher.h
function namespace (line 7) | namespace Envoy {
FILE: source/common/config/resource_name.h
function namespace (line 11) | namespace Envoy {
FILE: source/common/config/runtime_utility.cc
type Envoy (line 5) | namespace Envoy {
type Config (line 6) | namespace Config {
function translateRuntime (line 8) | void translateRuntime(const envoy::config::bootstrap::v3::Runtime& r...
FILE: source/common/config/runtime_utility.h
function namespace (line 5) | namespace Envoy {
FILE: source/common/config/subscription_base.h
function namespace (line 8) | namespace Envoy {
FILE: source/common/config/subscription_factory_impl.cc
type Envoy (line 16) | namespace Envoy {
type Config (line 17) | namespace Config {
function SubscriptionPtr (line 26) | SubscriptionPtr SubscriptionFactoryImpl::subscriptionFromConfigSource(
function SubscriptionPtr (line 111) | SubscriptionPtr SubscriptionFactoryImpl::collectionSubscriptionFromUrl(
FILE: source/common/config/subscription_factory_impl.h
function namespace (line 13) | namespace Envoy {
FILE: source/common/config/type_to_endpoint.cc
type Envoy (line 12) | namespace Envoy {
type Config (line 13) | namespace Config {
type ServiceVersionInfo (line 21) | struct ServiceVersionInfo {
function ServiceVersionInfoMap (line 57) | ServiceVersionInfoMap
function TypeUrl (line 76) | TypeUrl getResourceTypeUrl(absl::string_view service_name) {
type VersionedDiscoveryType (line 89) | struct VersionedDiscoveryType {
type VersionedService (line 99) | struct VersionedService {
function TypeUrlToVersionedServiceMap (line 154) | TypeUrlToVersionedServiceMap* buildTypeUrlToServiceMap() {
function TypeUrlToVersionedServiceMap (line 218) | TypeUrlToVersionedServiceMap& typeUrlToVersionedServiceMap() {
function effectiveTransportApiVersion (line 224) | envoy::config::core::v3::ApiVersion
FILE: source/common/config/type_to_endpoint.h
function namespace (line 9) | namespace Envoy {
FILE: source/common/config/udpa_context_params.cc
type Envoy (line 6) | namespace Envoy {
type Config (line 7) | namespace Config {
function RenderContextParamCb (line 14) | RenderContextParamCb directStringFieldRenderer(const std::string& fi...
function RenderContextParamCb (line 20) | RenderContextParamCb localityStringFieldRenderer(const std::string& ...
function buildSemanticVersionRenderer (line 26) | std::string buildSemanticVersionRenderer(const envoy::config::core::...
function NodeContextRenderers (line 31) | const NodeContextRenderers& nodeParamCbs() {
function mergeMetadataJson (line 42) | void mergeMetadataJson(Protobuf::Map<std::string, std::string>& params,
FILE: source/common/config/udpa_context_params.h
function namespace (line 8) | namespace Envoy {
FILE: source/common/config/udpa_resource.cc
type Envoy (line 14) | namespace Envoy {
type Config (line 15) | namespace Config {
function encodeAuthority (line 24) | std::string encodeAuthority(const std::string& authority) {
function encodeIdPath (line 28) | std::string encodeIdPath(const Protobuf::RepeatedPtrField<std::strin...
function encodeContextParams (line 37) | std::string encodeContextParams(const udpa::core::v1::ContextParams&...
function encodeDirectives (line 51) | std::string encodeDirectives(
function decodePath (line 112) | void decodePath(absl::string_view path, std::string* resource_type,
function decodeQueryParams (line 131) | void decodeQueryParams(absl::string_view query_params,
function decodeFragment (line 141) | void decodeFragment(
FILE: source/common/config/udpa_resource.h
function namespace (line 9) | namespace Envoy {
FILE: source/common/config/update_ack.h
function namespace (line 8) | namespace Envoy {
FILE: source/common/config/utility.cc
type Envoy (line 25) | namespace Envoy {
type Config (line 26) | namespace Config {
function RateLimitSettings (line 198) | RateLimitSettings
FILE: source/common/config/utility.h
function namespace (line 33) | namespace Envoy {
FILE: source/common/config/version_converter.cc
type Envoy (line 13) | namespace Envoy {
type Config (line 14) | namespace Config {
class ProtoVisitor (line 18) | class ProtoVisitor {
function wireCast (line 37) | void wireCast(const Protobuf::Message& src, Protobuf::Message& dst) {
function DynamicMessagePtr (line 47) | DynamicMessagePtr createForDescriptorWithCast(const Protobuf::Messag...
class TypeAnnotatingProtoVisitor (line 76) | class TypeAnnotatingProtoVisitor : public ProtobufMessage::ProtoVisi...
method onMessage (line 78) | void onMessage(Protobuf::Message& message, const void* ctxt) overr...
class TypeErasingProtoVisitor (line 119) | class TypeErasingProtoVisitor : public ProtobufMessage::ProtoVisitor {
method onMessage (line 121) | void onMessage(Protobuf::Message& message, const void*) override {
function DynamicMessagePtr (line 131) | DynamicMessagePtr VersionConverter::recoverOriginal(const Protobuf::...
function DynamicMessagePtr (line 150) | DynamicMessagePtr VersionConverter::downgrade(const Protobuf::Messag...
class HiddenFieldScrubbingProtoVisitor (line 206) | class HiddenFieldScrubbingProtoVisitor : public ProtobufMessage::Pro...
FILE: source/common/config/version_converter.h
function namespace (line 13) | namespace Envoy {
FILE: source/common/config/watch_map.cc
type Envoy (line 8) | namespace Envoy {
type Config (line 9) | namespace Config {
function namespaceFromName (line 13) | std::string namespaceFromName(const std::string& resource_name) {
function Watch (line 20) | Watch* WatchMap::addWatch(SubscriptionCallbacks& callbacks,
function AddedRemoved (line 46) | AddedRemoved WatchMap::updateWatchInterest(Watch* watch,
FILE: source/common/config/watch_map.h
function namespace (line 16) | namespace Envoy {
FILE: source/common/config/well_known_names.cc
type Envoy (line 3) | namespace Envoy {
type Config (line 4) | namespace Config {
FILE: source/common/config/well_known_names.h
function namespace (line 11) | namespace Envoy {
FILE: source/common/conn_pool/conn_pool_base.cc
type Envoy (line 9) | namespace Envoy {
type ConnectionPool (line 10) | namespace ConnectionPool {
function translateZeroToUnlimited (line 450) | uint64_t translateZeroToUnlimited(uint64_t limit) {
FILE: source/common/conn_pool/conn_pool_base.h
function namespace (line 12) | namespace Envoy {
FILE: source/common/crypto/utility.h
function namespace (line 13) | namespace Envoy {
FILE: source/common/event/deferred_task.h
function namespace (line 7) | namespace Envoy {
FILE: source/common/event/dispatcher_impl.cc
type Envoy (line 37) | namespace Envoy {
type Event (line 38) | namespace Event {
function FileEventPtr (line 150) | FileEventPtr DispatcherImpl::createFileEvent(os_fd_t fd, FileReadyCb...
function TimerPtr (line 175) | TimerPtr DispatcherImpl::createTimer(TimerCb cb) {
function TimerPtr (line 185) | TimerPtr DispatcherImpl::createTimerInternal(TimerCb cb) {
function SignalEventPtr (line 200) | SignalEventPtr DispatcherImpl::listenForSignal(int signal_num, Signa...
function MonotonicTime (line 229) | MonotonicTime DispatcherImpl::approximateMonotonicTime() const {
FILE: source/common/event/dispatcher_impl.h
function namespace (line 23) | namespace Envoy {
FILE: source/common/event/event_impl_base.cc
type Envoy (line 5) | namespace Envoy {
type Event (line 6) | namespace Event {
FILE: source/common/event/event_impl_base.h
function namespace (line 5) | namespace Envoy {
FILE: source/common/event/file_event_impl.cc
type Envoy (line 11) | namespace Envoy {
type Event (line 12) | namespace Event {
FILE: source/common/event/file_event_impl.h
function namespace (line 10) | namespace Envoy {
FILE: source/common/event/libevent.cc
type Envoy (line 9) | namespace Envoy {
type Event (line 10) | namespace Event {
type Libevent (line 11) | namespace Libevent {
FILE: source/common/event/libevent.h
type event_base (line 5) | struct event_base
type evconnlistener (line 10) | struct evconnlistener
function namespace (line 15) | namespace Envoy {
FILE: source/common/event/libevent_scheduler.cc
type Envoy (line 9) | namespace Envoy {
type Event (line 10) | namespace Event {
function recordTimeval (line 13) | void recordTimeval(Stats::Histogram& histogram, const timeval& tv) {
function TimerPtr (line 38) | TimerPtr LibeventScheduler::createTimer(const TimerCb& cb, Dispatche...
function SchedulableCallbackPtr (line 42) | SchedulableCallbackPtr
FILE: source/common/event/libevent_scheduler.h
function namespace (line 14) | namespace Envoy {
FILE: source/common/event/real_time_system.cc
type Envoy (line 8) | namespace Envoy {
type Event (line 9) | namespace Event {
class RealScheduler (line 12) | class RealScheduler : public Scheduler {
method RealScheduler (line 14) | RealScheduler(Scheduler& base_scheduler) : base_scheduler_(base_sc...
method TimerPtr (line 15) | TimerPtr createTimer(const TimerCb& cb, Dispatcher& d) override {
function SchedulerPtr (line 25) | SchedulerPtr RealTimeSystem::createScheduler(Scheduler& base_schedul...
FILE: source/common/event/real_time_system.h
function namespace (line 7) | namespace Envoy {
FILE: source/common/event/scaled_range_timer_manager.cc
type Envoy (line 13) | namespace Envoy {
type Event (line 14) | namespace Event {
class ScaledRangeTimerManager::RangeTimerImpl (line 34) | class ScaledRangeTimerManager::RangeTimerImpl final : public RangeTi...
method RangeTimerImpl (line 36) | RangeTimerImpl(TimerCb callback, ScaledRangeTimerManager& manager)
method disableTimer (line 42) | void disableTimer() override {
method enableTimer (line 55) | void enableTimer(const std::chrono::milliseconds min_ms, const std...
method enabled (line 72) | bool enabled() override { return !absl::holds_alternative<Inactive...
method trigger (line 74) | void trigger() {
type Inactive (line 89) | struct Inactive {}
type WaitingForMin (line 91) | struct WaitingForMin {
method WaitingForMin (line 92) | WaitingForMin(std::chrono::milliseconds scalable_duration)
type ScalingMax (line 100) | struct ScalingMax {
method ScalingMax (line 101) | ScalingMax(ScaledRangeTimerManager::ScalingTimerHandle handle) :...
method onMinTimerComplete (line 112) | void onMinTimerComplete() {
function RangeTimerPtr (line 143) | RangeTimerPtr ScaledRangeTimerManager::createTimer(TimerCb callback) {
function MonotonicTime (line 170) | MonotonicTime ScaledRangeTimerManager::computeTriggerTime(const Queu...
FILE: source/common/event/scaled_range_timer_manager.h
function namespace (line 10) | namespace Envoy {
FILE: source/common/event/schedulable_cb_impl.cc
type Envoy (line 7) | namespace Envoy {
type Event (line 8) | namespace Event {
FILE: source/common/event/schedulable_cb_impl.h
function namespace (line 8) | namespace Envoy {
FILE: source/common/event/signal_impl.cc
type Envoy (line 7) | namespace Envoy {
type Event (line 8) | namespace Event {
FILE: source/common/event/signal_impl.h
function namespace (line 8) | namespace Envoy {
FILE: source/common/event/timer_impl.cc
type Envoy (line 10) | namespace Envoy {
type Event (line 11) | namespace Event {
FILE: source/common/event/timer_impl.h
function namespace (line 12) | namespace Envoy {
FILE: source/common/filesystem/directory.h
function namespace (line 9) | namespace Envoy {
FILE: source/common/filesystem/file_shared_impl.cc
type Envoy (line 5) | namespace Envoy {
type Filesystem (line 6) | namespace Filesystem {
FILE: source/common/filesystem/file_shared_impl.h
function namespace (line 9) | namespace Envoy {
FILE: source/common/filesystem/inotify/watcher_impl.cc
type Envoy (line 16) | namespace Envoy {
type Filesystem (line 17) | namespace Filesystem {
FILE: source/common/filesystem/inotify/watcher_impl.h
function namespace (line 15) | namespace Envoy {
FILE: source/common/filesystem/kqueue/watcher_impl.cc
type Envoy (line 16) | namespace Envoy {
type Filesystem (line 17) | namespace Filesystem {
type kevent (line 69) | struct kevent
type kevent (line 93) | struct kevent
FILE: source/common/filesystem/kqueue/watcher_impl.h
function namespace (line 16) | namespace Envoy {
FILE: source/common/filesystem/posix/directory_iterator_impl.cc
type Envoy (line 7) | namespace Envoy {
type Filesystem (line 8) | namespace Filesystem {
function DirectoryIteratorImpl (line 22) | DirectoryIteratorImpl& DirectoryIteratorImpl::operator++() {
function FileType (line 53) | FileType DirectoryIteratorImpl::fileType(const std::string& full_pat...
FILE: source/common/filesystem/posix/directory_iterator_impl.h
function namespace (line 9) | namespace Envoy {
FILE: source/common/filesystem/posix/filesystem_impl.cc
type Envoy (line 23) | namespace Envoy {
type Filesystem (line 24) | namespace Filesystem {
function FilePtr (line 78) | FilePtr InstanceImplPosix::createFile(const std::string& path) {
type stat (line 98) | struct stat
function PathSplitResult (line 121) | PathSplitResult InstanceImplPosix::splitPathFromFilename(absl::strin...
FILE: source/common/filesystem/posix/filesystem_impl.h
function namespace (line 10) | namespace Envoy {
FILE: source/common/filesystem/win32/directory_iterator_impl.cc
type Envoy (line 6) | namespace Envoy {
type Filesystem (line 7) | namespace Filesystem {
function DirectoryIteratorImpl (line 28) | DirectoryIteratorImpl& DirectoryIteratorImpl::operator++() {
function FileType (line 45) | FileType DirectoryIteratorImpl::fileType(const WIN32_FIND_DATA& find...
FILE: source/common/filesystem/win32/directory_iterator_impl.h
function namespace (line 5) | namespace Envoy {
FILE: source/common/filesystem/win32/filesystem_impl.cc
type Envoy (line 19) | namespace Envoy {
type Filesystem (line 20) | namespace Filesystem {
function FilePtr (line 90) | FilePtr InstanceImplWin32::createFile(const std::string& path) {
function PathSplitResult (line 148) | PathSplitResult InstanceImplWin32::splitPathFromFilename(absl::strin...
FILE: source/common/filesystem/win32/filesystem_impl.h
function namespace (line 8) | namespace Envoy {
FILE: source/common/filesystem/win32/watcher_impl.cc
type Envoy (line 7) | namespace Envoy {
type Filesystem (line 8) | namespace Filesystem {
FILE: source/common/filesystem/win32/watcher_impl.h
function namespace (line 22) | namespace Envoy {
FILE: source/common/filter/http/filter_config_discovery_impl.cc
type Envoy (line 12) | namespace Envoy {
type Filter (line 13) | namespace Filter {
type Http (line 14) | namespace Http {
function FilterConfigProviderPtr (line 202) | FilterConfigProviderPtr FilterConfigProviderManagerImpl::createDyn...
FILE: source/common/filter/http/filter_config_discovery_impl.h
function namespace (line 20) | namespace Envoy {
FILE: source/common/formatter/substitution_format_string.cc
type Envoy (line 5) | namespace Envoy {
type Formatter (line 6) | namespace Formatter {
function FormatterPtr (line 8) | FormatterPtr
function FormatterPtr (line 14) | FormatterPtr SubstitutionFormatStringUtils::fromProtoConfig(
FILE: source/common/formatter/substitution_format_string.h
function namespace (line 10) | namespace Envoy {
FILE: source/common/formatter/substitution_formatter.cc
type Envoy (line 29) | namespace Envoy {
type Formatter (line 30) | namespace Formatter {
function truncate (line 38) | void truncate(std::string& str, absl::optional<uint32_t> max_length) {
type JsonFormatMapVisitor (line 52) | struct JsonFormatMapVisitor : Ts... { using Ts::operator()...; }
function FormatterPtr (line 64) | FormatterPtr SubstitutionFormatUtils::defaultSubstitutionFormatter() {
class StreamInfoStringFieldExtractor (line 405) | class StreamInfoStringFieldExtractor : public StreamInfoFormatter::F...
method StreamInfoStringFieldExtractor (line 409) | StreamInfoStringFieldExtractor(FieldExtractor f) : field_extractor...
method extract (line 412) | absl::optional<std::string> extract(const StreamInfo::StreamInfo& ...
method extractValue (line 415) | ProtobufWkt::Value extractValue(const StreamInfo::StreamInfo& stre...
class StreamInfoDurationFieldExtractor (line 424) | class StreamInfoDurationFieldExtractor : public StreamInfoFormatter:...
method StreamInfoDurationFieldExtractor (line 429) | StreamInfoDurationFieldExtractor(FieldExtractor f) : field_extract...
method extract (line 432) | absl::optional<std::string> extract(const StreamInfo::StreamInfo& ...
method extractValue (line 440) | ProtobufWkt::Value extractValue(const StreamInfo::StreamInfo& stre...
method extractMillis (line 450) | absl::optional<int64_t> extractMillis(const StreamInfo::StreamInfo...
class StreamInfoUInt64FieldExtractor (line 462) | class StreamInfoUInt64FieldExtractor : public StreamInfoFormatter::F...
method StreamInfoUInt64FieldExtractor (line 466) | StreamInfoUInt64FieldExtractor(FieldExtractor f) : field_extractor...
method extract (line 469) | absl::optional<std::string> extract(const StreamInfo::StreamInfo& ...
method extractValue (line 472) | ProtobufWkt::Value extractValue(const StreamInfo::StreamInfo& stre...
class StreamInfoAddressFieldExtractor (line 481) | class StreamInfoAddressFieldExtractor : public StreamInfoFormatter::...
method withPort (line 486) | static std::unique_ptr<StreamInfoAddressFieldExtractor> withPort(F...
method withoutPort (line 491) | static std::unique_ptr<StreamInfoAddressFieldExtractor> withoutPor...
method justPort (line 496) | static std::unique_ptr<StreamInfoAddressFieldExtractor> justPort(F...
method StreamInfoAddressFieldExtractor (line 501) | StreamInfoAddressFieldExtractor(
method extract (line 506) | absl::optional<std::string> extract(const StreamInfo::StreamInfo& ...
method extractValue (line 514) | ProtobufWkt::Value extractValue(const StreamInfo::StreamInfo& stre...
method toString (line 524) | std::string toString(const Network::Address::Instance& address) co...
class StreamInfoSslConnectionInfoFieldExtractor (line 541) | class StreamInfoSslConnectionInfoFieldExtractor : public StreamInfoF...
method StreamInfoSslConnectionInfoFieldExtractor (line 546) | StreamInfoSslConnectionInfoFieldExtractor(FieldExtractor f) : fiel...
method extract (line 548) | absl::optional<std::string> extract(const StreamInfo::StreamInfo& ...
method extractValue (line 561) | ProtobufWkt::Value extractValue(const StreamInfo::StreamInfo& stre...
FILE: source/common/formatter/substitution_formatter.h
function TrailParamStart (line 66) | static const size_t TrailParamStart{sizeof("TRAILER(") - 1};
FILE: source/common/grpc/async_client_impl.cc
type Envoy (line 12) | namespace Envoy {
type Grpc (line 13) | namespace Grpc {
function AsyncRequest (line 28) | AsyncRequest* AsyncClientImpl::sendRaw(absl::string_view service_ful...
function RawAsyncStream (line 46) | RawAsyncStream* AsyncClientImpl::startRaw(absl::string_view service_...
FILE: source/common/grpc/async_client_impl.h
function namespace (line 14) | namespace Envoy {
FILE: source/common/grpc/async_client_manager_impl.cc
type Envoy (line 12) | namespace Envoy {
type Grpc (line 13) | namespace Grpc {
function RawAsyncClientPtr (line 47) | RawAsyncClientPtr AsyncClientFactoryImpl::create() {
function RawAsyncClientPtr (line 71) | RawAsyncClientPtr GoogleAsyncClientFactoryImpl::create() {
function AsyncClientFactoryPtr (line 82) | AsyncClientFactoryPtr
FILE: source/common/grpc/async_client_manager_impl.h
function namespace (line 13) | namespace Envoy {
FILE: source/common/grpc/codec.cc
type Envoy (line 12) | namespace Envoy {
type Grpc (line 13) | namespace Grpc {
FILE: source/common/grpc/codec.h
type class (line 18) | enum class
type Frame (line 20) | struct Frame {
function class (line 26) | class Encoder {
type class (line 55) | enum class
function frameStart (line 93) | frameStart(uint8_t) { return true; }
function virtual (line 94) | virtual void frameDataStart() {}
function virtual (line 95) | virtual void frameData(uint8_t*, uint64_t) {}
function virtual (line 96) | virtual void frameDataEnd() {}
function State (line 98) | State state_{State::FhFlag};
function class (line 103) | class Decoder : public FrameInspector {
FILE: source/common/grpc/common.cc
type Envoy (line 26) | namespace Envoy {
type Grpc (line 27) | namespace Grpc {
FILE: source/common/grpc/common.h
function namespace (line 20) | namespace Envoy {
FILE: source/common/grpc/context_impl.cc
type Envoy (line 9) | namespace Envoy {
type Grpc (line 10) | namespace Grpc {
FILE: source/common/grpc/context_impl.h
function namespace (line 16) | namespace Envoy {
FILE: source/common/grpc/google_async_client_impl.cc
type Envoy (line 17) | namespace Envoy {
type Grpc (line 18) | namespace Grpc {
function AsyncRequest (line 108) | AsyncRequest* GoogleAsyncClientImpl::sendRaw(absl::string_view servi...
function RawAsyncStream (line 127) | RawAsyncStream* GoogleAsyncClientImpl::startRaw(absl::string_view se...
FILE: source/common/grpc/google_async_client_impl.h
function namespace (line 29) | namespace Envoy {
FILE: source/common/grpc/google_grpc_context.cc
type Envoy (line 14) | namespace Envoy {
type Grpc (line 15) | namespace Grpc {
FILE: source/common/grpc/google_grpc_context.h
function namespace (line 5) | namespace Envoy {
FILE: source/common/grpc/google_grpc_creds_impl.cc
type Envoy (line 9) | namespace Envoy {
type Grpc (line 10) | namespace Grpc {
class DefaultGoogleGrpcCredentialsFactory (line 138) | class DefaultGoogleGrpcCredentialsFactory : public GoogleGrpcCredent...
method getChannelCredentials (line 141) | std::shared_ptr<grpc::ChannelCredentials>
method name (line 147) | std::string name() const override { return "envoy.grpc_credentials...
FILE: source/common/grpc/google_grpc_creds_impl.h
function namespace (line 9) | namespace Envoy {
FILE: source/common/grpc/google_grpc_utils.cc
type Envoy (line 22) | namespace Envoy {
type Grpc (line 23) | namespace Grpc {
function getGoogleGrpcChannelCredentials (line 27) | std::shared_ptr<grpc::ChannelCredentials>
type BufferInstanceContainer (line 49) | struct BufferInstanceContainer {
method BufferInstanceContainer (line 50) | BufferInstanceContainer(int ref_count, Buffer::InstancePtr&& buffer)
method derefBufferInstanceContainer (line 55) | static void derefBufferInstanceContainer(void* container_ptr) {
class GrpcSliceBufferFragmentImpl (line 85) | class GrpcSliceBufferFragmentImpl : public Buffer::BufferFragment {
method GrpcSliceBufferFragmentImpl (line 87) | explicit GrpcSliceBufferFragmentImpl(grpc::Slice&& slice) : slice_...
method size (line 91) | size_t size() const override { return slice_.size(); }
method done (line 92) | void done() override { delete this; }
FILE: source/common/grpc/google_grpc_utils.h
function namespace (line 13) | namespace Envoy {
FILE: source/common/grpc/stat_names.cc
type Envoy (line 3) | namespace Envoy {
type Grpc (line 4) | namespace Grpc {
FILE: source/common/grpc/stat_names.h
function namespace (line 9) | namespace Envoy {
FILE: source/common/grpc/status.cc
type Envoy (line 3) | namespace Envoy {
type Grpc (line 4) | namespace Grpc {
FILE: source/common/grpc/status.h
function namespace (line 8) | namespace Envoy {
FILE: source/common/grpc/typed_async_client.cc
type Envoy (line 10) | namespace Envoy {
type Grpc (line 11) | namespace Grpc {
type Internal (line 12) | namespace Internal {
function sendMessageUntyped (line 14) | void sendMessageUntyped(RawAsyncStream* stream, const Protobuf::Me...
function parseMessageUntyped (line 18) | ProtobufTypes::MessagePtr parseMessageUntyped(ProtobufTypes::Messa...
function RawAsyncStream (line 30) | RawAsyncStream* startUntyped(RawAsyncClient* client,
function AsyncRequest (line 38) | AsyncRequest* sendUntyped(RawAsyncClient* client, const Protobuf::...
FILE: source/common/grpc/typed_async_client.h
function namespace (line 11) | namespace Envoy {
FILE: source/common/html/utility.cc
type Envoy (line 7) | namespace Envoy {
type Html (line 8) | namespace Html {
FILE: source/common/html/utility.h
function namespace (line 5) | namespace Envoy {
FILE: source/common/http/async_client_impl.cc
type Envoy (line 15) | namespace Envoy {
type Http (line 16) | namespace Http {
FILE: source/common/http/async_client_impl.h
function namespace (line 40) | namespace Envoy {
function std (line 161) | const std::vector<uint32_t> retriable_status_codes_{}
function std (line 162) | const std::vector<Http::HeaderMatcherSharedPtr> retriable_headers_{}
function std (line 163) | const std::vector<Http::HeaderMatcherSharedPtr> retriable_request_header...
function std (line 164) | const std::vector<Router::ResetHeaderParserSharedPtr> reset_headers_{}
type NullConfig (line 167) | struct NullConfig
function std (line 178) | const std::list<LowerCaseString>& internalOnlyHeaders() const override {
type NullVirtualHost (line 189) | struct NullVirtualHost
function Router (line 192) | const Router::RateLimitPolicy& rateLimitPolicy() const override { return...
function Router (line 194) | const Router::Config& routeConfig() const override { return route_config...
function retryShadowBufferLimit (line 200) | uint32_t retryShadowBufferLimit() const override {
function std (line 209) | const std::string& matcher() const override { return EMPTY_STRING; }
function Router (line 228) | const Router::CorsPolicy* corsPolicy() const override { return nullptr; }
function finalizeRequestHeaders (line 229) | void finalizeRequestHeaders(Http::RequestHeaderMap&, const StreamInfo::S...
function finalizeResponseHeaders (line 231) | void finalizeResponseHeaders(Http::ResponseHeaderMap&,
function HashPolicy (line 233) | const HashPolicy* hashPolicy() const override { return hash_policy_.get(...
function Router (line 234) | const Router::HedgePolicy& hedgePolicy() const override { return hedge_p...
function Router (line 240) | const Router::RetryPolicy& retryPolicy() const override { return retry_p...
function retryShadowBufferLimit (line 244) | uint32_t retryShadowBufferLimit() const override {
function override (line 257) | const override { return absl::nullopt; }
function override (line 258) | const override {
function override (line 261) | const override {
function override (line 264) | const override {
function override (line 267) | const override {
function override (line 270) | const override {
function Router (line 273) | const Router::VirtualCluster* virtualCluster(const Http::HeaderMap&) con...
function Router (line 276) | const Router::TlsContextMatchCriteria* tlsContextMatchCriteria() const o...
function envoy (line 285) | const envoy::config::core::v3::Metadata& metadata() const override { ret...
function Router (line 287) | const Router::PathMatchCriterion& pathMatchCriterion() const override {
function absl (line 294) | const absl::optional<ConnectConfig>& connectConfig() const override {
function Router (line 300) | const Router::RouteEntry::UpgradeMap& upgradeMap() const override { retu...
type RouteImpl (line 322) | struct RouteImpl
function Router (line 330) | const Router::DirectResponseEntry* directResponseEntry() const override ...
function Router (line 331) | const Router::RouteEntry* routeEntry() const override { return &route_en...
function Router (line 332) | const Router::Decorator* decorator() const override { return nullptr; }
function Router (line 333) | const Router::RouteTracing* tracingConfig() const override { return null...
function Router (line 334) | const Router::RouteSpecificFilterConfig* perFilterConfig(const std::stri...
function complete (line 343) | bool complete() { return local_closed_ && remote_closed_; }
function Network (line 346) | const Network::Connection* connection() override { return nullptr; }
function clearRouteCache (line 354) | void clearRouteCache() override {}
function Tracing (line 357) | const Tracing::Config& tracingConfig() override { return tracing_config_; }
function continueDecoding (line 358) | void continueDecoding() override { NOT_IMPLEMENTED_GCOVR_EXCL_LINE; }
function addDecodedData (line 360) | void addDecodedData(Buffer::Instance&, bool) override {
function injectDecodedDataToFilterChain (line 367) | void injectDecodedDataToFilterChain(Buffer::Instance&, bool) override {
function Buffer (line 370) | const Buffer::Instance* decodingBuffer() override { return buffered_body...
function modifyDecodingBuffer (line 371) | void modifyDecodingBuffer(std::function<void(Buffer::Instance&)>) overri...
function encode100ContinueHeaders (line 399) | void encode100ContinueHeaders(ResponseHeaderMapPtr&&) override {}
function encodeMetadata (line 404) | void encodeMetadata(MetadataMapPtr&&) override {}
function onDecoderFilterAboveWriteBufferHighWatermark (line 405) | void onDecoderFilterAboveWriteBufferHighWatermark() override { ++high_wa...
function onDecoderFilterBelowWriteBufferLowWatermark (line 406) | void onDecoderFilterBelowWriteBufferLowWatermark() override {
function addDownstreamWatermarkCallbacks (line 410) | void addDownstreamWatermarkCallbacks(DownstreamWatermarkCallbacks&) over...
function removeDownstreamWatermarkCallbacks (line 411) | void removeDownstreamWatermarkCallbacks(DownstreamWatermarkCallbacks&) o...
function setDecoderBufferLimit (line 412) | void setDecoderBufferLimit(uint32_t) override {}
function decoderBufferLimit (line 413) | uint32_t decoderBufferLimit() override { return 0; }
function recreateStream (line 414) | bool recreateStream() override { return false; }
function ScopeTrackedObject (line 415) | const ScopeTrackedObject& scope() override { return *this; }
function addUpstreamSocketOptions (line 416) | void addUpstreamSocketOptions(const Network::Socket::OptionsSharedPtr&) ...
function dumpState (line 420) | void dumpState(std::ostream& os, int indent_level) const override {
function high_watermark_calls_ (line 433) | uint32_t high_watermark_calls_{}
function local_closed_ (line 434) | bool local_closed_{}
function remote_closed_ (line 435) | bool remote_closed_{}
function encoded_response_headers_ (line 437) | bool encoded_response_headers_{}
function is_grpc_request_ (line 438) | bool is_grpc_request_{}
function is_head_request_ (line 439) | bool is_head_request_{false};
FILE: source/common/http/async_client_utility.cc
type Envoy (line 5) | namespace Envoy {
type Http (line 6) | namespace Http {
FILE: source/common/http/async_client_utility.h
function namespace (line 5) | namespace Envoy {
FILE: source/common/http/codec_client.cc
type Envoy (line 22) | namespace Envoy {
type Http (line 23) | namespace Http {
function RequestEncoder (line 66) | RequestEncoder& CodecClient::newStream(ResponseDecoder& response_dec...
FILE: source/common/http/codec_client.h
function namespace (line 21) | namespace Envoy {
function onAboveWriteBufferHighWatermark (line 227) | void onAboveWriteBufferHighWatermark() override {
function onBelowWriteBufferLowWatermark (line 230) | void onBelowWriteBufferLowWatermark() override {
function CodecClientCallbacks (line 236) | CodecClientCallbacks* codec_client_callbacks_{}
function connected_ (line 237) | bool connected_{}
function remote_closed_ (line 238) | bool remote_closed_{}
function class (line 246) | class CodecClientProd : public CodecClient {
FILE: source/common/http/codec_helper.h
function namespace (line 9) | namespace Envoy {
FILE: source/common/http/codec_wrappers.h
function namespace (line 5) | namespace Envoy {
FILE: source/common/http/codes.cc
type Envoy (line 18) | namespace Envoy {
type Http (line 19) | namespace Http {
FILE: source/common/http/codes.h
function namespace (line 14) | namespace Envoy {
FILE: source/common/http/conn_manager_config.h
function namespace (line 17) | namespace Envoy {
FILE: source/common/http/conn_manager_impl.cc
type Envoy (line 52) | namespace Envoy {
type Http (line 53) | namespace Http {
function ConnectionManagerStats (line 55) | ConnectionManagerStats ConnectionManagerImpl::generateStats(const st...
function ConnectionManagerTracingStats (line 63) | ConnectionManagerTracingStats ConnectionManagerImpl::generateTracing...
function ConnectionManagerListenerStats (line 68) | ConnectionManagerListenerStats
function ResponseHeaderMap (line 94) | const ResponseHeaderMap& ConnectionManagerImpl::continueHeader() {
function RequestDecoder (line 219) | RequestDecoder& ConnectionManagerImpl::newStream(ResponseEncoder& re...
function ScopeTrackedObject (line 1546) | const ScopeTrackedObject& ConnectionManagerImpl::ActiveStream::scope...
function Http1StreamEncoderOptionsOptRef (line 1607) | Http1StreamEncoderOptionsOptRef ConnectionManagerImpl::ActiveStream:...
FILE: source/common/http/conn_manager_impl.h
function onAboveWriteBufferHighWatermark (line 104) | void onAboveWriteBufferHighWatermark() override {
function onBelowWriteBufferLowWatermark (line 107) | void onBelowWriteBufferLowWatermark() override {
type ActiveStream (line 114) | struct ActiveStream
function class (line 116) | class RdsRouteConfigUpdateRequester {
type ActiveStream (line 151) | struct ActiveStream
function streamId (line 170) | uint64_t streamId() { return stream_id_; }
function onAboveWriteBufferHighWatermark (line 184) | void onAboveWriteBufferHighWatermark() override;
function setRequestTrailers (line 215) | void setRequestTrailers(Http::RequestTrailerMapPtr&& request_trailers) o...
function setContinueHeaders (line 219) | void setContinueHeaders(Http::ResponseHeaderMapPtr&& continue_headers) o...
function setResponseHeaders (line 223) | void setResponseHeaders(Http::ResponseHeaderMapPtr&& response_headers) o...
function setResponseTrailers (line 228) | void setResponseTrailers(Http::ResponseTrailerMapPtr&& response_trailers...
function endStream (line 250) | void endStream() override {
function onDecoderFilterBelowWriteBufferLowWatermark (line 257) | void onDecoderFilterBelowWriteBufferLowWatermark() override;
function disarmRequestTimeout (line 264) | void disarmRequestTimeout() override;
function ResponseEncoder (line 355) | ResponseEncoder* response_encoder_{}
function std (line 367) | const std::string* decorated_operation_{nullptr};
FILE: source/common/http/conn_manager_utility.cc
type Envoy (line 26) | namespace Envoy {
type Http (line 27) | namespace Http {
function ServerConnectionPtr (line 45) | ServerConnectionPtr ConnectionManagerUtility::autoCreateCodec(
FILE: source/common/http/conn_manager_utility.h
function namespace (line 13) | namespace Envoy {
FILE: source/common/http/conn_pool_base.cc
type Envoy (line 10) | namespace Envoy {
type Http (line 11) | namespace Http {
function wrapTransportSocketOptions (line 13) | Network::TransportSocketOptionsSharedPtr
FILE: source/common/http/conn_pool_base.h
function namespace (line 14) | namespace Envoy {
FILE: source/common/http/context_impl.cc
type Envoy (line 3) | namespace Envoy {
type Http (line 4) | namespace Http {
FILE: source/common/http/context_impl.h
function namespace (line 8) | namespace Envoy {
FILE: source/common/http/date_provider.h
function namespace (line 6) | namespace Envoy {
FILE: source/common/http/date_provider_impl.cc
type Envoy (line 6) | namespace Envoy {
type Http (line 7) | namespace Http {
FILE: source/common/http/date_provider_impl.h
function namespace (line 14) | namespace Envoy {
function class (line 56) | class SlowDateProviderImpl : public DateProviderImplBase {
FILE: source/common/http/default_server_string.h
function namespace (line 7) | namespace Envoy {
FILE: source/common/http/exception.h
function namespace (line 9) | namespace Envoy {
FILE: source/common/http/filter_manager.cc
type Envoy (line 11) | namespace Envoy {
type Http (line 12) | namespace Http {
function recordLatestDataFilter (line 20) | void recordLatestDataFilter(const typename FilterList<T>::iterator c...
function ScopeTrackedObject (line 228) | const ScopeTrackedObject& ActiveStreamFilterBase::scope() {
function RequestTrailerMap (line 311) | RequestTrailerMap& ActiveStreamDecoderFilter::addDecodedTrailers() {
function MetadataMapVector (line 319) | MetadataMapVector& ActiveStreamDecoderFilter::addDecodedMetadata() {
function RequestTrailerMap (line 623) | RequestTrailerMap& FilterManager::addDecodedTrailers() {
function MetadataMapVector (line 653) | MetadataMapVector& FilterManager::addDecodedMetadata() { return *get...
function ResponseTrailerMap (line 1041) | ResponseTrailerMap& FilterManager::addEncodedTrailers() {
function ResponseTrailerMap (line 1403) | ResponseTrailerMap& ActiveStreamEncoderFilter::addEncodedTrailers() {
function Http1StreamEncoderOptionsOptRef (line 1447) | Http1StreamEncoderOptionsOptRef ActiveStreamEncoderFilter::http1Stre...
FILE: source/common/http/filter_manager.h
type ActiveStreamFilterBase (line 22) | struct ActiveStreamFilterBase
function virtual (line 48) | virtual bool canContinue() PURE;
function allowIteration (line 82) | void allowIteration() {
function MetadataMapVector (line 86) | MetadataMapVector* getSavedRequestMetadata() {
function MetadataMapVector (line 92) | MetadataMapVector* getSavedResponseMetadata() {
function IterationState (line 106) | enum class IterationState {
type ActiveStreamDecoderFilter (line 133) | struct ActiveStreamDecoderFilter
function doMetadata (line 149) | void doMetadata() override {
function doTrailers (line 154) | void doTrailers() override;
type ActiveStreamEncoderFilter (line 219) | struct ActiveStreamEncoderFilter
function handleMetadataAfterHeadersCallback (line 236) | void handleMetadataAfterHeadersCallback() override;
function doTrailers (line 243) | void doTrailers() override;
function MetadataMapVector (line 756) | MetadataMapVector* getRequestMetadataMapVector() {
function buffer_limit_ (line 779) | uint32_t buffer_limit_{0}
function high_watermark_count_ (line 780) | uint32_t high_watermark_count_{0}
type FilterCallState (line 798) | struct FilterCallState {
type State (line 816) | struct State {
function decoder_filters_streaming_ (line 843) | bool decoder_filters_streaming_{true};
FILE: source/common/http/hash_policy.cc
type Envoy (line 11) | namespace Envoy {
type Http (line 12) | namespace Http {
class HashMethodImplBase (line 14) | class HashMethodImplBase : public HashPolicyImpl::HashMethod {
method HashMethodImplBase (line 16) | explicit HashMethodImplBase(bool terminal) : terminal_(terminal) {}
method terminal (line 18) | bool terminal() const override { return terminal_; }
class HeaderHashMethod (line 24) | class HeaderHashMethod : public HashMethodImplBase {
method HeaderHashMethod (line 26) | HeaderHashMethod(const envoy::config::route::v3::RouteAction::Hash...
method evaluate (line 36) | absl::optional<uint64_t> evaluate(const Network::Address::Instance*,
class CookieHashMethod (line 60) | class CookieHashMethod : public HashMethodImplBase {
method CookieHashMethod (line 62) | CookieHashMethod(const std::string& key, const std::string& path,
method evaluate (line 66) | absl::optional<uint64_t> evaluate(const Network::Address::Instance*,
class IpHashMethod (line 88) | class IpHashMethod : public HashMethodImplBase {
method IpHashMethod (line 90) | IpHashMethod(bool terminal) : HashMethodImplBase(terminal) {}
method evaluate (line 92) | absl::optional<uint64_t> evaluate(const Network::Address::Instance...
class QueryParameterHashMethod (line 110) | class QueryParameterHashMethod : public HashMethodImplBase {
method QueryParameterHashMethod (line 112) | QueryParameterHashMethod(const std::string& parameter_name, bool t...
method evaluate (line 115) | absl::optional<uint64_t> evaluate(const Network::Address::Instance*,
class FilterStateHashMethod (line 137) | class FilterStateHashMethod : public HashMethodImplBase {
method FilterStateHashMethod (line 139) | FilterStateHashMethod(const std::string& key, bool terminal)
method evaluate (line 142) | absl::optional<uint64_t>
FILE: source/common/http/hash_policy.h
function namespace (line 7) | namespace Envoy {
FILE: source/common/http/header_list_view.cc
type Envoy (line 3) | namespace Envoy {
type Http (line 4) | namespace Http {
FILE: source/common/http/header_list_view.h
function namespace (line 7) | namespace Envoy {
FILE: source/common/http/header_map_impl.cc
type Envoy (line 18) | namespace Envoy {
type Http (line 19) | namespace Http {
function validateCapacity (line 25) | void validateCapacity(uint64_t new_capacity) {
function getStrView (line 32) | absl::string_view getStrView(const VariantHeader& buffer) {
function InlineHeaderVector (line 36) | InlineHeaderVector& getInVec(VariantHeader& buffer) {
function InlineHeaderVector (line 40) | const InlineHeaderVector& getInVec(const VariantHeader& buffer) {
function collectAllHeaders (line 325) | HeaderMap::ConstIterateCb
function HeaderEntry (line 476) | const HeaderEntry* HeaderMapImpl::get(const LowerCaseString& key) co...
function makeHeaderMapImplInfo (line 641) | HeaderMapImplUtility::HeaderMapImplInfo makeHeaderMapImplInfo(absl::...
FILE: source/common/http/header_map_impl.h
function namespace (line 17) | namespace Envoy {
function class (line 188) | class HeaderList : NonCopyable {
function virtual (line 323) | virtual void clearInline() PURE;
function HeaderEntry (line 400) | const HeaderEntry* getInline(Handle handle) const override {
function appendInline (line 404) | void appendInline(Handle handle, absl::string_view data, absl::string_vi...
function setReferenceInline (line 409) | void setReferenceInline(Handle handle, absl::string_view value) override {
function setInline (line 415) | void setInline(Handle handle, absl::string_view value) override {
function setInline (line 421) | void setInline(Handle handle, uint64_t value) override {
function removeInline (line 428) | size_t removeInline(Handle handle) override {
function inlineHeadersSize (line 432) | static size_t inlineHeadersSize() {
function INLINE_REQ_RESP_HEADERS (line 458) | INLINE_REQ_HEADERS(DEFINE_INLINE_HEADER_FUNCS)
function HeaderEntryImpl (line 468) | HeaderEntryImpl** inlineHeaders() override { return inline_headers_; }
type HeaderHandleValues (line 471) | struct HeaderHandleValues {
function HeaderEntryImpl (line 498) | const HeaderEntryImpl* const* constInlineHeaders() const override { retu...
function HeaderEntryImpl (line 499) | HeaderEntryImpl** inlineHeaders() override { return inline_headers_; }
function INLINE_REQ_RESP_HEADERS (line 519) | INLINE_RESP_HEADERS(DEFINE_INLINE_HEADER_FUNCS)
function HeaderEntryImpl (line 526) | const HeaderEntryImpl* const* constInlineHeaders() const override { retu...
function HeaderEntryImpl (line 527) | HeaderEntryImpl** inlineHeaders() override { return inline_headers_; }
type HeaderHandleValues (line 530) | struct HeaderHandleValues {
function clearInline (line 559) | void clearInline() override { memset(inline_headers_, 0, inlineHeadersSi...
function HeaderEntryImpl (line 560) | const HeaderEntryImpl* const* constInlineHeaders() const override { retu...
function HeaderEntryImpl (line 561) | HeaderEntryImpl** inlineHeaders() override { return inline_headers_; }
type HeaderHandleValues (line 564) | struct HeaderHandleValues {
type EmptyHeaders (line 600) | struct EmptyHeaders {
function class (line 608) | class HeaderMapImplUtility {
FILE: source/common/http/header_utility.cc
type Envoy (line 15) | namespace Envoy {
type Http (line 16) | namespace Http {
type SharedResponseCodeDetailsValues (line 18) | struct SharedResponseCodeDetailsValues {
FILE: source/common/http/header_utility.h
function namespace (line 13) | namespace Envoy {
FILE: source/common/http/headers.h
function class (line 18) | class PrefixValue {
function std (line 93) | const std::string NoTransform{"no-transform"};
function std (line 222) | const std::string Upgrade{"upgrade"};
function std (line 242) | const std::string FormUrlEncoded{"application/x-www-form-urlencoded"};
function std (line 270) | const std::string Reset{"reset"};
function std (line 276) | const std::string ResourceExhausted{"resource-exhausted"};
FILE: source/common/http/http1/codec_impl.cc
type Envoy (line 27) | namespace Envoy {
type Http (line 28) | namespace Http {
type Http1 (line 29) | namespace Http1 {
type Http1ResponseCodeDetailValues (line 34) | struct Http1ResponseCodeDetailValues {
type Http1HeaderTypesValues (line 49) | struct Http1HeaderTypesValues {
function HeaderKeyFormatterPtr (line 63) | HeaderKeyFormatterPtr formatter(const Http::Http1Settings& setting...
function Status (line 282) | Status ServerConnectionImpl::doFloodProtectionChecks() const {
function Status (line 495) | Status ConnectionImpl::completeLastHeader() {
function Status (line 532) | Status ConnectionImpl::checkMaxHeadersSize() {
function Status (line 632) | Status ConnectionImpl::onHeaderField(const char* data, size_t leng...
function Status (line 654) | Status ConnectionImpl::onHeaderValue(const char* data, size_t leng...
function Status (line 802) | Status ConnectionImpl::onMessageCompleteBase() {
function Status (line 826) | Status ConnectionImpl::onMessageBeginBase() {
function Status (line 883) | Status ServerConnectionImpl::handlePath(RequestHeaderMap& headers,...
function Status (line 991) | Status ServerConnectionImpl::onMessageBegin() {
function Status (line 1009) | Status ServerConnectionImpl::onUrl(const char* data, size_t length) {
function Status (line 1080) | Status ServerConnectionImpl::sendProtocolError(absl::string_view d...
function Status (line 1126) | Status ServerConnectionImpl::checkHeaderNameForUnderscores() {
function RequestEncoder (line 1167) | RequestEncoder& ClientConnectionImpl::newStream(ResponseDecoder& r...
function Status (line 1310) | Status ClientConnectionImpl::sendProtocolError(absl::string_view d...
FILE: source/common/http/http1/codec_impl.h
function namespace (line 25) | namespace Envoy {
function startedResponse (line 131) | bool startedResponse() { return started_response_; }
function encodeTrailers (line 136) | void encodeTrailers(const ResponseTrailerMap& trailers) override { encod...
function encodeTrailers (line 160) | void encodeTrailers(const RequestTrailerMap& trailers) override { encode...
function head_request_ (line 164) | bool head_request_{}
function connect_request_ (line 165) | bool connect_request_{}
function virtual (line 183) | virtual void onEncodeComplete() PURE;
function bufferLimit (line 209) | uint32_t bufferLimit() { return connection_.bufferLimit(); }
function virtual (line 210) | virtual bool supportsHttp10() { return false; }
function virtual (line 212) | virtual void maybeAddSentinelBufferFragment(Buffer::WatermarkBuffer&) {}
function goAway (line 218) | void goAway() override {}
function Protocol (line 219) | Protocol protocol() override { return protocol_; }
function shutdownNotice (line 220) | void shutdownNotice() override {}
function wantsToWrite (line 221) | bool wantsToWrite() override { return false; }
function onUnderlyingConnectionAboveWriteBufferHighWatermark (line 222) | void onUnderlyingConnectionAboveWriteBufferHighWatermark() override { on...
function onUnderlyingConnectionBelowWriteBufferLowWatermark (line 223) | void onUnderlyingConnectionBelowWriteBufferLowWatermark() override { onB...
function strict1xxAnd204Headers (line 225) | bool strict1xxAnd204Headers() { return strict_1xx_and_204_headers_; }
function HttpParserCode (line 243) | enum class HttpParserCode {
FILE: source/common/http/http1/codec_impl_legacy.cc
type Envoy (line 25) | namespace Envoy {
type Http (line 26) | namespace Http {
type Legacy (line 27) | namespace Legacy {
type Http1 (line 28) | namespace Http1 {
type Http1ResponseCodeDetailValues (line 31) | struct Http1ResponseCodeDetailValues {
type Http1HeaderTypesValues (line 46) | struct Http1HeaderTypesValues {
function HeaderKeyFormatterPtr (line 64) | HeaderKeyFormatterPtr formatter(const Http::Http1Settings& setti...
function RequestEncoder (line 1100) | RequestEncoder& ClientConnectionImpl::newStream(ResponseDecoder&...
FILE: source/common/http/http1/codec_impl_legacy.h
function namespace (line 25) | namespace Envoy {
function virtual (line 187) | virtual void onEncodeComplete() PURE;
function bufferLimit (line 213) | uint32_t bufferLimit() { return connection_.bufferLimit(); }
function virtual (line 214) | virtual bool supportsHttp10() { return false; }
function virtual (line 216) | virtual void maybeAddSentinelBufferFragment(Buffer::WatermarkBuffer&) {}
function goAway (line 222) | void goAway() override {}
function Protocol (line 223) | Protocol protocol() override { return protocol_; }
function shutdownNotice (line 224) | void shutdownNotice() override {}
function wantsToWrite (line 225) | bool wantsToWrite() override { return false; }
function onUnderlyingConnectionAboveWriteBufferHighWatermark (line 226) | void onUnderlyingConnectionAboveWriteBufferHighWatermark() override { on...
function onUnderlyingConnectionBelowWriteBufferLowWatermark (line 227) | void onUnderlyingConnectionBelowWriteBufferLowWatermark() override { onB...
function strict1xxAnd204Headers (line 229) | bool strict1xxAnd204Headers() { return strict_1xx_and_204_headers_; }
function resetStreamCalled (line 237) | bool resetStreamCalled() { return reset_stream_called_; }
type class (line 272) | enum class
function virtual (line 274) | virtual HeaderMap& headersOrTrailers() PURE;
function virtual (line 328) | virtual void onMessageBegin() PURE;
function HeaderParsingState (line 418) | HeaderParsingState header_parsing_state_{HeaderParsingState::Field};
FILE: source/common/http/http1/codec_stats.h
function namespace (line 8) | namespace Envoy {
FILE: source/common/http/http1/conn_pool.cc
type Envoy (line 22) | namespace Envoy {
type Http (line 23) | namespace Http {
type Http1 (line 24) | namespace Http1 {
function RequestEncoder (line 127) | RequestEncoder& ConnPoolImpl::ActiveClient::newStreamEncoder(Respo...
function CodecClientPtr (line 133) | CodecClientPtr ProdConnPoolImpl::createCodecClient(Upstream::Host:...
function allocateConnPool (line 139) | ConnectionPool::InstancePtr
FILE: source/common/http/http1/conn_pool.h
function namespace (line 10) | namespace Envoy {
FILE: source/common/http/http1/header_formatter.cc
type Envoy (line 5) | namespace Envoy {
type Http (line 6) | namespace Http {
type Http1 (line 7) | namespace Http1 {
FILE: source/common/http/http1/header_formatter.h
function namespace (line 10) | namespace Envoy {
FILE: source/common/http/http2/codec_impl.cc
type Envoy (line 27) | namespace Envoy {
type Http (line 28) | namespace Http {
type Http2 (line 29) | namespace Http2 {
class Http2ResponseCodeDetailValues (line 33) | class Http2ResponseCodeDetailValues {
method errorDetails (line 55) | const absl::string_view errorDetails(int error_code) const {
function nghttp2_session (line 86) | nghttp2_session* ProdNghttp2SessionFactory::create(const nghttp2_s...
function T (line 103) | static T* removeConst(const void* object) {
function insertHeader (line 126) | static void insertHeader(std::vector<nghttp2_nv>& headers, const H...
function Status (line 407) | Status ConnectionImpl::StreamImpl::onDataSourceSend(const uint8_t*...
function MetadataEncoder (line 530) | MetadataEncoder& ConnectionImpl::StreamImpl::getMetadataEncoder() {
function MetadataDecoder (line 537) | MetadataDecoder& ConnectionImpl::StreamImpl::getMetadataDecoder() {
function Status (line 709) | Status ConnectionImpl::onBeforeFrameReceived(const nghttp2_frame_h...
function ABSL_MUST_USE_RESULT (line 724) | ABSL_MUST_USE_RESULT
function Status (line 734) | Status ConnectionImpl::onFrameReceived(const nghttp2_frame* frame) {
function Status (line 924) | Status ConnectionImpl::addOutboundFrameFragment(Buffer::OwnedImpl&...
function Status (line 1074) | Status ConnectionImpl::sendPendingFrames() {
function RequestEncoder (line 1392) | RequestEncoder& ClientConnectionImpl::newStream(ResponseDecoder& d...
function Status (line 1405) | Status ClientConnectionImpl::onBeginHeaders(const nghttp2_frame* f...
function Status (line 1445) | Status ServerConnectionImpl::onBeginHeaders(const nghttp2_frame* f...
function Status (line 1480) | Status ServerConnectionImpl::trackInboundFrames(const nghttp2_fram...
FILE: source/common/http/http2/codec_impl.h
function namespace (line 34) | namespace Envoy {
type ClientStreamImpl (line 311) | struct ClientStreamImpl
function allocTrailers (line 330) | void allocTrailers() override {
function HeaderMapPtr (line 339) | HeaderMapPtr cloneTrailers(const HeaderMap& trailers) override {
function createPendingFlushTimer (line 342) | void createPendingFlushTimer() override {
function encodeTrailers (line 349) | void encodeTrailers(const RequestTrailerMap& trailers) override {
type ServerStreamImpl (line 363) | struct ServerStreamImpl
function allocTrailers (line 380) | void allocTrailers() override {
function HeaderMapPtr (line 383) | HeaderMapPtr cloneTrailers(const HeaderMap& trailers) override {
function createPendingFlushTimer (line 386) | void createPendingFlushTimer() override;
function RequestDecoder (line 395) | RequestDecoder* request_decoder_{}
function ConnectionImpl (line 405) | ConnectionImpl* base() { return this; }
function virtual (line 433) | virtual void onSettingsForTest(const nghttp2_settings&) {}
function virtual (line 443) | virtual absl::optional<int> checkHeaderNameForUnderscores(absl::string_v...
function virtual (line 465) | virtual void checkProtocolConstraintViolation() PURE;
function Status (line 580) | Status trackInboundFrames(const nghttp2_frame_hd*, uint32_t) override { ...
function checkProtocolConstraintViolation (line 581) | void checkProtocolConstraintViolation() override {}
FILE: source/common/http/http2/codec_impl_legacy.cc
type Envoy (line 27) | namespace Envoy {
type Http (line 28) | namespace Http {
type Legacy (line 29) | namespace Legacy {
type Http2 (line 30) | namespace Http2 {
class Http2ResponseCodeDetailValues (line 32) | class Http2ResponseCodeDetailValues {
method errorDetails (line 54) | const absl::string_view errorDetails(int error_code) const {
function nghttp2_session (line 88) | nghttp2_session* ProdNghttp2SessionFactory::create(const nghttp2...
function T (line 105) | static T* removeConst(const void* object) {
function insertHeader (line 128) | static void insertHeader(std::vector<nghttp2_nv>& headers, const...
function MetadataEncoder (line 510) | MetadataEncoder& ConnectionImpl::StreamImpl::getMetadataEncoder() {
function MetadataDecoder (line 517) | MetadataDecoder& ConnectionImpl::StreamImpl::getMetadataDecoder() {
function ABSL_MUST_USE_RESULT (line 692) | ABSL_MUST_USE_RESULT
function RequestEncoder (line 1338) | RequestEncoder& ClientConnectionImpl::newStream(ResponseDecoder&...
FILE: source/common/http/http2/codec_impl_legacy.h
function namespace (line 33) | namespace Envoy {
type ClientStreamImpl (line 311) | struct ClientStreamImpl
function allocTrailers (line 330) | void allocTrailers() override {
function HeaderMapPtr (line 339) | HeaderMapPtr cloneTrailers(const HeaderMap& trailers) override {
function createPendingFlushTimer (line 342) | void createPendingFlushTimer() override {
function encodeTrailers (line 349) | void encodeTrailers(const RequestTrailerMap& trailers) override {
type ServerStreamImpl (line 363) | struct ServerStreamImpl
function allocTrailers (line 382) | void allocTrailers() override {
function HeaderMapPtr (line 385) | HeaderMapPtr cloneTrailers(const HeaderMap& trailers) override {
function createPendingFlushTimer (line 388) | void createPendingFlushTimer() override;
function RequestDecoder (line 397) | RequestDecoder* request_decoder_{}
function ConnectionImpl (line 408) | ConnectionImpl* base() { return this; }
function virtual (line 419) | virtual void onSettingsForTest(const nghttp2_settings&) {}
function virtual (line 429) | virtual absl::optional<int> checkHeaderNameForUnderscores(absl::string_v...
function virtual (line 448) | virtual void checkProtocolConstraintViolation() PURE;
function trackInboundFrames (line 558) | bool trackInboundFrames(const nghttp2_frame_hd*, uint32_t) override { re...
function checkProtocolConstraintViolation (line 559) | void checkProtocolConstraintViolation() override {}
FILE: source/common/http/http2/codec_stats.h
function namespace (line 8) | namespace Envoy {
FILE: source/common/http/http2/conn_pool.cc
type Envoy (line 11) | namespace Envoy {
type Http (line 12) | namespace Http {
type Http2 (line 13) | namespace Http2 {
function RequestEncoder (line 82) | RequestEncoder& ConnPoolImpl::ActiveClient::newStreamEncoder(Respo...
function CodecClientPtr (line 86) | CodecClientPtr ProdConnPoolImpl::createCodecClient(Upstream::Host:...
function allocateConnPool (line 92) | ConnectionPool::InstancePtr
FILE: source/common/http/http2/conn_pool.h
function namespace (line 10) | namespace Envoy {
FILE: source/common/http/http2/metadata_decoder.cc
type Envoy (line 7) | namespace Envoy {
type Http (line 8) | namespace Http {
type Http2 (line 9) | namespace Http2 {
FILE: source/common/http/http2/metadata_decoder.h
function namespace (line 13) | namespace Envoy {
FILE: source/common/http/http2/metadata_encoder.cc
type Envoy (line 8) | namespace Envoy {
type Http (line 9) | namespace Http {
type Http2 (line 10) | namespace Http2 {
FILE: source/common/http/http2/metadata_encoder.h
function namespace (line 15) | namespace Envoy {
FILE: source/common/http/http2/nghttp2.cc
type Envoy (line 12) | namespace Envoy {
type Http (line 13) | namespace Http {
type Http2 (line 14) | namespace Http2 {
function initializeNghttp2Logging (line 16) | void initializeNghttp2Logging() {
FILE: source/common/http/http2/nghttp2.h
function namespace (line 3) | namespace Envoy {
FILE: source/common/http/http2/protocol_constraints.cc
type Envoy (line 5) | namespace Envoy {
type Http (line 6) | namespace Http {
type Http2 (line 7) | namespace Http2 {
function Status (line 43) | Status ProtocolConstraints::checkOutboundFrameLimits() {
function Status (line 60) | Status ProtocolConstraints::trackInboundFrames(const nghttp2_frame...
function Status (line 92) | Status ProtocolConstraints::checkInboundFrameLimits() {
FILE: source/common/http/http2/protocol_constraints.h
function namespace (line 14) | namespace Envoy {
FILE: source/common/http/http3/quic_codec_factory.h
function namespace (line 9) | namespace Envoy {
FILE: source/common/http/http3/well_known_names.h
function namespace (line 7) | namespace Envoy {
FILE: source/common/http/message_impl.h
function namespace (line 12) | namespace Envoy {
FILE: source/common/http/path_utility.cc
type Envoy (line 11) | namespace Envoy {
type Http (line 12) | namespace Http {
function canonicalizePath (line 15) | absl::optional<std::string> canonicalizePath(absl::string_view origi...
FILE: source/common/http/path_utility.h
function namespace (line 7) | namespace Envoy {
FILE: source/common/http/request_id_extension_impl.cc
type Envoy (line 7) | namespace Envoy {
type Http (line 8) | namespace Http {
class NoopRequestIDExtension (line 13) | class NoopRequestIDExtension : public RequestIDExtension {
method set (line 15) | void set(RequestHeaderMap&, bool) override {}
method setInResponse (line 16) | void setInResponse(ResponseHeaderMap&, const RequestHeaderMap&) ov...
method modBy (line 17) | bool modBy(const RequestHeaderMap&, uint64_t&, uint64_t) override ...
method TraceStatus (line 18) | TraceStatus getTraceStatus(const RequestHeaderMap&) override { ret...
method setTraceStatus (line 19) | void setTraceStatus(RequestHeaderMap&, TraceStatus) override {}
function RequestIDExtensionSharedPtr (line 24) | RequestIDExtensionSharedPtr RequestIDExtensionFactory::fromProto(
function RequestIDExtensionSharedPtr (line 42) | RequestIDExtensionSharedPtr
function RequestIDExtensionSharedPtr (line 47) | RequestIDExtensionSharedPtr RequestIDExtensionFactory::noopInstance() {
FILE: source/common/http/request_id_extension_impl.h
function namespace (line 10) | namespace Envoy {
FILE: source/common/http/request_id_extension_uuid_impl.cc
type Envoy (line 13) | namespace Envoy {
type Http (line 14) | namespace Http {
function TraceStatus (line 53) | TraceStatus UUIDRequestIDExtension::getTraceStatus(const RequestHead...
FILE: source/common/http/request_id_extension_uuid_impl.h
function namespace (line 8) | namespace Envoy {
FILE: source/common/http/rest_api_fetcher.cc
type Envoy (line 12) | namespace Envoy {
type Http (line 13) | namespace Http {
FILE: source/common/http/rest_api_fetcher.h
function namespace (line 12) | namespace Envoy {
FILE: source/common/http/status.cc
type Envoy (line 7) | namespace Envoy {
type Http (line 8) | namespace Http {
function statusCodeToString (line 14) | absl::string_view statusCodeToString(StatusCode code) {
type EnvoyStatusPayload (line 32) | struct EnvoyStatusPayload {
method EnvoyStatusPayload (line 33) | EnvoyStatusPayload(StatusCode status_code) : status_code_(status_c...
type PrematureResponsePayload (line 37) | struct PrematureResponsePayload : public EnvoyStatusPayload {
method PrematureResponsePayload (line 38) | PrematureResponsePayload(Http::Code http_code)
function storePayload (line 43) | void storePayload(absl::Status& status, const T& payload) {
function T (line 49) | const T& getPayload(const absl::Status& status) {
function toString (line 69) | std::string toString(const Status& status) {
function Status (line 85) | Status codecProtocolError(absl::string_view message) {
function Status (line 91) | Status bufferFloodError(absl::string_view message) {
function Status (line 97) | Status prematureResponseError(absl::string_view message, Http::Code ...
function Status (line 103) | Status codecClientError(absl::string_view message) {
function Status (line 109) | Status inboundFramesWithEmptyPayloadError() {
function StatusCode (line 117) | StatusCode getStatusCode(const Status& status) {
function isCodecProtocolError (line 121) | bool isCodecProtocolError(const Status& status) {
function isBufferFloodError (line 125) | bool isBufferFloodError(const Status& status) {
function isPrematureResponseError (line 129) | bool isPrematureResponseError(const Status& status) {
function getPrematureResponseHttpCode (line 133) | Http::Code getPrematureResponseHttpCode(const Status& status) {
function isCodecClientError (line 140) | bool isCodecClientError(const Status& status) {
function isInboundFramesWithEmptyPayloadError (line 144) | bool isInboundFramesWithEmptyPayloadError(const Status& status) {
FILE: source/common/http/status.h
function namespace (line 43) | namespace Envoy {
FILE: source/common/http/user_agent.cc
type Envoy (line 15) | namespace Envoy {
type Http (line 16) | namespace Http {
FILE: source/common/http/user_agent.h
function namespace (line 15) | namespace Envoy {
FILE: source/common/http/utility.cc
type Envoy (line 36) | namespace Envoy {
type Http (line 37) | namespace Http {
type Utility (line 38) | namespace Utility {
function exceptionToStatus (line 39) | Http::Status exceptionToStatus(std::function<Http::Status(Buffer::...
type http_parser_url (line 232) | struct http_parser_url
function Http1Settings (line 439) | Http1Settings
function Http1Settings (line 457) | Http1Settings
function RequestMessagePtr (line 780) | RequestMessagePtr Utility::prepareHeaders(const envoy::config::core:...
type Http2 (line 59) | namespace Http2 {
type Utility (line 60) | namespace Utility {
function validateCustomSettingsParameters (line 64) | void validateCustomSettingsParameters(
function initializeAndValidateOptions (line 148) | envoy::config::core::v3::Http2ProtocolOptions
function initializeAndValidateOptions (line 162) | envoy::config::core::v3::Http2ProtocolOptions
type Http (line 227) | namespace Http {
type Utility (line 38) | namespace Utility {
function exceptionToStatus (line 39) | Http::Status exceptionToStatus(std::function<Http::Status(Buffer::...
type http_parser_url (line 232) | struct http_parser_url
function Http1Settings (line 439) | Http1Settings
function Http1Settings (line 457) | Http1Settings
function RequestMessagePtr (line 780) | RequestMessagePtr Utility::prepareHeaders(const envoy::config::core:...
FILE: source/common/http/utility.h
function namespace (line 23) | namespace Envoy {
FILE: source/common/init/manager_impl.cc
type Envoy (line 8) | namespace Envoy {
type Init (line 9) | namespace Init {
FILE: source/common/init/manager_impl.h
function namespace (line 12) | namespace Envoy {
FILE: source/common/init/target_impl.cc
type Envoy (line 3) | namespace Envoy {
type Init (line 4) | namespace Init {
function TargetHandlePtr (line 38) | TargetHandlePtr TargetImpl::createHandle(absl::string_view handle_na...
function TargetHandlePtr (line 70) | TargetHandlePtr SharedTargetImpl::createHandle(absl::string_view han...
FILE: source/common/init/target_impl.h
function namespace (line 9) | namespace Envoy {
function initialized_ (line 130) | bool initialized_{false};
FILE: source/common/init/watcher_impl.cc
type Envoy (line 3) | namespace Envoy {
type Init (line 4) | namespace Init {
function WatcherHandlePtr (line 35) | WatcherHandlePtr WatcherImpl::createHandle(absl::string_view handle_...
FILE: source/common/init/watcher_impl.h
function namespace (line 9) | namespace Envoy {
FILE: source/common/json/json_loader.cc
type Envoy (line 29) | namespace Envoy {
type Json (line 30) | namespace Json {
class Field (line 36) | class Field
method setLineNumberStart (line 41) | void setLineNumberStart(uint64_t line_number) { line_number_start_...
method setLineNumberEnd (line 42) | void setLineNumberEnd(uint64_t line_number) { line_number_end_ = l...
method FieldSharedPtr (line 45) | static FieldSharedPtr createObject() { return FieldSharedPtr{new F...
method FieldSharedPtr (line 46) | static FieldSharedPtr createArray() { return FieldSharedPtr{new Fi...
method FieldSharedPtr (line 47) | static FieldSharedPtr createNull() { return FieldSharedPtr{new Fie...
method isNull (line 49) | bool isNull() const override { return type_ == Type::Null; }
method isArray (line 50) | bool isArray() const override { return type_ == Type::Array; }
method isObject (line 51) | bool isObject() const override { return type_ == Type::Object; }
method FieldSharedPtr (line 54) | static FieldSharedPtr createValue(T value) {
method append (line 58) | void append(FieldSharedPtr field_ptr) {
method insert (line 62) | void insert(const std::string& key, FieldSharedPtr field_ptr) {
method asString (line 82) | std::string asString() const override { return stringValue(); }
method asBoolean (line 83) | bool asBoolean() const override { return booleanValue(); }
method asDouble (line 84) | double asDouble() const override { return doubleValue(); }
method asInteger (line 85) | int64_t asInteger() const override { return integerValue(); }
type Type (line 94) | enum class Type {
type Value (line 124) | struct Value {
method Field (line 133) | explicit Field(Type type) : type_(type) {}
method Field (line 134) | explicit Field(const std::string& value) : type_(Type::String) { v...
method Field (line 135) | explicit Field(int64_t value) : type_(Type::Integer) { value_.inte...
method Field (line 136) | explicit Field(double value) : type_(Type::Double) { value_.double...
method Field (line 137) | explicit Field(bool value) : type_(Type::Boolean) { value_.boolean...
method isType (line 139) | bool isType(Type type) const { return type == type_; }
method checkType (line 140) | void checkType(Type type) const {
method stringValue (line 149) | std::string stringValue() const {
method arrayValue (line 153) | std::vector<FieldSharedPtr> arrayValue() const {
method booleanValue (line 157) | bool booleanValue() const {
method doubleValue (line 161) | double doubleValue() const {
method integerValue (line 165) | int64_t integerValue() const {
class Field (line 39) | class Field : public Object {
method setLineNumberStart (line 41) | void setLineNumberStart(uint64_t line_number) { line_number_start_...
method setLineNumberEnd (line 42) | void setLineNumberEnd(uint64_t line_number) { line_number_end_ = l...
method FieldSharedPtr (line 45) | static FieldSharedPtr createObject() { return FieldSharedPtr{new F...
method FieldSharedPtr (line 46) | static FieldSharedPtr createArray() { return FieldSharedPtr{new Fi...
method FieldSharedPtr (line 47) | static FieldSharedPtr createNull() { return FieldSharedPtr{new Fie...
method isNull (line 49) | bool isNull() const override { return type_ == Type::Null; }
method isArray (line 50) | bool isArray() const override { return type_ == Type::Array; }
method isObject (line 51) | bool isObject() const override { return type_ == Type::Object; }
method FieldSharedPtr (line 54) | static FieldSharedPtr createValue(T value) {
method append (line 58) | void append(FieldSharedPtr field_ptr) {
method insert (line 62) | void insert(const std::string& key, FieldSharedPtr field_ptr) {
method asString (line 82) | std::string asString() const override { return stringValue(); }
method asBoolean (line 83) | bool asBoolean() const override { return booleanValue(); }
method asDouble (line 84) | double asDouble() const override { return doubleValue(); }
method asInteger (line 85) | int64_t asInteger() const override { return integerValue(); }
type Type (line 94) | enum class Type {
type Value (line 124) | struct Value {
method Field (line 133) | explicit Field(Type type) : type_(type) {}
method Field (line 134) | explicit Field(const std::string& value) : type_(Type::String) { v...
method Field (line 135) | explicit Field(int64_t value) : type_(Type::Integer) { value_.inte...
method Field (line 136) | explicit Field(double value) : type_(Type::Double) { value_.double...
method Field (line 137) | explicit Field(bool value) : type_(Type::Boolean) { value_.boolean...
method isType (line 139) | bool isType(Type type) const { return type == type_; }
method checkType (line 140) | void checkType(Type type) const {
method stringValue (line 149) | std::string stringValue() const {
method arrayValue (line 153) | std::vector<FieldSharedPtr> arrayValue() const {
method booleanValue (line 157) | bool booleanValue() const {
method doubleValue (line 161) | double doubleValue() const {
method integerValue (line 165) | int64_t integerValue() const {
class LineCountingStringStream (line 183) | class LineCountingStringStream : public rapidjson::StringStream {
method LineCountingStringStream (line 186) | LineCountingStringStream(const Ch* src) : rapidjson::StringStream(...
method Ch (line 187) | Ch Take() {
method getLineNumber (line 194) | uint64_t getLineNumber() const { return line_number_; }
class ObjectHandler (line 203) | class ObjectHandler : public rapidjson::BaseReaderHandler<rapidjson:...
method ObjectHandler (line 205) | ObjectHandler(LineCountingStringStream& stream) : state_(State::Ex...
method ObjectSharedPtr (line 222) | ObjectSharedPtr getRoot() { return root_; }
type State (line 227) | enum class State {
function ObjectSharedPtr (line 393) | ObjectSharedPtr Field::getObject(const std::string& name, bool allow...
function ObjectSharedPtr (line 685) | ObjectSharedPtr Factory::loadFromString(const std::string& json) {
FILE: source/common/json/json_loader.h
function namespace (line 8) | namespace Envoy {
FILE: source/common/local_info/local_info_impl.h
function namespace (line 10) | namespace Envoy {
FILE: source/common/local_reply/local_reply.cc
type Envoy (line 14) | namespace Envoy {
type LocalReply (line 15) | namespace LocalReply {
class BodyFormatter (line 17) | class BodyFormatter {
method BodyFormatter (line 19) | BodyFormatter()
method BodyFormatter (line 23) | BodyFormatter(const envoy::config::core::v3::SubstitutionFormatStr...
method format (line 33) | void format(const Http::RequestHeaderMap& request_headers,
class ResponseMapper (line 51) | class ResponseMapper {
method ResponseMapper (line 53) | ResponseMapper(
method matchAndRewrite (line 74) | bool matchAndRewrite(const Http::RequestHeaderMap& request_headers,
class LocalReplyImpl (line 112) | class LocalReplyImpl : public LocalReply {
method LocalReplyImpl (line 114) | LocalReplyImpl() : body_formatter_(std::make_unique<BodyFormatter>...
method LocalReplyImpl (line 116) | LocalReplyImpl(
method rewrite (line 128) | void rewrite(const Http::RequestHeaderMap* request_headers,
function LocalReplyPtr (line 164) | LocalReplyPtr Factory::createDefault() { return std::make_unique<Loc...
function LocalReplyPtr (line 166) | LocalReplyPtr Factory::create(
FILE: source/common/local_reply/local_reply.h
function namespace (line 10) | namespace Envoy {
FILE: source/common/memory/heap_shrinker.cc
type Envoy (line 8) | namespace Envoy {
type Memory (line 9) | namespace Memory {
FILE: source/common/memory/heap_shrinker.h
function namespace (line 8) | namespace Envoy {
FILE: source/common/memory/stats.cc
type Envoy (line 11) | namespace Envoy {
type Memory (line 12) | namespace Memory {
type Memory (line 57) | namespace Memory {
type Memory (line 109) | namespace Memory {
type Envoy (line 56) | namespace Envoy {
type Memory (line 12) | namespace Memory {
type Memory (line 57) | namespace Memory {
type Memory (line 109) | namespace Memory {
type Envoy (line 108) | namespace Envoy {
type Memory (line 12) | namespace Memory {
type Memory (line 57) | namespace Memory {
type Memory (line 109) | namespace Memory {
FILE: source/common/memory/stats.h
function namespace (line 5) | namespace Envoy {
FILE: source/common/memory/utils.cc
type Envoy (line 12) | namespace Envoy {
type Memory (line 13) | namespace Memory {
FILE: source/common/memory/utils.h
function namespace (line 3) | namespace Envoy {
FILE: source/common/network/addr_family_aware_socket_option_impl.cc
type Envoy (line 12) | namespace Envoy {
type Network (line 13) | namespace Network {
function SocketOptionImplOptRef (line 17) | SocketOptionImplOptRef getOptionForSocket(const Socket& socket, Sock...
FILE: source/common/network/addr_family_aware_socket_option_impl.h
function namespace (line 12) | namespace Envoy {
FILE: source/common/network/address_impl.cc
type Envoy (line 15) | namespace Envoy {
type Network (line 16) | namespace Network {
type Address (line 17) | namespace Address {
function validateIpv4Supported (line 23) | void validateIpv4Supported(const std::string& address) {
function validateIpv6Supported (line 33) | void validateIpv6Supported(const std::string& address) {
function friendlyNameFromAbstractPath (line 42) | std::string friendlyNameFromAbstractPath(absl::string_view path) {
function SocketInterface (line 48) | const SocketInterface* sockInterfaceOrDefault(const SocketInterfac...
function addressFromSockAddr (line 54) | Address::InstanceConstSharedPtr addressFromSockAddr(const sockaddr...
type sockaddr_un (line 241) | struct sockaddr_un
type sockaddr_un (line 244) | struct sockaddr_un
FILE: source/common/network/address_impl.h
function namespace (line 17) | namespace Address {
function Ip (line 87) | const Ip* ip() const override { return &ip_; }
function Pipe (line 88) | const Pipe* pipe() const override { return nullptr; }
function EnvoyInternalAddress (line 89) | const EnvoyInternalAddress* envoyInternalAddress() const override { retu...
function sockaddr (line 90) | const sockaddr* sockAddr() const override {
type Ipv4Helper (line 104) | struct Ipv4Helper
type IpHelper (line 110) | struct IpHelper
function std (line 111) | const std::string& addressAsString() const override { return friendly_ad...
function Ipv4 (line 118) | const Ipv4* ipv4() const override { return &ipv4_; }
function Ipv6 (line 119) | const Ipv6* ipv6() const override { return nullptr; }
function IpVersion (line 121) | IpVersion version() const override { return IpVersion::v4; }
function v6only_ (line 182) | bool v6only_{true};
type IpHelper (line 185) | struct IpHelper
function std (line 186) | const std::string& addressAsString() const override { return friendly_ad...
function Ipv4 (line 193) | const Ipv4* ipv4() const override { return nullptr; }
function Ipv6 (line 194) | const Ipv6* ipv6() const override { return &ipv6_; }
function Ip (line 224) | const Ip* ip() const override { return nullptr; }
function Pipe (line 225) | const Pipe* pipe() const override { return &pipe_; }
function EnvoyInternalAddress (line 226) | const EnvoyInternalAddress* envoyInternalAddress() const override { retu...
function sockaddr (line 227) | const sockaddr* sockAddr() const override {
type sockaddr_un (line 232) | struct sockaddr_un
type PipeHelper (line 238) | struct PipeHelper
function abstract_namespace_ (line 245) | bool abstract_namespace_{false};
function Ip (line 263) | const Ip* ip() const override { return nullptr; }
function Pipe (line 264) | const Pipe* pipe() const override { return nullptr; }
function EnvoyInternalAddress (line 265) | const EnvoyInternalAddress* envoyInternalAddress() const override { retu...
function sockaddr (line 267) | const sockaddr* sockAddr() const override { return nullptr; }
type EnvoyInternalAddressImpl (line 271) | struct EnvoyInternalAddressImpl
FILE: source/common/network/apple_dns_impl.cc
type Envoy (line 20) | namespace Envoy {
type Network (line 21) | namespace Network {
function ActiveDnsQuery (line 79) | ActiveDnsQuery* AppleDnsResolverImpl::resolve(const std::string& dns...
type sockaddr (line 187) | struct sockaddr
function DNSServiceErrorType (line 258) | DNSServiceErrorType
function DnsResponse (line 301) | DnsResponse
FILE: source/common/network/apple_dns_impl.h
function namespace (line 19) | namespace Envoy {
FILE: source/common/network/application_protocol.cc
type Envoy (line 5) | namespace Envoy {
type Network (line 6) | namespace Network {
FILE: source/common/network/application_protocol.h
function namespace (line 5) | namespace Envoy {
FILE: source/common/network/base_listener_impl.cc
type Envoy (line 15) | namespace Envoy {
type Network (line 16) | namespace Network {
FILE: source/common/network/base_listener_impl.h
function namespace (line 8) | namespace Envoy {
FILE: source/common/network/cidr_range.cc
type Envoy (line 18) | namespace Envoy {
type Network (line 19) | namespace Network {
type Address (line 20) | namespace Address {
function Ip (line 58) | const Ip* CidrRange::ip() const {
function CidrRange (line 104) | CidrRange CidrRange::create(InstanceConstSharedPtr address, int le...
function CidrRange (line 110) | CidrRange CidrRange::create(const std::string& address, int length) {
function CidrRange (line 114) | CidrRange CidrRange::create(const envoy::config::core::v3::CidrRan...
function CidrRange (line 119) | CidrRange CidrRange::create(const std::string& range) {
function InstanceConstSharedPtr (line 137) | InstanceConstSharedPtr CidrRange::truncateIpAddressAndLength(Insta...
FILE: source/common/network/cidr_range.h
function namespace (line 11) | namespace Envoy {
FILE: source/common/network/connection_balancer_impl.cc
type Envoy (line 3) | namespace Envoy {
type Network (line 4) | namespace Network {
function BalancedConnectionHandler (line 19) | BalancedConnectionHandler&
FILE: source/common/network/connection_balancer_impl.h
function namespace (line 7) | namespace Envoy {
FILE: source/common/network/connection_impl.cc
type Envoy (line 22) | namespace Envoy {
type Network (line 23) | namespace Network {
type ucred (line 590) | struct ucred
FILE: source/common/network/connection_impl.h
function namespace (line 18) | namespace Envoy {
FILE: source/common/network/connection_impl_base.cc
type Envoy (line 3) | namespace Envoy {
type Network (line 4) | namespace Network {
FILE: source/common/network/connection_impl_base.h
function namespace (line 8) | namespace Envoy {
FILE: source/common/network/dns_impl.cc
type Envoy (line 19) | namespace Envoy {
type Network (line 20) | namespace Network {
function ActiveDnsQuery (line 231) | ActiveDnsQuery* DnsResolverImpl::resolve(const std::string& dns_name,
type ares_addrinfo_hints (line 274) | struct ares_addrinfo_hints
FILE: source/common/network/dns_impl.h
function namespace (line 18) | namespace Envoy {
FILE: source/common/network/filter_impl.h
function namespace (line 5) | namespace Envoy {
FILE: source/common/network/filter_manager_impl.cc
type Envoy (line 9) | namespace Envoy {
type Network (line 10) | namespace Network {
function FilterStatus (line 79) | FilterStatus FilterManagerImpl::onWrite() { return onWrite(nullptr, ...
function FilterStatus (line 81) | FilterStatus FilterManagerImpl::onWrite(ActiveWriteFilter* filter,
FILE: source/common/network/filter_manager_impl.h
function namespace (line 11) | namespace Envoy {
FILE: source/common/network/filter_matcher.cc
type Envoy (line 9) | namespace Envoy {
type Network (line 10) | namespace Network {
function ListenerFilterMatcherPtr (line 12) | ListenerFilterMatcherPtr ListenerFilterMatcherBuilder::buildListener...
FILE: source/common/network/filter_matcher.h
function namespace (line 9) | namespace Envoy {
FILE: source/common/network/hash_policy.cc
type Envoy (line 8) | namespace Envoy {
type Network (line 9) | namespace Network {
class SourceIpHashMethod (line 11) | class SourceIpHashMethod : public HashPolicyImpl::HashMethod {
method evaluate (line 13) | absl::optional<uint64_t> evaluate(const Network::Address::Instance...
FILE: source/common/network/hash_policy.h
function namespace (line 8) | namespace Envoy {
FILE: source/common/network/io_socket_error_impl.cc
type Envoy (line 6) | namespace Envoy {
type Network (line 7) | namespace Network {
function IoSocketError (line 37) | IoSocketError* IoSocketError::getIoSocketEagainInstance() {
function IoSocketError (line 49) | inline IoSocketError* getIoSocketInvalidAddressInstance() {
FILE: source/common/network/io_socket_error_impl.h
function namespace (line 7) | namespace Envoy {
FILE: source/common/network/io_socket_handle_impl.cc
type Envoy (line 16) | namespace Envoy {
function socklen_t (line 24) | constexpr socklen_t udsAddressLength() {
function messageTypeContainsIP (line 34) | constexpr int messageTypeContainsIP() {
function in_addr (line 42) | in_addr addressFromMessage(const cmsghdr& cmsg) {
type Network (line 53) | namespace Network {
type in_addr (line 198) | struct in_addr
function getAddressFromSockAddrOrDie (line 213) | Address::InstanceConstSharedPtr getAddressFromSockAddrOrDie(const so...
function maybeGetDstAddressFromHeader (line 230) | Address::InstanceConstSharedPtr maybeGetDstAddressFromHeader(const c...
function maybeGetPacketsDroppedFromHeader (line 256) | absl::optional<uint32_t> maybeGetPacketsDroppedFromHeader([[maybe_un...
type cmsghdr (line 309) | struct cmsghdr
type iovec (line 346) | struct iovec
type iovec (line 347) | struct iovec
type cmsghdr (line 404) | struct cmsghdr
type cmsghdr (line 419) | struct cmsghdr
function IoHandlePtr (line 453) | IoHandlePtr IoSocketHandleImpl::accept(struct sockaddr* addr, sockle...
type tcp_info (line 533) | struct tcp_info
FILE: source/common/network/io_socket_handle_impl.h
function namespace (line 12) | namespace Envoy {
FILE: source/common/network/lc_trie.h
function namespace (line 21) | namespace Envoy {
function IpType (line 205) | IpType extractBits(uint32_t p, uint32_t n, IpType input) {
function IpType (line 224) | IpType removeBits(uint32_t n, IpType input) {
function compare (line 256) | int compare(const IpPrefix& other) const {
function isPrefix (line 279) | bool isPrefix(const IpPrefix& other) {
function contains (line 287) | bool contains(const IpType& address) const {
function IpType (line 295) | IpType ip_{0};
FILE: source/common/network/listen_socket_impl.cc
type Envoy (line 18) | namespace Envoy {
type Network (line 19) | namespace Network {
FILE: source/common/network/listen_socket_impl.h
function namespace (line 16) | namespace Envoy {
FILE: source/common/network/proxy_protocol_filter_state.cc
type Envoy (line 5) | namespace Envoy {
type Network (line 6) | namespace Network {
FILE: source/common/network/proxy_protocol_filter_state.h
function namespace (line 6) | namespace Envoy {
FILE: source/common/network/raw_buffer_socket.cc
type Envoy (line 8) | namespace Envoy {
type Network (line 9) | namespace Network {
function IoResult (line 16) | IoResult RawBufferSocket::doRead(Buffer::Instance& buffer) {
function IoResult (line 50) | IoResult RawBufferSocket::doWrite(Buffer::Instance& buffer, bool end...
function TransportSocketPtr (line 90) | TransportSocketPtr
FILE: source/common/network/raw_buffer_socket.h
function namespace (line 9) | namespace Envoy {
FILE: source/common/network/resolver_impl.cc
type Envoy (line 13) | namespace Envoy {
type Network (line 14) | namespace Network {
type Address (line 15) | namespace Address {
class IpResolver (line 20) | class IpResolver : public Resolver {
method InstanceConstSharedPtr (line 23) | InstanceConstSharedPtr
method name (line 38) | std::string name() const override { return Config::AddressResolv...
function InstanceConstSharedPtr (line 46) | InstanceConstSharedPtr resolveProtoAddress(const envoy::config::co...
function InstanceConstSharedPtr (line 66) | InstanceConstSharedPtr
FILE: source/common/network/resolver_impl.h
function namespace (line 10) | namespace Envoy {
FILE: source/common/network/socket_impl.cc
type Envoy (line 9) | namespace Envoy {
type Network (line 10) | namespace Network {
FILE: source/common/network/socket_impl.h
function namespace (line 7) | namespace Envoy {
FILE: source/common/network/socket_interface.h
function namespace (line 12) | namespace Envoy {
FILE: source/common/network/socket_interface_impl.cc
type Envoy (line 11) | namespace Envoy {
type Network (line 12) | namespace Network {
function IoHandlePtr (line 14) | IoHandlePtr SocketInterfaceImpl::makeSocket(int socket_fd, bool sock...
function IoHandlePtr (line 19) | IoHandlePtr SocketInterfaceImpl::socket(Socket::Type socket_type, Ad...
function IoHandlePtr (line 63) | IoHandlePtr SocketInterfaceImpl::socket(Socket::Type socket_type,
function IoHandlePtr (line 82) | IoHandlePtr SocketInterfaceImpl::socket(os_fd_t fd) {
FILE: source/common/network/socket_interface_impl.h
function namespace (line 7) | namespace Envoy {
FILE: source/common/network/socket_option_factory.cc
type Envoy (line 9) | namespace Envoy {
type Network (line 10) | namespace Network {
FILE: source/common/network/socket_option_factory.h
function namespace (line 12) | namespace Envoy {
FILE: source/common/network/socket_option_impl.cc
type Envoy (line 11) | namespace Envoy {
type Network (line 12) | namespace Network {
FILE: source/common/network/socket_option_impl.h
function namespace (line 11) | namespace Envoy {
FILE: source/common/network/tcp_listener_impl.cc
type Envoy (line 17) | namespace Envoy {
type Network (line 18) | namespace Network {
FILE: source/common/network/tcp_listener_impl.h
function namespace (line 8) | namespace Envoy {
FILE: source/common/network/transport_socket_options_impl.cc
type Envoy (line 16) | namespace Envoy {
type Network (line 17) | namespace Network {
function commonHashKey (line 19) | void commonHashKey(const TransportSocketOptions& options, std::vecto...
function TransportSocketOptionsSharedPtr (line 53) | TransportSocketOptionsSharedPtr
FILE: source/common/network/transport_socket_options_impl.h
function namespace (line 8) | namespace Network {
function absl (line 55) | const absl::optional<std::string>& serverNameOverride() const override {
function std (line 61) | const std::vector<std::string>& applicationProtocolListOverride() const ...
function override (line 67) | const override {
function class (line 80) | class TransportSocketOptionsUtility {
FILE: source/common/network/udp_default_writer_config.cc
type Envoy (line 10) | namespace Envoy {
type Network (line 11) | namespace Network {
function UdpPacketWriterPtr (line 13) | UdpPacketWriterPtr UdpDefaultWriterFactory::createUdpPacketWriter(Ne...
function UdpPacketWriterFactoryPtr (line 22) | UdpPacketWriterFactoryPtr
FILE: source/common/network/udp_default_writer_config.h
function namespace (line 7) | namespace Envoy {
FILE: source/common/network/udp_listener_impl.cc
type Envoy (line 28) | namespace Envoy {
type Network (line 29) | namespace Network {
FILE: source/common/network/udp_listener_impl.h
function namespace (line 14) | namespace Envoy {
FILE: source/common/network/udp_packet_writer_handler_impl.cc
type Envoy (line 6) | namespace Envoy {
type Network (line 7) | namespace Network {
FILE: source/common/network/udp_packet_writer_handler_impl.h
function namespace (line 9) | namespace Envoy {
FILE: source/common/network/upstream_server_name.cc
type Envoy (line 5) | namespace Envoy {
type Network (line 6) | namespace Network {
FILE: source/common/network/upstream_server_name.h
function namespace (line 7) | namespace Envoy {
FILE: source/common/network/upstream_subject_alt_names.cc
type Envoy (line 5) | namespace Envoy {
type Network (line 6) | namespace Network {
FILE: source/common/network/upstream_subject_alt_names.h
function namespace (line 5) | namespace Envoy {
FILE: source/common/network/utility.cc
type Envoy (line 30) | namespace Envoy {
type Network (line 31) | namespace Network {
function hostFromUrl (line 59) | std::string hostFromUrl(const std::string& url, absl::string_view sc...
function portFromUrl (line 74) | uint32_t portFromUrl(const std::string& url, absl::string_view scheme,
function receiveMessage (line 100) | Api::IoCallUint64Result receiveMessage(uint64_t max_packet_size, Buf...
type ifaddrs (line 224) | struct ifaddrs
type ifaddrs (line 225) | struct ifaddrs
type sockaddr_storage (line 238) | struct sockaddr_storage
type sockaddr_storage (line 239) | struct sockaddr_storage
function passPayloadToProcessor (line 549) | void passPayloadToProcessor(uint64_t bytes_read, Buffer::InstancePtr...
FILE: source/common/network/utility.h
function namespace (line 14) | namespace Envoy {
FILE: source/common/profiler/profiler.cc
type Envoy (line 10) | namespace Envoy {
type Profiler (line 11) | namespace Profiler {
type Profiler (line 47) | namespace Profiler {
type Envoy (line 46) | namespace Envoy {
type Profiler (line 11) | namespace Profiler {
type Profiler (line 47) | namespace Profiler {
FILE: source/common/profiler/profiler.h
function namespace (line 12) | namespace Envoy {
FILE: source/common/protobuf/message_validator_impl.cc
type Envoy (line 11) | namespace Envoy {
type ProtobufMessage (line 12) | namespace ProtobufMessage {
function onDeprecatedFieldCommon (line 19) | void onDeprecatedFieldCommon(absl::string_view description, bool sof...
function ValidationVisitor (line 66) | ValidationVisitor& getNullValidationVisitor() {
function ValidationVisitor (line 70) | ValidationVisitor& getStrictValidationVisitor() {
FILE: source/common/protobuf/message_validator_impl.h
function namespace (line 11) | namespace Envoy {
FILE: source/common/protobuf/protobuf.h
function namespace (line 33) | namespace Envoy {
FILE: source/common/protobuf/type_util.cc
type Envoy (line 3) | namespace Envoy {
FILE: source/common/protobuf/type_util.h
function namespace (line 8) | namespace Envoy {
FILE: source/common/protobuf/utility.cc
type Envoy (line 26) | namespace Envoy {
function filenameFromPath (line 29) | absl::string_view filenameFromPath(absl::string_view full_path) {
function blockFormat (line 37) | void blockFormat(YAML::Node node) {
function parseYamlNode (line 52) | ProtobufWkt::Value parseYamlNode(const YAML::Node& node) {
function jsonConvertInternal (line 107) | void jsonConvertInternal(const Protobuf::Message& source,
type MessageVersion (line 121) | enum class MessageVersion {
class ApiBoostRetryException (line 133) | class ApiBoostRetryException : public EnvoyException {
method ApiBoostRetryException (line 135) | ApiBoostRetryException(const std::string& message) : EnvoyException(...
function tryWithApiBoosting (line 145) | void tryWithApiBoosting(MessageXformFn f, Protobuf::Message& message) {
function deprecatedFieldHelper (line 180) | void deprecatedFieldHelper(Runtime::Loader* runtime, bool proto_annota...
type ProtobufPercentHelper (line 221) | namespace ProtobufPercentHelper {
function checkAndReturnDefault (line 223) | uint64_t checkAndReturnDefault(uint64_t default_value, uint64_t max_...
function convertPercent (line 228) | uint64_t convertPercent(double percent, uint64_t max_value) {
function evaluateFractionalPercent (line 234) | bool evaluateFractionalPercent(envoy::type::v3::FractionalPercent pe...
function fractionalPercentDenominatorToInt (line 239) | uint64_t fractionalPercentDenominatorToInt(
function checkForDeprecatedNonRepeatedEnumValue (line 463) | void checkForDeprecatedNonRepeatedEnumValue(
class UnexpectedFieldProtoVisitor (line 492) | class UnexpectedFieldProtoVisitor : public ProtobufMessage::ConstProto...
method UnexpectedFieldProtoVisitor (line 494) | UnexpectedFieldProtoVisitor(ProtobufMessage::ValidationVisitor& vali...
method onMessage (line 544) | void onMessage(const Protobuf::Message& message, const void*) overri...
function redactOpaque (line 716) | bool redactOpaque(Protobuf::Message* message, bool ancestor_is_sensitive,
function redactAny (line 759) | bool redactAny(Protobuf::Message* message, bool ancestor_is_sensitive) {
function redactTypedStruct (line 775) | bool redactTypedStruct(Protobuf::Message* message, bool ancestor_is_se...
function redact (line 793) | void redact(Protobuf::Message* message, bool ancestor_is_sensitive) {
function validateDuration (line 965) | void validateDuration(const ProtobufWkt::Duration& duration) {
FILE: source/common/protobuf/utility.h
function namespace (line 72) | namespace Envoy {
function namespace (line 132) | namespace Envoy {
function class (line 545) | class HashedValue {
function class (line 564) | class DurationUtil {
function class (line 591) | class TimestampUtil {
function namespace (line 604) | namespace std {
FILE: source/common/protobuf/visitor.cc
type Envoy (line 3) | namespace Envoy {
type ProtobufMessage (line 4) | namespace ProtobufMessage {
function traverseMutableMessage (line 6) | void traverseMutableMessage(ProtoVisitor& visitor, Protobuf::Message...
function traverseMessage (line 27) | void traverseMessage(ConstProtoVisitor& visitor, const Protobuf::Mes...
FILE: source/common/protobuf/visitor.h
function namespace (line 5) | namespace Envoy {
FILE: source/common/protobuf/well_known.h
function namespace (line 5) | namespace Envoy {
FILE: source/common/router/config_impl.cc
type Envoy (line 46) | namespace Envoy {
type Router (line 47) | namespace Router {
function HedgePolicyImpl (line 781) | HedgePolicyImpl RouteEntryImplBase::buildHedgePolicy(
function RetryPolicyImpl (line 798) | RetryPolicyImpl RouteEntryImplBase::buildRetryPolicy(
function InternalRedirectPolicyImpl (line 816) | InternalRedirectPolicyImpl RouteEntryImplBase::buildInternalRedirect...
function DecoratorConstPtr (line 838) | DecoratorConstPtr RouteEntryImplBase::parseDecorator(const envoy::co...
function RouteTracingConstPtr (line 846) | RouteTracingConstPtr
function DirectResponseEntry (line 855) | const DirectResponseEntry* RouteEntryImplBase::directResponseEntry()...
function RouteEntry (line 865) | const RouteEntry* RouteEntryImplBase::routeEntry() const {
function RouteConstSharedPtr (line 875) | RouteConstSharedPtr RouteEntryImplBase::clusterEntry(const Http::Hea...
function RouteSpecificFilterConfig (line 926) | const RouteSpecificFilterConfig*
function RouteSpecificFilterConfig (line 961) | const RouteSpecificFilterConfig*
function RouteConstSharedPtr (line 979) | RouteConstSharedPtr PrefixRouteEntryImpl::matches(const Http::Reques...
function RouteConstSharedPtr (line 1001) | RouteConstSharedPtr PathRouteEntryImpl::matches(const Http::RequestH...
function RouteConstSharedPtr (line 1040) | RouteConstSharedPtr RegexRouteEntryImpl::matches(const Http::Request...
function RouteConstSharedPtr (line 1064) | RouteConstSharedPtr ConnectRouteEntryImpl::matches(const Http::Reque...
function Config (line 1194) | const Config& VirtualHostImpl::routeConfig() const { return global_r...
function RouteSpecificFilterConfig (line 1196) | const RouteSpecificFilterConfig* VirtualHostImpl::perFilterConfig(co...
function VirtualHostImpl (line 1200) | const VirtualHostImpl* RouteMatcher::findWildcardVirtualHost(
function RouteConstSharedPtr (line 1260) | RouteConstSharedPtr VirtualHostImpl::getRouteFromEntries(const Route...
function VirtualHostImpl (line 1312) | const VirtualHostImpl* RouteMatcher::findVirtualHost(const Http::Req...
function RouteConstSharedPtr (line 1351) | RouteConstSharedPtr RouteMatcher::route(const RouteCallback& cb,
function VirtualCluster (line 1368) | const VirtualCluster*
function RouteConstSharedPtr (line 1404) | RouteConstSharedPtr ConfigImpl::route(const RouteCallback& cb,
function RouteSpecificFilterConfigConstSharedPtr (line 1413) | RouteSpecificFilterConfigConstSharedPtr
function RouteSpecificFilterConfig (line 1461) | const RouteSpecificFilterConfig* PerFilterConfigs::get(const std::st...
FILE: source/common/router/config_impl.h
function namespace (line 37) | namespace Envoy {
FILE: source/common/router/config_utility.cc
type Envoy (line 13) | namespace Envoy {
type Router (line 14) | namespace Router {
function maybeCreateStringMatcher (line 17) | absl::optional<Matchers::StringMatcherImpl>
FILE: source/common/router/config_utility.h
function namespace (line 21) | namespace Envoy {
FILE: source/common/router/debug_config.cc
type Envoy (line 5) | namespace Envoy {
type Router (line 6) | namespace Router {
FILE: source/common/router/debug_config.h
function namespace (line 10) | namespace Envoy {
FILE: source/common/router/header_formatter.cc
type Envoy (line 21) | namespace Envoy {
type Router (line 22) | namespace Router {
function formatUpstreamMetadataParseException (line 26) | std::string formatUpstreamMetadataParseException(absl::string_view p...
function formatPerRequestStateParseException (line 39) | std::string formatPerRequestStateParseException(absl::string_view pa...
function parseMetadataField (line 50) | std::function<std::string(const Envoy::StreamInfo::StreamInfo&)>
function parsePerRequestStateField (line 139) | std::function<std::string(const Envoy::StreamInfo::StreamInfo&)>
function parseRequestHeader (line 176) | std::function<std::string(const Envoy::StreamInfo::StreamInfo&)>
function sslConnectionInfoStringHeaderExtractor (line 199) | StreamInfoHeaderFormatter::FieldExtractor sslConnectionInfoStringHea...
function sslConnectionInfoStringTimeHeaderExtractor (line 211) | StreamInfoHeaderFormatter::FieldExtractor sslConnectionInfoStringTim...
FILE: source/common/router/header_formatter.h
function namespace (line 12) | namespace Envoy {
FILE: source/common/router/header_parser.cc
type Envoy (line 16) | namespace Envoy {
type Router (line 17) | namespace Router {
type ParserState (line 21) | enum class ParserState {
function unescape (line 32) | std::string unescape(absl::string_view sv) { return absl::StrReplace...
function HeaderFormatterPtr (line 39) | HeaderFormatterPtr parseInternal(const envoy::config::core::v3::Head...
function HeaderParserPtr (line 222) | HeaderParserPtr HeaderParser::configure(
function HeaderParserPtr (line 237) | HeaderParserPtr HeaderParser::configure(
function HeaderParserPtr (line 252) | HeaderParserPtr HeaderParser::configure(
FILE: source/common/router/header_parser.h
function namespace (line 13) | namespace Envoy {
FILE: source/common/router/metadatamatchcriteria_impl.cc
type Envoy (line 3) | namespace Envoy {
type Router (line 4) | namespace Router {
function MetadataMatchCriteriaConstPtr (line 42) | MetadataMatchCriteriaConstPtr
FILE: source/common/router/metadatamatchcriteria_impl.h
function namespace (line 5) | namespace Envoy {
FILE: source/common/router/rds_impl.cc
type Envoy (line 23) | namespace Envoy {
type Router (line 24) | namespace Router {
function RouteConfigProviderSharedPtr (line 26) | RouteConfigProviderSharedPtr RouteConfigProviderUtil::create(
function RouteConfigProviderPtr (line 364) | RouteConfigProviderPtr RouteConfigProviderManagerImpl::createStaticR...
FILE: source/common/router/rds_impl.h
function namespace (line 40) | namespace Envoy {
FILE: source/common/router/reset_header_parser.cc
type Envoy (line 9) | namespace Envoy {
type Router (line 10) | namespace Router {
FILE: source/common/router/reset_header_parser.h
function namespace (line 16) | namespace Envoy {
FILE: source/common/router/retry_state_impl.cc
type Envoy (line 18) | namespace Envoy {
type Router (line 19) | namespace Router {
function RetryStatePtr (line 36) | RetryStatePtr RetryStateImpl::create(const RetryPolicy& route_policy,
function RetryStatus (line 252) | RetryStatus RetryStateImpl::shouldRetry(bool would_retry, DoRetryCal...
function RetryStatus (line 304) | RetryStatus RetryStateImpl::shouldRetryHeaders(const Http::ResponseH...
function RetryStatus (line 321) | RetryStatus RetryStateImpl::shouldRetryReset(Http::StreamResetReason...
function RetryStatus (line 326) | RetryStatus RetryStateImpl::shouldHedgeRetryPerTryTimeout(DoRetryCal...
FILE: source/common/router/retry_state_impl.h
function namespace (line 20) | namespace Envoy {
FILE: source/common/router/route_config_update_receiver_impl.cc
type Envoy (line 13) | namespace Envoy {
type Router (line 14) | namespace Router {
FILE: source/common/router/route_config_update_receiver_impl.h
function namespace (line 14) | namespace Envoy {
FILE: source/common/router/router.cc
type Envoy (line 45) | namespace Envoy {
type Router (line 46) | namespace Router {
function getLength (line 50) | uint32_t getLength(const Buffer::Instance* instance) { return instan...
function schemeIsHttp (line 52) | bool schemeIsHttp(const Http::RequestHeaderMap& downstream_headers,
function RetryStatePtr (line 1578) | RetryStatePtr ProdFilter::createRetryState(const RetryPolicy& policy,
FILE: source/common/router/router.h
function namespace (line 37) | namespace Envoy {
function Router (line 337) | const Router::MetadataMatchCriteria* metadataMatchCriteria() override {
function Network (line 362) | const Network::Connection* downstreamConnection() const override {
function Http (line 365) | const Http::RequestHeaderMap* downstreamHeaders() const override { retur...
function shouldSelectAnotherHost (line 367) | bool shouldSelectAnotherHost(const Upstream::Host& host) override {
function Upstream (line 378) | const Upstream::HealthyAndDegradedLoad& determinePriorityLoad(
function VirtualCluster (line 455) | const VirtualCluster* requestVcluster() const override { return request_...
function RouteEntry (line 456) | const RouteEntry* routeEntry() const override { return route_entry_; }
function std (line 457) | const std::list<UpstreamRequestPtr>& upstreamRequests() const override {
function RouteEntry (line 526) | const RouteEntry* route_entry_{}
function grpc_request_ (line 538) | bool grpc_request_{}
function retry_shadow_buffer_limit_ (line 542) | uint32_t retry_shadow_buffer_limit_{std::numeric_limits<uint32_t>::max()};
function class (line 562) | class ProdFilter : public Filter {
FILE: source/common/router/router_ratelimit.cc
type Envoy (line 16) | namespace Envoy {
type Router (line 17) | namespace Router {
FILE: source/common/router/router_ratelimit.h
function namespace (line 18) | namespace Envoy {
FILE: source/common/router/scoped_config_impl.cc
type Envoy (line 6) | namespace Envoy {
type Router (line 7) | namespace Router {
function ScopeKeyPtr (line 106) | ScopeKeyPtr ScopeKeyBuilderImpl::computeScopeKey(const Http::HeaderM...
function ScopeKeyPtr (line 156) | ScopeKeyPtr ScopedConfigImpl::computeScopeKey(const Http::HeaderMap&...
FILE: source/common/router/scoped_config_impl.h
function namespace (line 20) | namespace Envoy {
FILE: source/common/router/scoped_rds.cc
type Envoy (line 34) | namespace Envoy {
type Router (line 35) | namespace Router {
type ScopedRoutesConfigProviderUtil (line 36) | namespace ScopedRoutesConfigProviderUtil {
function ConfigProviderPtr (line 37) | ConfigProviderPtr create(
function ConfigProviderPtr (line 538) | ConfigProviderPtr ScopedRoutesConfigProviderManager::createXdsConfig...
function ConfigProviderPtr (line 565) | ConfigProviderPtr ScopedRoutesConfigProviderManager::createStaticCon...
FILE: source/common/router/scoped_rds.h
function namespace (line 22) | namespace Envoy {
type RdsRouteConfigProviderHelper (line 136) | struct RdsRouteConfigProviderHelper {
function ConfigConstSharedPtr (line 154) | ConfigConstSharedPtr routeConfig() { return route_provider_->config(); }
function start (line 194) | void start() override { subscription_->start({}); }
function onConfigUpdateFailed (line 213) | void onConfigUpdateFailed(Envoy::Config::ConfigUpdateFailureReason reason,
function class (line 247) | class ScopedRdsConfigProvider : public Envoy::Config::MutableConfigProvi...
function class (line 265) | class ScopedRoutesConfigProviderManager : public Envoy::Config::ConfigPr...
function class (line 309) | class ScopedRoutesConfigProviderManagerOptArg
FILE: source/common/router/shadow_writer_impl.cc
type Envoy (line 11) | namespace Envoy {
type Router (line 12) | namespace Router {
FILE: source/common/router/shadow_writer_impl.h
function namespace (line 9) | namespace Envoy {
FILE: source/common/router/string_accessor_impl.h
function namespace (line 5) | namespace Envoy {
FILE: source/common/router/tls_context_match_criteria_impl.cc
type Envoy (line 5) | namespace Envoy {
type Router (line 6) | namespace Router {
FILE: source/common/router/tls_context_match_criteria_impl.h
function namespace (line 6) | namespace Envoy {
FILE: source/common/router/upstream_request.cc
type Envoy (line 41) | namespace Envoy {
type Router (line 42) | namespace Router {
function RouteEntry (line 175) | const RouteEntry& UpstreamRequest::routeEntry() const { return *pare...
FILE: source/common/router/upstream_request.h
function namespace (line 25) | namespace Envoy {
FILE: source/common/router/vhds.cc
type Envoy (line 19) | namespace Envoy {
type Router (line 20) | namespace Router {
FILE: source/common/router/vhds.h
function namespace (line 28) | namespace Envoy {
FILE: source/common/runtime/runtime_features.cc
type Envoy (line 5) | namespace Envoy {
type Runtime (line 6) | namespace Runtime {
function isRuntimeFeature (line 8) | bool isRuntimeFeature(absl::string_view feature) {
function runtimeFeatureEnabled (line 13) | bool runtimeFeatureEnabled(absl::string_view feature) {
function getInteger (line 24) | uint64_t getInteger(absl::string_view feature, uint64_t default_valu...
FILE: source/common/runtime/runtime_features.h
function namespace (line 12) | namespace Envoy {
FILE: source/common/runtime/runtime_impl.cc
type Envoy (line 30) | namespace Envoy {
type Runtime (line 31) | namespace Runtime {
function countDeprecatedFeatureUseInternal (line 35) | void countDeprecatedFeatureUseInternal(const RuntimeStats& stats) {
function Snapshot (line 492) | const Snapshot& LoaderImpl::snapshot() {
function SnapshotConstSharedPtr (line 498) | SnapshotConstSharedPtr LoaderImpl::threadsafeSnapshot() {
function RuntimeStats (line 521) | RuntimeStats LoaderImpl::generateStats(Stats::Store& store) {
function SnapshotImplPtr (line 528) | SnapshotImplPtr LoaderImpl::createNewSnapshot() {
FILE: source/common/runtime/runtime_impl.h
function namespace (line 35) | namespace Envoy {
function class (line 124) | class OverrideLayerImpl : public Snapshot::OverrideLayer {
function class (line 140) | class AdminLayer : public OverrideLayerImpl {
type RtdsSubscription (line 191) | struct RtdsSubscription
function Snapshot (line 238) | const Snapshot& snapshot() override;
FILE: source/common/runtime/runtime_protos.h
function namespace (line 11) | namespace Envoy {
FILE: source/common/secret/sds_api.cc
type Envoy (line 12) | namespace Envoy {
type Secret (line 13) | namespace Secret {
FILE: source/common/secret/sds_api.h
type SecretData (line 39) | struct SecretData {
function registerInitTarget (line 57) | void registerInitTarget(Init::Manager& init_manager) {
function envoy (line 144) | const envoy::extensions::transport_sockets::tls::v3::TlsCertificate* sec...
FILE: source/common/secret/secret_manager_impl.cc
type Envoy (line 18) | namespace Envoy {
type Secret (line 19) | namespace Secret {
function TlsCertificateConfigProviderSharedPtr (line 74) | TlsCertificateConfigProviderSharedPtr
function CertificateValidationContextConfigProviderSharedPtr (line 80) | CertificateValidationContextConfigProviderSharedPtr
function TlsSessionTicketKeysConfigProviderSharedPtr (line 87) | TlsSessionTicketKeysConfigProviderSharedPtr
function GenericSecretConfigProviderSharedPtr (line 93) | GenericSecretConfigProviderSharedPtr
function TlsCertificateConfigProviderSharedPtr (line 99) | TlsCertificateConfigProviderSharedPtr SecretManagerImpl::createInlin...
function CertificateValidationContextConfigProviderSharedPtr (line 104) | CertificateValidationContextConfigProviderSharedPtr
function TlsSessionTicketKeysConfigProviderSharedPtr (line 112) | TlsSessionTicketKeysConfigProviderSharedPtr
function GenericSecretConfigProviderSharedPtr (line 119) | GenericSecretConfigProviderSharedPtr SecretManagerImpl::createInline...
function TlsCertificateConfigProviderSharedPtr (line 124) | TlsCertificateConfigProviderSharedPtr SecretManagerImpl::findOrCreat...
function CertificateValidationContextConfigProviderSharedPtr (line 131) | CertificateValidationContextConfigProviderSharedPtr
function TlsSessionTicketKeysConfigProviderSharedPtr (line 139) | TlsSessionTicketKeysConfigProviderSharedPtr
function GenericSecretConfigProviderSharedPtr (line 147) | GenericSecretConfigProviderSharedPtr SecretManagerImpl::findOrCreate...
FILE: source/common/secret/secret_provider_impl.cc
type Envoy (line 9) | namespace Envoy {
type Secret (line 10) | namespace Secret {
FILE: source/common/secret/secret_provider_impl.h
function envoy (line 18) | const envoy::extensions::transport_sockets::tls::v3::TlsCertificate* sec...
function envoy (line 41) | const envoy::extensions::transport_sockets::tls::v3::CertificateValidati...
FILE: source/common/shared_pool/shared_pool.h
function namespace (line 17) | namespace Envoy {
function hashed_value (line 63) | auto hashed_value = HashFunc{}
FILE: source/common/signal/fatal_error_handler.cc
type Envoy (line 10) | namespace Envoy {
type FatalErrorHandler (line 11) | namespace FatalErrorHandler {
function registerFatalErrorHandler (line 27) | void registerFatalErrorHandler(const FatalErrorHandlerInterface& han...
function removeFatalErrorHandler (line 41) | void removeFatalErrorHandler(const FatalErrorHandlerInterface& handl...
function callFatalErrorHandlers (line 63) | void callFatalErrorHandlers(std::ostream& os) {
FILE: source/common/signal/fatal_error_handler.h
function namespace (line 7) | namespace Envoy {
FILE: source/common/signal/signal_action.cc
type Envoy (line 10) | namespace Envoy {
type sigaction (line 46) | struct sigaction
FILE: source/common/signal/signal_action.h
function namespace (line 14) | namespace Envoy {
FILE: source/common/singleton/const_singleton.h
function namespace (line 3) | namespace Envoy {
FILE: source/common/singleton/manager_impl.cc
type Envoy (line 8) | namespace Envoy {
type Singleton (line 9) | namespace Singleton {
function InstanceSharedPtr (line 11) | InstanceSharedPtr ManagerImpl::get(const std::string& name, Singleto...
FILE: source/common/singleton/manager_impl.h
function namespace (line 10) | namespace Envoy {
FILE: source/common/singleton/threadsafe_singleton.h
function namespace (line 9) | namespace Envoy {
function T (line 60) | static T* getExisting() { return loader_; }
function initialize (line 62) | static void initialize(T* value) {
function clear (line 67) | static void clear() { loader_ = nullptr; }
FILE: source/common/ssl/certificate_validation_context_config_impl.cc
type Envoy (line 10) | namespace Envoy {
type Ssl (line 11) | namespace Ssl {
FILE: source/common/ssl/certificate_validation_context_config_impl.h
function namespace (line 10) | namespace Envoy {
FILE: source/common/ssl/tls_certificate_config_impl.cc
type Envoy (line 11) | namespace Envoy {
type Ssl (line 12) | namespace Ssl {
function readOcspStaple (line 15) | std::vector<uint8_t> readOcspStaple(const envoy::config::core::v3::D...
FILE: source/common/ssl/tls_certificate_config_impl.h
function namespace (line 10) | namespace Envoy {
FILE: source/common/stats/allocator_impl.cc
type Envoy (line 20) | namespace Envoy {
type Stats (line 21) | namespace Stats {
class StatsSharedImpl (line 50) | class StatsSharedImpl : public MetricImpl<BaseClass> {
method StatsSharedImpl (line 52) | StatsSharedImpl(StatName name, AllocatorImpl& alloc, StatName tag_...
method SymbolTable (line 66) | SymbolTable& symbolTable() final { return alloc_.symbolTable(); }
method used (line 67) | bool used() const override { return flags_ & Metric::Flags::Used; }
method incRefCount (line 70) | void incRefCount() override { ++ref_count_; }
method decRefCount (line 71) | bool decRefCount() override {
method use_count (line 92) | uint32_t use_count() const override { return ref_count_; }
class CounterImpl (line 118) | class CounterImpl : public StatsSharedImpl<Counter> {
method CounterImpl (line 120) | CounterImpl(StatName name, AllocatorImpl& alloc, StatName tag_extr...
method ABSL_EXCLUSIVE_LOCKS_REQUIRED (line 124) | ABSL_EXCLUSIVE_LOCKS_REQUIRED(alloc_.mutex_) override {
method add (line 130) | void add(uint64_t amount) override {
method inc (line 137) | void inc() override { add(1); }
method latch (line 138) | uint64_t latch() override { return pending_increment_.exchange(0); }
method reset (line 139) | void reset() override { value_ = 0; }
method value (line 140) | uint64_t value() const override { return value_; }
class GaugeImpl (line 147) | class GaugeImpl : public StatsSharedImpl<Gauge> {
method GaugeImpl (line 149) | GaugeImpl(StatName name, AllocatorImpl& alloc, StatName tag_extrac...
method ABSL_EXCLUSIVE_LOCKS_REQUIRED (line 168) | ABSL_EXCLUSIVE_LOCKS_REQUIRED(alloc_.mutex_) {
method add (line 174) | void add(uint64_t amount) override {
method dec (line 178) | void dec() override { sub(1); }
method inc (line 179) | void inc() override { add(1); }
method set (line 180) | void set(uint64_t value) override {
method sub (line 184) | void sub(uint64_t amount) override {
method value (line 189) | uint64_t value() const override { return child_value_ + parent_val...
method ImportMode (line 191) | ImportMode importMode() const override {
method mergeImportMode (line 200) | void mergeImportMode(ImportMode import_mode) override {
method setParentValue (line 227) | void setParentValue(uint64_t value) override { parent_value_ = val...
class TextReadoutImpl (line 234) | class TextReadoutImpl : public StatsSharedImpl<TextReadout> {
method TextReadoutImpl (line 236) | TextReadoutImpl(StatName name, AllocatorImpl& alloc, StatName tag_...
method ABSL_EXCLUSIVE_LOCKS_REQUIRED (line 240) | ABSL_EXCLUSIVE_LOCKS_REQUIRED(alloc_.mutex_) override {
method set (line 246) | void set(absl::string_view value) override {
method value (line 251) | std::string value() const override {
function CounterSharedPtr (line 261) | CounterSharedPtr AllocatorImpl::makeCounter(StatName name, StatName ...
function GaugeSharedPtr (line 275) | GaugeSharedPtr AllocatorImpl::makeGauge(StatName name, StatName tag_...
function TextReadoutSharedPtr (line 291) | TextReadoutSharedPtr AllocatorImpl::makeTextReadout(StatName name, S...
function Counter (line 314) | Counter* AllocatorImpl::makeCounterInternal(StatName name, StatName ...
FILE: source/common/stats/allocator_impl.h
function namespace (line 15) | namespace Envoy {
FILE: source/common/stats/histogram_impl.cc
type Envoy (line 10) | namespace Envoy {
type Stats (line 11) | namespace Stats {
function ConstSupportedBuckets (line 96) | const ConstSupportedBuckets& HistogramSettingsImpl::buckets(absl::st...
function ConstSupportedBuckets (line 105) | const ConstSupportedBuckets& HistogramSettingsImpl::defaultBuckets() {
FILE: source/common/stats/histogram_impl.h
function namespace (line 17) | namespace Envoy {
function class (line 124) | class NullHistogramImpl : public HistogramImplHelper {
function recordValue (line 134) | void recordValue(uint64_t) override {}
FILE: source/common/stats/isolated_store_impl.cc
type Envoy (line 12) | namespace Envoy {
type Stats (line 13) | namespace Stats {
function ScopePtr (line 39) | ScopePtr IsolatedStoreImpl::createScope(const std::string& name) {
FILE: source/common/stats/isolated_store_impl.h
function namespace (line 21) | namespace Envoy {
function class (line 121) | class IsolatedStoreImpl : public StoreImpl {
FILE: source/common/stats/metric_impl.cc
type Envoy (line 7) | namespace Envoy {
type Stats (line 8) | namespace Stats {
function StatName (line 35) | StatName MetricHelper::statName() const {
function StatName (line 44) | StatName MetricHelper::tagExtractedStatName() const {
function TagVector (line 95) | TagVector MetricHelper::tags(const SymbolTable& symbol_table) const {
FILE: source/common/stats/metric_impl.h
function namespace (line 13) | namespace Envoy {
FILE: source/common/stats/null_counter.h
function namespace (line 7) | namespace Envoy {
FILE: source/common/stats/null_gauge.h
function namespace (line 7) | namespace Envoy {
FILE: source/common/stats/null_text_readout.h
function namespace (line 7) | namespace Envoy {
FILE: source/common/stats/recent_lookups.cc
type Envoy (line 5) | namespace Envoy {
type Stats (line 6) | namespace Stats {
FILE: source/common/stats/recent_lookups.h
function namespace (line 10) | namespace Envoy {
FILE: source/common/stats/scope_prefixer.cc
type Envoy (line 8) | namespace Envoy {
type Stats (line 9) | namespace Stats {
function ScopePtr (line 19) | ScopePtr ScopePrefixer::createScopeFromStatName(StatName name) {
function ScopePtr (line 24) | ScopePtr ScopePrefixer::createScope(const std::string& name) {
function Counter (line 29) | Counter& ScopePrefixer::counterFromStatNameWithTags(const StatName& ...
function Gauge (line 36) | Gauge& ScopePrefixer::gaugeFromStatNameWithTags(const StatName& name,
function Histogram (line 44) | Histogram& ScopePrefixer::histogramFromStatNameWithTags(const StatNa...
function TextReadout (line 52) | TextReadout& ScopePrefixer::textReadoutFromStatNameWithTags(const St...
function CounterOptConstRef (line 59) | CounterOptConstRef ScopePrefixer::findCounter(StatName name) const {
function GaugeOptConstRef (line 63) | GaugeOptConstRef ScopePrefixer::findGauge(StatName name) const { ret...
function HistogramOptConstRef (line 65) | HistogramOptConstRef ScopePrefixer::findHistogram(StatName name) con...
function TextReadoutOptConstRef (line 69) | TextReadoutOptConstRef ScopePrefixer::findTextReadout(StatName name)...
FILE: source/common/stats/scope_prefixer.h
function namespace (line 5) | namespace Envoy {
FILE: source/common/stats/stat_merger.cc
type Envoy (line 5) | namespace Envoy {
type Stats (line 6) | namespace Stats {
function StatName (line 22) | StatName StatMerger::DynamicContext::makeDynamicStatName(const std::...
FILE: source/common/stats/stat_merger.h
function namespace (line 10) | namespace Envoy {
FILE: source/common/stats/stats_matcher_impl.cc
type Envoy (line 10) | namespace Envoy {
type Stats (line 11) | namespace Stats {
FILE: source/common/stats/stats_matcher_impl.h
function namespace (line 13) | namespace Envoy {
FILE: source/common/stats/store_impl.h
function namespace (line 8) | namespace Envoy {
FILE: source/common/stats/symbol_table_impl.cc
type Envoy (line 14) | namespace Envoy {
type Stats (line 15) | namespace Stats {
function SymbolVec (line 120) | SymbolVec SymbolTableImpl::Encoding::decodeSymbols(const SymbolTable...
function DynamicSpans (line 316) | DynamicSpans SymbolTableImpl::getDynamicSpans(StatName stat_name) co...
function StatNameSetPtr (line 357) | StatNameSetPtr SymbolTableImpl::makeSet(absl::string_view name) {
function Symbol (line 363) | Symbol SymbolTableImpl::toSymbol(absl::string_view sv) {
function ABSL_EXCLUSIVE_LOCKS_REQUIRED (line 390) | ABSL_EXCLUSIVE_LOCKS_REQUIRED(lock_) {
function ABSL_EXCLUSIVE_LOCKS_REQUIRED (line 396) | ABSL_EXCLUSIVE_LOCKS_REQUIRED(lock_) {
function StatName (line 514) | StatName StatNamePool::add(absl::string_view str) { return StatName(...
function StatName (line 516) | StatName StatNameDynamicPool::add(absl::string_view str) {
function StatName (line 631) | StatName StatNameSet::getBuiltin(absl::string_view token, StatName f...
FILE: source/common/stats/symbol_table_impl.h
function namespace (line 27) | namespace Envoy {
function class (line 728) | class StatNameStorageSet {
function class (line 786) | class StatNameSet {
function rememberBuiltins (line 807) | void rememberBuiltins(const std::vector<const char*>& container) {
function StatName (line 838) | StatName add(absl::string_view str) {
FILE: source/common/stats/tag_extractor_impl.cc
type Envoy (line 15) | namespace Envoy {
type Stats (line 16) | namespace Stats {
function regexStartsWithDot (line 20) | bool regexStartsWithDot(absl::string_view regex) {
function TagExtractorPtr (line 50) | TagExtractorPtr TagExtractorImpl::createTagExtractor(const std::stri...
FILE: source/common/stats/tag_extractor_impl.h
function namespace (line 11) | namespace Envoy {
FILE: source/common/stats/tag_producer_impl.cc
type Envoy (line 11) | namespace Envoy {
type Stats (line 12) | namespace Stats {
FILE: source/common/stats/tag_producer_impl.h
function namespace (line 22) | namespace Envoy {
FILE: source/common/stats/tag_utility.cc
type Envoy (line 5) | namespace Envoy {
type Stats (line 6) | namespace Stats {
type TagUtility (line 7) | namespace TagUtility {
FILE: source/common/stats/tag_utility.h
function namespace (line 8) | namespace Envoy {
FILE: source/common/stats/thread_local_store.cc
type Envoy (line 22) | namespace Envoy {
type Stats (line 23) | namespace Stats {
function ScopePtr (line 130) | ScopePtr ThreadLocalStoreImpl::createScope(const std::string& name) {
class StatNameTagHelper (line 355) | class StatNameTagHelper {
method StatNameTagHelper (line 357) | StatNameTagHelper(ThreadLocalStoreImpl& tls, StatName name,
method StatNameTagVector (line 378) | const StatNameTagVector& statNameTags() const { return stat_name_t...
method StatName (line 379) | StatName tagExtractedName() const { return tag_extracted_name_; }
function StatType (line 415) | StatType& ThreadLocalStoreImpl::ScopeImpl::safeMakeStat(
function Counter (line 479) | Counter& ThreadLocalStoreImpl::ScopeImpl::counterFromStatNameWithTags(
function Gauge (line 533) | Gauge& ThreadLocalStoreImpl::ScopeImpl::gaugeFromStatNameWithTags(
function Histogram (line 571) | Histogram& ThreadLocalStoreImpl::ScopeImpl::histogramFromStatNameWit...
function TextReadout (line 647) | TextReadout& ThreadLocalStoreImpl::ScopeImpl::textReadoutFromStatNam...
function CounterOptConstRef (line 685) | CounterOptConstRef ThreadLocalStoreImpl::ScopeImpl::findCounter(Stat...
function GaugeOptConstRef (line 689) | GaugeOptConstRef ThreadLocalStoreImpl::ScopeImpl::findGauge(StatName...
function HistogramOptConstRef (line 693) | HistogramOptConstRef ThreadLocalStoreImpl::ScopeImpl::findHistogram(...
function TextReadoutOptConstRef (line 703) | TextReadoutOptConstRef ThreadLocalStoreImpl::ScopeImpl::findTextRead...
function Histogram (line 707) | Histogram& ThreadLocalStoreImpl::tlsHistogram(ParentHistogramImpl& p...
function SymbolTable (line 831) | SymbolTable& ParentHistogramImpl::symbolTable() { return thread_loca...
FILE: source/common/stats/thread_local_store.h
function namespace (line 27) | namespace Envoy {
FILE: source/common/stats/timespan_impl.cc
type Envoy (line 6) | namespace Envoy {
type Stats (line 7) | namespace Stats {
FILE: source/common/stats/timespan_impl.h
function namespace (line 8) | namespace Envoy {
FILE: source/common/stats/utility.cc
type Envoy (line 9) | namespace Envoy {
type Stats (line 10) | namespace Stats {
type ElementVisitor (line 42) | struct ElementVisitor {
method ElementVisitor (line 43) | ElementVisitor(SymbolTable& symbol_table, const ElementVec& elements)
method StatName (line 59) | StatName statName() { return StatName(joined_.get()); }
function Counter (line 69) | Counter& Utility::counterFromElements(Scope& scope, const ElementVec...
function Counter (line 75) | Counter& Utility::counterFromStatNames(Scope& scope, const StatNameV...
function Gauge (line 81) | Gauge& Utility::gaugeFromElements(Scope& scope, const ElementVec& el...
function Gauge (line 88) | Gauge& Utility::gaugeFromStatNames(Scope& scope, const StatNameVec& ...
function Histogram (line 95) | Histogram& Utility::histogramFromElements(Scope& scope, const Elemen...
function Histogram (line 101) | Histogram& Utility::histogramFromStatNames(Scope& scope, const StatN...
function TextReadout (line 108) | TextReadout& Utility::textReadoutFromElements(Scope& scope, const El...
function TextReadout (line 114) | TextReadout& Utility::textReadoutFromStatNames(Scope& scope, const S...
FILE: source/common/stats/utility.h
function namespace (line 15) | namespace Envoy {
FILE: source/common/stream_info/filter_state_impl.cc
type Envoy (line 5) | namespace Envoy {
type StreamInfo (line 6) | namespace StreamInfo {
FILE: source/common/stream_info/filter_state_impl.h
function namespace (line 12) | namespace Envoy {
function ParentAccessMode (line 57) | enum class ParentAccessMode { ReadOnly, ReadWrite };
FILE: source/common/stream_info/stream_info_impl.h
function namespace (line 17) | namespace Envoy {
FILE: source/common/stream_info/uint32_accessor_impl.h
function namespace (line 5) | namespace Envoy {
FILE: source/common/stream_info/utility.cc
type Envoy (line 5) | namespace Envoy {
type StreamInfo (line 6) | namespace StreamInfo {
FILE: source/common/stream_info/utility.h
function namespace (line 8) | namespace Envoy {
FILE: source/common/tcp/conn_pool.cc
type Envoy (line 12) | namespace Envoy {
type Tcp (line 13) | namespace Tcp {
FILE: source/common/tcp/conn_pool.h
function namespace (line 19) | namespace Envoy {
function addDrainedCallback (line 133) | void addDrainedCallback(DrainedCb cb) override { addDrainedCallbackImpl(...
function drainConnections (line 134) | void drainConnections() override {
function maybePrefetch (line 161) | bool maybePrefetch(float prefetch_ratio) override {
function onPoolReady (line 182) | void onPoolReady(Envoy::ConnectionPool::ActiveClient& client,
function onPoolFailure (line 191) | void onPoolFailure(const Upstream::HostDescriptionConstSharedPtr& host_d...
function virtual (line 199) | virtual void onConnReleased(Envoy::ConnectionPool::ActiveClient& client) {
function virtual (line 206) | virtual void onConnDestroyed() {}
function upstream_ready_enabled_ (line 210) | bool upstream_ready_enabled_{}
FILE: source/common/tcp/original_conn_pool.cc
type Envoy (line 12) | namespace Envoy {
type Tcp (line 13) | namespace Tcp {
FILE: source/common/tcp/original_conn_pool.h
function namespace (line 19) | namespace Envoy {
function upstream_ready_enabled_ (line 166) | bool upstream_ready_enabled_{false};
FILE: source/common/tcp_proxy/tcp_proxy.cc
type Envoy (line 30) | namespace Envoy {
type TcpProxy (line 31) | namespace TcpProxy {
function RouteConstSharedPtr (line 181) | RouteConstSharedPtr Config::getRegularRouteFromEntries(Network::Conn...
function RouteConstSharedPtr (line 205) | RouteConstSharedPtr Config::getRouteFromEntries(Network::Connection&...
function UpstreamDrainManager (line 213) | UpstreamDrainManager& Config::drainManager() {
function TcpProxyStats (line 232) | TcpProxyStats Config::SharedConfig::generateStats(Stats::Scope& scop...
FILE: source/common/tcp_proxy/tcp_proxy.h
type TcpProxyStats (line 57) | struct TcpProxyStats {
function class (line 67) | class Route {
function class (line 228) | class PerConnectionCluster : public StreamInfo::FilterState::Object {
function Network (line 287) | const Network::Connection* downstreamConnection() const override {
type UpstreamCallbacks (line 300) | struct UpstreamCallbacks
function parent_ (line 301) | parent_(parent) {}
function onAboveWriteBufferHighWatermark (line 306) | void onAboveWriteBufferHighWatermark() override;
function Drainer (line 321) | Drainer* drainer_{}
function on_high_watermark_called_ (line 323) | bool on_high_watermark_called_{false};
type DownstreamCallbacks (line 329) | struct DownstreamCallbacks
function parent_ (line 330) | parent_(parent) {}
function onEvent (line 333) | void onEvent(Network::ConnectionEvent event) override { parent_.onDownst...
function on_high_watermark_called_ (line 338) | bool on_high_watermark_called_{false};
function UpstreamFailureReason (line 341) | enum class UpstreamFailureReason {
function class (line 392) | class Drainer : public Event::DeferredDeletable {
function class (line 416) | class UpstreamDrainManager : public ThreadLocal::ThreadLocalObject {
FILE: source/common/tcp_proxy/upstream.cc
type Envoy (line 7) | namespace Envoy {
type TcpProxy (line 8) | namespace TcpProxy {
FILE: source/common/tcp_proxy
Copy disabled (too large)
Download .json
Condensed preview — 7386 files, each showing path, character count, and a content snippet. Download the .json file for the full structured content (39,081K chars).
[
{
"path": ".azure-pipelines/bazel.yml",
"chars": 2588,
"preview": "parameters:\n - name: ciTarget\n displayName: \"CI target\"\n type: string\n default: bazel.release\n - name: artifa"
},
{
"path": ".azure-pipelines/cleanup.sh",
"chars": 375,
"preview": "#!/bin/bash\n\nset -e\n\n# Temporary script to remove tools from Azure pipelines agent to create more disk space room.\nsudo "
},
{
"path": ".azure-pipelines/pipelines.yml",
"chars": 7859,
"preview": "trigger:\n branches:\n include:\n - \"master\"\n - \"release/v*\"\n tags:\n include:\n - \"v*\"\n\n# PR build co"
},
{
"path": ".bazelci/presubmit.yml",
"chars": 580,
"preview": "---\ntasks:\n rbe:\n name: \"RBE\"\n platform: ubuntu1804\n test_targets:\n - \"//test/common/common/...\"\n - "
},
{
"path": ".bazelignore",
"chars": 50,
"preview": "api\nexamples/grpc-bridge/script\ntools/clang_tools\n"
},
{
"path": ".bazelrc",
"chars": 14887,
"preview": "# Envoy specific Bazel build/test options.\n\n# Bazel doesn't need more than 200MB of memory for local build based on memo"
},
{
"path": ".bazelversion",
"chars": 6,
"preview": "3.4.1\n"
},
{
"path": ".circleci/config.yml",
"chars": 2116,
"preview": "version: 2.1\n\nexecutors:\n ubuntu-build:\n description: \"A regular build executor based on ubuntu image\"\n docker:\n "
},
{
"path": ".clang-format",
"chars": 281,
"preview": "---\nLanguage: Cpp\nAccessModifierOffset: -2\nColumnLimit: 100\nDerivePointerAlignment: false\nPointerAlignment: Left\n"
},
{
"path": ".clang-tidy",
"chars": 3331,
"preview": "Checks: '-clang-analyzer-core.NonNullParamChecker,\n -clang-analyzer-optin.cplusplus.Uninitia"
},
{
"path": ".devcontainer/.gitignore",
"chars": 17,
"preview": "devcontainer.env\n"
},
{
"path": ".devcontainer/Dockerfile",
"chars": 891,
"preview": "FROM gcr.io/envoy-ci/envoy-build:b480535e8423b5fd7c102fd30c92f4785519e33a\n\nARG USERNAME=vscode\nARG USER_UID=501\nARG USER"
},
{
"path": ".devcontainer/README.md",
"chars": 1968,
"preview": "# Envoy Dev Container (experimental)\n\nThis directory contains some experimental tools for Envoy Development in [VSCode R"
},
{
"path": ".devcontainer/devcontainer.json",
"chars": 1276,
"preview": "{\n \"name\": \"Envoy Dev\",\n \"dockerFile\": \"Dockerfile\",\n \"runArgs\": [\n \"--user=vscode\",\n \"--cap-add=SYS_PTRACE\",\n "
},
{
"path": ".devcontainer/setup.sh",
"chars": 826,
"preview": "#!/usr/bin/env bash\n\n. ci/setup_cache.sh\ntrap - EXIT # Don't remove the key file written into a temporary file\n\nBAZELRC_"
},
{
"path": ".gitattributes",
"chars": 266,
"preview": "/docs/root/version_history/current.rst merge=union\n/api/envoy/**/v4alpha/* linguist-generated=true\n/generated_api_shadow"
},
{
"path": ".github/ISSUE_TEMPLATE/config.yml",
"chars": 203,
"preview": "blank_issues_enabled: false\ncontact_links:\n - name: \"Crash bug\"\n url: https://github.com/envoyproxy/envoy/security/p"
},
{
"path": ".github/ISSUE_TEMPLATE/feature_request.md",
"chars": 347,
"preview": "---\nname: Feature request\nabout: Suggest an idea for this project\ntitle: ''\nlabels: enhancement,triage\nassignees: ''\n\n--"
},
{
"path": ".github/ISSUE_TEMPLATE/non--crash-security--bug.md",
"chars": 1760,
"preview": "---\nname: Non-{crash,security} bug\nabout: Bugs which are not crashes, DoS or other security issue\ntitle: ''\nlabels: bug,"
},
{
"path": ".github/ISSUE_TEMPLATE/other.md",
"chars": 497,
"preview": "---\nname: Other\nabout: Questions, design proposals, tech debt, etc.\ntitle: ''\nlabels: triage\nassignees: ''\n\n---\n\n**If yo"
},
{
"path": ".github/stale.yml",
"chars": 2109,
"preview": "# Configuration for probot-stale - https://github.com/probot/stale\n\n# General configuration\n# Label to use when marking "
},
{
"path": ".github/workflows/codeql-daily.yml",
"chars": 1909,
"preview": "on:\n schedule:\n - cron: '0 12 * * 4'\n\njobs:\n CodeQL-Build:\n\n strategy:\n fail-fast: false\n\n # CodeQL runs"
},
{
"path": ".github/workflows/codeql-push.yml",
"chars": 2093,
"preview": "on:\n push:\n paths:\n - 'source/common/**'\n pull_request:\n\njobs:\n CodeQL-Build:\n\n strategy:\n fail-fast: f"
},
{
"path": ".github/workflows/get_build_targets.sh",
"chars": 929,
"preview": "#!/bin/bash\n\n# This limits the directory that bazel query is going to search under.\nreadonly SEARCH_FOLDER=\"//source/com"
},
{
"path": ".gitignore",
"chars": 449,
"preview": "/bazel-*\nBROWSE\n/build\n/build_*\n*.bzlc\n.cache\n.clangd\n.classpath\n.clwb/\n/ci/bazel-*\ncompile_commands.json\ncscope.*\n.deps"
},
{
"path": ".zuul/playbooks/envoy-build/run.yaml",
"chars": 707,
"preview": "- hosts: all\n become: yes\n roles:\n - role: config-gcc\n gcc_version: 7\n - role: config-bazel\n bazel_ver"
},
{
"path": ".zuul.yaml",
"chars": 301,
"preview": "- project:\n name: envoyproxy/envoy\n check:\n jobs:\n - envoy-build-arm64\n\n- job:\n name: envoy-build-a"
},
{
"path": "BUILD",
"chars": 882,
"preview": "licenses([\"notice\"]) # Apache 2\n\nexports_files([\n \"VERSION\",\n \".clang-format\",\n])\n\n# These two definitions exist "
},
{
"path": "CODEOWNERS",
"chars": 7692,
"preview": "# TODO(zuercher): determine how we want to deal with auto-assignment\n# By default, @envoyproxy/maintainers own everythin"
},
{
"path": "CODE_OF_CONDUCT.md",
"chars": 139,
"preview": "## Community Code of Conduct\n\nEnvoy follows the [CNCF Code of Conduct](https://github.com/cncf/foundation/blob/master/co"
},
{
"path": "CONTRIBUTING.md",
"chars": 19922,
"preview": "We welcome contributions from the community. Please read the following guidelines carefully to\nmaximize the chances of y"
},
{
"path": "DCO",
"chars": 1421,
"preview": "Developer Certificate of Origin\nVersion 1.1\n\nCopyright (C) 2004, 2006 The Linux Foundation and its contributors.\n1 Lette"
},
{
"path": "DEPENDENCY_POLICY.md",
"chars": 6302,
"preview": "# Envoy External Dependency Policy\n\nEnvoy has an evolving policy on external dependencies, tracked at\nhttps://github.com"
},
{
"path": "DEPRECATED.md",
"chars": 189,
"preview": "# DEPRECATED\n\nThe [deprecated log](https://www.envoyproxy.io/docs/envoy/latest/version_history/version_history)\nfor each"
},
{
"path": "DEVELOPER.md",
"chars": 2422,
"preview": "# Developer documentation\n\nEnvoy is built using the Bazel build system. CircleCI builds, tests, and runs coverage agains"
},
{
"path": "EXTENSION_POLICY.md",
"chars": 6576,
"preview": "# Envoy Extension Policy\n\n## Quality requirements\n\nAll extensions contained in the main Envoy repository will be held to"
},
{
"path": "GOVERNANCE.md",
"chars": 12637,
"preview": "# Process for becoming a maintainer\n\n## Your organization is not yet a maintainer\n\n* Express interest to the senior main"
},
{
"path": "LICENSE",
"chars": 11358,
"preview": "\n Apache License\n Version 2.0, January 2004\n "
},
{
"path": "NOTICE",
"chars": 108,
"preview": "Envoy\nCopyright 2016-2019 Envoy Project Authors\n\nLicensed under Apache License 2.0. See LICENSE for terms.\n"
},
{
"path": "OWNERS.md",
"chars": 3785,
"preview": "* See [CONTRIBUTING.md](CONTRIBUTING.md) for general contribution guidelines.\n* See [GOVERNANCE.md](GOVERNANCE.md) for g"
},
{
"path": "PULL_REQUESTS.md",
"chars": 4481,
"preview": "When creating an Envoy pull request (PR) the text box will automatically be filled\nin with the basic fields from the [pu"
},
{
"path": "PULL_REQUEST_TEMPLATE.md",
"chars": 657,
"preview": "<!--\n!!!ATTENTION!!!\n\nIf you are fixing *any* crash or *any* potential security issue, *do not*\nopen a pull request in t"
},
{
"path": "README.md",
"chars": 5854,
"preview": "\n\n[Cloud-native high-pe"
},
{
"path": "RELEASES.md",
"chars": 3364,
"preview": "# Release Process\n\n## Active development\n\nActive development is happening on the `master` branch, and a new version is r"
},
{
"path": "REPO_LAYOUT.md",
"chars": 6911,
"preview": "# Repository layout overview\n\nThis is a high level overview of how the repository is laid out to both aid in code invest"
},
{
"path": "SECURITY.md",
"chars": 26151,
"preview": "# Security Reporting Process\n\nPlease report any security issue or Envoy crash report to\nenvoy-security@googlegroups.com "
},
{
"path": "STYLE.md",
"chars": 13577,
"preview": "# C++ coding style\n\n* The Envoy source code is formatted using clang-format. Thus all white spaces, etc.\n issues are ta"
},
{
"path": "VERSION",
"chars": 7,
"preview": "1.16.0\n"
},
{
"path": "WORKSPACE",
"chars": 461,
"preview": "workspace(name = \"envoy\")\n\nload(\"//bazel:api_binding.bzl\", \"envoy_api_binding\")\n\nenvoy_api_binding()\n\nload(\"//bazel:api_"
},
{
"path": "api/API_OVERVIEW.md",
"chars": 7435,
"preview": "# Envoy v2 APIs for developers\n\n## Goals\n\nThis repository contains both the implemented and draft v2 JSON REST and gRPC\n"
},
{
"path": "api/API_VERSIONING.md",
"chars": 14316,
"preview": "# API versioning guidelines\n\nThe Envoy project (and in the future [UDPA](https://github.com/cncf/udpa)) takes API stabil"
},
{
"path": "api/BUILD",
"chars": 14661,
"preview": "# DO NOT EDIT. This file is generated by tools/proto_format/proto_sync.py.\n\nload(\"@rules_proto//proto:defs.bzl\", \"proto_"
},
{
"path": "api/CONTRIBUTING.md",
"chars": 2851,
"preview": "# Contributing guide\n\n## API changes\n\nAll API changes should follow the [style guide](STYLE.md).\n\nAPI changes are regula"
},
{
"path": "api/README.md",
"chars": 1192,
"preview": "# Data plane API\n\nThis tree hosts the configuration and APIs that drive [Envoy](https://www.envoyproxy.io/). The\nAPIs ar"
},
{
"path": "api/STYLE.md",
"chars": 8914,
"preview": "# API style guidelines\n\nGenerally follow guidance at https://cloud.google.com/apis/design/, in\nparticular for proto3 as "
},
{
"path": "api/bazel/BUILD",
"chars": 354,
"preview": "load(\"@io_bazel_rules_go//proto:compiler.bzl\", \"go_proto_compiler\")\n\nlicenses([\"notice\"]) # Apache 2\n\ngo_proto_compiler"
},
{
"path": "api/bazel/api_build_system.bzl",
"chars": 8080,
"preview": "load(\"@rules_cc//cc:defs.bzl\", \"cc_test\")\nload(\"@com_envoyproxy_protoc_gen_validate//bazel:pgv_proto_library.bzl\", \"pgv_"
},
{
"path": "api/bazel/envoy_http_archive.bzl",
"chars": 976,
"preview": "load(\"@bazel_tools//tools/build_defs/repo:http.bzl\", \"http_archive\")\n\ndef envoy_http_archive(name, locations, **kwargs):"
},
{
"path": "api/bazel/external_proto_deps.bzl",
"chars": 3142,
"preview": "# Any external dependency imported in the api/ .protos requires entries in\n# the maps below, to allow the Bazel proto an"
},
{
"path": "api/bazel/repositories.bzl",
"chars": 2572,
"preview": "load(\":envoy_http_archive.bzl\", \"envoy_http_archive\")\nload(\":repository_locations.bzl\", \"REPOSITORY_LOCATIONS\")\n\ndef api"
},
{
"path": "api/bazel/repository_locations.bzl",
"chars": 5524,
"preview": "DEPENDENCY_REPOSITORIES_SPEC = dict(\n bazel_skylib = dict(\n project_name = \"bazel-skylib\",\n project_des"
},
{
"path": "api/envoy/admin/v2alpha/BUILD",
"chars": 459,
"preview": "# DO NOT EDIT. This file is generated by tools/proto_format/proto_sync.py.\n\nload(\"@envoy_api//bazel:api_build_system.bzl"
},
{
"path": "api/envoy/admin/v2alpha/certs.proto",
"chars": 1615,
"preview": "syntax = \"proto3\";\n\npackage envoy.admin.v2alpha;\n\nimport \"google/protobuf/timestamp.proto\";\n\nimport \"udpa/annotations/st"
},
{
"path": "api/envoy/admin/v2alpha/clusters.proto",
"chars": 6627,
"preview": "syntax = \"proto3\";\n\npackage envoy.admin.v2alpha;\n\nimport \"envoy/admin/v2alpha/metrics.proto\";\nimport \"envoy/api/v2/core/"
},
{
"path": "api/envoy/admin/v2alpha/config_dump.proto",
"chars": 12035,
"preview": "syntax = \"proto3\";\n\npackage envoy.admin.v2alpha;\n\nimport \"envoy/config/bootstrap/v2/bootstrap.proto\";\n\nimport \"google/pr"
},
{
"path": "api/envoy/admin/v2alpha/listeners.proto",
"chars": 1011,
"preview": "syntax = \"proto3\";\n\npackage envoy.admin.v2alpha;\n\nimport \"envoy/api/v2/core/address.proto\";\n\nimport \"udpa/annotations/st"
},
{
"path": "api/envoy/admin/v2alpha/memory.proto",
"chars": 1939,
"preview": "syntax = \"proto3\";\n\npackage envoy.admin.v2alpha;\n\nimport \"udpa/annotations/status.proto\";\n\noption java_package = \"io.env"
},
{
"path": "api/envoy/admin/v2alpha/metrics.proto",
"chars": 617,
"preview": "syntax = \"proto3\";\n\npackage envoy.admin.v2alpha;\n\nimport \"udpa/annotations/status.proto\";\n\noption java_package = \"io.env"
},
{
"path": "api/envoy/admin/v2alpha/mutex_stats.proto",
"chars": 1176,
"preview": "syntax = \"proto3\";\n\npackage envoy.admin.v2alpha;\n\nimport \"udpa/annotations/status.proto\";\n\noption java_package = \"io.env"
},
{
"path": "api/envoy/admin/v2alpha/server_info.proto",
"chars": 4205,
"preview": "syntax = \"proto3\";\n\npackage envoy.admin.v2alpha;\n\nimport \"google/protobuf/duration.proto\";\n\nimport \"envoy/annotations/de"
},
{
"path": "api/envoy/admin/v2alpha/tap.proto",
"chars": 874,
"preview": "syntax = \"proto3\";\n\npackage envoy.admin.v2alpha;\n\nimport \"envoy/service/tap/v2alpha/common.proto\";\n\nimport \"udpa/annotat"
},
{
"path": "api/envoy/admin/v3/BUILD",
"chars": 537,
"preview": "# DO NOT EDIT. This file is generated by tools/proto_format/proto_sync.py.\n\nload(\"@envoy_api//bazel:api_build_system.bzl"
},
{
"path": "api/envoy/admin/v3/certs.proto",
"chars": 2440,
"preview": "syntax = \"proto3\";\n\npackage envoy.admin.v3;\n\nimport \"google/protobuf/timestamp.proto\";\n\nimport \"udpa/annotations/status."
},
{
"path": "api/envoy/admin/v3/clusters.proto",
"chars": 7353,
"preview": "syntax = \"proto3\";\n\npackage envoy.admin.v3;\n\nimport \"envoy/admin/v3/metrics.proto\";\nimport \"envoy/config/cluster/v3/circ"
},
{
"path": "api/envoy/admin/v3/config_dump.proto",
"chars": 16009,
"preview": "syntax = \"proto3\";\n\npackage envoy.admin.v3;\n\nimport \"envoy/config/bootstrap/v3/bootstrap.proto\";\n\nimport \"google/protobu"
},
{
"path": "api/envoy/admin/v3/init_dump.proto",
"chars": 1279,
"preview": "syntax = \"proto3\";\n\npackage envoy.admin.v3;\n\nimport \"udpa/annotations/status.proto\";\nimport \"udpa/annotations/versioning"
},
{
"path": "api/envoy/admin/v3/listeners.proto",
"chars": 1250,
"preview": "syntax = \"proto3\";\n\npackage envoy.admin.v3;\n\nimport \"envoy/config/core/v3/address.proto\";\n\nimport \"udpa/annotations/stat"
},
{
"path": "api/envoy/admin/v3/memory.proto",
"chars": 2067,
"preview": "syntax = \"proto3\";\n\npackage envoy.admin.v3;\n\nimport \"udpa/annotations/status.proto\";\nimport \"udpa/annotations/versioning"
},
{
"path": "api/envoy/admin/v3/metrics.proto",
"chars": 751,
"preview": "syntax = \"proto3\";\n\npackage envoy.admin.v3;\n\nimport \"udpa/annotations/status.proto\";\nimport \"udpa/annotations/versioning"
},
{
"path": "api/envoy/admin/v3/mutex_stats.proto",
"chars": 1308,
"preview": "syntax = \"proto3\";\n\npackage envoy.admin.v3;\n\nimport \"udpa/annotations/status.proto\";\nimport \"udpa/annotations/versioning"
},
{
"path": "api/envoy/admin/v3/server_info.proto",
"chars": 5256,
"preview": "syntax = \"proto3\";\n\npackage envoy.admin.v3;\n\nimport \"envoy/config/core/v3/base.proto\";\n\nimport \"google/protobuf/duration"
},
{
"path": "api/envoy/admin/v3/tap.proto",
"chars": 992,
"preview": "syntax = \"proto3\";\n\npackage envoy.admin.v3;\n\nimport \"envoy/config/tap/v3/common.proto\";\n\nimport \"udpa/annotations/status"
},
{
"path": "api/envoy/admin/v4alpha/BUILD",
"chars": 552,
"preview": "# DO NOT EDIT. This file is generated by tools/proto_format/proto_sync.py.\n\nload(\"@envoy_api//bazel:api_build_system.bzl"
},
{
"path": "api/envoy/admin/v4alpha/certs.proto",
"chars": 2569,
"preview": "syntax = \"proto3\";\n\npackage envoy.admin.v4alpha;\n\nimport \"google/protobuf/timestamp.proto\";\n\nimport \"udpa/annotations/st"
},
{
"path": "api/envoy/admin/v4alpha/clusters.proto",
"chars": 7434,
"preview": "syntax = \"proto3\";\n\npackage envoy.admin.v4alpha;\n\nimport \"envoy/admin/v4alpha/metrics.proto\";\nimport \"envoy/config/clust"
},
{
"path": "api/envoy/admin/v4alpha/config_dump.proto",
"chars": 16349,
"preview": "syntax = \"proto3\";\n\npackage envoy.admin.v4alpha;\n\nimport \"envoy/config/bootstrap/v4alpha/bootstrap.proto\";\n\nimport \"goog"
},
{
"path": "api/envoy/admin/v4alpha/init_dump.proto",
"chars": 1544,
"preview": "syntax = \"proto3\";\n\npackage envoy.admin.v4alpha;\n\nimport \"udpa/annotations/status.proto\";\nimport \"udpa/annotations/versi"
},
{
"path": "api/envoy/admin/v4alpha/listeners.proto",
"chars": 1282,
"preview": "syntax = \"proto3\";\n\npackage envoy.admin.v4alpha;\n\nimport \"envoy/config/core/v4alpha/address.proto\";\n\nimport \"udpa/annota"
},
{
"path": "api/envoy/admin/v4alpha/memory.proto",
"chars": 2094,
"preview": "syntax = \"proto3\";\n\npackage envoy.admin.v4alpha;\n\nimport \"udpa/annotations/status.proto\";\nimport \"udpa/annotations/versi"
},
{
"path": "api/envoy/admin/v4alpha/metrics.proto",
"chars": 778,
"preview": "syntax = \"proto3\";\n\npackage envoy.admin.v4alpha;\n\nimport \"udpa/annotations/status.proto\";\nimport \"udpa/annotations/versi"
},
{
"path": "api/envoy/admin/v4alpha/mutex_stats.proto",
"chars": 1335,
"preview": "syntax = \"proto3\";\n\npackage envoy.admin.v4alpha;\n\nimport \"udpa/annotations/status.proto\";\nimport \"udpa/annotations/versi"
},
{
"path": "api/envoy/admin/v4alpha/server_info.proto",
"chars": 5282,
"preview": "syntax = \"proto3\";\n\npackage envoy.admin.v4alpha;\n\nimport \"envoy/config/core/v4alpha/base.proto\";\n\nimport \"google/protobu"
},
{
"path": "api/envoy/admin/v4alpha/tap.proto",
"chars": 1029,
"preview": "syntax = \"proto3\";\n\npackage envoy.admin.v4alpha;\n\nimport \"envoy/config/tap/v4alpha/common.proto\";\n\nimport \"udpa/annotati"
},
{
"path": "api/envoy/annotations/BUILD",
"chars": 123,
"preview": "load(\"@envoy_api//bazel:api_build_system.bzl\", \"api_proto_package\")\n\nlicenses([\"notice\"]) # Apache 2\n\napi_proto_package"
},
{
"path": "api/envoy/annotations/deprecation.proto",
"chars": 769,
"preview": "syntax = \"proto3\";\n\npackage envoy.annotations;\n\nimport \"google/protobuf/descriptor.proto\";\n\n// [#protodoc-title: Depreca"
},
{
"path": "api/envoy/annotations/resource.proto",
"chars": 471,
"preview": "syntax = \"proto3\";\n\npackage envoy.annotations;\n\nimport \"google/protobuf/descriptor.proto\";\n\n// [#protodoc-title: Resourc"
},
{
"path": "api/envoy/api/v2/BUILD",
"chars": 677,
"preview": "# DO NOT EDIT. This file is generated by tools/proto_format/proto_sync.py.\n\nload(\"@envoy_api//bazel:api_build_system.bzl"
},
{
"path": "api/envoy/api/v2/README.md",
"chars": 468,
"preview": "Protocol buffer definitions for xDS and top-level resource API messages.\n\nPackage group `//envoy/api/v2:friends` enumera"
},
{
"path": "api/envoy/api/v2/auth/BUILD",
"chars": 346,
"preview": "# DO NOT EDIT. This file is generated by tools/proto_format/proto_sync.py.\n\nload(\"@envoy_api//bazel:api_build_system.bzl"
},
{
"path": "api/envoy/api/v2/auth/cert.proto",
"chars": 513,
"preview": "syntax = \"proto3\";\n\npackage envoy.api.v2.auth;\n\nimport \"udpa/annotations/migrate.proto\";\nimport \"udpa/annotations/status"
},
{
"path": "api/envoy/api/v2/auth/common.proto",
"chars": 13773,
"preview": "syntax = \"proto3\";\n\npackage envoy.api.v2.auth;\n\nimport \"envoy/api/v2/core/base.proto\";\nimport \"envoy/type/matcher/string"
},
{
"path": "api/envoy/api/v2/auth/secret.proto",
"chars": 1536,
"preview": "syntax = \"proto3\";\n\npackage envoy.api.v2.auth;\n\nimport \"envoy/api/v2/auth/common.proto\";\nimport \"envoy/api/v2/core/base."
},
{
"path": "api/envoy/api/v2/auth/tls.proto",
"chars": 6690,
"preview": "syntax = \"proto3\";\n\npackage envoy.api.v2.auth;\n\nimport \"envoy/api/v2/auth/common.proto\";\nimport \"envoy/api/v2/auth/secre"
},
{
"path": "api/envoy/api/v2/cds.proto",
"chars": 1383,
"preview": "syntax = \"proto3\";\n\npackage envoy.api.v2;\n\nimport \"envoy/api/v2/discovery.proto\";\n\nimport \"google/api/annotations.proto\""
},
{
"path": "api/envoy/api/v2/cluster/BUILD",
"chars": 338,
"preview": "# DO NOT EDIT. This file is generated by tools/proto_format/proto_sync.py.\n\nload(\"@envoy_api//bazel:api_build_system.bzl"
},
{
"path": "api/envoy/api/v2/cluster/circuit_breaker.proto",
"chars": 4235,
"preview": "syntax = \"proto3\";\n\npackage envoy.api.v2.cluster;\n\nimport \"envoy/api/v2/core/base.proto\";\nimport \"envoy/type/percent.pro"
},
{
"path": "api/envoy/api/v2/cluster/filter.proto",
"chars": 1100,
"preview": "syntax = \"proto3\";\n\npackage envoy.api.v2.cluster;\n\nimport \"google/protobuf/any.proto\";\n\nimport \"udpa/annotations/migrate"
},
{
"path": "api/envoy/api/v2/cluster/outlier_detection.proto",
"chars": 8319,
"preview": "syntax = \"proto3\";\n\npackage envoy.api.v2.cluster;\n\nimport \"google/protobuf/duration.proto\";\nimport \"google/protobuf/wrap"
},
{
"path": "api/envoy/api/v2/cluster.proto",
"chars": 42378,
"preview": "syntax = \"proto3\";\n\npackage envoy.api.v2;\n\nimport \"envoy/api/v2/auth/tls.proto\";\nimport \"envoy/api/v2/cluster/circuit_br"
},
{
"path": "api/envoy/api/v2/core/BUILD",
"chars": 374,
"preview": "# DO NOT EDIT. This file is generated by tools/proto_format/proto_sync.py.\n\nload(\"@envoy_api//bazel:api_build_system.bzl"
},
{
"path": "api/envoy/api/v2/core/address.proto",
"chars": 5605,
"preview": "syntax = \"proto3\";\n\npackage envoy.api.v2.core;\n\nimport \"envoy/api/v2/core/socket_option.proto\";\n\nimport \"google/protobuf"
},
{
"path": "api/envoy/api/v2/core/backoff.proto",
"chars": 1379,
"preview": "syntax = \"proto3\";\n\npackage envoy.api.v2.core;\n\nimport \"google/protobuf/duration.proto\";\n\nimport \"udpa/annotations/migra"
},
{
"path": "api/envoy/api/v2/core/base.proto",
"chars": 15199,
"preview": "syntax = \"proto3\";\n\npackage envoy.api.v2.core;\n\nimport \"envoy/api/v2/core/address.proto\";\nimport \"envoy/api/v2/core/back"
},
{
"path": "api/envoy/api/v2/core/config_source.proto",
"chars": 8027,
"preview": "syntax = \"proto3\";\n\npackage envoy.api.v2.core;\n\nimport \"envoy/api/v2/core/grpc_service.proto\";\n\nimport \"google/protobuf/"
},
{
"path": "api/envoy/api/v2/core/event_service_config.proto",
"chars": 817,
"preview": "syntax = \"proto3\";\n\npackage envoy.api.v2.core;\n\nimport \"envoy/api/v2/core/grpc_service.proto\";\n\nimport \"udpa/annotations"
},
{
"path": "api/envoy/api/v2/core/grpc_method_list.proto",
"chars": 900,
"preview": "syntax = \"proto3\";\n\npackage envoy.api.v2.core;\n\nimport \"udpa/annotations/migrate.proto\";\nimport \"udpa/annotations/status"
},
{
"path": "api/envoy/api/v2/core/grpc_service.proto",
"chars": 8670,
"preview": "syntax = \"proto3\";\n\npackage envoy.api.v2.core;\n\nimport \"envoy/api/v2/core/base.proto\";\n\nimport \"google/protobuf/any.prot"
},
{
"path": "api/envoy/api/v2/core/health_check.proto",
"chars": 13551,
"preview": "syntax = \"proto3\";\n\npackage envoy.api.v2.core;\n\nimport \"envoy/api/v2/core/base.proto\";\nimport \"envoy/api/v2/core/event_s"
},
{
"path": "api/envoy/api/v2/core/http_uri.proto",
"chars": 1664,
"preview": "syntax = \"proto3\";\n\npackage envoy.api.v2.core;\n\nimport \"google/protobuf/duration.proto\";\n\nimport \"udpa/annotations/migra"
},
{
"path": "api/envoy/api/v2/core/protocol.proto",
"chars": 14932,
"preview": "syntax = \"proto3\";\n\npackage envoy.api.v2.core;\n\nimport \"google/protobuf/duration.proto\";\nimport \"google/protobuf/wrapper"
},
{
"path": "api/envoy/api/v2/core/socket_option.proto",
"chars": 1772,
"preview": "syntax = \"proto3\";\n\npackage envoy.api.v2.core;\n\nimport \"udpa/annotations/migrate.proto\";\nimport \"udpa/annotations/status"
},
{
"path": "api/envoy/api/v2/discovery.proto",
"chars": 11164,
"preview": "syntax = \"proto3\";\n\npackage envoy.api.v2;\n\nimport \"envoy/api/v2/core/base.proto\";\n\nimport \"google/protobuf/any.proto\";\ni"
},
{
"path": "api/envoy/api/v2/eds.proto",
"chars": 1664,
"preview": "syntax = \"proto3\";\n\npackage envoy.api.v2;\n\nimport \"envoy/api/v2/discovery.proto\";\n\nimport \"google/api/annotations.proto\""
},
{
"path": "api/envoy/api/v2/endpoint/BUILD",
"chars": 310,
"preview": "# DO NOT EDIT. This file is generated by tools/proto_format/proto_sync.py.\n\nload(\"@envoy_api//bazel:api_build_system.bzl"
},
{
"path": "api/envoy/api/v2/endpoint/endpoint.proto",
"chars": 302,
"preview": "syntax = \"proto3\";\n\npackage envoy.api.v2.endpoint;\n\nimport \"udpa/annotations/status.proto\";\n\nimport public \"envoy/api/v2"
},
{
"path": "api/envoy/api/v2/endpoint/endpoint_components.proto",
"chars": 6775,
"preview": "syntax = \"proto3\";\n\npackage envoy.api.v2.endpoint;\n\nimport \"envoy/api/v2/core/address.proto\";\nimport \"envoy/api/v2/core/"
},
{
"path": "api/envoy/api/v2/endpoint/load_report.proto",
"chars": 6321,
"preview": "syntax = \"proto3\";\n\npackage envoy.api.v2.endpoint;\n\nimport \"envoy/api/v2/core/address.proto\";\nimport \"envoy/api/v2/core/"
},
{
"path": "api/envoy/api/v2/endpoint.proto",
"chars": 5286,
"preview": "syntax = \"proto3\";\n\npackage envoy.api.v2;\n\nimport \"envoy/api/v2/endpoint/endpoint_components.proto\";\nimport \"envoy/type/"
},
{
"path": "api/envoy/api/v2/lds.proto",
"chars": 1797,
"preview": "syntax = \"proto3\";\n\npackage envoy.api.v2;\n\nimport \"envoy/api/v2/discovery.proto\";\n\nimport \"google/api/annotations.proto\""
},
{
"path": "api/envoy/api/v2/listener/BUILD",
"chars": 373,
"preview": "# DO NOT EDIT. This file is generated by tools/proto_format/proto_sync.py.\n\nload(\"@envoy_api//bazel:api_build_system.bzl"
},
{
"path": "api/envoy/api/v2/listener/listener.proto",
"chars": 404,
"preview": "syntax = \"proto3\";\n\npackage envoy.api.v2.listener;\n\nimport \"udpa/annotations/status.proto\";\n\nimport public \"envoy/api/v2"
},
{
"path": "api/envoy/api/v2/listener/listener_components.proto",
"chars": 11730,
"preview": "syntax = \"proto3\";\n\npackage envoy.api.v2.listener;\n\nimport \"envoy/api/v2/auth/tls.proto\";\nimport \"envoy/api/v2/core/addr"
},
{
"path": "api/envoy/api/v2/listener/quic_config.proto",
"chars": 1270,
"preview": "syntax = \"proto3\";\n\npackage envoy.api.v2.listener;\n\nimport \"google/protobuf/duration.proto\";\nimport \"google/protobuf/wra"
},
{
"path": "api/envoy/api/v2/listener/udp_listener_config.proto",
"chars": 1255,
"preview": "syntax = \"proto3\";\n\npackage envoy.api.v2.listener;\n\nimport \"google/protobuf/any.proto\";\nimport \"google/protobuf/struct.p"
},
{
"path": "api/envoy/api/v2/listener.proto",
"chars": 13008,
"preview": "syntax = \"proto3\";\n\npackage envoy.api.v2;\n\nimport \"envoy/api/v2/core/address.proto\";\nimport \"envoy/api/v2/core/base.prot"
},
{
"path": "api/envoy/api/v2/ratelimit/BUILD",
"chars": 260,
"preview": "# DO NOT EDIT. This file is generated by tools/proto_format/proto_sync.py.\n\nload(\"@envoy_api//bazel:api_build_system.bzl"
},
{
"path": "api/envoy/api/v2/ratelimit/ratelimit.proto",
"chars": 2537,
"preview": "syntax = \"proto3\";\n\npackage envoy.api.v2.ratelimit;\n\nimport \"udpa/annotations/migrate.proto\";\nimport \"udpa/annotations/s"
},
{
"path": "api/envoy/api/v2/rds.proto",
"chars": 2887,
"preview": "syntax = \"proto3\";\n\npackage envoy.api.v2;\n\nimport \"envoy/api/v2/discovery.proto\";\n\nimport \"google/api/annotations.proto\""
},
{
"path": "api/envoy/api/v2/route/BUILD",
"chars": 448,
"preview": "# DO NOT EDIT. This file is generated by tools/proto_format/proto_sync.py.\n\nload(\"@envoy_api//bazel:api_build_system.bzl"
},
{
"path": "api/envoy/api/v2/route/route.proto",
"chars": 287,
"preview": "syntax = \"proto3\";\n\npackage envoy.api.v2.route;\n\nimport \"udpa/annotations/status.proto\";\n\nimport public \"envoy/api/v2/ro"
},
{
"path": "api/envoy/api/v2/route/route_components.proto",
"chars": 76227,
"preview": "syntax = \"proto3\";\n\npackage envoy.api.v2.route;\n\nimport \"envoy/api/v2/core/base.proto\";\nimport \"envoy/type/matcher/regex"
},
{
"path": "api/envoy/api/v2/route.proto",
"chars": 5581,
"preview": "syntax = \"proto3\";\n\npackage envoy.api.v2;\n\nimport \"envoy/api/v2/core/base.proto\";\nimport \"envoy/api/v2/core/config_sourc"
},
{
"path": "api/envoy/api/v2/scoped_route.proto",
"chars": 3787,
"preview": "syntax = \"proto3\";\n\npackage envoy.api.v2;\n\nimport \"udpa/annotations/migrate.proto\";\nimport \"udpa/annotations/status.prot"
},
{
"path": "api/envoy/api/v2/srds.proto",
"chars": 1873,
"preview": "syntax = \"proto3\";\n\npackage envoy.api.v2;\n\nimport \"envoy/api/v2/discovery.proto\";\n\nimport \"google/api/annotations.proto\""
},
{
"path": "api/envoy/config/README.md",
"chars": 173,
"preview": "Protocol buffer definitions for Envoy's bootstrap, filter, and service configuration.\n\nVisibility should be constrained "
},
{
"path": "api/envoy/config/accesslog/v2/BUILD",
"chars": 310,
"preview": "# DO NOT EDIT. This file is generated by tools/proto_format/proto_sync.py.\n\nload(\"@envoy_api//bazel:api_build_system.bzl"
},
{
"path": "api/envoy/config/accesslog/v2/als.proto",
"chars": 3688,
"preview": "syntax = \"proto3\";\n\npackage envoy.config.accesslog.v2;\n\nimport \"envoy/api/v2/core/grpc_service.proto\";\n\nimport \"google/p"
},
{
"path": "api/envoy/config/accesslog/v2/file.proto",
"chars": 1841,
"preview": "syntax = \"proto3\";\n\npackage envoy.config.accesslog.v2;\n\nimport \"google/protobuf/struct.proto\";\n\nimport \"udpa/annotations"
},
{
"path": "api/envoy/config/accesslog/v3/BUILD",
"chars": 472,
"preview": "# DO NOT EDIT. This file is generated by tools/proto_format/proto_sync.py.\n\nload(\"@envoy_api//bazel:api_build_system.bzl"
},
{
"path": "api/envoy/config/accesslog/v3/accesslog.proto",
"chars": 11116,
"preview": "syntax = \"proto3\";\n\npackage envoy.config.accesslog.v3;\n\nimport \"envoy/config/core/v3/base.proto\";\nimport \"envoy/config/r"
},
{
"path": "api/envoy/config/accesslog/v4alpha/BUILD",
"chars": 480,
"preview": "# DO NOT EDIT. This file is generated by tools/proto_format/proto_sync.py.\n\nload(\"@envoy_api//bazel:api_build_system.bzl"
},
{
"path": "api/envoy/config/accesslog/v4alpha/accesslog.proto",
"chars": 11082,
"preview": "syntax = \"proto3\";\n\npackage envoy.config.accesslog.v4alpha;\n\nimport \"envoy/config/core/v4alpha/base.proto\";\nimport \"envo"
},
{
"path": "api/envoy/config/bootstrap/v2/BUILD",
"chars": 537,
"preview": "# DO NOT EDIT. This file is generated by tools/proto_format/proto_sync.py.\n\nload(\"@envoy_api//bazel:api_build_system.bzl"
},
{
"path": "api/envoy/config/bootstrap/v2/bootstrap.proto",
"chars": 15392,
"preview": "syntax = \"proto3\";\n\npackage envoy.config.bootstrap.v2;\n\nimport \"envoy/api/v2/auth/secret.proto\";\nimport \"envoy/api/v2/cl"
},
{
"path": "api/envoy/config/bootstrap/v3/BUILD",
"chars": 737,
"preview": "# DO NOT EDIT. This file is generated by tools/proto_format/proto_sync.py.\n\nload(\"@envoy_api//bazel:api_build_system.bzl"
},
{
"path": "api/envoy/config/bootstrap/v3/bootstrap.proto",
"chars": 23696,
"preview": "syntax = \"proto3\";\n\npackage envoy.config.bootstrap.v3;\n\nimport \"envoy/config/cluster/v3/cluster.proto\";\nimport \"envoy/co"
},
{
"path": "api/envoy/config/bootstrap/v4alpha/BUILD",
"chars": 723,
"preview": "# DO NOT EDIT. This file is generated by tools/proto_format/proto_sync.py.\n\nload(\"@envoy_api//bazel:api_build_system.bzl"
},
{
"path": "api/envoy/config/bootstrap/v4alpha/bootstrap.proto",
"chars": 23483,
"preview": "syntax = \"proto3\";\n\npackage envoy.config.bootstrap.v4alpha;\n\nimport \"envoy/config/cluster/v4alpha/cluster.proto\";\nimport"
},
{
"path": "api/envoy/config/cluster/aggregate/v2alpha/BUILD",
"chars": 260,
"preview": "# DO NOT EDIT. This file is generated by tools/proto_format/proto_sync.py.\n\nload(\"@envoy_api//bazel:api_build_system.bzl"
},
{
"path": "api/envoy/config/cluster/aggregate/v2alpha/cluster.proto",
"chars": 981,
"preview": "syntax = \"proto3\";\n\npackage envoy.config.cluster.aggregate.v2alpha;\n\nimport \"udpa/annotations/migrate.proto\";\nimport \"ud"
},
{
"path": "api/envoy/config/cluster/dynamic_forward_proxy/v2alpha/BUILD",
"chars": 342,
"preview": "# DO NOT EDIT. This file is generated by tools/proto_format/proto_sync.py.\n\nload(\"@envoy_api//bazel:api_build_system.bzl"
},
{
"path": "api/envoy/config/cluster/dynamic_forward_proxy/v2alpha/cluster.proto",
"chars": 1351,
"preview": "syntax = \"proto3\";\n\npackage envoy.config.cluster.dynamic_forward_proxy.v2alpha;\n\nimport \"envoy/config/common/dynamic_for"
},
{
"path": "api/envoy/config/cluster/redis/BUILD",
"chars": 260,
"preview": "# DO NOT EDIT. This file is generated by tools/proto_format/proto_sync.py.\n\nload(\"@envoy_api//bazel:api_build_system.bzl"
},
{
"path": "api/envoy/config/cluster/redis/redis_cluster.proto",
"chars": 3651,
"preview": "syntax = \"proto3\";\n\npackage envoy.config.cluster.redis;\n\nimport \"google/protobuf/duration.proto\";\nimport \"google/protobu"
},
{
"path": "api/envoy/config/cluster/v3/BUILD",
"chars": 540,
"preview": "# DO NOT EDIT. This file is generated by tools/proto_format/proto_sync.py.\n\nload(\"@envoy_api//bazel:api_build_system.bzl"
},
{
"path": "api/envoy/config/cluster/v3/circuit_breaker.proto",
"chars": 4498,
"preview": "syntax = \"proto3\";\n\npackage envoy.config.cluster.v3;\n\nimport \"envoy/config/core/v3/base.proto\";\nimport \"envoy/type/v3/pe"
},
{
"path": "api/envoy/config/cluster/v3/cluster.proto",
"chars": 55569,
"preview": "syntax = \"proto3\";\n\npackage envoy.config.cluster.v3;\n\nimport \"envoy/config/cluster/v3/circuit_breaker.proto\";\nimport \"en"
},
{
"path": "api/envoy/config/cluster/v3/filter.proto",
"chars": 1018,
"preview": "syntax = \"proto3\";\n\npackage envoy.config.cluster.v3;\n\nimport \"google/protobuf/any.proto\";\n\nimport \"udpa/annotations/stat"
},
{
"path": "api/envoy/config/cluster/v3/outlier_detection.proto",
"chars": 8315,
"preview": "syntax = \"proto3\";\n\npackage envoy.config.cluster.v3;\n\nimport \"google/protobuf/duration.proto\";\nimport \"google/protobuf/w"
},
{
"path": "api/envoy/config/cluster/v4alpha/BUILD",
"chars": 518,
"preview": "# DO NOT EDIT. This file is generated by tools/proto_format/proto_sync.py.\n\nload(\"@envoy_api//bazel:api_build_system.bzl"
},
{
"path": "api/envoy/config/cluster/v4alpha/circuit_breaker.proto",
"chars": 4574,
"preview": "syntax = \"proto3\";\n\npackage envoy.config.cluster.v4alpha;\n\nimport \"envoy/config/core/v4alpha/base.proto\";\nimport \"envoy/"
},
{
"path": "api/envoy/config/cluster/v4alpha/cluster.proto",
"chars": 55822,
"preview": "syntax = \"proto3\";\n\npackage envoy.config.cluster.v4alpha;\n\nimport \"envoy/config/cluster/v4alpha/circuit_breaker.proto\";\n"
},
{
"path": "api/envoy/config/cluster/v4alpha/filter.proto",
"chars": 1053,
"preview": "syntax = \"proto3\";\n\npackage envoy.config.cluster.v4alpha;\n\nimport \"google/protobuf/any.proto\";\n\nimport \"udpa/annotations"
},
{
"path": "api/envoy/config/cluster/v4alpha/outlier_detection.proto",
"chars": 8380,
"preview": "syntax = \"proto3\";\n\npackage envoy.config.cluster.v4alpha;\n\nimport \"google/protobuf/duration.proto\";\nimport \"google/proto"
},
{
"path": "api/envoy/config/common/dynamic_forward_proxy/v2alpha/BUILD",
"chars": 305,
"preview": "# DO NOT EDIT. This file is generated by tools/proto_format/proto_sync.py.\n\nload(\"@envoy_api//bazel:api_build_system.bzl"
},
{
"path": "api/envoy/config/common/dynamic_forward_proxy/v2alpha/dns_cache.proto",
"chars": 3910,
"preview": "syntax = \"proto3\";\n\npackage envoy.config.common.dynamic_forward_proxy.v2alpha;\n\nimport \"envoy/api/v2/cluster.proto\";\n\nim"
},
{
"path": "api/envoy/config/common/matcher/v3/BUILD",
"chars": 314,
"preview": "# DO NOT EDIT. This file is generated by tools/proto_format/proto_sync.py.\n\nload(\"@envoy_api//bazel:api_build_system.bzl"
},
{
"path": "api/envoy/config/common/matcher/v3/matcher.proto",
"chars": 3630,
"preview": "syntax = \"proto3\";\n\npackage envoy.config.common.matcher.v3;\n\nimport \"envoy/config/route/v3/route_components.proto\";\n\nimp"
},
{
"path": "api/envoy/config/common/matcher/v4alpha/BUILD",
"chars": 367,
"preview": "# DO NOT EDIT. This file is generated by tools/proto_format/proto_sync.py.\n\nload(\"@envoy_api//bazel:api_build_system.bzl"
},
{
"path": "api/envoy/config/common/matcher/v4alpha/matcher.proto",
"chars": 4274,
"preview": "syntax = \"proto3\";\n\npackage envoy.config.common.matcher.v4alpha;\n\nimport \"envoy/config/route/v4alpha/route_components.pr"
},
{
"path": "api/envoy/config/common/tap/v2alpha/BUILD",
"chars": 353,
"preview": "# DO NOT EDIT. This file is generated by tools/proto_format/proto_sync.py.\n\nload(\"@envoy_api//bazel:api_build_system.bzl"
},
{
"path": "api/envoy/config/common/tap/v2alpha/common.proto",
"chars": 1931,
"preview": "syntax = \"proto3\";\n\npackage envoy.config.common.tap.v2alpha;\n\nimport \"envoy/api/v2/core/config_source.proto\";\nimport \"en"
},
{
"path": "api/envoy/config/core/v3/BUILD",
"chars": 466,
"preview": "# DO NOT EDIT. This file is generated by tools/proto_format/proto_sync.py.\n\nload(\"@envoy_api//bazel:api_build_system.bzl"
},
{
"path": "api/envoy/config/core/v3/address.proto",
"chars": 6808,
"preview": "syntax = \"proto3\";\n\npackage envoy.config.core.v3;\n\nimport \"envoy/config/core/v3/socket_option.proto\";\n\nimport \"google/pr"
},
{
"path": "api/envoy/config/core/v3/backoff.proto",
"chars": 1438,
"preview": "syntax = \"proto3\";\n\npackage envoy.config.core.v3;\n\nimport \"google/protobuf/duration.proto\";\n\nimport \"udpa/annotations/st"
},
{
"path": "api/envoy/config/core/v3/base.proto",
"chars": 17111,
"preview": "syntax = \"proto3\";\n\npackage envoy.config.core.v3;\n\nimport \"envoy/config/core/v3/address.proto\";\nimport \"envoy/config/cor"
},
{
"path": "api/envoy/config/core/v3/config_source.proto",
"chars": 9429,
"preview": "syntax = \"proto3\";\n\npackage envoy.config.core.v3;\n\nimport \"envoy/config/core/v3/grpc_service.proto\";\n\nimport \"google/pro"
},
{
"path": "api/envoy/config/core/v3/event_service_config.proto",
"chars": 858,
"preview": "syntax = \"proto3\";\n\npackage envoy.config.core.v3;\n\nimport \"envoy/config/core/v3/grpc_service.proto\";\n\nimport \"udpa/annot"
},
{
"path": "api/envoy/config/core/v3/extension.proto",
"chars": 2914,
"preview": "syntax = \"proto3\";\n\npackage envoy.config.core.v3;\n\nimport \"envoy/config/core/v3/config_source.proto\";\n\nimport \"google/pr"
},
{
"path": "api/envoy/config/core/v3/grpc_method_list.proto",
"chars": 1044,
"preview": "syntax = \"proto3\";\n\npackage envoy.config.core.v3;\n\nimport \"udpa/annotations/status.proto\";\nimport \"udpa/annotations/vers"
},
{
"path": "api/envoy/config/core/v3/grpc_service.proto",
"chars": 11387,
"preview": "syntax = \"proto3\";\n\npackage envoy.config.core.v3;\n\nimport \"envoy/config/core/v3/base.proto\";\n\nimport \"google/protobuf/an"
},
{
"path": "api/envoy/config/core/v3/health_check.proto",
"chars": 15579,
"preview": "syntax = \"proto3\";\n\npackage envoy.config.core.v3;\n\nimport \"envoy/config/core/v3/base.proto\";\nimport \"envoy/config/core/v"
},
{
"path": "api/envoy/config/core/v3/http_uri.proto",
"chars": 1681,
"preview": "syntax = \"proto3\";\n\npackage envoy.config.core.v3;\n\nimport \"google/protobuf/duration.proto\";\n\nimport \"udpa/annotations/st"
},
{
"path": "api/envoy/config/core/v3/protocol.proto",
"chars": 19206,
"preview": "syntax = \"proto3\";\n\npackage envoy.config.core.v3;\n\nimport \"envoy/type/v3/percent.proto\";\n\nimport \"google/protobuf/durati"
},
{
"path": "api/envoy/config/core/v3/proxy_protocol.proto",
"chars": 705,
"preview": "syntax = \"proto3\";\n\npackage envoy.config.core.v3;\n\nimport \"udpa/annotations/status.proto\";\nimport \"validate/validate.pro"
},
{
"path": "api/envoy/config/core/v3/socket_option.proto",
"chars": 1798,
"preview": "syntax = \"proto3\";\n\npackage envoy.config.core.v3;\n\nimport \"udpa/annotations/status.proto\";\nimport \"udpa/annotations/vers"
},
{
"path": "api/envoy/config/core/v3/substitution_format_string.proto",
"chars": 2984,
"preview": "syntax = \"proto3\";\n\npackage envoy.config.core.v3;\n\nimport \"google/protobuf/struct.proto\";\n\nimport \"udpa/annotations/stat"
},
{
"path": "api/envoy/config/core/v4alpha/BUILD",
"chars": 474,
"preview": "# DO NOT EDIT. This file is generated by tools/proto_format/proto_sync.py.\n\nload(\"@envoy_api//bazel:api_build_system.bzl"
},
{
"path": "api/envoy/config/core/v4alpha/address.proto",
"chars": 7013,
"preview": "syntax = \"proto3\";\n\npackage envoy.config.core.v4alpha;\n\nimport \"envoy/config/core/v4alpha/socket_option.proto\";\n\nimport "
},
{
"path": "api/envoy/config/core/v4alpha/backoff.proto",
"chars": 1494,
"preview": "syntax = \"proto3\";\n\npackage envoy.config.core.v4alpha;\n\nimport \"google/protobuf/duration.proto\";\n\nimport \"udpa/annotatio"
}
]
// ... and 7186 more files (download for full content)
About this extraction
This page contains the full source code of the envoyproxy/envoy-wasm GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 7386 files (35.1 MB), approximately 9.6M tokens, and a symbol index with 23800 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.
Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.