From 333f835fb2da2fd66b3e4e668cc2d38d6049016c Mon Sep 17 00:00:00 2001 From: soloio-bot Date: Wed, 13 Nov 2024 13:00:25 +0000 Subject: [PATCH] Sync Gloo APIs. Destination Branch: gloo-main --- .../envoy/annotations/deprecation.proto | 2 +- .../envoy/api/v2/core/health_check.proto | 19 +- .../external/envoy/api/v2/route/route.proto | 24 +- .../mutation_rules/v3/mutation_rules.proto | 32 +- .../envoy/config/core/v3/address.proto | 19 +- .../external/envoy/config/core/v3/base.proto | 47 +- .../envoy/config/core/v3/grpc_service.proto | 16 +- .../envoy/config/core/v3/health_check.proto | 35 +- .../envoy/config/core/v3/http_uri.proto | 3 +- .../envoy/config/core/v3/proxy_protocol.proto | 3 +- .../config/route/v3/route_components.proto | 154 +++--- .../envoy/config/trace/v3/datadog.proto | 2 +- .../envoy/config/trace/v3/zipkin.proto | 2 +- .../filters/http/buffer/v3/buffer.proto | 2 +- .../filters/http/csrf/v3/csrf.proto | 12 +- .../filters/http/jwt_authn/v3/config.proto | 24 +- .../filters/http/wasm/v3/wasm.proto | 2 +- .../transformation/transformation.proto | 20 +- .../ext_proc/v3/external_processor.proto | 80 +-- .../envoy/type/matcher/v3/regex.proto | 9 +- .../envoy/type/metadata/v3/metadata.proto | 4 +- .../envoy/type/tracing/v3/custom_tag.proto | 6 +- api/gloo/gloo/external/xds/core/v3/cidr.proto | 4 +- .../xds/data/orca/v3/orca_load_report.proto | 2 +- .../external/xds/type/matcher/v3/domain.proto | 12 +- .../xds/type/matcher/v3/http_inputs.proto | 5 +- .../external/xds/type/matcher/v3/ip.proto | 4 +- .../external/xds/type/matcher/v3/regex.proto | 5 +- api/gloo/gloo/v1/core/matchers/matchers.proto | 5 +- .../enterprise/options/extproc/extproc.proto | 8 +- api/gloo/gloo/v1/failover.proto | 9 +- api/gloo/gloo/v1/listener_options.proto | 6 +- api/gloo/gloo/v1/load_balancer.proto | 4 +- api/gloo/gloo/v1/options/als/als.proto | 6 +- .../dynamic_forward_proxy.proto | 16 +- .../gloo/v1/options/grpc_json/grpc_json.proto | 45 +- api/gloo/gloo/v1/options/hcm/hcm.proto | 4 + .../gloo/v1/options/headers/headers.proto | 17 + .../gloo/v1/options/protocol/protocol.proto | 9 +- .../proxy_protocol/proxy_protocol.proto | 5 +- .../transformation/transformation.proto | 31 +- api/gloo/gloo/v1/proxy.proto | 24 +- api/gloo/gloo/v1/upstream.proto | 6 +- api/gloo/graphql.gloo/v1beta1/graphql.proto | 4 +- .../envoy/api/v2/core/health_check.pb.go | 19 +- .../external/envoy/api/v2/route/route.pb.go | 24 +- .../mutation_rules/v3/mutation_rules.pb.go | 32 +- .../envoy/config/core/v3/address.pb.go | 19 +- .../external/envoy/config/core/v3/base.pb.go | 47 +- .../envoy/config/core/v3/grpc_service.pb.go | 16 +- .../envoy/config/core/v3/health_check.pb.go | 31 +- .../envoy/config/core/v3/http_uri.pb.go | 3 +- .../envoy/config/core/v3/proxy_protocol.pb.go | 3 +- .../config/route/v3/route_components.pb.go | 154 +++--- .../envoy/config/trace/v3/datadog.pb.go | 2 +- .../envoy/config/trace/v3/zipkin.pb.go | 2 +- .../filters/http/csrf/v3/csrf.pb.go | 10 +- .../filters/http/jwt_authn/v3/config.pb.go | 22 +- .../transformation/transformation.pb.clone.go | 23 + .../transformation/transformation.pb.equal.go | 44 ++ .../transformation/transformation.pb.go | 318 +++++++----- .../transformation/transformation.pb.hash.go | 56 ++ .../ext_proc/v3/external_processor.pb.go | 80 +-- .../envoy/type/matcher/v3/regex.pb.go | 9 +- .../envoy/type/metadata/v3/metadata.pb.go | 4 +- .../envoy/type/tracing/v3/custom_tag.pb.go | 6 +- .../v1/core/matchers/matchers.pb.go | 5 +- .../enterprise/options/extproc/extproc.pb.go | 8 +- pkg/api/gloo.solo.io/v1/failover.pb.go | 9 +- .../v1/listener_options.pb.clone.go | 6 + .../v1/listener_options.pb.equal.go | 10 + .../gloo.solo.io/v1/listener_options.pb.go | 59 ++- .../v1/listener_options.pb.hash.go | 20 + pkg/api/gloo.solo.io/v1/load_balancer.pb.go | 4 +- pkg/api/gloo.solo.io/v1/options/als/als.pb.go | 6 +- .../dynamic_forward_proxy.pb.go | 16 +- .../v1/options/grpc_json/grpc_json.pb.go | 43 +- .../v1/options/hcm/hcm.pb.clone.go | 8 + .../v1/options/hcm/hcm.pb.equal.go | 10 + pkg/api/gloo.solo.io/v1/options/hcm/hcm.pb.go | 490 +++++++++--------- .../v1/options/hcm/hcm.pb.hash.go | 20 + .../v1/options/headers/headers.pb.clone.go | 33 ++ .../v1/options/headers/headers.pb.equal.go | 52 ++ .../v1/options/headers/headers.pb.go | 172 ++++-- .../v1/options/headers/headers.pb.hash.go | 48 ++ .../v1/options/protocol/protocol.pb.go | 9 +- .../proxy_protocol/proxy_protocol.pb.go | 5 +- .../transformation/transformation.pb.clone.go | 23 + .../transformation/transformation.pb.equal.go | 44 ++ .../transformation/transformation.pb.go | 310 +++++++---- .../transformation/transformation.pb.hash.go | 56 ++ pkg/api/gloo.solo.io/v1/proxy.pb.go | 24 +- pkg/api/gloo.solo.io/v1/upstream.pb.go | 6 +- .../v1beta1/graphql.pb.go | 4 +- 94 files changed, 1974 insertions(+), 1198 deletions(-) diff --git a/api/gloo/gloo/external/envoy/annotations/deprecation.proto b/api/gloo/gloo/external/envoy/annotations/deprecation.proto index eeb0c45bd..44c8223ee 100644 --- a/api/gloo/gloo/external/envoy/annotations/deprecation.proto +++ b/api/gloo/gloo/external/envoy/annotations/deprecation.proto @@ -7,7 +7,7 @@ import "google/protobuf/descriptor.proto"; // [#protodoc-title: Deprecation] // Allows tagging proto fields as fatal by default. One Envoy release after // deprecation, deprecated fields will be disallowed by default, a state which -// is reversible with :ref:`runtime overrides `. +// is reversible with runtime overrides. // Magic number in this file derived from top 28bit of SHA256 digest of // "solo.io.envoy.annotation.disallowed_by_default" diff --git a/api/gloo/gloo/external/envoy/api/v2/core/health_check.proto b/api/gloo/gloo/external/envoy/api/v2/core/health_check.proto index e43213857..1fa113035 100644 --- a/api/gloo/gloo/external/envoy/api/v2/core/health_check.proto +++ b/api/gloo/gloo/external/envoy/api/v2/core/health_check.proto @@ -142,7 +142,7 @@ message HealthCheck { // HTTP Method that will be used for health checking, default is "GET". // GET, HEAD, POST, PUT, DELETE, OPTIONS, TRACE, PATCH methods are supported, but making request body is not supported. // CONNECT method is disallowed because it is not appropriate for health check request. - // If a non-200 response is expected by the method, it needs to be set in :ref:`expected_statuses `. + // If a non-200 response is expected by the method, it needs to be set in expected_statuses. solo.io.envoy.config.core.v3.RequestMethod method = 11; } @@ -157,23 +157,20 @@ message HealthCheck { } message RedisHealthCheck { - // If set, optionally perform ``EXISTS `` instead of ``PING``. A return value + // If set, optionally perform `EXISTS ` instead of `PING`. A return value // from Redis of 0 (does not exist) is considered a passing healthcheck. A return value other // than 0 is considered a failure. This allows the user to mark a Redis instance for maintenance // by setting the specified key to any value and waiting for traffic to drain. string key = 1; } - // `grpc.health.v1.Health - // `_-based - // healthcheck. See `gRPC doc `_ + // [grpc.health.v1.Health](https://github.com/grpc/grpc/blob/master/src/proto/grpc/health/v1/health.proto)-based + // healthcheck. See [gRPC doc](https://github.com/grpc/grpc/blob/master/doc/health-checking.md) // for details. message GrpcHealthCheck { // An optional service name parameter which will be sent to gRPC service in - // `grpc.health.v1.HealthCheckRequest - // `_. - // message. See `gRPC health-checking overview - // `_ for more information. + // [grpc.health.v1.HealthCheckRequest](https://github.com/grpc/grpc/blob/master/src/proto/grpc/health/v1/health.proto#L20) + // message. See [gRPC health-checking overview](https://github.com/grpc/grpc/blob/master/doc/health-checking.md) for more information. string service_name = 1; // The value of the :authority header in the gRPC health check request. If @@ -277,9 +274,9 @@ enum HealthStatus { UNHEALTHY = 2; // Connection draining in progress. E.g., - // ``_ + // https://aws.amazon.com/blogs/aws/elb-connection-draining-remove-instances-from-service-with-care/ // or - // ``_. + // https://cloud.google.com/compute/docs/load-balancing/enabling-connection-draining. // This is interpreted by Envoy as *UNHEALTHY*. DRAINING = 3; diff --git a/api/gloo/gloo/external/envoy/api/v2/route/route.proto b/api/gloo/gloo/external/envoy/api/v2/route/route.proto index d02def16d..5bbc20dc8 100644 --- a/api/gloo/gloo/external/envoy/api/v2/route/route.proto +++ b/api/gloo/gloo/external/envoy/api/v2/route/route.proto @@ -41,16 +41,16 @@ message VirtualHost { // virtual host. Wildcard hosts are supported in the suffix or prefix form. // // Domain search order: - // 1. Exact domain names: ``www.foo.com``. - // 2. Suffix domain wildcards: ``*.foo.com`` or ``*-bar.foo.com``. - // 3. Prefix domain wildcards: ``foo.*`` or ``foo-*``. - // 4. Special wildcard ``*`` matching any domain. + // 1. Exact domain names: `www.foo.com`. + // 2. Suffix domain wildcards: `*.foo.com` or `*-bar.foo.com`. + // 3. Prefix domain wildcards: `foo.*` or `foo-*`. + // 4. Special wildcard `*` matching any domain. // // // The wildcard will not match the empty string. - // e.g. ``*-bar.foo.com`` will match ``baz-bar.foo.com`` but not ``-bar.foo.com``. + // e.g. `*-bar.foo.com` will match `baz-bar.foo.com` but not `-bar.foo.com`. // The longest wildcards match first. - // Only a single virtual host in the entire route configuration can match on ``*``. A domain + // Only a single virtual host in the entire route configuration can match on `*`. A domain // must be unique across all virtual hosts or the config will fail to load. repeated string domains = 2 [(validate.rules).repeated.min_items = 1]; @@ -338,8 +338,7 @@ message RouteMatch { // If specified, the route is a regular expression rule meaning that the // regex must match the *:path* header once the query string is removed. The entire path // (without the query string) must match the regex. The rule will not match if only a - // subsequence of the *:path* header matches the regex. The regex grammar is defined `here - // `_. + // subsequence of the *:path* header matches the regex. The regex grammar is defined [here](https://en.cppreference.com/w/cpp/regex/ecmascript). // // Examples: // @@ -762,7 +761,7 @@ message RouteAction { reserved 21; // If present, and the request is a gRPC request, use the - // `grpc-timeout header `_, + // [grpc-timeout header](https://github.com/grpc/grpc/blob/master/doc/PROTOCOL-HTTP2.md), // or its default value (infinity) instead of // `timeout (envoy_api_field_route.RouteAction.timeout)`, but limit the applied timeout // to the maximum value specified here. If configured as 0, the maximum allowed timeout for @@ -1053,8 +1052,7 @@ message Tracing { // statistics output are not free. message VirtualCluster { // Specifies a regex pattern to use for matching requests. The entire path of the request - // must match the regex. The regex grammar used is defined `here - // `_. + // must match the regex. The regex grammar used is defined [here](https://en.cppreference.com/w/cpp/regex/ecmascript). // // Examples: // @@ -1094,7 +1092,7 @@ message RateLimit { // ("source_cluster", "") // ``` // - // is derived from the :option:`--service-cluster` option. + // is derived from the `--service-cluster` option. message SourceCluster { } @@ -1245,7 +1243,7 @@ message HeaderMatcher { // If specified, this regex string is a regular expression rule which implies the entire request // header value must match the regex. The rule will not match if only a subsequence of the // request header value matches the regex. The regex grammar used in the value field is defined - // `here `_. + // [here](https://en.cppreference.com/w/cpp/regex/ecmascript). // // Examples: // diff --git a/api/gloo/gloo/external/envoy/config/common/mutation_rules/v3/mutation_rules.proto b/api/gloo/gloo/external/envoy/config/common/mutation_rules/v3/mutation_rules.proto index f9c4e5440..f82984483 100644 --- a/api/gloo/gloo/external/envoy/config/common/mutation_rules/v3/mutation_rules.proto +++ b/api/gloo/gloo/external/envoy/config/common/mutation_rules/v3/mutation_rules.proto @@ -40,51 +40,51 @@ option (extproto.clone_all) = true; // denoted by an x-envoy prefix) or specific headers that may affect // further filter processing: // -// * ``host`` -// * ``:authority`` -// * ``:scheme`` -// * ``:method`` +// * `host` +// * `:authority` +// * `:scheme` +// * `:method` // // Every attempt to add, change, append, or remove a header will be // tested against the rules here. Disallowed header mutations will be -// ignored unless ``disallow_is_error`` is set to true. +// ignored unless `disallow_is_error` is set to true. // // Attempts to remove headers are further constrained -- regardless of the -// settings, system-defined headers (that start with ``:``) and the ``host`` +// settings, system-defined headers (that start with `:`) and the `host` // header may never be removed. // // In addition, a counter will be incremented whenever a mutation is // rejected. In the ext_proc filter, that counter is named -// ``rejected_header_mutations``. +// `rejected_header_mutations`. // [#next-free-field: 8] message HeaderMutationRules { // By default, certain headers that could affect processing of subsequent // filters or request routing cannot be modified. These headers are - // ``host``, ``:authority``, ``:scheme``, and ``:method``. Setting this parameter + // `host`, `:authority`, `:scheme`, and `:method`. Setting this parameter // to true allows these headers to be modified as well. google.protobuf.BoolValue allow_all_routing = 1; // If true, allow modification of envoy internal headers. By default, these - // start with ``x-envoy`` but this may be overridden in the ``Bootstrap`` + // start with `x-envoy` but this may be overridden in the `Bootstrap` // configuration using the // :ref:`header_prefix ` // field. Default is false. google.protobuf.BoolValue allow_envoy = 2; // If true, prevent modification of any system header, defined as a header - // that starts with a ``:`` character, regardless of any other settings. - // A processing server may still override the ``:status`` of an HTTP response - // using an ``ImmediateResponse`` message. Default is false. + // that starts with a `:` character, regardless of any other settings. + // A processing server may still override the `:status` of an HTTP response + // using an `ImmediateResponse` message. Default is false. google.protobuf.BoolValue disallow_system = 3; // If true, prevent modifications of all header values, regardless of any - // other settings. A processing server may still override the ``:status`` - // of an HTTP response using an ``ImmediateResponse`` message. Default is false. + // other settings. A processing server may still override the `:status` + // of an HTTP response using an `ImmediateResponse` message. Default is false. google.protobuf.BoolValue disallow_all = 4; // If set, specifically allow any header that matches this regular // expression. This overrides all other settings except for - // ``disallow_expression``. + // `disallow_expression`. solo.io.envoy.type.matcher.v3.RegexMatcher allow_expression = 5; // If set, specifically disallow any header that matches this regular @@ -95,7 +95,7 @@ message HeaderMutationRules { // disallowed, then the filter using this configuration will terminate the // request with a 500 error. In addition, regardless of the setting of this // parameter, any attempt to set, add, or modify a disallowed header will - // cause the ``rejected_header_mutations`` counter to be incremented. + // cause the `rejected_header_mutations` counter to be incremented. // Default is false. google.protobuf.BoolValue disallow_is_error = 7; } diff --git a/api/gloo/gloo/external/envoy/config/core/v3/address.proto b/api/gloo/gloo/external/envoy/config/core/v3/address.proto index a2bea2553..e09b73ed4 100644 --- a/api/gloo/gloo/external/envoy/config/core/v3/address.proto +++ b/api/gloo/gloo/external/envoy/config/core/v3/address.proto @@ -41,17 +41,17 @@ message SocketAddress { Protocol protocol = 1 [(validate.rules).enum = {defined_only: true}]; - // The address for this socket. :ref:`Listeners ` will bind - // to the address. An empty address is not allowed. Specify ``0.0.0.0`` or ``::`` + // The address for this socket. Listeners will bind + // to the address. An empty address is not allowed. Specify `0.0.0.0` or `::` // to bind to any address. [#comment:TODO(zuercher) reinstate when implemented: // It is possible to distinguish a Listener address via the prefix/suffix matching - // in :ref:`FilterChainMatch `.] When used - // within an upstream :ref:`BindConfig `, the address + // in FilterChainMatch.] When used + // within an upstream BindConfig, the address // controls the source address of outbound connections. For :ref:`clusters // `, the cluster type determines whether the // address must be an IP (*STATIC* or *EDS* clusters) or a hostname resolved by DNS // (*STRICT_DNS* or *LOGICAL_DNS* clusters). Address resolution can be customized - // via :ref:`resolver_name `. + // via resolver_name. string address = 2 [(validate.rules).string = {min_bytes: 1}]; oneof port_specifier { @@ -72,10 +72,9 @@ message SocketAddress { // *STRICT_DNS* or *LOGICAL_DNS* will generate an error at runtime. string resolver_name = 5; - // When binding to an IPv6 address above, this enables `IPv4 compatibility - // `_. Binding to ``::`` will + // When binding to an IPv6 address above, this enables [IPv4 compatibility](https://datatracker.ietf.org/doc/html/rfc3493#page-11). Binding to `::` will // allow both IPv4 and IPv6 connections, with peer IPv4 addresses mapped into - // IPv6 space as ``::FFFF:``. + // IPv6 space as `::FFFF:`. bool ipv4_compat = 6; } @@ -133,11 +132,11 @@ message Address { } // CidrRange specifies an IP Address and a prefix length to construct -// the subnet mask for a `CIDR `_ range. +// the subnet mask for a [CIDR](https://datatracker.ietf.org/doc/html/rfc4632) range. message CidrRange { option (solo.io.udpa.annotations.versioning).previous_message_type = "solo.io.envoy.api.v2.core.CidrRange"; - // IPv4 or IPv6 address, e.g. ``192.0.0.0`` or ``2001:db8::``. + // IPv4 or IPv6 address, e.g. `192.0.0.0` or `2001:db8::`. string address_prefix = 1 [(validate.rules).string = {min_bytes: 1}]; // Length of prefix, e.g. 0, 32. diff --git a/api/gloo/gloo/external/envoy/config/core/v3/base.proto b/api/gloo/gloo/external/envoy/config/core/v3/base.proto index 76ee2f7ea..c46db30a3 100644 --- a/api/gloo/gloo/external/envoy/config/core/v3/base.proto +++ b/api/gloo/gloo/external/envoy/config/core/v3/base.proto @@ -67,16 +67,15 @@ enum TrafficDirection { message Locality { option (solo.io.udpa.annotations.versioning).previous_message_type = ".solo.io.envoy.api.v2.core.Locality"; - // Region this :ref:`zone ` belongs to. + // Region this zone belongs to. string region = 1; // Defines the local service zone where Envoy is running. Though optional, it // should be set if discovery service routing is used and the discovery - // service exposes :ref:`zone data `, - // either in this message or via :option:`--service-zone`. The meaning of zone - // is context dependent, e.g. `Availability Zone (AZ) - // `_ - // on AWS, `Zone `_ on + // service exposes zone data, + // either in this message or via `--service-zone`. The meaning of zone + // is context dependent, e.g. [Availability Zone (AZ)](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-regions-availability-zones.html) + // on AWS, [Zone](https://cloud.google.com/compute/docs/regions-zones/) on // GCP, etc. string zone = 2; @@ -142,24 +141,24 @@ message Node { // An opaque node identifier for the Envoy node. This also provides the local // service node name. It should be set if any of the following features are - // used: :ref:`statsd `, :ref:`CDS + // used: statsd, :ref:`CDS // `, and :ref:`HTTP tracing // `, either in this message or via - // :option:`--service-node`. + // `--service-node`. string id = 1; // Defines the local service cluster name where Envoy is running. Though // optional, it should be set if any of the following features are used: - // :ref:`statsd `, :ref:`health check cluster + // statsd, :ref:`health check cluster // verification // `, - // :ref:`runtime override directory `, + // runtime override directory, // :ref:`user agent addition // `, - // :ref:`HTTP global rate limiting `, - // :ref:`CDS `, and :ref:`HTTP tracing + // HTTP global rate limiting, + // CDS, and :ref:`HTTP tracing // `, either in this message or via - // :option:`--service-cluster`. + // `--service-cluster`. string cluster = 2; // Opaque metadata extending the node identifier. Envoy will pass this @@ -188,12 +187,12 @@ message Node { // Client feature support list. These are well known features described // in the Envoy API repository for a given major version of an API. Client features // use reverse DNS naming scheme, for example `com.acme.feature`. - // See :ref:`the list of features ` that xDS client may + // See the list of features that xDS client may // support. repeated string client_features = 10; // Known listening ports on the node as a generic hint to the management server - // for filtering :ref:`listeners ` to be returned. For example, + // for filtering listeners to be returned. For example, // if there is a listener bound to port 80, the list can optionally contain the // SocketAddress `(0.0.0.0,80)`. The field is optional and just a hint. repeated Address listening_addresses = 11; @@ -217,7 +216,7 @@ message Node { // object to match against. There are some well defined metadata used today for // this purpose: // -// * ``{"envoy.lb": {"canary": }}`` This indicates the canary status of an +// * `{"envoy.lb": {"canary": }}` This indicates the canary status of an // endpoint and is also used during header processing // (x-envoy-upstream-canary) and for stats purposes. // [#next-major-version: move to type/metadata/v2] @@ -261,7 +260,7 @@ message RuntimeFeatureFlag { // Runtime key to get value for comparison. This value is used if defined. The boolean value must // be represented via its - // `canonical JSON encoding `_. + // [canonical JSON encoding](https://developers.google.com/protocol-buffers/docs/proto3#json). string runtime_key = 2 [(validate.rules).string = {min_bytes: 1}]; } @@ -276,8 +275,8 @@ message HeaderValue { // Header value. // - // The same :ref:`format specifier ` as used for - // :ref:`HTTP access logging ` applies here, however + // The same format specifier as used for + // HTTP access logging applies here, however // unknown header values are replaced with the empty string instead of `-`. string value = 2 [ (validate.rules).string = {max_bytes: 16384 well_known_regex: HTTP_HEADER_VALUE strict: false} @@ -326,7 +325,7 @@ message DataSource { message RetryPolicy { option (solo.io.udpa.annotations.versioning).previous_message_type = ".solo.io.envoy.api.v2.core.RetryPolicy"; - // Specifies parameters that control :ref:`retry backoff strategy `. + // Specifies parameters that control retry backoff strategy. // This parameter is optional, in which case the default base interval is 1000 milliseconds. The // default maximum interval is 10 times the base interval. BackoffStrategy retry_back_off = 1; @@ -366,8 +365,8 @@ message AsyncDataSource { } } -// Configuration for transport socket in :ref:`listeners ` and -// :ref:`clusters `. If the configuration is +// Configuration for transport socket in listeners and +// clusters. If the configuration is // empty, a default transport socket implementation and configuration will be // chosen based on the platform and existence of tls_context. message TransportSocket { @@ -391,10 +390,10 @@ message TransportSocket { // Runtime derived FractionalPercent with defaults for when the numerator or denominator is not // specified via a runtime key. // -// .. note:: +// **Note**: // // Parsing of the runtime key's data is implemented such that it may be represented as a -// :ref:`FractionalPercent ` proto represented as JSON/YAML +// FractionalPercent proto represented as JSON/YAML // and may also be represented as an integer with the assumption that the value is an integral // percentage out of 100. For instance, a runtime key lookup returning the value "42" would parse // as a `FractionalPercent` whose numerator is 42 and denominator is HUNDRED. diff --git a/api/gloo/gloo/external/envoy/config/core/v3/grpc_service.proto b/api/gloo/gloo/external/envoy/config/core/v3/grpc_service.proto index 9f543c7e2..39dcf1bef 100644 --- a/api/gloo/gloo/external/envoy/config/core/v3/grpc_service.proto +++ b/api/gloo/gloo/external/envoy/config/core/v3/grpc_service.proto @@ -33,11 +33,11 @@ message GrpcService { "solo.io.envoy.api.v2.core.GrpcService.EnvoyGrpc"; // The name of the upstream gRPC cluster. SSL credentials will be supplied - // in the :ref:`Cluster ` :ref:`transport_socket + // in the Cluster :ref:`transport_socket // `. string cluster_name = 1 [(validate.rules).string = {min_bytes: 1}]; - // The ``:authority`` header in the grpc request. If this field is not set, the authority header value will be ``cluster_name``. + // The `:authority` header in the grpc request. If this field is not set, the authority header value will be `cluster_name`. // Note that this authority does not override the SNI. The SNI is provided by the transport socket of the cluster. string authority = 2 [(validate.rules).string = @@ -233,15 +233,13 @@ message GrpcService { map args = 1; } - // The target URI when using the `Google C++ gRPC client - // `_. SSL credentials will be supplied in - // :ref:`channel_credentials `. + // The target URI when using the [Google C++ gRPC client](https://github.com/grpc/grpc). SSL credentials will be supplied in + // channel_credentials. string target_uri = 1 [(validate.rules).string = {min_bytes: 1}]; ChannelCredentials channel_credentials = 2; - // A set of call credentials that can be composed with `channel credentials - // `_. + // A set of call credentials that can be composed with [channel credentials](https://grpc.io/docs/guides/auth.html#credential-types). repeated CallCredentials call_credentials = 3; // The human readable prefix to use when emitting statistics for the gRPC @@ -282,7 +280,7 @@ message GrpcService { // documentation for discussion on gRPC client selection. EnvoyGrpc envoy_grpc = 1; - // `Google C++ gRPC client `_ + // [Google C++ gRPC client](https://github.com/grpc/grpc) // See the :ref:`gRPC services overview ` // documentation for discussion on gRPC client selection. GoogleGrpc google_grpc = 2; @@ -294,7 +292,7 @@ message GrpcService { // Additional metadata to include in streams initiated to the GrpcService. // This can be used for scenarios in which additional ad hoc authorization - // headers (e.g. ``x-foo-bar: baz-key``) are to be injected. + // headers (e.g. `x-foo-bar: baz-key`) are to be injected. repeated HeaderValue initial_metadata = 5; } option go_package = "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/config/core/v3"; diff --git a/api/gloo/gloo/external/envoy/config/core/v3/health_check.proto b/api/gloo/gloo/external/envoy/config/core/v3/health_check.proto index fcda81b93..ef62d9ff7 100644 --- a/api/gloo/gloo/external/envoy/config/core/v3/health_check.proto +++ b/api/gloo/gloo/external/envoy/config/core/v3/health_check.proto @@ -24,9 +24,9 @@ option java_multiple_files = true; option (solo.io.udpa.annotations.file_status).package_version_status = ACTIVE; // [#protodoc-title: Health check] -// * Health checking :ref:`architecture overview `. +// * Health checking architecture overview. // * If health checking is configured for a cluster, additional statistics are emitted. They are -// documented :ref:`here `. +// documented here. // Endpoint health status. enum HealthStatus { @@ -40,9 +40,9 @@ enum HealthStatus { UNHEALTHY = 2; // Connection draining in progress. E.g., - // ``_ + // https://aws.amazon.com/blogs/aws/elb-connection-draining-remove-instances-from-service-with-care/ // or - // ``_. + // https://cloud.google.com/compute/docs/load-balancing/enabling-connection-draining. // This is interpreted by Envoy as *UNHEALTHY*. DRAINING = 3; @@ -86,7 +86,7 @@ message HealthCheck { // The value of the host header in the HTTP health check request. If // left empty (default value), the name of the cluster this health check is associated // with will be used. The host header can be customized for a specific endpoint by setting the - // :ref:`hostname ` field. + // hostname field. string host = 1 [(validate.rules).string = {well_known_regex: HTTP_HEADER_VALUE strict: false}]; // Specifies the HTTP path that will be requested during health checking. For example @@ -116,7 +116,7 @@ message HealthCheck { // Specifies a list of HTTP response statuses considered healthy. If provided, replaces default // 200-only policy - 200 must be included explicitly as needed. Ranges follow half-open - // semantics of :ref:`Int64Range `. The start and end of each + // semantics of Int64Range. The start and end of each // range are required. Only statuses in the range [100, 600) are allowed. repeated type.v3.Int64Range expected_statuses = 9; @@ -151,32 +151,29 @@ message HealthCheck { option (solo.io.udpa.annotations.versioning).previous_message_type = ".solo.io.envoy.api.v2.core.HealthCheck.RedisHealthCheck"; - // If set, optionally perform ``EXISTS `` instead of ``PING``. A return value + // If set, optionally perform `EXISTS ` instead of `PING`. A return value // from Redis of 0 (does not exist) is considered a passing healthcheck. A return value other // than 0 is considered a failure. This allows the user to mark a Redis instance for maintenance // by setting the specified key to any value and waiting for traffic to drain. string key = 1; } - // `grpc.health.v1.Health - // `_-based - // healthcheck. See `gRPC doc `_ + // [grpc.health.v1.Health](https://github.com/grpc/grpc/blob/master/src/proto/grpc/health/v1/health.proto)-based + // healthcheck. See [gRPC doc](https://github.com/grpc/grpc/blob/master/doc/health-checking.md) // for details. message GrpcHealthCheck { option (solo.io.udpa.annotations.versioning).previous_message_type = ".solo.io.envoy.api.v2.core.HealthCheck.GrpcHealthCheck"; // An optional service name parameter which will be sent to gRPC service in - // `grpc.health.v1.HealthCheckRequest - // `_. - // message. See `gRPC health-checking overview - // `_ for more information. + // [grpc.health.v1.HealthCheckRequest](https://github.com/grpc/grpc/blob/master/src/proto/grpc/health/v1/health.proto#L20). + // message. See [gRPC health-checking overview](https://github.com/grpc/grpc/blob/master/doc/health-checking.md) for more information. string service_name = 1; // The value of the :authority header in the gRPC health check request. If // left empty (default value), the name of the cluster this health check is associated // with will be used. The authority header can be customized for a specific endpoint by setting - // the :ref:`hostname ` field. + // the hostname field. string authority = 2 [(validate.rules).string = {well_known_regex: HTTP_HEADER_VALUE strict: false}]; } @@ -311,7 +308,7 @@ message HealthCheck { // The default value for "healthy edge interval" is the same as the default interval. google.protobuf.Duration healthy_edge_interval = 16 [(validate.rules).duration = {gt {}}]; - // Specifies the path to the :ref:`health check event log `. + // Specifies the path to the health check event log. // If empty, no event log will be written. string event_log_path = 17; @@ -329,7 +326,7 @@ message HealthCheck { TlsOptions tls_options = 21; // Optional key/value pairs that will be used to match a transport socket from those specified in the cluster's - // :ref:`tranport socket matches `. + // tranport socket matches. // For example, the following match criteria // // .. code-block:: yaml @@ -350,12 +347,12 @@ message HealthCheck { // config: { ... } # tls socket configuration // // If this field is set, then for health checks it will supersede an entry of *envoy.transport_socket* in the - // :ref:`LbEndpoint.Metadata `. + // LbEndpoint.Metadata. // This allows using different transport socket capabilities for health checking versus proxying to the // endpoint. // // If the key/values pairs specified do not match any - // :ref:`transport socket matches `, + // transport socket matches, // the cluster's :ref:`transport socket ` // will be used for health check socket configuration. google.protobuf.Struct transport_socket_match_criteria = 23; diff --git a/api/gloo/gloo/external/envoy/config/core/v3/http_uri.proto b/api/gloo/gloo/external/envoy/config/core/v3/http_uri.proto index cf987b40a..71bfd6082 100644 --- a/api/gloo/gloo/external/envoy/config/core/v3/http_uri.proto +++ b/api/gloo/gloo/external/envoy/config/core/v3/http_uri.proto @@ -31,8 +31,7 @@ message HttpUri { // Specify how `uri` is to be fetched. Today, this requires an explicit // cluster, but in the future we may support dynamic cluster creation or - // inline DNS resolution. See `issue - // `_. + // inline DNS resolution. See [issue](https://github.com/envoyproxy/envoy/issues/1606). oneof http_upstream_type { option (validate.required) = true; diff --git a/api/gloo/gloo/external/envoy/config/core/v3/proxy_protocol.proto b/api/gloo/gloo/external/envoy/config/core/v3/proxy_protocol.proto index 6ad1566fa..636d20784 100644 --- a/api/gloo/gloo/external/envoy/config/core/v3/proxy_protocol.proto +++ b/api/gloo/gloo/external/envoy/config/core/v3/proxy_protocol.proto @@ -26,8 +26,7 @@ message ProxyProtocolPassThroughTLVs { PassTLVsMatchType match_type = 1; // The TLV types that are applied based on match_type. - // TLV type is defined as uint8_t in proxy protocol. See `the spec - // `_ for details. + // TLV type is defined as uint8_t in proxy protocol. See [the spec](https://www.haproxy.org/download/2.1/doc/proxy-protocol.txt) for details. repeated uint32 tlv_type = 2 [(validate.rules).repeated = {items {uint32 {lt: 256}}}]; } diff --git a/api/gloo/gloo/external/envoy/config/route/v3/route_components.proto b/api/gloo/gloo/external/envoy/config/route/v3/route_components.proto index 5292bb7b8..a895668f8 100644 --- a/api/gloo/gloo/external/envoy/config/route/v3/route_components.proto +++ b/api/gloo/gloo/external/envoy/config/route/v3/route_components.proto @@ -65,17 +65,17 @@ message VirtualHost { // virtual host. Wildcard hosts are supported in the suffix or prefix form. // // Domain search order: - // 1. Exact domain names: ``www.foo.com``. - // 2. Suffix domain wildcards: ``*.foo.com`` or ``*-bar.foo.com``. - // 3. Prefix domain wildcards: ``foo.*`` or ``foo-*``. - // 4. Special wildcard ``*`` matching any domain. + // 1. Exact domain names: `www.foo.com`. + // 2. Suffix domain wildcards: `*.foo.com` or `*-bar.foo.com`. + // 3. Prefix domain wildcards: `foo.*` or `foo-*`. + // 4. Special wildcard `*` matching any domain. // - // .. note:: + // **Note**: // // The wildcard will not match the empty string. - // e.g. ``*-bar.foo.com`` will match ``baz-bar.foo.com`` but not ``-bar.foo.com``. + // e.g. `*-bar.foo.com` will match `baz-bar.foo.com` but not `-bar.foo.com`. // The longest wildcards match first. - // Only a single virtual host in the entire route configuration can match on ``*``. A domain + // Only a single virtual host in the entire route configuration can match on `*`. A domain // must be unique across all virtual hosts or the config will fail to load. // // Domains cannot contain control characters. This is validated by the well_known_regex HTTP_HEADER_VALUE. @@ -168,7 +168,7 @@ message VirtualHost { // [#not-implemented-hide:] // Specifies the configuration for retry policy extension. Note that setting a route level entry // will take precedence over this config and it'll be treated independently (e.g.: values are not - // inherited). :ref:`Retry policy ` should not be + // inherited). Retry policy should not be // set if this field is used. google.protobuf.Any retry_policy_typed_config = 20; @@ -193,7 +193,7 @@ message FilterAction { // A route is both a specification of how to match a request as well as an indication of what to do // next (e.g., redirect, forward, rewrite, etc.). // -// .. attention:: +// **Attention**: // // Envoy supports routing on HTTP method via :ref:`header matching // `. @@ -244,7 +244,7 @@ message Route { // The typed_per_filter_config field can be used to provide route-specific // configurations for filters. The key should match the filter name, such as // *envoy.filters.http.buffer* for the HTTP buffer filter. Use of this field is filter - // specific; see the :ref:`HTTP filter documentation ` for + // specific; see the HTTP filter documentation for // if and how it is utilized. map typed_per_filter_config = 13; @@ -268,7 +268,7 @@ message Route { // headers from the enclosing :ref:`envoy_api_msg_config.route.v3.VirtualHost` and // :ref:`envoy_api_msg_config.route.v3.RouteConfiguration`. For more information, including // details on header value syntax, see the documentation on - // :ref:`custom request headers `. + // custom request headers. repeated core.v3.HeaderValueOption response_headers_to_add = 10 [(validate.rules).repeated = {max_items: 1000}]; @@ -286,7 +286,7 @@ message Route { google.protobuf.UInt32Value per_request_buffer_limit_bytes = 16; } -// Compared to the :ref:`cluster ` field that specifies a +// Compared to the cluster field that specifies a // single upstream cluster as the target of a request, the :ref:`weighted_clusters // ` option allows for specification of // multiple upstream clusters along with weights that indicate the percentage of @@ -305,7 +305,7 @@ message WeightedCluster { reserved "per_filter_config"; // Name of the upstream cluster. The cluster must exist in the - // :ref:`cluster manager configuration `. + // cluster manager configuration. string name = 1 [(validate.rules).string = {min_bytes: 1}]; // An integer between 0 and :ref:`total_weight @@ -317,7 +317,7 @@ message WeightedCluster { // Optional endpoint metadata match criteria used by the subset load balancer. Only endpoints in // the upstream cluster with metadata matching what is set in this field will be considered for // load balancing. Note that this will be merged with what's provided in - // :ref:`RouteAction.metadata_match `, with + // RouteAction.metadata_match, with // values here taking precedence. The filter name should be specified as *envoy.lb*. core.v3.Metadata metadata_match = 3; @@ -455,7 +455,7 @@ message RouteMatch { // code/config deploys. Refer to the :ref:`traffic shifting // ` docs for additional documentation. // - // .. note:: + // **Note**: // // Parsing this field is implemented such that the runtime key's data may be represented // as a FractionalPercent proto represented as JSON/YAML and may also be represented as an @@ -520,10 +520,10 @@ message CorsPolicy { oneof enabled_specifier { // Specifies the % of requests for which the CORS filter is enabled. // - // If neither ``enabled``, ``filter_enabled``, nor ``shadow_enabled`` are specified, the CORS + // If neither `enabled`, `filter_enabled`, nor `shadow_enabled` are specified, the CORS // filter will be enabled for 100% of the requests. // - // If :ref:`runtime_key ` is + // If runtime_key is // specified, Envoy will lookup the runtime key to get the percentage of requests to filter. core.v3.RuntimeFractionalPercent filter_enabled = 9; } @@ -531,10 +531,10 @@ message CorsPolicy { // Specifies the % of requests for which the CORS policies will be evaluated and tracked, but not // enforced. // - // This field is intended to be used when ``filter_enabled`` and ``enabled`` are off. One of those + // This field is intended to be used when `filter_enabled` and `enabled` are off. One of those // fields have to explicitly disable the filter in order for this setting to take effect. // - // If :ref:`runtime_key ` is specified, + // If runtime_key is specified, // Envoy will lookup the runtime key to get the percentage of requests for which it will evaluate // and track the request's *Origin* to determine if it's valid but will not enforce any policies. core.v3.RuntimeFractionalPercent shadow_enabled = 10; @@ -552,7 +552,7 @@ message RouteAction { NOT_FOUND = 1; } - // Configures :ref:`internal redirect ` behavior. + // Configures internal redirect behavior. // [#next-major-version: remove this definition - it's defined in the InternalRedirectPolicy message.] enum InternalRedirectAction { option deprecated = true; @@ -569,7 +569,7 @@ message RouteAction { // During shadowing, the host/authority header is altered such that *-shadow* is appended. This is // useful for logging. For example, *cluster1* becomes *cluster1-shadow*. // - // .. note:: + // **Note**: // // Shadowing will not be triggered if the primary cluster does not exist. message RequestMirrorPolicy { @@ -771,7 +771,7 @@ message RouteAction { // header is not found or the referenced cluster does not exist, Envoy will // return a 404 response. // - // .. attention:: + // **Attention**: // // Internally, Envoy always uses the HTTP/2 *:authority* header to represent the HTTP/1 // *Host* header. Thus, if attempting to match on *Host*, match on *:authority* instead. @@ -808,13 +808,13 @@ message RouteAction { // :ref:`regex_rewrite ` // may be specified. // - // .. attention:: + // **Attention**: // // Pay careful attention to the use of trailing slashes in the - // :ref:`route's match ` prefix value. + // route's match prefix value. // Stripping a prefix from a path requires multiple Routes to handle all cases. For example, // rewriting */prefix* to */* and */prefix/etc* to */etc* cannot be done in a single - // :ref:`Route `, as shown by the below config entries: + // Route, as shown by the below config entries: // // .. code-block:: yaml // @@ -844,22 +844,22 @@ message RouteAction { // Only one of :ref:`prefix_rewrite ` // or *regex_rewrite* may be specified. // - // Examples using Google's `RE2 `_ engine: + // Examples using Google's [RE2](https://github.com/google/re2) engine: // - // * The path pattern ``^/service/([^/]+)(/.*)$`` paired with a substitution - // string of ``\2/instance/\1`` would transform ``/service/foo/v1/api`` - // into ``/v1/api/instance/foo``. + // * The path pattern `^/service/([^/]+)(/.*)$` paired with a substitution + // string of `\2/instance/\1` would transform `/service/foo/v1/api` + // into `/v1/api/instance/foo`. // - // * The pattern ``one`` paired with a substitution string of ``two`` would - // transform ``/xxx/one/yyy/one/zzz`` into ``/xxx/two/yyy/two/zzz``. + // * The pattern `one` paired with a substitution string of `two` would + // transform `/xxx/one/yyy/one/zzz` into `/xxx/two/yyy/two/zzz`. // - // * The pattern ``^(.*?)one(.*)$`` paired with a substitution string of - // ``\1two\2`` would replace only the first occurrence of ``one``, - // transforming path ``/xxx/one/yyy/one/zzz`` into ``/xxx/two/yyy/one/zzz``. + // * The pattern `^(.*?)one(.*)$` paired with a substitution string of + // `\1two\2` would replace only the first occurrence of `one`, + // transforming path `/xxx/one/yyy/one/zzz` into `/xxx/two/yyy/one/zzz`. // - // * The pattern ``(?i)/xxx/`` paired with a substitution string of ``/yyy/`` - // would do a case-insensitive match and transform path ``/aaa/XxX/bbb`` to - // ``/aaa/yyy/bbb``. + // * The pattern `(?i)/xxx/` paired with a substitution string of `/yyy/` + // would do a case-insensitive match and transform path `/aaa/XxX/bbb` to + // `/aaa/yyy/bbb`. type.matcher.v3.RegexMatchAndSubstitute regex_rewrite = 32; oneof host_rewrite_specifier { @@ -876,10 +876,10 @@ message RouteAction { google.protobuf.BoolValue auto_host_rewrite = 7; // Indicates that during forwarding, the host header will be swapped with the content of given - // downstream or :ref:`custom ` header. + // downstream or custom header. // If header value is empty, host header is left intact. // - // .. attention:: + // **Attention**: // // Pay attention to the potential security implications of using this option. Provided header // must come from trusted source. @@ -892,12 +892,12 @@ message RouteAction { // processed and when the upstream response has been completely processed. A value of 0 will // disable the route's timeout. // - // .. note:: + // **Note**: // // This timeout includes all retries. See also // :ref:`config_http_filters_router_x-envoy-upstream-rq-timeout-ms`, // :ref:`config_http_filters_router_x-envoy-upstream-rq-per-try-timeout-ms`, and the - // :ref:`retry overview `. + // retry overview. google.protobuf.Duration timeout = 8; // Specifies the idle timeout for the route. If not specified, there is no per-route idle timeout, @@ -935,7 +935,7 @@ message RouteAction { // Indicates that the route has request mirroring policies. repeated RequestMirrorPolicy request_mirror_policies = 30; - // Optionally specifies the :ref:`routing priority `. + // Optionally specifies the routing priority. core.v3.RoutingPriority priority = 11 [(validate.rules).enum = {defined_only: true}]; // Specifies a set of rate limit configurations that could be applied to the @@ -944,7 +944,7 @@ message RouteAction { // Specifies if the rate limit filter should include the virtual host rate // limits. By default, if the route configured rate limits, the virtual host - // :ref:`rate_limits ` are not applied to the + // rate_limits are not applied to the // request. google.protobuf.BoolValue include_vh_rate_limits = 14; @@ -966,24 +966,24 @@ message RouteAction { CorsPolicy cors = 17; // If present, and the request is a gRPC request, use the - // `grpc-timeout header `_, + // [grpc-timeout header](https://github.com/grpc/grpc/blob/master/doc/PROTOCOL-HTTP2.md), // or its default value (infinity) instead of - // :ref:`timeout `, but limit the applied timeout + // timeout, but limit the applied timeout // to the maximum value specified here. If configured as 0, the maximum allowed timeout for // gRPC requests is infinity. If not configured at all, the `grpc-timeout` header is not used // and gRPC requests time out like any other requests using - // :ref:`timeout ` or its default. + // timeout or its default. // This can be used to prevent unexpected upstream request timeouts due to potentially long // time gaps between gRPC request and response in gRPC streaming mode. // - // .. note:: + // **Note**: // // If a timeout is specified using :ref:`config_http_filters_router_x-envoy-upstream-rq-timeout-ms`, it takes - // precedence over `grpc-timeout header `_, when + // precedence over [grpc-timeout header](https://github.com/grpc/grpc/blob/master/doc/PROTOCOL-HTTP2.md), when // both are present. See also // :ref:`config_http_filters_router_x-envoy-upstream-rq-timeout-ms`, // :ref:`config_http_filters_router_x-envoy-upstream-rq-per-try-timeout-ms`, and the - // :ref:`retry overview `. + // retry overview. google.protobuf.Duration max_grpc_timeout = 23; // If present, Envoy will adjust the timeout provided by the `grpc-timeout` header by subtracting @@ -1027,7 +1027,7 @@ message RouteAction { HedgePolicy hedge_policy = 27; } -// HTTP retry :ref:`architecture overview `. +// HTTP retry architecture overview. // [#next-free-field: 11] message RetryPolicy { option (solo.io.udpa.annotations.versioning).previous_message_type = "solo.io.envoy.api.v2.route.RetryPolicy"; @@ -1097,23 +1097,23 @@ message RetryPolicy { // same conditions documented for // :ref:`config_http_filters_router_x-envoy-upstream-rq-per-try-timeout-ms` apply. // - // .. note:: + // **Note**: // // If left unspecified, Envoy will use the global - // :ref:`route timeout ` for the request. - // Consequently, when using a :ref:`5xx ` based + // route timeout for the request. + // Consequently, when using a 5xx based // retry policy, a request that times out will not be retried as the total timeout budget // would have been exhausted. google.protobuf.Duration per_try_timeout = 3; // Specifies an implementation of a RetryPriority which is used to determine the // distribution of load across priorities used for retries. Refer to - // :ref:`retry plugin configuration ` for more details. + // retry plugin configuration for more details. RetryPriority retry_priority = 4; // Specifies a collection of RetryHostPredicates that will be consulted when selecting a host // for retries. If any of the predicates reject the host, host selection will be reattempted. - // Refer to :ref:`retry plugin configuration ` for more + // Refer to retry plugin configuration for more // details. repeated RetryHostPredicate retry_host_predicate = 5; @@ -1141,7 +1141,7 @@ message RetryPolicy { repeated HeaderMatcher retriable_request_headers = 10; } -// HTTP request hedging :ref:`architecture overview `. +// HTTP request hedging architecture overview. message HedgePolicy { option (solo.io.udpa.annotations.versioning).previous_message_type = "solo.io.envoy.api.v2.route.HedgePolicy"; @@ -1163,7 +1163,7 @@ message HedgePolicy { // Once a timed out request is retried due to per try timeout, the router // filter will ensure that it is not retried again even if the returned // response headers would otherwise be retried according the specified - // :ref:`RetryPolicy `. + // RetryPolicy. // Defaults to false. bool hedge_on_per_try_timeout = 3; } @@ -1233,10 +1233,10 @@ message RedirectAction { // should be swapped with this value. This option allows redirect URLs be dynamically created // based on the request. // - // .. attention:: + // **Attention**: // // Pay attention to the use of trailing slashes as mentioned in - // :ref:`RouteAction's prefix_rewrite `. + // RouteAction's prefix_rewrite. string prefix_rewrite = 5 [(validate.rules).string = {well_known_regex: HTTP_HEADER_VALUE strict: false}]; } @@ -1260,7 +1260,7 @@ message DirectResponseAction { // Specifies the content of the response body. If this setting is omitted, // no body is included in the generated response. // - // .. note:: + // **Note**: // // Headers can be specified using *response_headers_to_add* in the enclosing // :ref:`envoy_api_msg_config.route.v3.Route`, :ref:`envoy_api_msg_config.route.v3.RouteConfiguration` or @@ -1274,7 +1274,7 @@ message Decorator { // The operation name associated with the request matched to this route. If tracing is // enabled, this information will be used as the span name reported for this request. // - // .. note:: + // **Note**: // // For ingress (inbound) requests, or egress (outbound) responses, this value may be overridden // by the :ref:`x-envoy-decorator-operation @@ -1299,7 +1299,7 @@ message Tracing { // Target percentage of requests managed by this HTTP connection manager that will be randomly // selected for trace generation, if not requested by the client or not forced. This field is // a direct analog for the runtime variable 'tracing.random_sampling' in the - // :ref:`HTTP Connection Manager `. + // HTTP Connection Manager. // Default: 100% type.v3.FractionalPercent random_sampling = 2; @@ -1309,7 +1309,7 @@ message Tracing { // instance, setting client_sampling to 100% but overall_sampling to 1% will result in only 1% // of client requests with the appropriate headers to be force traced. This field is a direct // analog for the runtime variable 'tracing.global_enabled' in the - // :ref:`HTTP Connection Manager `. + // HTTP Connection Manager. // Default: 100% type.v3.FractionalPercent overall_sampling = 3; @@ -1332,9 +1332,9 @@ message Tracing { // statistics are perfect in the sense that they are emitted on the downstream // side such that they include network level failures. // -// Documentation for :ref:`virtual cluster statistics `. +// Documentation for virtual cluster statistics. // -// .. note:: +// **Note**: // // Virtual clusters are a useful tool, but we do not recommend setting up a virtual cluster for // every application endpoint. This is both not easily maintainable and as well the matching and @@ -1353,11 +1353,11 @@ message VirtualCluster { // Specifies the name of the virtual cluster. The virtual cluster name as well // as the virtual host name are used when emitting statistics. The statistics are emitted by the - // router filter and are documented :ref:`here `. + // router filter and are documented here. string name = 2 [(validate.rules).string = {min_bytes: 1}]; } -// Global rate limiting :ref:`architecture overview `. +// Global rate limiting architecture overview. message RateLimit { option (solo.io.udpa.annotations.versioning).previous_message_type = "solo.io.envoy.api.v2.route.RateLimit"; @@ -1372,7 +1372,7 @@ message RateLimit { // // ("source_cluster", "") // - // is derived from the :option:`--service-cluster` option. + // is derived from the `--service-cluster` option. message SourceCluster { option (solo.io.udpa.annotations.versioning).previous_message_type = "solo.io.envoy.api.v2.route.RateLimit.Action.SourceCluster"; @@ -1388,11 +1388,11 @@ message RateLimit { // the following :ref:`route table configuration ` // settings: // - // * :ref:`cluster ` indicates the upstream cluster + // * cluster indicates the upstream cluster // to route to. // * :ref:`weighted_clusters ` // chooses a cluster randomly from a set of clusters with attributed weight. - // * :ref:`cluster_header ` indicates which + // * cluster_header indicates which // header in the request contains the target cluster. message DestinationCluster { option (solo.io.udpa.annotations.versioning).previous_message_type = @@ -1426,7 +1426,7 @@ message RateLimit { } // The following descriptor entry is appended to the descriptor and is populated using the - // trusted address from :ref:`x-forwarded-for `: + // trusted address from x-forwarded-for. // // .. code-block:: cpp // @@ -1537,7 +1537,7 @@ message RateLimit { // applies to filters with the same stage number. The default stage number is // 0. // - // .. note:: + // **Note**: // // The filter supports a range of 0 - 10 inclusively for stage numbers. google.protobuf.UInt32Value stage = 1 [(validate.rules).uint32 = {lte: 10}]; @@ -1560,12 +1560,12 @@ message RateLimit { Override limit = 4; } -// .. attention:: +// **Attention**: // // Internally, Envoy always uses the HTTP/2 *:authority* header to represent the HTTP/1 *Host* // header. Thus, if attempting to match on *Host*, match on *:authority* instead. // -// .. attention:: +// **Attention**: // // To route on HTTP method, use the special HTTP/2 *:method* header. This works for both // HTTP/1 and HTTP/2 as Envoy normalizes headers. E.g., @@ -1577,7 +1577,7 @@ message RateLimit { // "exact_match": "POST" // } // -// .. attention:: +// **Attention**: // In the absence of any header match specifier, match will default to :ref:`present_match // `. i.e, a request that has the :ref:`name // ` header will match, regardless of the header's @@ -1644,7 +1644,7 @@ message HeaderMatcher { // // Examples: // - // * The regex ``\d{3}`` does not match the value *1234*, so it will match when inverted. + // * The regex `\d{3}` does not match the value *1234*, so it will match when inverted. // * The range [-10,0) will match the value -1, so it will not match when inverted. bool invert_match = 8; } @@ -1673,7 +1673,7 @@ message QueryParameterMatcher { } } -// HTTP Internal Redirect :ref:`architecture overview `. +// HTTP Internal Redirect architecture overview. message InternalRedirectPolicy { // An internal redirect is not handled, unless the number of previous internal redirects that a // downstream request has encountered is lower than this value. diff --git a/api/gloo/gloo/external/envoy/config/trace/v3/datadog.proto b/api/gloo/gloo/external/envoy/config/trace/v3/datadog.proto index c34861603..6c15c67c1 100644 --- a/api/gloo/gloo/external/envoy/config/trace/v3/datadog.proto +++ b/api/gloo/gloo/external/envoy/config/trace/v3/datadog.proto @@ -53,7 +53,7 @@ message DatadogConfig { google.protobuf.StringValue service_name = 2 [(validate.rules).string = {min_len: 1}]; // Optional hostname to use when sending spans to the collector_cluster. Useful for collectors - // that require a specific hostname. Defaults to :ref:`collector_cluster ` above. + // that require a specific hostname. Defaults to collector_cluster above. string collector_hostname = 4; // Configures remote configuration. diff --git a/api/gloo/gloo/external/envoy/config/trace/v3/zipkin.proto b/api/gloo/gloo/external/envoy/config/trace/v3/zipkin.proto index 11c407648..047ea7183 100644 --- a/api/gloo/gloo/external/envoy/config/trace/v3/zipkin.proto +++ b/api/gloo/gloo/external/envoy/config/trace/v3/zipkin.proto @@ -69,7 +69,7 @@ message ZipkinConfig { // The default value is true. google.protobuf.BoolValue shared_span_context = 4; - // Determines the selected collector endpoint version. By default, the ``HTTP_JSON_V1`` will be + // Determines the selected collector endpoint version. By default, the `HTTP_JSON_V1` will be // used. CollectorEndpointVersion collector_endpoint_version = 5; } diff --git a/api/gloo/gloo/external/envoy/extensions/filters/http/buffer/v3/buffer.proto b/api/gloo/gloo/external/envoy/extensions/filters/http/buffer/v3/buffer.proto index 74ae5be58..ad25a4207 100644 --- a/api/gloo/gloo/external/envoy/extensions/filters/http/buffer/v3/buffer.proto +++ b/api/gloo/gloo/external/envoy/extensions/filters/http/buffer/v3/buffer.proto @@ -23,7 +23,7 @@ option (extproto.hash_all) = true; option (extproto.clone_all) = true; // [#protodoc-title: Buffer] -// Buffer :ref:`configuration overview `. +// Buffer configuration overview. // [#extension: envoy.filters.http.buffer] message Buffer { diff --git a/api/gloo/gloo/external/envoy/extensions/filters/http/csrf/v3/csrf.proto b/api/gloo/gloo/external/envoy/extensions/filters/http/csrf/v3/csrf.proto index 3051d89c9..0a1570030 100644 --- a/api/gloo/gloo/external/envoy/extensions/filters/http/csrf/v3/csrf.proto +++ b/api/gloo/gloo/external/envoy/extensions/filters/http/csrf/v3/csrf.proto @@ -23,7 +23,7 @@ option (extproto.hash_all) = true; option (extproto.clone_all) = true; // [#protodoc-title: CSRF] -// Cross-Site Request Forgery :ref:`configuration overview `. +// Cross-Site Request Forgery configuration overview. // [#extension: envoy.filters.http.csrf] // CSRF filter config. @@ -31,10 +31,10 @@ message CsrfPolicy { // Specifies the % of requests for which the CSRF filter is enabled. // - // If :ref:`runtime_key ` is specified, + // If runtime_key is specified, // Envoy will lookup the runtime key to get the percentage of requests to filter. // - // .. note:: + // **Note**: // // This field defaults to 100/:ref:`HUNDRED // `. @@ -43,9 +43,9 @@ message CsrfPolicy { // Specifies that CSRF policies will be evaluated and tracked, but not enforced. // - // This is intended to be used when ``filter_enabled`` is off and will be ignored otherwise. + // This is intended to be used when `filter_enabled` is off and will be ignored otherwise. // - // If :ref:`runtime_key ` is specified, + // If runtime_key is specified, // Envoy will lookup the runtime key to get the percentage of requests for which it will evaluate // and track the request's *Origin* and *Destination* to determine if it's valid, but will not // enforce any policies. @@ -55,6 +55,6 @@ message CsrfPolicy { // the destination origin. // // More information on how this can be configured via runtime can be found - // :ref:`here `. + // here. repeated type.matcher.v3.StringMatcher additional_origins = 3; } \ No newline at end of file diff --git a/api/gloo/gloo/external/envoy/extensions/filters/http/jwt_authn/v3/config.proto b/api/gloo/gloo/external/envoy/extensions/filters/http/jwt_authn/v3/config.proto index 1b9476ba0..d045727c9 100644 --- a/api/gloo/gloo/external/envoy/extensions/filters/http/jwt_authn/v3/config.proto +++ b/api/gloo/gloo/external/envoy/extensions/filters/http/jwt_authn/v3/config.proto @@ -21,14 +21,14 @@ option java_multiple_files = true; option (udpa.annotations.file_status).package_version_status = ACTIVE; // [#protodoc-title: JWT Authentication] -// JWT Authentication :ref:`configuration overview `. +// JWT Authentication configuration overview. // [#extension: envoy.filters.http.jwt_authn] // Please see following for JWT authentication flow: // -// * `JSON Web Token (JWT) `_ -// * `The OAuth 2.0 Authorization Framework `_ -// * `OpenID Connect `_ +// * [JSON Web Token (JWT)](https://datatracker.ietf.org/doc/html/rfc7519) +// * [The OAuth 2.0 Authorization Framework](https://datatracker.ietf.org/doc/html/rfc6749) +// * [OpenID Connect](http://openid.net/connect) // // A JwtProvider message specifies how a JSON Web Token (JWT) can be verified. It specifies: // @@ -59,7 +59,7 @@ message JwtProvider { option (udpa.annotations.versioning).previous_message_type = "envoy.config.filter.http.jwt_authn.v2alpha.JwtProvider"; - // Specify the `principal `_ that issued + // Specify the [principal](https://datatracker.ietf.org/doc/html/rfc7519#section-4.1.1) that issued // the JWT, usually a URL or an email address. // // It is optional. If specified, it has to match the *iss* field in JWT. @@ -81,7 +81,7 @@ message JwtProvider { // string issuer = 1; - // The list of JWT `audiences `_ are + // The list of JWT [audiences](https://datatracker.ietf.org/doc/html/rfc7519#section-4.1.3) are // allowed to access. A JWT containing any of these audiences will be accepted. If not specified, // will not check audiences in the token. // @@ -95,7 +95,7 @@ message JwtProvider { // repeated string audiences = 2; - // `JSON Web Key Set (JWKS) `_ is needed to + // [JSON Web Key Set (JWKS)](https://datatracker.ietf.org/doc/html/rfc7517#appendix-A) is needed to // validate signature of a JWT. This field specifies where to fetch JWKS. oneof jwks_source_specifier { option (validate.required) = true; @@ -145,12 +145,11 @@ message JwtProvider { // // If no explicit location is specified, the following default locations are tried in order: // - // 1. The Authorization header using the `Bearer schema - // `_. Example:: + // 1. The Authorization header using the [Bearer schema](https://datatracker.ietf.org/doc/html/rfc6750#section-2.1). Example:: // // Authorization: Bearer . // - // 2. `access_token `_ query parameter. + // 2. [access_token](https://datatracker.ietf.org/doc/html/rfc6750#section-2.3) query parameter. // // Multiple JWTs can be verified for a request. Each JWT has to be extracted from the locations // its provider specified or from the default locations. @@ -164,7 +163,7 @@ message JwtProvider { // // can be used to extract token from header:: // - // ``x-goog-iap-jwt-assertion: ``. + // `x-goog-iap-jwt-assertion: `. // repeated JwtHeader from_headers = 6; @@ -586,8 +585,7 @@ message JwtAuthentication { // check this one. FilterStateRule filter_state_rules = 3; - // When set to true, bypass the `CORS preflight request - // `_ regardless of JWT + // When set to true, bypass the [CORS preflight request](http://www.w3.org/TR/cors/#cross-origin-request-with-preflight) regardless of JWT // requirements specified in the rules. bool bypass_cors_preflight = 4; diff --git a/api/gloo/gloo/external/envoy/extensions/filters/http/wasm/v3/wasm.proto b/api/gloo/gloo/external/envoy/extensions/filters/http/wasm/v3/wasm.proto index a58689c26..694d845e6 100644 --- a/api/gloo/gloo/external/envoy/extensions/filters/http/wasm/v3/wasm.proto +++ b/api/gloo/gloo/external/envoy/extensions/filters/http/wasm/v3/wasm.proto @@ -20,7 +20,7 @@ option java_outer_classname = "WasmProto"; option java_multiple_files = true; // [#protodoc-title: Wasm] -// Wasm :ref:`configuration overview `. +// Wasm configuration overview. message Wasm { // General Plugin configuration. diff --git a/api/gloo/gloo/external/envoy/extensions/transformation/transformation.proto b/api/gloo/gloo/external/envoy/extensions/transformation/transformation.proto index 3825e86b1..a75a1f037 100644 --- a/api/gloo/gloo/external/envoy/extensions/transformation/transformation.proto +++ b/api/gloo/gloo/external/envoy/extensions/transformation/transformation.proto @@ -154,8 +154,8 @@ message Extraction { enum Mode { // Default mode. Extract the content of a specified capturing group. In this mode, // `subgroup` selects the n-th capturing group, which represents the value that - // you want to extract. - EXTRACT = 0; + // you want to extract. + EXTRACT = 0; // Replace the content of a specified capturing group. In this mode, `subgroup` selects the // n-th capturing group, which represents the value that you want to replace with // the string provided in `replacement_text`. @@ -342,6 +342,22 @@ message TransformationTemplate { // sets the behavior for the entire transformation. Use raw_strings function // for fine-grained control within a template. bool escape_characters = 12; + + message SpanTransformer { + // A template that sets the span name + InjaTemplate name = 1; + + // TODO if we want to set attributes as well, add fields to modify them here. + } + + // These two fields (merge_json_keys and string_delimiter) are used in + // `envoy-gloo` but not used in the control plane. Let's reserve them to keep + // our field numbers in sync. + reserved 14; + + // Use this field to modify the span of the trace. + SpanTransformer span_transformer = 15; + } // Defines an [Inja template](https://github.com/pantor/inja) that will be diff --git a/api/gloo/gloo/external/envoy/service/ext_proc/v3/external_processor.proto b/api/gloo/gloo/external/envoy/service/ext_proc/v3/external_processor.proto index 5ce78ed21..74a5f7bf2 100644 --- a/api/gloo/gloo/external/envoy/service/ext_proc/v3/external_processor.proto +++ b/api/gloo/gloo/external/envoy/service/ext_proc/v3/external_processor.proto @@ -69,34 +69,34 @@ message ProcessingRequest { option (validate.required) = true; // Information about the HTTP request headers, as well as peer info and additional - // properties. Unless ``observability_mode`` is ``true``, the server must send back a + // properties. Unless `observability_mode` is `true`, the server must send back a // HeaderResponse message, an ImmediateResponse message, or close the stream. HttpHeaders request_headers = 2; // Information about the HTTP response headers, as well as peer info and additional - // properties. Unless ``observability_mode`` is ``true``, the server must send back a + // properties. Unless `observability_mode` is `true`, the server must send back a // HeaderResponse message or close the stream. HttpHeaders response_headers = 3; - // A chunk of the HTTP request body. Unless ``observability_mode`` is true, the server must send back + // A chunk of the HTTP request body. Unless `observability_mode` is true, the server must send back // a BodyResponse message, an ImmediateResponse message, or close the stream. HttpBody request_body = 4; - // A chunk of the HTTP response body. Unless ``observability_mode`` is ``true``, the server must send back + // A chunk of the HTTP response body. Unless `observability_mode` is `true`, the server must send back // a BodyResponse message or close the stream. HttpBody response_body = 5; - // The HTTP trailers for the request path. Unless ``observability_mode`` is ``true``, the server + // The HTTP trailers for the request path. Unless `observability_mode` is `true`, the server // must send back a TrailerResponse message or close the stream. // - // This message is only sent if the trailers processing mode is set to ``SEND`` and + // This message is only sent if the trailers processing mode is set to `SEND` and // the original downstream request has trailers. HttpTrailers request_trailers = 6; - // The HTTP trailers for the response path. Unless ``observability_mode`` is ``true``, the server + // The HTTP trailers for the response path. Unless `observability_mode` is `true`, the server // must send back a TrailerResponse message or close the stream. // - // This message is only sent if the trailers processing mode is set to ``SEND`` and + // This message is only sent if the trailers processing mode is set to `SEND` and // the original upstream response has trailers. HttpTrailers response_trailers = 7; } @@ -104,27 +104,27 @@ message ProcessingRequest { // Dynamic metadata associated with the request. solo.io.envoy.config.core.v3.Metadata metadata_context = 8; - // The values of properties selected by the ``request_attributes`` - // or ``response_attributes`` list in the configuration. Each entry + // The values of properties selected by the `request_attributes` + // or `response_attributes` list in the configuration. Each entry // in the list is populated from the standard - // :ref:`attributes ` supported across Envoy. + // attributes supported across Envoy. map attributes = 9; // Specify whether the filter that sent this request is running in :ref:`observability_mode // ` // and defaults to false. // - // * A value of ``false`` indicates that the server must respond + // * A value of `false` indicates that the server must respond // to this message by either sending back a matching ProcessingResponse message, // or by closing the stream. - // * A value of ``true`` indicates that the server should not respond to this message, as any + // * A value of `true` indicates that the server should not respond to this message, as any // responses will be ignored. However, it may still close the stream to indicate that no more messages // are needed. // bool observability_mode = 10; } -// For every ProcessingRequest received by the server with the ``observability_mode`` field +// For every ProcessingRequest received by the server with the `observability_mode` field // set to false, the server must send back exactly one ProcessingResponse message. // [#next-free-field: 11] message ProcessingResponse { @@ -132,34 +132,34 @@ message ProcessingResponse { option (validate.required) = true; // The server must send back this message in response to a message with the - // ``request_headers`` field set. + // `request_headers` field set. HeadersResponse request_headers = 1; // The server must send back this message in response to a message with the - // ``response_headers`` field set. + // `response_headers` field set. HeadersResponse response_headers = 2; // The server must send back this message in response to a message with - // the ``request_body`` field set. + // the `request_body` field set. BodyResponse request_body = 3; // The server must send back this message in response to a message with - // the ``response_body`` field set. + // the `response_body` field set. BodyResponse response_body = 4; // The server must send back this message in response to a message with - // the ``request_trailers`` field set. + // the `request_trailers` field set. TrailersResponse request_trailers = 5; // The server must send back this message in response to a message with - // the ``response_trailers`` field set. + // the `response_trailers` field set. TrailersResponse response_trailers = 6; // If specified, attempt to create a locally generated response, send it // downstream, and stop processing additional filters and ignore any // additional messages received from the remote server for this request or // response. If a response has already started -- for example, if this - // message is sent response to a ``response_body`` message -- then + // message is sent response to a `response_body` message -- then // this will either ship the reply directly to the downstream codec, // or reset the stream. ImmediateResponse immediate_response = 7; @@ -189,12 +189,12 @@ message ProcessingResponse { // which has the timeout value specified in // :ref:`message_timeout // ` - // and start a new timer with this ``override_message_timeout`` value and keep the + // and start a new timer with this `override_message_timeout` value and keep the // Envoy ext_proc filter state machine intact. // Has to be >= 1ms and <= // :ref:`max_message_timeout ` // Such message can be sent at most once in a particular Envoy ext_proc filter processing state. - // To enable this API, one has to set ``max_message_timeout`` to a number >= 1ms. + // To enable this API, one has to set `max_message_timeout` to a number >= 1ms. google.protobuf.Duration override_message_timeout = 10; } @@ -205,12 +205,12 @@ message ProcessingResponse { message HttpHeaders { // The HTTP request headers. All header keys will be // lower-cased, because HTTP header keys are case-insensitive. - // The ``headers`` encoding is based on the runtime guard + // The `headers` encoding is based on the runtime guard // envoy_reloadable_features_send_header_raw_value setting. // When it is true, the header value is encoded in the - // :ref:`raw_value ` field. + // raw_value field. // When it is false, the header value is encoded in the - // :ref:`value ` field. + // value field. solo.io.envoy.config.core.v3.HeaderMap headers = 1; // [#not-implemented-hide:] @@ -234,12 +234,12 @@ message HttpBody { // This message contains the trailers. message HttpTrailers { - // The ``trailers`` encoding is based on the runtime guard + // The `trailers` encoding is based on the runtime guard // envoy_reloadable_features_send_header_raw_value setting. // When it is true, the header value is encoded in the - // :ref:`raw_value ` field. + // raw_value field. // When it is false, the header value is encoded in the - // :ref:`value ` field. + // value field. solo.io.envoy.config.core.v3.HeaderMap trailers = 1; } @@ -297,8 +297,8 @@ message CommonResponse { // Replace the body of the last message sent to the remote server on this // stream. If responding to an HttpBody request, simply replace or clear // the body chunk that was sent with that request. Body mutations may take - // effect in response either to ``header`` or ``body`` messages. When it is - // in response to ``header`` messages, it only take effect if the + // effect in response either to `header` or `body` messages. When it is + // in response to `header` messages, it only take effect if the // :ref:`status ` // is set to CONTINUE_AND_REPLACE. BodyMutation body_mutation = 3; @@ -307,12 +307,12 @@ message CommonResponse { // Add new trailers to the message. This may be used when responding to either a // HttpHeaders or HttpBody message, but only if this message is returned // along with the CONTINUE_AND_REPLACE status. - // The ``trailers`` encoding is based on the runtime guard + // The `trailers` encoding is based on the runtime guard // envoy_reloadable_features_send_header_raw_value setting. // When it is true, the header value is encoded in the - // :ref:`raw_value ` field. + // raw_value field. // When it is false, the header value is encoded in the - // :ref:`value ` field. + // value field. solo.io.envoy.config.core.v3.HeaderMap trailers = 4; // Clear the route cache for the current client request. This is necessary @@ -359,18 +359,18 @@ message GrpcStatus { // headers. message HeaderMutation { // Add or replace HTTP headers. Attempts to set the value of - // any ``x-envoy`` header, and attempts to set the ``:method``, - // ``:authority``, ``:scheme``, or ``host`` headers will be ignored. - // The ``set_headers`` encoding is based on the runtime guard + // any `x-envoy` header, and attempts to set the `:method`, + // `:authority`, `:scheme`, or `host` headers will be ignored. + // The `set_headers` encoding is based on the runtime guard // envoy_reloadable_features_send_header_raw_value setting. // When it is true, the header value is encoded in the - // :ref:`raw_value ` field. + // raw_value field. // When it is false, the header value is encoded in the - // :ref:`value ` field. + // value field. repeated solo.io.envoy.config.core.v3.HeaderValueOption set_headers = 1; // Remove these HTTP headers. Attempts to remove system headers -- - // any header starting with ``:``, plus ``host`` -- will be ignored. + // any header starting with `:`, plus `host` -- will be ignored. repeated string remove_headers = 2; } diff --git a/api/gloo/gloo/external/envoy/type/matcher/v3/regex.proto b/api/gloo/gloo/external/envoy/type/matcher/v3/regex.proto index 0ef6a094a..8330941fc 100644 --- a/api/gloo/gloo/external/envoy/type/matcher/v3/regex.proto +++ b/api/gloo/gloo/external/envoy/type/matcher/v3/regex.proto @@ -19,8 +19,8 @@ option (solo.io.udpa.annotations.file_status).package_version_status = ACTIVE; message RegexMatcher { option (solo.io.udpa.annotations.versioning).previous_message_type = "envoy.type.matcher.RegexMatcher"; - // Google's `RE2 `_ regex engine. The regex string must adhere to - // the documented `syntax `_. The engine is designed + // Google's [RE2](https://github.com/google/re2) regex engine. The regex string must adhere to + // the documented [syntax](https://github.com/google/re2/wiki/Syntax). The engine is designed // to complete execution in linear time as well as limit the amount of memory used. // // Envoy supports program size checking via runtime. The runtime keys `re2.max_program_size.error_level` @@ -78,10 +78,9 @@ message RegexMatchAndSubstitute { // subject string during a substitution operation to produce a new string. // Capture groups in the pattern can be referenced in the substitution // string. Note, however, that the syntax for referring to capture groups is - // defined by the chosen regular expression engine. Google's `RE2 - // `_ regular expression engine uses a + // defined by the chosen regular expression engine. Google's [RE2](https://github.com/google/re2) regular expression engine uses a // backslash followed by the capture group number to denote a numbered - // capture group. E.g., ``\1`` refers to capture group 1, and ``\2`` refers + // capture group. E.g., `\1` refers to capture group 1, and `\2` refers // to capture group 2. string substitution = 2; } diff --git a/api/gloo/gloo/external/envoy/type/metadata/v3/metadata.proto b/api/gloo/gloo/external/envoy/type/metadata/v3/metadata.proto index e5258bf95..92774ae9d 100644 --- a/api/gloo/gloo/external/envoy/type/metadata/v3/metadata.proto +++ b/api/gloo/gloo/external/envoy/type/metadata/v3/metadata.proto @@ -14,7 +14,7 @@ option (solo.io.udpa.annotations.file_status).package_version_status = ACTIVE; // [#protodoc-title: Metadata] // MetadataKey provides a general interface using `key` and `path` to retrieve value from -// :ref:`Metadata `. +// Metadata. // // For example, for the following Metadata: // @@ -58,7 +58,7 @@ message MetadataKey { string key = 1 [(validate.rules).string = {min_bytes: 1}]; // The path to retrieve the Value from the Struct. It can be a prefix or a full path, - // e.g. ``[prop, xyz]`` for a struct or ``[prop, foo]`` for a string in the example, + // e.g. `[prop, xyz]` for a struct or `[prop, foo]` for a string in the example, // which depends on the particular scenario. // // Note: Due to that only the key type segment is supported, the path can not specify a list diff --git a/api/gloo/gloo/external/envoy/type/tracing/v3/custom_tag.proto b/api/gloo/gloo/external/envoy/type/tracing/v3/custom_tag.proto index f0997f05f..bb1d60d11 100644 --- a/api/gloo/gloo/external/envoy/type/tracing/v3/custom_tag.proto +++ b/api/gloo/gloo/external/envoy/type/tracing/v3/custom_tag.proto @@ -59,9 +59,9 @@ message CustomTag { } // Metadata type custom tag using - // :ref:`MetadataKey ` to retrieve the protobuf value - // from :ref:`Metadata `, and populate the tag value with - // `the canonical JSON `_ + // MetadataKey to retrieve the protobuf value + // from Metadata, and populate the tag value with + // [the canonical JSON](https://developers.google.com/protocol-buffers/docs/proto3#json) // representation of it. message Metadata { option (solo.io.udpa.annotations.versioning).previous_message_type = diff --git a/api/gloo/gloo/external/xds/core/v3/cidr.proto b/api/gloo/gloo/external/xds/core/v3/cidr.proto index 5dd87b4d5..9c65fd174 100644 --- a/api/gloo/gloo/external/xds/core/v3/cidr.proto +++ b/api/gloo/gloo/external/xds/core/v3/cidr.proto @@ -15,9 +15,9 @@ option go_package = "github.com/cncf/xds/go/xds/core/v3"; option (xds.annotations.v3.file_status).work_in_progress = true; // CidrRange specifies an IP Address and a prefix length to construct -// the subnet mask for a `CIDR `_ range. +// the subnet mask for a [CIDR](https://datatracker.ietf.org/doc/html/rfc4632) range. message CidrRange { - // IPv4 or IPv6 address, e.g. ``192.0.0.0`` or ``2001:db8::``. + // IPv4 or IPv6 address, e.g. `192.0.0.0` or `2001:db8::`. string address_prefix = 1 [(validate.rules).string = {min_len: 1}]; // Length of prefix, e.g. 0, 32. Defaults to 0 when unset. diff --git a/api/gloo/gloo/external/xds/data/orca/v3/orca_load_report.proto b/api/gloo/gloo/external/xds/data/orca/v3/orca_load_report.proto index 4996164a3..40fb298d6 100644 --- a/api/gloo/gloo/external/xds/data/orca/v3/orca_load_report.proto +++ b/api/gloo/gloo/external/xds/data/orca/v3/orca_load_report.proto @@ -23,7 +23,7 @@ message OrcaLoadReport { // Total RPS being served by an endpoint. This should cover all services that an endpoint is // responsible for. - // Deprecated -- use ``rps_fractional`` field instead. + // Deprecated -- use `rps_fractional` field instead. uint64 rps = 3 [deprecated = true]; // Application specific requests costs. Each value is an absolute cost (e.g. 3487 bytes of diff --git a/api/gloo/gloo/external/xds/type/matcher/v3/domain.proto b/api/gloo/gloo/external/xds/type/matcher/v3/domain.proto index 06f11d700..d4c7c54e6 100644 --- a/api/gloo/gloo/external/xds/type/matcher/v3/domain.proto +++ b/api/gloo/gloo/external/xds/type/matcher/v3/domain.proto @@ -20,12 +20,12 @@ option (xds.annotations.v3.file_status).work_in_progress = true; // names with optional wildcards. message ServerNameMatcher { // Specifies a set of exact and wildcard domains and a match action. The - // wildcard symbol ``*`` must appear at most once as the left-most part of + // wildcard symbol `*` must appear at most once as the left-most part of // the domain on a dot border. The wildcard matches one or more non-empty // domain parts. message DomainMatcher { // A non-empty set of domain names with optional wildcards, e.g. - // ``www.example.com``, ``*.com``, or ``*``. + // `www.example.com`, `*.com`, or `*`. repeated string domains = 1 [ (validate.rules).repeated = {min_items : 1} ]; // Match action to apply when the server name matches any of the domain @@ -37,10 +37,10 @@ message ServerNameMatcher { // wildcard, must appear at most once across all the domain matchers. // // The server name will be matched against all wildcard domains starting from - // the longest suffix, i.e. ``www.example.com`` input will be first matched - // against ``www.example.com``, then ``*.example.com``, then ``*.com``, then - // ``*``, until the associated matcher action accepts the input. Note that - // wildcards must be on a dot border, and values like ``*w.example.com`` are + // the longest suffix, i.e. `www.example.com` input will be first matched + // against `www.example.com`, then `*.example.com`, then `*.com`, then + // `*`, until the associated matcher action accepts the input. Note that + // wildcards must be on a dot border, and values like `*w.example.com` are // invalid. repeated DomainMatcher domain_matchers = 1; } diff --git a/api/gloo/gloo/external/xds/type/matcher/v3/http_inputs.proto b/api/gloo/gloo/external/xds/type/matcher/v3/http_inputs.proto index 0dd80cd6f..375f27f39 100644 --- a/api/gloo/gloo/external/xds/type/matcher/v3/http_inputs.proto +++ b/api/gloo/gloo/external/xds/type/matcher/v3/http_inputs.proto @@ -16,10 +16,9 @@ option (xds.annotations.v3.file_status).work_in_progress = true; // Specifies that matching should be performed on the set of :ref:`HTTP attributes // `. // -// The attributes will be exposed via `Common Expression Language -// `_ runtime to associated CEL matcher. +// The attributes will be exposed via [Common Expression Language](https://github.com/google/cel-spec) runtime to associated CEL matcher. // -// Refer to :ref:`Unified Matcher API ` documentation +// Refer to Unified Matcher API documentation // for usage details. // // [#comment:TODO(sergiitk): When implemented, add the extension tag.] diff --git a/api/gloo/gloo/external/xds/type/matcher/v3/ip.proto b/api/gloo/gloo/external/xds/type/matcher/v3/ip.proto index ad3ab065c..cb3dea192 100644 --- a/api/gloo/gloo/external/xds/type/matcher/v3/ip.proto +++ b/api/gloo/gloo/external/xds/type/matcher/v3/ip.proto @@ -37,8 +37,8 @@ message IPMatcher { // first (longest prefix first), then the order of declaration next. // // For example, consider two range matchers: an exclusive matcher *X* on - // ``0.0.0.0/0`` and a matcher *Y* on ``192.0.0.0/2`` with a nested match - // condition *Z*. For the input IP ``192.168.0.1`` matcher *Y* is the most + // `0.0.0.0/0` and a matcher *Y* on `192.0.0.0/2` with a nested match + // condition *Z*. For the input IP `192.168.0.1` matcher *Y* is the most // specific. If its nested match condition *Z* does not accept the input, // then the less specific matcher *X* does not apply either despite the // input being within the range, because matcher *X* is exclusive. diff --git a/api/gloo/gloo/external/xds/type/matcher/v3/regex.proto b/api/gloo/gloo/external/xds/type/matcher/v3/regex.proto index 3ff4ca95c..1b82168cc 100644 --- a/api/gloo/gloo/external/xds/type/matcher/v3/regex.proto +++ b/api/gloo/gloo/external/xds/type/matcher/v3/regex.proto @@ -13,9 +13,8 @@ option go_package = "github.com/cncf/xds/go/xds/type/matcher/v3"; // A regex matcher designed for safety when used with untrusted input. message RegexMatcher { - // Google's `RE2 `_ regex engine. The regex - // string must adhere to the documented `syntax - // `_. The engine is designed to + // Google's [RE2](https://github.com/google/re2) regex engine. The regex + // string must adhere to the documented [syntax](https://github.com/google/re2/wiki/Syntax). The engine is designed to // complete execution in linear time as well as limit the amount of memory // used. // diff --git a/api/gloo/gloo/v1/core/matchers/matchers.proto b/api/gloo/gloo/v1/core/matchers/matchers.proto index 32384b080..2a3bde01b 100644 --- a/api/gloo/gloo/v1/core/matchers/matchers.proto +++ b/api/gloo/gloo/v1/core/matchers/matchers.proto @@ -26,8 +26,7 @@ message Matcher { // If specified, the route is a regular expression rule meaning that the // regex must match the *:path* header once the query string is removed. The entire path // (without the query string) must match the regex. The rule will not match if only a - // sub-sequence of the *:path* header matches the regex. The regex grammar is defined `here - // `_. + // sub-sequence of the *:path* header matches the regex. The regex grammar is defined [here](http://en.cppreference.com/w/cpp/regex/ecmascript). // // Examples:
// @@ -91,7 +90,7 @@ message HeaderMatcher { // Examples: // * name=foo, invert_match=true: matches if no header named `foo` is present // * name=foo, value=bar, invert_match=true: matches if no header named `foo` with value `bar` is present - // * name=foo, value=``\d{3}``, regex=true, invert_match=true: matches if no header named `foo` with a value consisting of three integers is present + // * name=foo, value=`\d{3}`, regex=true, invert_match=true: matches if no header named `foo` with a value consisting of three integers is present bool invert_match = 4; } diff --git a/api/gloo/gloo/v1/enterprise/options/extproc/extproc.proto b/api/gloo/gloo/v1/enterprise/options/extproc/extproc.proto index 1efc4332c..3126483b9 100644 --- a/api/gloo/gloo/v1/enterprise/options/extproc/extproc.proto +++ b/api/gloo/gloo/v1/enterprise/options/extproc/extproc.proto @@ -136,9 +136,9 @@ message Settings { repeated string metadata_context_namespaces = 16; // Specifies a list of metadata namespaces whose values, if present, will be passed to the - // ext_proc service. :ref:`typed_filter_metadata ` is passed as an ``protobuf::Any``. + // ext_proc service. typed_filter_metadata is passed as an `protobuf::Any`. // - // It works in a way similar to ``metadata_context_namespaces`` but allows envoy and external processing server to share the protobuf message definition + // It works in a way similar to `metadata_context_namespaces` but allows envoy and external processing server to share the protobuf message definition // in order to do a safe parsing. repeated string typed_metadata_context_namespaces = 17; @@ -211,9 +211,9 @@ message Overrides { // Specifies a list of metadata namespaces whose values, if present, will be passed to the - // ext_proc service. :ref:`typed_filter_metadata ` is passed as an ``protobuf::Any``. + // ext_proc service. typed_filter_metadata is passed as an `protobuf::Any`. // - // It works in a way similar to ``metadata_context_namespaces`` but allows envoy and external processing server to share the protobuf message definition + // It works in a way similar to `metadata_context_namespaces` but allows envoy and external processing server to share the protobuf message definition // in order to do a safe parsing. repeated string typed_metadata_context_namespaces = 7; } diff --git a/api/gloo/gloo/v1/failover.proto b/api/gloo/gloo/v1/failover.proto index d6b04d505..616022936 100644 --- a/api/gloo/gloo/v1/failover.proto +++ b/api/gloo/gloo/v1/failover.proto @@ -52,8 +52,8 @@ message Failover { // // { "overprovisioning_factor": 100 } // - // Read more at :ref:`priority levels ` and - // :ref:`localities `. + // Read more at priority levels and + // localities. google.protobuf.UInt32Value overprovisioning_factor = 1 [(validate.rules).uint32 = {gt: 0}]; } } @@ -142,9 +142,8 @@ message Locality { string region = 1; // Defines the local service zone where Envoy is running. The meaning of zone - // is context dependent, e.g. `Availability Zone (AZ) - // `_ - // on AWS, `Zone `_ on + // is context dependent, e.g. [Availability Zone (AZ)](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-regions-availability-zones.html) + // on AWS, [Zone](https://cloud.google.com/compute/docs/regions-zones/) on // GCP, etc. string zone = 2; diff --git a/api/gloo/gloo/v1/listener_options.proto b/api/gloo/gloo/v1/listener_options.proto index 8b77032c4..d67a53b4a 100644 --- a/api/gloo/gloo/v1/listener_options.proto +++ b/api/gloo/gloo/v1/listener_options.proto @@ -50,6 +50,10 @@ message ListenerOptions { // For more info see https://www.envoyproxy.io/docs/envoy/latest/api-v3/config/listener/v3/listener.proto#envoy-v3-api-field-config-listener-v3-listener-access-log als.options.gloo.solo.io.AccessLoggingService listener_access_logging_service = 7; + // If true, will wrap all filter chains in the listener with a TCP stats transport socket, which is a + // passthrough listener that can report low-level Linux TCP stats, useful for diagnosis + // and triage. + google.protobuf.BoolValue tcp_stats = 8; } // Configuration for listener connection balancing. @@ -66,4 +70,4 @@ message ConnectionBalanceConfig { ExactBalance exact_balance = 1; -} \ No newline at end of file +} diff --git a/api/gloo/gloo/v1/load_balancer.proto b/api/gloo/gloo/v1/load_balancer.proto index 0b0e537a0..108142aee 100644 --- a/api/gloo/gloo/v1/load_balancer.proto +++ b/api/gloo/gloo/v1/load_balancer.proto @@ -95,8 +95,8 @@ message LoadBalancerConfig { // By tuning the parameter, is possible to achieve polynomial or exponential shape of ramp-up curve. // // During slow start window, effective weight of an endpoint would be scaled with time factor and aggression: - // ``new_weight = weight * max(min_weight_percent, time_factor ^ (1 / aggression))``, - // where ``time_factor=(time_since_start_seconds / slow_start_time_seconds)``. + // `new_weight = weight * max(min_weight_percent, time_factor ^ (1 / aggression))`, + // where `time_factor=(time_since_start_seconds / slow_start_time_seconds)`. // // As time progresses, more and more traffic would be sent to endpoint, which is in slow start window. // Once host exits slow start, time_factor and aggression no longer affect its weight. diff --git a/api/gloo/gloo/v1/options/als/als.proto b/api/gloo/gloo/v1/options/als/als.proto index 70d3e236e..3b83d18d6 100644 --- a/api/gloo/gloo/v1/options/als/als.proto +++ b/api/gloo/gloo/v1/options/als/als.proto @@ -149,7 +149,7 @@ message TraceableFilter { // Filters for random sampling of requests. message RuntimeFilter { // Runtime key to get an optional overridden numerator for use in the - // ``percent_sampled`` field. If found in runtime, this value will replace the + // `percent_sampled` field. If found in runtime, this value will replace the // default numerator. string runtime_key = 1 [(validate.rules).string = {min_len: 1}]; @@ -163,9 +163,9 @@ message RuntimeFilter { // is present, the filter will consistently sample across multiple hosts based // on the runtime key value and the value extracted from // :ref:`x-request-id`. If it is - // missing, or ``use_independent_randomness`` is set to true, the filter will + // missing, or `use_independent_randomness` is set to true, the filter will // randomly sample based on the runtime key value alone. - // ``use_independent_randomness`` can be used for logging kill switches within + // `use_independent_randomness` can be used for logging kill switches within // complex nested :ref:`AndFilter // ` and :ref:`OrFilter // ` blocks that are easier to diff --git a/api/gloo/gloo/v1/options/dynamic_forward_proxy/dynamic_forward_proxy.proto b/api/gloo/gloo/v1/options/dynamic_forward_proxy/dynamic_forward_proxy.proto index d6e368d93..7f475fe48 100644 --- a/api/gloo/gloo/v1/options/dynamic_forward_proxy/dynamic_forward_proxy.proto +++ b/api/gloo/gloo/v1/options/dynamic_forward_proxy/dynamic_forward_proxy.proto @@ -65,20 +65,20 @@ message DnsCacheConfig { // The TTL for hosts that are unused. Hosts that have not been used in the configured time // interval will be purged. If not specified defaults to 5m. // - // .. note: + // **Note**: // // The TTL is only checked at the time of DNS refresh, as specified by *dns_refresh_rate*. This // means that if the configured TTL is shorter than the refresh rate the host may not be removed // immediately. // - // .. note: + // **Note**: // // The TTL has no relation to DNS TTL and is only used to control Envoy's resource usage. google.protobuf.Duration host_ttl = 4 [(validate.rules).duration = {gt {}}]; // The maximum number of hosts that the cache will hold. If not specified defaults to 1024. // - // .. note: + // **Note**: // // The implementation is approximate and enforced independently on each worker thread, thus // it is possible for the maximum hosts in the cache to go slightly above the configured @@ -141,7 +141,7 @@ enum DnsLookupFamily { message RefreshRate { // Specifies the base interval between refreshes. This parameter is required and must be greater // than 1ms and less than - // :ref:`max_interval `. + // max_interval. google.protobuf.Duration base_interval = 1 [(validate.rules).duration = { required: true gt {nanos: 1000000} @@ -149,8 +149,8 @@ message RefreshRate { // Specifies the maximum interval between refreshes. This parameter is optional, but must be // greater than or equal to the - // :ref:`base_interval ` if set. The default - // is 10 times the :ref:`base_interval `. + // base_interval if set. The default + // is 10 times the base_interval. google.protobuf.Duration max_interval = 2 [(validate.rules).duration = {gt {nanos: 1000000}}]; } @@ -163,7 +163,7 @@ message PerRouteConfig { // // Note: this rewrite affects both DNS lookup and host header forwarding. However, this // option shouldn't be used with - // :ref:`HCM host rewrite ` given that the + // HCM host rewrite given that the // value set here would be used for DNS lookups whereas the value set in the HCM would be used // for host header forwarding which is not the desired outcome. string host_rewrite = 1; @@ -178,7 +178,7 @@ message PerRouteConfig { // given that the value set here would be used for DNS lookups whereas the value set in the HCM // would be used for host header forwarding which is not the desired outcome. // - // .. note:: + // **Note**: // // If the header appears multiple times only the first value is used. string auto_host_rewrite_header = 2; diff --git a/api/gloo/gloo/v1/options/grpc_json/grpc_json.proto b/api/gloo/gloo/v1/options/grpc_json/grpc_json.proto index f1e969aeb..f0204e45d 100644 --- a/api/gloo/gloo/v1/options/grpc_json/grpc_json.proto +++ b/api/gloo/gloo/v1/options/grpc_json/grpc_json.proto @@ -15,7 +15,7 @@ option (extproto.clone_all) = true; import "validate/validate.proto"; // [#protodoc-title: gRPC-JSON transcoder] -// gRPC-JSON transcoder :ref:`configuration overview `. +// gRPC-JSON transcoder configuration overview. // [#extension: envoy.filters.http.grpc_json_transcoder] // [#next-free-field: 10] @@ -39,7 +39,7 @@ message GrpcJsonTranscoder { bool always_print_enums_as_ints = 3; // Whether to preserve proto field names. By default protobuf will - // generate JSON field names using the ``json_name`` option, or lower camel case, + // generate JSON field names using the `json_name` option, or lower camel case, // in that order. Setting this flag will preserve the original field names. Defaults to false. bool preserve_proto_field_names = 4; } @@ -77,14 +77,13 @@ message GrpcJsonTranscoder { // A list of strings that // supplies the fully qualified service names (i.e. "package_name.service_name") that - // the transcoder will translate. If the service name doesn't exist in ``proto_descriptor``, - // Envoy will fail at startup. The ``proto_descriptor`` may contain more services than + // the transcoder will translate. If the service name doesn't exist in `proto_descriptor`, + // Envoy will fail at startup. The `proto_descriptor` may contain more services than // the service names specified here, but they won't be translated. repeated string services = 2 [(validate.rules).repeated = {min_items: 1}]; // Control options for response JSON. These options are passed directly to - // `JsonPrintOptions `_. + // [JsonPrintOptions](https://developers.google.com/protocol-buffers/docs/reference/cpp/google.protobuf.util.json_util#JsonPrintOptions). PrintOptions print_options = 3; // Whether to keep the incoming request route after the outgoing headers have been transformed to @@ -121,12 +120,12 @@ message GrpcJsonTranscoder { // // message Shelf {} // - // The request ``/shelves/100?foo=bar`` will not be mapped to ``GetShelf``` because variable - // binding for ``foo`` is not defined. Adding ``foo`` to ``ignored_query_parameters`` will allow - // the same request to be mapped to ``GetShelf``. + // The request `/shelves/100?foo=bar` will not be mapped to `GetShelf` because variable + // binding for `foo` is not defined. Adding `foo` to `ignored_query_parameters` will allow + // the same request to be mapped to `GetShelf`. repeated string ignored_query_parameters = 6; - // Whether to route methods without the ``google.api.http`` option. + // Whether to route methods without the `google.api.http` option. // // Example : // @@ -144,22 +143,22 @@ message GrpcJsonTranscoder { // // message Shelf {} // - // The client could ``post`` a json body ``{"shelf": 1234}`` with the path of - // ``/bookstore.Bookstore/GetShelfRequest`` to call ``GetShelfRequest``. + // The client could `post` a json body `{"shelf": 1234}` with the path of + // `/bookstore.Bookstore/GetShelfRequest` to call `GetShelfRequest`. bool auto_mapping = 7; // Whether to ignore query parameters that cannot be mapped to a corresponding // protobuf field. Use this if you cannot control the query parameters and do - // not know them beforehand. Otherwise use ``ignored_query_parameters``. + // not know them beforehand. Otherwise use `ignored_query_parameters`. // Defaults to false. bool ignore_unknown_query_parameters = 8; // Whether to convert gRPC status headers to JSON. - // When trailer indicates a gRPC error and there was no HTTP body, take ``google.rpc.Status`` - // from the ``grpc-status-details-bin`` header and use it as JSON body. - // If there was no such header, make ``google.rpc.Status`` out of the ``grpc-status`` and - // ``grpc-message`` headers. - // The error details types must be present in the ``proto_descriptor``. + // When trailer indicates a gRPC error and there was no HTTP body, take `google.rpc.Status` + // from the `grpc-status-details-bin` header and use it as JSON body. + // If there was no such header, make `google.rpc.Status` out of the `grpc-status` and + // `grpc-message` headers. + // The error details types must be present in the `proto_descriptor`. // // For example, if an upstream server replies with headers: // @@ -169,8 +168,8 @@ message GrpcJsonTranscoder { // grpc-status-details-bin: // CAUaMwoqdHlwZS5nb29nbGVhcGlzLmNvbS9nb29nbGUucnBjLlJlcXVlc3RJbmZvEgUKA3ItMQ // - // The ``grpc-status-details-bin`` header contains a base64-encoded protobuf message - // ``google.rpc.Status``. It will be transcoded into: + // The `grpc-status-details-bin` header contains a base64-encoded protobuf message + // `google.rpc.Status`. It will be transcoded into: // // .. code-block:: none // @@ -179,8 +178,8 @@ message GrpcJsonTranscoder { // // {"code":5,"details":[{"@type":"type.googleapis.com/google.rpc.RequestInfo","requestId":"r-1"}]} // - // In order to transcode the message, the ``google.rpc.RequestInfo`` type from - // the ``google/rpc/error_details.proto`` should be included in the configured - // :ref:`proto descriptor set `. + // In order to transcode the message, the `google.rpc.RequestInfo` type from + // the `google/rpc/error_details.proto` should be included in the configured + // proto descriptor set. bool convert_grpc_status = 9; } \ No newline at end of file diff --git a/api/gloo/gloo/v1/options/hcm/hcm.proto b/api/gloo/gloo/v1/options/hcm/hcm.proto index 5797b88e9..5375dcc9e 100644 --- a/api/gloo/gloo/v1/options/hcm/hcm.proto +++ b/api/gloo/gloo/v1/options/hcm/hcm.proto @@ -10,6 +10,7 @@ import "google/protobuf/any.proto"; import "github.com/solo-io/solo-apis/api/gloo/gloo/v1/options/tracing/tracing.proto"; import "github.com/solo-io/solo-apis/api/gloo/gloo/v1/options/protocol_upgrade/protocol_upgrade.proto"; import "github.com/solo-io/solo-apis/api/gloo/gloo/v1/options/protocol/protocol.proto"; +import "github.com/solo-io/solo-apis/api/gloo/gloo/v1/options/headers/headers.proto"; import "extproto/ext.proto"; @@ -240,4 +241,7 @@ message HttpConnectionManagerSettings { InternalAddressConfig internal_address_config = 38; // If true, configure Envoy to set the x-fowarded-port header to allow services to find Envoy's listener port. google.protobuf.BoolValue append_x_forwarded_port = 40; + + // Configuration for early header manipulation + headers.options.gloo.solo.io.EarlyHeaderManipulation early_header_manipulation = 41; } diff --git a/api/gloo/gloo/v1/options/headers/headers.proto b/api/gloo/gloo/v1/options/headers/headers.proto index c3ad2578a..6e19841ac 100644 --- a/api/gloo/gloo/v1/options/headers/headers.proto +++ b/api/gloo/gloo/v1/options/headers/headers.proto @@ -40,6 +40,23 @@ message HeaderManipulation { repeated string response_headers_to_remove = 4; } +// EarlyHeaderManipulation can be specified on Gateways to manipulate headers before significant processing +// has happened and routing decisions are made. +// Early header manipulation allows adding/removing headers that affect request processing +// and can be used to implement override headers. +// Note: The adding of headers happens before the removal of headers. +message EarlyHeaderManipulation { + // Specifies a list of HTTP headers that should be added to each request + // handled by this gateway. For more information, including + // details on header value syntax, see the + // [Envoy documentation](https://www.envoyproxy.io/docs/envoy/latest/configuration/http/http_conn_man/headers.html#) . + repeated .solo.io.envoy.api.v2.core.HeaderValueOption headers_to_add = 1; + + + // Specifies a list of HTTP headers that should be removed from each request + // handled by this gateway. + repeated string headers_to_remove = 2; +} // Header name/value pair plus option to control append behavior. message HeaderValueOption { diff --git a/api/gloo/gloo/v1/options/protocol/protocol.proto b/api/gloo/gloo/v1/options/protocol/protocol.proto index ce14288e6..814b971bc 100644 --- a/api/gloo/gloo/v1/options/protocol/protocol.proto +++ b/api/gloo/gloo/v1/options/protocol/protocol.proto @@ -20,7 +20,7 @@ message HttpProtocolOptions { // Note that request based timeouts mean that HTTP/2 PINGs will not keep the connection alive. // If not specified, this defaults to 1 hour. To disable idle timeouts explicitly set this to 0. // - // .. warning:: + // **Warning**: // Disabling this timeout has a highly likelihood of yielding connection leaks due to lost TCP // FIN packets, etc. google.protobuf.Duration idle_timeout = 1; @@ -89,7 +89,7 @@ message Http1ProtocolOptions { } message Http2ProtocolOptions { - // `Maximum concurrent streams `_ + // [Maximum concurrent streams](https://httpwg.org/specs/rfc7540.html#rfc.section.5.1.2) // allowed for peer on one HTTP/2 connection. Valid values range from 1 to 2147483647 (2^31 - 1) // and defaults to 2147483647. // @@ -102,8 +102,7 @@ message Http2ProtocolOptions { // not the per-connection negotiated limits. google.protobuf.UInt32Value max_concurrent_streams = 2; - // `Initial stream-level flow-control window - // `_ size. Valid values range from 65535 + // [Initial stream-level flow-control window](https://httpwg.org/specs/rfc7540.html#rfc.section.6.9.2) size. Valid values range from 65535 // (2^16 - 1, HTTP/2 default) to 2147483647 (2^31 - 1, HTTP/2 maximum) and defaults to 268435456 // (256 * 1024 * 1024). // @@ -126,7 +125,7 @@ message Http2ProtocolOptions { // This overrides any HCM :ref:`stream_error_on_invalid_http_messaging // ` // - // See `RFC7540, sec. 8.1 `_ for details. + // See [RFC7540, sec. 8.1](https://datatracker.ietf.org/doc/html/rfc7540#section-8.1) for details. google.protobuf.BoolValue override_stream_error_on_invalid_http_message = 14; } diff --git a/api/gloo/gloo/v1/options/proxy_protocol/proxy_protocol.proto b/api/gloo/gloo/v1/options/proxy_protocol/proxy_protocol.proto index a6dd624d4..f45f7b69f 100644 --- a/api/gloo/gloo/v1/options/proxy_protocol/proxy_protocol.proto +++ b/api/gloo/gloo/v1/options/proxy_protocol/proxy_protocol.proto @@ -23,8 +23,7 @@ message ProxyProtocol { // A Rule defines what metadata to apply when a header is present or missing. message Rule { // The type that triggers the rule - required - // TLV type is defined as uint8_t in proxy protocol. See `the spec - // `_ for details. + // TLV type is defined as uint8_t in proxy protocol. See [the spec](https://www.haproxy.org/download/2.1/doc/proxy-protocol.txt) for details. uint32 tlv_type = 1 [(validate.rules).uint32 = {lt: 256}]; // If the TLV type is present, apply this metadata KeyValuePair. @@ -36,7 +35,7 @@ message ProxyProtocol { // Allow requests through that don't use proxy protocol. Defaults to false. // - // .. attention:: + // **Attention**: // // The true setting is only honored in Gloo Edge Enterprise. // This breaks conformance with the specification. diff --git a/api/gloo/gloo/v1/options/transformation/transformation.proto b/api/gloo/gloo/v1/options/transformation/transformation.proto index 0c68826aa..6736471fe 100644 --- a/api/gloo/gloo/v1/options/transformation/transformation.proto +++ b/api/gloo/gloo/v1/options/transformation/transformation.proto @@ -61,7 +61,7 @@ message TransformationStages { // Post routing transformations happen during the router filter chain. This is important for a number of reasons // 1. Retries re-trigger this filter, which might impact performance. // 2. It is the only point where endpoint metadata is available. - // 3. `clear_route_cache` does NOT work in this stage as the routing decision is already made. + // 3. `clear_route_cache` does NOT work in this stage as the routing decision is already made. // Enterprise only RequestResponseTransformations post_routing = 6; // Inherit transformation config from parent. This has no affect on VirtualHost level transformations. @@ -111,8 +111,8 @@ message Extraction { enum Mode { // Default mode. Extract the content of a specified capturing group. In this mode, // `subgroup` selects the n-th capturing group, which represents the value that - // you want to extract. - EXTRACT = 0; + // you want to extract. + EXTRACT = 0; // Replace the content of a specified capturing group. In this mode, `subgroup` selects the // n-th capturing group, which represents the value that you want to replace with // the string provided in `replacement_text`. @@ -286,7 +286,7 @@ message TransformationTemplate { // A template that determines the metadata value. InjaTemplate value = 3; - + // Instruct the filter to parse the rendered value as a proto Struct message // before setting it as the metadata value. bool json_to_proto = 4; @@ -299,6 +299,29 @@ message TransformationTemplate { // sets the behavior for the entire transformation. Use raw_strings function // for fine-grained control within a template. google.protobuf.BoolValue escape_characters = 12; + + // Definitions for span transformations for tracing purposes. + message SpanTransformer { + // A template that sets the span name. For example, to set the span name to + // the value of the host header, you can set this value to + // `'{{header("Host")}}'` + InjaTemplate name = 1; + + // TODO if we want to set attributes as well, add fields to modify them here. + } + + // These field numbers are used in envoy-gloo but not exposed. Let's reserve + // them so we do not drift in numbers between the transformation filter in + // `envoy-gloo` and our gloo control plane API. + // 14: string_delimiter + // https://github.com/solo-io/envoy-gloo/blob/0a088716a0cc04409ad926e7364363c6de4a83a5/api/envoy/config/filter/http/transformation/v2/transformation_filter.proto#L321 + reserved 14; + + // Use this field to modify the span of the trace. This field can only be + // applied on requestTransformations. Attempting to set this on a + // responseTransformation will result in an error. + SpanTransformer span_transformer = 15; + } // Defines an [Inja template](https://github.com/pantor/inja) that will be diff --git a/api/gloo/gloo/v1/proxy.proto b/api/gloo/gloo/v1/proxy.proto index 781ca466e..62e161958 100644 --- a/api/gloo/gloo/v1/proxy.proto +++ b/api/gloo/gloo/v1/proxy.proto @@ -532,22 +532,22 @@ message RedirectAction { // Only one of :ref:`prefix_rewrite ` // or *regex_rewrite* may be specified. // - // Examples using Google's `RE2 `_ engine: + // Examples using Google's [RE2](https://github.com/google/re2) engine: // - // * The path pattern ``^/service/([^/]+)(/.*)$`` paired with a substitution - // string of ``\2/instance/\1`` would transform ``/service/foo/v1/api`` - // into ``/v1/api/instance/foo``. + // * The path pattern `^/service/([^/]+)(/.*)$` paired with a substitution + // string of `\2/instance/\1` would transform `/service/foo/v1/api` + // into `/v1/api/instance/foo`. // - // * The pattern ``one`` paired with a substitution string of ``two`` would - // transform ``/xxx/one/yyy/one/zzz`` into ``/xxx/two/yyy/two/zzz``. + // * The pattern `one` paired with a substitution string of `two` would + // transform `/xxx/one/yyy/one/zzz` into `/xxx/two/yyy/two/zzz`. // - // * The pattern ``^(.*?)one(.*)$`` paired with a substitution string of - // ``\1two\2`` would replace only the first occurrence of ``one``, - // transforming path ``/xxx/one/yyy/one/zzz`` into ``/xxx/two/yyy/one/zzz``. + // * The pattern `^(.*?)one(.*)$` paired with a substitution string of + // `\1two\2` would replace only the first occurrence of `one`, + // transforming path `/xxx/one/yyy/one/zzz` into `/xxx/two/yyy/one/zzz`. // - // * The pattern ``(?i)/xxx/`` paired with a substitution string of ``/yyy/`` - // would do a case-insensitive match and transform path ``/aaa/XxX/bbb`` to - // ``/aaa/yyy/bbb``. + // * The pattern `(?i)/xxx/` paired with a substitution string of `/yyy/` + // would do a case-insensitive match and transform path `/aaa/XxX/bbb` to + // `/aaa/yyy/bbb`. .solo.io.envoy.type.matcher.v3.RegexMatchAndSubstitute regex_rewrite = 32; } diff --git a/api/gloo/gloo/v1/upstream.proto b/api/gloo/gloo/v1/upstream.proto index fa6ce0016..5bd04046a 100644 --- a/api/gloo/gloo/v1/upstream.proto +++ b/api/gloo/gloo/v1/upstream.proto @@ -84,7 +84,7 @@ message UpstreamSpec { enum ClusterProtocolSelection { // Cluster can only operate on one of the possible upstream protocols (HTTP1.1, HTTP2). - // If :ref:`http2_protocol_options ` are + // If http2_protocol_options are // present, HTTP2 will be used, otherwise HTTP1.1 will be used. USE_CONFIGURED_PROTOCOL = 0; @@ -128,7 +128,7 @@ message UpstreamSpec { // This overrides any HCM :ref:`stream_error_on_invalid_http_messaging // ` // - // See `RFC7540, sec. 8.1 `_ for details. + // See [RFC7540, sec. 8.1](https://datatracker.ietf.org/doc/html/rfc7540#section-8.1) for details. google.protobuf.BoolValue override_stream_error_on_invalid_http_message = 26; // Tells envoy that the upstream is an HTTP proxy (e.g., another proxy in a DMZ) that supports HTTP Connect. @@ -230,7 +230,7 @@ message PreconnectPolicy { // Indicates how many streams (rounded up) can be anticipated across a cluster for each // stream, useful for low QPS services. This is currently supported for a subset of // deterministic non-hash-based load-balancing algorithms (weighted round robin, random). - // Unlike ``per_upstream_preconnect_ratio`` this preconnects across the upstream instances in a + // Unlike `per_upstream_preconnect_ratio` this preconnects across the upstream instances in a // cluster, doing best effort predictions of what upstream would be picked next and // pre-establishing a connection. // diff --git a/api/gloo/graphql.gloo/v1beta1/graphql.proto b/api/gloo/graphql.gloo/v1beta1/graphql.proto index 302b138b9..aa7e343c9 100644 --- a/api/gloo/graphql.gloo/v1beta1/graphql.proto +++ b/api/gloo/graphql.gloo/v1beta1/graphql.proto @@ -165,12 +165,12 @@ message GrpcDescriptorRegistry { option (validate.required) = true; // Supplies the filename of - // :ref:`the proto descriptor set ` for the gRPC + // the proto descriptor set for the gRPC // services. string proto_descriptor = 1; // Supplies the binary content of - // :ref:`the proto descriptor set ` for the gRPC + // the proto descriptor set for the gRPC // services. // Note: in yaml, this must be provided as a base64 standard encoded string; yaml cannot handle binary bytes bytes proto_descriptor_bin = 2; diff --git a/pkg/api/gloo.solo.io/external/envoy/api/v2/core/health_check.pb.go b/pkg/api/gloo.solo.io/external/envoy/api/v2/core/health_check.pb.go index 8df3b5622..5655cd239 100644 --- a/pkg/api/gloo.solo.io/external/envoy/api/v2/core/health_check.pb.go +++ b/pkg/api/gloo.solo.io/external/envoy/api/v2/core/health_check.pb.go @@ -42,9 +42,9 @@ const ( // Unhealthy. HealthStatus_UNHEALTHY HealthStatus = 2 // Connection draining in progress. E.g., - // ``_ + // https://aws.amazon.com/blogs/aws/elb-connection-draining-remove-instances-from-service-with-care/ // or - // ``_. + // https://cloud.google.com/compute/docs/load-balancing/enabling-connection-draining. // This is interpreted by Envoy as *UNHEALTHY*. HealthStatus_DRAINING HealthStatus = 3 // Health check timed out. This is part of HDS and is interpreted by Envoy as @@ -482,7 +482,7 @@ type HealthCheck_HttpHealthCheck struct { // HTTP Method that will be used for health checking, default is "GET". // GET, HEAD, POST, PUT, DELETE, OPTIONS, TRACE, PATCH methods are supported, but making request body is not supported. // CONNECT method is disallowed because it is not appropriate for health check request. - // If a non-200 response is expected by the method, it needs to be set in :ref:`expected_statuses `. + // If a non-200 response is expected by the method, it needs to be set in expected_statuses. Method v3.RequestMethod `protobuf:"varint,11,opt,name=method,proto3,enum=solo.io.envoy.config.core.v3.RequestMethod" json:"method,omitempty"` } @@ -645,7 +645,7 @@ type HealthCheck_RedisHealthCheck struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // If set, optionally perform “EXISTS “ instead of “PING“. A return value + // If set, optionally perform `EXISTS ` instead of `PING`. A return value // from Redis of 0 (does not exist) is considered a passing healthcheck. A return value other // than 0 is considered a failure. This allows the user to mark a Redis instance for maintenance // by setting the specified key to any value and waiting for traffic to drain. @@ -691,9 +691,8 @@ func (x *HealthCheck_RedisHealthCheck) GetKey() string { return "" } -// `grpc.health.v1.Health -// `_-based -// healthcheck. See `gRPC doc `_ +// [grpc.health.v1.Health](https://github.com/grpc/grpc/blob/master/src/proto/grpc/health/v1/health.proto)-based +// healthcheck. See [gRPC doc](https://github.com/grpc/grpc/blob/master/doc/health-checking.md) // for details. type HealthCheck_GrpcHealthCheck struct { state protoimpl.MessageState @@ -701,10 +700,8 @@ type HealthCheck_GrpcHealthCheck struct { unknownFields protoimpl.UnknownFields // An optional service name parameter which will be sent to gRPC service in - // `grpc.health.v1.HealthCheckRequest - // `_. - // message. See `gRPC health-checking overview - // `_ for more information. + // [grpc.health.v1.HealthCheckRequest](https://github.com/grpc/grpc/blob/master/src/proto/grpc/health/v1/health.proto#L20) + // message. See [gRPC health-checking overview](https://github.com/grpc/grpc/blob/master/doc/health-checking.md) for more information. ServiceName string `protobuf:"bytes,1,opt,name=service_name,json=serviceName,proto3" json:"service_name,omitempty"` // The value of the :authority header in the gRPC health check request. If // left empty (default value), the name of the cluster this health check is associated diff --git a/pkg/api/gloo.solo.io/external/envoy/api/v2/route/route.pb.go b/pkg/api/gloo.solo.io/external/envoy/api/v2/route/route.pb.go index 3546d02f6..e9feabe51 100644 --- a/pkg/api/gloo.solo.io/external/envoy/api/v2/route/route.pb.go +++ b/pkg/api/gloo.solo.io/external/envoy/api/v2/route/route.pb.go @@ -257,18 +257,18 @@ type VirtualHost struct { // // Domain search order: // - // 1. Exact domain names: “www.foo.com“. + // 1. Exact domain names: `www.foo.com`. // - // 2. Suffix domain wildcards: “*.foo.com“ or “*-bar.foo.com“. + // 2. Suffix domain wildcards: `*.foo.com` or `*-bar.foo.com`. // - // 3. Prefix domain wildcards: “foo.*“ or “foo-*“. + // 3. Prefix domain wildcards: `foo.*` or `foo-*`. // - // 4. Special wildcard “*“ matching any domain. + // 4. Special wildcard `*` matching any domain. // // The wildcard will not match the empty string. - // e.g. “*-bar.foo.com“ will match “baz-bar.foo.com“ but not “-bar.foo.com“. + // e.g. `*-bar.foo.com` will match `baz-bar.foo.com` but not `-bar.foo.com`. // The longest wildcards match first. - // Only a single virtual host in the entire route configuration can match on “*“. A domain + // Only a single virtual host in the entire route configuration can match on `*`. A domain // must be unique across all virtual hosts or the config will fail to load. Domains []string `protobuf:"bytes,2,rep,name=domains,proto3" json:"domains,omitempty"` // The list of routes that will be matched, in order, for incoming requests. @@ -957,8 +957,7 @@ type RouteMatch_Regex struct { // If specified, the route is a regular expression rule meaning that the // regex must match the *:path* header once the query string is removed. The entire path // (without the query string) must match the regex. The rule will not match if only a - // subsequence of the *:path* header matches the regex. The regex grammar is defined `here - // `_. + // subsequence of the *:path* header matches the regex. The regex grammar is defined [here](https://en.cppreference.com/w/cpp/regex/ecmascript). // // Examples: // @@ -1279,7 +1278,7 @@ type RouteAction struct { // Indicates that the route has a CORS policy. Cors *CorsPolicy `protobuf:"bytes,17,opt,name=cors,proto3" json:"cors,omitempty"` // If present, and the request is a gRPC request, use the - // `grpc-timeout header `_, + // [grpc-timeout header](https://github.com/grpc/grpc/blob/master/doc/PROTOCOL-HTTP2.md), // or its default value (infinity) instead of // `timeout (envoy_api_field_route.RouteAction.timeout)`, but limit the applied timeout // to the maximum value specified here. If configured as 0, the maximum allowed timeout for @@ -2192,8 +2191,7 @@ type VirtualCluster struct { unknownFields protoimpl.UnknownFields // Specifies a regex pattern to use for matching requests. The entire path of the request - // must match the regex. The regex grammar used is defined `here - // `_. + // must match the regex. The regex grammar used is defined [here](https://en.cppreference.com/w/cpp/regex/ecmascript). // // Examples: // @@ -2495,7 +2493,7 @@ type HeaderMatcher_RegexMatch struct { // If specified, this regex string is a regular expression rule which implies the entire request // header value must match the regex. The rule will not match if only a subsequence of the // request header value matches the regex. The regex grammar used in the value field is defined - // `here `_. + // [here](https://en.cppreference.com/w/cpp/regex/ecmascript). // // Examples: // @@ -3727,7 +3725,7 @@ func (*RateLimit_Action_HeaderValueMatch_) isRateLimit_Action_ActionSpecifier() // // ``` // -// is derived from the :option:`--service-cluster` option. +// is derived from the `--service-cluster` option. type RateLimit_Action_SourceCluster struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache diff --git a/pkg/api/gloo.solo.io/external/envoy/config/common/mutation_rules/v3/mutation_rules.pb.go b/pkg/api/gloo.solo.io/external/envoy/config/common/mutation_rules/v3/mutation_rules.pb.go index 8196331e1..998f80c01 100644 --- a/pkg/api/gloo.solo.io/external/envoy/config/common/mutation_rules/v3/mutation_rules.pb.go +++ b/pkg/api/gloo.solo.io/external/envoy/config/common/mutation_rules/v3/mutation_rules.pb.go @@ -40,22 +40,22 @@ const ( // denoted by an x-envoy prefix) or specific headers that may affect // further filter processing: // -// * “host“ -// * “:authority“ -// * “:scheme“ -// * “:method“ +// * `host` +// * `:authority` +// * `:scheme` +// * `:method` // // Every attempt to add, change, append, or remove a header will be // tested against the rules here. Disallowed header mutations will be -// ignored unless “disallow_is_error“ is set to true. +// ignored unless `disallow_is_error` is set to true. // // Attempts to remove headers are further constrained -- regardless of the -// settings, system-defined headers (that start with “:“) and the “host“ +// settings, system-defined headers (that start with `:`) and the `host` // header may never be removed. // // In addition, a counter will be incremented whenever a mutation is // rejected. In the ext_proc filter, that counter is named -// “rejected_header_mutations“. +// `rejected_header_mutations`. // [#next-free-field: 8] type HeaderMutationRules struct { state protoimpl.MessageState @@ -64,27 +64,27 @@ type HeaderMutationRules struct { // By default, certain headers that could affect processing of subsequent // filters or request routing cannot be modified. These headers are - // “host“, “:authority“, “:scheme“, and “:method“. Setting this parameter + // `host`, `:authority`, `:scheme`, and `:method`. Setting this parameter // to true allows these headers to be modified as well. AllowAllRouting *wrappers.BoolValue `protobuf:"bytes,1,opt,name=allow_all_routing,json=allowAllRouting,proto3" json:"allow_all_routing,omitempty"` // If true, allow modification of envoy internal headers. By default, these - // start with “x-envoy“ but this may be overridden in the “Bootstrap“ + // start with `x-envoy` but this may be overridden in the `Bootstrap` // configuration using the // :ref:`header_prefix ` // field. Default is false. AllowEnvoy *wrappers.BoolValue `protobuf:"bytes,2,opt,name=allow_envoy,json=allowEnvoy,proto3" json:"allow_envoy,omitempty"` // If true, prevent modification of any system header, defined as a header - // that starts with a “:“ character, regardless of any other settings. - // A processing server may still override the “:status“ of an HTTP response - // using an “ImmediateResponse“ message. Default is false. + // that starts with a `:` character, regardless of any other settings. + // A processing server may still override the `:status` of an HTTP response + // using an `ImmediateResponse` message. Default is false. DisallowSystem *wrappers.BoolValue `protobuf:"bytes,3,opt,name=disallow_system,json=disallowSystem,proto3" json:"disallow_system,omitempty"` // If true, prevent modifications of all header values, regardless of any - // other settings. A processing server may still override the “:status“ - // of an HTTP response using an “ImmediateResponse“ message. Default is false. + // other settings. A processing server may still override the `:status` + // of an HTTP response using an `ImmediateResponse` message. Default is false. DisallowAll *wrappers.BoolValue `protobuf:"bytes,4,opt,name=disallow_all,json=disallowAll,proto3" json:"disallow_all,omitempty"` // If set, specifically allow any header that matches this regular // expression. This overrides all other settings except for - // “disallow_expression“. + // `disallow_expression`. AllowExpression *v3.RegexMatcher `protobuf:"bytes,5,opt,name=allow_expression,json=allowExpression,proto3" json:"allow_expression,omitempty"` // If set, specifically disallow any header that matches this regular // expression regardless of any other settings. @@ -93,7 +93,7 @@ type HeaderMutationRules struct { // disallowed, then the filter using this configuration will terminate the // request with a 500 error. In addition, regardless of the setting of this // parameter, any attempt to set, add, or modify a disallowed header will - // cause the “rejected_header_mutations“ counter to be incremented. + // cause the `rejected_header_mutations` counter to be incremented. // Default is false. DisallowIsError *wrappers.BoolValue `protobuf:"bytes,7,opt,name=disallow_is_error,json=disallowIsError,proto3" json:"disallow_is_error,omitempty"` } diff --git a/pkg/api/gloo.solo.io/external/envoy/config/core/v3/address.pb.go b/pkg/api/gloo.solo.io/external/envoy/config/core/v3/address.pb.go index 386654df5..4fc2c1ef9 100644 --- a/pkg/api/gloo.solo.io/external/envoy/config/core/v3/address.pb.go +++ b/pkg/api/gloo.solo.io/external/envoy/config/core/v3/address.pb.go @@ -138,17 +138,17 @@ type SocketAddress struct { unknownFields protoimpl.UnknownFields Protocol SocketAddress_Protocol `protobuf:"varint,1,opt,name=protocol,proto3,enum=solo.io.envoy.config.core.v3.SocketAddress_Protocol" json:"protocol,omitempty"` - // The address for this socket. :ref:`Listeners ` will bind - // to the address. An empty address is not allowed. Specify “0.0.0.0“ or “::“ + // The address for this socket. Listeners will bind + // to the address. An empty address is not allowed. Specify `0.0.0.0` or `::` // to bind to any address. [#comment:TODO(zuercher) reinstate when implemented: // It is possible to distinguish a Listener address via the prefix/suffix matching - // in :ref:`FilterChainMatch `.] When used - // within an upstream :ref:`BindConfig `, the address + // in FilterChainMatch.] When used + // within an upstream BindConfig, the address // controls the source address of outbound connections. For :ref:`clusters // `, the cluster type determines whether the // address must be an IP (*STATIC* or *EDS* clusters) or a hostname resolved by DNS // (*STRICT_DNS* or *LOGICAL_DNS* clusters). Address resolution can be customized - // via :ref:`resolver_name `. + // via resolver_name. Address string `protobuf:"bytes,2,opt,name=address,proto3" json:"address,omitempty"` // Types that are assignable to PortSpecifier: // @@ -161,10 +161,9 @@ type SocketAddress struct { // should be set for resolution other than DNS. Specifying a custom resolver with // *STRICT_DNS* or *LOGICAL_DNS* will generate an error at runtime. ResolverName string `protobuf:"bytes,5,opt,name=resolver_name,json=resolverName,proto3" json:"resolver_name,omitempty"` - // When binding to an IPv6 address above, this enables `IPv4 compatibility - // `_. Binding to “::“ will + // When binding to an IPv6 address above, this enables [IPv4 compatibility](https://datatracker.ietf.org/doc/html/rfc3493#page-11). Binding to `::` will // allow both IPv4 and IPv6 connections, with peer IPv4 addresses mapped into - // IPv6 space as “::FFFF:“. + // IPv6 space as `::FFFF:`. Ipv4Compat bool `protobuf:"varint,6,opt,name=ipv4_compat,json=ipv4Compat,proto3" json:"ipv4_compat,omitempty"` } @@ -497,13 +496,13 @@ func (*Address_SocketAddress) isAddress_Address() {} func (*Address_Pipe) isAddress_Address() {} // CidrRange specifies an IP Address and a prefix length to construct -// the subnet mask for a `CIDR `_ range. +// the subnet mask for a [CIDR](https://datatracker.ietf.org/doc/html/rfc4632) range. type CidrRange struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // IPv4 or IPv6 address, e.g. “192.0.0.0“ or “2001:db8::“. + // IPv4 or IPv6 address, e.g. `192.0.0.0` or `2001:db8::`. AddressPrefix string `protobuf:"bytes,1,opt,name=address_prefix,json=addressPrefix,proto3" json:"address_prefix,omitempty"` // Length of prefix, e.g. 0, 32. PrefixLen *wrappers.UInt32Value `protobuf:"bytes,2,opt,name=prefix_len,json=prefixLen,proto3" json:"prefix_len,omitempty"` diff --git a/pkg/api/gloo.solo.io/external/envoy/config/core/v3/base.pb.go b/pkg/api/gloo.solo.io/external/envoy/config/core/v3/base.pb.go index 25fb48a8d..a6d82f5a8 100644 --- a/pkg/api/gloo.solo.io/external/envoy/config/core/v3/base.pb.go +++ b/pkg/api/gloo.solo.io/external/envoy/config/core/v3/base.pb.go @@ -212,15 +212,14 @@ type Locality struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Region this :ref:`zone ` belongs to. + // Region this zone belongs to. Region string `protobuf:"bytes,1,opt,name=region,proto3" json:"region,omitempty"` // Defines the local service zone where Envoy is running. Though optional, it // should be set if discovery service routing is used and the discovery - // service exposes :ref:`zone data `, - // either in this message or via :option:`--service-zone`. The meaning of zone - // is context dependent, e.g. `Availability Zone (AZ) - // `_ - // on AWS, `Zone `_ on + // service exposes zone data, + // either in this message or via `--service-zone`. The meaning of zone + // is context dependent, e.g. [Availability Zone (AZ)](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-regions-availability-zones.html) + // on AWS, [Zone](https://cloud.google.com/compute/docs/regions-zones/) on // GCP, etc. Zone string `protobuf:"bytes,2,opt,name=zone,proto3" json:"zone,omitempty"` // When used for locality of upstream hosts, this field further splits zone @@ -448,23 +447,23 @@ type Node struct { // An opaque node identifier for the Envoy node. This also provides the local // service node name. It should be set if any of the following features are - // used: :ref:`statsd `, :ref:`CDS + // used: statsd, :ref:`CDS // `, and :ref:`HTTP tracing // `, either in this message or via - // :option:`--service-node`. + // `--service-node`. Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` // Defines the local service cluster name where Envoy is running. Though // optional, it should be set if any of the following features are used: - // :ref:`statsd `, :ref:`health check cluster + // statsd, :ref:`health check cluster // verification // `, - // :ref:`runtime override directory `, + // runtime override directory, // :ref:`user agent addition // `, - // :ref:`HTTP global rate limiting `, - // :ref:`CDS `, and :ref:`HTTP tracing + // HTTP global rate limiting, + // CDS, and :ref:`HTTP tracing // `, either in this message or via - // :option:`--service-cluster`. + // `--service-cluster`. Cluster string `protobuf:"bytes,2,opt,name=cluster,proto3" json:"cluster,omitempty"` // Opaque metadata extending the node identifier. Envoy will pass this // directly to the management server. @@ -484,11 +483,11 @@ type Node struct { // Client feature support list. These are well known features described // in the Envoy API repository for a given major version of an API. Client features // use reverse DNS naming scheme, for example `com.acme.feature`. - // See :ref:`the list of features ` that xDS client may + // See the list of features that xDS client may // support. ClientFeatures []string `protobuf:"bytes,10,rep,name=client_features,json=clientFeatures,proto3" json:"client_features,omitempty"` // Known listening ports on the node as a generic hint to the management server - // for filtering :ref:`listeners ` to be returned. For example, + // for filtering listeners to be returned. For example, // if there is a listener bound to port 80, the list can optionally contain the // SocketAddress `(0.0.0.0,80)`. The field is optional and just a hint. ListeningAddresses []*Address `protobuf:"bytes,11,rep,name=listening_addresses,json=listeningAddresses,proto3" json:"listening_addresses,omitempty"` @@ -640,7 +639,7 @@ func (*Node_UserAgentBuildVersion) isNode_UserAgentVersionType() {} // object to match against. There are some well defined metadata used today for // this purpose: // -// - “{"envoy.lb": {"canary": }}“ This indicates the canary status of an +// - `{"envoy.lb": {"canary": }}` This indicates the canary status of an // endpoint and is also used during header processing // (x-envoy-upstream-canary) and for stats purposes. // @@ -820,7 +819,7 @@ type RuntimeFeatureFlag struct { DefaultValue *wrappers.BoolValue `protobuf:"bytes,1,opt,name=default_value,json=defaultValue,proto3" json:"default_value,omitempty"` // Runtime key to get value for comparison. This value is used if defined. The boolean value must // be represented via its - // `canonical JSON encoding `_. + // [canonical JSON encoding](https://developers.google.com/protocol-buffers/docs/proto3#json). RuntimeKey string `protobuf:"bytes,2,opt,name=runtime_key,json=runtimeKey,proto3" json:"runtime_key,omitempty"` } @@ -880,8 +879,8 @@ type HeaderValue struct { Key string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"` // Header value. // - // The same :ref:`format specifier ` as used for - // :ref:`HTTP access logging ` applies here, however + // The same format specifier as used for + // HTTP access logging applies here, however // unknown header values are replaced with the empty string instead of `-`. Value string `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"` } @@ -1144,7 +1143,7 @@ type RetryPolicy struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Specifies parameters that control :ref:`retry backoff strategy `. + // Specifies parameters that control retry backoff strategy. // This parameter is optional, in which case the default base interval is 1000 milliseconds. The // default maximum interval is 10 times the base interval. RetryBackOff *BackoffStrategy `protobuf:"bytes,1,opt,name=retry_back_off,json=retryBackOff,proto3" json:"retry_back_off,omitempty"` @@ -1350,8 +1349,8 @@ func (*AsyncDataSource_Local) isAsyncDataSource_Specifier() {} func (*AsyncDataSource_Remote) isAsyncDataSource_Specifier() {} -// Configuration for transport socket in :ref:`listeners ` and -// :ref:`clusters `. If the configuration is +// Configuration for transport socket in listeners and +// clusters. If the configuration is // empty, a default transport socket implementation and configuration will be // chosen based on the platform and existence of tls_context. type TransportSocket struct { @@ -1437,10 +1436,10 @@ func (*TransportSocket_TypedConfig) isTransportSocket_ConfigType() {} // Runtime derived FractionalPercent with defaults for when the numerator or denominator is not // specified via a runtime key. // -// .. note:: +// **Note**: // // Parsing of the runtime key's data is implemented such that it may be represented as a -// :ref:`FractionalPercent ` proto represented as JSON/YAML +// FractionalPercent proto represented as JSON/YAML // and may also be represented as an integer with the assumption that the value is an integral // percentage out of 100. For instance, a runtime key lookup returning the value "42" would parse // as a `FractionalPercent` whose numerator is 42 and denominator is HUNDRED. diff --git a/pkg/api/gloo.solo.io/external/envoy/config/core/v3/grpc_service.pb.go b/pkg/api/gloo.solo.io/external/envoy/config/core/v3/grpc_service.pb.go index 43bdc46e0..68e403dd8 100644 --- a/pkg/api/gloo.solo.io/external/envoy/config/core/v3/grpc_service.pb.go +++ b/pkg/api/gloo.solo.io/external/envoy/config/core/v3/grpc_service.pb.go @@ -47,7 +47,7 @@ type GrpcService struct { Timeout *duration.Duration `protobuf:"bytes,3,opt,name=timeout,proto3" json:"timeout,omitempty"` // Additional metadata to include in streams initiated to the GrpcService. // This can be used for scenarios in which additional ad hoc authorization - // headers (e.g. “x-foo-bar: baz-key“) are to be injected. + // headers (e.g. `x-foo-bar: baz-key`) are to be injected. InitialMetadata []*HeaderValue `protobuf:"bytes,5,rep,name=initial_metadata,json=initialMetadata,proto3" json:"initial_metadata,omitempty"` } @@ -130,7 +130,7 @@ type GrpcService_EnvoyGrpc_ struct { } type GrpcService_GoogleGrpc_ struct { - // `Google C++ gRPC client `_ + // [Google C++ gRPC client](https://github.com/grpc/grpc) // See the :ref:`gRPC services overview ` // documentation for discussion on gRPC client selection. GoogleGrpc *GrpcService_GoogleGrpc `protobuf:"bytes,2,opt,name=google_grpc,json=googleGrpc,proto3,oneof"` @@ -146,10 +146,10 @@ type GrpcService_EnvoyGrpc struct { unknownFields protoimpl.UnknownFields // The name of the upstream gRPC cluster. SSL credentials will be supplied - // in the :ref:`Cluster ` :ref:`transport_socket + // in the Cluster :ref:`transport_socket // `. ClusterName string `protobuf:"bytes,1,opt,name=cluster_name,json=clusterName,proto3" json:"cluster_name,omitempty"` - // The “:authority“ header in the grpc request. If this field is not set, the authority header value will be “cluster_name“. + // The `:authority` header in the grpc request. If this field is not set, the authority header value will be `cluster_name`. // Note that this authority does not override the SNI. The SNI is provided by the transport socket of the cluster. Authority string `protobuf:"bytes,2,opt,name=authority,proto3" json:"authority,omitempty"` // Indicates the retry policy for re-establishing the gRPC stream @@ -218,13 +218,11 @@ type GrpcService_GoogleGrpc struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // The target URI when using the `Google C++ gRPC client - // `_. SSL credentials will be supplied in - // :ref:`channel_credentials `. + // The target URI when using the [Google C++ gRPC client](https://github.com/grpc/grpc). SSL credentials will be supplied in + // channel_credentials. TargetUri string `protobuf:"bytes,1,opt,name=target_uri,json=targetUri,proto3" json:"target_uri,omitempty"` ChannelCredentials *GrpcService_GoogleGrpc_ChannelCredentials `protobuf:"bytes,2,opt,name=channel_credentials,json=channelCredentials,proto3" json:"channel_credentials,omitempty"` - // A set of call credentials that can be composed with `channel credentials - // `_. + // A set of call credentials that can be composed with [channel credentials](https://grpc.io/docs/guides/auth.html#credential-types). CallCredentials []*GrpcService_GoogleGrpc_CallCredentials `protobuf:"bytes,3,rep,name=call_credentials,json=callCredentials,proto3" json:"call_credentials,omitempty"` // The human readable prefix to use when emitting statistics for the gRPC // service. diff --git a/pkg/api/gloo.solo.io/external/envoy/config/core/v3/health_check.pb.go b/pkg/api/gloo.solo.io/external/envoy/config/core/v3/health_check.pb.go index ad6674b01..d4bd170d8 100644 --- a/pkg/api/gloo.solo.io/external/envoy/config/core/v3/health_check.pb.go +++ b/pkg/api/gloo.solo.io/external/envoy/config/core/v3/health_check.pb.go @@ -42,9 +42,9 @@ const ( // Unhealthy. HealthStatus_UNHEALTHY HealthStatus = 2 // Connection draining in progress. E.g., - // ``_ + // https://aws.amazon.com/blogs/aws/elb-connection-draining-remove-instances-from-service-with-care/ // or - // ``_. + // https://cloud.google.com/compute/docs/load-balancing/enabling-connection-draining. // This is interpreted by Envoy as *UNHEALTHY*. HealthStatus_DRAINING HealthStatus = 3 // Health check timed out. This is part of HDS and is interpreted by Envoy as @@ -173,7 +173,7 @@ type HealthCheck struct { // // The default value for "healthy edge interval" is the same as the default interval. HealthyEdgeInterval *duration.Duration `protobuf:"bytes,16,opt,name=healthy_edge_interval,json=healthyEdgeInterval,proto3" json:"healthy_edge_interval,omitempty"` - // Specifies the path to the :ref:`health check event log `. + // Specifies the path to the health check event log. // If empty, no event log will be written. EventLogPath string `protobuf:"bytes,17,opt,name=event_log_path,json=eventLogPath,proto3" json:"event_log_path,omitempty"` // [#not-implemented-hide:] @@ -187,7 +187,7 @@ type HealthCheck struct { // This allows overriding the cluster TLS settings, just for health check connections. TlsOptions *HealthCheck_TlsOptions `protobuf:"bytes,21,opt,name=tls_options,json=tlsOptions,proto3" json:"tls_options,omitempty"` // Optional key/value pairs that will be used to match a transport socket from those specified in the cluster's - // :ref:`tranport socket matches `. + // tranport socket matches. // For example, the following match criteria // // .. code-block:: yaml @@ -208,12 +208,12 @@ type HealthCheck struct { // config: { ... } # tls socket configuration // // If this field is set, then for health checks it will supersede an entry of *envoy.transport_socket* in the - // :ref:`LbEndpoint.Metadata `. + // LbEndpoint.Metadata. // This allows using different transport socket capabilities for health checking versus proxying to the // endpoint. // // If the key/values pairs specified do not match any - // :ref:`transport socket matches `, + // transport socket matches, // the cluster's :ref:`transport socket ` // will be used for health check socket configuration. TransportSocketMatchCriteria *_struct.Struct `protobuf:"bytes,23,opt,name=transport_socket_match_criteria,json=transportSocketMatchCriteria,proto3" json:"transport_socket_match_criteria,omitempty"` @@ -537,7 +537,7 @@ type HealthCheck_HttpHealthCheck struct { // The value of the host header in the HTTP health check request. If // left empty (default value), the name of the cluster this health check is associated // with will be used. The host header can be customized for a specific endpoint by setting the - // :ref:`hostname ` field. + // hostname field. Host string `protobuf:"bytes,1,opt,name=host,proto3" json:"host,omitempty"` // Specifies the HTTP path that will be requested during health checking. For example // */healthcheck*. @@ -556,7 +556,7 @@ type HealthCheck_HttpHealthCheck struct { RequestHeadersToRemove []string `protobuf:"bytes,8,rep,name=request_headers_to_remove,json=requestHeadersToRemove,proto3" json:"request_headers_to_remove,omitempty"` // Specifies a list of HTTP response statuses considered healthy. If provided, replaces default // 200-only policy - 200 must be included explicitly as needed. Ranges follow half-open - // semantics of :ref:`Int64Range `. The start and end of each + // semantics of Int64Range. The start and end of each // range are required. Only statuses in the range [100, 600) are allowed. ExpectedStatuses []*v3.Int64Range `protobuf:"bytes,9,rep,name=expected_statuses,json=expectedStatuses,proto3" json:"expected_statuses,omitempty"` // Use specified application protocol for health checks. @@ -737,7 +737,7 @@ type HealthCheck_RedisHealthCheck struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // If set, optionally perform “EXISTS “ instead of “PING“. A return value + // If set, optionally perform `EXISTS ` instead of `PING`. A return value // from Redis of 0 (does not exist) is considered a passing healthcheck. A return value other // than 0 is considered a failure. This allows the user to mark a Redis instance for maintenance // by setting the specified key to any value and waiting for traffic to drain. @@ -783,9 +783,8 @@ func (x *HealthCheck_RedisHealthCheck) GetKey() string { return "" } -// `grpc.health.v1.Health -// `_-based -// healthcheck. See `gRPC doc `_ +// [grpc.health.v1.Health](https://github.com/grpc/grpc/blob/master/src/proto/grpc/health/v1/health.proto)-based +// healthcheck. See [gRPC doc](https://github.com/grpc/grpc/blob/master/doc/health-checking.md) // for details. type HealthCheck_GrpcHealthCheck struct { state protoimpl.MessageState @@ -793,15 +792,13 @@ type HealthCheck_GrpcHealthCheck struct { unknownFields protoimpl.UnknownFields // An optional service name parameter which will be sent to gRPC service in - // `grpc.health.v1.HealthCheckRequest - // `_. - // message. See `gRPC health-checking overview - // `_ for more information. + // [grpc.health.v1.HealthCheckRequest](https://github.com/grpc/grpc/blob/master/src/proto/grpc/health/v1/health.proto#L20). + // message. See [gRPC health-checking overview](https://github.com/grpc/grpc/blob/master/doc/health-checking.md) for more information. ServiceName string `protobuf:"bytes,1,opt,name=service_name,json=serviceName,proto3" json:"service_name,omitempty"` // The value of the :authority header in the gRPC health check request. If // left empty (default value), the name of the cluster this health check is associated // with will be used. The authority header can be customized for a specific endpoint by setting - // the :ref:`hostname ` field. + // the hostname field. Authority string `protobuf:"bytes,2,opt,name=authority,proto3" json:"authority,omitempty"` } diff --git a/pkg/api/gloo.solo.io/external/envoy/config/core/v3/http_uri.pb.go b/pkg/api/gloo.solo.io/external/envoy/config/core/v3/http_uri.pb.go index 878ed2429..5c1ad81dc 100644 --- a/pkg/api/gloo.solo.io/external/envoy/config/core/v3/http_uri.pb.go +++ b/pkg/api/gloo.solo.io/external/envoy/config/core/v3/http_uri.pb.go @@ -41,8 +41,7 @@ type HttpUri struct { Uri string `protobuf:"bytes,1,opt,name=uri,proto3" json:"uri,omitempty"` // Specify how `uri` is to be fetched. Today, this requires an explicit // cluster, but in the future we may support dynamic cluster creation or - // inline DNS resolution. See `issue - // `_. + // inline DNS resolution. See [issue](https://github.com/envoyproxy/envoy/issues/1606). // // Types that are assignable to HttpUpstreamType: // diff --git a/pkg/api/gloo.solo.io/external/envoy/config/core/v3/proxy_protocol.pb.go b/pkg/api/gloo.solo.io/external/envoy/config/core/v3/proxy_protocol.pb.go index a19c575f5..e887b1c8f 100644 --- a/pkg/api/gloo.solo.io/external/envoy/config/core/v3/proxy_protocol.pb.go +++ b/pkg/api/gloo.solo.io/external/envoy/config/core/v3/proxy_protocol.pb.go @@ -129,8 +129,7 @@ type ProxyProtocolPassThroughTLVs struct { // If INCLUDE_ALL is set, all TLVs will be passed through no matter the tlv_type field. MatchType ProxyProtocolPassThroughTLVs_PassTLVsMatchType `protobuf:"varint,1,opt,name=match_type,json=matchType,proto3,enum=solo.io.envoy.config.core.v3.ProxyProtocolPassThroughTLVs_PassTLVsMatchType" json:"match_type,omitempty"` // The TLV types that are applied based on match_type. - // TLV type is defined as uint8_t in proxy protocol. See `the spec - // `_ for details. + // TLV type is defined as uint8_t in proxy protocol. See [the spec](https://www.haproxy.org/download/2.1/doc/proxy-protocol.txt) for details. TlvType []uint32 `protobuf:"varint,2,rep,packed,name=tlv_type,json=tlvType,proto3" json:"tlv_type,omitempty"` } diff --git a/pkg/api/gloo.solo.io/external/envoy/config/route/v3/route_components.pb.go b/pkg/api/gloo.solo.io/external/envoy/config/route/v3/route_components.pb.go index 5f2d3e9f9..bc6a18b65 100644 --- a/pkg/api/gloo.solo.io/external/envoy/config/route/v3/route_components.pb.go +++ b/pkg/api/gloo.solo.io/external/envoy/config/route/v3/route_components.pb.go @@ -135,7 +135,7 @@ func (RouteAction_ClusterNotFoundResponseCode) EnumDescriptor() ([]byte, []int) return file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_config_route_v3_route_components_proto_rawDescGZIP(), []int{6, 0} } -// Configures :ref:`internal redirect ` behavior. +// Configures internal redirect behavior. // [#next-major-version: remove this definition - it's defined in the InternalRedirectPolicy message.] // // Deprecated: Marked as deprecated in github.com/solo-io/solo-apis/api/gloo/gloo/external/envoy/config/route/v3/route_components.proto. @@ -263,17 +263,17 @@ type VirtualHost struct { // virtual host. Wildcard hosts are supported in the suffix or prefix form. // // Domain search order: - // 1. Exact domain names: “www.foo.com“. - // 2. Suffix domain wildcards: “*.foo.com“ or “*-bar.foo.com“. - // 3. Prefix domain wildcards: “foo.*“ or “foo-*“. - // 4. Special wildcard “*“ matching any domain. + // 1. Exact domain names: `www.foo.com`. + // 2. Suffix domain wildcards: `*.foo.com` or `*-bar.foo.com`. + // 3. Prefix domain wildcards: `foo.*` or `foo-*`. + // 4. Special wildcard `*` matching any domain. // - // .. note:: + // **Note**: // // The wildcard will not match the empty string. - // e.g. ``*-bar.foo.com`` will match ``baz-bar.foo.com`` but not ``-bar.foo.com``. + // e.g. `*-bar.foo.com` will match `baz-bar.foo.com` but not `-bar.foo.com`. // The longest wildcards match first. - // Only a single virtual host in the entire route configuration can match on ``*``. A domain + // Only a single virtual host in the entire route configuration can match on `*`. A domain // must be unique across all virtual hosts or the config will fail to load. // // Domains cannot contain control characters. This is validated by the well_known_regex HTTP_HEADER_VALUE. @@ -345,7 +345,7 @@ type VirtualHost struct { // [#not-implemented-hide:] // Specifies the configuration for retry policy extension. Note that setting a route level entry // will take precedence over this config and it'll be treated independently (e.g.: values are not - // inherited). :ref:`Retry policy ` should not be + // inherited). Retry policy should not be // set if this field is used. RetryPolicyTypedConfig *any1.Any `protobuf:"bytes,20,opt,name=retry_policy_typed_config,json=retryPolicyTypedConfig,proto3" json:"retry_policy_typed_config,omitempty"` // Indicates the hedge policy for all routes in this virtual host. Note that setting a @@ -567,7 +567,7 @@ func (x *FilterAction) GetAction() *any1.Any { // A route is both a specification of how to match a request as well as an indication of what to do // next (e.g., redirect, forward, rewrite, etc.). // -// .. attention:: +// **Attention**: // // Envoy supports routing on HTTP method via :ref:`header matching // `. @@ -600,7 +600,7 @@ type Route struct { // The typed_per_filter_config field can be used to provide route-specific // configurations for filters. The key should match the filter name, such as // *envoy.filters.http.buffer* for the HTTP buffer filter. Use of this field is filter - // specific; see the :ref:`HTTP filter documentation ` for + // specific; see the HTTP filter documentation for // if and how it is utilized. TypedPerFilterConfig map[string]*any1.Any `protobuf:"bytes,13,rep,name=typed_per_filter_config,json=typedPerFilterConfig,proto3" json:"typed_per_filter_config,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` // Specifies a set of headers that will be added to requests matching this @@ -618,7 +618,7 @@ type Route struct { // headers from the enclosing :ref:`envoy_api_msg_config.route.v3.VirtualHost` and // :ref:`envoy_api_msg_config.route.v3.RouteConfiguration`. For more information, including // details on header value syntax, see the documentation on - // :ref:`custom request headers `. + // custom request headers. ResponseHeadersToAdd []*v3.HeaderValueOption `protobuf:"bytes,10,rep,name=response_headers_to_add,json=responseHeadersToAdd,proto3" json:"response_headers_to_add,omitempty"` // Specifies a list of HTTP headers that should be removed from each response // to requests matching this route. @@ -812,7 +812,7 @@ func (*Route_DirectResponse) isRoute_Action() {} func (*Route_FilterAction) isRoute_Action() {} -// Compared to the :ref:`cluster ` field that specifies a +// Compared to the cluster field that specifies a // single upstream cluster as the target of a request, the :ref:`weighted_clusters // ` option allows for specification of // multiple upstream clusters along with weights that indicate the percentage of @@ -917,7 +917,7 @@ type RouteMatch struct { // code/config deploys. Refer to the :ref:`traffic shifting // ` docs for additional documentation. // - // .. note:: + // **Note**: // // Parsing this field is implemented such that the runtime key's data may be represented // as a FractionalPercent proto represented as JSON/YAML and may also be represented as an @@ -1136,10 +1136,10 @@ type CorsPolicy struct { // Specifies the % of requests for which the CORS policies will be evaluated and tracked, but not // enforced. // - // This field is intended to be used when “filter_enabled“ and “enabled“ are off. One of those + // This field is intended to be used when `filter_enabled` and `enabled` are off. One of those // fields have to explicitly disable the filter in order for this setting to take effect. // - // If :ref:`runtime_key ` is specified, + // If runtime_key is specified, // Envoy will lookup the runtime key to get the percentage of requests for which it will evaluate // and track the request's *Origin* to determine if it's valid but will not enforce any policies. ShadowEnabled *v3.RuntimeFractionalPercent `protobuf:"bytes,10,opt,name=shadow_enabled,json=shadowEnabled,proto3" json:"shadow_enabled,omitempty"` @@ -1247,10 +1247,10 @@ type isCorsPolicy_EnabledSpecifier interface { type CorsPolicy_FilterEnabled struct { // Specifies the % of requests for which the CORS filter is enabled. // - // If neither “enabled“, “filter_enabled“, nor “shadow_enabled“ are specified, the CORS + // If neither `enabled`, `filter_enabled`, nor `shadow_enabled` are specified, the CORS // filter will be enabled for 100% of the requests. // - // If :ref:`runtime_key ` is + // If runtime_key is // specified, Envoy will lookup the runtime key to get the percentage of requests to filter. FilterEnabled *v3.RuntimeFractionalPercent `protobuf:"bytes,9,opt,name=filter_enabled,json=filterEnabled,proto3,oneof"` } @@ -1288,13 +1288,13 @@ type RouteAction struct { // :ref:`regex_rewrite ` // may be specified. // - // .. attention:: + // **Attention**: // // Pay careful attention to the use of trailing slashes in the - // :ref:`route's match ` prefix value. + // route's match prefix value. // Stripping a prefix from a path requires multiple Routes to handle all cases. For example, // rewriting */prefix* to */* and */prefix/etc* to */etc* cannot be done in a single - // :ref:`Route `, as shown by the below config entries: + // Route, as shown by the below config entries: // // .. code-block:: yaml // @@ -1322,22 +1322,22 @@ type RouteAction struct { // Only one of :ref:`prefix_rewrite ` // or *regex_rewrite* may be specified. // - // Examples using Google's `RE2 `_ engine: + // Examples using Google's [RE2](https://github.com/google/re2) engine: // - // - The path pattern “^/service/([^/]+)(/.*)$“ paired with a substitution - // string of “\2/instance/\1“ would transform “/service/foo/v1/api“ - // into “/v1/api/instance/foo“. + // - The path pattern `^/service/([^/]+)(/.*)$` paired with a substitution + // string of `\2/instance/\1` would transform `/service/foo/v1/api` + // into `/v1/api/instance/foo`. // - // - The pattern “one“ paired with a substitution string of “two“ would - // transform “/xxx/one/yyy/one/zzz“ into “/xxx/two/yyy/two/zzz“. + // - The pattern `one` paired with a substitution string of `two` would + // transform `/xxx/one/yyy/one/zzz` into `/xxx/two/yyy/two/zzz`. // - // - The pattern “^(.*?)one(.*)$“ paired with a substitution string of - // “\1two\2“ would replace only the first occurrence of “one“, - // transforming path “/xxx/one/yyy/one/zzz“ into “/xxx/two/yyy/one/zzz“. + // - The pattern `^(.*?)one(.*)$` paired with a substitution string of + // `\1two\2` would replace only the first occurrence of `one`, + // transforming path `/xxx/one/yyy/one/zzz` into `/xxx/two/yyy/one/zzz`. // - // - The pattern “(?i)/xxx/“ paired with a substitution string of “/yyy/“ - // would do a case-insensitive match and transform path “/aaa/XxX/bbb“ to - // “/aaa/yyy/bbb“. + // - The pattern `(?i)/xxx/` paired with a substitution string of `/yyy/` + // would do a case-insensitive match and transform path `/aaa/XxX/bbb` to + // `/aaa/yyy/bbb`. RegexRewrite *v31.RegexMatchAndSubstitute `protobuf:"bytes,32,opt,name=regex_rewrite,json=regexRewrite,proto3" json:"regex_rewrite,omitempty"` // Types that are assignable to HostRewriteSpecifier: // @@ -1350,12 +1350,12 @@ type RouteAction struct { // processed and when the upstream response has been completely processed. A value of 0 will // disable the route's timeout. // - // .. note:: + // **Note**: // // This timeout includes all retries. See also // :ref:`config_http_filters_router_x-envoy-upstream-rq-timeout-ms`, // :ref:`config_http_filters_router_x-envoy-upstream-rq-per-try-timeout-ms`, and the - // :ref:`retry overview `. + // retry overview. Timeout *duration.Duration `protobuf:"bytes,8,opt,name=timeout,proto3" json:"timeout,omitempty"` // Specifies the idle timeout for the route. If not specified, there is no per-route idle timeout, // although the connection manager wide :ref:`stream_idle_timeout @@ -1388,14 +1388,14 @@ type RouteAction struct { RetryPolicyTypedConfig *any1.Any `protobuf:"bytes,33,opt,name=retry_policy_typed_config,json=retryPolicyTypedConfig,proto3" json:"retry_policy_typed_config,omitempty"` // Indicates that the route has request mirroring policies. RequestMirrorPolicies []*RouteAction_RequestMirrorPolicy `protobuf:"bytes,30,rep,name=request_mirror_policies,json=requestMirrorPolicies,proto3" json:"request_mirror_policies,omitempty"` - // Optionally specifies the :ref:`routing priority `. + // Optionally specifies the routing priority. Priority v3.RoutingPriority `protobuf:"varint,11,opt,name=priority,proto3,enum=solo.io.envoy.config.core.v3.RoutingPriority" json:"priority,omitempty"` // Specifies a set of rate limit configurations that could be applied to the // route. RateLimits []*RateLimit `protobuf:"bytes,13,rep,name=rate_limits,json=rateLimits,proto3" json:"rate_limits,omitempty"` // Specifies if the rate limit filter should include the virtual host rate // limits. By default, if the route configured rate limits, the virtual host - // :ref:`rate_limits ` are not applied to the + // rate_limits are not applied to the // request. IncludeVhRateLimits *wrappers.BoolValue `protobuf:"bytes,14,opt,name=include_vh_rate_limits,json=includeVhRateLimits,proto3" json:"include_vh_rate_limits,omitempty"` // Specifies a list of hash policies to use for ring hash load balancing. Each @@ -1414,24 +1414,24 @@ type RouteAction struct { // Indicates that the route has a CORS policy. Cors *CorsPolicy `protobuf:"bytes,17,opt,name=cors,proto3" json:"cors,omitempty"` // If present, and the request is a gRPC request, use the - // `grpc-timeout header `_, + // [grpc-timeout header](https://github.com/grpc/grpc/blob/master/doc/PROTOCOL-HTTP2.md), // or its default value (infinity) instead of - // :ref:`timeout `, but limit the applied timeout + // timeout, but limit the applied timeout // to the maximum value specified here. If configured as 0, the maximum allowed timeout for // gRPC requests is infinity. If not configured at all, the `grpc-timeout` header is not used // and gRPC requests time out like any other requests using - // :ref:`timeout ` or its default. + // timeout or its default. // This can be used to prevent unexpected upstream request timeouts due to potentially long // time gaps between gRPC request and response in gRPC streaming mode. // - // .. note:: + // **Note**: // // If a timeout is specified using :ref:`config_http_filters_router_x-envoy-upstream-rq-timeout-ms`, it takes - // precedence over `grpc-timeout header `_, when + // precedence over [grpc-timeout header](https://github.com/grpc/grpc/blob/master/doc/PROTOCOL-HTTP2.md), when // both are present. See also // :ref:`config_http_filters_router_x-envoy-upstream-rq-timeout-ms`, // :ref:`config_http_filters_router_x-envoy-upstream-rq-per-try-timeout-ms`, and the - // :ref:`retry overview `. + // retry overview. MaxGrpcTimeout *duration.Duration `protobuf:"bytes,23,opt,name=max_grpc_timeout,json=maxGrpcTimeout,proto3" json:"max_grpc_timeout,omitempty"` // If present, Envoy will adjust the timeout provided by the `grpc-timeout` header by subtracting // the provided duration from the header. This is useful in allowing Envoy to set its global @@ -1725,7 +1725,7 @@ type RouteAction_ClusterHeader struct { // header is not found or the referenced cluster does not exist, Envoy will // return a 404 response. // - // .. attention:: + // **Attention**: // // Internally, Envoy always uses the HTTP/2 *:authority* header to represent the HTTP/1 // *Host* header. Thus, if attempting to match on *Host*, match on *:authority* instead. @@ -1768,10 +1768,10 @@ type RouteAction_AutoHostRewrite struct { type RouteAction_HostRewriteHeader struct { // Indicates that during forwarding, the host header will be swapped with the content of given - // downstream or :ref:`custom ` header. + // downstream or custom header. // If header value is empty, host header is left intact. // - // .. attention:: + // **Attention**: // // Pay attention to the potential security implications of using this option. Provided header // must come from trusted source. @@ -1784,7 +1784,7 @@ func (*RouteAction_AutoHostRewrite) isRouteAction_HostRewriteSpecifier() {} func (*RouteAction_HostRewriteHeader) isRouteAction_HostRewriteSpecifier() {} -// HTTP retry :ref:`architecture overview `. +// HTTP retry architecture overview. // [#next-free-field: 11] type RetryPolicy struct { state protoimpl.MessageState @@ -1803,21 +1803,21 @@ type RetryPolicy struct { // same conditions documented for // :ref:`config_http_filters_router_x-envoy-upstream-rq-per-try-timeout-ms` apply. // - // .. note:: + // **Note**: // // If left unspecified, Envoy will use the global - // :ref:`route timeout ` for the request. - // Consequently, when using a :ref:`5xx ` based + // route timeout for the request. + // Consequently, when using a 5xx based // retry policy, a request that times out will not be retried as the total timeout budget // would have been exhausted. PerTryTimeout *duration.Duration `protobuf:"bytes,3,opt,name=per_try_timeout,json=perTryTimeout,proto3" json:"per_try_timeout,omitempty"` // Specifies an implementation of a RetryPriority which is used to determine the // distribution of load across priorities used for retries. Refer to - // :ref:`retry plugin configuration ` for more details. + // retry plugin configuration for more details. RetryPriority *RetryPolicy_RetryPriority `protobuf:"bytes,4,opt,name=retry_priority,json=retryPriority,proto3" json:"retry_priority,omitempty"` // Specifies a collection of RetryHostPredicates that will be consulted when selecting a host // for retries. If any of the predicates reject the host, host selection will be reattempted. - // Refer to :ref:`retry plugin configuration ` for more + // Refer to retry plugin configuration for more // details. RetryHostPredicate []*RetryPolicy_RetryHostPredicate `protobuf:"bytes,5,rep,name=retry_host_predicate,json=retryHostPredicate,proto3" json:"retry_host_predicate,omitempty"` // The maximum number of times host selection will be reattempted before giving up, at which @@ -1942,7 +1942,7 @@ func (x *RetryPolicy) GetRetriableRequestHeaders() []*HeaderMatcher { return nil } -// HTTP request hedging :ref:`architecture overview `. +// HTTP request hedging architecture overview. type HedgePolicy struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -1964,7 +1964,7 @@ type HedgePolicy struct { // Once a timed out request is retried due to per try timeout, the router // filter will ensure that it is not retried again even if the returned // response headers would otherwise be retried according the specified - // :ref:`RetryPolicy `. + // RetryPolicy. // Defaults to false. HedgeOnPerTryTimeout bool `protobuf:"varint,3,opt,name=hedge_on_per_try_timeout,json=hedgeOnPerTryTimeout,proto3" json:"hedge_on_per_try_timeout,omitempty"` } @@ -2205,10 +2205,10 @@ type RedirectAction_PrefixRewrite struct { // should be swapped with this value. This option allows redirect URLs be dynamically created // based on the request. // - // .. attention:: + // **Attention**: // // Pay attention to the use of trailing slashes as mentioned in - // :ref:`RouteAction's prefix_rewrite `. + // RouteAction's prefix_rewrite. PrefixRewrite string `protobuf:"bytes,5,opt,name=prefix_rewrite,json=prefixRewrite,proto3,oneof"` } @@ -2226,7 +2226,7 @@ type DirectResponseAction struct { // Specifies the content of the response body. If this setting is omitted, // no body is included in the generated response. // - // .. note:: + // **Note**: // // Headers can be specified using *response_headers_to_add* in the enclosing // :ref:`envoy_api_msg_config.route.v3.Route`, :ref:`envoy_api_msg_config.route.v3.RouteConfiguration` or @@ -2288,7 +2288,7 @@ type Decorator struct { // The operation name associated with the request matched to this route. If tracing is // enabled, this information will be used as the span name reported for this request. // - // .. note:: + // **Note**: // // For ingress (inbound) requests, or egress (outbound) responses, this value may be overridden // by the :ref:`x-envoy-decorator-operation @@ -2359,7 +2359,7 @@ type Tracing struct { // Target percentage of requests managed by this HTTP connection manager that will be randomly // selected for trace generation, if not requested by the client or not forced. This field is // a direct analog for the runtime variable 'tracing.random_sampling' in the - // :ref:`HTTP Connection Manager `. + // HTTP Connection Manager. // Default: 100% RandomSampling *v32.FractionalPercent `protobuf:"bytes,2,opt,name=random_sampling,json=randomSampling,proto3" json:"random_sampling,omitempty"` // Target percentage of requests managed by this HTTP connection manager that will be traced @@ -2368,7 +2368,7 @@ type Tracing struct { // instance, setting client_sampling to 100% but overall_sampling to 1% will result in only 1% // of client requests with the appropriate headers to be force traced. This field is a direct // analog for the runtime variable 'tracing.global_enabled' in the - // :ref:`HTTP Connection Manager `. + // HTTP Connection Manager. // Default: 100% OverallSampling *v32.FractionalPercent `protobuf:"bytes,3,opt,name=overall_sampling,json=overallSampling,proto3" json:"overall_sampling,omitempty"` // A list of custom tags with unique tag name to create tags for the active span. @@ -2450,9 +2450,9 @@ func (x *Tracing) GetCustomTags() []*v33.CustomTag { // statistics are perfect in the sense that they are emitted on the downstream // side such that they include network level failures. // -// Documentation for :ref:`virtual cluster statistics `. +// Documentation for virtual cluster statistics. // -// .. note:: +// **Note**: // // Virtual clusters are a useful tool, but we do not recommend setting up a virtual cluster for // every application endpoint. This is both not easily maintainable and as well the matching and @@ -2468,7 +2468,7 @@ type VirtualCluster struct { Headers []*HeaderMatcher `protobuf:"bytes,4,rep,name=headers,proto3" json:"headers,omitempty"` // Specifies the name of the virtual cluster. The virtual cluster name as well // as the virtual host name are used when emitting statistics. The statistics are emitted by the - // router filter and are documented :ref:`here `. + // router filter and are documented here. Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` } @@ -2518,7 +2518,7 @@ func (x *VirtualCluster) GetName() string { return "" } -// Global rate limiting :ref:`architecture overview `. +// Global rate limiting architecture overview. type RateLimit struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -2528,7 +2528,7 @@ type RateLimit struct { // applies to filters with the same stage number. The default stage number is // 0. // - // .. note:: + // **Note**: // // The filter supports a range of 0 - 10 inclusively for stage numbers. Stage *wrappers.UInt32Value `protobuf:"bytes,1,opt,name=stage,proto3" json:"stage,omitempty"` @@ -2608,12 +2608,12 @@ func (x *RateLimit) GetLimit() *RateLimit_Override { return nil } -// .. attention:: +// **Attention**: // // Internally, Envoy always uses the HTTP/2 *:authority* header to represent the HTTP/1 *Host* // header. Thus, if attempting to match on *Host*, match on *:authority* instead. // -// .. attention:: +// **Attention**: // // To route on HTTP method, use the special HTTP/2 *:method* header. This works for both // HTTP/1 and HTTP/2 as Envoy normalizes headers. E.g., @@ -2625,7 +2625,7 @@ func (x *RateLimit) GetLimit() *RateLimit_Override { // "exact_match": "POST" // } // -// .. attention:: +// **Attention**: // // In the absence of any header match specifier, match will default to :ref:`present_match // `. i.e, a request that has the :ref:`name @@ -2657,7 +2657,7 @@ type HeaderMatcher struct { // // Examples: // - // * The regex “\d{3}“ does not match the value *1234*, so it will match when inverted. + // * The regex `\d{3}` does not match the value *1234*, so it will match when inverted. // * The range [-10,0) will match the value -1, so it will not match when inverted. InvertMatch bool `protobuf:"varint,8,opt,name=invert_match,json=invertMatch,proto3" json:"invert_match,omitempty"` } @@ -2922,7 +2922,7 @@ func (*QueryParameterMatcher_StringMatch) isQueryParameterMatcher_QueryParameter func (*QueryParameterMatcher_PresentMatch) isQueryParameterMatcher_QueryParameterMatchSpecifier() {} -// HTTP Internal Redirect :ref:`architecture overview `. +// HTTP Internal Redirect architecture overview. type InternalRedirectPolicy struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -3017,7 +3017,7 @@ type WeightedCluster_ClusterWeight struct { unknownFields protoimpl.UnknownFields // Name of the upstream cluster. The cluster must exist in the - // :ref:`cluster manager configuration `. + // cluster manager configuration. Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` // An integer between 0 and :ref:`total_weight // `. When a request matches the route, @@ -3027,7 +3027,7 @@ type WeightedCluster_ClusterWeight struct { // Optional endpoint metadata match criteria used by the subset load balancer. Only endpoints in // the upstream cluster with metadata matching what is set in this field will be considered for // load balancing. Note that this will be merged with what's provided in - // :ref:`RouteAction.metadata_match `, with + // RouteAction.metadata_match, with // values here taking precedence. The filter name should be specified as *envoy.lb*. MetadataMatch *v3.Metadata `protobuf:"bytes,3,opt,name=metadata_match,json=metadataMatch,proto3" json:"metadata_match,omitempty"` // Specifies a list of headers to be added to requests when this cluster is selected @@ -3292,7 +3292,7 @@ func (*RouteMatch_ConnectMatcher) Descriptor() ([]byte, []int) { // During shadowing, the host/authority header is altered such that *-shadow* is appended. This is // useful for logging. For example, *cluster1* becomes *cluster1-shadow*. // -// .. note:: +// **Note**: // // Shadowing will not be triggered if the primary cluster does not exist. type RouteAction_RequestMirrorPolicy struct { @@ -4392,7 +4392,7 @@ func (*RateLimit_Override_DynamicMetadata_) isRateLimit_Override_OverrideSpecifi // // ("source_cluster", "") // -// is derived from the :option:`--service-cluster` option. +// is derived from the `--service-cluster` option. type RateLimit_Action_SourceCluster struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -4441,11 +4441,11 @@ func (*RateLimit_Action_SourceCluster) Descriptor() ([]byte, []int) { // the following :ref:`route table configuration ` // settings: // -// - :ref:`cluster ` indicates the upstream cluster +// - cluster indicates the upstream cluster // to route to. // - :ref:`weighted_clusters ` // chooses a cluster randomly from a set of clusters with attributed weight. -// - :ref:`cluster_header ` indicates which +// - cluster_header indicates which // header in the request contains the target cluster. type RateLimit_Action_DestinationCluster struct { state protoimpl.MessageState @@ -4562,7 +4562,7 @@ func (x *RateLimit_Action_RequestHeaders) GetSkipIfAbsent() bool { } // The following descriptor entry is appended to the descriptor and is populated using the -// trusted address from :ref:`x-forwarded-for `: +// trusted address from x-forwarded-for. // // .. code-block:: cpp // diff --git a/pkg/api/gloo.solo.io/external/envoy/config/trace/v3/datadog.pb.go b/pkg/api/gloo.solo.io/external/envoy/config/trace/v3/datadog.pb.go index 0bab6bacf..35cccc139 100644 --- a/pkg/api/gloo.solo.io/external/envoy/config/trace/v3/datadog.pb.go +++ b/pkg/api/gloo.solo.io/external/envoy/config/trace/v3/datadog.pb.go @@ -105,7 +105,7 @@ type DatadogConfig struct { // The name used for the service when traces are generated by envoy. ServiceName *wrappers.StringValue `protobuf:"bytes,2,opt,name=service_name,json=serviceName,proto3" json:"service_name,omitempty"` // Optional hostname to use when sending spans to the collector_cluster. Useful for collectors - // that require a specific hostname. Defaults to :ref:`collector_cluster ` above. + // that require a specific hostname. Defaults to collector_cluster above. CollectorHostname string `protobuf:"bytes,4,opt,name=collector_hostname,json=collectorHostname,proto3" json:"collector_hostname,omitempty"` // Configures remote configuration. // Remote Configuration allows to configure the tracer from Datadog's user interface. diff --git a/pkg/api/gloo.solo.io/external/envoy/config/trace/v3/zipkin.pb.go b/pkg/api/gloo.solo.io/external/envoy/config/trace/v3/zipkin.pb.go index 429086911..0ed525176 100644 --- a/pkg/api/gloo.solo.io/external/envoy/config/trace/v3/zipkin.pb.go +++ b/pkg/api/gloo.solo.io/external/envoy/config/trace/v3/zipkin.pb.go @@ -113,7 +113,7 @@ type ZipkinConfig struct { // Determines whether client and server spans will share the same span context. // The default value is true. SharedSpanContext *wrappers.BoolValue `protobuf:"bytes,4,opt,name=shared_span_context,json=sharedSpanContext,proto3" json:"shared_span_context,omitempty"` - // Determines the selected collector endpoint version. By default, the “HTTP_JSON_V1“ will be + // Determines the selected collector endpoint version. By default, the `HTTP_JSON_V1` will be // used. CollectorEndpointVersion ZipkinConfig_CollectorEndpointVersion `protobuf:"varint,5,opt,name=collector_endpoint_version,json=collectorEndpointVersion,proto3,enum=solo.io.envoy.config.trace.v3.ZipkinConfig_CollectorEndpointVersion" json:"collector_endpoint_version,omitempty"` } diff --git a/pkg/api/gloo.solo.io/external/envoy/extensions/filters/http/csrf/v3/csrf.pb.go b/pkg/api/gloo.solo.io/external/envoy/extensions/filters/http/csrf/v3/csrf.pb.go index c7ad15e8f..597406985 100644 --- a/pkg/api/gloo.solo.io/external/envoy/extensions/filters/http/csrf/v3/csrf.pb.go +++ b/pkg/api/gloo.solo.io/external/envoy/extensions/filters/http/csrf/v3/csrf.pb.go @@ -35,19 +35,19 @@ type CsrfPolicy struct { // Specifies the % of requests for which the CSRF filter is enabled. // - // If :ref:`runtime_key ` is specified, + // If runtime_key is specified, // Envoy will lookup the runtime key to get the percentage of requests to filter. // - // .. note:: + // **Note**: // // This field defaults to 100/:ref:`HUNDRED // `. FilterEnabled *v3.RuntimeFractionalPercent `protobuf:"bytes,1,opt,name=filter_enabled,json=filterEnabled,proto3" json:"filter_enabled,omitempty"` // Specifies that CSRF policies will be evaluated and tracked, but not enforced. // - // This is intended to be used when “filter_enabled“ is off and will be ignored otherwise. + // This is intended to be used when `filter_enabled` is off and will be ignored otherwise. // - // If :ref:`runtime_key ` is specified, + // If runtime_key is specified, // Envoy will lookup the runtime key to get the percentage of requests for which it will evaluate // and track the request's *Origin* and *Destination* to determine if it's valid, but will not // enforce any policies. @@ -56,7 +56,7 @@ type CsrfPolicy struct { // the destination origin. // // More information on how this can be configured via runtime can be found - // :ref:`here `. + // here. AdditionalOrigins []*v31.StringMatcher `protobuf:"bytes,3,rep,name=additional_origins,json=additionalOrigins,proto3" json:"additional_origins,omitempty"` } diff --git a/pkg/api/gloo.solo.io/external/envoy/extensions/filters/http/jwt_authn/v3/config.pb.go b/pkg/api/gloo.solo.io/external/envoy/extensions/filters/http/jwt_authn/v3/config.pb.go index 3764a55c3..5be7d9c3c 100644 --- a/pkg/api/gloo.solo.io/external/envoy/extensions/filters/http/jwt_authn/v3/config.pb.go +++ b/pkg/api/gloo.solo.io/external/envoy/extensions/filters/http/jwt_authn/v3/config.pb.go @@ -29,9 +29,9 @@ const ( // Please see following for JWT authentication flow: // -// * `JSON Web Token (JWT) `_ -// * `The OAuth 2.0 Authorization Framework `_ -// * `OpenID Connect `_ +// * [JSON Web Token (JWT)](https://datatracker.ietf.org/doc/html/rfc7519) +// * [The OAuth 2.0 Authorization Framework](https://datatracker.ietf.org/doc/html/rfc6749) +// * [OpenID Connect](http://openid.net/connect) // // A JwtProvider message specifies how a JSON Web Token (JWT) can be verified. It specifies: // @@ -63,7 +63,7 @@ type JwtProvider struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Specify the `principal `_ that issued + // Specify the [principal](https://datatracker.ietf.org/doc/html/rfc7519#section-4.1.1) that issued // the JWT, usually a URL or an email address. // // It is optional. If specified, it has to match the *iss* field in JWT. @@ -83,7 +83,7 @@ type JwtProvider struct { // Example: https://securetoken.google.com // Example: 1234567-compute@developer.gserviceaccount.com Issuer string `protobuf:"bytes,1,opt,name=issuer,proto3" json:"issuer,omitempty"` - // The list of JWT `audiences `_ are + // The list of JWT [audiences](https://datatracker.ietf.org/doc/html/rfc7519#section-4.1.3) are // allowed to access. A JWT containing any of these audiences will be accepted. If not specified, // will not check audiences in the token. // @@ -95,7 +95,7 @@ type JwtProvider struct { // - bookstore_android.apps.googleusercontent.com // - bookstore_web.apps.googleusercontent.com Audiences []string `protobuf:"bytes,2,rep,name=audiences,proto3" json:"audiences,omitempty"` - // `JSON Web Key Set (JWKS) `_ is needed to + // [JSON Web Key Set (JWKS)](https://datatracker.ietf.org/doc/html/rfc7517#appendix-A) is needed to // validate signature of a JWT. This field specifies where to fetch JWKS. // // Types that are assignable to JwksSourceSpecifier: @@ -110,12 +110,11 @@ type JwtProvider struct { // // If no explicit location is specified, the following default locations are tried in order: // - // 1. The Authorization header using the `Bearer schema - // `_. Example:: + // 1. The Authorization header using the [Bearer schema](https://datatracker.ietf.org/doc/html/rfc6750#section-2.1). Example:: // // Authorization: Bearer . // - // 2. `access_token `_ query parameter. + // 2. [access_token](https://datatracker.ietf.org/doc/html/rfc6750#section-2.3) query parameter. // // Multiple JWTs can be verified for a request. Each JWT has to be extracted from the locations // its provider specified or from the default locations. @@ -129,7 +128,7 @@ type JwtProvider struct { // // can be used to extract token from header:: // - // ``x-goog-iap-jwt-assertion: ``. + // `x-goog-iap-jwt-assertion: `. FromHeaders []*JwtHeader `protobuf:"bytes,6,rep,name=from_headers,json=fromHeaders,proto3" json:"from_headers,omitempty"` // JWT is sent in a query parameter. `jwt_params` represents the query parameter names. // @@ -1200,8 +1199,7 @@ type JwtAuthentication struct { // The *rules* field above is checked first, if it could not find any matches, // check this one. FilterStateRules *FilterStateRule `protobuf:"bytes,3,opt,name=filter_state_rules,json=filterStateRules,proto3" json:"filter_state_rules,omitempty"` - // When set to true, bypass the `CORS preflight request - // `_ regardless of JWT + // When set to true, bypass the [CORS preflight request](http://www.w3.org/TR/cors/#cross-origin-request-with-preflight) regardless of JWT // requirements specified in the rules. BypassCorsPreflight bool `protobuf:"varint,4,opt,name=bypass_cors_preflight,json=bypassCorsPreflight,proto3" json:"bypass_cors_preflight,omitempty"` // A map of unique requirement_names to JwtRequirements. diff --git a/pkg/api/gloo.solo.io/external/envoy/extensions/transformation/transformation.pb.clone.go b/pkg/api/gloo.solo.io/external/envoy/extensions/transformation/transformation.pb.clone.go index f17ae47f9..37d50346a 100644 --- a/pkg/api/gloo.solo.io/external/envoy/extensions/transformation/transformation.pb.clone.go +++ b/pkg/api/gloo.solo.io/external/envoy/extensions/transformation/transformation.pb.clone.go @@ -356,6 +356,12 @@ func (m *TransformationTemplate) Clone() proto.Message { target.EscapeCharacters = m.GetEscapeCharacters() + if h, ok := interface{}(m.GetSpanTransformer()).(clone.Cloner); ok { + target.SpanTransformer = h.Clone().(*TransformationTemplate_SpanTransformer) + } else { + target.SpanTransformer = proto.Clone(m.GetSpanTransformer()).(*TransformationTemplate_SpanTransformer) + } + switch m.BodyTransformation.(type) { case *TransformationTemplate_Body: @@ -651,6 +657,23 @@ func (m *TransformationTemplate_DynamicMetadataValue) Clone() proto.Message { return target } +// Clone function +func (m *TransformationTemplate_SpanTransformer) Clone() proto.Message { + var target *TransformationTemplate_SpanTransformer + if m == nil { + return target + } + target = &TransformationTemplate_SpanTransformer{} + + if h, ok := interface{}(m.GetName()).(clone.Cloner); ok { + target.Name = h.Clone().(*InjaTemplate) + } else { + target.Name = proto.Clone(m.GetName()).(*InjaTemplate) + } + + return target +} + // Clone function func (m *MergeJsonKeys_OverridableTemplate) Clone() proto.Message { var target *MergeJsonKeys_OverridableTemplate diff --git a/pkg/api/gloo.solo.io/external/envoy/extensions/transformation/transformation.pb.equal.go b/pkg/api/gloo.solo.io/external/envoy/extensions/transformation/transformation.pb.equal.go index a9616128b..3f58d166c 100644 --- a/pkg/api/gloo.solo.io/external/envoy/extensions/transformation/transformation.pb.equal.go +++ b/pkg/api/gloo.solo.io/external/envoy/extensions/transformation/transformation.pb.equal.go @@ -561,6 +561,16 @@ func (m *TransformationTemplate) Equal(that interface{}) bool { return false } + if h, ok := interface{}(m.GetSpanTransformer()).(equality.Equalizer); ok { + if !h.Equal(target.GetSpanTransformer()) { + return false + } + } else { + if !proto.Equal(m.GetSpanTransformer(), target.GetSpanTransformer()) { + return false + } + } + switch m.BodyTransformation.(type) { case *TransformationTemplate_Body: @@ -1089,6 +1099,40 @@ func (m *TransformationTemplate_DynamicMetadataValue) Equal(that interface{}) bo return true } +// Equal function +func (m *TransformationTemplate_SpanTransformer) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*TransformationTemplate_SpanTransformer) + if !ok { + that2, ok := that.(TransformationTemplate_SpanTransformer) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + if h, ok := interface{}(m.GetName()).(equality.Equalizer); ok { + if !h.Equal(target.GetName()) { + return false + } + } else { + if !proto.Equal(m.GetName(), target.GetName()) { + return false + } + } + + return true +} + // Equal function func (m *MergeJsonKeys_OverridableTemplate) Equal(that interface{}) bool { if that == nil { diff --git a/pkg/api/gloo.solo.io/external/envoy/extensions/transformation/transformation.pb.go b/pkg/api/gloo.solo.io/external/envoy/extensions/transformation/transformation.pb.go index 55fe0eab3..9536825c8 100644 --- a/pkg/api/gloo.solo.io/external/envoy/extensions/transformation/transformation.pb.go +++ b/pkg/api/gloo.solo.io/external/envoy/extensions/transformation/transformation.pb.go @@ -830,6 +830,8 @@ type TransformationTemplate struct { // sets the behavior for the entire transformation. Use raw_strings function // for fine-grained control within a template. EscapeCharacters bool `protobuf:"varint,12,opt,name=escape_characters,json=escapeCharacters,proto3" json:"escape_characters,omitempty"` + // Use this field to modify the span of the trace. + SpanTransformer *TransformationTemplate_SpanTransformer `protobuf:"bytes,15,opt,name=span_transformer,json=spanTransformer,proto3" json:"span_transformer,omitempty"` } func (x *TransformationTemplate) Reset() { @@ -962,6 +964,13 @@ func (x *TransformationTemplate) GetEscapeCharacters() bool { return false } +func (x *TransformationTemplate) GetSpanTransformer() *TransformationTemplate_SpanTransformer { + if x != nil { + return x.SpanTransformer + } + return nil +} + type isTransformationTemplate_BodyTransformation interface { isTransformationTemplate_BodyTransformation() } @@ -1697,6 +1706,54 @@ func (x *TransformationTemplate_DynamicMetadataValue) GetJsonToProto() bool { return false } +type TransformationTemplate_SpanTransformer struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // A template that sets the span name + Name *InjaTemplate `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` +} + +func (x *TransformationTemplate_SpanTransformer) Reset() { + *x = TransformationTemplate_SpanTransformer{} + if protoimpl.UnsafeEnabled { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_transformation_transformation_proto_msgTypes[21] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *TransformationTemplate_SpanTransformer) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*TransformationTemplate_SpanTransformer) ProtoMessage() {} + +func (x *TransformationTemplate_SpanTransformer) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_transformation_transformation_proto_msgTypes[21] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use TransformationTemplate_SpanTransformer.ProtoReflect.Descriptor instead. +func (*TransformationTemplate_SpanTransformer) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_transformation_transformation_proto_rawDescGZIP(), []int{7, 4} +} + +func (x *TransformationTemplate_SpanTransformer) GetName() *InjaTemplate { + if x != nil { + return x.Name + } + return nil +} + type MergeJsonKeys_OverridableTemplate struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -1711,7 +1768,7 @@ type MergeJsonKeys_OverridableTemplate struct { func (x *MergeJsonKeys_OverridableTemplate) Reset() { *x = MergeJsonKeys_OverridableTemplate{} if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_transformation_transformation_proto_msgTypes[21] + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_transformation_transformation_proto_msgTypes[22] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1724,7 +1781,7 @@ func (x *MergeJsonKeys_OverridableTemplate) String() string { func (*MergeJsonKeys_OverridableTemplate) ProtoMessage() {} func (x *MergeJsonKeys_OverridableTemplate) ProtoReflect() protoreflect.Message { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_transformation_transformation_proto_msgTypes[21] + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_transformation_transformation_proto_msgTypes[22] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1987,7 +2044,7 @@ var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_tr 0x10, 0x00, 0x12, 0x12, 0x0a, 0x0e, 0x53, 0x49, 0x4e, 0x47, 0x4c, 0x45, 0x5f, 0x52, 0x45, 0x50, 0x4c, 0x41, 0x43, 0x45, 0x10, 0x01, 0x12, 0x0f, 0x0a, 0x0b, 0x52, 0x45, 0x50, 0x4c, 0x41, 0x43, 0x45, 0x5f, 0x41, 0x4c, 0x4c, 0x10, 0x02, 0x42, 0x08, 0x0a, 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, - 0x65, 0x22, 0xf0, 0x0c, 0x0a, 0x16, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, + 0x65, 0x22, 0xb2, 0x0e, 0x0a, 0x16, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x12, 0x2d, 0x0a, 0x12, 0x61, 0x64, 0x76, 0x61, 0x6e, 0x63, 0x65, 0x64, 0x5f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x11, 0x61, 0x64, 0x76, 0x61, 0x6e, 0x63, @@ -2054,81 +2111,93 @@ var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_tr 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x2b, 0x0a, 0x11, 0x65, 0x73, 0x63, 0x61, 0x70, 0x65, 0x5f, 0x63, 0x68, 0x61, 0x72, 0x61, 0x63, 0x74, 0x65, 0x72, 0x73, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x08, 0x52, 0x10, 0x65, 0x73, 0x63, 0x61, 0x70, 0x65, 0x43, - 0x68, 0x61, 0x72, 0x61, 0x63, 0x74, 0x65, 0x72, 0x73, 0x1a, 0x63, 0x0a, 0x0f, 0x45, 0x78, 0x74, - 0x72, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, - 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x3a, - 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, + 0x68, 0x61, 0x72, 0x61, 0x63, 0x74, 0x65, 0x72, 0x73, 0x12, 0x6b, 0x0a, 0x10, 0x73, 0x70, 0x61, + 0x6e, 0x5f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x65, 0x72, 0x18, 0x0f, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x40, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e, + 0x76, 0x32, 0x2e, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x2e, 0x68, 0x74, 0x74, 0x70, 0x2e, 0x54, + 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x65, 0x6d, + 0x70, 0x6c, 0x61, 0x74, 0x65, 0x2e, 0x53, 0x70, 0x61, 0x6e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, + 0x6f, 0x72, 0x6d, 0x65, 0x72, 0x52, 0x0f, 0x73, 0x70, 0x61, 0x6e, 0x54, 0x72, 0x61, 0x6e, 0x73, + 0x66, 0x6f, 0x72, 0x6d, 0x65, 0x72, 0x1a, 0x63, 0x0a, 0x0f, 0x45, 0x78, 0x74, 0x72, 0x61, 0x63, + 0x74, 0x6f, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x3a, 0x0a, 0x05, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x65, 0x6e, 0x76, + 0x6f, 0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, + 0x2e, 0x68, 0x74, 0x74, 0x70, 0x2e, 0x45, 0x78, 0x74, 0x72, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x62, 0x0a, 0x0c, 0x48, + 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, + 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x3c, 0x0a, + 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x65, + 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x66, 0x69, 0x6c, 0x74, + 0x65, 0x72, 0x2e, 0x68, 0x74, 0x74, 0x70, 0x2e, 0x49, 0x6e, 0x6a, 0x61, 0x54, 0x65, 0x6d, 0x70, + 0x6c, 0x61, 0x74, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, + 0x60, 0x0a, 0x0e, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x54, 0x6f, 0x41, 0x70, 0x70, 0x65, 0x6e, + 0x64, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, + 0x6b, 0x65, 0x79, 0x12, 0x3c, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, + 0x32, 0x2e, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x2e, 0x68, 0x74, 0x74, 0x70, 0x2e, 0x49, 0x6e, + 0x6a, 0x61, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x1a, 0xc2, 0x01, 0x0a, 0x14, 0x44, 0x79, 0x6e, 0x61, 0x6d, 0x69, 0x63, 0x4d, 0x65, 0x74, + 0x61, 0x64, 0x61, 0x74, 0x61, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x2d, 0x0a, 0x12, 0x6d, 0x65, + 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, + 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x19, 0x0a, 0x03, 0x6b, 0x65, 0x79, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x20, 0x01, 0x52, + 0x03, 0x6b, 0x65, 0x79, 0x12, 0x3c, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e, + 0x76, 0x32, 0x2e, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x2e, 0x68, 0x74, 0x74, 0x70, 0x2e, 0x49, + 0x6e, 0x6a, 0x61, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x12, 0x22, 0x0a, 0x0d, 0x6a, 0x73, 0x6f, 0x6e, 0x5f, 0x74, 0x6f, 0x5f, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x6a, 0x73, 0x6f, 0x6e, 0x54, + 0x6f, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x4d, 0x0a, 0x0f, 0x53, 0x70, 0x61, 0x6e, 0x54, 0x72, + 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x65, 0x72, 0x12, 0x3a, 0x0a, 0x04, 0x6e, 0x61, 0x6d, + 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, + 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x2e, 0x68, 0x74, + 0x74, 0x70, 0x2e, 0x49, 0x6e, 0x6a, 0x61, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, + 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x32, 0x0a, 0x10, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x42, 0x6f, 0x64, 0x79, 0x50, 0x61, 0x72, 0x73, 0x65, 0x12, 0x0f, 0x0a, 0x0b, 0x50, 0x61, 0x72, + 0x73, 0x65, 0x41, 0x73, 0x4a, 0x73, 0x6f, 0x6e, 0x10, 0x00, 0x12, 0x0d, 0x0a, 0x09, 0x44, 0x6f, + 0x6e, 0x74, 0x50, 0x61, 0x72, 0x73, 0x65, 0x10, 0x01, 0x42, 0x15, 0x0a, 0x13, 0x62, 0x6f, 0x64, + 0x79, 0x5f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x4a, 0x04, 0x08, 0x0e, 0x10, 0x0f, 0x22, 0x22, 0x0a, 0x0c, 0x49, 0x6e, 0x6a, 0x61, 0x54, 0x65, + 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x65, 0x78, 0x74, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x65, 0x78, 0x74, 0x22, 0x0d, 0x0a, 0x0b, 0x50, 0x61, + 0x73, 0x73, 0x74, 0x68, 0x72, 0x6f, 0x75, 0x67, 0x68, 0x22, 0x17, 0x0a, 0x15, 0x4d, 0x65, 0x72, + 0x67, 0x65, 0x45, 0x78, 0x74, 0x72, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x54, 0x6f, 0x42, 0x6f, + 0x64, 0x79, 0x22, 0xd7, 0x02, 0x0a, 0x0d, 0x4d, 0x65, 0x72, 0x67, 0x65, 0x4a, 0x73, 0x6f, 0x6e, + 0x4b, 0x65, 0x79, 0x73, 0x12, 0x52, 0x0a, 0x09, 0x6a, 0x73, 0x6f, 0x6e, 0x5f, 0x6b, 0x65, 0x79, + 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, + 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x2e, 0x68, 0x74, + 0x74, 0x70, 0x2e, 0x4d, 0x65, 0x72, 0x67, 0x65, 0x4a, 0x73, 0x6f, 0x6e, 0x4b, 0x65, 0x79, 0x73, + 0x2e, 0x4a, 0x73, 0x6f, 0x6e, 0x4b, 0x65, 0x79, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x08, + 0x6a, 0x73, 0x6f, 0x6e, 0x4b, 0x65, 0x79, 0x73, 0x1a, 0x78, 0x0a, 0x13, 0x4f, 0x76, 0x65, 0x72, + 0x72, 0x69, 0x64, 0x61, 0x62, 0x6c, 0x65, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x12, + 0x3a, 0x0a, 0x04, 0x74, 0x6d, 0x70, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x66, 0x69, 0x6c, - 0x74, 0x65, 0x72, 0x2e, 0x68, 0x74, 0x74, 0x70, 0x2e, 0x45, 0x78, 0x74, 0x72, 0x61, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x62, - 0x0a, 0x0c, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, - 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, - 0x12, 0x3c, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x26, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x66, - 0x69, 0x6c, 0x74, 0x65, 0x72, 0x2e, 0x68, 0x74, 0x74, 0x70, 0x2e, 0x49, 0x6e, 0x6a, 0x61, 0x54, - 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, - 0x38, 0x01, 0x1a, 0x60, 0x0a, 0x0e, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x54, 0x6f, 0x41, 0x70, - 0x70, 0x65, 0x6e, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x3c, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x61, 0x70, - 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x2e, 0x68, 0x74, 0x74, 0x70, - 0x2e, 0x49, 0x6e, 0x6a, 0x61, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x05, 0x76, - 0x61, 0x6c, 0x75, 0x65, 0x1a, 0xc2, 0x01, 0x0a, 0x14, 0x44, 0x79, 0x6e, 0x61, 0x6d, 0x69, 0x63, - 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x2d, 0x0a, - 0x12, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, - 0x61, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x6d, 0x65, 0x74, 0x61, 0x64, - 0x61, 0x74, 0x61, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x19, 0x0a, 0x03, - 0x6b, 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, - 0x20, 0x01, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x3c, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x61, - 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x2e, 0x68, 0x74, 0x74, - 0x70, 0x2e, 0x49, 0x6e, 0x6a, 0x61, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x05, - 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x22, 0x0a, 0x0d, 0x6a, 0x73, 0x6f, 0x6e, 0x5f, 0x74, 0x6f, - 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x6a, 0x73, - 0x6f, 0x6e, 0x54, 0x6f, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x32, 0x0a, 0x10, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x42, 0x6f, 0x64, 0x79, 0x50, 0x61, 0x72, 0x73, 0x65, 0x12, 0x0f, 0x0a, - 0x0b, 0x50, 0x61, 0x72, 0x73, 0x65, 0x41, 0x73, 0x4a, 0x73, 0x6f, 0x6e, 0x10, 0x00, 0x12, 0x0d, - 0x0a, 0x09, 0x44, 0x6f, 0x6e, 0x74, 0x50, 0x61, 0x72, 0x73, 0x65, 0x10, 0x01, 0x42, 0x15, 0x0a, - 0x13, 0x62, 0x6f, 0x64, 0x79, 0x5f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x22, 0x0a, 0x0c, 0x49, 0x6e, 0x6a, 0x61, 0x54, 0x65, 0x6d, 0x70, - 0x6c, 0x61, 0x74, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x65, 0x78, 0x74, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x04, 0x74, 0x65, 0x78, 0x74, 0x22, 0x0d, 0x0a, 0x0b, 0x50, 0x61, 0x73, 0x73, - 0x74, 0x68, 0x72, 0x6f, 0x75, 0x67, 0x68, 0x22, 0x17, 0x0a, 0x15, 0x4d, 0x65, 0x72, 0x67, 0x65, - 0x45, 0x78, 0x74, 0x72, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x54, 0x6f, 0x42, 0x6f, 0x64, 0x79, - 0x22, 0xd7, 0x02, 0x0a, 0x0d, 0x4d, 0x65, 0x72, 0x67, 0x65, 0x4a, 0x73, 0x6f, 0x6e, 0x4b, 0x65, - 0x79, 0x73, 0x12, 0x52, 0x0a, 0x09, 0x6a, 0x73, 0x6f, 0x6e, 0x5f, 0x6b, 0x65, 0x79, 0x73, 0x18, - 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x61, 0x70, - 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x2e, 0x68, 0x74, 0x74, 0x70, - 0x2e, 0x4d, 0x65, 0x72, 0x67, 0x65, 0x4a, 0x73, 0x6f, 0x6e, 0x4b, 0x65, 0x79, 0x73, 0x2e, 0x4a, - 0x73, 0x6f, 0x6e, 0x4b, 0x65, 0x79, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x08, 0x6a, 0x73, - 0x6f, 0x6e, 0x4b, 0x65, 0x79, 0x73, 0x1a, 0x78, 0x0a, 0x13, 0x4f, 0x76, 0x65, 0x72, 0x72, 0x69, - 0x64, 0x61, 0x62, 0x6c, 0x65, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x12, 0x3a, 0x0a, - 0x04, 0x74, 0x6d, 0x70, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x65, 0x6e, - 0x76, 0x6f, 0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x66, 0x69, 0x6c, 0x74, 0x65, - 0x72, 0x2e, 0x68, 0x74, 0x74, 0x70, 0x2e, 0x49, 0x6e, 0x6a, 0x61, 0x54, 0x65, 0x6d, 0x70, 0x6c, - 0x61, 0x74, 0x65, 0x52, 0x04, 0x74, 0x6d, 0x70, 0x6c, 0x12, 0x25, 0x0a, 0x0e, 0x6f, 0x76, 0x65, - 0x72, 0x72, 0x69, 0x64, 0x65, 0x5f, 0x65, 0x6d, 0x70, 0x74, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x08, 0x52, 0x0d, 0x6f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x45, 0x6d, 0x70, 0x74, 0x79, - 0x1a, 0x78, 0x0a, 0x0d, 0x4a, 0x73, 0x6f, 0x6e, 0x4b, 0x65, 0x79, 0x73, 0x45, 0x6e, 0x74, 0x72, - 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, - 0x6b, 0x65, 0x79, 0x12, 0x51, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x3b, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, - 0x32, 0x2e, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x2e, 0x68, 0x74, 0x74, 0x70, 0x2e, 0x4d, 0x65, - 0x72, 0x67, 0x65, 0x4a, 0x73, 0x6f, 0x6e, 0x4b, 0x65, 0x79, 0x73, 0x2e, 0x4f, 0x76, 0x65, 0x72, - 0x72, 0x69, 0x64, 0x61, 0x62, 0x6c, 0x65, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, - 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x47, 0x0a, 0x13, 0x48, 0x65, - 0x61, 0x64, 0x65, 0x72, 0x42, 0x6f, 0x64, 0x79, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, - 0x6d, 0x12, 0x30, 0x0a, 0x14, 0x61, 0x64, 0x64, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, - 0x12, 0x61, 0x64, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, - 0x61, 0x74, 0x61, 0x42, 0x68, 0xb8, 0xf5, 0x04, 0x01, 0xc0, 0xf5, 0x04, 0x01, 0xd0, 0xf5, 0x04, - 0x01, 0x5a, 0x5a, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, - 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, - 0x70, 0x6b, 0x67, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, - 0x6f, 0x2e, 0x69, 0x6f, 0x2f, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x65, 0x6e, - 0x76, 0x6f, 0x79, 0x2f, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x74, - 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x62, 0x06, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x74, 0x65, 0x72, 0x2e, 0x68, 0x74, 0x74, 0x70, 0x2e, 0x49, 0x6e, 0x6a, 0x61, 0x54, 0x65, 0x6d, + 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x04, 0x74, 0x6d, 0x70, 0x6c, 0x12, 0x25, 0x0a, 0x0e, 0x6f, + 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x5f, 0x65, 0x6d, 0x70, 0x74, 0x79, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x08, 0x52, 0x0d, 0x6f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x45, 0x6d, 0x70, + 0x74, 0x79, 0x1a, 0x78, 0x0a, 0x0d, 0x4a, 0x73, 0x6f, 0x6e, 0x4b, 0x65, 0x79, 0x73, 0x45, 0x6e, + 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x51, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3b, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x61, 0x70, 0x69, + 0x2e, 0x76, 0x32, 0x2e, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x2e, 0x68, 0x74, 0x74, 0x70, 0x2e, + 0x4d, 0x65, 0x72, 0x67, 0x65, 0x4a, 0x73, 0x6f, 0x6e, 0x4b, 0x65, 0x79, 0x73, 0x2e, 0x4f, 0x76, + 0x65, 0x72, 0x72, 0x69, 0x64, 0x61, 0x62, 0x6c, 0x65, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, + 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x47, 0x0a, 0x13, + 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x42, 0x6f, 0x64, 0x79, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, + 0x6f, 0x72, 0x6d, 0x12, 0x30, 0x0a, 0x14, 0x61, 0x64, 0x64, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x08, 0x52, 0x12, 0x61, 0x64, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x4d, 0x65, 0x74, + 0x61, 0x64, 0x61, 0x74, 0x61, 0x42, 0x68, 0xb8, 0xf5, 0x04, 0x01, 0xc0, 0xf5, 0x04, 0x01, 0xd0, + 0xf5, 0x04, 0x01, 0x5a, 0x5a, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, + 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, + 0x73, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, + 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2f, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, + 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2f, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, + 0x2f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x62, + 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -2144,7 +2213,7 @@ func file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_t } var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_transformation_transformation_proto_enumTypes = make([]protoimpl.EnumInfo, 2) -var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_transformation_transformation_proto_msgTypes = make([]protoimpl.MessageInfo, 23) +var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_transformation_transformation_proto_msgTypes = make([]protoimpl.MessageInfo, 24) var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_transformation_transformation_proto_goTypes = []interface{}{ (Extraction_Mode)(0), // 0: envoy.api.v2.filter.http.Extraction.Mode (TransformationTemplate_RequestBodyParse)(0), // 1: envoy.api.v2.filter.http.TransformationTemplate.RequestBodyParse @@ -2169,33 +2238,34 @@ var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_tr nil, // 20: envoy.api.v2.filter.http.TransformationTemplate.HeadersEntry (*TransformationTemplate_HeaderToAppend)(nil), // 21: envoy.api.v2.filter.http.TransformationTemplate.HeaderToAppend (*TransformationTemplate_DynamicMetadataValue)(nil), // 22: envoy.api.v2.filter.http.TransformationTemplate.DynamicMetadataValue - (*MergeJsonKeys_OverridableTemplate)(nil), // 23: envoy.api.v2.filter.http.MergeJsonKeys.OverridableTemplate - nil, // 24: envoy.api.v2.filter.http.MergeJsonKeys.JsonKeysEntry - (*v3.RouteMatch)(nil), // 25: solo.io.envoy.config.route.v3.RouteMatch - (*v3.HeaderMatcher)(nil), // 26: solo.io.envoy.config.route.v3.HeaderMatcher - (*v31.StringMatcher)(nil), // 27: solo.io.envoy.type.matcher.v3.StringMatcher - (*v32.TypedExtensionConfig)(nil), // 28: solo.io.envoy.config.core.v3.TypedExtensionConfig - (*wrappers.BoolValue)(nil), // 29: google.protobuf.BoolValue - (*empty.Empty)(nil), // 30: google.protobuf.Empty - (*wrappers.StringValue)(nil), // 31: google.protobuf.StringValue + (*TransformationTemplate_SpanTransformer)(nil), // 23: envoy.api.v2.filter.http.TransformationTemplate.SpanTransformer + (*MergeJsonKeys_OverridableTemplate)(nil), // 24: envoy.api.v2.filter.http.MergeJsonKeys.OverridableTemplate + nil, // 25: envoy.api.v2.filter.http.MergeJsonKeys.JsonKeysEntry + (*v3.RouteMatch)(nil), // 26: solo.io.envoy.config.route.v3.RouteMatch + (*v3.HeaderMatcher)(nil), // 27: solo.io.envoy.config.route.v3.HeaderMatcher + (*v31.StringMatcher)(nil), // 28: solo.io.envoy.type.matcher.v3.StringMatcher + (*v32.TypedExtensionConfig)(nil), // 29: solo.io.envoy.config.core.v3.TypedExtensionConfig + (*wrappers.BoolValue)(nil), // 30: google.protobuf.BoolValue + (*empty.Empty)(nil), // 31: google.protobuf.Empty + (*wrappers.StringValue)(nil), // 32: google.protobuf.StringValue } var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_transformation_transformation_proto_depIdxs = []int32{ 3, // 0: envoy.api.v2.filter.http.FilterTransformations.transformations:type_name -> envoy.api.v2.filter.http.TransformationRule - 25, // 1: envoy.api.v2.filter.http.TransformationRule.match:type_name -> solo.io.envoy.config.route.v3.RouteMatch + 26, // 1: envoy.api.v2.filter.http.TransformationRule.match:type_name -> solo.io.envoy.config.route.v3.RouteMatch 15, // 2: envoy.api.v2.filter.http.TransformationRule.route_transformations:type_name -> envoy.api.v2.filter.http.TransformationRule.Transformations 7, // 3: envoy.api.v2.filter.http.RouteTransformations.request_transformation:type_name -> envoy.api.v2.filter.http.Transformation 7, // 4: envoy.api.v2.filter.http.RouteTransformations.response_transformation:type_name -> envoy.api.v2.filter.http.Transformation 16, // 5: envoy.api.v2.filter.http.RouteTransformations.transformations:type_name -> envoy.api.v2.filter.http.RouteTransformations.RouteTransformation - 26, // 6: envoy.api.v2.filter.http.ResponseMatcher.headers:type_name -> solo.io.envoy.config.route.v3.HeaderMatcher - 27, // 7: envoy.api.v2.filter.http.ResponseMatcher.response_code_details:type_name -> solo.io.envoy.type.matcher.v3.StringMatcher + 27, // 6: envoy.api.v2.filter.http.ResponseMatcher.headers:type_name -> solo.io.envoy.config.route.v3.HeaderMatcher + 28, // 7: envoy.api.v2.filter.http.ResponseMatcher.response_code_details:type_name -> solo.io.envoy.type.matcher.v3.StringMatcher 5, // 8: envoy.api.v2.filter.http.ResponseTransformationRule.match:type_name -> envoy.api.v2.filter.http.ResponseMatcher 7, // 9: envoy.api.v2.filter.http.ResponseTransformationRule.response_transformation:type_name -> envoy.api.v2.filter.http.Transformation 9, // 10: envoy.api.v2.filter.http.Transformation.transformation_template:type_name -> envoy.api.v2.filter.http.TransformationTemplate 14, // 11: envoy.api.v2.filter.http.Transformation.header_body_transform:type_name -> envoy.api.v2.filter.http.HeaderBodyTransform - 28, // 12: envoy.api.v2.filter.http.Transformation.transformer_config:type_name -> solo.io.envoy.config.core.v3.TypedExtensionConfig - 29, // 13: envoy.api.v2.filter.http.Transformation.log_request_response_info:type_name -> google.protobuf.BoolValue - 30, // 14: envoy.api.v2.filter.http.Extraction.body:type_name -> google.protobuf.Empty - 31, // 15: envoy.api.v2.filter.http.Extraction.replacement_text:type_name -> google.protobuf.StringValue + 29, // 12: envoy.api.v2.filter.http.Transformation.transformer_config:type_name -> solo.io.envoy.config.core.v3.TypedExtensionConfig + 30, // 13: envoy.api.v2.filter.http.Transformation.log_request_response_info:type_name -> google.protobuf.BoolValue + 31, // 14: envoy.api.v2.filter.http.Extraction.body:type_name -> google.protobuf.Empty + 32, // 15: envoy.api.v2.filter.http.Extraction.replacement_text:type_name -> google.protobuf.StringValue 0, // 16: envoy.api.v2.filter.http.Extraction.mode:type_name -> envoy.api.v2.filter.http.Extraction.Mode 19, // 17: envoy.api.v2.filter.http.TransformationTemplate.extractors:type_name -> envoy.api.v2.filter.http.TransformationTemplate.ExtractorsEntry 20, // 18: envoy.api.v2.filter.http.TransformationTemplate.headers:type_name -> envoy.api.v2.filter.http.TransformationTemplate.HeadersEntry @@ -2206,28 +2276,30 @@ var file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_tr 13, // 23: envoy.api.v2.filter.http.TransformationTemplate.merge_json_keys:type_name -> envoy.api.v2.filter.http.MergeJsonKeys 1, // 24: envoy.api.v2.filter.http.TransformationTemplate.parse_body_behavior:type_name -> envoy.api.v2.filter.http.TransformationTemplate.RequestBodyParse 22, // 25: envoy.api.v2.filter.http.TransformationTemplate.dynamic_metadata_values:type_name -> envoy.api.v2.filter.http.TransformationTemplate.DynamicMetadataValue - 24, // 26: envoy.api.v2.filter.http.MergeJsonKeys.json_keys:type_name -> envoy.api.v2.filter.http.MergeJsonKeys.JsonKeysEntry - 7, // 27: envoy.api.v2.filter.http.TransformationRule.Transformations.request_transformation:type_name -> envoy.api.v2.filter.http.Transformation - 7, // 28: envoy.api.v2.filter.http.TransformationRule.Transformations.response_transformation:type_name -> envoy.api.v2.filter.http.Transformation - 7, // 29: envoy.api.v2.filter.http.TransformationRule.Transformations.on_stream_completion_transformation:type_name -> envoy.api.v2.filter.http.Transformation - 17, // 30: envoy.api.v2.filter.http.RouteTransformations.RouteTransformation.request_match:type_name -> envoy.api.v2.filter.http.RouteTransformations.RouteTransformation.RequestMatch - 18, // 31: envoy.api.v2.filter.http.RouteTransformations.RouteTransformation.response_match:type_name -> envoy.api.v2.filter.http.RouteTransformations.RouteTransformation.ResponseMatch - 25, // 32: envoy.api.v2.filter.http.RouteTransformations.RouteTransformation.RequestMatch.match:type_name -> solo.io.envoy.config.route.v3.RouteMatch - 7, // 33: envoy.api.v2.filter.http.RouteTransformations.RouteTransformation.RequestMatch.request_transformation:type_name -> envoy.api.v2.filter.http.Transformation - 7, // 34: envoy.api.v2.filter.http.RouteTransformations.RouteTransformation.RequestMatch.response_transformation:type_name -> envoy.api.v2.filter.http.Transformation - 5, // 35: envoy.api.v2.filter.http.RouteTransformations.RouteTransformation.ResponseMatch.match:type_name -> envoy.api.v2.filter.http.ResponseMatcher - 7, // 36: envoy.api.v2.filter.http.RouteTransformations.RouteTransformation.ResponseMatch.response_transformation:type_name -> envoy.api.v2.filter.http.Transformation - 8, // 37: envoy.api.v2.filter.http.TransformationTemplate.ExtractorsEntry.value:type_name -> envoy.api.v2.filter.http.Extraction - 10, // 38: envoy.api.v2.filter.http.TransformationTemplate.HeadersEntry.value:type_name -> envoy.api.v2.filter.http.InjaTemplate - 10, // 39: envoy.api.v2.filter.http.TransformationTemplate.HeaderToAppend.value:type_name -> envoy.api.v2.filter.http.InjaTemplate - 10, // 40: envoy.api.v2.filter.http.TransformationTemplate.DynamicMetadataValue.value:type_name -> envoy.api.v2.filter.http.InjaTemplate - 10, // 41: envoy.api.v2.filter.http.MergeJsonKeys.OverridableTemplate.tmpl:type_name -> envoy.api.v2.filter.http.InjaTemplate - 23, // 42: envoy.api.v2.filter.http.MergeJsonKeys.JsonKeysEntry.value:type_name -> envoy.api.v2.filter.http.MergeJsonKeys.OverridableTemplate - 43, // [43:43] is the sub-list for method output_type - 43, // [43:43] is the sub-list for method input_type - 43, // [43:43] is the sub-list for extension type_name - 43, // [43:43] is the sub-list for extension extendee - 0, // [0:43] is the sub-list for field type_name + 23, // 26: envoy.api.v2.filter.http.TransformationTemplate.span_transformer:type_name -> envoy.api.v2.filter.http.TransformationTemplate.SpanTransformer + 25, // 27: envoy.api.v2.filter.http.MergeJsonKeys.json_keys:type_name -> envoy.api.v2.filter.http.MergeJsonKeys.JsonKeysEntry + 7, // 28: envoy.api.v2.filter.http.TransformationRule.Transformations.request_transformation:type_name -> envoy.api.v2.filter.http.Transformation + 7, // 29: envoy.api.v2.filter.http.TransformationRule.Transformations.response_transformation:type_name -> envoy.api.v2.filter.http.Transformation + 7, // 30: envoy.api.v2.filter.http.TransformationRule.Transformations.on_stream_completion_transformation:type_name -> envoy.api.v2.filter.http.Transformation + 17, // 31: envoy.api.v2.filter.http.RouteTransformations.RouteTransformation.request_match:type_name -> envoy.api.v2.filter.http.RouteTransformations.RouteTransformation.RequestMatch + 18, // 32: envoy.api.v2.filter.http.RouteTransformations.RouteTransformation.response_match:type_name -> envoy.api.v2.filter.http.RouteTransformations.RouteTransformation.ResponseMatch + 26, // 33: envoy.api.v2.filter.http.RouteTransformations.RouteTransformation.RequestMatch.match:type_name -> solo.io.envoy.config.route.v3.RouteMatch + 7, // 34: envoy.api.v2.filter.http.RouteTransformations.RouteTransformation.RequestMatch.request_transformation:type_name -> envoy.api.v2.filter.http.Transformation + 7, // 35: envoy.api.v2.filter.http.RouteTransformations.RouteTransformation.RequestMatch.response_transformation:type_name -> envoy.api.v2.filter.http.Transformation + 5, // 36: envoy.api.v2.filter.http.RouteTransformations.RouteTransformation.ResponseMatch.match:type_name -> envoy.api.v2.filter.http.ResponseMatcher + 7, // 37: envoy.api.v2.filter.http.RouteTransformations.RouteTransformation.ResponseMatch.response_transformation:type_name -> envoy.api.v2.filter.http.Transformation + 8, // 38: envoy.api.v2.filter.http.TransformationTemplate.ExtractorsEntry.value:type_name -> envoy.api.v2.filter.http.Extraction + 10, // 39: envoy.api.v2.filter.http.TransformationTemplate.HeadersEntry.value:type_name -> envoy.api.v2.filter.http.InjaTemplate + 10, // 40: envoy.api.v2.filter.http.TransformationTemplate.HeaderToAppend.value:type_name -> envoy.api.v2.filter.http.InjaTemplate + 10, // 41: envoy.api.v2.filter.http.TransformationTemplate.DynamicMetadataValue.value:type_name -> envoy.api.v2.filter.http.InjaTemplate + 10, // 42: envoy.api.v2.filter.http.TransformationTemplate.SpanTransformer.name:type_name -> envoy.api.v2.filter.http.InjaTemplate + 10, // 43: envoy.api.v2.filter.http.MergeJsonKeys.OverridableTemplate.tmpl:type_name -> envoy.api.v2.filter.http.InjaTemplate + 24, // 44: envoy.api.v2.filter.http.MergeJsonKeys.JsonKeysEntry.value:type_name -> envoy.api.v2.filter.http.MergeJsonKeys.OverridableTemplate + 45, // [45:45] is the sub-list for method output_type + 45, // [45:45] is the sub-list for method input_type + 45, // [45:45] is the sub-list for extension type_name + 45, // [45:45] is the sub-list for extension extendee + 0, // [0:45] is the sub-list for field type_name } func init() { @@ -2467,6 +2539,18 @@ func file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_t } } file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_transformation_transformation_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*TransformationTemplate_SpanTransformer); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_transformation_transformation_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*MergeJsonKeys_OverridableTemplate); i { case 0: return &v.state @@ -2504,7 +2588,7 @@ func file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_t GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_github_com_solo_io_solo_apis_api_gloo_gloo_external_envoy_extensions_transformation_transformation_proto_rawDesc, NumEnums: 2, - NumMessages: 23, + NumMessages: 24, NumExtensions: 0, NumServices: 0, }, diff --git a/pkg/api/gloo.solo.io/external/envoy/extensions/transformation/transformation.pb.hash.go b/pkg/api/gloo.solo.io/external/envoy/extensions/transformation/transformation.pb.hash.go index f0739c45d..13abdda38 100644 --- a/pkg/api/gloo.solo.io/external/envoy/extensions/transformation/transformation.pb.hash.go +++ b/pkg/api/gloo.solo.io/external/envoy/extensions/transformation/transformation.pb.hash.go @@ -687,6 +687,26 @@ func (m *TransformationTemplate) Hash(hasher hash.Hash64) (uint64, error) { return 0, err } + if h, ok := interface{}(m.GetSpanTransformer()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("SpanTransformer")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetSpanTransformer(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("SpanTransformer")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + switch m.BodyTransformation.(type) { case *TransformationTemplate_Body: @@ -1286,6 +1306,42 @@ func (m *TransformationTemplate_DynamicMetadataValue) Hash(hasher hash.Hash64) ( return hasher.Sum64(), nil } +// Hash function +func (m *TransformationTemplate_SpanTransformer) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("envoy.api.v2.filter.http.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/external/envoy/extensions/transformation.TransformationTemplate_SpanTransformer")); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetName()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Name")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetName(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Name")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + return hasher.Sum64(), nil +} + // Hash function func (m *MergeJsonKeys_OverridableTemplate) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { diff --git a/pkg/api/gloo.solo.io/external/envoy/service/ext_proc/v3/external_processor.pb.go b/pkg/api/gloo.solo.io/external/envoy/service/ext_proc/v3/external_processor.pb.go index 892bd48a1..76a9a6d52 100644 --- a/pkg/api/gloo.solo.io/external/envoy/service/ext_proc/v3/external_processor.pb.go +++ b/pkg/api/gloo.solo.io/external/envoy/service/ext_proc/v3/external_processor.pb.go @@ -118,19 +118,19 @@ type ProcessingRequest struct { Request isProcessingRequest_Request `protobuf_oneof:"request"` // Dynamic metadata associated with the request. MetadataContext *v3.Metadata `protobuf:"bytes,8,opt,name=metadata_context,json=metadataContext,proto3" json:"metadata_context,omitempty"` - // The values of properties selected by the “request_attributes“ - // or “response_attributes“ list in the configuration. Each entry + // The values of properties selected by the `request_attributes` + // or `response_attributes` list in the configuration. Each entry // in the list is populated from the standard - // :ref:`attributes ` supported across Envoy. + // attributes supported across Envoy. Attributes map[string]*_struct.Struct `protobuf:"bytes,9,rep,name=attributes,proto3" json:"attributes,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` // Specify whether the filter that sent this request is running in :ref:`observability_mode // ` // and defaults to false. // - // - A value of “false“ indicates that the server must respond + // - A value of `false` indicates that the server must respond // to this message by either sending back a matching ProcessingResponse message, // or by closing the stream. - // - A value of “true“ indicates that the server should not respond to this message, as any + // - A value of `true` indicates that the server should not respond to this message, as any // responses will be ignored. However, it may still close the stream to indicate that no more messages // are needed. ObservabilityMode bool `protobuf:"varint,10,opt,name=observability_mode,json=observabilityMode,proto3" json:"observability_mode,omitempty"` @@ -244,44 +244,44 @@ type isProcessingRequest_Request interface { type ProcessingRequest_RequestHeaders struct { // Information about the HTTP request headers, as well as peer info and additional - // properties. Unless “observability_mode“ is “true“, the server must send back a + // properties. Unless `observability_mode` is `true`, the server must send back a // HeaderResponse message, an ImmediateResponse message, or close the stream. RequestHeaders *HttpHeaders `protobuf:"bytes,2,opt,name=request_headers,json=requestHeaders,proto3,oneof"` } type ProcessingRequest_ResponseHeaders struct { // Information about the HTTP response headers, as well as peer info and additional - // properties. Unless “observability_mode“ is “true“, the server must send back a + // properties. Unless `observability_mode` is `true`, the server must send back a // HeaderResponse message or close the stream. ResponseHeaders *HttpHeaders `protobuf:"bytes,3,opt,name=response_headers,json=responseHeaders,proto3,oneof"` } type ProcessingRequest_RequestBody struct { - // A chunk of the HTTP request body. Unless “observability_mode“ is true, the server must send back + // A chunk of the HTTP request body. Unless `observability_mode` is true, the server must send back // a BodyResponse message, an ImmediateResponse message, or close the stream. RequestBody *HttpBody `protobuf:"bytes,4,opt,name=request_body,json=requestBody,proto3,oneof"` } type ProcessingRequest_ResponseBody struct { - // A chunk of the HTTP response body. Unless “observability_mode“ is “true“, the server must send back + // A chunk of the HTTP response body. Unless `observability_mode` is `true`, the server must send back // a BodyResponse message or close the stream. ResponseBody *HttpBody `protobuf:"bytes,5,opt,name=response_body,json=responseBody,proto3,oneof"` } type ProcessingRequest_RequestTrailers struct { - // The HTTP trailers for the request path. Unless “observability_mode“ is “true“, the server + // The HTTP trailers for the request path. Unless `observability_mode` is `true`, the server // must send back a TrailerResponse message or close the stream. // - // This message is only sent if the trailers processing mode is set to “SEND“ and + // This message is only sent if the trailers processing mode is set to `SEND` and // the original downstream request has trailers. RequestTrailers *HttpTrailers `protobuf:"bytes,6,opt,name=request_trailers,json=requestTrailers,proto3,oneof"` } type ProcessingRequest_ResponseTrailers struct { - // The HTTP trailers for the response path. Unless “observability_mode“ is “true“, the server + // The HTTP trailers for the response path. Unless `observability_mode` is `true`, the server // must send back a TrailerResponse message or close the stream. // - // This message is only sent if the trailers processing mode is set to “SEND“ and + // This message is only sent if the trailers processing mode is set to `SEND` and // the original upstream response has trailers. ResponseTrailers *HttpTrailers `protobuf:"bytes,7,opt,name=response_trailers,json=responseTrailers,proto3,oneof"` } @@ -298,7 +298,7 @@ func (*ProcessingRequest_RequestTrailers) isProcessingRequest_Request() {} func (*ProcessingRequest_ResponseTrailers) isProcessingRequest_Request() {} -// For every ProcessingRequest received by the server with the “observability_mode“ field +// For every ProcessingRequest received by the server with the `observability_mode` field // set to false, the server must send back exactly one ProcessingResponse message. // [#next-free-field: 11] type ProcessingResponse struct { @@ -338,12 +338,12 @@ type ProcessingResponse struct { // which has the timeout value specified in // :ref:`message_timeout // ` - // and start a new timer with this “override_message_timeout“ value and keep the + // and start a new timer with this `override_message_timeout` value and keep the // Envoy ext_proc filter state machine intact. // Has to be >= 1ms and <= // :ref:`max_message_timeout ` // Such message can be sent at most once in a particular Envoy ext_proc filter processing state. - // To enable this API, one has to set “max_message_timeout“ to a number >= 1ms. + // To enable this API, one has to set `max_message_timeout` to a number >= 1ms. OverrideMessageTimeout *duration.Duration `protobuf:"bytes,10,opt,name=override_message_timeout,json=overrideMessageTimeout,proto3" json:"override_message_timeout,omitempty"` } @@ -462,37 +462,37 @@ type isProcessingResponse_Response interface { type ProcessingResponse_RequestHeaders struct { // The server must send back this message in response to a message with the - // “request_headers“ field set. + // `request_headers` field set. RequestHeaders *HeadersResponse `protobuf:"bytes,1,opt,name=request_headers,json=requestHeaders,proto3,oneof"` } type ProcessingResponse_ResponseHeaders struct { // The server must send back this message in response to a message with the - // “response_headers“ field set. + // `response_headers` field set. ResponseHeaders *HeadersResponse `protobuf:"bytes,2,opt,name=response_headers,json=responseHeaders,proto3,oneof"` } type ProcessingResponse_RequestBody struct { // The server must send back this message in response to a message with - // the “request_body“ field set. + // the `request_body` field set. RequestBody *BodyResponse `protobuf:"bytes,3,opt,name=request_body,json=requestBody,proto3,oneof"` } type ProcessingResponse_ResponseBody struct { // The server must send back this message in response to a message with - // the “response_body“ field set. + // the `response_body` field set. ResponseBody *BodyResponse `protobuf:"bytes,4,opt,name=response_body,json=responseBody,proto3,oneof"` } type ProcessingResponse_RequestTrailers struct { // The server must send back this message in response to a message with - // the “request_trailers“ field set. + // the `request_trailers` field set. RequestTrailers *TrailersResponse `protobuf:"bytes,5,opt,name=request_trailers,json=requestTrailers,proto3,oneof"` } type ProcessingResponse_ResponseTrailers struct { // The server must send back this message in response to a message with - // the “response_trailers“ field set. + // the `response_trailers` field set. ResponseTrailers *TrailersResponse `protobuf:"bytes,6,opt,name=response_trailers,json=responseTrailers,proto3,oneof"` } @@ -501,7 +501,7 @@ type ProcessingResponse_ImmediateResponse struct { // downstream, and stop processing additional filters and ignore any // additional messages received from the remote server for this request or // response. If a response has already started -- for example, if this - // message is sent response to a “response_body“ message -- then + // message is sent response to a `response_body` message -- then // this will either ship the reply directly to the downstream codec, // or reset the stream. ImmediateResponse *ImmediateResponse `protobuf:"bytes,7,opt,name=immediate_response,json=immediateResponse,proto3,oneof"` @@ -530,12 +530,12 @@ type HttpHeaders struct { // The HTTP request headers. All header keys will be // lower-cased, because HTTP header keys are case-insensitive. - // The “headers“ encoding is based on the runtime guard + // The `headers` encoding is based on the runtime guard // envoy_reloadable_features_send_header_raw_value setting. // When it is true, the header value is encoded in the - // :ref:`raw_value ` field. + // raw_value field. // When it is false, the header value is encoded in the - // :ref:`value ` field. + // value field. Headers *v3.HeaderMap `protobuf:"bytes,1,opt,name=headers,proto3" json:"headers,omitempty"` // [#not-implemented-hide:] // This field is deprecated and not implemented. Attributes will be sent in @@ -665,12 +665,12 @@ type HttpTrailers struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // The “trailers“ encoding is based on the runtime guard + // The `trailers` encoding is based on the runtime guard // envoy_reloadable_features_send_header_raw_value setting. // When it is true, the header value is encoded in the - // :ref:`raw_value ` field. + // raw_value field. // When it is false, the header value is encoded in the - // :ref:`value ` field. + // value field. Trailers *v3.HeaderMap `protobuf:"bytes,1,opt,name=trailers,proto3" json:"trailers,omitempty"` } @@ -875,8 +875,8 @@ type CommonResponse struct { // Replace the body of the last message sent to the remote server on this // stream. If responding to an HttpBody request, simply replace or clear // the body chunk that was sent with that request. Body mutations may take - // effect in response either to “header“ or “body“ messages. When it is - // in response to “header“ messages, it only take effect if the + // effect in response either to `header` or `body` messages. When it is + // in response to `header` messages, it only take effect if the // :ref:`status ` // is set to CONTINUE_AND_REPLACE. BodyMutation *BodyMutation `protobuf:"bytes,3,opt,name=body_mutation,json=bodyMutation,proto3" json:"body_mutation,omitempty"` @@ -884,12 +884,12 @@ type CommonResponse struct { // Add new trailers to the message. This may be used when responding to either a // HttpHeaders or HttpBody message, but only if this message is returned // along with the CONTINUE_AND_REPLACE status. - // The “trailers“ encoding is based on the runtime guard + // The `trailers` encoding is based on the runtime guard // envoy_reloadable_features_send_header_raw_value setting. // When it is true, the header value is encoded in the - // :ref:`raw_value ` field. + // raw_value field. // When it is false, the header value is encoded in the - // :ref:`value ` field. + // value field. Trailers *v3.HeaderMap `protobuf:"bytes,4,opt,name=trailers,proto3" json:"trailers,omitempty"` // Clear the route cache for the current client request. This is necessary // if the remote server modified headers that are used to calculate the route. @@ -1116,17 +1116,17 @@ type HeaderMutation struct { unknownFields protoimpl.UnknownFields // Add or replace HTTP headers. Attempts to set the value of - // any “x-envoy“ header, and attempts to set the “:method“, - // “:authority“, “:scheme“, or “host“ headers will be ignored. - // The “set_headers“ encoding is based on the runtime guard + // any `x-envoy` header, and attempts to set the `:method`, + // `:authority`, `:scheme`, or `host` headers will be ignored. + // The `set_headers` encoding is based on the runtime guard // envoy_reloadable_features_send_header_raw_value setting. // When it is true, the header value is encoded in the - // :ref:`raw_value ` field. + // raw_value field. // When it is false, the header value is encoded in the - // :ref:`value ` field. + // value field. SetHeaders []*v3.HeaderValueOption `protobuf:"bytes,1,rep,name=set_headers,json=setHeaders,proto3" json:"set_headers,omitempty"` // Remove these HTTP headers. Attempts to remove system headers -- - // any header starting with “:“, plus “host“ -- will be ignored. + // any header starting with `:`, plus `host` -- will be ignored. RemoveHeaders []string `protobuf:"bytes,2,rep,name=remove_headers,json=removeHeaders,proto3" json:"remove_headers,omitempty"` } diff --git a/pkg/api/gloo.solo.io/external/envoy/type/matcher/v3/regex.pb.go b/pkg/api/gloo.solo.io/external/envoy/type/matcher/v3/regex.pb.go index 6d88a349d..46ec06403 100644 --- a/pkg/api/gloo.solo.io/external/envoy/type/matcher/v3/regex.pb.go +++ b/pkg/api/gloo.solo.io/external/envoy/type/matcher/v3/regex.pb.go @@ -124,10 +124,9 @@ type RegexMatchAndSubstitute struct { // subject string during a substitution operation to produce a new string. // Capture groups in the pattern can be referenced in the substitution // string. Note, however, that the syntax for referring to capture groups is - // defined by the chosen regular expression engine. Google's `RE2 - // `_ regular expression engine uses a + // defined by the chosen regular expression engine. Google's [RE2](https://github.com/google/re2) regular expression engine uses a // backslash followed by the capture group number to denote a numbered - // capture group. E.g., “\1“ refers to capture group 1, and “\2“ refers + // capture group. E.g., `\1` refers to capture group 1, and `\2` refers // to capture group 2. Substitution string `protobuf:"bytes,2,opt,name=substitution,proto3" json:"substitution,omitempty"` } @@ -178,8 +177,8 @@ func (x *RegexMatchAndSubstitute) GetSubstitution() string { return "" } -// Google's `RE2 `_ regex engine. The regex string must adhere to -// the documented `syntax `_. The engine is designed +// Google's [RE2](https://github.com/google/re2) regex engine. The regex string must adhere to +// the documented [syntax](https://github.com/google/re2/wiki/Syntax). The engine is designed // to complete execution in linear time as well as limit the amount of memory used. // // Envoy supports program size checking via runtime. The runtime keys `re2.max_program_size.error_level` diff --git a/pkg/api/gloo.solo.io/external/envoy/type/metadata/v3/metadata.pb.go b/pkg/api/gloo.solo.io/external/envoy/type/metadata/v3/metadata.pb.go index a247e88ce..6f0b9a224 100644 --- a/pkg/api/gloo.solo.io/external/envoy/type/metadata/v3/metadata.pb.go +++ b/pkg/api/gloo.solo.io/external/envoy/type/metadata/v3/metadata.pb.go @@ -25,7 +25,7 @@ const ( ) // MetadataKey provides a general interface using `key` and `path` to retrieve value from -// :ref:`Metadata `. +// Metadata. // // For example, for the following Metadata: // @@ -55,7 +55,7 @@ type MetadataKey struct { // Typically, it represents a builtin subsystem or custom extension. Key string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"` // The path to retrieve the Value from the Struct. It can be a prefix or a full path, - // e.g. “[prop, xyz]“ for a struct or “[prop, foo]“ for a string in the example, + // e.g. `[prop, xyz]` for a struct or `[prop, foo]` for a string in the example, // which depends on the particular scenario. // // Note: Due to that only the key type segment is supported, the path can not specify a list diff --git a/pkg/api/gloo.solo.io/external/envoy/type/tracing/v3/custom_tag.pb.go b/pkg/api/gloo.solo.io/external/envoy/type/tracing/v3/custom_tag.pb.go index db7534be8..161a87cc1 100644 --- a/pkg/api/gloo.solo.io/external/envoy/type/tracing/v3/custom_tag.pb.go +++ b/pkg/api/gloo.solo.io/external/envoy/type/tracing/v3/custom_tag.pb.go @@ -321,9 +321,9 @@ func (x *CustomTag_Header) GetDefaultValue() string { } // Metadata type custom tag using -// :ref:`MetadataKey ` to retrieve the protobuf value -// from :ref:`Metadata `, and populate the tag value with -// `the canonical JSON `_ +// MetadataKey to retrieve the protobuf value +// from Metadata, and populate the tag value with +// [the canonical JSON](https://developers.google.com/protocol-buffers/docs/proto3#json) // representation of it. type CustomTag_Metadata struct { state protoimpl.MessageState diff --git a/pkg/api/gloo.solo.io/v1/core/matchers/matchers.pb.go b/pkg/api/gloo.solo.io/v1/core/matchers/matchers.pb.go index 300167c25..aa6c10686 100644 --- a/pkg/api/gloo.solo.io/v1/core/matchers/matchers.pb.go +++ b/pkg/api/gloo.solo.io/v1/core/matchers/matchers.pb.go @@ -169,8 +169,7 @@ type Matcher_Regex struct { // If specified, the route is a regular expression rule meaning that the // regex must match the *:path* header once the query string is removed. The entire path // (without the query string) must match the regex. The rule will not match if only a - // sub-sequence of the *:path* header matches the regex. The regex grammar is defined `here - // `_. + // sub-sequence of the *:path* header matches the regex. The regex grammar is defined [here](http://en.cppreference.com/w/cpp/regex/ecmascript). // // Examples:
// @@ -224,7 +223,7 @@ type HeaderMatcher struct { // Examples: // * name=foo, invert_match=true: matches if no header named `foo` is present // * name=foo, value=bar, invert_match=true: matches if no header named `foo` with value `bar` is present - // * name=foo, value=“\d{3}“, regex=true, invert_match=true: matches if no header named `foo` with a value consisting of three integers is present + // * name=foo, value=`\d{3}`, regex=true, invert_match=true: matches if no header named `foo` with a value consisting of three integers is present InvertMatch bool `protobuf:"varint,4,opt,name=invert_match,json=invertMatch,proto3" json:"invert_match,omitempty"` } diff --git a/pkg/api/gloo.solo.io/v1/enterprise/options/extproc/extproc.pb.go b/pkg/api/gloo.solo.io/v1/enterprise/options/extproc/extproc.pb.go index 3847d24af..b672ef352 100644 --- a/pkg/api/gloo.solo.io/v1/enterprise/options/extproc/extproc.pb.go +++ b/pkg/api/gloo.solo.io/v1/enterprise/options/extproc/extproc.pb.go @@ -129,9 +129,9 @@ type Settings struct { // ext_proc service as an opaque *protobuf::Struct*. MetadataContextNamespaces []string `protobuf:"bytes,16,rep,name=metadata_context_namespaces,json=metadataContextNamespaces,proto3" json:"metadata_context_namespaces,omitempty"` // Specifies a list of metadata namespaces whose values, if present, will be passed to the - // ext_proc service. :ref:`typed_filter_metadata ` is passed as an “protobuf::Any“. + // ext_proc service. typed_filter_metadata is passed as an `protobuf::Any`. // - // It works in a way similar to “metadata_context_namespaces“ but allows envoy and external processing server to share the protobuf message definition + // It works in a way similar to `metadata_context_namespaces` but allows envoy and external processing server to share the protobuf message definition // in order to do a safe parsing. TypedMetadataContextNamespaces []string `protobuf:"bytes,17,rep,name=typed_metadata_context_namespaces,json=typedMetadataContextNamespaces,proto3" json:"typed_metadata_context_namespaces,omitempty"` } @@ -491,9 +491,9 @@ type Overrides struct { // ext_proc service as an opaque *protobuf::Struct*. MetadataContextNamespaces []string `protobuf:"bytes,6,rep,name=metadata_context_namespaces,json=metadataContextNamespaces,proto3" json:"metadata_context_namespaces,omitempty"` // Specifies a list of metadata namespaces whose values, if present, will be passed to the - // ext_proc service. :ref:`typed_filter_metadata ` is passed as an “protobuf::Any“. + // ext_proc service. typed_filter_metadata is passed as an `protobuf::Any`. // - // It works in a way similar to “metadata_context_namespaces“ but allows envoy and external processing server to share the protobuf message definition + // It works in a way similar to `metadata_context_namespaces` but allows envoy and external processing server to share the protobuf message definition // in order to do a safe parsing. TypedMetadataContextNamespaces []string `protobuf:"bytes,7,rep,name=typed_metadata_context_namespaces,json=typedMetadataContextNamespaces,proto3" json:"typed_metadata_context_namespaces,omitempty"` } diff --git a/pkg/api/gloo.solo.io/v1/failover.pb.go b/pkg/api/gloo.solo.io/v1/failover.pb.go index 69e1ef8ca..a05d0944f 100644 --- a/pkg/api/gloo.solo.io/v1/failover.pb.go +++ b/pkg/api/gloo.solo.io/v1/failover.pb.go @@ -287,9 +287,8 @@ type Locality struct { // Region this zone belongs to. Region string `protobuf:"bytes,1,opt,name=region,proto3" json:"region,omitempty"` // Defines the local service zone where Envoy is running. The meaning of zone - // is context dependent, e.g. `Availability Zone (AZ) - // `_ - // on AWS, `Zone `_ on + // is context dependent, e.g. [Availability Zone (AZ)](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-regions-availability-zones.html) + // on AWS, [Zone](https://cloud.google.com/compute/docs/regions-zones/) on // GCP, etc. Zone string `protobuf:"bytes,2,opt,name=zone,proto3" json:"zone,omitempty"` // When used for locality of upstream hosts, this field further splits zone @@ -415,8 +414,8 @@ type Failover_Policy struct { // // { "overprovisioning_factor": 100 } // - // Read more at :ref:`priority levels ` and - // :ref:`localities `. + // Read more at priority levels and + // localities. OverprovisioningFactor *wrappers.UInt32Value `protobuf:"bytes,1,opt,name=overprovisioning_factor,json=overprovisioningFactor,proto3" json:"overprovisioning_factor,omitempty"` } diff --git a/pkg/api/gloo.solo.io/v1/listener_options.pb.clone.go b/pkg/api/gloo.solo.io/v1/listener_options.pb.clone.go index 442502e1e..f57d67b76 100644 --- a/pkg/api/gloo.solo.io/v1/listener_options.pb.clone.go +++ b/pkg/api/gloo.solo.io/v1/listener_options.pb.clone.go @@ -90,6 +90,12 @@ func (m *ListenerOptions) Clone() proto.Message { target.ListenerAccessLoggingService = proto.Clone(m.GetListenerAccessLoggingService()).(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_options_als.AccessLoggingService) } + if h, ok := interface{}(m.GetTcpStats()).(clone.Cloner); ok { + target.TcpStats = h.Clone().(*github_com_golang_protobuf_ptypes_wrappers.BoolValue) + } else { + target.TcpStats = proto.Clone(m.GetTcpStats()).(*github_com_golang_protobuf_ptypes_wrappers.BoolValue) + } + return target } diff --git a/pkg/api/gloo.solo.io/v1/listener_options.pb.equal.go b/pkg/api/gloo.solo.io/v1/listener_options.pb.equal.go index ac448e83a..e9cced90e 100644 --- a/pkg/api/gloo.solo.io/v1/listener_options.pb.equal.go +++ b/pkg/api/gloo.solo.io/v1/listener_options.pb.equal.go @@ -123,6 +123,16 @@ func (m *ListenerOptions) Equal(that interface{}) bool { } } + if h, ok := interface{}(m.GetTcpStats()).(equality.Equalizer); ok { + if !h.Equal(target.GetTcpStats()) { + return false + } + } else { + if !proto.Equal(m.GetTcpStats(), target.GetTcpStats()) { + return false + } + } + return true } diff --git a/pkg/api/gloo.solo.io/v1/listener_options.pb.go b/pkg/api/gloo.solo.io/v1/listener_options.pb.go index b0d6e818b..3bda3fe32 100644 --- a/pkg/api/gloo.solo.io/v1/listener_options.pb.go +++ b/pkg/api/gloo.solo.io/v1/listener_options.pb.go @@ -59,6 +59,10 @@ type ListenerOptions struct { // Added initially to support listener level logging for HTTP listeners. // For more info see https://www.envoyproxy.io/docs/envoy/latest/api-v3/config/listener/v3/listener.proto#envoy-v3-api-field-config-listener-v3-listener-access-log ListenerAccessLoggingService *als.AccessLoggingService `protobuf:"bytes,7,opt,name=listener_access_logging_service,json=listenerAccessLoggingService,proto3" json:"listener_access_logging_service,omitempty"` + // If true, will wrap all filter chains in the listener with a TCP stats transport socket, which is a + // passthrough listener that can report low-level Linux TCP stats, useful for diagnosis + // and triage. + TcpStats *wrappers.BoolValue `protobuf:"bytes,8,opt,name=tcp_stats,json=tcpStats,proto3" json:"tcp_stats,omitempty"` } func (x *ListenerOptions) Reset() { @@ -142,6 +146,13 @@ func (x *ListenerOptions) GetListenerAccessLoggingService() *als.AccessLoggingSe return nil } +func (x *ListenerOptions) GetTcpStats() *wrappers.BoolValue { + if x != nil { + return x.TcpStats + } + return nil +} + // Configuration for listener connection balancing. type ConnectionBalanceConfig struct { state protoimpl.MessageState @@ -264,7 +275,7 @@ var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_listener_options_proto_ra 0x76, 0x31, 0x2f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x61, 0x6c, 0x73, 0x2f, 0x61, 0x6c, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, - 0x72, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x9e, 0x05, 0x0a, 0x0f, 0x4c, 0x69, 0x73, + 0x72, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xd7, 0x05, 0x0a, 0x0f, 0x4c, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x65, 0x72, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x64, 0x0a, 0x16, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x5f, 0x6c, 0x6f, 0x67, 0x67, 0x69, 0x6e, 0x67, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x61, @@ -306,20 +317,24 @@ var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_listener_options_proto_ra 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x4c, 0x6f, 0x67, 0x67, 0x69, 0x6e, 0x67, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x52, 0x1c, 0x6c, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x65, 0x72, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x4c, 0x6f, 0x67, 0x67, 0x69, - 0x6e, 0x67, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x22, 0x82, 0x01, 0x0a, 0x17, 0x43, 0x6f, - 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x43, - 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x57, 0x0a, 0x0d, 0x65, 0x78, 0x61, 0x63, 0x74, 0x5f, 0x62, - 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x67, - 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x43, 0x6f, 0x6e, 0x6e, - 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x43, 0x6f, 0x6e, - 0x66, 0x69, 0x67, 0x2e, 0x45, 0x78, 0x61, 0x63, 0x74, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, - 0x52, 0x0c, 0x65, 0x78, 0x61, 0x63, 0x74, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x1a, 0x0e, - 0x0a, 0x0c, 0x45, 0x78, 0x61, 0x63, 0x74, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x42, 0x42, - 0xb8, 0xf5, 0x04, 0x01, 0xc0, 0xf5, 0x04, 0x01, 0xd0, 0xf5, 0x04, 0x01, 0x5a, 0x34, 0x67, 0x69, - 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, - 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x61, - 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2f, - 0x76, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x6e, 0x67, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x37, 0x0a, 0x09, 0x74, 0x63, 0x70, + 0x5f, 0x73, 0x74, 0x61, 0x74, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x42, + 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x08, 0x74, 0x63, 0x70, 0x53, 0x74, 0x61, + 0x74, 0x73, 0x22, 0x82, 0x01, 0x0a, 0x17, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x57, + 0x0a, 0x0d, 0x65, 0x78, 0x61, 0x63, 0x74, 0x5f, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, + 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x42, + 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x45, 0x78, 0x61, + 0x63, 0x74, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x0c, 0x65, 0x78, 0x61, 0x63, 0x74, + 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x1a, 0x0e, 0x0a, 0x0c, 0x45, 0x78, 0x61, 0x63, 0x74, + 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x42, 0x42, 0xb8, 0xf5, 0x04, 0x01, 0xc0, 0xf5, 0x04, + 0x01, 0xd0, 0xf5, 0x04, 0x01, 0x5a, 0x34, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, + 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, + 0x70, 0x69, 0x73, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, + 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2f, 0x76, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x33, } var ( @@ -344,6 +359,7 @@ var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_listener_options_proto_go (*wrappers.UInt32Value)(nil), // 5: google.protobuf.UInt32Value (*core.SocketOption)(nil), // 6: solo.io.envoy.api.v2.core.SocketOption (*proxy_protocol.ProxyProtocol)(nil), // 7: proxy_protocol.options.gloo.solo.io.ProxyProtocol + (*wrappers.BoolValue)(nil), // 8: google.protobuf.BoolValue } var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_listener_options_proto_depIdxs = []int32{ 3, // 0: gloo.solo.io.ListenerOptions.access_logging_service:type_name -> als.options.gloo.solo.io.AccessLoggingService @@ -353,12 +369,13 @@ var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_listener_options_proto_de 7, // 4: gloo.solo.io.ListenerOptions.proxy_protocol:type_name -> proxy_protocol.options.gloo.solo.io.ProxyProtocol 1, // 5: gloo.solo.io.ListenerOptions.connection_balance_config:type_name -> gloo.solo.io.ConnectionBalanceConfig 3, // 6: gloo.solo.io.ListenerOptions.listener_access_logging_service:type_name -> als.options.gloo.solo.io.AccessLoggingService - 2, // 7: gloo.solo.io.ConnectionBalanceConfig.exact_balance:type_name -> gloo.solo.io.ConnectionBalanceConfig.ExactBalance - 8, // [8:8] is the sub-list for method output_type - 8, // [8:8] is the sub-list for method input_type - 8, // [8:8] is the sub-list for extension type_name - 8, // [8:8] is the sub-list for extension extendee - 0, // [0:8] is the sub-list for field type_name + 8, // 7: gloo.solo.io.ListenerOptions.tcp_stats:type_name -> google.protobuf.BoolValue + 2, // 8: gloo.solo.io.ConnectionBalanceConfig.exact_balance:type_name -> gloo.solo.io.ConnectionBalanceConfig.ExactBalance + 9, // [9:9] is the sub-list for method output_type + 9, // [9:9] is the sub-list for method input_type + 9, // [9:9] is the sub-list for extension type_name + 9, // [9:9] is the sub-list for extension extendee + 0, // [0:9] is the sub-list for field type_name } func init() { file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_listener_options_proto_init() } diff --git a/pkg/api/gloo.solo.io/v1/listener_options.pb.hash.go b/pkg/api/gloo.solo.io/v1/listener_options.pb.hash.go index 73545e5d8..72b650ff8 100644 --- a/pkg/api/gloo.solo.io/v1/listener_options.pb.hash.go +++ b/pkg/api/gloo.solo.io/v1/listener_options.pb.hash.go @@ -182,6 +182,26 @@ func (m *ListenerOptions) Hash(hasher hash.Hash64) (uint64, error) { } } + if h, ok := interface{}(m.GetTcpStats()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("TcpStats")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetTcpStats(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("TcpStats")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + return hasher.Sum64(), nil } diff --git a/pkg/api/gloo.solo.io/v1/load_balancer.pb.go b/pkg/api/gloo.solo.io/v1/load_balancer.pb.go index b2e1ec2ee..844afbf76 100644 --- a/pkg/api/gloo.solo.io/v1/load_balancer.pb.go +++ b/pkg/api/gloo.solo.io/v1/load_balancer.pb.go @@ -541,8 +541,8 @@ type LoadBalancerConfig_SlowStartConfig struct { // By tuning the parameter, is possible to achieve polynomial or exponential shape of ramp-up curve. // // During slow start window, effective weight of an endpoint would be scaled with time factor and aggression: - // “new_weight = weight * max(min_weight_percent, time_factor ^ (1 / aggression))“, - // where “time_factor=(time_since_start_seconds / slow_start_time_seconds)“. + // `new_weight = weight * max(min_weight_percent, time_factor ^ (1 / aggression))`, + // where `time_factor=(time_since_start_seconds / slow_start_time_seconds)`. // // As time progresses, more and more traffic would be sent to endpoint, which is in slow start window. // Once host exits slow start, time_factor and aggression no longer affect its weight. diff --git a/pkg/api/gloo.solo.io/v1/options/als/als.pb.go b/pkg/api/gloo.solo.io/v1/options/als/als.pb.go index 270e1e099..2b9764842 100644 --- a/pkg/api/gloo.solo.io/v1/options/als/als.pb.go +++ b/pkg/api/gloo.solo.io/v1/options/als/als.pb.go @@ -964,7 +964,7 @@ type RuntimeFilter struct { unknownFields protoimpl.UnknownFields // Runtime key to get an optional overridden numerator for use in the - // “percent_sampled“ field. If found in runtime, this value will replace the + // `percent_sampled` field. If found in runtime, this value will replace the // default numerator. RuntimeKey string `protobuf:"bytes,1,opt,name=runtime_key,json=runtimeKey,proto3" json:"runtime_key,omitempty"` // The default sampling percentage. If not specified, defaults to 0% with @@ -976,9 +976,9 @@ type RuntimeFilter struct { // is present, the filter will consistently sample across multiple hosts based // on the runtime key value and the value extracted from // :ref:`x-request-id`. If it is - // missing, or “use_independent_randomness“ is set to true, the filter will + // missing, or `use_independent_randomness` is set to true, the filter will // randomly sample based on the runtime key value alone. - // “use_independent_randomness“ can be used for logging kill switches within + // `use_independent_randomness` can be used for logging kill switches within // complex nested :ref:`AndFilter // ` and :ref:`OrFilter // ` blocks that are easier to diff --git a/pkg/api/gloo.solo.io/v1/options/dynamic_forward_proxy/dynamic_forward_proxy.pb.go b/pkg/api/gloo.solo.io/v1/options/dynamic_forward_proxy/dynamic_forward_proxy.pb.go index b09f853f6..c83fe87a9 100644 --- a/pkg/api/gloo.solo.io/v1/options/dynamic_forward_proxy/dynamic_forward_proxy.pb.go +++ b/pkg/api/gloo.solo.io/v1/options/dynamic_forward_proxy/dynamic_forward_proxy.pb.go @@ -252,19 +252,19 @@ type DnsCacheConfig struct { // The TTL for hosts that are unused. Hosts that have not been used in the configured time // interval will be purged. If not specified defaults to 5m. // - // .. note: + // **Note**: // // The TTL is only checked at the time of DNS refresh, as specified by *dns_refresh_rate*. This // means that if the configured TTL is shorter than the refresh rate the host may not be removed // immediately. // - // .. note: + // **Note**: // // The TTL has no relation to DNS TTL and is only used to control Envoy's resource usage. HostTtl *duration.Duration `protobuf:"bytes,4,opt,name=host_ttl,json=hostTtl,proto3" json:"host_ttl,omitempty"` // The maximum number of hosts that the cache will hold. If not specified defaults to 1024. // - // .. note: + // **Note**: // // The implementation is approximate and enforced independently on each worker thread, thus // it is possible for the maximum hosts in the cache to go slightly above the configured @@ -425,12 +425,12 @@ type RefreshRate struct { // Specifies the base interval between refreshes. This parameter is required and must be greater // than 1ms and less than - // :ref:`max_interval `. + // max_interval. BaseInterval *duration.Duration `protobuf:"bytes,1,opt,name=base_interval,json=baseInterval,proto3" json:"base_interval,omitempty"` // Specifies the maximum interval between refreshes. This parameter is optional, but must be // greater than or equal to the - // :ref:`base_interval ` if set. The default - // is 10 times the :ref:`base_interval `. + // base_interval if set. The default + // is 10 times the base_interval. MaxInterval *duration.Duration `protobuf:"bytes,2,opt,name=max_interval,json=maxInterval,proto3" json:"max_interval,omitempty"` } @@ -557,7 +557,7 @@ type PerRouteConfig_HostRewrite struct { // // Note: this rewrite affects both DNS lookup and host header forwarding. However, this // option shouldn't be used with - // :ref:`HCM host rewrite ` given that the + // HCM host rewrite given that the // value set here would be used for DNS lookups whereas the value set in the HCM would be used // for host header forwarding which is not the desired outcome. HostRewrite string `protobuf:"bytes,1,opt,name=host_rewrite,json=hostRewrite,proto3,oneof"` @@ -574,7 +574,7 @@ type PerRouteConfig_AutoHostRewriteHeader struct { // given that the value set here would be used for DNS lookups whereas the value set in the HCM // would be used for host header forwarding which is not the desired outcome. // - // .. note:: + // **Note**: // // If the header appears multiple times only the first value is used. AutoHostRewriteHeader string `protobuf:"bytes,2,opt,name=auto_host_rewrite_header,json=autoHostRewriteHeader,proto3,oneof"` diff --git a/pkg/api/gloo.solo.io/v1/options/grpc_json/grpc_json.pb.go b/pkg/api/gloo.solo.io/v1/options/grpc_json/grpc_json.pb.go index dd615f91f..751be68b3 100644 --- a/pkg/api/gloo.solo.io/v1/options/grpc_json/grpc_json.pb.go +++ b/pkg/api/gloo.solo.io/v1/options/grpc_json/grpc_json.pb.go @@ -40,13 +40,12 @@ type GrpcJsonTranscoder struct { DescriptorSet isGrpcJsonTranscoder_DescriptorSet `protobuf_oneof:"descriptor_set"` // A list of strings that // supplies the fully qualified service names (i.e. "package_name.service_name") that - // the transcoder will translate. If the service name doesn't exist in “proto_descriptor“, - // Envoy will fail at startup. The “proto_descriptor“ may contain more services than + // the transcoder will translate. If the service name doesn't exist in `proto_descriptor`, + // Envoy will fail at startup. The `proto_descriptor` may contain more services than // the service names specified here, but they won't be translated. Services []string `protobuf:"bytes,2,rep,name=services,proto3" json:"services,omitempty"` // Control options for response JSON. These options are passed directly to - // `JsonPrintOptions `_. + // [JsonPrintOptions](https://developers.google.com/protocol-buffers/docs/reference/cpp/google.protobuf.util.json_util#JsonPrintOptions). PrintOptions *GrpcJsonTranscoder_PrintOptions `protobuf:"bytes,3,opt,name=print_options,json=printOptions,proto3" json:"print_options,omitempty"` // Set this value to true to keep the incoming request route after the outgoing headers are transformed to match the upstream gRPC service. // Note that you cannot set this value to true with routes for gRPC services that are not transcoded. @@ -75,11 +74,11 @@ type GrpcJsonTranscoder struct { // // message Shelf {} // - // The request “/shelves/100?foo=bar“ will not be mapped to “GetShelf``` because variable - // binding for “foo“ is not defined. Adding “foo“ to “ignored_query_parameters“ will allow - // the same request to be mapped to “GetShelf“. + // The request `/shelves/100?foo=bar` will not be mapped to `GetShelf` because variable + // binding for `foo` is not defined. Adding `foo` to `ignored_query_parameters` will allow + // the same request to be mapped to `GetShelf`. IgnoredQueryParameters []string `protobuf:"bytes,6,rep,name=ignored_query_parameters,json=ignoredQueryParameters,proto3" json:"ignored_query_parameters,omitempty"` - // Whether to route methods without the “google.api.http“ option. + // Whether to route methods without the `google.api.http` option. // // Example : // @@ -97,20 +96,20 @@ type GrpcJsonTranscoder struct { // // message Shelf {} // - // The client could “post“ a json body “{"shelf": 1234}“ with the path of - // “/bookstore.Bookstore/GetShelfRequest“ to call “GetShelfRequest“. + // The client could `post` a json body `{"shelf": 1234}` with the path of + // `/bookstore.Bookstore/GetShelfRequest` to call `GetShelfRequest`. AutoMapping bool `protobuf:"varint,7,opt,name=auto_mapping,json=autoMapping,proto3" json:"auto_mapping,omitempty"` // Whether to ignore query parameters that cannot be mapped to a corresponding // protobuf field. Use this if you cannot control the query parameters and do - // not know them beforehand. Otherwise use “ignored_query_parameters“. + // not know them beforehand. Otherwise use `ignored_query_parameters`. // Defaults to false. IgnoreUnknownQueryParameters bool `protobuf:"varint,8,opt,name=ignore_unknown_query_parameters,json=ignoreUnknownQueryParameters,proto3" json:"ignore_unknown_query_parameters,omitempty"` // Whether to convert gRPC status headers to JSON. - // When trailer indicates a gRPC error and there was no HTTP body, take “google.rpc.Status“ - // from the “grpc-status-details-bin“ header and use it as JSON body. - // If there was no such header, make “google.rpc.Status“ out of the “grpc-status“ and - // “grpc-message“ headers. - // The error details types must be present in the “proto_descriptor“. + // When trailer indicates a gRPC error and there was no HTTP body, take `google.rpc.Status` + // from the `grpc-status-details-bin` header and use it as JSON body. + // If there was no such header, make `google.rpc.Status` out of the `grpc-status` and + // `grpc-message` headers. + // The error details types must be present in the `proto_descriptor`. // // For example, if an upstream server replies with headers: // @@ -120,8 +119,8 @@ type GrpcJsonTranscoder struct { // grpc-status-details-bin: // CAUaMwoqdHlwZS5nb29nbGVhcGlzLmNvbS9nb29nbGUucnBjLlJlcXVlc3RJbmZvEgUKA3ItMQ // - // The “grpc-status-details-bin“ header contains a base64-encoded protobuf message - // “google.rpc.Status“. It will be transcoded into: + // The `grpc-status-details-bin` header contains a base64-encoded protobuf message + // `google.rpc.Status`. It will be transcoded into: // // .. code-block:: none // @@ -130,9 +129,9 @@ type GrpcJsonTranscoder struct { // // {"code":5,"details":[{"@type":"type.googleapis.com/google.rpc.RequestInfo","requestId":"r-1"}]} // - // In order to transcode the message, the ``google.rpc.RequestInfo`` type from - // the ``google/rpc/error_details.proto`` should be included in the configured - // :ref:`proto descriptor set `. + // In order to transcode the message, the `google.rpc.RequestInfo` type from + // the `google/rpc/error_details.proto` should be included in the configured + // proto descriptor set. ConvertGrpcStatus bool `protobuf:"varint,9,opt,name=convert_grpc_status,json=convertGrpcStatus,proto3" json:"convert_grpc_status,omitempty"` } @@ -292,7 +291,7 @@ type GrpcJsonTranscoder_PrintOptions struct { // as strings. Defaults to false. AlwaysPrintEnumsAsInts bool `protobuf:"varint,3,opt,name=always_print_enums_as_ints,json=alwaysPrintEnumsAsInts,proto3" json:"always_print_enums_as_ints,omitempty"` // Whether to preserve proto field names. By default protobuf will - // generate JSON field names using the “json_name“ option, or lower camel case, + // generate JSON field names using the `json_name` option, or lower camel case, // in that order. Setting this flag will preserve the original field names. Defaults to false. PreserveProtoFieldNames bool `protobuf:"varint,4,opt,name=preserve_proto_field_names,json=preserveProtoFieldNames,proto3" json:"preserve_proto_field_names,omitempty"` } diff --git a/pkg/api/gloo.solo.io/v1/options/hcm/hcm.pb.clone.go b/pkg/api/gloo.solo.io/v1/options/hcm/hcm.pb.clone.go index 46ac7ec29..05bcdbf7c 100644 --- a/pkg/api/gloo.solo.io/v1/options/hcm/hcm.pb.clone.go +++ b/pkg/api/gloo.solo.io/v1/options/hcm/hcm.pb.clone.go @@ -17,6 +17,8 @@ import ( github_com_golang_protobuf_ptypes_wrappers "github.com/golang/protobuf/ptypes/wrappers" + github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_options_headers "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/headers" + github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_options_protocol "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/protocol" github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_options_protocol_upgrade "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/protocol_upgrade" @@ -258,6 +260,12 @@ func (m *HttpConnectionManagerSettings) Clone() proto.Message { target.AppendXForwardedPort = proto.Clone(m.GetAppendXForwardedPort()).(*github_com_golang_protobuf_ptypes_wrappers.BoolValue) } + if h, ok := interface{}(m.GetEarlyHeaderManipulation()).(clone.Cloner); ok { + target.EarlyHeaderManipulation = h.Clone().(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_options_headers.EarlyHeaderManipulation) + } else { + target.EarlyHeaderManipulation = proto.Clone(m.GetEarlyHeaderManipulation()).(*github_com_solo_io_solo_apis_pkg_api_gloo_solo_io_v1_options_headers.EarlyHeaderManipulation) + } + switch m.HeaderFormat.(type) { case *HttpConnectionManagerSettings_ProperCaseHeaderKeyFormat: diff --git a/pkg/api/gloo.solo.io/v1/options/hcm/hcm.pb.equal.go b/pkg/api/gloo.solo.io/v1/options/hcm/hcm.pb.equal.go index 98e6caceb..93d5d24a4 100644 --- a/pkg/api/gloo.solo.io/v1/options/hcm/hcm.pb.equal.go +++ b/pkg/api/gloo.solo.io/v1/options/hcm/hcm.pb.equal.go @@ -403,6 +403,16 @@ func (m *HttpConnectionManagerSettings) Equal(that interface{}) bool { } } + if h, ok := interface{}(m.GetEarlyHeaderManipulation()).(equality.Equalizer); ok { + if !h.Equal(target.GetEarlyHeaderManipulation()) { + return false + } + } else { + if !proto.Equal(m.GetEarlyHeaderManipulation(), target.GetEarlyHeaderManipulation()) { + return false + } + } + switch m.HeaderFormat.(type) { case *HttpConnectionManagerSettings_ProperCaseHeaderKeyFormat: diff --git a/pkg/api/gloo.solo.io/v1/options/hcm/hcm.pb.go b/pkg/api/gloo.solo.io/v1/options/hcm/hcm.pb.go index 2b003b14a..afb324057 100644 --- a/pkg/api/gloo.solo.io/v1/options/hcm/hcm.pb.go +++ b/pkg/api/gloo.solo.io/v1/options/hcm/hcm.pb.go @@ -14,6 +14,7 @@ import ( duration "github.com/golang/protobuf/ptypes/duration" wrappers "github.com/golang/protobuf/ptypes/wrappers" _ "github.com/solo-io/protoc-gen-ext/extproto" + headers "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/headers" protocol "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/protocol" protocol_upgrade "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/protocol_upgrade" tracing "github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/tracing" @@ -402,6 +403,8 @@ type HttpConnectionManagerSettings struct { InternalAddressConfig *HttpConnectionManagerSettings_InternalAddressConfig `protobuf:"bytes,38,opt,name=internal_address_config,json=internalAddressConfig,proto3" json:"internal_address_config,omitempty"` // If true, configure Envoy to set the x-fowarded-port header to allow services to find Envoy's listener port. AppendXForwardedPort *wrappers.BoolValue `protobuf:"bytes,40,opt,name=append_x_forwarded_port,json=appendXForwardedPort,proto3" json:"append_x_forwarded_port,omitempty"` + // Configuration for early header manipulation + EarlyHeaderManipulation *headers.EarlyHeaderManipulation `protobuf:"bytes,41,opt,name=early_header_manipulation,json=earlyHeaderManipulation,proto3" json:"early_header_manipulation,omitempty"` } func (x *HttpConnectionManagerSettings) Reset() { @@ -723,6 +726,13 @@ func (x *HttpConnectionManagerSettings) GetAppendXForwardedPort() *wrappers.Bool return nil } +func (x *HttpConnectionManagerSettings) GetEarlyHeaderManipulation() *headers.EarlyHeaderManipulation { + if x != nil { + return x.EarlyHeaderManipulation + } + return nil +} + type isHttpConnectionManagerSettings_HeaderFormat interface { isHttpConnectionManagerSettings_HeaderFormat() } @@ -1037,236 +1047,248 @@ var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_hcm_hcm_proto_raw 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x12, 0x65, 0x78, 0x74, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, - 0x65, 0x78, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xd8, 0x26, 0x0a, 0x1d, 0x48, 0x74, - 0x74, 0x70, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x61, 0x6e, 0x61, - 0x67, 0x65, 0x72, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x42, 0x0a, 0x0f, 0x73, - 0x6b, 0x69, 0x70, 0x5f, 0x78, 0x66, 0x66, 0x5f, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x64, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, - 0x52, 0x0d, 0x73, 0x6b, 0x69, 0x70, 0x58, 0x66, 0x66, 0x41, 0x70, 0x70, 0x65, 0x6e, 0x64, 0x12, - 0x2e, 0x0a, 0x03, 0x76, 0x69, 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, - 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, - 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x03, 0x76, 0x69, 0x61, 0x12, - 0x4d, 0x0a, 0x14, 0x78, 0x66, 0x66, 0x5f, 0x6e, 0x75, 0x6d, 0x5f, 0x74, 0x72, 0x75, 0x73, 0x74, - 0x65, 0x64, 0x5f, 0x68, 0x6f, 0x70, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x4b, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, + 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, + 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2f, 0x67, 0x6c, 0x6f, + 0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x68, 0x65, 0x61, + 0x64, 0x65, 0x72, 0x73, 0x2f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x1a, 0x12, 0x65, 0x78, 0x74, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x65, 0x78, 0x74, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xcb, 0x27, 0x0a, 0x1d, 0x48, 0x74, 0x74, 0x70, 0x43, + 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, + 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x42, 0x0a, 0x0f, 0x73, 0x6b, 0x69, 0x70, + 0x5f, 0x78, 0x66, 0x66, 0x5f, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x62, 0x75, 0x66, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0d, 0x73, + 0x6b, 0x69, 0x70, 0x58, 0x66, 0x66, 0x41, 0x70, 0x70, 0x65, 0x6e, 0x64, 0x12, 0x2e, 0x0a, 0x03, + 0x76, 0x69, 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, + 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x03, 0x76, 0x69, 0x61, 0x12, 0x4d, 0x0a, 0x14, + 0x78, 0x66, 0x66, 0x5f, 0x6e, 0x75, 0x6d, 0x5f, 0x74, 0x72, 0x75, 0x73, 0x74, 0x65, 0x64, 0x5f, + 0x68, 0x6f, 0x70, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, + 0x74, 0x33, 0x32, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x11, 0x78, 0x66, 0x66, 0x4e, 0x75, 0x6d, + 0x54, 0x72, 0x75, 0x73, 0x74, 0x65, 0x64, 0x48, 0x6f, 0x70, 0x73, 0x12, 0x48, 0x0a, 0x12, 0x75, + 0x73, 0x65, 0x5f, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, + 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61, + 0x6c, 0x75, 0x65, 0x52, 0x10, 0x75, 0x73, 0x65, 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x41, 0x64, + 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x4a, 0x0a, 0x13, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, + 0x65, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x11, + 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x49, + 0x64, 0x12, 0x48, 0x0a, 0x12, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x5f, 0x31, 0x30, 0x30, 0x5f, 0x63, + 0x6f, 0x6e, 0x74, 0x69, 0x6e, 0x75, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, - 0x55, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x11, 0x78, 0x66, 0x66, - 0x4e, 0x75, 0x6d, 0x54, 0x72, 0x75, 0x73, 0x74, 0x65, 0x64, 0x48, 0x6f, 0x70, 0x73, 0x12, 0x48, - 0x0a, 0x12, 0x75, 0x73, 0x65, 0x5f, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x5f, 0x61, 0x64, 0x64, - 0x72, 0x65, 0x73, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x42, 0x6f, 0x6f, - 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x10, 0x75, 0x73, 0x65, 0x52, 0x65, 0x6d, 0x6f, 0x74, - 0x65, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x4a, 0x0a, 0x13, 0x67, 0x65, 0x6e, 0x65, - 0x72, 0x61, 0x74, 0x65, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x69, 0x64, 0x18, - 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, - 0x65, 0x52, 0x11, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x49, 0x64, 0x12, 0x48, 0x0a, 0x12, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x5f, 0x31, 0x30, - 0x30, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x69, 0x6e, 0x75, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, - 0x75, 0x66, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x10, 0x70, 0x72, - 0x6f, 0x78, 0x79, 0x31, 0x30, 0x30, 0x43, 0x6f, 0x6e, 0x74, 0x69, 0x6e, 0x75, 0x65, 0x12, 0x49, - 0x0a, 0x13, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x5f, 0x69, 0x64, 0x6c, 0x65, 0x5f, 0x74, 0x69, - 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, - 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, - 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x11, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x49, 0x64, - 0x6c, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x12, 0x3c, 0x0a, 0x0c, 0x69, 0x64, 0x6c, - 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, - 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0b, 0x69, 0x64, 0x6c, 0x65, - 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x12, 0x51, 0x0a, 0x16, 0x6d, 0x61, 0x78, 0x5f, 0x72, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x5f, 0x6b, - 0x62, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x33, 0x32, - 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x13, 0x6d, 0x61, 0x78, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x4b, 0x62, 0x12, 0x42, 0x0a, 0x0f, 0x72, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, 0x0a, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0e, - 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x12, 0x51, - 0x0a, 0x17, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, - 0x73, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, - 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x15, 0x72, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, - 0x74, 0x12, 0x3e, 0x0a, 0x0d, 0x64, 0x72, 0x61, 0x69, 0x6e, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x6f, - 0x75, 0x74, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x10, 0x70, 0x72, 0x6f, 0x78, 0x79, + 0x31, 0x30, 0x30, 0x43, 0x6f, 0x6e, 0x74, 0x69, 0x6e, 0x75, 0x65, 0x12, 0x49, 0x0a, 0x13, 0x73, + 0x74, 0x72, 0x65, 0x61, 0x6d, 0x5f, 0x69, 0x64, 0x6c, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x6f, + 0x75, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x52, 0x0c, 0x64, 0x72, 0x61, 0x69, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, - 0x74, 0x12, 0x4d, 0x0a, 0x15, 0x64, 0x65, 0x6c, 0x61, 0x79, 0x65, 0x64, 0x5f, 0x63, 0x6c, 0x6f, - 0x73, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, + 0x69, 0x6f, 0x6e, 0x52, 0x11, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x49, 0x64, 0x6c, 0x65, 0x54, + 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x12, 0x3c, 0x0a, 0x0c, 0x69, 0x64, 0x6c, 0x65, 0x5f, 0x74, + 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, + 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0b, 0x69, 0x64, 0x6c, 0x65, 0x54, 0x69, 0x6d, + 0x65, 0x6f, 0x75, 0x74, 0x12, 0x51, 0x0a, 0x16, 0x6d, 0x61, 0x78, 0x5f, 0x72, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x5f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x5f, 0x6b, 0x62, 0x18, 0x09, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x56, 0x61, 0x6c, + 0x75, 0x65, 0x52, 0x13, 0x6d, 0x61, 0x78, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x48, 0x65, + 0x61, 0x64, 0x65, 0x72, 0x73, 0x4b, 0x62, 0x12, 0x42, 0x0a, 0x0f, 0x72, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, - 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x13, 0x64, 0x65, 0x6c, - 0x61, 0x79, 0x65, 0x64, 0x43, 0x6c, 0x6f, 0x73, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, - 0x12, 0x3d, 0x0a, 0x0b, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, - 0x0e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, - 0x6c, 0x75, 0x65, 0x52, 0x0a, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x12, - 0x49, 0x0a, 0x13, 0x73, 0x74, 0x72, 0x69, 0x70, 0x5f, 0x61, 0x6e, 0x79, 0x5f, 0x68, 0x6f, 0x73, - 0x74, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x24, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, - 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x42, - 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x10, 0x73, 0x74, 0x72, 0x69, 0x70, 0x41, - 0x6e, 0x79, 0x48, 0x6f, 0x73, 0x74, 0x50, 0x6f, 0x72, 0x74, 0x12, 0x40, 0x0a, 0x0e, 0x61, 0x63, - 0x63, 0x65, 0x70, 0x74, 0x5f, 0x68, 0x74, 0x74, 0x70, 0x5f, 0x31, 0x30, 0x18, 0x0f, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0c, - 0x61, 0x63, 0x63, 0x65, 0x70, 0x74, 0x48, 0x74, 0x74, 0x70, 0x31, 0x30, 0x12, 0x54, 0x0a, 0x18, - 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x68, 0x6f, 0x73, 0x74, 0x5f, 0x66, 0x6f, 0x72, - 0x5f, 0x68, 0x74, 0x74, 0x70, 0x5f, 0x31, 0x30, 0x18, 0x10, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, - 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, - 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x14, 0x64, 0x65, - 0x66, 0x61, 0x75, 0x6c, 0x74, 0x48, 0x6f, 0x73, 0x74, 0x46, 0x6f, 0x72, 0x48, 0x74, 0x74, 0x70, - 0x31, 0x30, 0x12, 0x4c, 0x0a, 0x14, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x5f, 0x63, 0x68, 0x75, 0x6e, - 0x6b, 0x65, 0x64, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x22, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, - 0x75, 0x66, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x12, 0x61, 0x6c, - 0x6c, 0x6f, 0x77, 0x43, 0x68, 0x75, 0x6e, 0x6b, 0x65, 0x64, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, - 0x12, 0x43, 0x0a, 0x0f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x74, 0x72, 0x61, 0x69, 0x6c, - 0x65, 0x72, 0x73, 0x18, 0x23, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0e, 0x72, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x12, 0x51, 0x0a, 0x17, 0x72, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x5f, 0x74, + 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, + 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x15, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x12, 0x3e, + 0x0a, 0x0d, 0x64, 0x72, 0x61, 0x69, 0x6e, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, + 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x52, 0x0c, 0x64, 0x72, 0x61, 0x69, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x12, 0x4d, + 0x0a, 0x15, 0x64, 0x65, 0x6c, 0x61, 0x79, 0x65, 0x64, 0x5f, 0x63, 0x6c, 0x6f, 0x73, 0x65, 0x5f, + 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, + 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x13, 0x64, 0x65, 0x6c, 0x61, 0x79, 0x65, + 0x64, 0x43, 0x6c, 0x6f, 0x73, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x12, 0x3d, 0x0a, + 0x0b, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x0e, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, + 0x52, 0x0a, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x49, 0x0a, 0x13, + 0x73, 0x74, 0x72, 0x69, 0x70, 0x5f, 0x61, 0x6e, 0x79, 0x5f, 0x68, 0x6f, 0x73, 0x74, 0x5f, 0x70, + 0x6f, 0x72, 0x74, 0x18, 0x24, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, + 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x10, 0x73, 0x74, 0x72, 0x69, 0x70, 0x41, 0x6e, 0x79, 0x48, + 0x6f, 0x73, 0x74, 0x50, 0x6f, 0x72, 0x74, 0x12, 0x40, 0x0a, 0x0e, 0x61, 0x63, 0x63, 0x65, 0x70, + 0x74, 0x5f, 0x68, 0x74, 0x74, 0x70, 0x5f, 0x31, 0x30, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, + 0x66, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0c, 0x61, 0x63, 0x63, + 0x65, 0x70, 0x74, 0x48, 0x74, 0x74, 0x70, 0x31, 0x30, 0x12, 0x54, 0x0a, 0x18, 0x64, 0x65, 0x66, + 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x68, 0x6f, 0x73, 0x74, 0x5f, 0x66, 0x6f, 0x72, 0x5f, 0x68, 0x74, + 0x74, 0x70, 0x5f, 0x31, 0x30, 0x18, 0x10, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, + 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x14, 0x64, 0x65, 0x66, 0x61, 0x75, + 0x6c, 0x74, 0x48, 0x6f, 0x73, 0x74, 0x46, 0x6f, 0x72, 0x48, 0x74, 0x74, 0x70, 0x31, 0x30, 0x12, + 0x4c, 0x0a, 0x14, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x5f, 0x63, 0x68, 0x75, 0x6e, 0x6b, 0x65, 0x64, + 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x22, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, + 0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x12, 0x61, 0x6c, 0x6c, 0x6f, 0x77, + 0x43, 0x68, 0x75, 0x6e, 0x6b, 0x65, 0x64, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x12, 0x43, 0x0a, + 0x0f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x74, 0x72, 0x61, 0x69, 0x6c, 0x65, 0x72, 0x73, + 0x18, 0x23, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, + 0x75, 0x65, 0x52, 0x0e, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x54, 0x72, 0x61, 0x69, 0x6c, 0x65, + 0x72, 0x73, 0x12, 0x5e, 0x0a, 0x1d, 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x5f, 0x63, 0x61, 0x73, + 0x65, 0x5f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x66, 0x6f, 0x72, + 0x6d, 0x61, 0x74, 0x18, 0x16, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, - 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0e, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x54, 0x72, 0x61, - 0x69, 0x6c, 0x65, 0x72, 0x73, 0x12, 0x5e, 0x0a, 0x1d, 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x5f, - 0x63, 0x61, 0x73, 0x65, 0x5f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x5f, 0x6b, 0x65, 0x79, 0x5f, - 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x18, 0x16, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, - 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x42, - 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x48, 0x00, 0x52, 0x19, 0x70, 0x72, 0x6f, 0x70, - 0x65, 0x72, 0x43, 0x61, 0x73, 0x65, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x4b, 0x65, 0x79, 0x46, - 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x12, 0x62, 0x0a, 0x1f, 0x70, 0x72, 0x65, 0x73, 0x65, 0x72, 0x76, - 0x65, 0x5f, 0x63, 0x61, 0x73, 0x65, 0x5f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x5f, 0x6b, 0x65, - 0x79, 0x5f, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x18, 0x1f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, - 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, - 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x48, 0x00, 0x52, 0x1b, 0x70, 0x72, - 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x43, 0x61, 0x73, 0x65, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, - 0x4b, 0x65, 0x79, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x12, 0x4f, 0x0a, 0x07, 0x74, 0x72, 0x61, - 0x63, 0x69, 0x6e, 0x67, 0x18, 0x11, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x74, 0x72, 0x61, - 0x63, 0x69, 0x6e, 0x67, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, - 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x65, 0x6e, - 0x65, 0x72, 0x54, 0x72, 0x61, 0x63, 0x69, 0x6e, 0x67, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, - 0x73, 0x52, 0x07, 0x74, 0x72, 0x61, 0x63, 0x69, 0x6e, 0x67, 0x12, 0x8f, 0x01, 0x0a, 0x1b, 0x66, - 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x5f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x63, 0x65, - 0x72, 0x74, 0x5f, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0x12, 0x20, 0x01, 0x28, 0x0e, - 0x32, 0x50, 0x2e, 0x68, 0x63, 0x6d, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, + 0x56, 0x61, 0x6c, 0x75, 0x65, 0x48, 0x00, 0x52, 0x19, 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x43, + 0x61, 0x73, 0x65, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x4b, 0x65, 0x79, 0x46, 0x6f, 0x72, 0x6d, + 0x61, 0x74, 0x12, 0x62, 0x0a, 0x1f, 0x70, 0x72, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x5f, 0x63, + 0x61, 0x73, 0x65, 0x5f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x66, + 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x18, 0x1f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x42, 0x6f, + 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x48, 0x00, 0x52, 0x1b, 0x70, 0x72, 0x65, 0x73, 0x65, + 0x72, 0x76, 0x65, 0x43, 0x61, 0x73, 0x65, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x4b, 0x65, 0x79, + 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x12, 0x4f, 0x0a, 0x07, 0x74, 0x72, 0x61, 0x63, 0x69, 0x6e, + 0x67, 0x18, 0x11, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x74, 0x72, 0x61, 0x63, 0x69, 0x6e, + 0x67, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, + 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x65, 0x72, 0x54, + 0x72, 0x61, 0x63, 0x69, 0x6e, 0x67, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x07, + 0x74, 0x72, 0x61, 0x63, 0x69, 0x6e, 0x67, 0x12, 0x8f, 0x01, 0x0a, 0x1b, 0x66, 0x6f, 0x72, 0x77, + 0x61, 0x72, 0x64, 0x5f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x63, 0x65, 0x72, 0x74, 0x5f, + 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0x12, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x50, 0x2e, + 0x68, 0x63, 0x6d, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, + 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x48, 0x74, 0x74, 0x70, 0x43, 0x6f, 0x6e, + 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x53, 0x65, + 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x46, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x43, 0x6c, + 0x69, 0x65, 0x6e, 0x74, 0x43, 0x65, 0x72, 0x74, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x52, + 0x18, 0x66, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x43, 0x65, + 0x72, 0x74, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x12, 0x99, 0x01, 0x0a, 0x1f, 0x73, 0x65, + 0x74, 0x5f, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, + 0x5f, 0x63, 0x65, 0x72, 0x74, 0x5f, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0x13, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x53, 0x2e, 0x68, 0x63, 0x6d, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x48, + 0x74, 0x74, 0x70, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x61, 0x6e, + 0x61, 0x67, 0x65, 0x72, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x53, 0x65, 0x74, + 0x43, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x43, 0x65, 0x72, + 0x74, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x52, 0x1b, 0x73, 0x65, 0x74, 0x43, 0x75, 0x72, + 0x72, 0x65, 0x6e, 0x74, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x43, 0x65, 0x72, 0x74, 0x44, 0x65, + 0x74, 0x61, 0x69, 0x6c, 0x73, 0x12, 0x5b, 0x0a, 0x1c, 0x70, 0x72, 0x65, 0x73, 0x65, 0x72, 0x76, + 0x65, 0x5f, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x14, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x42, 0x6f, + 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x19, 0x70, 0x72, 0x65, 0x73, 0x65, 0x72, 0x76, + 0x65, 0x45, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x49, 0x64, 0x12, 0x58, 0x0a, 0x08, 0x75, 0x70, 0x67, 0x72, 0x61, 0x64, 0x65, 0x73, 0x18, 0x15, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3c, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x5f, + 0x75, 0x70, 0x67, 0x72, 0x61, 0x64, 0x65, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, + 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x50, 0x72, 0x6f, + 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x55, 0x70, 0x67, 0x72, 0x61, 0x64, 0x65, 0x43, 0x6f, 0x6e, 0x66, + 0x69, 0x67, 0x52, 0x08, 0x75, 0x70, 0x67, 0x72, 0x61, 0x64, 0x65, 0x73, 0x12, 0x51, 0x0a, 0x17, + 0x6d, 0x61, 0x78, 0x5f, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x64, + 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x17, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, + 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x15, 0x6d, 0x61, 0x78, 0x43, 0x6f, 0x6e, + 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, + 0x49, 0x0a, 0x13, 0x6d, 0x61, 0x78, 0x5f, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x5f, 0x64, 0x75, + 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x18, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, + 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x11, 0x6d, 0x61, 0x78, 0x53, 0x74, 0x72, 0x65, + 0x61, 0x6d, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x48, 0x0a, 0x11, 0x6d, 0x61, + 0x78, 0x5f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, + 0x1b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x56, 0x61, + 0x6c, 0x75, 0x65, 0x52, 0x0f, 0x6d, 0x61, 0x78, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x43, + 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x9a, 0x01, 0x0a, 0x1f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, + 0x5f, 0x77, 0x69, 0x74, 0x68, 0x5f, 0x75, 0x6e, 0x64, 0x65, 0x72, 0x73, 0x63, 0x6f, 0x72, 0x65, + 0x73, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x20, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x53, + 0x2e, 0x68, 0x63, 0x6d, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, + 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x48, 0x74, 0x74, 0x70, 0x43, 0x6f, + 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x53, + 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x57, + 0x69, 0x74, 0x68, 0x55, 0x6e, 0x64, 0x65, 0x72, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x41, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x52, 0x1c, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x57, 0x69, 0x74, 0x68, + 0x55, 0x6e, 0x64, 0x65, 0x72, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x73, 0x41, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x12, 0x5b, 0x0a, 0x1b, 0x6d, 0x61, 0x78, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x73, 0x5f, 0x70, 0x65, 0x72, 0x5f, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x18, 0x21, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x56, + 0x61, 0x6c, 0x75, 0x65, 0x52, 0x18, 0x6d, 0x61, 0x78, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x73, 0x50, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x94, + 0x01, 0x0a, 0x1c, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, + 0x5f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, + 0x19, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x52, 0x2e, 0x68, 0x63, 0x6d, 0x2e, 0x6f, 0x70, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, + 0x2e, 0x48, 0x74, 0x74, 0x70, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4d, + 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x53, + 0x65, 0x72, 0x76, 0x65, 0x72, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x54, 0x72, 0x61, 0x6e, 0x73, + 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x1a, 0x73, 0x65, 0x72, 0x76, 0x65, + 0x72, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x9c, 0x01, 0x0a, 0x20, 0x70, 0x61, 0x74, 0x68, 0x5f, 0x77, + 0x69, 0x74, 0x68, 0x5f, 0x65, 0x73, 0x63, 0x61, 0x70, 0x65, 0x64, 0x5f, 0x73, 0x6c, 0x61, 0x73, + 0x68, 0x65, 0x73, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x1a, 0x20, 0x01, 0x28, 0x0e, + 0x32, 0x54, 0x2e, 0x68, 0x63, 0x6d, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x48, 0x74, 0x74, 0x70, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x61, 0x6e, 0x61, 0x67, 0x65, - 0x72, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x46, 0x6f, 0x72, 0x77, 0x61, 0x72, - 0x64, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x43, 0x65, 0x72, 0x74, 0x44, 0x65, 0x74, 0x61, 0x69, - 0x6c, 0x73, 0x52, 0x18, 0x66, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x43, 0x6c, 0x69, 0x65, 0x6e, - 0x74, 0x43, 0x65, 0x72, 0x74, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x12, 0x99, 0x01, 0x0a, - 0x1f, 0x73, 0x65, 0x74, 0x5f, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x63, 0x6c, 0x69, - 0x65, 0x6e, 0x74, 0x5f, 0x63, 0x65, 0x72, 0x74, 0x5f, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, - 0x18, 0x13, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x53, 0x2e, 0x68, 0x63, 0x6d, 0x2e, 0x6f, 0x70, 0x74, - 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, - 0x6f, 0x2e, 0x48, 0x74, 0x74, 0x70, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x4d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, - 0x53, 0x65, 0x74, 0x43, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, - 0x43, 0x65, 0x72, 0x74, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x52, 0x1b, 0x73, 0x65, 0x74, - 0x43, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x43, 0x65, 0x72, - 0x74, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x12, 0x5b, 0x0a, 0x1c, 0x70, 0x72, 0x65, 0x73, - 0x65, 0x72, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x5f, 0x72, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x14, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, - 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, - 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x19, 0x70, 0x72, 0x65, 0x73, - 0x65, 0x72, 0x76, 0x65, 0x45, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x49, 0x64, 0x12, 0x58, 0x0a, 0x08, 0x75, 0x70, 0x67, 0x72, 0x61, 0x64, 0x65, - 0x73, 0x18, 0x15, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3c, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, - 0x6f, 0x6c, 0x5f, 0x75, 0x70, 0x67, 0x72, 0x61, 0x64, 0x65, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, - 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, - 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x55, 0x70, 0x67, 0x72, 0x61, 0x64, 0x65, 0x43, - 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x08, 0x75, 0x70, 0x67, 0x72, 0x61, 0x64, 0x65, 0x73, 0x12, - 0x51, 0x0a, 0x17, 0x6d, 0x61, 0x78, 0x5f, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x5f, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x17, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, - 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x15, 0x6d, 0x61, 0x78, - 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x12, 0x49, 0x0a, 0x13, 0x6d, 0x61, 0x78, 0x5f, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, - 0x5f, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x18, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, - 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x11, 0x6d, 0x61, 0x78, 0x53, - 0x74, 0x72, 0x65, 0x61, 0x6d, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x48, 0x0a, - 0x11, 0x6d, 0x61, 0x78, 0x5f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x5f, 0x63, 0x6f, 0x75, - 0x6e, 0x74, 0x18, 0x1b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, - 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x33, - 0x32, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0f, 0x6d, 0x61, 0x78, 0x48, 0x65, 0x61, 0x64, 0x65, - 0x72, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x9a, 0x01, 0x0a, 0x1f, 0x68, 0x65, 0x61, 0x64, - 0x65, 0x72, 0x73, 0x5f, 0x77, 0x69, 0x74, 0x68, 0x5f, 0x75, 0x6e, 0x64, 0x65, 0x72, 0x73, 0x63, - 0x6f, 0x72, 0x65, 0x73, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x20, 0x20, 0x01, 0x28, - 0x0e, 0x32, 0x53, 0x2e, 0x68, 0x63, 0x6d, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, - 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x48, 0x74, 0x74, - 0x70, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x61, 0x6e, 0x61, 0x67, - 0x65, 0x72, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x48, 0x65, 0x61, 0x64, 0x65, - 0x72, 0x73, 0x57, 0x69, 0x74, 0x68, 0x55, 0x6e, 0x64, 0x65, 0x72, 0x73, 0x63, 0x6f, 0x72, 0x65, - 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x1c, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x57, - 0x69, 0x74, 0x68, 0x55, 0x6e, 0x64, 0x65, 0x72, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x73, 0x41, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x5b, 0x0a, 0x1b, 0x6d, 0x61, 0x78, 0x5f, 0x72, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x73, 0x5f, 0x70, 0x65, 0x72, 0x5f, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x18, 0x21, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, - 0x33, 0x32, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x18, 0x6d, 0x61, 0x78, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x73, 0x50, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x12, 0x94, 0x01, 0x0a, 0x1c, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x68, 0x65, 0x61, - 0x64, 0x65, 0x72, 0x5f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x18, 0x19, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x52, 0x2e, 0x68, 0x63, 0x6d, 0x2e, 0x6f, + 0x72, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x50, 0x61, 0x74, 0x68, 0x57, 0x69, + 0x74, 0x68, 0x45, 0x73, 0x63, 0x61, 0x70, 0x65, 0x64, 0x53, 0x6c, 0x61, 0x73, 0x68, 0x65, 0x73, + 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x1c, 0x70, 0x61, 0x74, 0x68, 0x57, 0x69, 0x74, 0x68, + 0x45, 0x73, 0x63, 0x61, 0x70, 0x65, 0x64, 0x53, 0x6c, 0x61, 0x73, 0x68, 0x65, 0x73, 0x41, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x60, 0x0a, 0x0a, 0x63, 0x6f, 0x64, 0x65, 0x63, 0x5f, 0x74, 0x79, + 0x70, 0x65, 0x18, 0x1c, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x41, 0x2e, 0x68, 0x63, 0x6d, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x48, 0x74, 0x74, 0x70, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, - 0x73, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x54, 0x72, - 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x1a, 0x73, 0x65, - 0x72, 0x76, 0x65, 0x72, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, - 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x9c, 0x01, 0x0a, 0x20, 0x70, 0x61, 0x74, - 0x68, 0x5f, 0x77, 0x69, 0x74, 0x68, 0x5f, 0x65, 0x73, 0x63, 0x61, 0x70, 0x65, 0x64, 0x5f, 0x73, - 0x6c, 0x61, 0x73, 0x68, 0x65, 0x73, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x1a, 0x20, - 0x01, 0x28, 0x0e, 0x32, 0x54, 0x2e, 0x68, 0x63, 0x6d, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x48, - 0x74, 0x74, 0x70, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x61, 0x6e, - 0x61, 0x67, 0x65, 0x72, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x50, 0x61, 0x74, - 0x68, 0x57, 0x69, 0x74, 0x68, 0x45, 0x73, 0x63, 0x61, 0x70, 0x65, 0x64, 0x53, 0x6c, 0x61, 0x73, - 0x68, 0x65, 0x73, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x1c, 0x70, 0x61, 0x74, 0x68, 0x57, - 0x69, 0x74, 0x68, 0x45, 0x73, 0x63, 0x61, 0x70, 0x65, 0x64, 0x53, 0x6c, 0x61, 0x73, 0x68, 0x65, - 0x73, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x60, 0x0a, 0x0a, 0x63, 0x6f, 0x64, 0x65, 0x63, - 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x1c, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x41, 0x2e, 0x68, 0x63, + 0x73, 0x2e, 0x43, 0x6f, 0x64, 0x65, 0x63, 0x54, 0x79, 0x70, 0x65, 0x52, 0x09, 0x63, 0x6f, 0x64, + 0x65, 0x63, 0x54, 0x79, 0x70, 0x65, 0x12, 0x3f, 0x0a, 0x0d, 0x6d, 0x65, 0x72, 0x67, 0x65, 0x5f, + 0x73, 0x6c, 0x61, 0x73, 0x68, 0x65, 0x73, 0x18, 0x1d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, + 0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0c, 0x6d, 0x65, 0x72, 0x67, 0x65, + 0x53, 0x6c, 0x61, 0x73, 0x68, 0x65, 0x73, 0x12, 0x41, 0x0a, 0x0e, 0x6e, 0x6f, 0x72, 0x6d, 0x61, + 0x6c, 0x69, 0x7a, 0x65, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x18, 0x1e, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, + 0x66, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0d, 0x6e, 0x6f, 0x72, + 0x6d, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x50, 0x61, 0x74, 0x68, 0x12, 0x88, 0x01, 0x0a, 0x16, 0x75, + 0x75, 0x69, 0x64, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x69, 0x64, 0x5f, 0x63, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x25, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x53, 0x2e, 0x68, 0x63, 0x6d, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x48, 0x74, 0x74, 0x70, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x53, 0x65, 0x74, 0x74, - 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x43, 0x6f, 0x64, 0x65, 0x63, 0x54, 0x79, 0x70, 0x65, 0x52, 0x09, - 0x63, 0x6f, 0x64, 0x65, 0x63, 0x54, 0x79, 0x70, 0x65, 0x12, 0x3f, 0x0a, 0x0d, 0x6d, 0x65, 0x72, - 0x67, 0x65, 0x5f, 0x73, 0x6c, 0x61, 0x73, 0x68, 0x65, 0x73, 0x18, 0x1d, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, - 0x75, 0x66, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0c, 0x6d, 0x65, - 0x72, 0x67, 0x65, 0x53, 0x6c, 0x61, 0x73, 0x68, 0x65, 0x73, 0x12, 0x41, 0x0a, 0x0e, 0x6e, 0x6f, - 0x72, 0x6d, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x18, 0x1e, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0d, - 0x6e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x50, 0x61, 0x74, 0x68, 0x12, 0x88, 0x01, - 0x0a, 0x16, 0x75, 0x75, 0x69, 0x64, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x69, - 0x64, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x25, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x53, - 0x2e, 0x68, 0x63, 0x6d, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, - 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x48, 0x74, 0x74, 0x70, 0x43, 0x6f, - 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x53, - 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x55, 0x75, 0x69, 0x64, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x49, 0x64, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x53, 0x65, 0x74, 0x74, 0x69, - 0x6e, 0x67, 0x73, 0x52, 0x13, 0x75, 0x75, 0x69, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x49, 0x64, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x69, 0x0a, 0x16, 0x68, 0x74, 0x74, 0x70, - 0x32, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, - 0x6e, 0x73, 0x18, 0x27, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x63, 0x6f, 0x6c, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, - 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x48, 0x74, 0x74, 0x70, 0x32, 0x50, 0x72, - 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x14, 0x68, - 0x74, 0x74, 0x70, 0x32, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x4f, 0x70, 0x74, 0x69, - 0x6f, 0x6e, 0x73, 0x12, 0x85, 0x01, 0x0a, 0x17, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, - 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, - 0x26, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x4d, 0x2e, 0x68, 0x63, 0x6d, 0x2e, 0x6f, 0x70, 0x74, 0x69, - 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, - 0x2e, 0x48, 0x74, 0x74, 0x70, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4d, - 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x49, - 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x43, 0x6f, - 0x6e, 0x66, 0x69, 0x67, 0x52, 0x15, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x41, 0x64, - 0x64, 0x72, 0x65, 0x73, 0x73, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x51, 0x0a, 0x17, 0x61, - 0x70, 0x70, 0x65, 0x6e, 0x64, 0x5f, 0x78, 0x5f, 0x66, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x65, - 0x64, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x28, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, - 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x42, - 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x14, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x64, - 0x58, 0x46, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x65, 0x64, 0x50, 0x6f, 0x72, 0x74, 0x1a, 0x91, + 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x55, 0x75, 0x69, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x49, 0x64, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, + 0x52, 0x13, 0x75, 0x75, 0x69, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x49, 0x64, 0x43, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x69, 0x0a, 0x16, 0x68, 0x74, 0x74, 0x70, 0x32, 0x5f, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, + 0x27, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, + 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, + 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x48, 0x74, 0x74, 0x70, 0x32, 0x50, 0x72, 0x6f, 0x74, 0x6f, + 0x63, 0x6f, 0x6c, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x14, 0x68, 0x74, 0x74, 0x70, + 0x32, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x12, 0x85, 0x01, 0x0a, 0x17, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x5f, 0x61, 0x64, + 0x64, 0x72, 0x65, 0x73, 0x73, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x26, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x4d, 0x2e, 0x68, 0x63, 0x6d, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x48, 0x74, + 0x74, 0x70, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x61, 0x6e, 0x61, + 0x67, 0x65, 0x72, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x49, 0x6e, 0x74, 0x65, + 0x72, 0x6e, 0x61, 0x6c, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x43, 0x6f, 0x6e, 0x66, 0x69, + 0x67, 0x52, 0x15, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x41, 0x64, 0x64, 0x72, 0x65, + 0x73, 0x73, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x51, 0x0a, 0x17, 0x61, 0x70, 0x70, 0x65, + 0x6e, 0x64, 0x5f, 0x78, 0x5f, 0x66, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x65, 0x64, 0x5f, 0x70, + 0x6f, 0x72, 0x74, 0x18, 0x28, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, + 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x14, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x64, 0x58, 0x46, 0x6f, + 0x72, 0x77, 0x61, 0x72, 0x64, 0x65, 0x64, 0x50, 0x6f, 0x72, 0x74, 0x12, 0x71, 0x0a, 0x19, 0x65, + 0x61, 0x72, 0x6c, 0x79, 0x5f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x5f, 0x6d, 0x61, 0x6e, 0x69, + 0x70, 0x75, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x29, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x35, + 0x2e, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x45, 0x61, + 0x72, 0x6c, 0x79, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x4d, 0x61, 0x6e, 0x69, 0x70, 0x75, 0x6c, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x17, 0x65, 0x61, 0x72, 0x6c, 0x79, 0x48, 0x65, 0x61, 0x64, + 0x65, 0x72, 0x4d, 0x61, 0x6e, 0x69, 0x70, 0x75, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x1a, 0x91, 0x02, 0x0a, 0x1b, 0x53, 0x65, 0x74, 0x43, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x43, 0x65, 0x72, 0x74, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x12, 0x34, 0x0a, 0x07, 0x73, 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, @@ -1388,6 +1410,7 @@ var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_hcm_hcm_proto_goT (*tracing.ListenerTracingSettings)(nil), // 14: tracing.options.gloo.solo.io.ListenerTracingSettings (*protocol_upgrade.ProtocolUpgradeConfig)(nil), // 15: protocol_upgrade.options.gloo.solo.io.ProtocolUpgradeConfig (*protocol.Http2ProtocolOptions)(nil), // 16: protocol.options.gloo.solo.io.Http2ProtocolOptions + (*headers.EarlyHeaderManipulation)(nil), // 17: headers.options.gloo.solo.io.EarlyHeaderManipulation } var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_hcm_hcm_proto_depIdxs = []int32{ 10, // 0: hcm.options.gloo.solo.io.HttpConnectionManagerSettings.skip_xff_append:type_name -> google.protobuf.BoolValue @@ -1430,21 +1453,22 @@ var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_hcm_hcm_proto_dep 16, // 37: hcm.options.gloo.solo.io.HttpConnectionManagerSettings.http2_protocol_options:type_name -> protocol.options.gloo.solo.io.Http2ProtocolOptions 9, // 38: hcm.options.gloo.solo.io.HttpConnectionManagerSettings.internal_address_config:type_name -> hcm.options.gloo.solo.io.HttpConnectionManagerSettings.InternalAddressConfig 10, // 39: hcm.options.gloo.solo.io.HttpConnectionManagerSettings.append_x_forwarded_port:type_name -> google.protobuf.BoolValue - 10, // 40: hcm.options.gloo.solo.io.HttpConnectionManagerSettings.SetCurrentClientCertDetails.subject:type_name -> google.protobuf.BoolValue - 10, // 41: hcm.options.gloo.solo.io.HttpConnectionManagerSettings.SetCurrentClientCertDetails.cert:type_name -> google.protobuf.BoolValue - 10, // 42: hcm.options.gloo.solo.io.HttpConnectionManagerSettings.SetCurrentClientCertDetails.chain:type_name -> google.protobuf.BoolValue - 10, // 43: hcm.options.gloo.solo.io.HttpConnectionManagerSettings.SetCurrentClientCertDetails.dns:type_name -> google.protobuf.BoolValue - 10, // 44: hcm.options.gloo.solo.io.HttpConnectionManagerSettings.SetCurrentClientCertDetails.uri:type_name -> google.protobuf.BoolValue - 10, // 45: hcm.options.gloo.solo.io.HttpConnectionManagerSettings.UuidRequestIdConfigSettings.pack_trace_reason:type_name -> google.protobuf.BoolValue - 10, // 46: hcm.options.gloo.solo.io.HttpConnectionManagerSettings.UuidRequestIdConfigSettings.use_request_id_for_trace_sampling:type_name -> google.protobuf.BoolValue - 12, // 47: hcm.options.gloo.solo.io.HttpConnectionManagerSettings.CidrRange.prefix_len:type_name -> google.protobuf.UInt32Value - 10, // 48: hcm.options.gloo.solo.io.HttpConnectionManagerSettings.InternalAddressConfig.unix_sockets:type_name -> google.protobuf.BoolValue - 8, // 49: hcm.options.gloo.solo.io.HttpConnectionManagerSettings.InternalAddressConfig.cidr_ranges:type_name -> hcm.options.gloo.solo.io.HttpConnectionManagerSettings.CidrRange - 50, // [50:50] is the sub-list for method output_type - 50, // [50:50] is the sub-list for method input_type - 50, // [50:50] is the sub-list for extension type_name - 50, // [50:50] is the sub-list for extension extendee - 0, // [0:50] is the sub-list for field type_name + 17, // 40: hcm.options.gloo.solo.io.HttpConnectionManagerSettings.early_header_manipulation:type_name -> headers.options.gloo.solo.io.EarlyHeaderManipulation + 10, // 41: hcm.options.gloo.solo.io.HttpConnectionManagerSettings.SetCurrentClientCertDetails.subject:type_name -> google.protobuf.BoolValue + 10, // 42: hcm.options.gloo.solo.io.HttpConnectionManagerSettings.SetCurrentClientCertDetails.cert:type_name -> google.protobuf.BoolValue + 10, // 43: hcm.options.gloo.solo.io.HttpConnectionManagerSettings.SetCurrentClientCertDetails.chain:type_name -> google.protobuf.BoolValue + 10, // 44: hcm.options.gloo.solo.io.HttpConnectionManagerSettings.SetCurrentClientCertDetails.dns:type_name -> google.protobuf.BoolValue + 10, // 45: hcm.options.gloo.solo.io.HttpConnectionManagerSettings.SetCurrentClientCertDetails.uri:type_name -> google.protobuf.BoolValue + 10, // 46: hcm.options.gloo.solo.io.HttpConnectionManagerSettings.UuidRequestIdConfigSettings.pack_trace_reason:type_name -> google.protobuf.BoolValue + 10, // 47: hcm.options.gloo.solo.io.HttpConnectionManagerSettings.UuidRequestIdConfigSettings.use_request_id_for_trace_sampling:type_name -> google.protobuf.BoolValue + 12, // 48: hcm.options.gloo.solo.io.HttpConnectionManagerSettings.CidrRange.prefix_len:type_name -> google.protobuf.UInt32Value + 10, // 49: hcm.options.gloo.solo.io.HttpConnectionManagerSettings.InternalAddressConfig.unix_sockets:type_name -> google.protobuf.BoolValue + 8, // 50: hcm.options.gloo.solo.io.HttpConnectionManagerSettings.InternalAddressConfig.cidr_ranges:type_name -> hcm.options.gloo.solo.io.HttpConnectionManagerSettings.CidrRange + 51, // [51:51] is the sub-list for method output_type + 51, // [51:51] is the sub-list for method input_type + 51, // [51:51] is the sub-list for extension type_name + 51, // [51:51] is the sub-list for extension extendee + 0, // [0:51] is the sub-list for field type_name } func init() { file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_hcm_hcm_proto_init() } diff --git a/pkg/api/gloo.solo.io/v1/options/hcm/hcm.pb.hash.go b/pkg/api/gloo.solo.io/v1/options/hcm/hcm.pb.hash.go index d41a5bab0..5c92bc89d 100644 --- a/pkg/api/gloo.solo.io/v1/options/hcm/hcm.pb.hash.go +++ b/pkg/api/gloo.solo.io/v1/options/hcm/hcm.pb.hash.go @@ -727,6 +727,26 @@ func (m *HttpConnectionManagerSettings) Hash(hasher hash.Hash64) (uint64, error) } } + if h, ok := interface{}(m.GetEarlyHeaderManipulation()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("EarlyHeaderManipulation")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetEarlyHeaderManipulation(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("EarlyHeaderManipulation")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + switch m.HeaderFormat.(type) { case *HttpConnectionManagerSettings_ProperCaseHeaderKeyFormat: diff --git a/pkg/api/gloo.solo.io/v1/options/headers/headers.pb.clone.go b/pkg/api/gloo.solo.io/v1/options/headers/headers.pb.clone.go index 29e916237..1fcc41b87 100644 --- a/pkg/api/gloo.solo.io/v1/options/headers/headers.pb.clone.go +++ b/pkg/api/gloo.solo.io/v1/options/headers/headers.pb.clone.go @@ -84,6 +84,39 @@ func (m *HeaderManipulation) Clone() proto.Message { return target } +// Clone function +func (m *EarlyHeaderManipulation) Clone() proto.Message { + var target *EarlyHeaderManipulation + if m == nil { + return target + } + target = &EarlyHeaderManipulation{} + + if m.GetHeadersToAdd() != nil { + target.HeadersToAdd = make([]*github_com_solo_io_solo_kit_pkg_api_external_envoy_api_v2_core.HeaderValueOption, len(m.GetHeadersToAdd())) + for idx, v := range m.GetHeadersToAdd() { + + if h, ok := interface{}(v).(clone.Cloner); ok { + target.HeadersToAdd[idx] = h.Clone().(*github_com_solo_io_solo_kit_pkg_api_external_envoy_api_v2_core.HeaderValueOption) + } else { + target.HeadersToAdd[idx] = proto.Clone(v).(*github_com_solo_io_solo_kit_pkg_api_external_envoy_api_v2_core.HeaderValueOption) + } + + } + } + + if m.GetHeadersToRemove() != nil { + target.HeadersToRemove = make([]string, len(m.GetHeadersToRemove())) + for idx, v := range m.GetHeadersToRemove() { + + target.HeadersToRemove[idx] = v + + } + } + + return target +} + // Clone function func (m *HeaderValueOption) Clone() proto.Message { var target *HeaderValueOption diff --git a/pkg/api/gloo.solo.io/v1/options/headers/headers.pb.equal.go b/pkg/api/gloo.solo.io/v1/options/headers/headers.pb.equal.go index 177e3c332..ce0135c1d 100644 --- a/pkg/api/gloo.solo.io/v1/options/headers/headers.pb.equal.go +++ b/pkg/api/gloo.solo.io/v1/options/headers/headers.pb.equal.go @@ -105,6 +105,58 @@ func (m *HeaderManipulation) Equal(that interface{}) bool { return true } +// Equal function +func (m *EarlyHeaderManipulation) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*EarlyHeaderManipulation) + if !ok { + that2, ok := that.(EarlyHeaderManipulation) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + if len(m.GetHeadersToAdd()) != len(target.GetHeadersToAdd()) { + return false + } + for idx, v := range m.GetHeadersToAdd() { + + if h, ok := interface{}(v).(equality.Equalizer); ok { + if !h.Equal(target.GetHeadersToAdd()[idx]) { + return false + } + } else { + if !proto.Equal(v, target.GetHeadersToAdd()[idx]) { + return false + } + } + + } + + if len(m.GetHeadersToRemove()) != len(target.GetHeadersToRemove()) { + return false + } + for idx, v := range m.GetHeadersToRemove() { + + if strings.Compare(v, target.GetHeadersToRemove()[idx]) != 0 { + return false + } + + } + + return true +} + // Equal function func (m *HeaderValueOption) Equal(that interface{}) bool { if that == nil { diff --git a/pkg/api/gloo.solo.io/v1/options/headers/headers.pb.go b/pkg/api/gloo.solo.io/v1/options/headers/headers.pb.go index 6f056991f..1bffb924f 100644 --- a/pkg/api/gloo.solo.io/v1/options/headers/headers.pb.go +++ b/pkg/api/gloo.solo.io/v1/options/headers/headers.pb.go @@ -110,6 +110,72 @@ func (x *HeaderManipulation) GetResponseHeadersToRemove() []string { return nil } +// EarlyHeaderManipulation can be specified on Gateways to manipulate headers before significant processing +// has happened and routing decisions are made. +// Early header manipulation allows adding/removing headers that affect request processing +// and can be used to implement override headers. +// Note: The adding of headers happens before the removal of headers. +type EarlyHeaderManipulation struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Specifies a list of HTTP headers that should be added to each request + // handled by this gateway. For more information, including + // details on header value syntax, see the + // [Envoy documentation](https://www.envoyproxy.io/docs/envoy/latest/configuration/http/http_conn_man/headers.html#) . + HeadersToAdd []*core.HeaderValueOption `protobuf:"bytes,1,rep,name=headers_to_add,json=headersToAdd,proto3" json:"headers_to_add,omitempty"` + // Specifies a list of HTTP headers that should be removed from each request + // handled by this gateway. + HeadersToRemove []string `protobuf:"bytes,2,rep,name=headers_to_remove,json=headersToRemove,proto3" json:"headers_to_remove,omitempty"` +} + +func (x *EarlyHeaderManipulation) Reset() { + *x = EarlyHeaderManipulation{} + if protoimpl.UnsafeEnabled { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_headers_headers_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *EarlyHeaderManipulation) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*EarlyHeaderManipulation) ProtoMessage() {} + +func (x *EarlyHeaderManipulation) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_headers_headers_proto_msgTypes[1] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use EarlyHeaderManipulation.ProtoReflect.Descriptor instead. +func (*EarlyHeaderManipulation) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_headers_headers_proto_rawDescGZIP(), []int{1} +} + +func (x *EarlyHeaderManipulation) GetHeadersToAdd() []*core.HeaderValueOption { + if x != nil { + return x.HeadersToAdd + } + return nil +} + +func (x *EarlyHeaderManipulation) GetHeadersToRemove() []string { + if x != nil { + return x.HeadersToRemove + } + return nil +} + // Header name/value pair plus option to control append behavior. type HeaderValueOption struct { state protoimpl.MessageState @@ -127,7 +193,7 @@ type HeaderValueOption struct { func (x *HeaderValueOption) Reset() { *x = HeaderValueOption{} if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_headers_headers_proto_msgTypes[1] + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_headers_headers_proto_msgTypes[2] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -140,7 +206,7 @@ func (x *HeaderValueOption) String() string { func (*HeaderValueOption) ProtoMessage() {} func (x *HeaderValueOption) ProtoReflect() protoreflect.Message { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_headers_headers_proto_msgTypes[1] + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_headers_headers_proto_msgTypes[2] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -153,7 +219,7 @@ func (x *HeaderValueOption) ProtoReflect() protoreflect.Message { // Deprecated: Use HeaderValueOption.ProtoReflect.Descriptor instead. func (*HeaderValueOption) Descriptor() ([]byte, []int) { - return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_headers_headers_proto_rawDescGZIP(), []int{1} + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_headers_headers_proto_rawDescGZIP(), []int{2} } func (x *HeaderValueOption) GetHeader() *HeaderValue { @@ -185,7 +251,7 @@ type HeaderValue struct { func (x *HeaderValue) Reset() { *x = HeaderValue{} if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_headers_headers_proto_msgTypes[2] + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_headers_headers_proto_msgTypes[3] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -198,7 +264,7 @@ func (x *HeaderValue) String() string { func (*HeaderValue) ProtoMessage() {} func (x *HeaderValue) ProtoReflect() protoreflect.Message { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_headers_headers_proto_msgTypes[2] + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_headers_headers_proto_msgTypes[3] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -211,7 +277,7 @@ func (x *HeaderValue) ProtoReflect() protoreflect.Message { // Deprecated: Use HeaderValue.ProtoReflect.Descriptor instead. func (*HeaderValue) Descriptor() ([]byte, []int) { - return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_headers_headers_proto_rawDescGZIP(), []int{2} + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_headers_headers_proto_rawDescGZIP(), []int{3} } func (x *HeaderValue) GetKey() string { @@ -267,24 +333,34 @@ var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_headers_headers_p 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x5f, 0x74, 0x6f, 0x5f, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x17, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x54, 0x6f, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, - 0x22, 0x8a, 0x01, 0x0a, 0x11, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x56, 0x61, 0x6c, 0x75, 0x65, - 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x41, 0x0a, 0x06, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, - 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, - 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x56, 0x61, 0x6c, 0x75, - 0x65, 0x52, 0x06, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x12, 0x32, 0x0a, 0x06, 0x61, 0x70, 0x70, - 0x65, 0x6e, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, - 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x06, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x64, 0x22, 0x35, 0x0a, - 0x0b, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x10, 0x0a, 0x03, - 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, - 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, - 0x61, 0x6c, 0x75, 0x65, 0x42, 0x52, 0xb8, 0xf5, 0x04, 0x01, 0xc0, 0xf5, 0x04, 0x01, 0xd0, 0xf5, - 0x04, 0x01, 0x5a, 0x44, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, - 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, - 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, - 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x2f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x22, 0x99, 0x01, 0x0a, 0x17, 0x45, 0x61, 0x72, 0x6c, 0x79, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, + 0x4d, 0x61, 0x6e, 0x69, 0x70, 0x75, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x52, 0x0a, 0x0e, + 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x5f, 0x74, 0x6f, 0x5f, 0x61, 0x64, 0x64, 0x18, 0x01, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x65, + 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x63, 0x6f, 0x72, 0x65, + 0x2e, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x4f, 0x70, 0x74, 0x69, + 0x6f, 0x6e, 0x52, 0x0c, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x54, 0x6f, 0x41, 0x64, 0x64, + 0x12, 0x2a, 0x0a, 0x11, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x5f, 0x74, 0x6f, 0x5f, 0x72, + 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0f, 0x68, 0x65, 0x61, + 0x64, 0x65, 0x72, 0x73, 0x54, 0x6f, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x22, 0x8a, 0x01, 0x0a, + 0x11, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x4f, 0x70, 0x74, 0x69, + 0x6f, 0x6e, 0x12, 0x41, 0x0a, 0x06, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x2e, 0x6f, 0x70, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, + 0x6f, 0x2e, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x06, 0x68, + 0x65, 0x61, 0x64, 0x65, 0x72, 0x12, 0x32, 0x0a, 0x06, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x64, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, + 0x65, 0x52, 0x06, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x64, 0x22, 0x35, 0x0a, 0x0b, 0x48, 0x65, 0x61, + 0x64, 0x65, 0x72, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x42, 0x52, 0xb8, 0xf5, 0x04, 0x01, 0xc0, 0xf5, 0x04, 0x01, 0xd0, 0xf5, 0x04, 0x01, 0x5a, 0x44, + 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, + 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x70, 0x6b, 0x67, + 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, + 0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x68, 0x65, 0x61, + 0x64, 0x65, 0x72, 0x73, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -299,24 +375,26 @@ func file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_headers_headers_ return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_headers_headers_proto_rawDescData } -var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_headers_headers_proto_msgTypes = make([]protoimpl.MessageInfo, 3) +var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_headers_headers_proto_msgTypes = make([]protoimpl.MessageInfo, 4) var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_headers_headers_proto_goTypes = []interface{}{ - (*HeaderManipulation)(nil), // 0: headers.options.gloo.solo.io.HeaderManipulation - (*HeaderValueOption)(nil), // 1: headers.options.gloo.solo.io.HeaderValueOption - (*HeaderValue)(nil), // 2: headers.options.gloo.solo.io.HeaderValue - (*core.HeaderValueOption)(nil), // 3: solo.io.envoy.api.v2.core.HeaderValueOption - (*wrappers.BoolValue)(nil), // 4: google.protobuf.BoolValue + (*HeaderManipulation)(nil), // 0: headers.options.gloo.solo.io.HeaderManipulation + (*EarlyHeaderManipulation)(nil), // 1: headers.options.gloo.solo.io.EarlyHeaderManipulation + (*HeaderValueOption)(nil), // 2: headers.options.gloo.solo.io.HeaderValueOption + (*HeaderValue)(nil), // 3: headers.options.gloo.solo.io.HeaderValue + (*core.HeaderValueOption)(nil), // 4: solo.io.envoy.api.v2.core.HeaderValueOption + (*wrappers.BoolValue)(nil), // 5: google.protobuf.BoolValue } var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_headers_headers_proto_depIdxs = []int32{ - 3, // 0: headers.options.gloo.solo.io.HeaderManipulation.request_headers_to_add:type_name -> solo.io.envoy.api.v2.core.HeaderValueOption - 1, // 1: headers.options.gloo.solo.io.HeaderManipulation.response_headers_to_add:type_name -> headers.options.gloo.solo.io.HeaderValueOption - 2, // 2: headers.options.gloo.solo.io.HeaderValueOption.header:type_name -> headers.options.gloo.solo.io.HeaderValue - 4, // 3: headers.options.gloo.solo.io.HeaderValueOption.append:type_name -> google.protobuf.BoolValue - 4, // [4:4] is the sub-list for method output_type - 4, // [4:4] is the sub-list for method input_type - 4, // [4:4] is the sub-list for extension type_name - 4, // [4:4] is the sub-list for extension extendee - 0, // [0:4] is the sub-list for field type_name + 4, // 0: headers.options.gloo.solo.io.HeaderManipulation.request_headers_to_add:type_name -> solo.io.envoy.api.v2.core.HeaderValueOption + 2, // 1: headers.options.gloo.solo.io.HeaderManipulation.response_headers_to_add:type_name -> headers.options.gloo.solo.io.HeaderValueOption + 4, // 2: headers.options.gloo.solo.io.EarlyHeaderManipulation.headers_to_add:type_name -> solo.io.envoy.api.v2.core.HeaderValueOption + 3, // 3: headers.options.gloo.solo.io.HeaderValueOption.header:type_name -> headers.options.gloo.solo.io.HeaderValue + 5, // 4: headers.options.gloo.solo.io.HeaderValueOption.append:type_name -> google.protobuf.BoolValue + 5, // [5:5] is the sub-list for method output_type + 5, // [5:5] is the sub-list for method input_type + 5, // [5:5] is the sub-list for extension type_name + 5, // [5:5] is the sub-list for extension extendee + 0, // [0:5] is the sub-list for field type_name } func init() { file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_headers_headers_proto_init() } @@ -338,7 +416,7 @@ func file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_headers_headers_ } } file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_headers_headers_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*HeaderValueOption); i { + switch v := v.(*EarlyHeaderManipulation); i { case 0: return &v.state case 1: @@ -350,6 +428,18 @@ func file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_headers_headers_ } } file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_headers_headers_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*HeaderValueOption); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_headers_headers_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*HeaderValue); i { case 0: return &v.state @@ -368,7 +458,7 @@ func file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_headers_headers_ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_headers_headers_proto_rawDesc, NumEnums: 0, - NumMessages: 3, + NumMessages: 4, NumExtensions: 0, NumServices: 0, }, diff --git a/pkg/api/gloo.solo.io/v1/options/headers/headers.pb.hash.go b/pkg/api/gloo.solo.io/v1/options/headers/headers.pb.hash.go index 29a45a57d..5d4a27751 100644 --- a/pkg/api/gloo.solo.io/v1/options/headers/headers.pb.hash.go +++ b/pkg/api/gloo.solo.io/v1/options/headers/headers.pb.hash.go @@ -105,6 +105,54 @@ func (m *HeaderManipulation) Hash(hasher hash.Hash64) (uint64, error) { return hasher.Sum64(), nil } +// Hash function +func (m *EarlyHeaderManipulation) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("headers.options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/headers.EarlyHeaderManipulation")); err != nil { + return 0, err + } + + for _, v := range m.GetHeadersToAdd() { + + if h, ok := interface{}(v).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(v, nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + } + + for _, v := range m.GetHeadersToRemove() { + + if _, err = hasher.Write([]byte(v)); err != nil { + return 0, err + } + + } + + return hasher.Sum64(), nil +} + // Hash function func (m *HeaderValueOption) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { diff --git a/pkg/api/gloo.solo.io/v1/options/protocol/protocol.pb.go b/pkg/api/gloo.solo.io/v1/options/protocol/protocol.pb.go index 441aaa964..58d87b6a8 100644 --- a/pkg/api/gloo.solo.io/v1/options/protocol/protocol.pb.go +++ b/pkg/api/gloo.solo.io/v1/options/protocol/protocol.pb.go @@ -99,7 +99,7 @@ type HttpProtocolOptions struct { // Note that request based timeouts mean that HTTP/2 PINGs will not keep the connection alive. // If not specified, this defaults to 1 hour. To disable idle timeouts explicitly set this to 0. // - // .. warning:: + // **Warning**: // // Disabling this timeout has a highly likelihood of yielding connection leaks due to lost TCP // FIN packets, etc. @@ -294,7 +294,7 @@ type Http2ProtocolOptions struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // `Maximum concurrent streams `_ + // [Maximum concurrent streams](https://httpwg.org/specs/rfc7540.html#rfc.section.5.1.2) // allowed for peer on one HTTP/2 connection. Valid values range from 1 to 2147483647 (2^31 - 1) // and defaults to 2147483647. // @@ -306,8 +306,7 @@ type Http2ProtocolOptions struct { // connection based on upstream settings. Config dumps will reflect the configured upper bound, // not the per-connection negotiated limits. MaxConcurrentStreams *wrappers.UInt32Value `protobuf:"bytes,2,opt,name=max_concurrent_streams,json=maxConcurrentStreams,proto3" json:"max_concurrent_streams,omitempty"` - // `Initial stream-level flow-control window - // `_ size. Valid values range from 65535 + // [Initial stream-level flow-control window](https://httpwg.org/specs/rfc7540.html#rfc.section.6.9.2) size. Valid values range from 65535 // (2^16 - 1, HTTP/2 default) to 2147483647 (2^31 - 1, HTTP/2 maximum) and defaults to 268435456 // (256 * 1024 * 1024). // @@ -328,7 +327,7 @@ type Http2ProtocolOptions struct { // This overrides any HCM :ref:`stream_error_on_invalid_http_messaging // ` // - // See `RFC7540, sec. 8.1 `_ for details. + // See [RFC7540, sec. 8.1](https://datatracker.ietf.org/doc/html/rfc7540#section-8.1) for details. OverrideStreamErrorOnInvalidHttpMessage *wrappers.BoolValue `protobuf:"bytes,14,opt,name=override_stream_error_on_invalid_http_message,json=overrideStreamErrorOnInvalidHttpMessage,proto3" json:"override_stream_error_on_invalid_http_message,omitempty"` } diff --git a/pkg/api/gloo.solo.io/v1/options/proxy_protocol/proxy_protocol.pb.go b/pkg/api/gloo.solo.io/v1/options/proxy_protocol/proxy_protocol.pb.go index bd48b7cb6..4d55104ea 100644 --- a/pkg/api/gloo.solo.io/v1/options/proxy_protocol/proxy_protocol.pb.go +++ b/pkg/api/gloo.solo.io/v1/options/proxy_protocol/proxy_protocol.pb.go @@ -32,7 +32,7 @@ type ProxyProtocol struct { Rules []*ProxyProtocol_Rule `protobuf:"bytes,1,rep,name=rules,proto3" json:"rules,omitempty"` // Allow requests through that don't use proxy protocol. Defaults to false. // - // .. attention:: + // **Attention**: // // The true setting is only honored in Gloo Edge Enterprise. // This breaks conformance with the specification. @@ -152,8 +152,7 @@ type ProxyProtocol_Rule struct { unknownFields protoimpl.UnknownFields // The type that triggers the rule - required - // TLV type is defined as uint8_t in proxy protocol. See `the spec - // `_ for details. + // TLV type is defined as uint8_t in proxy protocol. See [the spec](https://www.haproxy.org/download/2.1/doc/proxy-protocol.txt) for details. TlvType uint32 `protobuf:"varint,1,opt,name=tlv_type,json=tlvType,proto3" json:"tlv_type,omitempty"` // If the TLV type is present, apply this metadata KeyValuePair. OnTlvPresent *ProxyProtocol_KeyValuePair `protobuf:"bytes,2,opt,name=on_tlv_present,json=onTlvPresent,proto3" json:"on_tlv_present,omitempty"` diff --git a/pkg/api/gloo.solo.io/v1/options/transformation/transformation.pb.clone.go b/pkg/api/gloo.solo.io/v1/options/transformation/transformation.pb.clone.go index 8d7fc44a0..bc50605eb 100644 --- a/pkg/api/gloo.solo.io/v1/options/transformation/transformation.pb.clone.go +++ b/pkg/api/gloo.solo.io/v1/options/transformation/transformation.pb.clone.go @@ -380,6 +380,12 @@ func (m *TransformationTemplate) Clone() proto.Message { target.EscapeCharacters = proto.Clone(m.GetEscapeCharacters()).(*github_com_golang_protobuf_ptypes_wrappers.BoolValue) } + if h, ok := interface{}(m.GetSpanTransformer()).(clone.Cloner); ok { + target.SpanTransformer = h.Clone().(*TransformationTemplate_SpanTransformer) + } else { + target.SpanTransformer = proto.Clone(m.GetSpanTransformer()).(*TransformationTemplate_SpanTransformer) + } + switch m.BodyTransformation.(type) { case *TransformationTemplate_Body: @@ -549,6 +555,23 @@ func (m *TransformationTemplate_DynamicMetadataValue) Clone() proto.Message { return target } +// Clone function +func (m *TransformationTemplate_SpanTransformer) Clone() proto.Message { + var target *TransformationTemplate_SpanTransformer + if m == nil { + return target + } + target = &TransformationTemplate_SpanTransformer{} + + if h, ok := interface{}(m.GetName()).(clone.Cloner); ok { + target.Name = h.Clone().(*InjaTemplate) + } else { + target.Name = proto.Clone(m.GetName()).(*InjaTemplate) + } + + return target +} + // Clone function func (m *MergeJsonKeys_OverridableTemplate) Clone() proto.Message { var target *MergeJsonKeys_OverridableTemplate diff --git a/pkg/api/gloo.solo.io/v1/options/transformation/transformation.pb.equal.go b/pkg/api/gloo.solo.io/v1/options/transformation/transformation.pb.equal.go index 29ed85d61..1e6206b49 100644 --- a/pkg/api/gloo.solo.io/v1/options/transformation/transformation.pb.equal.go +++ b/pkg/api/gloo.solo.io/v1/options/transformation/transformation.pb.equal.go @@ -605,6 +605,16 @@ func (m *TransformationTemplate) Equal(that interface{}) bool { } } + if h, ok := interface{}(m.GetSpanTransformer()).(equality.Equalizer); ok { + if !h.Equal(target.GetSpanTransformer()) { + return false + } + } else { + if !proto.Equal(m.GetSpanTransformer(), target.GetSpanTransformer()) { + return false + } + } + switch m.BodyTransformation.(type) { case *TransformationTemplate_Body: @@ -906,6 +916,40 @@ func (m *TransformationTemplate_DynamicMetadataValue) Equal(that interface{}) bo return true } +// Equal function +func (m *TransformationTemplate_SpanTransformer) Equal(that interface{}) bool { + if that == nil { + return m == nil + } + + target, ok := that.(*TransformationTemplate_SpanTransformer) + if !ok { + that2, ok := that.(TransformationTemplate_SpanTransformer) + if ok { + target = &that2 + } else { + return false + } + } + if target == nil { + return m == nil + } else if m == nil { + return false + } + + if h, ok := interface{}(m.GetName()).(equality.Equalizer); ok { + if !h.Equal(target.GetName()) { + return false + } + } else { + if !proto.Equal(m.GetName(), target.GetName()) { + return false + } + } + + return true +} + // Equal function func (m *MergeJsonKeys_OverridableTemplate) Equal(that interface{}) bool { if that == nil { diff --git a/pkg/api/gloo.solo.io/v1/options/transformation/transformation.pb.go b/pkg/api/gloo.solo.io/v1/options/transformation/transformation.pb.go index 8bdc83d7a..06579a7ef 100644 --- a/pkg/api/gloo.solo.io/v1/options/transformation/transformation.pb.go +++ b/pkg/api/gloo.solo.io/v1/options/transformation/transformation.pb.go @@ -859,6 +859,10 @@ type TransformationTemplate struct { // sets the behavior for the entire transformation. Use raw_strings function // for fine-grained control within a template. EscapeCharacters *wrappers.BoolValue `protobuf:"bytes,12,opt,name=escape_characters,json=escapeCharacters,proto3" json:"escape_characters,omitempty"` + // Use this field to modify the span of the trace. This field can only be + // applied on requestTransformations. Attempting to set this on a + // responseTransformation will result in an error. + SpanTransformer *TransformationTemplate_SpanTransformer `protobuf:"bytes,15,opt,name=span_transformer,json=spanTransformer,proto3" json:"span_transformer,omitempty"` } func (x *TransformationTemplate) Reset() { @@ -991,6 +995,13 @@ func (x *TransformationTemplate) GetEscapeCharacters() *wrappers.BoolValue { return nil } +func (x *TransformationTemplate) GetSpanTransformer() *TransformationTemplate_SpanTransformer { + if x != nil { + return x.SpanTransformer + } + return nil +} + type isTransformationTemplate_BodyTransformation interface { isTransformationTemplate_BodyTransformation() } @@ -1427,6 +1438,57 @@ func (x *TransformationTemplate_DynamicMetadataValue) GetJsonToProto() bool { return false } +// Definitions for span transformations for tracing purposes. +type TransformationTemplate_SpanTransformer struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // A template that sets the span name. For example, to set the span name to + // the value of the host header, you can set this value to + // `'{{header("Host")}}'` + Name *InjaTemplate `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` +} + +func (x *TransformationTemplate_SpanTransformer) Reset() { + *x = TransformationTemplate_SpanTransformer{} + if protoimpl.UnsafeEnabled { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_transformation_transformation_proto_msgTypes[17] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *TransformationTemplate_SpanTransformer) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*TransformationTemplate_SpanTransformer) ProtoMessage() {} + +func (x *TransformationTemplate_SpanTransformer) ProtoReflect() protoreflect.Message { + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_transformation_transformation_proto_msgTypes[17] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use TransformationTemplate_SpanTransformer.ProtoReflect.Descriptor instead. +func (*TransformationTemplate_SpanTransformer) Descriptor() ([]byte, []int) { + return file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_transformation_transformation_proto_rawDescGZIP(), []int{7, 4} +} + +func (x *TransformationTemplate_SpanTransformer) GetName() *InjaTemplate { + if x != nil { + return x.Name + } + return nil +} + type MergeJsonKeys_OverridableTemplate struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -1441,7 +1503,7 @@ type MergeJsonKeys_OverridableTemplate struct { func (x *MergeJsonKeys_OverridableTemplate) Reset() { *x = MergeJsonKeys_OverridableTemplate{} if protoimpl.UnsafeEnabled { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_transformation_transformation_proto_msgTypes[17] + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_transformation_transformation_proto_msgTypes[18] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1454,7 +1516,7 @@ func (x *MergeJsonKeys_OverridableTemplate) String() string { func (*MergeJsonKeys_OverridableTemplate) ProtoMessage() {} func (x *MergeJsonKeys_OverridableTemplate) ProtoReflect() protoreflect.Message { - mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_transformation_transformation_proto_msgTypes[17] + mi := &file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_transformation_transformation_proto_msgTypes[18] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1663,7 +1725,7 @@ var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_transformation_tr 0x07, 0x45, 0x58, 0x54, 0x52, 0x41, 0x43, 0x54, 0x10, 0x00, 0x12, 0x12, 0x0a, 0x0e, 0x53, 0x49, 0x4e, 0x47, 0x4c, 0x45, 0x5f, 0x52, 0x45, 0x50, 0x4c, 0x41, 0x43, 0x45, 0x10, 0x01, 0x12, 0x0f, 0x0a, 0x0b, 0x52, 0x45, 0x50, 0x4c, 0x41, 0x43, 0x45, 0x5f, 0x41, 0x4c, 0x4c, 0x10, 0x02, 0x42, - 0x08, 0x0a, 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x22, 0x93, 0x0e, 0x0a, 0x16, 0x54, 0x72, + 0x08, 0x0a, 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x22, 0xeb, 0x0f, 0x0a, 0x16, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x12, 0x2d, 0x0a, 0x12, 0x61, 0x64, 0x76, 0x61, 0x6e, 0x63, 0x65, 0x64, 0x5f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, @@ -1739,84 +1801,97 @@ var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_transformation_tr 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x10, 0x65, 0x73, 0x63, 0x61, 0x70, 0x65, 0x43, 0x68, 0x61, 0x72, 0x61, 0x63, 0x74, 0x65, 0x72, - 0x73, 0x1a, 0x6e, 0x0a, 0x0f, 0x45, 0x78, 0x74, 0x72, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x45, - 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x45, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, - 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, - 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x45, 0x78, 0x74, 0x72, - 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, - 0x01, 0x1a, 0x6d, 0x0a, 0x0c, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, - 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, - 0x6b, 0x65, 0x79, 0x12, 0x47, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, - 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x49, 0x6e, 0x6a, 0x61, 0x54, 0x65, 0x6d, + 0x73, 0x12, 0x76, 0x0a, 0x10, 0x73, 0x70, 0x61, 0x6e, 0x5f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, + 0x6f, 0x72, 0x6d, 0x65, 0x72, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x4b, 0x2e, 0x74, 0x72, + 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x6f, 0x70, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, + 0x6f, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x2e, 0x53, 0x70, 0x61, 0x6e, 0x54, 0x72, 0x61, + 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x65, 0x72, 0x52, 0x0f, 0x73, 0x70, 0x61, 0x6e, 0x54, 0x72, + 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x65, 0x72, 0x1a, 0x6e, 0x0a, 0x0f, 0x45, 0x78, 0x74, + 0x72, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, + 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x45, + 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, + 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x6f, + 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, + 0x2e, 0x69, 0x6f, 0x2e, 0x45, 0x78, 0x74, 0x72, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x05, + 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x6d, 0x0a, 0x0c, 0x48, 0x65, 0x61, + 0x64, 0x65, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x47, 0x0a, 0x05, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x74, 0x72, 0x61, + 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x6f, 0x70, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, + 0x2e, 0x49, 0x6e, 0x6a, 0x61, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x05, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x6b, 0x0a, 0x0e, 0x48, 0x65, 0x61, 0x64, + 0x65, 0x72, 0x54, 0x6f, 0x41, 0x70, 0x70, 0x65, 0x6e, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, + 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x47, 0x0a, 0x05, + 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x74, 0x72, + 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x6f, 0x70, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, + 0x6f, 0x2e, 0x49, 0x6e, 0x6a, 0x61, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x05, + 0x76, 0x61, 0x6c, 0x75, 0x65, 0x1a, 0xc4, 0x01, 0x0a, 0x14, 0x44, 0x79, 0x6e, 0x61, 0x6d, 0x69, + 0x63, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x2d, + 0x0a, 0x12, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, + 0x70, 0x61, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x6d, 0x65, 0x74, 0x61, + 0x64, 0x61, 0x74, 0x61, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x10, 0x0a, + 0x03, 0x6b, 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, + 0x47, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x31, + 0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, + 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, + 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x49, 0x6e, 0x6a, 0x61, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, + 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x22, 0x0a, 0x0d, 0x6a, 0x73, 0x6f, 0x6e, + 0x5f, 0x74, 0x6f, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, + 0x0b, 0x6a, 0x73, 0x6f, 0x6e, 0x54, 0x6f, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x58, 0x0a, 0x0f, + 0x53, 0x70, 0x61, 0x6e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x65, 0x72, 0x12, + 0x45, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x31, 0x2e, + 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x6f, + 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, + 0x2e, 0x69, 0x6f, 0x2e, 0x49, 0x6e, 0x6a, 0x61, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, + 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x32, 0x0a, 0x10, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x42, 0x6f, 0x64, 0x79, 0x50, 0x61, 0x72, 0x73, 0x65, 0x12, 0x0f, 0x0a, 0x0b, 0x50, 0x61, + 0x72, 0x73, 0x65, 0x41, 0x73, 0x4a, 0x73, 0x6f, 0x6e, 0x10, 0x00, 0x12, 0x0d, 0x0a, 0x09, 0x44, + 0x6f, 0x6e, 0x74, 0x50, 0x61, 0x72, 0x73, 0x65, 0x10, 0x01, 0x42, 0x15, 0x0a, 0x13, 0x62, 0x6f, + 0x64, 0x79, 0x5f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x4a, 0x04, 0x08, 0x0e, 0x10, 0x0f, 0x22, 0x22, 0x0a, 0x0c, 0x49, 0x6e, 0x6a, 0x61, 0x54, + 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x65, 0x78, 0x74, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x65, 0x78, 0x74, 0x22, 0x0d, 0x0a, 0x0b, 0x50, + 0x61, 0x73, 0x73, 0x74, 0x68, 0x72, 0x6f, 0x75, 0x67, 0x68, 0x22, 0x17, 0x0a, 0x15, 0x4d, 0x65, + 0x72, 0x67, 0x65, 0x45, 0x78, 0x74, 0x72, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x54, 0x6f, 0x42, + 0x6f, 0x64, 0x79, 0x22, 0xfa, 0x02, 0x0a, 0x0d, 0x4d, 0x65, 0x72, 0x67, 0x65, 0x4a, 0x73, 0x6f, + 0x6e, 0x4b, 0x65, 0x79, 0x73, 0x12, 0x5d, 0x0a, 0x09, 0x6a, 0x73, 0x6f, 0x6e, 0x5f, 0x6b, 0x65, + 0x79, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x40, 0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, + 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x4d, + 0x65, 0x72, 0x67, 0x65, 0x4a, 0x73, 0x6f, 0x6e, 0x4b, 0x65, 0x79, 0x73, 0x2e, 0x4a, 0x73, 0x6f, + 0x6e, 0x4b, 0x65, 0x79, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x08, 0x6a, 0x73, 0x6f, 0x6e, + 0x4b, 0x65, 0x79, 0x73, 0x1a, 0x83, 0x01, 0x0a, 0x13, 0x4f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, + 0x61, 0x62, 0x6c, 0x65, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x12, 0x45, 0x0a, 0x04, + 0x74, 0x6d, 0x70, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x74, 0x72, 0x61, + 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x6f, 0x70, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, + 0x2e, 0x49, 0x6e, 0x6a, 0x61, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x04, 0x74, + 0x6d, 0x70, 0x6c, 0x12, 0x25, 0x0a, 0x0e, 0x6f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x5f, + 0x65, 0x6d, 0x70, 0x74, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x6f, 0x76, 0x65, + 0x72, 0x72, 0x69, 0x64, 0x65, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x83, 0x01, 0x0a, 0x0d, 0x4a, + 0x73, 0x6f, 0x6e, 0x4b, 0x65, 0x79, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, + 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x5c, + 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x46, 0x2e, + 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x6f, + 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, + 0x2e, 0x69, 0x6f, 0x2e, 0x4d, 0x65, 0x72, 0x67, 0x65, 0x4a, 0x73, 0x6f, 0x6e, 0x4b, 0x65, 0x79, + 0x73, 0x2e, 0x4f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x61, 0x62, 0x6c, 0x65, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, - 0x1a, 0x6b, 0x0a, 0x0e, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x54, 0x6f, 0x41, 0x70, 0x70, 0x65, - 0x6e, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x03, 0x6b, 0x65, 0x79, 0x12, 0x47, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, - 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x49, 0x6e, 0x6a, 0x61, 0x54, 0x65, - 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x1a, 0xc4, 0x01, - 0x0a, 0x14, 0x44, 0x79, 0x6e, 0x61, 0x6d, 0x69, 0x63, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, - 0x61, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x2d, 0x0a, 0x12, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, - 0x74, 0x61, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x11, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x4e, 0x61, 0x6d, 0x65, - 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x47, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, - 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, - 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x49, 0x6e, 0x6a, - 0x61, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, - 0x12, 0x22, 0x0a, 0x0d, 0x6a, 0x73, 0x6f, 0x6e, 0x5f, 0x74, 0x6f, 0x5f, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x6a, 0x73, 0x6f, 0x6e, 0x54, 0x6f, 0x50, - 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x32, 0x0a, 0x10, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x42, - 0x6f, 0x64, 0x79, 0x50, 0x61, 0x72, 0x73, 0x65, 0x12, 0x0f, 0x0a, 0x0b, 0x50, 0x61, 0x72, 0x73, - 0x65, 0x41, 0x73, 0x4a, 0x73, 0x6f, 0x6e, 0x10, 0x00, 0x12, 0x0d, 0x0a, 0x09, 0x44, 0x6f, 0x6e, - 0x74, 0x50, 0x61, 0x72, 0x73, 0x65, 0x10, 0x01, 0x42, 0x15, 0x0a, 0x13, 0x62, 0x6f, 0x64, 0x79, - 0x5f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, - 0x22, 0x0a, 0x0c, 0x49, 0x6e, 0x6a, 0x61, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x12, - 0x12, 0x0a, 0x04, 0x74, 0x65, 0x78, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, - 0x65, 0x78, 0x74, 0x22, 0x0d, 0x0a, 0x0b, 0x50, 0x61, 0x73, 0x73, 0x74, 0x68, 0x72, 0x6f, 0x75, - 0x67, 0x68, 0x22, 0x17, 0x0a, 0x15, 0x4d, 0x65, 0x72, 0x67, 0x65, 0x45, 0x78, 0x74, 0x72, 0x61, - 0x63, 0x74, 0x6f, 0x72, 0x73, 0x54, 0x6f, 0x42, 0x6f, 0x64, 0x79, 0x22, 0xfa, 0x02, 0x0a, 0x0d, - 0x4d, 0x65, 0x72, 0x67, 0x65, 0x4a, 0x73, 0x6f, 0x6e, 0x4b, 0x65, 0x79, 0x73, 0x12, 0x5d, 0x0a, - 0x09, 0x6a, 0x73, 0x6f, 0x6e, 0x5f, 0x6b, 0x65, 0x79, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x40, 0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, - 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x4d, 0x65, 0x72, 0x67, 0x65, 0x4a, 0x73, 0x6f, 0x6e, - 0x4b, 0x65, 0x79, 0x73, 0x2e, 0x4a, 0x73, 0x6f, 0x6e, 0x4b, 0x65, 0x79, 0x73, 0x45, 0x6e, 0x74, - 0x72, 0x79, 0x52, 0x08, 0x6a, 0x73, 0x6f, 0x6e, 0x4b, 0x65, 0x79, 0x73, 0x1a, 0x83, 0x01, 0x0a, - 0x13, 0x4f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x61, 0x62, 0x6c, 0x65, 0x54, 0x65, 0x6d, 0x70, - 0x6c, 0x61, 0x74, 0x65, 0x12, 0x45, 0x0a, 0x04, 0x74, 0x6d, 0x70, 0x6c, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6c, 0x6f, 0x6f, - 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x49, 0x6e, 0x6a, 0x61, 0x54, 0x65, 0x6d, - 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x04, 0x74, 0x6d, 0x70, 0x6c, 0x12, 0x25, 0x0a, 0x0e, 0x6f, - 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x5f, 0x65, 0x6d, 0x70, 0x74, 0x79, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x08, 0x52, 0x0d, 0x6f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x45, 0x6d, 0x70, - 0x74, 0x79, 0x1a, 0x83, 0x01, 0x0a, 0x0d, 0x4a, 0x73, 0x6f, 0x6e, 0x4b, 0x65, 0x79, 0x73, 0x45, - 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x5c, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x46, 0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, - 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, - 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2e, 0x4d, 0x65, 0x72, 0x67, - 0x65, 0x4a, 0x73, 0x6f, 0x6e, 0x4b, 0x65, 0x79, 0x73, 0x2e, 0x4f, 0x76, 0x65, 0x72, 0x72, 0x69, - 0x64, 0x61, 0x62, 0x6c, 0x65, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x05, 0x76, - 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x47, 0x0a, 0x13, 0x48, 0x65, 0x61, 0x64, - 0x65, 0x72, 0x42, 0x6f, 0x64, 0x79, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x12, - 0x30, 0x0a, 0x14, 0x61, 0x64, 0x64, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x6d, - 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x12, 0x61, - 0x64, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, - 0x61, 0x42, 0x59, 0xb8, 0xf5, 0x04, 0x01, 0xc0, 0xf5, 0x04, 0x01, 0xd0, 0xf5, 0x04, 0x01, 0x5a, - 0x4b, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, - 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x70, 0x6b, - 0x67, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, - 0x69, 0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x74, 0x72, - 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x62, 0x06, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x33, + 0x22, 0x47, 0x0a, 0x13, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x42, 0x6f, 0x64, 0x79, 0x54, 0x72, + 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x30, 0x0a, 0x14, 0x61, 0x64, 0x64, 0x5f, 0x72, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x12, 0x61, 0x64, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x42, 0x59, 0xb8, 0xf5, 0x04, 0x01, 0xc0, + 0xf5, 0x04, 0x01, 0xd0, 0xf5, 0x04, 0x01, 0x5a, 0x4b, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, + 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x6f, 0x6c, 0x6f, + 0x2d, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6c, + 0x6f, 0x6f, 0x2e, 0x73, 0x6f, 0x6c, 0x6f, 0x2e, 0x69, 0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x70, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -1832,7 +1907,7 @@ func file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_transformation_t } var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_transformation_transformation_proto_enumTypes = make([]protoimpl.EnumInfo, 2) -var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_transformation_transformation_proto_msgTypes = make([]protoimpl.MessageInfo, 19) +var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_transformation_transformation_proto_msgTypes = make([]protoimpl.MessageInfo, 20) var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_transformation_transformation_proto_goTypes = []interface{}{ (Extraction_Mode)(0), // 0: transformation.options.gloo.solo.io.Extraction.Mode (TransformationTemplate_RequestBodyParse)(0), // 1: transformation.options.gloo.solo.io.TransformationTemplate.RequestBodyParse @@ -1853,19 +1928,20 @@ var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_transformation_tr nil, // 16: transformation.options.gloo.solo.io.TransformationTemplate.HeadersEntry (*TransformationTemplate_HeaderToAppend)(nil), // 17: transformation.options.gloo.solo.io.TransformationTemplate.HeaderToAppend (*TransformationTemplate_DynamicMetadataValue)(nil), // 18: transformation.options.gloo.solo.io.TransformationTemplate.DynamicMetadataValue - (*MergeJsonKeys_OverridableTemplate)(nil), // 19: transformation.options.gloo.solo.io.MergeJsonKeys.OverridableTemplate - nil, // 20: transformation.options.gloo.solo.io.MergeJsonKeys.JsonKeysEntry - (*matchers.HeaderMatcher)(nil), // 21: matchers.core.gloo.solo.io.HeaderMatcher - (*matchers.Matcher)(nil), // 22: matchers.core.gloo.solo.io.Matcher - (*wrappers.BoolValue)(nil), // 23: google.protobuf.BoolValue - (*xslt.XsltTransformation)(nil), // 24: envoy.config.transformer.xslt.v2.XsltTransformation - (*empty.Empty)(nil), // 25: google.protobuf.Empty - (*wrappers.StringValue)(nil), // 26: google.protobuf.StringValue + (*TransformationTemplate_SpanTransformer)(nil), // 19: transformation.options.gloo.solo.io.TransformationTemplate.SpanTransformer + (*MergeJsonKeys_OverridableTemplate)(nil), // 20: transformation.options.gloo.solo.io.MergeJsonKeys.OverridableTemplate + nil, // 21: transformation.options.gloo.solo.io.MergeJsonKeys.JsonKeysEntry + (*matchers.HeaderMatcher)(nil), // 22: matchers.core.gloo.solo.io.HeaderMatcher + (*matchers.Matcher)(nil), // 23: matchers.core.gloo.solo.io.Matcher + (*wrappers.BoolValue)(nil), // 24: google.protobuf.BoolValue + (*xslt.XsltTransformation)(nil), // 25: envoy.config.transformer.xslt.v2.XsltTransformation + (*empty.Empty)(nil), // 26: google.protobuf.Empty + (*wrappers.StringValue)(nil), // 27: google.protobuf.StringValue } var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_transformation_transformation_proto_depIdxs = []int32{ - 21, // 0: transformation.options.gloo.solo.io.ResponseMatch.matchers:type_name -> matchers.core.gloo.solo.io.HeaderMatcher + 22, // 0: transformation.options.gloo.solo.io.ResponseMatch.matchers:type_name -> matchers.core.gloo.solo.io.HeaderMatcher 7, // 1: transformation.options.gloo.solo.io.ResponseMatch.response_transformation:type_name -> transformation.options.gloo.solo.io.Transformation - 22, // 2: transformation.options.gloo.solo.io.RequestMatch.matcher:type_name -> matchers.core.gloo.solo.io.Matcher + 23, // 2: transformation.options.gloo.solo.io.RequestMatch.matcher:type_name -> matchers.core.gloo.solo.io.Matcher 7, // 3: transformation.options.gloo.solo.io.RequestMatch.request_transformation:type_name -> transformation.options.gloo.solo.io.Transformation 7, // 4: transformation.options.gloo.solo.io.RequestMatch.response_transformation:type_name -> transformation.options.gloo.solo.io.Transformation 7, // 5: transformation.options.gloo.solo.io.Transformations.request_transformation:type_name -> transformation.options.gloo.solo.io.Transformation @@ -1875,13 +1951,13 @@ var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_transformation_tr 5, // 9: transformation.options.gloo.solo.io.TransformationStages.early:type_name -> transformation.options.gloo.solo.io.RequestResponseTransformations 5, // 10: transformation.options.gloo.solo.io.TransformationStages.regular:type_name -> transformation.options.gloo.solo.io.RequestResponseTransformations 5, // 11: transformation.options.gloo.solo.io.TransformationStages.post_routing:type_name -> transformation.options.gloo.solo.io.RequestResponseTransformations - 23, // 12: transformation.options.gloo.solo.io.TransformationStages.log_request_response_info:type_name -> google.protobuf.BoolValue - 23, // 13: transformation.options.gloo.solo.io.TransformationStages.escape_characters:type_name -> google.protobuf.BoolValue + 24, // 12: transformation.options.gloo.solo.io.TransformationStages.log_request_response_info:type_name -> google.protobuf.BoolValue + 24, // 13: transformation.options.gloo.solo.io.TransformationStages.escape_characters:type_name -> google.protobuf.BoolValue 9, // 14: transformation.options.gloo.solo.io.Transformation.transformation_template:type_name -> transformation.options.gloo.solo.io.TransformationTemplate 14, // 15: transformation.options.gloo.solo.io.Transformation.header_body_transform:type_name -> transformation.options.gloo.solo.io.HeaderBodyTransform - 24, // 16: transformation.options.gloo.solo.io.Transformation.xslt_transformation:type_name -> envoy.config.transformer.xslt.v2.XsltTransformation - 25, // 17: transformation.options.gloo.solo.io.Extraction.body:type_name -> google.protobuf.Empty - 26, // 18: transformation.options.gloo.solo.io.Extraction.replacement_text:type_name -> google.protobuf.StringValue + 25, // 16: transformation.options.gloo.solo.io.Transformation.xslt_transformation:type_name -> envoy.config.transformer.xslt.v2.XsltTransformation + 26, // 17: transformation.options.gloo.solo.io.Extraction.body:type_name -> google.protobuf.Empty + 27, // 18: transformation.options.gloo.solo.io.Extraction.replacement_text:type_name -> google.protobuf.StringValue 0, // 19: transformation.options.gloo.solo.io.Extraction.mode:type_name -> transformation.options.gloo.solo.io.Extraction.Mode 15, // 20: transformation.options.gloo.solo.io.TransformationTemplate.extractors:type_name -> transformation.options.gloo.solo.io.TransformationTemplate.ExtractorsEntry 16, // 21: transformation.options.gloo.solo.io.TransformationTemplate.headers:type_name -> transformation.options.gloo.solo.io.TransformationTemplate.HeadersEntry @@ -1892,19 +1968,21 @@ var file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_transformation_tr 13, // 26: transformation.options.gloo.solo.io.TransformationTemplate.merge_json_keys:type_name -> transformation.options.gloo.solo.io.MergeJsonKeys 1, // 27: transformation.options.gloo.solo.io.TransformationTemplate.parse_body_behavior:type_name -> transformation.options.gloo.solo.io.TransformationTemplate.RequestBodyParse 18, // 28: transformation.options.gloo.solo.io.TransformationTemplate.dynamic_metadata_values:type_name -> transformation.options.gloo.solo.io.TransformationTemplate.DynamicMetadataValue - 23, // 29: transformation.options.gloo.solo.io.TransformationTemplate.escape_characters:type_name -> google.protobuf.BoolValue - 20, // 30: transformation.options.gloo.solo.io.MergeJsonKeys.json_keys:type_name -> transformation.options.gloo.solo.io.MergeJsonKeys.JsonKeysEntry - 8, // 31: transformation.options.gloo.solo.io.TransformationTemplate.ExtractorsEntry.value:type_name -> transformation.options.gloo.solo.io.Extraction - 10, // 32: transformation.options.gloo.solo.io.TransformationTemplate.HeadersEntry.value:type_name -> transformation.options.gloo.solo.io.InjaTemplate - 10, // 33: transformation.options.gloo.solo.io.TransformationTemplate.HeaderToAppend.value:type_name -> transformation.options.gloo.solo.io.InjaTemplate - 10, // 34: transformation.options.gloo.solo.io.TransformationTemplate.DynamicMetadataValue.value:type_name -> transformation.options.gloo.solo.io.InjaTemplate - 10, // 35: transformation.options.gloo.solo.io.MergeJsonKeys.OverridableTemplate.tmpl:type_name -> transformation.options.gloo.solo.io.InjaTemplate - 19, // 36: transformation.options.gloo.solo.io.MergeJsonKeys.JsonKeysEntry.value:type_name -> transformation.options.gloo.solo.io.MergeJsonKeys.OverridableTemplate - 37, // [37:37] is the sub-list for method output_type - 37, // [37:37] is the sub-list for method input_type - 37, // [37:37] is the sub-list for extension type_name - 37, // [37:37] is the sub-list for extension extendee - 0, // [0:37] is the sub-list for field type_name + 24, // 29: transformation.options.gloo.solo.io.TransformationTemplate.escape_characters:type_name -> google.protobuf.BoolValue + 19, // 30: transformation.options.gloo.solo.io.TransformationTemplate.span_transformer:type_name -> transformation.options.gloo.solo.io.TransformationTemplate.SpanTransformer + 21, // 31: transformation.options.gloo.solo.io.MergeJsonKeys.json_keys:type_name -> transformation.options.gloo.solo.io.MergeJsonKeys.JsonKeysEntry + 8, // 32: transformation.options.gloo.solo.io.TransformationTemplate.ExtractorsEntry.value:type_name -> transformation.options.gloo.solo.io.Extraction + 10, // 33: transformation.options.gloo.solo.io.TransformationTemplate.HeadersEntry.value:type_name -> transformation.options.gloo.solo.io.InjaTemplate + 10, // 34: transformation.options.gloo.solo.io.TransformationTemplate.HeaderToAppend.value:type_name -> transformation.options.gloo.solo.io.InjaTemplate + 10, // 35: transformation.options.gloo.solo.io.TransformationTemplate.DynamicMetadataValue.value:type_name -> transformation.options.gloo.solo.io.InjaTemplate + 10, // 36: transformation.options.gloo.solo.io.TransformationTemplate.SpanTransformer.name:type_name -> transformation.options.gloo.solo.io.InjaTemplate + 10, // 37: transformation.options.gloo.solo.io.MergeJsonKeys.OverridableTemplate.tmpl:type_name -> transformation.options.gloo.solo.io.InjaTemplate + 20, // 38: transformation.options.gloo.solo.io.MergeJsonKeys.JsonKeysEntry.value:type_name -> transformation.options.gloo.solo.io.MergeJsonKeys.OverridableTemplate + 39, // [39:39] is the sub-list for method output_type + 39, // [39:39] is the sub-list for method input_type + 39, // [39:39] is the sub-list for extension type_name + 39, // [39:39] is the sub-list for extension extendee + 0, // [0:39] is the sub-list for field type_name } func init() { @@ -2096,6 +2174,18 @@ func file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_transformation_t } } file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_transformation_transformation_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*TransformationTemplate_SpanTransformer); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_transformation_transformation_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*MergeJsonKeys_OverridableTemplate); i { case 0: return &v.state @@ -2129,7 +2219,7 @@ func file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_transformation_t GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_github_com_solo_io_solo_apis_api_gloo_gloo_v1_options_transformation_transformation_proto_rawDesc, NumEnums: 2, - NumMessages: 19, + NumMessages: 20, NumExtensions: 0, NumServices: 0, }, diff --git a/pkg/api/gloo.solo.io/v1/options/transformation/transformation.pb.hash.go b/pkg/api/gloo.solo.io/v1/options/transformation/transformation.pb.hash.go index ed3be4c4f..8957c916c 100644 --- a/pkg/api/gloo.solo.io/v1/options/transformation/transformation.pb.hash.go +++ b/pkg/api/gloo.solo.io/v1/options/transformation/transformation.pb.hash.go @@ -771,6 +771,26 @@ func (m *TransformationTemplate) Hash(hasher hash.Hash64) (uint64, error) { } } + if h, ok := interface{}(m.GetSpanTransformer()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("SpanTransformer")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetSpanTransformer(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("SpanTransformer")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + switch m.BodyTransformation.(type) { case *TransformationTemplate_Body: @@ -1083,6 +1103,42 @@ func (m *TransformationTemplate_DynamicMetadataValue) Hash(hasher hash.Hash64) ( return hasher.Sum64(), nil } +// Hash function +func (m *TransformationTemplate_SpanTransformer) Hash(hasher hash.Hash64) (uint64, error) { + if m == nil { + return 0, nil + } + if hasher == nil { + hasher = fnv.New64() + } + var err error + if _, err = hasher.Write([]byte("transformation.options.gloo.solo.io.github.com/solo-io/solo-apis/pkg/api/gloo.solo.io/v1/options/transformation.TransformationTemplate_SpanTransformer")); err != nil { + return 0, err + } + + if h, ok := interface{}(m.GetName()).(safe_hasher.SafeHasher); ok { + if _, err = hasher.Write([]byte("Name")); err != nil { + return 0, err + } + if _, err = h.Hash(hasher); err != nil { + return 0, err + } + } else { + if fieldValue, err := hashstructure.Hash(m.GetName(), nil); err != nil { + return 0, err + } else { + if _, err = hasher.Write([]byte("Name")); err != nil { + return 0, err + } + if err := binary.Write(hasher, binary.LittleEndian, fieldValue); err != nil { + return 0, err + } + } + } + + return hasher.Sum64(), nil +} + // Hash function func (m *MergeJsonKeys_OverridableTemplate) Hash(hasher hash.Hash64) (uint64, error) { if m == nil { diff --git a/pkg/api/gloo.solo.io/v1/proxy.pb.go b/pkg/api/gloo.solo.io/v1/proxy.pb.go index bcdf1e95f..491f0ed2b 100644 --- a/pkg/api/gloo.solo.io/v1/proxy.pb.go +++ b/pkg/api/gloo.solo.io/v1/proxy.pb.go @@ -2169,22 +2169,22 @@ type RedirectAction_RegexRewrite struct { // Only one of :ref:`prefix_rewrite ` // or *regex_rewrite* may be specified. // - // Examples using Google's `RE2 `_ engine: + // Examples using Google's [RE2](https://github.com/google/re2) engine: // - // - The path pattern “^/service/([^/]+)(/.*)$“ paired with a substitution - // string of “\2/instance/\1“ would transform “/service/foo/v1/api“ - // into “/v1/api/instance/foo“. + // - The path pattern `^/service/([^/]+)(/.*)$` paired with a substitution + // string of `\2/instance/\1` would transform `/service/foo/v1/api` + // into `/v1/api/instance/foo`. // - // - The pattern “one“ paired with a substitution string of “two“ would - // transform “/xxx/one/yyy/one/zzz“ into “/xxx/two/yyy/two/zzz“. + // - The pattern `one` paired with a substitution string of `two` would + // transform `/xxx/one/yyy/one/zzz` into `/xxx/two/yyy/two/zzz`. // - // - The pattern “^(.*?)one(.*)$“ paired with a substitution string of - // “\1two\2“ would replace only the first occurrence of “one“, - // transforming path “/xxx/one/yyy/one/zzz“ into “/xxx/two/yyy/one/zzz“. + // - The pattern `^(.*?)one(.*)$` paired with a substitution string of + // `\1two\2` would replace only the first occurrence of `one`, + // transforming path `/xxx/one/yyy/one/zzz` into `/xxx/two/yyy/one/zzz`. // - // - The pattern “(?i)/xxx/“ paired with a substitution string of “/yyy/“ - // would do a case-insensitive match and transform path “/aaa/XxX/bbb“ to - // “/aaa/yyy/bbb“. + // - The pattern `(?i)/xxx/` paired with a substitution string of `/yyy/` + // would do a case-insensitive match and transform path `/aaa/XxX/bbb` to + // `/aaa/yyy/bbb`. RegexRewrite *v31.RegexMatchAndSubstitute `protobuf:"bytes,32,opt,name=regex_rewrite,json=regexRewrite,proto3,oneof"` } diff --git a/pkg/api/gloo.solo.io/v1/upstream.pb.go b/pkg/api/gloo.solo.io/v1/upstream.pb.go index 90a140576..28db51449 100644 --- a/pkg/api/gloo.solo.io/v1/upstream.pb.go +++ b/pkg/api/gloo.solo.io/v1/upstream.pb.go @@ -43,7 +43,7 @@ type UpstreamSpec_ClusterProtocolSelection int32 const ( // Cluster can only operate on one of the possible upstream protocols (HTTP1.1, HTTP2). - // If :ref:`http2_protocol_options ` are + // If http2_protocol_options are // present, HTTP2 will be used, otherwise HTTP1.1 will be used. UpstreamSpec_USE_CONFIGURED_PROTOCOL UpstreamSpec_ClusterProtocolSelection = 0 // Use HTTP1.1 or HTTP2, depending on which one is used on the downstream connection. @@ -219,7 +219,7 @@ type UpstreamSpec struct { // This overrides any HCM :ref:`stream_error_on_invalid_http_messaging // ` // - // See `RFC7540, sec. 8.1 `_ for details. + // See [RFC7540, sec. 8.1](https://datatracker.ietf.org/doc/html/rfc7540#section-8.1) for details. OverrideStreamErrorOnInvalidHttpMessage *wrappers.BoolValue `protobuf:"bytes,26,opt,name=override_stream_error_on_invalid_http_message,json=overrideStreamErrorOnInvalidHttpMessage,proto3" json:"override_stream_error_on_invalid_http_message,omitempty"` // Tells envoy that the upstream is an HTTP proxy (e.g., another proxy in a DMZ) that supports HTTP Connect. // This configuration sets the hostname used as part of the HTTP Connect request. @@ -727,7 +727,7 @@ type PreconnectPolicy struct { // Indicates how many streams (rounded up) can be anticipated across a cluster for each // stream, useful for low QPS services. This is currently supported for a subset of // deterministic non-hash-based load-balancing algorithms (weighted round robin, random). - // Unlike “per_upstream_preconnect_ratio“ this preconnects across the upstream instances in a + // Unlike `per_upstream_preconnect_ratio` this preconnects across the upstream instances in a // cluster, doing best effort predictions of what upstream would be picked next and // pre-establishing a connection. // diff --git a/pkg/api/graphql.gloo.solo.io/v1beta1/graphql.pb.go b/pkg/api/graphql.gloo.solo.io/v1beta1/graphql.pb.go index d451ae1b5..11c18b900 100644 --- a/pkg/api/graphql.gloo.solo.io/v1beta1/graphql.pb.go +++ b/pkg/api/graphql.gloo.solo.io/v1beta1/graphql.pb.go @@ -506,14 +506,14 @@ type isGrpcDescriptorRegistry_DescriptorSet interface { type GrpcDescriptorRegistry_ProtoDescriptor struct { // Supplies the filename of - // :ref:`the proto descriptor set ` for the gRPC + // the proto descriptor set for the gRPC // services. ProtoDescriptor string `protobuf:"bytes,1,opt,name=proto_descriptor,json=protoDescriptor,proto3,oneof"` } type GrpcDescriptorRegistry_ProtoDescriptorBin struct { // Supplies the binary content of - // :ref:`the proto descriptor set ` for the gRPC + // the proto descriptor set for the gRPC // services. // Note: in yaml, this must be provided as a base64 standard encoded string; yaml cannot handle binary bytes ProtoDescriptorBin []byte `protobuf:"bytes,2,opt,name=proto_descriptor_bin,json=protoDescriptorBin,proto3,oneof"`