...
1syntax = "proto3";
2
3package envoy.config.route.v4alpha;
4
5import "envoy/config/core/v4alpha/base.proto";
6import "envoy/config/core/v4alpha/config_source.proto";
7import "envoy/config/route/v4alpha/route_components.proto";
8
9import "google/protobuf/wrappers.proto";
10
11import "udpa/annotations/status.proto";
12import "udpa/annotations/versioning.proto";
13import "validate/validate.proto";
14
15option java_package = "io.envoyproxy.envoy.config.route.v4alpha";
16option java_outer_classname = "RouteProto";
17option java_multiple_files = true;
18option (udpa.annotations.file_status).package_version_status = NEXT_MAJOR_VERSION_CANDIDATE;
19
20// [#protodoc-title: HTTP route configuration]
21// * Routing :ref:`architecture overview <arch_overview_http_routing>`
22// * HTTP :ref:`router filter <config_http_filters_router>`
23
24// [#next-free-field: 11]
25message RouteConfiguration {
26 option (udpa.annotations.versioning).previous_message_type =
27 "envoy.config.route.v3.RouteConfiguration";
28
29 // The name of the route configuration. For example, it might match
30 // :ref:`route_config_name
31 // <envoy_api_field_extensions.filters.network.http_connection_manager.v4alpha.Rds.route_config_name>` in
32 // :ref:`envoy_api_msg_extensions.filters.network.http_connection_manager.v4alpha.Rds`.
33 string name = 1;
34
35 // An array of virtual hosts that make up the route table.
36 repeated VirtualHost virtual_hosts = 2;
37
38 // An array of virtual hosts will be dynamically loaded via the VHDS API.
39 // Both *virtual_hosts* and *vhds* fields will be used when present. *virtual_hosts* can be used
40 // for a base routing table or for infrequently changing virtual hosts. *vhds* is used for
41 // on-demand discovery of virtual hosts. The contents of these two fields will be merged to
42 // generate a routing table for a given RouteConfiguration, with *vhds* derived configuration
43 // taking precedence.
44 Vhds vhds = 9;
45
46 // Optionally specifies a list of HTTP headers that the connection manager
47 // will consider to be internal only. If they are found on external requests they will be cleaned
48 // prior to filter invocation. See :ref:`config_http_conn_man_headers_x-envoy-internal` for more
49 // information.
50 repeated string internal_only_headers = 3 [
51 (validate.rules).repeated = {items {string {well_known_regex: HTTP_HEADER_NAME strict: false}}}
52 ];
53
54 // Specifies a list of HTTP headers that should be added to each response that
55 // the connection manager encodes. Headers specified at this level are applied
56 // after headers from any enclosed :ref:`envoy_api_msg_config.route.v4alpha.VirtualHost` or
57 // :ref:`envoy_api_msg_config.route.v4alpha.RouteAction`. For more information, including details on
58 // header value syntax, see the documentation on :ref:`custom request headers
59 // <config_http_conn_man_headers_custom_request_headers>`.
60 repeated core.v4alpha.HeaderValueOption response_headers_to_add = 4
61 [(validate.rules).repeated = {max_items: 1000}];
62
63 // Specifies a list of HTTP headers that should be removed from each response
64 // that the connection manager encodes.
65 repeated string response_headers_to_remove = 5 [
66 (validate.rules).repeated = {items {string {well_known_regex: HTTP_HEADER_NAME strict: false}}}
67 ];
68
69 // Specifies a list of HTTP headers that should be added to each request
70 // routed by the HTTP connection manager. Headers specified at this level are
71 // applied after headers from any enclosed :ref:`envoy_api_msg_config.route.v4alpha.VirtualHost` or
72 // :ref:`envoy_api_msg_config.route.v4alpha.RouteAction`. For more information, including details on
73 // header value syntax, see the documentation on :ref:`custom request headers
74 // <config_http_conn_man_headers_custom_request_headers>`.
75 repeated core.v4alpha.HeaderValueOption request_headers_to_add = 6
76 [(validate.rules).repeated = {max_items: 1000}];
77
78 // Specifies a list of HTTP headers that should be removed from each request
79 // routed by the HTTP connection manager.
80 repeated string request_headers_to_remove = 8 [
81 (validate.rules).repeated = {items {string {well_known_regex: HTTP_HEADER_NAME strict: false}}}
82 ];
83
84 // By default, headers that should be added/removed are evaluated from most to least specific:
85 //
86 // * route level
87 // * virtual host level
88 // * connection manager level
89 //
90 // To allow setting overrides at the route or virtual host level, this order can be reversed
91 // by setting this option to true. Defaults to false.
92 //
93 // [#next-major-version: In the v3 API, this will default to true.]
94 bool most_specific_header_mutations_wins = 10;
95
96 // An optional boolean that specifies whether the clusters that the route
97 // table refers to will be validated by the cluster manager. If set to true
98 // and a route refers to a non-existent cluster, the route table will not
99 // load. If set to false and a route refers to a non-existent cluster, the
100 // route table will load and the router filter will return a 404 if the route
101 // is selected at runtime. This setting defaults to true if the route table
102 // is statically defined via the :ref:`route_config
103 // <envoy_api_field_extensions.filters.network.http_connection_manager.v4alpha.HttpConnectionManager.route_config>`
104 // option. This setting default to false if the route table is loaded dynamically via the
105 // :ref:`rds
106 // <envoy_api_field_extensions.filters.network.http_connection_manager.v4alpha.HttpConnectionManager.rds>`
107 // option. Users may wish to override the default behavior in certain cases (for example when
108 // using CDS with a static route table).
109 google.protobuf.BoolValue validate_clusters = 7;
110}
111
112message Vhds {
113 option (udpa.annotations.versioning).previous_message_type = "envoy.config.route.v3.Vhds";
114
115 // Configuration source specifier for VHDS.
116 core.v4alpha.ConfigSource config_source = 1 [(validate.rules).message = {required: true}];
117}
View as plain text