1// Copyright 2020 The gRPC Authors
2//
3// Licensed under the Apache License, Version 2.0 (the "License");
4// you may not use this file except in compliance with the License.
5// You may obtain a copy of the License at
6//
7//     http://www.apache.org/licenses/LICENSE-2.0
8//
9// Unless required by applicable law or agreed to in writing, software
10// distributed under the License is distributed on an "AS IS" BASIS,
11// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12// See the License for the specific language governing permissions and
13// limitations under the License.
14
15// Code generated by protoc-gen-go. DO NOT EDIT.
16// versions:
17// 	protoc-gen-go v1.25.0
18// 	protoc        v3.14.0
19// source: grpc/lookup/v1/rls_config.proto
20
21package grpc_lookup_v1
22
23import (
24	proto "github.com/golang/protobuf/proto"
25	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
26	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
27	durationpb "google.golang.org/protobuf/types/known/durationpb"
28	reflect "reflect"
29	sync "sync"
30)
31
32const (
33	// Verify that this generated code is sufficiently up-to-date.
34	_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
35	// Verify that runtime/protoimpl is sufficiently up-to-date.
36	_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
37)
38
39// This is a compile-time assertion that a sufficiently up-to-date version
40// of the legacy proto package is being used.
41const _ = proto.ProtoPackageIsVersion4
42
43// Extract a key based on a given name (e.g. header name or query parameter
44// name).  The name must match one of the names listed in the "name" field.  If
45// the "required_match" field is true, one of the specified names must be
46// present for the keybuilder to match.
47type NameMatcher struct {
48	state         protoimpl.MessageState
49	sizeCache     protoimpl.SizeCache
50	unknownFields protoimpl.UnknownFields
51
52	// The name that will be used in the RLS key_map to refer to this value.
53	Key string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"`
54	// Ordered list of names (headers or query parameter names) that can supply
55	// this value; the first one with a non-empty value is used.
56	Names []string `protobuf:"bytes,2,rep,name=names,proto3" json:"names,omitempty"`
57	// If true, make this extraction required; the key builder will not match
58	// if no value is found.
59	RequiredMatch bool `protobuf:"varint,3,opt,name=required_match,json=requiredMatch,proto3" json:"required_match,omitempty"`
60}
61
62func (x *NameMatcher) Reset() {
63	*x = NameMatcher{}
64	if protoimpl.UnsafeEnabled {
65		mi := &file_grpc_lookup_v1_rls_config_proto_msgTypes[0]
66		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
67		ms.StoreMessageInfo(mi)
68	}
69}
70
71func (x *NameMatcher) String() string {
72	return protoimpl.X.MessageStringOf(x)
73}
74
75func (*NameMatcher) ProtoMessage() {}
76
77func (x *NameMatcher) ProtoReflect() protoreflect.Message {
78	mi := &file_grpc_lookup_v1_rls_config_proto_msgTypes[0]
79	if protoimpl.UnsafeEnabled && x != nil {
80		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
81		if ms.LoadMessageInfo() == nil {
82			ms.StoreMessageInfo(mi)
83		}
84		return ms
85	}
86	return mi.MessageOf(x)
87}
88
89// Deprecated: Use NameMatcher.ProtoReflect.Descriptor instead.
90func (*NameMatcher) Descriptor() ([]byte, []int) {
91	return file_grpc_lookup_v1_rls_config_proto_rawDescGZIP(), []int{0}
92}
93
94func (x *NameMatcher) GetKey() string {
95	if x != nil {
96		return x.Key
97	}
98	return ""
99}
100
101func (x *NameMatcher) GetNames() []string {
102	if x != nil {
103		return x.Names
104	}
105	return nil
106}
107
108func (x *NameMatcher) GetRequiredMatch() bool {
109	if x != nil {
110		return x.RequiredMatch
111	}
112	return false
113}
114
115// A GrpcKeyBuilder applies to a given gRPC service, name, and headers.
116type GrpcKeyBuilder struct {
117	state         protoimpl.MessageState
118	sizeCache     protoimpl.SizeCache
119	unknownFields protoimpl.UnknownFields
120
121	Names []*GrpcKeyBuilder_Name `protobuf:"bytes,1,rep,name=names,proto3" json:"names,omitempty"`
122	// Extract keys from all listed headers.
123	// For gRPC, it is an error to specify "required_match" on the NameMatcher
124	// protos.
125	Headers []*NameMatcher `protobuf:"bytes,2,rep,name=headers,proto3" json:"headers,omitempty"`
126}
127
128func (x *GrpcKeyBuilder) Reset() {
129	*x = GrpcKeyBuilder{}
130	if protoimpl.UnsafeEnabled {
131		mi := &file_grpc_lookup_v1_rls_config_proto_msgTypes[1]
132		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
133		ms.StoreMessageInfo(mi)
134	}
135}
136
137func (x *GrpcKeyBuilder) String() string {
138	return protoimpl.X.MessageStringOf(x)
139}
140
141func (*GrpcKeyBuilder) ProtoMessage() {}
142
143func (x *GrpcKeyBuilder) ProtoReflect() protoreflect.Message {
144	mi := &file_grpc_lookup_v1_rls_config_proto_msgTypes[1]
145	if protoimpl.UnsafeEnabled && x != nil {
146		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
147		if ms.LoadMessageInfo() == nil {
148			ms.StoreMessageInfo(mi)
149		}
150		return ms
151	}
152	return mi.MessageOf(x)
153}
154
155// Deprecated: Use GrpcKeyBuilder.ProtoReflect.Descriptor instead.
156func (*GrpcKeyBuilder) Descriptor() ([]byte, []int) {
157	return file_grpc_lookup_v1_rls_config_proto_rawDescGZIP(), []int{1}
158}
159
160func (x *GrpcKeyBuilder) GetNames() []*GrpcKeyBuilder_Name {
161	if x != nil {
162		return x.Names
163	}
164	return nil
165}
166
167func (x *GrpcKeyBuilder) GetHeaders() []*NameMatcher {
168	if x != nil {
169		return x.Headers
170	}
171	return nil
172}
173
174// An HttpKeyBuilder applies to a given HTTP URL and headers.
175//
176// Path and host patterns use the matching syntax from gRPC transcoding to
177// extract named key/value pairs from the path and host components of the URL:
178// https://github.com/googleapis/googleapis/blob/master/google/api/http.proto
179//
180// It is invalid to specify the same key name in multiple places in a pattern.
181//
182// For a service where the project id can be expressed either as a subdomain or
183// in the path, separate HttpKeyBuilders must be used:
184//     host_pattern: 'example.com' path_pattern: '/{id}/{object}/**'
185//     host_pattern: '{id}.example.com' path_pattern: '/{object}/**'
186// If the host is exactly 'example.com', the first path segment will be used as
187// the id and the second segment as the object. If the host has a subdomain, the
188// subdomain will be used as the id and the first segment as the object. If
189// neither pattern matches, no keys will be extracted.
190type HttpKeyBuilder struct {
191	state         protoimpl.MessageState
192	sizeCache     protoimpl.SizeCache
193	unknownFields protoimpl.UnknownFields
194
195	// host_pattern is an ordered list of host template patterns for the desired
196	// value.  If any host_pattern values are specified, then at least one must
197	// match, and the last one wins and sets any specified variables.  A host
198	// consists of labels separated by dots. Each label is matched against the
199	// label in the pattern as follows:
200	//   - "*": Matches any single label.
201	//   - "**": Matches zero or more labels (first or last part of host only).
202	//   - "{<name>=...}": One or more label capture, where "..." can be any
203	//      template that does not include a capture.
204	//   - "{<name>}": A single label capture. Identical to {<name>=*}.
205	//
206	// Examples:
207	//   - "example.com": Only applies to the exact host example.com.
208	//   - "*.example.com": Matches subdomains of example.com.
209	//   - "**.example.com": matches example.com, and all levels of subdomains.
210	//   - "{project}.example.com": Extracts the third level subdomain.
211	//   - "{project=**}.example.com": Extracts the third level+ subdomains.
212	//   - "{project=**}": Extracts the entire host.
213	HostPatterns []string `protobuf:"bytes,1,rep,name=host_patterns,json=hostPatterns,proto3" json:"host_patterns,omitempty"`
214	// path_pattern is an ordered list of path template patterns for the desired
215	// value.  If any path_pattern values are specified, then at least one must
216	// match, and the last one wins and sets any specified variables.  A path
217	// consists of segments separated by slashes. Each segment is matched against
218	// the segment in the pattern as follows:
219	//   - "*": Matches any single segment.
220	//   - "**": Matches zero or more segments (first or last part of path only).
221	//   - "{<name>=...}": One or more segment capture, where "..." can be any
222	//      template that does not include a capture.
223	//   - "{<name>}": A single segment capture. Identical to {<name>=*}.
224	// A custom method may also be specified by appending ":" and the custom
225	// method name or "*" to indicate any custom method (including no custom
226	// method).  For example, "/*/projects/{project_id}/**:*" extracts
227	// `{project_id}` for any version, resource and custom method that includes
228	// it.  By default, any custom method will be matched.
229	//
230	// Examples:
231	//   - "/v1/{name=messages/*}": extracts a name like "messages/12345".
232	//   - "/v1/messages/{message_id}": extracts a message_id like "12345".
233	//   - "/v1/users/{user_id}/messages/{message_id}": extracts two key values.
234	PathPatterns []string `protobuf:"bytes,2,rep,name=path_patterns,json=pathPatterns,proto3" json:"path_patterns,omitempty"`
235	// List of query parameter names to try to match.
236	// For example: ["parent", "name", "resource.name"]
237	// We extract all the specified query_parameters (case-sensitively).  If any
238	// are marked as "required_match" and are not present, this keybuilder fails
239	// to match.  If a given parameter appears multiple times (?foo=a&foo=b) we
240	// will report it as a comma-separated string (foo=a,b).
241	QueryParameters []*NameMatcher `protobuf:"bytes,3,rep,name=query_parameters,json=queryParameters,proto3" json:"query_parameters,omitempty"`
242	// List of headers to try to match.
243	// We extract all the specified header values (case-insensitively).  If any
244	// are marked as "required_match" and are not present, this keybuilder fails
245	// to match.  If a given header appears multiple times in the request we will
246	// report it as a comma-separated string, in standard HTTP fashion.
247	Headers []*NameMatcher `protobuf:"bytes,4,rep,name=headers,proto3" json:"headers,omitempty"`
248}
249
250func (x *HttpKeyBuilder) Reset() {
251	*x = HttpKeyBuilder{}
252	if protoimpl.UnsafeEnabled {
253		mi := &file_grpc_lookup_v1_rls_config_proto_msgTypes[2]
254		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
255		ms.StoreMessageInfo(mi)
256	}
257}
258
259func (x *HttpKeyBuilder) String() string {
260	return protoimpl.X.MessageStringOf(x)
261}
262
263func (*HttpKeyBuilder) ProtoMessage() {}
264
265func (x *HttpKeyBuilder) ProtoReflect() protoreflect.Message {
266	mi := &file_grpc_lookup_v1_rls_config_proto_msgTypes[2]
267	if protoimpl.UnsafeEnabled && x != nil {
268		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
269		if ms.LoadMessageInfo() == nil {
270			ms.StoreMessageInfo(mi)
271		}
272		return ms
273	}
274	return mi.MessageOf(x)
275}
276
277// Deprecated: Use HttpKeyBuilder.ProtoReflect.Descriptor instead.
278func (*HttpKeyBuilder) Descriptor() ([]byte, []int) {
279	return file_grpc_lookup_v1_rls_config_proto_rawDescGZIP(), []int{2}
280}
281
282func (x *HttpKeyBuilder) GetHostPatterns() []string {
283	if x != nil {
284		return x.HostPatterns
285	}
286	return nil
287}
288
289func (x *HttpKeyBuilder) GetPathPatterns() []string {
290	if x != nil {
291		return x.PathPatterns
292	}
293	return nil
294}
295
296func (x *HttpKeyBuilder) GetQueryParameters() []*NameMatcher {
297	if x != nil {
298		return x.QueryParameters
299	}
300	return nil
301}
302
303func (x *HttpKeyBuilder) GetHeaders() []*NameMatcher {
304	if x != nil {
305		return x.Headers
306	}
307	return nil
308}
309
310type RouteLookupConfig struct {
311	state         protoimpl.MessageState
312	sizeCache     protoimpl.SizeCache
313	unknownFields protoimpl.UnknownFields
314
315	// Ordered specifications for constructing keys for HTTP requests.  Last
316	// match wins.  If no HttpKeyBuilder matches, an empty key_map will be sent to
317	// the lookup service; it should likely reply with a global default route
318	// and raise an alert.
319	HttpKeybuilders []*HttpKeyBuilder `protobuf:"bytes,1,rep,name=http_keybuilders,json=httpKeybuilders,proto3" json:"http_keybuilders,omitempty"`
320	// Unordered specifications for constructing keys for gRPC requests.  All
321	// GrpcKeyBuilders on this list must have unique "name" fields so that the
322	// client is free to prebuild a hash map keyed by name.  If no GrpcKeyBuilder
323	// matches, an empty key_map will be sent to the lookup service; it should
324	// likely reply with a global default route and raise an alert.
325	GrpcKeybuilders []*GrpcKeyBuilder `protobuf:"bytes,2,rep,name=grpc_keybuilders,json=grpcKeybuilders,proto3" json:"grpc_keybuilders,omitempty"`
326	// The name of the lookup service as a gRPC URI.  Typically, this will be
327	// a subdomain of the target, such as "lookup.datastore.googleapis.com".
328	LookupService string `protobuf:"bytes,3,opt,name=lookup_service,json=lookupService,proto3" json:"lookup_service,omitempty"`
329	// Configure a timeout value for lookup service requests.
330	// Defaults to 10 seconds if not specified.
331	LookupServiceTimeout *durationpb.Duration `protobuf:"bytes,4,opt,name=lookup_service_timeout,json=lookupServiceTimeout,proto3" json:"lookup_service_timeout,omitempty"`
332	// How long are responses valid for (like HTTP Cache-Control).
333	// If omitted or zero, the longest valid cache time is used.
334	// This value is clamped to 5 minutes to avoid unflushable bad responses.
335	MaxAge *durationpb.Duration `protobuf:"bytes,5,opt,name=max_age,json=maxAge,proto3" json:"max_age,omitempty"`
336	// After a response has been in the client cache for this amount of time
337	// and is re-requested, start an asynchronous RPC to re-validate it.
338	// This value should be less than max_age by at least the length of a
339	// typical RTT to the Route Lookup Service to fully mask the RTT latency.
340	// If omitted, keys are only re-requested after they have expired.
341	StaleAge *durationpb.Duration `protobuf:"bytes,6,opt,name=stale_age,json=staleAge,proto3" json:"stale_age,omitempty"`
342	// Rough indicator of amount of memory to use for the client cache.  Some of
343	// the data structure overhead is not accounted for, so actual memory consumed
344	// will be somewhat greater than this value.  If this field is omitted or set
345	// to zero, a client default will be used.  The value may be capped to a lower
346	// amount based on client configuration.
347	CacheSizeBytes int64 `protobuf:"varint,7,opt,name=cache_size_bytes,json=cacheSizeBytes,proto3" json:"cache_size_bytes,omitempty"`
348	// This is a list of all the possible targets that can be returned by the
349	// lookup service.  If a target not on this list is returned, it will be
350	// treated the same as an unhealthy target.
351	ValidTargets []string `protobuf:"bytes,8,rep,name=valid_targets,json=validTargets,proto3" json:"valid_targets,omitempty"`
352	// This value provides a default target to use if needed.  If set, it will be
353	// used if RLS returns an error, times out, or returns an invalid response.
354	// Note that requests can be routed only to a subdomain of the original
355	// target, e.g. "us_east_1.cloudbigtable.googleapis.com".
356	DefaultTarget string `protobuf:"bytes,9,opt,name=default_target,json=defaultTarget,proto3" json:"default_target,omitempty"`
357}
358
359func (x *RouteLookupConfig) Reset() {
360	*x = RouteLookupConfig{}
361	if protoimpl.UnsafeEnabled {
362		mi := &file_grpc_lookup_v1_rls_config_proto_msgTypes[3]
363		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
364		ms.StoreMessageInfo(mi)
365	}
366}
367
368func (x *RouteLookupConfig) String() string {
369	return protoimpl.X.MessageStringOf(x)
370}
371
372func (*RouteLookupConfig) ProtoMessage() {}
373
374func (x *RouteLookupConfig) ProtoReflect() protoreflect.Message {
375	mi := &file_grpc_lookup_v1_rls_config_proto_msgTypes[3]
376	if protoimpl.UnsafeEnabled && x != nil {
377		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
378		if ms.LoadMessageInfo() == nil {
379			ms.StoreMessageInfo(mi)
380		}
381		return ms
382	}
383	return mi.MessageOf(x)
384}
385
386// Deprecated: Use RouteLookupConfig.ProtoReflect.Descriptor instead.
387func (*RouteLookupConfig) Descriptor() ([]byte, []int) {
388	return file_grpc_lookup_v1_rls_config_proto_rawDescGZIP(), []int{3}
389}
390
391func (x *RouteLookupConfig) GetHttpKeybuilders() []*HttpKeyBuilder {
392	if x != nil {
393		return x.HttpKeybuilders
394	}
395	return nil
396}
397
398func (x *RouteLookupConfig) GetGrpcKeybuilders() []*GrpcKeyBuilder {
399	if x != nil {
400		return x.GrpcKeybuilders
401	}
402	return nil
403}
404
405func (x *RouteLookupConfig) GetLookupService() string {
406	if x != nil {
407		return x.LookupService
408	}
409	return ""
410}
411
412func (x *RouteLookupConfig) GetLookupServiceTimeout() *durationpb.Duration {
413	if x != nil {
414		return x.LookupServiceTimeout
415	}
416	return nil
417}
418
419func (x *RouteLookupConfig) GetMaxAge() *durationpb.Duration {
420	if x != nil {
421		return x.MaxAge
422	}
423	return nil
424}
425
426func (x *RouteLookupConfig) GetStaleAge() *durationpb.Duration {
427	if x != nil {
428		return x.StaleAge
429	}
430	return nil
431}
432
433func (x *RouteLookupConfig) GetCacheSizeBytes() int64 {
434	if x != nil {
435		return x.CacheSizeBytes
436	}
437	return 0
438}
439
440func (x *RouteLookupConfig) GetValidTargets() []string {
441	if x != nil {
442		return x.ValidTargets
443	}
444	return nil
445}
446
447func (x *RouteLookupConfig) GetDefaultTarget() string {
448	if x != nil {
449		return x.DefaultTarget
450	}
451	return ""
452}
453
454// To match, one of the given Name fields must match; the service and method
455// fields are specified as fixed strings.  The service name is required and
456// includes the proto package name.  The method name may be omitted, in
457// which case any method on the given service is matched.
458type GrpcKeyBuilder_Name struct {
459	state         protoimpl.MessageState
460	sizeCache     protoimpl.SizeCache
461	unknownFields protoimpl.UnknownFields
462
463	Service string `protobuf:"bytes,1,opt,name=service,proto3" json:"service,omitempty"`
464	Method  string `protobuf:"bytes,2,opt,name=method,proto3" json:"method,omitempty"`
465}
466
467func (x *GrpcKeyBuilder_Name) Reset() {
468	*x = GrpcKeyBuilder_Name{}
469	if protoimpl.UnsafeEnabled {
470		mi := &file_grpc_lookup_v1_rls_config_proto_msgTypes[4]
471		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
472		ms.StoreMessageInfo(mi)
473	}
474}
475
476func (x *GrpcKeyBuilder_Name) String() string {
477	return protoimpl.X.MessageStringOf(x)
478}
479
480func (*GrpcKeyBuilder_Name) ProtoMessage() {}
481
482func (x *GrpcKeyBuilder_Name) ProtoReflect() protoreflect.Message {
483	mi := &file_grpc_lookup_v1_rls_config_proto_msgTypes[4]
484	if protoimpl.UnsafeEnabled && x != nil {
485		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
486		if ms.LoadMessageInfo() == nil {
487			ms.StoreMessageInfo(mi)
488		}
489		return ms
490	}
491	return mi.MessageOf(x)
492}
493
494// Deprecated: Use GrpcKeyBuilder_Name.ProtoReflect.Descriptor instead.
495func (*GrpcKeyBuilder_Name) Descriptor() ([]byte, []int) {
496	return file_grpc_lookup_v1_rls_config_proto_rawDescGZIP(), []int{1, 0}
497}
498
499func (x *GrpcKeyBuilder_Name) GetService() string {
500	if x != nil {
501		return x.Service
502	}
503	return ""
504}
505
506func (x *GrpcKeyBuilder_Name) GetMethod() string {
507	if x != nil {
508		return x.Method
509	}
510	return ""
511}
512
513var File_grpc_lookup_v1_rls_config_proto protoreflect.FileDescriptor
514
515var file_grpc_lookup_v1_rls_config_proto_rawDesc = []byte{
516	0x0a, 0x1f, 0x67, 0x72, 0x70, 0x63, 0x2f, 0x6c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x2f, 0x76, 0x31,
517	0x2f, 0x72, 0x6c, 0x73, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x70, 0x72, 0x6f, 0x74,
518	0x6f, 0x12, 0x0e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x6c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x2e, 0x76,
519	0x31, 0x1a, 0x1e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62,
520	0x75, 0x66, 0x2f, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74,
521	0x6f, 0x22, 0x5c, 0x0a, 0x0b, 0x4e, 0x61, 0x6d, 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72,
522	0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b,
523	0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28,
524	0x09, 0x52, 0x05, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x25, 0x0a, 0x0e, 0x72, 0x65, 0x71, 0x75,
525	0x69, 0x72, 0x65, 0x64, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08,
526	0x52, 0x0d, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x22,
527	0xbc, 0x01, 0x0a, 0x0e, 0x47, 0x72, 0x70, 0x63, 0x4b, 0x65, 0x79, 0x42, 0x75, 0x69, 0x6c, 0x64,
528	0x65, 0x72, 0x12, 0x39, 0x0a, 0x05, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28,
529	0x0b, 0x32, 0x23, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x6c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x2e,
530	0x76, 0x31, 0x2e, 0x47, 0x72, 0x70, 0x63, 0x4b, 0x65, 0x79, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x65,
531	0x72, 0x2e, 0x4e, 0x61, 0x6d, 0x65, 0x52, 0x05, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x35, 0x0a,
532	0x07, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b,
533	0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x6c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x2e, 0x76, 0x31, 0x2e,
534	0x4e, 0x61, 0x6d, 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0x52, 0x07, 0x68, 0x65, 0x61,
535	0x64, 0x65, 0x72, 0x73, 0x1a, 0x38, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07,
536	0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x73,
537	0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64,
538	0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x22, 0xd9,
539	0x01, 0x0a, 0x0e, 0x48, 0x74, 0x74, 0x70, 0x4b, 0x65, 0x79, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x65,
540	0x72, 0x12, 0x23, 0x0a, 0x0d, 0x68, 0x6f, 0x73, 0x74, 0x5f, 0x70, 0x61, 0x74, 0x74, 0x65, 0x72,
541	0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0c, 0x68, 0x6f, 0x73, 0x74, 0x50, 0x61,
542	0x74, 0x74, 0x65, 0x72, 0x6e, 0x73, 0x12, 0x23, 0x0a, 0x0d, 0x70, 0x61, 0x74, 0x68, 0x5f, 0x70,
543	0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0c, 0x70,
544	0x61, 0x74, 0x68, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x73, 0x12, 0x46, 0x0a, 0x10, 0x71,
545	0x75, 0x65, 0x72, 0x79, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x18,
546	0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x6c, 0x6f, 0x6f,
547	0x6b, 0x75, 0x70, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x61, 0x6d, 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68,
548	0x65, 0x72, 0x52, 0x0f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74,
549	0x65, 0x72, 0x73, 0x12, 0x35, 0x0a, 0x07, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x18, 0x04,
550	0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x6c, 0x6f, 0x6f, 0x6b,
551	0x75, 0x70, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x61, 0x6d, 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x65,
552	0x72, 0x52, 0x07, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x22, 0xa6, 0x04, 0x0a, 0x11, 0x52,
553	0x6f, 0x75, 0x74, 0x65, 0x4c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67,
554	0x12, 0x49, 0x0a, 0x10, 0x68, 0x74, 0x74, 0x70, 0x5f, 0x6b, 0x65, 0x79, 0x62, 0x75, 0x69, 0x6c,
555	0x64, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x67, 0x72, 0x70,
556	0x63, 0x2e, 0x6c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x2e, 0x76, 0x31, 0x2e, 0x48, 0x74, 0x74, 0x70,
557	0x4b, 0x65, 0x79, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x65, 0x72, 0x52, 0x0f, 0x68, 0x74, 0x74, 0x70,
558	0x4b, 0x65, 0x79, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x65, 0x72, 0x73, 0x12, 0x49, 0x0a, 0x10, 0x67,
559	0x72, 0x70, 0x63, 0x5f, 0x6b, 0x65, 0x79, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x65, 0x72, 0x73, 0x18,
560	0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x6c, 0x6f, 0x6f,
561	0x6b, 0x75, 0x70, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x72, 0x70, 0x63, 0x4b, 0x65, 0x79, 0x42, 0x75,
562	0x69, 0x6c, 0x64, 0x65, 0x72, 0x52, 0x0f, 0x67, 0x72, 0x70, 0x63, 0x4b, 0x65, 0x79, 0x62, 0x75,
563	0x69, 0x6c, 0x64, 0x65, 0x72, 0x73, 0x12, 0x25, 0x0a, 0x0e, 0x6c, 0x6f, 0x6f, 0x6b, 0x75, 0x70,
564	0x5f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d,
565	0x6c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x4f, 0x0a,
566	0x16, 0x6c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f,
567	0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e,
568	0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e,
569	0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x14, 0x6c, 0x6f, 0x6f, 0x6b, 0x75, 0x70,
570	0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x12, 0x32,
571	0x0a, 0x07, 0x6d, 0x61, 0x78, 0x5f, 0x61, 0x67, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32,
572	0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75,
573	0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x06, 0x6d, 0x61, 0x78, 0x41,
574	0x67, 0x65, 0x12, 0x36, 0x0a, 0x09, 0x73, 0x74, 0x61, 0x6c, 0x65, 0x5f, 0x61, 0x67, 0x65, 0x18,
575	0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70,
576	0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e,
577	0x52, 0x08, 0x73, 0x74, 0x61, 0x6c, 0x65, 0x41, 0x67, 0x65, 0x12, 0x28, 0x0a, 0x10, 0x63, 0x61,
578	0x63, 0x68, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x07,
579	0x20, 0x01, 0x28, 0x03, 0x52, 0x0e, 0x63, 0x61, 0x63, 0x68, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x42,
580	0x79, 0x74, 0x65, 0x73, 0x12, 0x23, 0x0a, 0x0d, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x5f, 0x74, 0x61,
581	0x72, 0x67, 0x65, 0x74, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0c, 0x76, 0x61, 0x6c,
582	0x69, 0x64, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x73, 0x12, 0x25, 0x0a, 0x0e, 0x64, 0x65, 0x66,
583	0x61, 0x75, 0x6c, 0x74, 0x5f, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x18, 0x09, 0x20, 0x01, 0x28,
584	0x09, 0x52, 0x0d, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74,
585	0x4a, 0x04, 0x08, 0x0a, 0x10, 0x0b, 0x52, 0x1b, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f,
586	0x70, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x69, 0x6e, 0x67, 0x5f, 0x73, 0x74, 0x72, 0x61, 0x74,
587	0x65, 0x67, 0x79, 0x42, 0x53, 0x0a, 0x11, 0x69, 0x6f, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x6c,
588	0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x2e, 0x76, 0x31, 0x42, 0x0e, 0x52, 0x6c, 0x73, 0x43, 0x6f, 0x6e,
589	0x66, 0x69, 0x67, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x2c, 0x67, 0x6f, 0x6f, 0x67,
590	0x6c, 0x65, 0x2e, 0x67, 0x6f, 0x6c, 0x61, 0x6e, 0x67, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x67, 0x72,
591	0x70, 0x63, 0x2f, 0x6c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x2f, 0x67, 0x72, 0x70, 0x63, 0x5f, 0x6c,
592	0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x5f, 0x76, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
593}
594
595var (
596	file_grpc_lookup_v1_rls_config_proto_rawDescOnce sync.Once
597	file_grpc_lookup_v1_rls_config_proto_rawDescData = file_grpc_lookup_v1_rls_config_proto_rawDesc
598)
599
600func file_grpc_lookup_v1_rls_config_proto_rawDescGZIP() []byte {
601	file_grpc_lookup_v1_rls_config_proto_rawDescOnce.Do(func() {
602		file_grpc_lookup_v1_rls_config_proto_rawDescData = protoimpl.X.CompressGZIP(file_grpc_lookup_v1_rls_config_proto_rawDescData)
603	})
604	return file_grpc_lookup_v1_rls_config_proto_rawDescData
605}
606
607var file_grpc_lookup_v1_rls_config_proto_msgTypes = make([]protoimpl.MessageInfo, 5)
608var file_grpc_lookup_v1_rls_config_proto_goTypes = []interface{}{
609	(*NameMatcher)(nil),         // 0: grpc.lookup.v1.NameMatcher
610	(*GrpcKeyBuilder)(nil),      // 1: grpc.lookup.v1.GrpcKeyBuilder
611	(*HttpKeyBuilder)(nil),      // 2: grpc.lookup.v1.HttpKeyBuilder
612	(*RouteLookupConfig)(nil),   // 3: grpc.lookup.v1.RouteLookupConfig
613	(*GrpcKeyBuilder_Name)(nil), // 4: grpc.lookup.v1.GrpcKeyBuilder.Name
614	(*durationpb.Duration)(nil), // 5: google.protobuf.Duration
615}
616var file_grpc_lookup_v1_rls_config_proto_depIdxs = []int32{
617	4, // 0: grpc.lookup.v1.GrpcKeyBuilder.names:type_name -> grpc.lookup.v1.GrpcKeyBuilder.Name
618	0, // 1: grpc.lookup.v1.GrpcKeyBuilder.headers:type_name -> grpc.lookup.v1.NameMatcher
619	0, // 2: grpc.lookup.v1.HttpKeyBuilder.query_parameters:type_name -> grpc.lookup.v1.NameMatcher
620	0, // 3: grpc.lookup.v1.HttpKeyBuilder.headers:type_name -> grpc.lookup.v1.NameMatcher
621	2, // 4: grpc.lookup.v1.RouteLookupConfig.http_keybuilders:type_name -> grpc.lookup.v1.HttpKeyBuilder
622	1, // 5: grpc.lookup.v1.RouteLookupConfig.grpc_keybuilders:type_name -> grpc.lookup.v1.GrpcKeyBuilder
623	5, // 6: grpc.lookup.v1.RouteLookupConfig.lookup_service_timeout:type_name -> google.protobuf.Duration
624	5, // 7: grpc.lookup.v1.RouteLookupConfig.max_age:type_name -> google.protobuf.Duration
625	5, // 8: grpc.lookup.v1.RouteLookupConfig.stale_age:type_name -> google.protobuf.Duration
626	9, // [9:9] is the sub-list for method output_type
627	9, // [9:9] is the sub-list for method input_type
628	9, // [9:9] is the sub-list for extension type_name
629	9, // [9:9] is the sub-list for extension extendee
630	0, // [0:9] is the sub-list for field type_name
631}
632
633func init() { file_grpc_lookup_v1_rls_config_proto_init() }
634func file_grpc_lookup_v1_rls_config_proto_init() {
635	if File_grpc_lookup_v1_rls_config_proto != nil {
636		return
637	}
638	if !protoimpl.UnsafeEnabled {
639		file_grpc_lookup_v1_rls_config_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
640			switch v := v.(*NameMatcher); i {
641			case 0:
642				return &v.state
643			case 1:
644				return &v.sizeCache
645			case 2:
646				return &v.unknownFields
647			default:
648				return nil
649			}
650		}
651		file_grpc_lookup_v1_rls_config_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
652			switch v := v.(*GrpcKeyBuilder); i {
653			case 0:
654				return &v.state
655			case 1:
656				return &v.sizeCache
657			case 2:
658				return &v.unknownFields
659			default:
660				return nil
661			}
662		}
663		file_grpc_lookup_v1_rls_config_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
664			switch v := v.(*HttpKeyBuilder); i {
665			case 0:
666				return &v.state
667			case 1:
668				return &v.sizeCache
669			case 2:
670				return &v.unknownFields
671			default:
672				return nil
673			}
674		}
675		file_grpc_lookup_v1_rls_config_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
676			switch v := v.(*RouteLookupConfig); i {
677			case 0:
678				return &v.state
679			case 1:
680				return &v.sizeCache
681			case 2:
682				return &v.unknownFields
683			default:
684				return nil
685			}
686		}
687		file_grpc_lookup_v1_rls_config_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
688			switch v := v.(*GrpcKeyBuilder_Name); i {
689			case 0:
690				return &v.state
691			case 1:
692				return &v.sizeCache
693			case 2:
694				return &v.unknownFields
695			default:
696				return nil
697			}
698		}
699	}
700	type x struct{}
701	out := protoimpl.TypeBuilder{
702		File: protoimpl.DescBuilder{
703			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
704			RawDescriptor: file_grpc_lookup_v1_rls_config_proto_rawDesc,
705			NumEnums:      0,
706			NumMessages:   5,
707			NumExtensions: 0,
708			NumServices:   0,
709		},
710		GoTypes:           file_grpc_lookup_v1_rls_config_proto_goTypes,
711		DependencyIndexes: file_grpc_lookup_v1_rls_config_proto_depIdxs,
712		MessageInfos:      file_grpc_lookup_v1_rls_config_proto_msgTypes,
713	}.Build()
714	File_grpc_lookup_v1_rls_config_proto = out.File
715	file_grpc_lookup_v1_rls_config_proto_rawDesc = nil
716	file_grpc_lookup_v1_rls_config_proto_goTypes = nil
717	file_grpc_lookup_v1_rls_config_proto_depIdxs = nil
718}
719