From 1abdd2f69b4eb2c90f8325d6cddb58e77ef9cb05 Mon Sep 17 00:00:00 2001 From: Alejandro Pedraza Date: Wed, 23 Oct 2024 10:39:25 -0500 Subject: [PATCH 1/3] Add support for HTTP local rate limiting This adds an entry for `HttpLocalRateLimit` under `ProxyProtocol.Detect`, `ProxyProtocol.Http1` and `ProxyProtocol.Http2` leaving the door open to add analogous support for protocols besides HTTP later on. --- README.md | 2 +- go/destination/destination.pb.go | 2 +- go/destination/destination_grpc.pb.go | 2 +- go/grpc_route/grpc_route.pb.go | 2 +- go/http_route/http_route.pb.go | 2 +- go/http_types/http_types.pb.go | 2 +- go/identity/identity.pb.go | 2 +- go/identity/identity_grpc.pb.go | 2 +- go/inbound/inbound.pb.go | 878 +++++++++++++++++--------- go/inbound/inbound_grpc.pb.go | 2 +- go/meta/meta.pb.go | 2 +- go/net/net.pb.go | 2 +- go/outbound/outbound.pb.go | 2 +- go/outbound/outbound_grpc.pb.go | 2 +- go/tap/tap.pb.go | 2 +- go/tap/tap_grpc.pb.go | 2 +- go/tls_route/tls_route.pb.go | 2 +- proto/inbound.proto | 35 + src/gen/io.linkerd.proxy.inbound.rs | 49 ++ 19 files changed, 690 insertions(+), 304 deletions(-) diff --git a/README.md b/README.md index f6caca735..e1f9fab10 100644 --- a/README.md +++ b/README.md @@ -26,7 +26,7 @@ authenticed pod-to-pod communication. ### `inbound` The inbound API is used by the proxy to discover inbound serving -policies--especially per-port authorization requirements. +policies, i.e. per-port authorization requirements and rate-limiting poilcy. ### `tap` diff --git a/go/destination/destination.pb.go b/go/destination/destination.pb.go index d7fc1040f..fa1e6cde1 100644 --- a/go/destination/destination.pb.go +++ b/go/destination/destination.pb.go @@ -1,7 +1,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: // protoc-gen-go v1.35.1 -// protoc v3.12.4 +// protoc v3.20.3 // source: destination.proto package destination diff --git a/go/destination/destination_grpc.pb.go b/go/destination/destination_grpc.pb.go index 55a8c143f..7c3460ecc 100644 --- a/go/destination/destination_grpc.pb.go +++ b/go/destination/destination_grpc.pb.go @@ -1,7 +1,7 @@ // Code generated by protoc-gen-go-grpc. DO NOT EDIT. // versions: // - protoc-gen-go-grpc v1.5.1 -// - protoc v3.12.4 +// - protoc v3.20.3 // source: destination.proto package destination diff --git a/go/grpc_route/grpc_route.pb.go b/go/grpc_route/grpc_route.pb.go index 5989081d2..c65d30ed4 100644 --- a/go/grpc_route/grpc_route.pb.go +++ b/go/grpc_route/grpc_route.pb.go @@ -1,7 +1,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: // protoc-gen-go v1.35.1 -// protoc v3.12.4 +// protoc v3.20.3 // source: grpc_route.proto package grpc_route diff --git a/go/http_route/http_route.pb.go b/go/http_route/http_route.pb.go index 4455ea61e..8d38fd3e9 100644 --- a/go/http_route/http_route.pb.go +++ b/go/http_route/http_route.pb.go @@ -1,7 +1,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: // protoc-gen-go v1.35.1 -// protoc v3.12.4 +// protoc v3.20.3 // source: http_route.proto package http_route diff --git a/go/http_types/http_types.pb.go b/go/http_types/http_types.pb.go index f0529d2f6..85abcd149 100644 --- a/go/http_types/http_types.pb.go +++ b/go/http_types/http_types.pb.go @@ -1,7 +1,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: // protoc-gen-go v1.35.1 -// protoc v3.12.4 +// protoc v3.20.3 // source: http_types.proto package http_types diff --git a/go/identity/identity.pb.go b/go/identity/identity.pb.go index af376cc04..084116859 100644 --- a/go/identity/identity.pb.go +++ b/go/identity/identity.pb.go @@ -1,7 +1,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: // protoc-gen-go v1.35.1 -// protoc v3.12.4 +// protoc v3.20.3 // source: identity.proto package identity diff --git a/go/identity/identity_grpc.pb.go b/go/identity/identity_grpc.pb.go index 56994c1b1..dc4ade867 100644 --- a/go/identity/identity_grpc.pb.go +++ b/go/identity/identity_grpc.pb.go @@ -1,7 +1,7 @@ // Code generated by protoc-gen-go-grpc. DO NOT EDIT. // versions: // - protoc-gen-go-grpc v1.5.1 -// - protoc v3.12.4 +// - protoc v3.20.3 // source: identity.proto package identity diff --git a/go/inbound/inbound.pb.go b/go/inbound/inbound.pb.go index 74728ab03..97c34d4fd 100644 --- a/go/inbound/inbound.pb.go +++ b/go/inbound/inbound.pb.go @@ -1,7 +1,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: // protoc-gen-go v1.35.1 -// protoc v3.12.4 +// protoc v3.20.3 // source: inbound.proto package inbound @@ -757,6 +757,72 @@ func (x *GrpcRoute) GetRules() []*GrpcRoute_Rule { return nil } +type HttpLocalRateLimit struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Overall rate-limit, which all traffic coming to this server should abide + // to. If unset no overall limit is applied. + Total *HttpLocalRateLimit_Limit `protobuf:"bytes,1,opt,name=total,proto3" json:"total,omitempty"` + // Fairness for individual identities; each separate client, grouped by + // identity, will have this rate-limit. + Identity *HttpLocalRateLimit_Limit `protobuf:"bytes,2,opt,name=identity,proto3" json:"identity,omitempty"` + // Limit overrides for traffic from a specific client. + Overrides []*HttpLocalRateLimit_Override `protobuf:"bytes,3,rep,name=overrides,proto3" json:"overrides,omitempty"` +} + +func (x *HttpLocalRateLimit) Reset() { + *x = HttpLocalRateLimit{} + mi := &file_inbound_proto_msgTypes[10] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *HttpLocalRateLimit) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*HttpLocalRateLimit) ProtoMessage() {} + +func (x *HttpLocalRateLimit) ProtoReflect() protoreflect.Message { + mi := &file_inbound_proto_msgTypes[10] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use HttpLocalRateLimit.ProtoReflect.Descriptor instead. +func (*HttpLocalRateLimit) Descriptor() ([]byte, []int) { + return file_inbound_proto_rawDescGZIP(), []int{10} +} + +func (x *HttpLocalRateLimit) GetTotal() *HttpLocalRateLimit_Limit { + if x != nil { + return x.Total + } + return nil +} + +func (x *HttpLocalRateLimit) GetIdentity() *HttpLocalRateLimit_Limit { + if x != nil { + return x.Identity + } + return nil +} + +func (x *HttpLocalRateLimit) GetOverrides() []*HttpLocalRateLimit_Override { + if x != nil { + return x.Overrides + } + return nil +} + type ProxyProtocol_Detect struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -766,11 +832,13 @@ type ProxyProtocol_Detect struct { // If the protocol detected as HTTP, a list of HTTP routes that should be // matched. HttpRoutes []*HttpRoute `protobuf:"bytes,3,rep,name=http_routes,json=httpRoutes,proto3" json:"http_routes,omitempty"` + // If the protocol detected as HTTP, applicable rate limit. + HttpLocalRateLimit *HttpLocalRateLimit `protobuf:"bytes,4,opt,name=http_local_rate_limit,json=httpLocalRateLimit,proto3" json:"http_local_rate_limit,omitempty"` } func (x *ProxyProtocol_Detect) Reset() { *x = ProxyProtocol_Detect{} - mi := &file_inbound_proto_msgTypes[11] + mi := &file_inbound_proto_msgTypes[12] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -782,7 +850,7 @@ func (x *ProxyProtocol_Detect) String() string { func (*ProxyProtocol_Detect) ProtoMessage() {} func (x *ProxyProtocol_Detect) ProtoReflect() protoreflect.Message { - mi := &file_inbound_proto_msgTypes[11] + mi := &file_inbound_proto_msgTypes[12] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -812,17 +880,25 @@ func (x *ProxyProtocol_Detect) GetHttpRoutes() []*HttpRoute { return nil } +func (x *ProxyProtocol_Detect) GetHttpLocalRateLimit() *HttpLocalRateLimit { + if x != nil { + return x.HttpLocalRateLimit + } + return nil +} + type ProxyProtocol_Http1 struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Routes []*HttpRoute `protobuf:"bytes,2,rep,name=routes,proto3" json:"routes,omitempty"` + Routes []*HttpRoute `protobuf:"bytes,2,rep,name=routes,proto3" json:"routes,omitempty"` + LocalRateLimit *HttpLocalRateLimit `protobuf:"bytes,3,opt,name=local_rate_limit,json=localRateLimit,proto3" json:"local_rate_limit,omitempty"` } func (x *ProxyProtocol_Http1) Reset() { *x = ProxyProtocol_Http1{} - mi := &file_inbound_proto_msgTypes[12] + mi := &file_inbound_proto_msgTypes[13] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -834,7 +910,7 @@ func (x *ProxyProtocol_Http1) String() string { func (*ProxyProtocol_Http1) ProtoMessage() {} func (x *ProxyProtocol_Http1) ProtoReflect() protoreflect.Message { - mi := &file_inbound_proto_msgTypes[12] + mi := &file_inbound_proto_msgTypes[13] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -857,17 +933,25 @@ func (x *ProxyProtocol_Http1) GetRoutes() []*HttpRoute { return nil } +func (x *ProxyProtocol_Http1) GetLocalRateLimit() *HttpLocalRateLimit { + if x != nil { + return x.LocalRateLimit + } + return nil +} + type ProxyProtocol_Http2 struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Routes []*HttpRoute `protobuf:"bytes,2,rep,name=routes,proto3" json:"routes,omitempty"` + Routes []*HttpRoute `protobuf:"bytes,2,rep,name=routes,proto3" json:"routes,omitempty"` + LocalRateLimit *HttpLocalRateLimit `protobuf:"bytes,3,opt,name=local_rate_limit,json=localRateLimit,proto3" json:"local_rate_limit,omitempty"` } func (x *ProxyProtocol_Http2) Reset() { *x = ProxyProtocol_Http2{} - mi := &file_inbound_proto_msgTypes[13] + mi := &file_inbound_proto_msgTypes[14] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -879,7 +963,7 @@ func (x *ProxyProtocol_Http2) String() string { func (*ProxyProtocol_Http2) ProtoMessage() {} func (x *ProxyProtocol_Http2) ProtoReflect() protoreflect.Message { - mi := &file_inbound_proto_msgTypes[13] + mi := &file_inbound_proto_msgTypes[14] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -902,6 +986,13 @@ func (x *ProxyProtocol_Http2) GetRoutes() []*HttpRoute { return nil } +func (x *ProxyProtocol_Http2) GetLocalRateLimit() *HttpLocalRateLimit { + if x != nil { + return x.LocalRateLimit + } + return nil +} + type ProxyProtocol_Grpc struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -912,7 +1003,7 @@ type ProxyProtocol_Grpc struct { func (x *ProxyProtocol_Grpc) Reset() { *x = ProxyProtocol_Grpc{} - mi := &file_inbound_proto_msgTypes[14] + mi := &file_inbound_proto_msgTypes[15] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -924,7 +1015,7 @@ func (x *ProxyProtocol_Grpc) String() string { func (*ProxyProtocol_Grpc) ProtoMessage() {} func (x *ProxyProtocol_Grpc) ProtoReflect() protoreflect.Message { - mi := &file_inbound_proto_msgTypes[14] + mi := &file_inbound_proto_msgTypes[15] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -955,7 +1046,7 @@ type ProxyProtocol_Opaque struct { func (x *ProxyProtocol_Opaque) Reset() { *x = ProxyProtocol_Opaque{} - mi := &file_inbound_proto_msgTypes[15] + mi := &file_inbound_proto_msgTypes[16] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -967,7 +1058,7 @@ func (x *ProxyProtocol_Opaque) String() string { func (*ProxyProtocol_Opaque) ProtoMessage() {} func (x *ProxyProtocol_Opaque) ProtoReflect() protoreflect.Message { - mi := &file_inbound_proto_msgTypes[15] + mi := &file_inbound_proto_msgTypes[16] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -991,7 +1082,7 @@ type ProxyProtocol_Tls struct { func (x *ProxyProtocol_Tls) Reset() { *x = ProxyProtocol_Tls{} - mi := &file_inbound_proto_msgTypes[16] + mi := &file_inbound_proto_msgTypes[17] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1003,7 +1094,7 @@ func (x *ProxyProtocol_Tls) String() string { func (*ProxyProtocol_Tls) ProtoMessage() {} func (x *ProxyProtocol_Tls) ProtoReflect() protoreflect.Message { - mi := &file_inbound_proto_msgTypes[16] + mi := &file_inbound_proto_msgTypes[17] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1027,7 +1118,7 @@ type Authn_PermitUnauthenticated struct { func (x *Authn_PermitUnauthenticated) Reset() { *x = Authn_PermitUnauthenticated{} - mi := &file_inbound_proto_msgTypes[18] + mi := &file_inbound_proto_msgTypes[19] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1039,7 +1130,7 @@ func (x *Authn_PermitUnauthenticated) String() string { func (*Authn_PermitUnauthenticated) ProtoMessage() {} func (x *Authn_PermitUnauthenticated) ProtoReflect() protoreflect.Message { - mi := &file_inbound_proto_msgTypes[18] + mi := &file_inbound_proto_msgTypes[19] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1069,7 +1160,7 @@ type Authn_PermitMeshTLS struct { func (x *Authn_PermitMeshTLS) Reset() { *x = Authn_PermitMeshTLS{} - mi := &file_inbound_proto_msgTypes[19] + mi := &file_inbound_proto_msgTypes[20] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1081,7 +1172,7 @@ func (x *Authn_PermitMeshTLS) String() string { func (*Authn_PermitMeshTLS) ProtoMessage() {} func (x *Authn_PermitMeshTLS) ProtoReflect() protoreflect.Message { - mi := &file_inbound_proto_msgTypes[19] + mi := &file_inbound_proto_msgTypes[20] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1152,7 +1243,7 @@ type Authn_PermitMeshTLS_PermitClientIdentities struct { func (x *Authn_PermitMeshTLS_PermitClientIdentities) Reset() { *x = Authn_PermitMeshTLS_PermitClientIdentities{} - mi := &file_inbound_proto_msgTypes[20] + mi := &file_inbound_proto_msgTypes[21] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1164,7 +1255,7 @@ func (x *Authn_PermitMeshTLS_PermitClientIdentities) String() string { func (*Authn_PermitMeshTLS_PermitClientIdentities) ProtoMessage() {} func (x *Authn_PermitMeshTLS_PermitClientIdentities) ProtoReflect() protoreflect.Message { - mi := &file_inbound_proto_msgTypes[20] + mi := &file_inbound_proto_msgTypes[21] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1205,7 +1296,7 @@ type HttpRoute_Rule struct { func (x *HttpRoute_Rule) Reset() { *x = HttpRoute_Rule{} - mi := &file_inbound_proto_msgTypes[21] + mi := &file_inbound_proto_msgTypes[22] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1217,7 +1308,7 @@ func (x *HttpRoute_Rule) String() string { func (*HttpRoute_Rule) ProtoMessage() {} func (x *HttpRoute_Rule) ProtoReflect() protoreflect.Message { - mi := &file_inbound_proto_msgTypes[21] + mi := &file_inbound_proto_msgTypes[22] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1262,7 +1353,7 @@ type HttpRoute_Filter struct { func (x *HttpRoute_Filter) Reset() { *x = HttpRoute_Filter{} - mi := &file_inbound_proto_msgTypes[22] + mi := &file_inbound_proto_msgTypes[23] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1274,7 +1365,7 @@ func (x *HttpRoute_Filter) String() string { func (*HttpRoute_Filter) ProtoMessage() {} func (x *HttpRoute_Filter) ProtoReflect() protoreflect.Message { - mi := &file_inbound_proto_msgTypes[22] + mi := &file_inbound_proto_msgTypes[23] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1351,7 +1442,7 @@ type GrpcRoute_Rule struct { func (x *GrpcRoute_Rule) Reset() { *x = GrpcRoute_Rule{} - mi := &file_inbound_proto_msgTypes[23] + mi := &file_inbound_proto_msgTypes[24] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1363,7 +1454,7 @@ func (x *GrpcRoute_Rule) String() string { func (*GrpcRoute_Rule) ProtoMessage() {} func (x *GrpcRoute_Rule) ProtoReflect() protoreflect.Message { - mi := &file_inbound_proto_msgTypes[23] + mi := &file_inbound_proto_msgTypes[24] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1407,7 +1498,7 @@ type GrpcRoute_Filter struct { func (x *GrpcRoute_Filter) Reset() { *x = GrpcRoute_Filter{} - mi := &file_inbound_proto_msgTypes[24] + mi := &file_inbound_proto_msgTypes[25] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1419,7 +1510,7 @@ func (x *GrpcRoute_Filter) String() string { func (*GrpcRoute_Filter) ProtoMessage() {} func (x *GrpcRoute_Filter) ProtoReflect() protoreflect.Message { - mi := &file_inbound_proto_msgTypes[24] + mi := &file_inbound_proto_msgTypes[25] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1472,6 +1563,150 @@ func (*GrpcRoute_Filter_FailureInjector) isGrpcRoute_Filter_Kind() {} func (*GrpcRoute_Filter_RequestHeaderModifier) isGrpcRoute_Filter_Kind() {} +type HttpLocalRateLimit_Override struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Limit *HttpLocalRateLimit_Limit `protobuf:"bytes,1,opt,name=limit,proto3" json:"limit,omitempty"` + Clients *HttpLocalRateLimit_Override_ClientIdentities `protobuf:"bytes,2,opt,name=clients,proto3" json:"clients,omitempty"` +} + +func (x *HttpLocalRateLimit_Override) Reset() { + *x = HttpLocalRateLimit_Override{} + mi := &file_inbound_proto_msgTypes[26] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *HttpLocalRateLimit_Override) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*HttpLocalRateLimit_Override) ProtoMessage() {} + +func (x *HttpLocalRateLimit_Override) ProtoReflect() protoreflect.Message { + mi := &file_inbound_proto_msgTypes[26] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use HttpLocalRateLimit_Override.ProtoReflect.Descriptor instead. +func (*HttpLocalRateLimit_Override) Descriptor() ([]byte, []int) { + return file_inbound_proto_rawDescGZIP(), []int{10, 0} +} + +func (x *HttpLocalRateLimit_Override) GetLimit() *HttpLocalRateLimit_Limit { + if x != nil { + return x.Limit + } + return nil +} + +func (x *HttpLocalRateLimit_Override) GetClients() *HttpLocalRateLimit_Override_ClientIdentities { + if x != nil { + return x.Clients + } + return nil +} + +type HttpLocalRateLimit_Limit struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + RequestsPerSecond uint64 `protobuf:"varint,1,opt,name=requestsPerSecond,proto3" json:"requestsPerSecond,omitempty"` +} + +func (x *HttpLocalRateLimit_Limit) Reset() { + *x = HttpLocalRateLimit_Limit{} + mi := &file_inbound_proto_msgTypes[27] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *HttpLocalRateLimit_Limit) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*HttpLocalRateLimit_Limit) ProtoMessage() {} + +func (x *HttpLocalRateLimit_Limit) ProtoReflect() protoreflect.Message { + mi := &file_inbound_proto_msgTypes[27] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use HttpLocalRateLimit_Limit.ProtoReflect.Descriptor instead. +func (*HttpLocalRateLimit_Limit) Descriptor() ([]byte, []int) { + return file_inbound_proto_rawDescGZIP(), []int{10, 1} +} + +func (x *HttpLocalRateLimit_Limit) GetRequestsPerSecond() uint64 { + if x != nil { + return x.RequestsPerSecond + } + return 0 +} + +type HttpLocalRateLimit_Override_ClientIdentities struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // A list of literal identities. + Identities []*Identity `protobuf:"bytes,1,rep,name=identities,proto3" json:"identities,omitempty"` +} + +func (x *HttpLocalRateLimit_Override_ClientIdentities) Reset() { + *x = HttpLocalRateLimit_Override_ClientIdentities{} + mi := &file_inbound_proto_msgTypes[28] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *HttpLocalRateLimit_Override_ClientIdentities) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*HttpLocalRateLimit_Override_ClientIdentities) ProtoMessage() {} + +func (x *HttpLocalRateLimit_Override_ClientIdentities) ProtoReflect() protoreflect.Message { + mi := &file_inbound_proto_msgTypes[28] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use HttpLocalRateLimit_Override_ClientIdentities.ProtoReflect.Descriptor instead. +func (*HttpLocalRateLimit_Override_ClientIdentities) Descriptor() ([]byte, []int) { + return file_inbound_proto_rawDescGZIP(), []int{10, 0, 0} +} + +func (x *HttpLocalRateLimit_Override_ClientIdentities) GetIdentities() []*Identity { + if x != nil { + return x.Identities + } + return nil +} + var File_inbound_proto protoreflect.FileDescriptor var file_inbound_proto_rawDesc = []byte{ @@ -1508,7 +1743,7 @@ var file_inbound_proto_rawDesc = []byte{ 0x39, 0x0a, 0x0b, 0x4c, 0x61, 0x62, 0x65, 0x6c, 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, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xbe, 0x06, 0x0a, 0x0d, 0x50, + 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xd1, 0x08, 0x0a, 0x0d, 0x50, 0x72, 0x6f, 0x78, 0x79, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x12, 0x48, 0x0a, 0x06, 0x64, 0x65, 0x74, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x69, 0x6f, 0x2e, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x72, 0x64, 0x2e, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2e, @@ -1536,7 +1771,7 @@ var file_inbound_proto_rawDesc = []byte{ 0x69, 0x6f, 0x2e, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x72, 0x64, 0x2e, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2e, 0x69, 0x6e, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x2e, 0x50, 0x72, 0x6f, 0x78, 0x79, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x47, 0x72, 0x70, 0x63, 0x48, 0x00, 0x52, 0x04, 0x67, - 0x72, 0x70, 0x63, 0x1a, 0x89, 0x01, 0x0a, 0x06, 0x44, 0x65, 0x74, 0x65, 0x63, 0x74, 0x12, 0x33, + 0x72, 0x70, 0x63, 0x1a, 0xea, 0x01, 0x0a, 0x06, 0x44, 0x65, 0x74, 0x65, 0x63, 0x74, 0x12, 0x33, 0x0a, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, 0x01, 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, 0x07, 0x74, 0x69, 0x6d, 0x65, @@ -1544,196 +1779,250 @@ var file_inbound_proto_rawDesc = []byte{ 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x69, 0x6f, 0x2e, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x72, 0x64, 0x2e, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2e, 0x69, 0x6e, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x2e, 0x48, 0x74, 0x74, 0x70, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x52, 0x0a, 0x68, - 0x74, 0x74, 0x70, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x73, 0x4a, 0x04, 0x08, 0x02, 0x10, 0x03, 0x1a, - 0x4a, 0x0a, 0x05, 0x48, 0x74, 0x74, 0x70, 0x31, 0x12, 0x3b, 0x0a, 0x06, 0x72, 0x6f, 0x75, 0x74, - 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x69, 0x6f, 0x2e, 0x6c, 0x69, + 0x74, 0x74, 0x70, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x73, 0x12, 0x5f, 0x0a, 0x15, 0x68, 0x74, 0x74, + 0x70, 0x5f, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x5f, 0x72, 0x61, 0x74, 0x65, 0x5f, 0x6c, 0x69, 0x6d, + 0x69, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x69, 0x6f, 0x2e, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x72, 0x64, 0x2e, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2e, 0x69, 0x6e, 0x62, 0x6f, - 0x75, 0x6e, 0x64, 0x2e, 0x48, 0x74, 0x74, 0x70, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x52, 0x06, 0x72, - 0x6f, 0x75, 0x74, 0x65, 0x73, 0x4a, 0x04, 0x08, 0x01, 0x10, 0x02, 0x1a, 0x4a, 0x0a, 0x05, 0x48, - 0x74, 0x74, 0x70, 0x32, 0x12, 0x3b, 0x0a, 0x06, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x73, 0x18, 0x02, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x69, 0x6f, 0x2e, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x72, - 0x64, 0x2e, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2e, 0x69, 0x6e, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x2e, - 0x48, 0x74, 0x74, 0x70, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x52, 0x06, 0x72, 0x6f, 0x75, 0x74, 0x65, - 0x73, 0x4a, 0x04, 0x08, 0x01, 0x10, 0x02, 0x1a, 0x49, 0x0a, 0x04, 0x47, 0x72, 0x70, 0x63, 0x12, + 0x75, 0x6e, 0x64, 0x2e, 0x48, 0x74, 0x74, 0x70, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x52, 0x61, 0x74, + 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x52, 0x12, 0x68, 0x74, 0x74, 0x70, 0x4c, 0x6f, 0x63, 0x61, + 0x6c, 0x52, 0x61, 0x74, 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x4a, 0x04, 0x08, 0x02, 0x10, 0x03, + 0x1a, 0xa2, 0x01, 0x0a, 0x05, 0x48, 0x74, 0x74, 0x70, 0x31, 0x12, 0x3b, 0x0a, 0x06, 0x72, 0x6f, + 0x75, 0x74, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x69, 0x6f, 0x2e, + 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x72, 0x64, 0x2e, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2e, 0x69, 0x6e, + 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x2e, 0x48, 0x74, 0x74, 0x70, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x52, + 0x06, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x73, 0x12, 0x56, 0x0a, 0x10, 0x6c, 0x6f, 0x63, 0x61, 0x6c, + 0x5f, 0x72, 0x61, 0x74, 0x65, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x2c, 0x2e, 0x69, 0x6f, 0x2e, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x72, 0x64, 0x2e, 0x70, + 0x72, 0x6f, 0x78, 0x79, 0x2e, 0x69, 0x6e, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x2e, 0x48, 0x74, 0x74, + 0x70, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x52, 0x61, 0x74, 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x52, + 0x0e, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x52, 0x61, 0x74, 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x4a, + 0x04, 0x08, 0x01, 0x10, 0x02, 0x1a, 0xa2, 0x01, 0x0a, 0x05, 0x48, 0x74, 0x74, 0x70, 0x32, 0x12, 0x3b, 0x0a, 0x06, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x69, 0x6f, 0x2e, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x72, 0x64, 0x2e, 0x70, 0x72, 0x6f, - 0x78, 0x79, 0x2e, 0x69, 0x6e, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x2e, 0x47, 0x72, 0x70, 0x63, 0x52, - 0x6f, 0x75, 0x74, 0x65, 0x52, 0x06, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x73, 0x4a, 0x04, 0x08, 0x01, - 0x10, 0x02, 0x1a, 0x08, 0x0a, 0x06, 0x4f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x1a, 0x05, 0x0a, 0x03, - 0x54, 0x6c, 0x73, 0x42, 0x06, 0x0a, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x22, 0xcc, 0x02, 0x0a, 0x05, - 0x41, 0x75, 0x74, 0x68, 0x7a, 0x12, 0x3d, 0x0a, 0x08, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, - 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x69, 0x6f, 0x2e, 0x6c, 0x69, 0x6e, + 0x78, 0x79, 0x2e, 0x69, 0x6e, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x2e, 0x48, 0x74, 0x74, 0x70, 0x52, + 0x6f, 0x75, 0x74, 0x65, 0x52, 0x06, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x73, 0x12, 0x56, 0x0a, 0x10, + 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x5f, 0x72, 0x61, 0x74, 0x65, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x69, 0x6f, 0x2e, 0x6c, 0x69, 0x6e, 0x6b, + 0x65, 0x72, 0x64, 0x2e, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2e, 0x69, 0x6e, 0x62, 0x6f, 0x75, 0x6e, + 0x64, 0x2e, 0x48, 0x74, 0x74, 0x70, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x52, 0x61, 0x74, 0x65, 0x4c, + 0x69, 0x6d, 0x69, 0x74, 0x52, 0x0e, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x52, 0x61, 0x74, 0x65, 0x4c, + 0x69, 0x6d, 0x69, 0x74, 0x4a, 0x04, 0x08, 0x01, 0x10, 0x02, 0x1a, 0x49, 0x0a, 0x04, 0x47, 0x72, + 0x70, 0x63, 0x12, 0x3b, 0x0a, 0x06, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x69, 0x6f, 0x2e, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x72, 0x64, 0x2e, + 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2e, 0x69, 0x6e, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x2e, 0x47, 0x72, + 0x70, 0x63, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x52, 0x06, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x73, 0x4a, + 0x04, 0x08, 0x01, 0x10, 0x02, 0x1a, 0x08, 0x0a, 0x06, 0x4f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x1a, + 0x05, 0x0a, 0x03, 0x54, 0x6c, 0x73, 0x42, 0x06, 0x0a, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x22, 0xcc, + 0x02, 0x0a, 0x05, 0x41, 0x75, 0x74, 0x68, 0x7a, 0x12, 0x3d, 0x0a, 0x08, 0x6e, 0x65, 0x74, 0x77, + 0x6f, 0x72, 0x6b, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x69, 0x6f, 0x2e, + 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x72, 0x64, 0x2e, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2e, 0x69, 0x6e, + 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x2e, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x52, 0x08, 0x6e, + 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x12, 0x47, 0x0a, 0x0e, 0x61, 0x75, 0x74, 0x68, 0x65, + 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x1f, 0x2e, 0x69, 0x6f, 0x2e, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x72, 0x64, 0x2e, 0x70, 0x72, 0x6f, + 0x78, 0x79, 0x2e, 0x69, 0x6e, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x2e, 0x41, 0x75, 0x74, 0x68, 0x6e, + 0x52, 0x0e, 0x61, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x12, 0x43, 0x0a, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x2b, 0x2e, 0x69, 0x6f, 0x2e, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x72, 0x64, 0x2e, 0x70, 0x72, + 0x6f, 0x78, 0x79, 0x2e, 0x69, 0x6e, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x2e, 0x41, 0x75, 0x74, 0x68, + 0x7a, 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, 0x6c, + 0x61, 0x62, 0x65, 0x6c, 0x73, 0x12, 0x3b, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, + 0x61, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x69, 0x6f, 0x2e, 0x6c, 0x69, 0x6e, + 0x6b, 0x65, 0x72, 0x64, 0x2e, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2e, 0x6d, 0x65, 0x74, 0x61, 0x2e, + 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, + 0x74, 0x61, 0x1a, 0x39, 0x0a, 0x0b, 0x4c, 0x61, 0x62, 0x65, 0x6c, 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, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x75, 0x0a, + 0x07, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x12, 0x31, 0x0a, 0x03, 0x6e, 0x65, 0x74, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x69, 0x6f, 0x2e, 0x6c, 0x69, 0x6e, 0x6b, 0x65, + 0x72, 0x64, 0x2e, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2e, 0x6e, 0x65, 0x74, 0x2e, 0x49, 0x50, 0x4e, + 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x52, 0x03, 0x6e, 0x65, 0x74, 0x12, 0x37, 0x0a, 0x06, 0x65, + 0x78, 0x63, 0x65, 0x70, 0x74, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x69, 0x6f, + 0x2e, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x72, 0x64, 0x2e, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2e, 0x6e, + 0x65, 0x74, 0x2e, 0x49, 0x50, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x52, 0x06, 0x65, 0x78, + 0x63, 0x65, 0x70, 0x74, 0x22, 0xe5, 0x04, 0x0a, 0x05, 0x41, 0x75, 0x74, 0x68, 0x6e, 0x12, 0x61, + 0x0a, 0x0f, 0x75, 0x6e, 0x61, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, 0x65, + 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x69, 0x6f, 0x2e, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x72, 0x64, 0x2e, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2e, 0x69, 0x6e, 0x62, 0x6f, 0x75, - 0x6e, 0x64, 0x2e, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x52, 0x08, 0x6e, 0x65, 0x74, 0x77, - 0x6f, 0x72, 0x6b, 0x73, 0x12, 0x47, 0x0a, 0x0e, 0x61, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, - 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x69, - 0x6f, 0x2e, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x72, 0x64, 0x2e, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2e, - 0x69, 0x6e, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x2e, 0x41, 0x75, 0x74, 0x68, 0x6e, 0x52, 0x0e, 0x61, - 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x43, 0x0a, - 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2b, 0x2e, - 0x69, 0x6f, 0x2e, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x72, 0x64, 0x2e, 0x70, 0x72, 0x6f, 0x78, 0x79, - 0x2e, 0x69, 0x6e, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x2e, 0x41, 0x75, 0x74, 0x68, 0x7a, 0x2e, 0x4c, - 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, 0x6c, 0x61, 0x62, 0x65, - 0x6c, 0x73, 0x12, 0x3b, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x04, + 0x6e, 0x64, 0x2e, 0x41, 0x75, 0x74, 0x68, 0x6e, 0x2e, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x74, 0x55, + 0x6e, 0x61, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, 0x65, 0x64, 0x48, 0x00, + 0x52, 0x0f, 0x75, 0x6e, 0x61, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, 0x65, + 0x64, 0x12, 0x49, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x68, 0x54, 0x4c, 0x53, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x69, 0x6f, 0x2e, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x72, 0x64, 0x2e, + 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2e, 0x69, 0x6e, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x2e, 0x41, 0x75, + 0x74, 0x68, 0x6e, 0x2e, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x74, 0x4d, 0x65, 0x73, 0x68, 0x54, 0x4c, + 0x53, 0x48, 0x00, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x68, 0x54, 0x4c, 0x53, 0x1a, 0x17, 0x0a, 0x15, + 0x50, 0x65, 0x72, 0x6d, 0x69, 0x74, 0x55, 0x6e, 0x61, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, + 0x63, 0x61, 0x74, 0x65, 0x64, 0x1a, 0x8a, 0x03, 0x0a, 0x0d, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x74, + 0x4d, 0x65, 0x73, 0x68, 0x54, 0x4c, 0x53, 0x12, 0x61, 0x0a, 0x0f, 0x75, 0x6e, 0x61, 0x75, 0x74, + 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x35, 0x2e, 0x69, 0x6f, 0x2e, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x72, 0x64, 0x2e, 0x70, 0x72, + 0x6f, 0x78, 0x79, 0x2e, 0x69, 0x6e, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x2e, 0x41, 0x75, 0x74, 0x68, + 0x6e, 0x2e, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x74, 0x55, 0x6e, 0x61, 0x75, 0x74, 0x68, 0x65, 0x6e, + 0x74, 0x69, 0x63, 0x61, 0x74, 0x65, 0x64, 0x48, 0x00, 0x52, 0x0f, 0x75, 0x6e, 0x61, 0x75, 0x74, + 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, 0x65, 0x64, 0x12, 0x66, 0x0a, 0x0a, 0x69, 0x64, + 0x65, 0x6e, 0x74, 0x69, 0x74, 0x69, 0x65, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x44, + 0x2e, 0x69, 0x6f, 0x2e, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x72, 0x64, 0x2e, 0x70, 0x72, 0x6f, 0x78, + 0x79, 0x2e, 0x69, 0x6e, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x2e, 0x41, 0x75, 0x74, 0x68, 0x6e, 0x2e, + 0x50, 0x65, 0x72, 0x6d, 0x69, 0x74, 0x4d, 0x65, 0x73, 0x68, 0x54, 0x4c, 0x53, 0x2e, 0x50, 0x65, + 0x72, 0x6d, 0x69, 0x74, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, + 0x74, 0x69, 0x65, 0x73, 0x48, 0x00, 0x52, 0x0a, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x69, + 0x65, 0x73, 0x1a, 0xa2, 0x01, 0x0a, 0x16, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x74, 0x43, 0x6c, 0x69, + 0x65, 0x6e, 0x74, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x69, 0x65, 0x73, 0x12, 0x42, 0x0a, + 0x0a, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x69, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x22, 0x2e, 0x69, 0x6f, 0x2e, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x72, 0x64, 0x2e, 0x70, + 0x72, 0x6f, 0x78, 0x79, 0x2e, 0x69, 0x6e, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x2e, 0x49, 0x64, 0x65, + 0x6e, 0x74, 0x69, 0x74, 0x79, 0x52, 0x0a, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x69, 0x65, + 0x73, 0x12, 0x44, 0x0a, 0x08, 0x73, 0x75, 0x66, 0x66, 0x69, 0x78, 0x65, 0x73, 0x18, 0x02, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x69, 0x6f, 0x2e, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x72, 0x64, + 0x2e, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2e, 0x69, 0x6e, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x2e, 0x49, + 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x53, 0x75, 0x66, 0x66, 0x69, 0x78, 0x52, 0x08, 0x73, + 0x75, 0x66, 0x66, 0x69, 0x78, 0x65, 0x73, 0x42, 0x09, 0x0a, 0x07, 0x63, 0x6c, 0x69, 0x65, 0x6e, + 0x74, 0x73, 0x42, 0x08, 0x0a, 0x06, 0x70, 0x65, 0x72, 0x6d, 0x69, 0x74, 0x22, 0x1e, 0x0a, 0x08, + 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x26, 0x0a, 0x0e, + 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x53, 0x75, 0x66, 0x66, 0x69, 0x78, 0x12, 0x14, + 0x0a, 0x05, 0x70, 0x61, 0x72, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x05, 0x70, + 0x61, 0x72, 0x74, 0x73, 0x22, 0xd1, 0x05, 0x0a, 0x09, 0x48, 0x74, 0x74, 0x70, 0x52, 0x6f, 0x75, + 0x74, 0x65, 0x12, 0x3b, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x69, 0x6f, 0x2e, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x72, 0x64, 0x2e, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2e, 0x6d, 0x65, 0x74, 0x61, 0x2e, 0x4d, 0x65, 0x74, - 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x1a, - 0x39, 0x0a, 0x0b, 0x4c, 0x61, 0x62, 0x65, 0x6c, 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, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x75, 0x0a, 0x07, 0x4e, 0x65, - 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x12, 0x31, 0x0a, 0x03, 0x6e, 0x65, 0x74, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x69, 0x6f, 0x2e, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x72, 0x64, 0x2e, - 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2e, 0x6e, 0x65, 0x74, 0x2e, 0x49, 0x50, 0x4e, 0x65, 0x74, 0x77, - 0x6f, 0x72, 0x6b, 0x52, 0x03, 0x6e, 0x65, 0x74, 0x12, 0x37, 0x0a, 0x06, 0x65, 0x78, 0x63, 0x65, - 0x70, 0x74, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x69, 0x6f, 0x2e, 0x6c, 0x69, - 0x6e, 0x6b, 0x65, 0x72, 0x64, 0x2e, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2e, 0x6e, 0x65, 0x74, 0x2e, - 0x49, 0x50, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x52, 0x06, 0x65, 0x78, 0x63, 0x65, 0x70, - 0x74, 0x22, 0xe5, 0x04, 0x0a, 0x05, 0x41, 0x75, 0x74, 0x68, 0x6e, 0x12, 0x61, 0x0a, 0x0f, 0x75, - 0x6e, 0x61, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, 0x65, 0x64, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x69, 0x6f, 0x2e, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x72, - 0x64, 0x2e, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2e, 0x69, 0x6e, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x2e, - 0x41, 0x75, 0x74, 0x68, 0x6e, 0x2e, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x74, 0x55, 0x6e, 0x61, 0x75, - 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, 0x65, 0x64, 0x48, 0x00, 0x52, 0x0f, 0x75, - 0x6e, 0x61, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, 0x65, 0x64, 0x12, 0x49, - 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x68, 0x54, 0x4c, 0x53, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x2d, 0x2e, 0x69, 0x6f, 0x2e, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x72, 0x64, 0x2e, 0x70, 0x72, 0x6f, - 0x78, 0x79, 0x2e, 0x69, 0x6e, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x2e, 0x41, 0x75, 0x74, 0x68, 0x6e, - 0x2e, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x74, 0x4d, 0x65, 0x73, 0x68, 0x54, 0x4c, 0x53, 0x48, 0x00, - 0x52, 0x07, 0x6d, 0x65, 0x73, 0x68, 0x54, 0x4c, 0x53, 0x1a, 0x17, 0x0a, 0x15, 0x50, 0x65, 0x72, - 0x6d, 0x69, 0x74, 0x55, 0x6e, 0x61, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, - 0x65, 0x64, 0x1a, 0x8a, 0x03, 0x0a, 0x0d, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x74, 0x4d, 0x65, 0x73, - 0x68, 0x54, 0x4c, 0x53, 0x12, 0x61, 0x0a, 0x0f, 0x75, 0x6e, 0x61, 0x75, 0x74, 0x68, 0x65, 0x6e, - 0x74, 0x69, 0x63, 0x61, 0x74, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x35, 0x2e, - 0x69, 0x6f, 0x2e, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x72, 0x64, 0x2e, 0x70, 0x72, 0x6f, 0x78, 0x79, - 0x2e, 0x69, 0x6e, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x2e, 0x41, 0x75, 0x74, 0x68, 0x6e, 0x2e, 0x50, - 0x65, 0x72, 0x6d, 0x69, 0x74, 0x55, 0x6e, 0x61, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, - 0x61, 0x74, 0x65, 0x64, 0x48, 0x00, 0x52, 0x0f, 0x75, 0x6e, 0x61, 0x75, 0x74, 0x68, 0x65, 0x6e, - 0x74, 0x69, 0x63, 0x61, 0x74, 0x65, 0x64, 0x12, 0x66, 0x0a, 0x0a, 0x69, 0x64, 0x65, 0x6e, 0x74, - 0x69, 0x74, 0x69, 0x65, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x44, 0x2e, 0x69, 0x6f, - 0x2e, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x72, 0x64, 0x2e, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2e, 0x69, - 0x6e, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x2e, 0x41, 0x75, 0x74, 0x68, 0x6e, 0x2e, 0x50, 0x65, 0x72, - 0x6d, 0x69, 0x74, 0x4d, 0x65, 0x73, 0x68, 0x54, 0x4c, 0x53, 0x2e, 0x50, 0x65, 0x72, 0x6d, 0x69, - 0x74, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x69, 0x65, - 0x73, 0x48, 0x00, 0x52, 0x0a, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x69, 0x65, 0x73, 0x1a, - 0xa2, 0x01, 0x0a, 0x16, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x74, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, - 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x69, 0x65, 0x73, 0x12, 0x42, 0x0a, 0x0a, 0x69, 0x64, - 0x65, 0x6e, 0x74, 0x69, 0x74, 0x69, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, + 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, + 0x3c, 0x0a, 0x05, 0x68, 0x6f, 0x73, 0x74, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x69, 0x6f, 0x2e, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x72, 0x64, 0x2e, 0x70, 0x72, 0x6f, 0x78, - 0x79, 0x2e, 0x69, 0x6e, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x2e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, - 0x74, 0x79, 0x52, 0x0a, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x69, 0x65, 0x73, 0x12, 0x44, - 0x0a, 0x08, 0x73, 0x75, 0x66, 0x66, 0x69, 0x78, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x28, 0x2e, 0x69, 0x6f, 0x2e, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x72, 0x64, 0x2e, 0x70, 0x72, - 0x6f, 0x78, 0x79, 0x2e, 0x69, 0x6e, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x2e, 0x49, 0x64, 0x65, 0x6e, - 0x74, 0x69, 0x74, 0x79, 0x53, 0x75, 0x66, 0x66, 0x69, 0x78, 0x52, 0x08, 0x73, 0x75, 0x66, 0x66, - 0x69, 0x78, 0x65, 0x73, 0x42, 0x09, 0x0a, 0x07, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x73, 0x42, - 0x08, 0x0a, 0x06, 0x70, 0x65, 0x72, 0x6d, 0x69, 0x74, 0x22, 0x1e, 0x0a, 0x08, 0x49, 0x64, 0x65, - 0x6e, 0x74, 0x69, 0x74, 0x79, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x26, 0x0a, 0x0e, 0x49, 0x64, 0x65, - 0x6e, 0x74, 0x69, 0x74, 0x79, 0x53, 0x75, 0x66, 0x66, 0x69, 0x78, 0x12, 0x14, 0x0a, 0x05, 0x70, - 0x61, 0x72, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x05, 0x70, 0x61, 0x72, 0x74, - 0x73, 0x22, 0xd1, 0x05, 0x0a, 0x09, 0x48, 0x74, 0x74, 0x70, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x12, - 0x3b, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x1f, 0x2e, 0x69, 0x6f, 0x2e, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x72, 0x64, 0x2e, 0x70, - 0x72, 0x6f, 0x78, 0x79, 0x2e, 0x6d, 0x65, 0x74, 0x61, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, - 0x74, 0x61, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x3c, 0x0a, 0x05, - 0x68, 0x6f, 0x73, 0x74, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x69, 0x6f, + 0x79, 0x2e, 0x68, 0x74, 0x74, 0x70, 0x5f, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x2e, 0x48, 0x6f, 0x73, + 0x74, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x52, 0x05, 0x68, 0x6f, 0x73, 0x74, 0x73, 0x12, 0x47, 0x0a, + 0x0e, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, + 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x69, 0x6f, 0x2e, 0x6c, 0x69, 0x6e, 0x6b, 0x65, + 0x72, 0x64, 0x2e, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2e, 0x69, 0x6e, 0x62, 0x6f, 0x75, 0x6e, 0x64, + 0x2e, 0x41, 0x75, 0x74, 0x68, 0x7a, 0x52, 0x0e, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x3e, 0x0a, 0x05, 0x72, 0x75, 0x6c, 0x65, 0x73, 0x18, + 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x69, 0x6f, 0x2e, 0x6c, 0x69, 0x6e, 0x6b, 0x65, + 0x72, 0x64, 0x2e, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2e, 0x69, 0x6e, 0x62, 0x6f, 0x75, 0x6e, 0x64, + 0x2e, 0x48, 0x74, 0x74, 0x70, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x2e, 0x52, 0x75, 0x6c, 0x65, 0x52, + 0x05, 0x72, 0x75, 0x6c, 0x65, 0x73, 0x1a, 0x93, 0x01, 0x0a, 0x04, 0x52, 0x75, 0x6c, 0x65, 0x12, + 0x45, 0x0a, 0x07, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x2b, 0x2e, 0x69, 0x6f, 0x2e, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x72, 0x64, 0x2e, 0x70, 0x72, + 0x6f, 0x78, 0x79, 0x2e, 0x68, 0x74, 0x74, 0x70, 0x5f, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x2e, 0x48, + 0x74, 0x74, 0x70, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x52, 0x07, 0x6d, + 0x61, 0x74, 0x63, 0x68, 0x65, 0x73, 0x12, 0x44, 0x0a, 0x07, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, + 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x69, 0x6f, 0x2e, 0x6c, 0x69, 0x6e, + 0x6b, 0x65, 0x72, 0x64, 0x2e, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2e, 0x69, 0x6e, 0x62, 0x6f, 0x75, + 0x6e, 0x64, 0x2e, 0x48, 0x74, 0x74, 0x70, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x2e, 0x46, 0x69, 0x6c, + 0x74, 0x65, 0x72, 0x52, 0x07, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x1a, 0xa9, 0x02, 0x0a, + 0x06, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x5d, 0x0a, 0x10, 0x66, 0x61, 0x69, 0x6c, 0x75, + 0x72, 0x65, 0x5f, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x30, 0x2e, 0x69, 0x6f, 0x2e, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x72, 0x64, 0x2e, 0x70, + 0x72, 0x6f, 0x78, 0x79, 0x2e, 0x68, 0x74, 0x74, 0x70, 0x5f, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x2e, + 0x48, 0x74, 0x74, 0x70, 0x46, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x49, 0x6e, 0x6a, 0x65, 0x63, + 0x74, 0x6f, 0x72, 0x48, 0x00, 0x52, 0x0f, 0x66, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x49, 0x6e, + 0x6a, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x12, 0x6c, 0x0a, 0x17, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x5f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x5f, 0x6d, 0x6f, 0x64, 0x69, 0x66, 0x69, 0x65, + 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x69, 0x6f, 0x2e, 0x6c, 0x69, 0x6e, + 0x6b, 0x65, 0x72, 0x64, 0x2e, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2e, 0x68, 0x74, 0x74, 0x70, 0x5f, + 0x72, 0x6f, 0x75, 0x74, 0x65, 0x2e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x48, 0x65, 0x61, + 0x64, 0x65, 0x72, 0x4d, 0x6f, 0x64, 0x69, 0x66, 0x69, 0x65, 0x72, 0x48, 0x00, 0x52, 0x15, 0x72, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x4d, 0x6f, 0x64, 0x69, + 0x66, 0x69, 0x65, 0x72, 0x12, 0x4a, 0x0a, 0x08, 0x72, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x69, 0x6f, 0x2e, 0x6c, 0x69, 0x6e, 0x6b, + 0x65, 0x72, 0x64, 0x2e, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2e, 0x68, 0x74, 0x74, 0x70, 0x5f, 0x72, + 0x6f, 0x75, 0x74, 0x65, 0x2e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, 0x65, 0x64, 0x69, + 0x72, 0x65, 0x63, 0x74, 0x48, 0x00, 0x52, 0x08, 0x72, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, + 0x42, 0x06, 0x0a, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x22, 0x85, 0x05, 0x0a, 0x09, 0x47, 0x72, 0x70, + 0x63, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x12, 0x3b, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, + 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x69, 0x6f, 0x2e, 0x6c, 0x69, + 0x6e, 0x6b, 0x65, 0x72, 0x64, 0x2e, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2e, 0x6d, 0x65, 0x74, 0x61, + 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, + 0x61, 0x74, 0x61, 0x12, 0x3c, 0x0a, 0x05, 0x68, 0x6f, 0x73, 0x74, 0x73, 0x18, 0x02, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x69, 0x6f, 0x2e, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x72, 0x64, 0x2e, + 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2e, 0x68, 0x74, 0x74, 0x70, 0x5f, 0x72, 0x6f, 0x75, 0x74, 0x65, + 0x2e, 0x48, 0x6f, 0x73, 0x74, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x52, 0x05, 0x68, 0x6f, 0x73, 0x74, + 0x73, 0x12, 0x47, 0x0a, 0x0e, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x69, 0x6f, 0x2e, 0x6c, + 0x69, 0x6e, 0x6b, 0x65, 0x72, 0x64, 0x2e, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2e, 0x69, 0x6e, 0x62, + 0x6f, 0x75, 0x6e, 0x64, 0x2e, 0x41, 0x75, 0x74, 0x68, 0x7a, 0x52, 0x0e, 0x61, 0x75, 0x74, 0x68, + 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x3e, 0x0a, 0x05, 0x72, 0x75, + 0x6c, 0x65, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x69, 0x6f, 0x2e, 0x6c, + 0x69, 0x6e, 0x6b, 0x65, 0x72, 0x64, 0x2e, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2e, 0x69, 0x6e, 0x62, + 0x6f, 0x75, 0x6e, 0x64, 0x2e, 0x47, 0x72, 0x70, 0x63, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x2e, 0x52, + 0x75, 0x6c, 0x65, 0x52, 0x05, 0x72, 0x75, 0x6c, 0x65, 0x73, 0x1a, 0x93, 0x01, 0x0a, 0x04, 0x52, + 0x75, 0x6c, 0x65, 0x12, 0x45, 0x0a, 0x07, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x73, 0x18, 0x01, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x69, 0x6f, 0x2e, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x72, + 0x64, 0x2e, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x5f, 0x72, 0x6f, 0x75, + 0x74, 0x65, 0x2e, 0x47, 0x72, 0x70, 0x63, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x4d, 0x61, 0x74, 0x63, + 0x68, 0x52, 0x07, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x73, 0x12, 0x44, 0x0a, 0x07, 0x66, 0x69, + 0x6c, 0x74, 0x65, 0x72, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x69, 0x6f, + 0x2e, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x72, 0x64, 0x2e, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2e, 0x69, + 0x6e, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x2e, 0x47, 0x72, 0x70, 0x63, 0x52, 0x6f, 0x75, 0x74, 0x65, + 0x2e, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x52, 0x07, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, + 0x1a, 0xdd, 0x01, 0x0a, 0x06, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x5d, 0x0a, 0x10, 0x66, + 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x5f, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x69, 0x6f, 0x2e, 0x6c, 0x69, 0x6e, 0x6b, 0x65, + 0x72, 0x64, 0x2e, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x5f, 0x72, 0x6f, + 0x75, 0x74, 0x65, 0x2e, 0x47, 0x72, 0x70, 0x63, 0x46, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x49, + 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x48, 0x00, 0x52, 0x0f, 0x66, 0x61, 0x69, 0x6c, 0x75, + 0x72, 0x65, 0x49, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x12, 0x6c, 0x0a, 0x17, 0x72, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x5f, 0x6d, 0x6f, 0x64, + 0x69, 0x66, 0x69, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x69, 0x6f, 0x2e, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x72, 0x64, 0x2e, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2e, 0x68, - 0x74, 0x74, 0x70, 0x5f, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x2e, 0x48, 0x6f, 0x73, 0x74, 0x4d, 0x61, - 0x74, 0x63, 0x68, 0x52, 0x05, 0x68, 0x6f, 0x73, 0x74, 0x73, 0x12, 0x47, 0x0a, 0x0e, 0x61, 0x75, - 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x03, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x69, 0x6f, 0x2e, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x72, 0x64, 0x2e, - 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2e, 0x69, 0x6e, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x2e, 0x41, 0x75, - 0x74, 0x68, 0x7a, 0x52, 0x0e, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x73, 0x12, 0x3e, 0x0a, 0x05, 0x72, 0x75, 0x6c, 0x65, 0x73, 0x18, 0x04, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x69, 0x6f, 0x2e, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x72, 0x64, 0x2e, - 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2e, 0x69, 0x6e, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x2e, 0x48, 0x74, - 0x74, 0x70, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x2e, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x05, 0x72, 0x75, - 0x6c, 0x65, 0x73, 0x1a, 0x93, 0x01, 0x0a, 0x04, 0x52, 0x75, 0x6c, 0x65, 0x12, 0x45, 0x0a, 0x07, - 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2b, 0x2e, - 0x69, 0x6f, 0x2e, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x72, 0x64, 0x2e, 0x70, 0x72, 0x6f, 0x78, 0x79, - 0x2e, 0x68, 0x74, 0x74, 0x70, 0x5f, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x2e, 0x48, 0x74, 0x74, 0x70, - 0x52, 0x6f, 0x75, 0x74, 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x52, 0x07, 0x6d, 0x61, 0x74, 0x63, - 0x68, 0x65, 0x73, 0x12, 0x44, 0x0a, 0x07, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x18, 0x02, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x69, 0x6f, 0x2e, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x72, + 0x74, 0x74, 0x70, 0x5f, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x2e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x4d, 0x6f, 0x64, 0x69, 0x66, 0x69, 0x65, 0x72, 0x48, + 0x00, 0x52, 0x15, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, + 0x4d, 0x6f, 0x64, 0x69, 0x66, 0x69, 0x65, 0x72, 0x42, 0x06, 0x0a, 0x04, 0x6b, 0x69, 0x6e, 0x64, + 0x22, 0xcb, 0x04, 0x0a, 0x12, 0x48, 0x74, 0x74, 0x70, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x52, 0x61, + 0x74, 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x48, 0x0a, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x69, 0x6f, 0x2e, 0x6c, 0x69, 0x6e, 0x6b, + 0x65, 0x72, 0x64, 0x2e, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2e, 0x69, 0x6e, 0x62, 0x6f, 0x75, 0x6e, + 0x64, 0x2e, 0x48, 0x74, 0x74, 0x70, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x52, 0x61, 0x74, 0x65, 0x4c, + 0x69, 0x6d, 0x69, 0x74, 0x2e, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x52, 0x05, 0x74, 0x6f, 0x74, 0x61, + 0x6c, 0x12, 0x4e, 0x0a, 0x08, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x69, 0x6f, 0x2e, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x72, 0x64, + 0x2e, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2e, 0x69, 0x6e, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x2e, 0x48, + 0x74, 0x74, 0x70, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x52, 0x61, 0x74, 0x65, 0x4c, 0x69, 0x6d, 0x69, + 0x74, 0x2e, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x52, 0x08, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, + 0x79, 0x12, 0x53, 0x0a, 0x09, 0x6f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x73, 0x18, 0x03, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x69, 0x6f, 0x2e, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x72, 0x64, 0x2e, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2e, 0x69, 0x6e, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x2e, - 0x48, 0x74, 0x74, 0x70, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x2e, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, - 0x52, 0x07, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x1a, 0xa9, 0x02, 0x0a, 0x06, 0x46, 0x69, - 0x6c, 0x74, 0x65, 0x72, 0x12, 0x5d, 0x0a, 0x10, 0x66, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x5f, - 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x30, + 0x48, 0x74, 0x74, 0x70, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x52, 0x61, 0x74, 0x65, 0x4c, 0x69, 0x6d, + 0x69, 0x74, 0x2e, 0x4f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x52, 0x09, 0x6f, 0x76, 0x65, + 0x72, 0x72, 0x69, 0x64, 0x65, 0x73, 0x1a, 0x8e, 0x02, 0x0a, 0x08, 0x4f, 0x76, 0x65, 0x72, 0x72, + 0x69, 0x64, 0x65, 0x12, 0x48, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x69, 0x6f, 0x2e, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x72, 0x64, 0x2e, + 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2e, 0x69, 0x6e, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x2e, 0x48, 0x74, + 0x74, 0x70, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x52, 0x61, 0x74, 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, + 0x2e, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x60, 0x0a, + 0x07, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x46, 0x2e, 0x69, 0x6f, 0x2e, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x72, 0x64, 0x2e, 0x70, 0x72, 0x6f, 0x78, - 0x79, 0x2e, 0x68, 0x74, 0x74, 0x70, 0x5f, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x2e, 0x48, 0x74, 0x74, - 0x70, 0x46, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x49, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x6f, 0x72, - 0x48, 0x00, 0x52, 0x0f, 0x66, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x49, 0x6e, 0x6a, 0x65, 0x63, - 0x74, 0x6f, 0x72, 0x12, 0x6c, 0x0a, 0x17, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x68, - 0x65, 0x61, 0x64, 0x65, 0x72, 0x5f, 0x6d, 0x6f, 0x64, 0x69, 0x66, 0x69, 0x65, 0x72, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x69, 0x6f, 0x2e, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x72, - 0x64, 0x2e, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2e, 0x68, 0x74, 0x74, 0x70, 0x5f, 0x72, 0x6f, 0x75, - 0x74, 0x65, 0x2e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, - 0x4d, 0x6f, 0x64, 0x69, 0x66, 0x69, 0x65, 0x72, 0x48, 0x00, 0x52, 0x15, 0x72, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x4d, 0x6f, 0x64, 0x69, 0x66, 0x69, 0x65, - 0x72, 0x12, 0x4a, 0x0a, 0x08, 0x72, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x69, 0x6f, 0x2e, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x72, 0x64, - 0x2e, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2e, 0x68, 0x74, 0x74, 0x70, 0x5f, 0x72, 0x6f, 0x75, 0x74, - 0x65, 0x2e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, - 0x74, 0x48, 0x00, 0x52, 0x08, 0x72, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x42, 0x06, 0x0a, - 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x22, 0x85, 0x05, 0x0a, 0x09, 0x47, 0x72, 0x70, 0x63, 0x52, 0x6f, - 0x75, 0x74, 0x65, 0x12, 0x3b, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x69, 0x6f, 0x2e, 0x6c, 0x69, 0x6e, 0x6b, 0x65, - 0x72, 0x64, 0x2e, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2e, 0x6d, 0x65, 0x74, 0x61, 0x2e, 0x4d, 0x65, - 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, - 0x12, 0x3c, 0x0a, 0x05, 0x68, 0x6f, 0x73, 0x74, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x26, 0x2e, 0x69, 0x6f, 0x2e, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x72, 0x64, 0x2e, 0x70, 0x72, 0x6f, - 0x78, 0x79, 0x2e, 0x68, 0x74, 0x74, 0x70, 0x5f, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x2e, 0x48, 0x6f, - 0x73, 0x74, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x52, 0x05, 0x68, 0x6f, 0x73, 0x74, 0x73, 0x12, 0x47, - 0x0a, 0x0e, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x69, 0x6f, 0x2e, 0x6c, 0x69, 0x6e, 0x6b, - 0x65, 0x72, 0x64, 0x2e, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2e, 0x69, 0x6e, 0x62, 0x6f, 0x75, 0x6e, - 0x64, 0x2e, 0x41, 0x75, 0x74, 0x68, 0x7a, 0x52, 0x0e, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, - 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x3e, 0x0a, 0x05, 0x72, 0x75, 0x6c, 0x65, 0x73, - 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x69, 0x6f, 0x2e, 0x6c, 0x69, 0x6e, 0x6b, - 0x65, 0x72, 0x64, 0x2e, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2e, 0x69, 0x6e, 0x62, 0x6f, 0x75, 0x6e, - 0x64, 0x2e, 0x47, 0x72, 0x70, 0x63, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x2e, 0x52, 0x75, 0x6c, 0x65, - 0x52, 0x05, 0x72, 0x75, 0x6c, 0x65, 0x73, 0x1a, 0x93, 0x01, 0x0a, 0x04, 0x52, 0x75, 0x6c, 0x65, - 0x12, 0x45, 0x0a, 0x07, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x2b, 0x2e, 0x69, 0x6f, 0x2e, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x72, 0x64, 0x2e, 0x70, - 0x72, 0x6f, 0x78, 0x79, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x5f, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x2e, - 0x47, 0x72, 0x70, 0x63, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x52, 0x07, - 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x73, 0x12, 0x44, 0x0a, 0x07, 0x66, 0x69, 0x6c, 0x74, 0x65, - 0x72, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x69, 0x6f, 0x2e, 0x6c, 0x69, - 0x6e, 0x6b, 0x65, 0x72, 0x64, 0x2e, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2e, 0x69, 0x6e, 0x62, 0x6f, - 0x75, 0x6e, 0x64, 0x2e, 0x47, 0x72, 0x70, 0x63, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x2e, 0x46, 0x69, - 0x6c, 0x74, 0x65, 0x72, 0x52, 0x07, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x1a, 0xdd, 0x01, - 0x0a, 0x06, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x5d, 0x0a, 0x10, 0x66, 0x61, 0x69, 0x6c, - 0x75, 0x72, 0x65, 0x5f, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x69, 0x6f, 0x2e, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x72, 0x64, 0x2e, - 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x5f, 0x72, 0x6f, 0x75, 0x74, 0x65, - 0x2e, 0x47, 0x72, 0x70, 0x63, 0x46, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x49, 0x6e, 0x6a, 0x65, - 0x63, 0x74, 0x6f, 0x72, 0x48, 0x00, 0x52, 0x0f, 0x66, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x49, - 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x12, 0x6c, 0x0a, 0x17, 0x72, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x5f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x5f, 0x6d, 0x6f, 0x64, 0x69, 0x66, 0x69, - 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x69, 0x6f, 0x2e, 0x6c, 0x69, - 0x6e, 0x6b, 0x65, 0x72, 0x64, 0x2e, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2e, 0x68, 0x74, 0x74, 0x70, - 0x5f, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x2e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x48, 0x65, - 0x61, 0x64, 0x65, 0x72, 0x4d, 0x6f, 0x64, 0x69, 0x66, 0x69, 0x65, 0x72, 0x48, 0x00, 0x52, 0x15, - 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x4d, 0x6f, 0x64, - 0x69, 0x66, 0x69, 0x65, 0x72, 0x42, 0x06, 0x0a, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x32, 0xc1, 0x01, - 0x0a, 0x15, 0x49, 0x6e, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x50, - 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x12, 0x51, 0x0a, 0x07, 0x47, 0x65, 0x74, 0x50, 0x6f, - 0x72, 0x74, 0x12, 0x22, 0x2e, 0x69, 0x6f, 0x2e, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x72, 0x64, 0x2e, - 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2e, 0x69, 0x6e, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x2e, 0x50, 0x6f, - 0x72, 0x74, 0x53, 0x70, 0x65, 0x63, 0x1a, 0x20, 0x2e, 0x69, 0x6f, 0x2e, 0x6c, 0x69, 0x6e, 0x6b, - 0x65, 0x72, 0x64, 0x2e, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2e, 0x69, 0x6e, 0x62, 0x6f, 0x75, 0x6e, - 0x64, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x22, 0x00, 0x12, 0x55, 0x0a, 0x09, 0x57, 0x61, - 0x74, 0x63, 0x68, 0x50, 0x6f, 0x72, 0x74, 0x12, 0x22, 0x2e, 0x69, 0x6f, 0x2e, 0x6c, 0x69, 0x6e, + 0x79, 0x2e, 0x69, 0x6e, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x2e, 0x48, 0x74, 0x74, 0x70, 0x4c, 0x6f, + 0x63, 0x61, 0x6c, 0x52, 0x61, 0x74, 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x2e, 0x4f, 0x76, 0x65, + 0x72, 0x72, 0x69, 0x64, 0x65, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x65, 0x6e, + 0x74, 0x69, 0x74, 0x69, 0x65, 0x73, 0x52, 0x07, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x73, 0x1a, + 0x56, 0x0a, 0x10, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, + 0x69, 0x65, 0x73, 0x12, 0x42, 0x0a, 0x0a, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x69, 0x65, + 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x69, 0x6f, 0x2e, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x72, 0x64, 0x2e, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2e, 0x69, 0x6e, 0x62, 0x6f, 0x75, - 0x6e, 0x64, 0x2e, 0x50, 0x6f, 0x72, 0x74, 0x53, 0x70, 0x65, 0x63, 0x1a, 0x20, 0x2e, 0x69, 0x6f, - 0x2e, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x72, 0x64, 0x2e, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2e, 0x69, - 0x6e, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x22, 0x00, 0x30, - 0x01, 0x42, 0x32, 0x5a, 0x30, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, - 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x72, 0x64, 0x2f, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x72, 0x64, 0x32, - 0x2d, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2d, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6f, 0x2f, 0x69, 0x6e, - 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x6e, 0x64, 0x2e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x52, 0x0a, 0x69, 0x64, 0x65, + 0x6e, 0x74, 0x69, 0x74, 0x69, 0x65, 0x73, 0x1a, 0x35, 0x0a, 0x05, 0x4c, 0x69, 0x6d, 0x69, 0x74, + 0x12, 0x2c, 0x0a, 0x11, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x73, 0x50, 0x65, 0x72, 0x53, + 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x11, 0x72, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x73, 0x50, 0x65, 0x72, 0x53, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x32, 0xc1, + 0x01, 0x0a, 0x15, 0x49, 0x6e, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, + 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x12, 0x51, 0x0a, 0x07, 0x47, 0x65, 0x74, 0x50, + 0x6f, 0x72, 0x74, 0x12, 0x22, 0x2e, 0x69, 0x6f, 0x2e, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x72, 0x64, + 0x2e, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2e, 0x69, 0x6e, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x2e, 0x50, + 0x6f, 0x72, 0x74, 0x53, 0x70, 0x65, 0x63, 0x1a, 0x20, 0x2e, 0x69, 0x6f, 0x2e, 0x6c, 0x69, 0x6e, + 0x6b, 0x65, 0x72, 0x64, 0x2e, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2e, 0x69, 0x6e, 0x62, 0x6f, 0x75, + 0x6e, 0x64, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x22, 0x00, 0x12, 0x55, 0x0a, 0x09, 0x57, + 0x61, 0x74, 0x63, 0x68, 0x50, 0x6f, 0x72, 0x74, 0x12, 0x22, 0x2e, 0x69, 0x6f, 0x2e, 0x6c, 0x69, + 0x6e, 0x6b, 0x65, 0x72, 0x64, 0x2e, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2e, 0x69, 0x6e, 0x62, 0x6f, + 0x75, 0x6e, 0x64, 0x2e, 0x50, 0x6f, 0x72, 0x74, 0x53, 0x70, 0x65, 0x63, 0x1a, 0x20, 0x2e, 0x69, + 0x6f, 0x2e, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x72, 0x64, 0x2e, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2e, + 0x69, 0x6e, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x22, 0x00, + 0x30, 0x01, 0x42, 0x32, 0x5a, 0x30, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, + 0x2f, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x72, 0x64, 0x2f, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x72, 0x64, + 0x32, 0x2d, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2d, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6f, 0x2f, 0x69, + 0x6e, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -1748,7 +2037,7 @@ func file_inbound_proto_rawDescGZIP() []byte { return file_inbound_proto_rawDescData } -var file_inbound_proto_msgTypes = make([]protoimpl.MessageInfo, 25) +var file_inbound_proto_msgTypes = make([]protoimpl.MessageInfo, 29) var file_inbound_proto_goTypes = []any{ (*PortSpec)(nil), // 0: io.linkerd.proxy.inbound.PortSpec (*Server)(nil), // 1: io.linkerd.proxy.inbound.Server @@ -1760,87 +2049,100 @@ var file_inbound_proto_goTypes = []any{ (*IdentitySuffix)(nil), // 7: io.linkerd.proxy.inbound.IdentitySuffix (*HttpRoute)(nil), // 8: io.linkerd.proxy.inbound.HttpRoute (*GrpcRoute)(nil), // 9: io.linkerd.proxy.inbound.GrpcRoute - nil, // 10: io.linkerd.proxy.inbound.Server.LabelsEntry - (*ProxyProtocol_Detect)(nil), // 11: io.linkerd.proxy.inbound.ProxyProtocol.Detect - (*ProxyProtocol_Http1)(nil), // 12: io.linkerd.proxy.inbound.ProxyProtocol.Http1 - (*ProxyProtocol_Http2)(nil), // 13: io.linkerd.proxy.inbound.ProxyProtocol.Http2 - (*ProxyProtocol_Grpc)(nil), // 14: io.linkerd.proxy.inbound.ProxyProtocol.Grpc - (*ProxyProtocol_Opaque)(nil), // 15: io.linkerd.proxy.inbound.ProxyProtocol.Opaque - (*ProxyProtocol_Tls)(nil), // 16: io.linkerd.proxy.inbound.ProxyProtocol.Tls - nil, // 17: io.linkerd.proxy.inbound.Authz.LabelsEntry - (*Authn_PermitUnauthenticated)(nil), // 18: io.linkerd.proxy.inbound.Authn.PermitUnauthenticated - (*Authn_PermitMeshTLS)(nil), // 19: io.linkerd.proxy.inbound.Authn.PermitMeshTLS - (*Authn_PermitMeshTLS_PermitClientIdentities)(nil), // 20: io.linkerd.proxy.inbound.Authn.PermitMeshTLS.PermitClientIdentities - (*HttpRoute_Rule)(nil), // 21: io.linkerd.proxy.inbound.HttpRoute.Rule - (*HttpRoute_Filter)(nil), // 22: io.linkerd.proxy.inbound.HttpRoute.Filter - (*GrpcRoute_Rule)(nil), // 23: io.linkerd.proxy.inbound.GrpcRoute.Rule - (*GrpcRoute_Filter)(nil), // 24: io.linkerd.proxy.inbound.GrpcRoute.Filter - (*net.IPAddress)(nil), // 25: io.linkerd.proxy.net.IPAddress - (*meta.Metadata)(nil), // 26: io.linkerd.proxy.meta.Metadata - (*net.IPNetwork)(nil), // 27: io.linkerd.proxy.net.IPNetwork - (*http_route.HostMatch)(nil), // 28: io.linkerd.proxy.http_route.HostMatch - (*duration.Duration)(nil), // 29: google.protobuf.Duration - (*http_route.HttpRouteMatch)(nil), // 30: io.linkerd.proxy.http_route.HttpRouteMatch - (*http_route.HttpFailureInjector)(nil), // 31: io.linkerd.proxy.http_route.HttpFailureInjector - (*http_route.RequestHeaderModifier)(nil), // 32: io.linkerd.proxy.http_route.RequestHeaderModifier - (*http_route.RequestRedirect)(nil), // 33: io.linkerd.proxy.http_route.RequestRedirect - (*grpc_route.GrpcRouteMatch)(nil), // 34: io.linkerd.proxy.grpc_route.GrpcRouteMatch - (*grpc_route.GrpcFailureInjector)(nil), // 35: io.linkerd.proxy.grpc_route.GrpcFailureInjector + (*HttpLocalRateLimit)(nil), // 10: io.linkerd.proxy.inbound.HttpLocalRateLimit + nil, // 11: io.linkerd.proxy.inbound.Server.LabelsEntry + (*ProxyProtocol_Detect)(nil), // 12: io.linkerd.proxy.inbound.ProxyProtocol.Detect + (*ProxyProtocol_Http1)(nil), // 13: io.linkerd.proxy.inbound.ProxyProtocol.Http1 + (*ProxyProtocol_Http2)(nil), // 14: io.linkerd.proxy.inbound.ProxyProtocol.Http2 + (*ProxyProtocol_Grpc)(nil), // 15: io.linkerd.proxy.inbound.ProxyProtocol.Grpc + (*ProxyProtocol_Opaque)(nil), // 16: io.linkerd.proxy.inbound.ProxyProtocol.Opaque + (*ProxyProtocol_Tls)(nil), // 17: io.linkerd.proxy.inbound.ProxyProtocol.Tls + nil, // 18: io.linkerd.proxy.inbound.Authz.LabelsEntry + (*Authn_PermitUnauthenticated)(nil), // 19: io.linkerd.proxy.inbound.Authn.PermitUnauthenticated + (*Authn_PermitMeshTLS)(nil), // 20: io.linkerd.proxy.inbound.Authn.PermitMeshTLS + (*Authn_PermitMeshTLS_PermitClientIdentities)(nil), // 21: io.linkerd.proxy.inbound.Authn.PermitMeshTLS.PermitClientIdentities + (*HttpRoute_Rule)(nil), // 22: io.linkerd.proxy.inbound.HttpRoute.Rule + (*HttpRoute_Filter)(nil), // 23: io.linkerd.proxy.inbound.HttpRoute.Filter + (*GrpcRoute_Rule)(nil), // 24: io.linkerd.proxy.inbound.GrpcRoute.Rule + (*GrpcRoute_Filter)(nil), // 25: io.linkerd.proxy.inbound.GrpcRoute.Filter + (*HttpLocalRateLimit_Override)(nil), // 26: io.linkerd.proxy.inbound.HttpLocalRateLimit.Override + (*HttpLocalRateLimit_Limit)(nil), // 27: io.linkerd.proxy.inbound.HttpLocalRateLimit.Limit + (*HttpLocalRateLimit_Override_ClientIdentities)(nil), // 28: io.linkerd.proxy.inbound.HttpLocalRateLimit.Override.ClientIdentities + (*net.IPAddress)(nil), // 29: io.linkerd.proxy.net.IPAddress + (*meta.Metadata)(nil), // 30: io.linkerd.proxy.meta.Metadata + (*net.IPNetwork)(nil), // 31: io.linkerd.proxy.net.IPNetwork + (*http_route.HostMatch)(nil), // 32: io.linkerd.proxy.http_route.HostMatch + (*duration.Duration)(nil), // 33: google.protobuf.Duration + (*http_route.HttpRouteMatch)(nil), // 34: io.linkerd.proxy.http_route.HttpRouteMatch + (*http_route.HttpFailureInjector)(nil), // 35: io.linkerd.proxy.http_route.HttpFailureInjector + (*http_route.RequestHeaderModifier)(nil), // 36: io.linkerd.proxy.http_route.RequestHeaderModifier + (*http_route.RequestRedirect)(nil), // 37: io.linkerd.proxy.http_route.RequestRedirect + (*grpc_route.GrpcRouteMatch)(nil), // 38: io.linkerd.proxy.grpc_route.GrpcRouteMatch + (*grpc_route.GrpcFailureInjector)(nil), // 39: io.linkerd.proxy.grpc_route.GrpcFailureInjector } var file_inbound_proto_depIdxs = []int32{ 2, // 0: io.linkerd.proxy.inbound.Server.protocol:type_name -> io.linkerd.proxy.inbound.ProxyProtocol - 25, // 1: io.linkerd.proxy.inbound.Server.server_ips:type_name -> io.linkerd.proxy.net.IPAddress + 29, // 1: io.linkerd.proxy.inbound.Server.server_ips:type_name -> io.linkerd.proxy.net.IPAddress 3, // 2: io.linkerd.proxy.inbound.Server.authorizations:type_name -> io.linkerd.proxy.inbound.Authz - 10, // 3: io.linkerd.proxy.inbound.Server.labels:type_name -> io.linkerd.proxy.inbound.Server.LabelsEntry - 11, // 4: io.linkerd.proxy.inbound.ProxyProtocol.detect:type_name -> io.linkerd.proxy.inbound.ProxyProtocol.Detect - 15, // 5: io.linkerd.proxy.inbound.ProxyProtocol.opaque:type_name -> io.linkerd.proxy.inbound.ProxyProtocol.Opaque - 16, // 6: io.linkerd.proxy.inbound.ProxyProtocol.tls:type_name -> io.linkerd.proxy.inbound.ProxyProtocol.Tls - 12, // 7: io.linkerd.proxy.inbound.ProxyProtocol.http1:type_name -> io.linkerd.proxy.inbound.ProxyProtocol.Http1 - 13, // 8: io.linkerd.proxy.inbound.ProxyProtocol.http2:type_name -> io.linkerd.proxy.inbound.ProxyProtocol.Http2 - 14, // 9: io.linkerd.proxy.inbound.ProxyProtocol.grpc:type_name -> io.linkerd.proxy.inbound.ProxyProtocol.Grpc + 11, // 3: io.linkerd.proxy.inbound.Server.labels:type_name -> io.linkerd.proxy.inbound.Server.LabelsEntry + 12, // 4: io.linkerd.proxy.inbound.ProxyProtocol.detect:type_name -> io.linkerd.proxy.inbound.ProxyProtocol.Detect + 16, // 5: io.linkerd.proxy.inbound.ProxyProtocol.opaque:type_name -> io.linkerd.proxy.inbound.ProxyProtocol.Opaque + 17, // 6: io.linkerd.proxy.inbound.ProxyProtocol.tls:type_name -> io.linkerd.proxy.inbound.ProxyProtocol.Tls + 13, // 7: io.linkerd.proxy.inbound.ProxyProtocol.http1:type_name -> io.linkerd.proxy.inbound.ProxyProtocol.Http1 + 14, // 8: io.linkerd.proxy.inbound.ProxyProtocol.http2:type_name -> io.linkerd.proxy.inbound.ProxyProtocol.Http2 + 15, // 9: io.linkerd.proxy.inbound.ProxyProtocol.grpc:type_name -> io.linkerd.proxy.inbound.ProxyProtocol.Grpc 4, // 10: io.linkerd.proxy.inbound.Authz.networks:type_name -> io.linkerd.proxy.inbound.Network 5, // 11: io.linkerd.proxy.inbound.Authz.authentication:type_name -> io.linkerd.proxy.inbound.Authn - 17, // 12: io.linkerd.proxy.inbound.Authz.labels:type_name -> io.linkerd.proxy.inbound.Authz.LabelsEntry - 26, // 13: io.linkerd.proxy.inbound.Authz.metadata:type_name -> io.linkerd.proxy.meta.Metadata - 27, // 14: io.linkerd.proxy.inbound.Network.net:type_name -> io.linkerd.proxy.net.IPNetwork - 27, // 15: io.linkerd.proxy.inbound.Network.except:type_name -> io.linkerd.proxy.net.IPNetwork - 18, // 16: io.linkerd.proxy.inbound.Authn.unauthenticated:type_name -> io.linkerd.proxy.inbound.Authn.PermitUnauthenticated - 19, // 17: io.linkerd.proxy.inbound.Authn.meshTLS:type_name -> io.linkerd.proxy.inbound.Authn.PermitMeshTLS - 26, // 18: io.linkerd.proxy.inbound.HttpRoute.metadata:type_name -> io.linkerd.proxy.meta.Metadata - 28, // 19: io.linkerd.proxy.inbound.HttpRoute.hosts:type_name -> io.linkerd.proxy.http_route.HostMatch + 18, // 12: io.linkerd.proxy.inbound.Authz.labels:type_name -> io.linkerd.proxy.inbound.Authz.LabelsEntry + 30, // 13: io.linkerd.proxy.inbound.Authz.metadata:type_name -> io.linkerd.proxy.meta.Metadata + 31, // 14: io.linkerd.proxy.inbound.Network.net:type_name -> io.linkerd.proxy.net.IPNetwork + 31, // 15: io.linkerd.proxy.inbound.Network.except:type_name -> io.linkerd.proxy.net.IPNetwork + 19, // 16: io.linkerd.proxy.inbound.Authn.unauthenticated:type_name -> io.linkerd.proxy.inbound.Authn.PermitUnauthenticated + 20, // 17: io.linkerd.proxy.inbound.Authn.meshTLS:type_name -> io.linkerd.proxy.inbound.Authn.PermitMeshTLS + 30, // 18: io.linkerd.proxy.inbound.HttpRoute.metadata:type_name -> io.linkerd.proxy.meta.Metadata + 32, // 19: io.linkerd.proxy.inbound.HttpRoute.hosts:type_name -> io.linkerd.proxy.http_route.HostMatch 3, // 20: io.linkerd.proxy.inbound.HttpRoute.authorizations:type_name -> io.linkerd.proxy.inbound.Authz - 21, // 21: io.linkerd.proxy.inbound.HttpRoute.rules:type_name -> io.linkerd.proxy.inbound.HttpRoute.Rule - 26, // 22: io.linkerd.proxy.inbound.GrpcRoute.metadata:type_name -> io.linkerd.proxy.meta.Metadata - 28, // 23: io.linkerd.proxy.inbound.GrpcRoute.hosts:type_name -> io.linkerd.proxy.http_route.HostMatch + 22, // 21: io.linkerd.proxy.inbound.HttpRoute.rules:type_name -> io.linkerd.proxy.inbound.HttpRoute.Rule + 30, // 22: io.linkerd.proxy.inbound.GrpcRoute.metadata:type_name -> io.linkerd.proxy.meta.Metadata + 32, // 23: io.linkerd.proxy.inbound.GrpcRoute.hosts:type_name -> io.linkerd.proxy.http_route.HostMatch 3, // 24: io.linkerd.proxy.inbound.GrpcRoute.authorizations:type_name -> io.linkerd.proxy.inbound.Authz - 23, // 25: io.linkerd.proxy.inbound.GrpcRoute.rules:type_name -> io.linkerd.proxy.inbound.GrpcRoute.Rule - 29, // 26: io.linkerd.proxy.inbound.ProxyProtocol.Detect.timeout:type_name -> google.protobuf.Duration - 8, // 27: io.linkerd.proxy.inbound.ProxyProtocol.Detect.http_routes:type_name -> io.linkerd.proxy.inbound.HttpRoute - 8, // 28: io.linkerd.proxy.inbound.ProxyProtocol.Http1.routes:type_name -> io.linkerd.proxy.inbound.HttpRoute - 8, // 29: io.linkerd.proxy.inbound.ProxyProtocol.Http2.routes:type_name -> io.linkerd.proxy.inbound.HttpRoute - 9, // 30: io.linkerd.proxy.inbound.ProxyProtocol.Grpc.routes:type_name -> io.linkerd.proxy.inbound.GrpcRoute - 18, // 31: io.linkerd.proxy.inbound.Authn.PermitMeshTLS.unauthenticated:type_name -> io.linkerd.proxy.inbound.Authn.PermitUnauthenticated - 20, // 32: io.linkerd.proxy.inbound.Authn.PermitMeshTLS.identities:type_name -> io.linkerd.proxy.inbound.Authn.PermitMeshTLS.PermitClientIdentities - 6, // 33: io.linkerd.proxy.inbound.Authn.PermitMeshTLS.PermitClientIdentities.identities:type_name -> io.linkerd.proxy.inbound.Identity - 7, // 34: io.linkerd.proxy.inbound.Authn.PermitMeshTLS.PermitClientIdentities.suffixes:type_name -> io.linkerd.proxy.inbound.IdentitySuffix - 30, // 35: io.linkerd.proxy.inbound.HttpRoute.Rule.matches:type_name -> io.linkerd.proxy.http_route.HttpRouteMatch - 22, // 36: io.linkerd.proxy.inbound.HttpRoute.Rule.filters:type_name -> io.linkerd.proxy.inbound.HttpRoute.Filter - 31, // 37: io.linkerd.proxy.inbound.HttpRoute.Filter.failure_injector:type_name -> io.linkerd.proxy.http_route.HttpFailureInjector - 32, // 38: io.linkerd.proxy.inbound.HttpRoute.Filter.request_header_modifier:type_name -> io.linkerd.proxy.http_route.RequestHeaderModifier - 33, // 39: io.linkerd.proxy.inbound.HttpRoute.Filter.redirect:type_name -> io.linkerd.proxy.http_route.RequestRedirect - 34, // 40: io.linkerd.proxy.inbound.GrpcRoute.Rule.matches:type_name -> io.linkerd.proxy.grpc_route.GrpcRouteMatch - 24, // 41: io.linkerd.proxy.inbound.GrpcRoute.Rule.filters:type_name -> io.linkerd.proxy.inbound.GrpcRoute.Filter - 35, // 42: io.linkerd.proxy.inbound.GrpcRoute.Filter.failure_injector:type_name -> io.linkerd.proxy.grpc_route.GrpcFailureInjector - 32, // 43: io.linkerd.proxy.inbound.GrpcRoute.Filter.request_header_modifier:type_name -> io.linkerd.proxy.http_route.RequestHeaderModifier - 0, // 44: io.linkerd.proxy.inbound.InboundServerPolicies.GetPort:input_type -> io.linkerd.proxy.inbound.PortSpec - 0, // 45: io.linkerd.proxy.inbound.InboundServerPolicies.WatchPort:input_type -> io.linkerd.proxy.inbound.PortSpec - 1, // 46: io.linkerd.proxy.inbound.InboundServerPolicies.GetPort:output_type -> io.linkerd.proxy.inbound.Server - 1, // 47: io.linkerd.proxy.inbound.InboundServerPolicies.WatchPort:output_type -> io.linkerd.proxy.inbound.Server - 46, // [46:48] is the sub-list for method output_type - 44, // [44:46] is the sub-list for method input_type - 44, // [44:44] is the sub-list for extension type_name - 44, // [44:44] is the sub-list for extension extendee - 0, // [0:44] is the sub-list for field type_name + 24, // 25: io.linkerd.proxy.inbound.GrpcRoute.rules:type_name -> io.linkerd.proxy.inbound.GrpcRoute.Rule + 27, // 26: io.linkerd.proxy.inbound.HttpLocalRateLimit.total:type_name -> io.linkerd.proxy.inbound.HttpLocalRateLimit.Limit + 27, // 27: io.linkerd.proxy.inbound.HttpLocalRateLimit.identity:type_name -> io.linkerd.proxy.inbound.HttpLocalRateLimit.Limit + 26, // 28: io.linkerd.proxy.inbound.HttpLocalRateLimit.overrides:type_name -> io.linkerd.proxy.inbound.HttpLocalRateLimit.Override + 33, // 29: io.linkerd.proxy.inbound.ProxyProtocol.Detect.timeout:type_name -> google.protobuf.Duration + 8, // 30: io.linkerd.proxy.inbound.ProxyProtocol.Detect.http_routes:type_name -> io.linkerd.proxy.inbound.HttpRoute + 10, // 31: io.linkerd.proxy.inbound.ProxyProtocol.Detect.http_local_rate_limit:type_name -> io.linkerd.proxy.inbound.HttpLocalRateLimit + 8, // 32: io.linkerd.proxy.inbound.ProxyProtocol.Http1.routes:type_name -> io.linkerd.proxy.inbound.HttpRoute + 10, // 33: io.linkerd.proxy.inbound.ProxyProtocol.Http1.local_rate_limit:type_name -> io.linkerd.proxy.inbound.HttpLocalRateLimit + 8, // 34: io.linkerd.proxy.inbound.ProxyProtocol.Http2.routes:type_name -> io.linkerd.proxy.inbound.HttpRoute + 10, // 35: io.linkerd.proxy.inbound.ProxyProtocol.Http2.local_rate_limit:type_name -> io.linkerd.proxy.inbound.HttpLocalRateLimit + 9, // 36: io.linkerd.proxy.inbound.ProxyProtocol.Grpc.routes:type_name -> io.linkerd.proxy.inbound.GrpcRoute + 19, // 37: io.linkerd.proxy.inbound.Authn.PermitMeshTLS.unauthenticated:type_name -> io.linkerd.proxy.inbound.Authn.PermitUnauthenticated + 21, // 38: io.linkerd.proxy.inbound.Authn.PermitMeshTLS.identities:type_name -> io.linkerd.proxy.inbound.Authn.PermitMeshTLS.PermitClientIdentities + 6, // 39: io.linkerd.proxy.inbound.Authn.PermitMeshTLS.PermitClientIdentities.identities:type_name -> io.linkerd.proxy.inbound.Identity + 7, // 40: io.linkerd.proxy.inbound.Authn.PermitMeshTLS.PermitClientIdentities.suffixes:type_name -> io.linkerd.proxy.inbound.IdentitySuffix + 34, // 41: io.linkerd.proxy.inbound.HttpRoute.Rule.matches:type_name -> io.linkerd.proxy.http_route.HttpRouteMatch + 23, // 42: io.linkerd.proxy.inbound.HttpRoute.Rule.filters:type_name -> io.linkerd.proxy.inbound.HttpRoute.Filter + 35, // 43: io.linkerd.proxy.inbound.HttpRoute.Filter.failure_injector:type_name -> io.linkerd.proxy.http_route.HttpFailureInjector + 36, // 44: io.linkerd.proxy.inbound.HttpRoute.Filter.request_header_modifier:type_name -> io.linkerd.proxy.http_route.RequestHeaderModifier + 37, // 45: io.linkerd.proxy.inbound.HttpRoute.Filter.redirect:type_name -> io.linkerd.proxy.http_route.RequestRedirect + 38, // 46: io.linkerd.proxy.inbound.GrpcRoute.Rule.matches:type_name -> io.linkerd.proxy.grpc_route.GrpcRouteMatch + 25, // 47: io.linkerd.proxy.inbound.GrpcRoute.Rule.filters:type_name -> io.linkerd.proxy.inbound.GrpcRoute.Filter + 39, // 48: io.linkerd.proxy.inbound.GrpcRoute.Filter.failure_injector:type_name -> io.linkerd.proxy.grpc_route.GrpcFailureInjector + 36, // 49: io.linkerd.proxy.inbound.GrpcRoute.Filter.request_header_modifier:type_name -> io.linkerd.proxy.http_route.RequestHeaderModifier + 27, // 50: io.linkerd.proxy.inbound.HttpLocalRateLimit.Override.limit:type_name -> io.linkerd.proxy.inbound.HttpLocalRateLimit.Limit + 28, // 51: io.linkerd.proxy.inbound.HttpLocalRateLimit.Override.clients:type_name -> io.linkerd.proxy.inbound.HttpLocalRateLimit.Override.ClientIdentities + 6, // 52: io.linkerd.proxy.inbound.HttpLocalRateLimit.Override.ClientIdentities.identities:type_name -> io.linkerd.proxy.inbound.Identity + 0, // 53: io.linkerd.proxy.inbound.InboundServerPolicies.GetPort:input_type -> io.linkerd.proxy.inbound.PortSpec + 0, // 54: io.linkerd.proxy.inbound.InboundServerPolicies.WatchPort:input_type -> io.linkerd.proxy.inbound.PortSpec + 1, // 55: io.linkerd.proxy.inbound.InboundServerPolicies.GetPort:output_type -> io.linkerd.proxy.inbound.Server + 1, // 56: io.linkerd.proxy.inbound.InboundServerPolicies.WatchPort:output_type -> io.linkerd.proxy.inbound.Server + 55, // [55:57] is the sub-list for method output_type + 53, // [53:55] is the sub-list for method input_type + 53, // [53:53] is the sub-list for extension type_name + 53, // [53:53] is the sub-list for extension extendee + 0, // [0:53] is the sub-list for field type_name } func init() { file_inbound_proto_init() } @@ -1860,16 +2162,16 @@ func file_inbound_proto_init() { (*Authn_Unauthenticated)(nil), (*Authn_MeshTLS)(nil), } - file_inbound_proto_msgTypes[19].OneofWrappers = []any{ + file_inbound_proto_msgTypes[20].OneofWrappers = []any{ (*Authn_PermitMeshTLS_Unauthenticated)(nil), (*Authn_PermitMeshTLS_Identities)(nil), } - file_inbound_proto_msgTypes[22].OneofWrappers = []any{ + file_inbound_proto_msgTypes[23].OneofWrappers = []any{ (*HttpRoute_Filter_FailureInjector)(nil), (*HttpRoute_Filter_RequestHeaderModifier)(nil), (*HttpRoute_Filter_Redirect)(nil), } - file_inbound_proto_msgTypes[24].OneofWrappers = []any{ + file_inbound_proto_msgTypes[25].OneofWrappers = []any{ (*GrpcRoute_Filter_FailureInjector)(nil), (*GrpcRoute_Filter_RequestHeaderModifier)(nil), } @@ -1879,7 +2181,7 @@ func file_inbound_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_inbound_proto_rawDesc, NumEnums: 0, - NumMessages: 25, + NumMessages: 29, NumExtensions: 0, NumServices: 1, }, diff --git a/go/inbound/inbound_grpc.pb.go b/go/inbound/inbound_grpc.pb.go index 0f615829c..2f19c156c 100644 --- a/go/inbound/inbound_grpc.pb.go +++ b/go/inbound/inbound_grpc.pb.go @@ -1,7 +1,7 @@ // Code generated by protoc-gen-go-grpc. DO NOT EDIT. // versions: // - protoc-gen-go-grpc v1.5.1 -// - protoc v3.12.4 +// - protoc v3.20.3 // source: inbound.proto package inbound diff --git a/go/meta/meta.pb.go b/go/meta/meta.pb.go index 064751085..3d437c465 100644 --- a/go/meta/meta.pb.go +++ b/go/meta/meta.pb.go @@ -1,7 +1,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: // protoc-gen-go v1.35.1 -// protoc v3.12.4 +// protoc v3.20.3 // source: meta.proto package meta diff --git a/go/net/net.pb.go b/go/net/net.pb.go index e0f2d7327..752245805 100644 --- a/go/net/net.pb.go +++ b/go/net/net.pb.go @@ -1,7 +1,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: // protoc-gen-go v1.35.1 -// protoc v3.12.4 +// protoc v3.20.3 // source: net.proto package net diff --git a/go/outbound/outbound.pb.go b/go/outbound/outbound.pb.go index 9a4260f93..b427bb209 100644 --- a/go/outbound/outbound.pb.go +++ b/go/outbound/outbound.pb.go @@ -1,7 +1,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: // protoc-gen-go v1.35.1 -// protoc v3.12.4 +// protoc v3.20.3 // source: outbound.proto package outbound diff --git a/go/outbound/outbound_grpc.pb.go b/go/outbound/outbound_grpc.pb.go index a91a1ed50..cd89678f7 100644 --- a/go/outbound/outbound_grpc.pb.go +++ b/go/outbound/outbound_grpc.pb.go @@ -1,7 +1,7 @@ // Code generated by protoc-gen-go-grpc. DO NOT EDIT. // versions: // - protoc-gen-go-grpc v1.5.1 -// - protoc v3.12.4 +// - protoc v3.20.3 // source: outbound.proto package outbound diff --git a/go/tap/tap.pb.go b/go/tap/tap.pb.go index 95dbf6e5b..1639925dd 100644 --- a/go/tap/tap.pb.go +++ b/go/tap/tap.pb.go @@ -1,7 +1,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: // protoc-gen-go v1.35.1 -// protoc v3.12.4 +// protoc v3.20.3 // source: tap.proto package tap diff --git a/go/tap/tap_grpc.pb.go b/go/tap/tap_grpc.pb.go index e905f2ff8..70098df49 100644 --- a/go/tap/tap_grpc.pb.go +++ b/go/tap/tap_grpc.pb.go @@ -1,7 +1,7 @@ // Code generated by protoc-gen-go-grpc. DO NOT EDIT. // versions: // - protoc-gen-go-grpc v1.5.1 -// - protoc v3.12.4 +// - protoc v3.20.3 // source: tap.proto package tap diff --git a/go/tls_route/tls_route.pb.go b/go/tls_route/tls_route.pb.go index cc368d786..80c1b59de 100644 --- a/go/tls_route/tls_route.pb.go +++ b/go/tls_route/tls_route.pb.go @@ -1,7 +1,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: // protoc-gen-go v1.35.1 -// protoc v3.12.4 +// protoc v3.20.3 // source: tls_route.proto package tls_route diff --git a/proto/inbound.proto b/proto/inbound.proto index afde04301..7f1ada396 100644 --- a/proto/inbound.proto +++ b/proto/inbound.proto @@ -71,6 +71,9 @@ message ProxyProtocol { // matched. repeated HttpRoute http_routes = 3; + // If the protocol detected as HTTP, applicable rate limit. + HttpLocalRateLimit http_local_rate_limit = 4; + // Never implemented. reserved 2; } @@ -78,6 +81,8 @@ message ProxyProtocol { message Http1 { repeated HttpRoute routes = 2; + HttpLocalRateLimit local_rate_limit = 3; + // Never implemented. reserved 1; } @@ -85,6 +90,8 @@ message ProxyProtocol { message Http2 { repeated HttpRoute routes = 2; + HttpLocalRateLimit local_rate_limit = 3; + // Never implemented. reserved 1; } @@ -233,3 +240,31 @@ message GrpcRoute { } } } + +message HttpLocalRateLimit { + // Overall rate-limit, which all traffic coming to this server should abide + // to. If unset no overall limit is applied. + Limit total = 1; + + // Fairness for individual identities; each separate client, grouped by + // identity, will have this rate-limit. + Limit identity = 2; + + // Limit overrides for traffic from a specific client. + repeated Override overrides = 3; + + message Override { + Limit limit = 1; + + ClientIdentities clients = 2; + + message ClientIdentities { + // A list of literal identities. + repeated Identity identities = 1; + } + } + + message Limit { + uint64 requestsPerSecond = 1; + } +} diff --git a/src/gen/io.linkerd.proxy.inbound.rs b/src/gen/io.linkerd.proxy.inbound.rs index 312ab3de8..db743c00e 100644 --- a/src/gen/io.linkerd.proxy.inbound.rs +++ b/src/gen/io.linkerd.proxy.inbound.rs @@ -51,18 +51,25 @@ pub mod proxy_protocol { /// matched. #[prost(message, repeated, tag = "3")] pub http_routes: ::prost::alloc::vec::Vec, + /// If the protocol detected as HTTP, applicable rate limit. + #[prost(message, optional, tag = "4")] + pub http_local_rate_limit: ::core::option::Option, } #[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, PartialEq, ::prost::Message)] pub struct Http1 { #[prost(message, repeated, tag = "2")] pub routes: ::prost::alloc::vec::Vec, + #[prost(message, optional, tag = "3")] + pub local_rate_limit: ::core::option::Option, } #[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, PartialEq, ::prost::Message)] pub struct Http2 { #[prost(message, repeated, tag = "2")] pub routes: ::prost::alloc::vec::Vec, + #[prost(message, optional, tag = "3")] + pub local_rate_limit: ::core::option::Option, } #[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, PartialEq, ::prost::Message)] @@ -300,6 +307,48 @@ pub mod grpc_route { } } } +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct HttpLocalRateLimit { + /// Overall rate-limit, which all traffic coming to this server should abide + /// to. If unset no overall limit is applied. + #[prost(message, optional, tag = "1")] + pub total: ::core::option::Option, + /// Fairness for individual identities; each separate client, grouped by + /// identity, will have this rate-limit. + #[prost(message, optional, tag = "2")] + pub identity: ::core::option::Option, + /// Limit overrides for traffic from a specific client. + #[prost(message, repeated, tag = "3")] + pub overrides: ::prost::alloc::vec::Vec, +} +/// Nested message and enum types in `HttpLocalRateLimit`. +pub mod http_local_rate_limit { + #[allow(clippy::derive_partial_eq_without_eq)] + #[derive(Clone, PartialEq, ::prost::Message)] + pub struct Override { + #[prost(message, optional, tag = "1")] + pub limit: ::core::option::Option, + #[prost(message, optional, tag = "2")] + pub clients: ::core::option::Option, + } + /// Nested message and enum types in `Override`. + pub mod r#override { + #[allow(clippy::derive_partial_eq_without_eq)] + #[derive(Clone, PartialEq, ::prost::Message)] + pub struct ClientIdentities { + /// A list of literal identities. + #[prost(message, repeated, tag = "1")] + pub identities: ::prost::alloc::vec::Vec, + } + } + #[allow(clippy::derive_partial_eq_without_eq)] + #[derive(Clone, PartialEq, ::prost::Message)] + pub struct Limit { + #[prost(uint64, tag = "1")] + pub requests_per_second: u64, + } +} /// Generated client implementations. pub mod inbound_server_policies_client { #![allow(unused_variables, dead_code, missing_docs, clippy::let_unit_value)] From 4e5a650e99d0086149917ead8deb8d0d7cc93924 Mon Sep 17 00:00:00 2001 From: Alejandro Pedraza Date: Wed, 30 Oct 2024 12:12:09 -0500 Subject: [PATCH 2/3] Add metadata --- go/inbound/inbound.pb.go | 190 +++++++++++++++------------- proto/inbound.proto | 9 +- src/gen/io.linkerd.proxy.inbound.rs | 9 +- 3 files changed, 114 insertions(+), 94 deletions(-) diff --git a/go/inbound/inbound.pb.go b/go/inbound/inbound.pb.go index 97c34d4fd..21bfbedd0 100644 --- a/go/inbound/inbound.pb.go +++ b/go/inbound/inbound.pb.go @@ -762,14 +762,16 @@ type HttpLocalRateLimit struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields + // Describes the associated HTTPLocalRateLimitPolicy resource + Metadata *meta.Metadata `protobuf:"bytes,1,opt,name=metadata,proto3" json:"metadata,omitempty"` // Overall rate-limit, which all traffic coming to this server should abide // to. If unset no overall limit is applied. - Total *HttpLocalRateLimit_Limit `protobuf:"bytes,1,opt,name=total,proto3" json:"total,omitempty"` + Total *HttpLocalRateLimit_Limit `protobuf:"bytes,2,opt,name=total,proto3" json:"total,omitempty"` // Fairness for individual identities; each separate client, grouped by // identity, will have this rate-limit. - Identity *HttpLocalRateLimit_Limit `protobuf:"bytes,2,opt,name=identity,proto3" json:"identity,omitempty"` + Identity *HttpLocalRateLimit_Limit `protobuf:"bytes,3,opt,name=identity,proto3" json:"identity,omitempty"` // Limit overrides for traffic from a specific client. - Overrides []*HttpLocalRateLimit_Override `protobuf:"bytes,3,rep,name=overrides,proto3" json:"overrides,omitempty"` + Overrides []*HttpLocalRateLimit_Override `protobuf:"bytes,4,rep,name=overrides,proto3" json:"overrides,omitempty"` } func (x *HttpLocalRateLimit) Reset() { @@ -802,6 +804,13 @@ func (*HttpLocalRateLimit) Descriptor() ([]byte, []int) { return file_inbound_proto_rawDescGZIP(), []int{10} } +func (x *HttpLocalRateLimit) GetMetadata() *meta.Metadata { + if x != nil { + return x.Metadata + } + return nil +} + func (x *HttpLocalRateLimit) GetTotal() *HttpLocalRateLimit_Limit { if x != nil { return x.Total @@ -1970,59 +1979,63 @@ var file_inbound_proto_rawDesc = []byte{ 0x74, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x4d, 0x6f, 0x64, 0x69, 0x66, 0x69, 0x65, 0x72, 0x48, 0x00, 0x52, 0x15, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x4d, 0x6f, 0x64, 0x69, 0x66, 0x69, 0x65, 0x72, 0x42, 0x06, 0x0a, 0x04, 0x6b, 0x69, 0x6e, 0x64, - 0x22, 0xcb, 0x04, 0x0a, 0x12, 0x48, 0x74, 0x74, 0x70, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x52, 0x61, - 0x74, 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x48, 0x0a, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x69, 0x6f, 0x2e, 0x6c, 0x69, 0x6e, 0x6b, - 0x65, 0x72, 0x64, 0x2e, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2e, 0x69, 0x6e, 0x62, 0x6f, 0x75, 0x6e, - 0x64, 0x2e, 0x48, 0x74, 0x74, 0x70, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x52, 0x61, 0x74, 0x65, 0x4c, - 0x69, 0x6d, 0x69, 0x74, 0x2e, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x52, 0x05, 0x74, 0x6f, 0x74, 0x61, - 0x6c, 0x12, 0x4e, 0x0a, 0x08, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x18, 0x02, 0x20, + 0x22, 0x88, 0x05, 0x0a, 0x12, 0x48, 0x74, 0x74, 0x70, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x52, 0x61, + 0x74, 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x3b, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, + 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x69, 0x6f, 0x2e, 0x6c, + 0x69, 0x6e, 0x6b, 0x65, 0x72, 0x64, 0x2e, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2e, 0x6d, 0x65, 0x74, + 0x61, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, + 0x64, 0x61, 0x74, 0x61, 0x12, 0x48, 0x0a, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x69, 0x6f, 0x2e, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x72, 0x64, 0x2e, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2e, 0x69, 0x6e, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x2e, 0x48, 0x74, 0x74, 0x70, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x52, 0x61, 0x74, 0x65, 0x4c, 0x69, 0x6d, 0x69, - 0x74, 0x2e, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x52, 0x08, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, - 0x79, 0x12, 0x53, 0x0a, 0x09, 0x6f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x73, 0x18, 0x03, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x69, 0x6f, 0x2e, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x72, + 0x74, 0x2e, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x52, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x12, 0x4e, + 0x0a, 0x08, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x32, 0x2e, 0x69, 0x6f, 0x2e, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x72, 0x64, 0x2e, 0x70, 0x72, + 0x6f, 0x78, 0x79, 0x2e, 0x69, 0x6e, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x2e, 0x48, 0x74, 0x74, 0x70, + 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x52, 0x61, 0x74, 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x2e, 0x4c, + 0x69, 0x6d, 0x69, 0x74, 0x52, 0x08, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x12, 0x53, + 0x0a, 0x09, 0x6f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x35, 0x2e, 0x69, 0x6f, 0x2e, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x72, 0x64, 0x2e, 0x70, + 0x72, 0x6f, 0x78, 0x79, 0x2e, 0x69, 0x6e, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x2e, 0x48, 0x74, 0x74, + 0x70, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x52, 0x61, 0x74, 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x2e, + 0x4f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x52, 0x09, 0x6f, 0x76, 0x65, 0x72, 0x72, 0x69, + 0x64, 0x65, 0x73, 0x1a, 0x8e, 0x02, 0x0a, 0x08, 0x4f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, + 0x12, 0x48, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x32, 0x2e, 0x69, 0x6f, 0x2e, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x72, 0x64, 0x2e, 0x70, 0x72, 0x6f, + 0x78, 0x79, 0x2e, 0x69, 0x6e, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x2e, 0x48, 0x74, 0x74, 0x70, 0x4c, + 0x6f, 0x63, 0x61, 0x6c, 0x52, 0x61, 0x74, 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x2e, 0x4c, 0x69, + 0x6d, 0x69, 0x74, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x60, 0x0a, 0x07, 0x63, 0x6c, + 0x69, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x46, 0x2e, 0x69, 0x6f, + 0x2e, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x72, 0x64, 0x2e, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2e, 0x69, + 0x6e, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x2e, 0x48, 0x74, 0x74, 0x70, 0x4c, 0x6f, 0x63, 0x61, 0x6c, + 0x52, 0x61, 0x74, 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x2e, 0x4f, 0x76, 0x65, 0x72, 0x72, 0x69, + 0x64, 0x65, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, + 0x69, 0x65, 0x73, 0x52, 0x07, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x73, 0x1a, 0x56, 0x0a, 0x10, + 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x69, 0x65, 0x73, + 0x12, 0x42, 0x0a, 0x0a, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x69, 0x65, 0x73, 0x18, 0x01, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x69, 0x6f, 0x2e, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x72, 0x64, 0x2e, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2e, 0x69, 0x6e, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x2e, - 0x48, 0x74, 0x74, 0x70, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x52, 0x61, 0x74, 0x65, 0x4c, 0x69, 0x6d, - 0x69, 0x74, 0x2e, 0x4f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x52, 0x09, 0x6f, 0x76, 0x65, - 0x72, 0x72, 0x69, 0x64, 0x65, 0x73, 0x1a, 0x8e, 0x02, 0x0a, 0x08, 0x4f, 0x76, 0x65, 0x72, 0x72, - 0x69, 0x64, 0x65, 0x12, 0x48, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x69, 0x6f, 0x2e, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x72, 0x64, 0x2e, - 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2e, 0x69, 0x6e, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x2e, 0x48, 0x74, - 0x74, 0x70, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x52, 0x61, 0x74, 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, - 0x2e, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x60, 0x0a, - 0x07, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x46, - 0x2e, 0x69, 0x6f, 0x2e, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x72, 0x64, 0x2e, 0x70, 0x72, 0x6f, 0x78, - 0x79, 0x2e, 0x69, 0x6e, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x2e, 0x48, 0x74, 0x74, 0x70, 0x4c, 0x6f, - 0x63, 0x61, 0x6c, 0x52, 0x61, 0x74, 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x2e, 0x4f, 0x76, 0x65, - 0x72, 0x72, 0x69, 0x64, 0x65, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x65, 0x6e, - 0x74, 0x69, 0x74, 0x69, 0x65, 0x73, 0x52, 0x07, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x73, 0x1a, - 0x56, 0x0a, 0x10, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, - 0x69, 0x65, 0x73, 0x12, 0x42, 0x0a, 0x0a, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x69, 0x65, - 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x69, 0x6f, 0x2e, 0x6c, 0x69, 0x6e, - 0x6b, 0x65, 0x72, 0x64, 0x2e, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2e, 0x69, 0x6e, 0x62, 0x6f, 0x75, - 0x6e, 0x64, 0x2e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x52, 0x0a, 0x69, 0x64, 0x65, - 0x6e, 0x74, 0x69, 0x74, 0x69, 0x65, 0x73, 0x1a, 0x35, 0x0a, 0x05, 0x4c, 0x69, 0x6d, 0x69, 0x74, - 0x12, 0x2c, 0x0a, 0x11, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x73, 0x50, 0x65, 0x72, 0x53, - 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x11, 0x72, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x73, 0x50, 0x65, 0x72, 0x53, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x32, 0xc1, - 0x01, 0x0a, 0x15, 0x49, 0x6e, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, - 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x12, 0x51, 0x0a, 0x07, 0x47, 0x65, 0x74, 0x50, - 0x6f, 0x72, 0x74, 0x12, 0x22, 0x2e, 0x69, 0x6f, 0x2e, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x72, 0x64, - 0x2e, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2e, 0x69, 0x6e, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x2e, 0x50, - 0x6f, 0x72, 0x74, 0x53, 0x70, 0x65, 0x63, 0x1a, 0x20, 0x2e, 0x69, 0x6f, 0x2e, 0x6c, 0x69, 0x6e, - 0x6b, 0x65, 0x72, 0x64, 0x2e, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2e, 0x69, 0x6e, 0x62, 0x6f, 0x75, - 0x6e, 0x64, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x22, 0x00, 0x12, 0x55, 0x0a, 0x09, 0x57, - 0x61, 0x74, 0x63, 0x68, 0x50, 0x6f, 0x72, 0x74, 0x12, 0x22, 0x2e, 0x69, 0x6f, 0x2e, 0x6c, 0x69, - 0x6e, 0x6b, 0x65, 0x72, 0x64, 0x2e, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2e, 0x69, 0x6e, 0x62, 0x6f, - 0x75, 0x6e, 0x64, 0x2e, 0x50, 0x6f, 0x72, 0x74, 0x53, 0x70, 0x65, 0x63, 0x1a, 0x20, 0x2e, 0x69, - 0x6f, 0x2e, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x72, 0x64, 0x2e, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2e, - 0x69, 0x6e, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x22, 0x00, - 0x30, 0x01, 0x42, 0x32, 0x5a, 0x30, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, - 0x2f, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x72, 0x64, 0x2f, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x72, 0x64, - 0x32, 0x2d, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2d, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6f, 0x2f, 0x69, - 0x6e, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x52, 0x0a, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, + 0x74, 0x69, 0x65, 0x73, 0x1a, 0x35, 0x0a, 0x05, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x2c, 0x0a, + 0x11, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x73, 0x50, 0x65, 0x72, 0x53, 0x65, 0x63, 0x6f, + 0x6e, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x11, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x73, 0x50, 0x65, 0x72, 0x53, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x32, 0xc1, 0x01, 0x0a, 0x15, + 0x49, 0x6e, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x50, 0x6f, 0x6c, + 0x69, 0x63, 0x69, 0x65, 0x73, 0x12, 0x51, 0x0a, 0x07, 0x47, 0x65, 0x74, 0x50, 0x6f, 0x72, 0x74, + 0x12, 0x22, 0x2e, 0x69, 0x6f, 0x2e, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x72, 0x64, 0x2e, 0x70, 0x72, + 0x6f, 0x78, 0x79, 0x2e, 0x69, 0x6e, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x2e, 0x50, 0x6f, 0x72, 0x74, + 0x53, 0x70, 0x65, 0x63, 0x1a, 0x20, 0x2e, 0x69, 0x6f, 0x2e, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x72, + 0x64, 0x2e, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2e, 0x69, 0x6e, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x2e, + 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x22, 0x00, 0x12, 0x55, 0x0a, 0x09, 0x57, 0x61, 0x74, 0x63, + 0x68, 0x50, 0x6f, 0x72, 0x74, 0x12, 0x22, 0x2e, 0x69, 0x6f, 0x2e, 0x6c, 0x69, 0x6e, 0x6b, 0x65, + 0x72, 0x64, 0x2e, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2e, 0x69, 0x6e, 0x62, 0x6f, 0x75, 0x6e, 0x64, + 0x2e, 0x50, 0x6f, 0x72, 0x74, 0x53, 0x70, 0x65, 0x63, 0x1a, 0x20, 0x2e, 0x69, 0x6f, 0x2e, 0x6c, + 0x69, 0x6e, 0x6b, 0x65, 0x72, 0x64, 0x2e, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2e, 0x69, 0x6e, 0x62, + 0x6f, 0x75, 0x6e, 0x64, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x22, 0x00, 0x30, 0x01, 0x42, + 0x32, 0x5a, 0x30, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x6c, 0x69, + 0x6e, 0x6b, 0x65, 0x72, 0x64, 0x2f, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x72, 0x64, 0x32, 0x2d, 0x70, + 0x72, 0x6f, 0x78, 0x79, 0x2d, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6f, 0x2f, 0x69, 0x6e, 0x62, 0x6f, + 0x75, 0x6e, 0x64, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -2107,42 +2120,43 @@ var file_inbound_proto_depIdxs = []int32{ 32, // 23: io.linkerd.proxy.inbound.GrpcRoute.hosts:type_name -> io.linkerd.proxy.http_route.HostMatch 3, // 24: io.linkerd.proxy.inbound.GrpcRoute.authorizations:type_name -> io.linkerd.proxy.inbound.Authz 24, // 25: io.linkerd.proxy.inbound.GrpcRoute.rules:type_name -> io.linkerd.proxy.inbound.GrpcRoute.Rule - 27, // 26: io.linkerd.proxy.inbound.HttpLocalRateLimit.total:type_name -> io.linkerd.proxy.inbound.HttpLocalRateLimit.Limit - 27, // 27: io.linkerd.proxy.inbound.HttpLocalRateLimit.identity:type_name -> io.linkerd.proxy.inbound.HttpLocalRateLimit.Limit - 26, // 28: io.linkerd.proxy.inbound.HttpLocalRateLimit.overrides:type_name -> io.linkerd.proxy.inbound.HttpLocalRateLimit.Override - 33, // 29: io.linkerd.proxy.inbound.ProxyProtocol.Detect.timeout:type_name -> google.protobuf.Duration - 8, // 30: io.linkerd.proxy.inbound.ProxyProtocol.Detect.http_routes:type_name -> io.linkerd.proxy.inbound.HttpRoute - 10, // 31: io.linkerd.proxy.inbound.ProxyProtocol.Detect.http_local_rate_limit:type_name -> io.linkerd.proxy.inbound.HttpLocalRateLimit - 8, // 32: io.linkerd.proxy.inbound.ProxyProtocol.Http1.routes:type_name -> io.linkerd.proxy.inbound.HttpRoute - 10, // 33: io.linkerd.proxy.inbound.ProxyProtocol.Http1.local_rate_limit:type_name -> io.linkerd.proxy.inbound.HttpLocalRateLimit - 8, // 34: io.linkerd.proxy.inbound.ProxyProtocol.Http2.routes:type_name -> io.linkerd.proxy.inbound.HttpRoute - 10, // 35: io.linkerd.proxy.inbound.ProxyProtocol.Http2.local_rate_limit:type_name -> io.linkerd.proxy.inbound.HttpLocalRateLimit - 9, // 36: io.linkerd.proxy.inbound.ProxyProtocol.Grpc.routes:type_name -> io.linkerd.proxy.inbound.GrpcRoute - 19, // 37: io.linkerd.proxy.inbound.Authn.PermitMeshTLS.unauthenticated:type_name -> io.linkerd.proxy.inbound.Authn.PermitUnauthenticated - 21, // 38: io.linkerd.proxy.inbound.Authn.PermitMeshTLS.identities:type_name -> io.linkerd.proxy.inbound.Authn.PermitMeshTLS.PermitClientIdentities - 6, // 39: io.linkerd.proxy.inbound.Authn.PermitMeshTLS.PermitClientIdentities.identities:type_name -> io.linkerd.proxy.inbound.Identity - 7, // 40: io.linkerd.proxy.inbound.Authn.PermitMeshTLS.PermitClientIdentities.suffixes:type_name -> io.linkerd.proxy.inbound.IdentitySuffix - 34, // 41: io.linkerd.proxy.inbound.HttpRoute.Rule.matches:type_name -> io.linkerd.proxy.http_route.HttpRouteMatch - 23, // 42: io.linkerd.proxy.inbound.HttpRoute.Rule.filters:type_name -> io.linkerd.proxy.inbound.HttpRoute.Filter - 35, // 43: io.linkerd.proxy.inbound.HttpRoute.Filter.failure_injector:type_name -> io.linkerd.proxy.http_route.HttpFailureInjector - 36, // 44: io.linkerd.proxy.inbound.HttpRoute.Filter.request_header_modifier:type_name -> io.linkerd.proxy.http_route.RequestHeaderModifier - 37, // 45: io.linkerd.proxy.inbound.HttpRoute.Filter.redirect:type_name -> io.linkerd.proxy.http_route.RequestRedirect - 38, // 46: io.linkerd.proxy.inbound.GrpcRoute.Rule.matches:type_name -> io.linkerd.proxy.grpc_route.GrpcRouteMatch - 25, // 47: io.linkerd.proxy.inbound.GrpcRoute.Rule.filters:type_name -> io.linkerd.proxy.inbound.GrpcRoute.Filter - 39, // 48: io.linkerd.proxy.inbound.GrpcRoute.Filter.failure_injector:type_name -> io.linkerd.proxy.grpc_route.GrpcFailureInjector - 36, // 49: io.linkerd.proxy.inbound.GrpcRoute.Filter.request_header_modifier:type_name -> io.linkerd.proxy.http_route.RequestHeaderModifier - 27, // 50: io.linkerd.proxy.inbound.HttpLocalRateLimit.Override.limit:type_name -> io.linkerd.proxy.inbound.HttpLocalRateLimit.Limit - 28, // 51: io.linkerd.proxy.inbound.HttpLocalRateLimit.Override.clients:type_name -> io.linkerd.proxy.inbound.HttpLocalRateLimit.Override.ClientIdentities - 6, // 52: io.linkerd.proxy.inbound.HttpLocalRateLimit.Override.ClientIdentities.identities:type_name -> io.linkerd.proxy.inbound.Identity - 0, // 53: io.linkerd.proxy.inbound.InboundServerPolicies.GetPort:input_type -> io.linkerd.proxy.inbound.PortSpec - 0, // 54: io.linkerd.proxy.inbound.InboundServerPolicies.WatchPort:input_type -> io.linkerd.proxy.inbound.PortSpec - 1, // 55: io.linkerd.proxy.inbound.InboundServerPolicies.GetPort:output_type -> io.linkerd.proxy.inbound.Server - 1, // 56: io.linkerd.proxy.inbound.InboundServerPolicies.WatchPort:output_type -> io.linkerd.proxy.inbound.Server - 55, // [55:57] is the sub-list for method output_type - 53, // [53:55] is the sub-list for method input_type - 53, // [53:53] is the sub-list for extension type_name - 53, // [53:53] is the sub-list for extension extendee - 0, // [0:53] is the sub-list for field type_name + 30, // 26: io.linkerd.proxy.inbound.HttpLocalRateLimit.metadata:type_name -> io.linkerd.proxy.meta.Metadata + 27, // 27: io.linkerd.proxy.inbound.HttpLocalRateLimit.total:type_name -> io.linkerd.proxy.inbound.HttpLocalRateLimit.Limit + 27, // 28: io.linkerd.proxy.inbound.HttpLocalRateLimit.identity:type_name -> io.linkerd.proxy.inbound.HttpLocalRateLimit.Limit + 26, // 29: io.linkerd.proxy.inbound.HttpLocalRateLimit.overrides:type_name -> io.linkerd.proxy.inbound.HttpLocalRateLimit.Override + 33, // 30: io.linkerd.proxy.inbound.ProxyProtocol.Detect.timeout:type_name -> google.protobuf.Duration + 8, // 31: io.linkerd.proxy.inbound.ProxyProtocol.Detect.http_routes:type_name -> io.linkerd.proxy.inbound.HttpRoute + 10, // 32: io.linkerd.proxy.inbound.ProxyProtocol.Detect.http_local_rate_limit:type_name -> io.linkerd.proxy.inbound.HttpLocalRateLimit + 8, // 33: io.linkerd.proxy.inbound.ProxyProtocol.Http1.routes:type_name -> io.linkerd.proxy.inbound.HttpRoute + 10, // 34: io.linkerd.proxy.inbound.ProxyProtocol.Http1.local_rate_limit:type_name -> io.linkerd.proxy.inbound.HttpLocalRateLimit + 8, // 35: io.linkerd.proxy.inbound.ProxyProtocol.Http2.routes:type_name -> io.linkerd.proxy.inbound.HttpRoute + 10, // 36: io.linkerd.proxy.inbound.ProxyProtocol.Http2.local_rate_limit:type_name -> io.linkerd.proxy.inbound.HttpLocalRateLimit + 9, // 37: io.linkerd.proxy.inbound.ProxyProtocol.Grpc.routes:type_name -> io.linkerd.proxy.inbound.GrpcRoute + 19, // 38: io.linkerd.proxy.inbound.Authn.PermitMeshTLS.unauthenticated:type_name -> io.linkerd.proxy.inbound.Authn.PermitUnauthenticated + 21, // 39: io.linkerd.proxy.inbound.Authn.PermitMeshTLS.identities:type_name -> io.linkerd.proxy.inbound.Authn.PermitMeshTLS.PermitClientIdentities + 6, // 40: io.linkerd.proxy.inbound.Authn.PermitMeshTLS.PermitClientIdentities.identities:type_name -> io.linkerd.proxy.inbound.Identity + 7, // 41: io.linkerd.proxy.inbound.Authn.PermitMeshTLS.PermitClientIdentities.suffixes:type_name -> io.linkerd.proxy.inbound.IdentitySuffix + 34, // 42: io.linkerd.proxy.inbound.HttpRoute.Rule.matches:type_name -> io.linkerd.proxy.http_route.HttpRouteMatch + 23, // 43: io.linkerd.proxy.inbound.HttpRoute.Rule.filters:type_name -> io.linkerd.proxy.inbound.HttpRoute.Filter + 35, // 44: io.linkerd.proxy.inbound.HttpRoute.Filter.failure_injector:type_name -> io.linkerd.proxy.http_route.HttpFailureInjector + 36, // 45: io.linkerd.proxy.inbound.HttpRoute.Filter.request_header_modifier:type_name -> io.linkerd.proxy.http_route.RequestHeaderModifier + 37, // 46: io.linkerd.proxy.inbound.HttpRoute.Filter.redirect:type_name -> io.linkerd.proxy.http_route.RequestRedirect + 38, // 47: io.linkerd.proxy.inbound.GrpcRoute.Rule.matches:type_name -> io.linkerd.proxy.grpc_route.GrpcRouteMatch + 25, // 48: io.linkerd.proxy.inbound.GrpcRoute.Rule.filters:type_name -> io.linkerd.proxy.inbound.GrpcRoute.Filter + 39, // 49: io.linkerd.proxy.inbound.GrpcRoute.Filter.failure_injector:type_name -> io.linkerd.proxy.grpc_route.GrpcFailureInjector + 36, // 50: io.linkerd.proxy.inbound.GrpcRoute.Filter.request_header_modifier:type_name -> io.linkerd.proxy.http_route.RequestHeaderModifier + 27, // 51: io.linkerd.proxy.inbound.HttpLocalRateLimit.Override.limit:type_name -> io.linkerd.proxy.inbound.HttpLocalRateLimit.Limit + 28, // 52: io.linkerd.proxy.inbound.HttpLocalRateLimit.Override.clients:type_name -> io.linkerd.proxy.inbound.HttpLocalRateLimit.Override.ClientIdentities + 6, // 53: io.linkerd.proxy.inbound.HttpLocalRateLimit.Override.ClientIdentities.identities:type_name -> io.linkerd.proxy.inbound.Identity + 0, // 54: io.linkerd.proxy.inbound.InboundServerPolicies.GetPort:input_type -> io.linkerd.proxy.inbound.PortSpec + 0, // 55: io.linkerd.proxy.inbound.InboundServerPolicies.WatchPort:input_type -> io.linkerd.proxy.inbound.PortSpec + 1, // 56: io.linkerd.proxy.inbound.InboundServerPolicies.GetPort:output_type -> io.linkerd.proxy.inbound.Server + 1, // 57: io.linkerd.proxy.inbound.InboundServerPolicies.WatchPort:output_type -> io.linkerd.proxy.inbound.Server + 56, // [56:58] is the sub-list for method output_type + 54, // [54:56] is the sub-list for method input_type + 54, // [54:54] is the sub-list for extension type_name + 54, // [54:54] is the sub-list for extension extendee + 0, // [0:54] is the sub-list for field type_name } func init() { file_inbound_proto_init() } diff --git a/proto/inbound.proto b/proto/inbound.proto index 7f1ada396..f9f70177d 100644 --- a/proto/inbound.proto +++ b/proto/inbound.proto @@ -242,16 +242,19 @@ message GrpcRoute { } message HttpLocalRateLimit { + // Describes the associated HTTPLocalRateLimitPolicy resource + io.linkerd.proxy.meta.Metadata metadata = 1; + // Overall rate-limit, which all traffic coming to this server should abide // to. If unset no overall limit is applied. - Limit total = 1; + Limit total = 2; // Fairness for individual identities; each separate client, grouped by // identity, will have this rate-limit. - Limit identity = 2; + Limit identity = 3; // Limit overrides for traffic from a specific client. - repeated Override overrides = 3; + repeated Override overrides = 4; message Override { Limit limit = 1; diff --git a/src/gen/io.linkerd.proxy.inbound.rs b/src/gen/io.linkerd.proxy.inbound.rs index db743c00e..b11d04396 100644 --- a/src/gen/io.linkerd.proxy.inbound.rs +++ b/src/gen/io.linkerd.proxy.inbound.rs @@ -310,16 +310,19 @@ pub mod grpc_route { #[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, PartialEq, ::prost::Message)] pub struct HttpLocalRateLimit { + /// Describes the associated HTTPLocalRateLimitPolicy resource + #[prost(message, optional, tag = "1")] + pub metadata: ::core::option::Option, /// Overall rate-limit, which all traffic coming to this server should abide /// to. If unset no overall limit is applied. - #[prost(message, optional, tag = "1")] + #[prost(message, optional, tag = "2")] pub total: ::core::option::Option, /// Fairness for individual identities; each separate client, grouped by /// identity, will have this rate-limit. - #[prost(message, optional, tag = "2")] + #[prost(message, optional, tag = "3")] pub identity: ::core::option::Option, /// Limit overrides for traffic from a specific client. - #[prost(message, repeated, tag = "3")] + #[prost(message, repeated, tag = "4")] pub overrides: ::prost::alloc::vec::Vec, } /// Nested message and enum types in `HttpLocalRateLimit`. From d1ff0bb359bfe2a40afd50aa86f88b2f4bbabd75 Mon Sep 17 00:00:00 2001 From: Alejandro Pedraza Date: Thu, 31 Oct 2024 09:57:49 -0500 Subject: [PATCH 3/3] s/u64/u32 --- go/inbound/inbound.pb.go | 6 +++--- proto/inbound.proto | 2 +- src/gen/io.linkerd.proxy.inbound.rs | 4 ++-- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/go/inbound/inbound.pb.go b/go/inbound/inbound.pb.go index 21bfbedd0..ac3889273 100644 --- a/go/inbound/inbound.pb.go +++ b/go/inbound/inbound.pb.go @@ -1630,7 +1630,7 @@ type HttpLocalRateLimit_Limit struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - RequestsPerSecond uint64 `protobuf:"varint,1,opt,name=requestsPerSecond,proto3" json:"requestsPerSecond,omitempty"` + RequestsPerSecond uint32 `protobuf:"varint,1,opt,name=requestsPerSecond,proto3" json:"requestsPerSecond,omitempty"` } func (x *HttpLocalRateLimit_Limit) Reset() { @@ -1663,7 +1663,7 @@ func (*HttpLocalRateLimit_Limit) Descriptor() ([]byte, []int) { return file_inbound_proto_rawDescGZIP(), []int{10, 1} } -func (x *HttpLocalRateLimit_Limit) GetRequestsPerSecond() uint64 { +func (x *HttpLocalRateLimit_Limit) GetRequestsPerSecond() uint32 { if x != nil { return x.RequestsPerSecond } @@ -2018,7 +2018,7 @@ var file_inbound_proto_rawDesc = []byte{ 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x52, 0x0a, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x69, 0x65, 0x73, 0x1a, 0x35, 0x0a, 0x05, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x2c, 0x0a, 0x11, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x73, 0x50, 0x65, 0x72, 0x53, 0x65, 0x63, 0x6f, - 0x6e, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x11, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x6e, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x11, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x73, 0x50, 0x65, 0x72, 0x53, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x32, 0xc1, 0x01, 0x0a, 0x15, 0x49, 0x6e, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x12, 0x51, 0x0a, 0x07, 0x47, 0x65, 0x74, 0x50, 0x6f, 0x72, 0x74, diff --git a/proto/inbound.proto b/proto/inbound.proto index f9f70177d..8e507d5ea 100644 --- a/proto/inbound.proto +++ b/proto/inbound.proto @@ -268,6 +268,6 @@ message HttpLocalRateLimit { } message Limit { - uint64 requestsPerSecond = 1; + uint32 requestsPerSecond = 1; } } diff --git a/src/gen/io.linkerd.proxy.inbound.rs b/src/gen/io.linkerd.proxy.inbound.rs index b11d04396..57370a88d 100644 --- a/src/gen/io.linkerd.proxy.inbound.rs +++ b/src/gen/io.linkerd.proxy.inbound.rs @@ -348,8 +348,8 @@ pub mod http_local_rate_limit { #[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, PartialEq, ::prost::Message)] pub struct Limit { - #[prost(uint64, tag = "1")] - pub requests_per_second: u64, + #[prost(uint32, tag = "1")] + pub requests_per_second: u32, } } /// Generated client implementations.